From 09336da171c9e25af297efcfdc3e13a4d843c817 Mon Sep 17 00:00:00 2001 From: Benno Kohrs Date: Tue, 5 Jan 2021 21:29:29 +0100 Subject: [PATCH 01/15] added prettier config and script --- .prettierignore | 2 ++ .prettierrc | 9 +++++++++ package.json | 3 ++- 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 .prettierignore create mode 100644 .prettierrc diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..db4c6d9b --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +dist +node_modules \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..a32cd472 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,9 @@ +{ + "arrowParens": "always", + "bracketSpacing": false, + "jsxBracketSameLine": true, + "printWidth": 80, + "proseWrap": "never", + "singleQuote": true, + "trailingComma": "all" +} \ No newline at end of file diff --git a/package.json b/package.json index e969715b..b32f20dd 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,8 @@ "dev-push": "lerna run build && lerna run dev-push", "package-install": "lerna exec yarn install", "version-bump": "changeset", - "release": "lerna run release && changeset publish" + "release": "lerna run release && changeset publish", + "prettier": "prettier --config .prettierrc --write \"**/*.{js,ts}\"" }, "repository": { "type": "git", From 474def278a4a9b63a45ed00f9201fa6846d4d1d1 Mon Sep 17 00:00:00 2001 From: Benno Kohrs Date: Tue, 5 Jan 2021 21:30:02 +0100 Subject: [PATCH 02/15] rand prettier script once --- .../multieditor-with-react/src/core/agile.ts | 4 +- .../src/core/signUpEditor.ts | 40 +- .../multieditor-with-react/src/core/utils.ts | 6 +- examples/react-typescript/src/core/index.ts | 44 +- jest.config.base.js | 10 +- jest.config.js | 4 +- packages/api/jest.config.js | 6 +- packages/api/src/index.ts | 32 +- packages/core/jest.config.js | 6 +- packages/core/scripts/prepublish.js | 10 +- packages/core/src/agile.ts | 22 +- .../src/collection/collection.persistent.ts | 58 +- packages/core/src/collection/group.ts | 30 +- packages/core/src/collection/index.ts | 148 +- packages/core/src/collection/item.ts | 14 +- packages/core/src/collection/selector.ts | 16 +- .../core/src/computed/computed.tracker.ts | 2 +- packages/core/src/computed/index.ts | 14 +- packages/core/src/event/event.observer.ts | 4 +- packages/core/src/event/index.ts | 16 +- packages/core/src/index.ts | 6 +- packages/core/src/integrations/index.ts | 8 +- packages/core/src/integrations/integration.ts | 2 +- packages/core/src/internal.ts | 58 +- packages/core/src/logger/index.ts | 108 +- packages/core/src/runtime/index.ts | 28 +- packages/core/src/runtime/observer.ts | 8 +- packages/core/src/runtime/runtime.job.ts | 4 +- .../CallbackSubscriptionContainer.ts | 4 +- .../ComponentSubscriptionContainer.ts | 4 +- .../container/SubscriptionContainer.ts | 4 +- .../runtime/subscription/sub.controller.ts | 60 +- packages/core/src/state/index.ts | 52 +- packages/core/src/state/state.observer.ts | 10 +- packages/core/src/state/state.persistent.ts | 16 +- packages/core/src/state/state.runtime.job.ts | 4 +- packages/core/src/storages/index.ts | 30 +- packages/core/src/storages/persistent.ts | 16 +- packages/core/src/storages/storage.ts | 6 +- packages/core/src/utils.ts | 64 +- .../core/tests/helper/test.integration.ts | 4 +- .../collection.persistent.integration.test.ts | 106 +- packages/core/tests/unit/agile.test.ts | 118 +- .../collection/collection.persistent.test.ts | 517 +++---- .../tests/unit/collection/collection.test.ts | 1218 ++++++++--------- .../core/tests/unit/collection/group.test.ts | 294 ++-- .../core/tests/unit/collection/item.test.ts | 96 +- .../tests/unit/collection/selector.test.ts | 182 +-- .../core/tests/unit/computed/computed.test.ts | 92 +- .../unit/computed/computed.tracker.test.ts | 22 +- .../core/tests/unit/event/event.job.test.ts | 18 +- .../tests/unit/event/event.observer.test.ts | 38 +- packages/core/tests/unit/event/event.test.ts | 180 +-- .../unit/integrations/integration.test.ts | 34 +- .../unit/integrations/integrations.test.ts | 52 +- .../core/tests/unit/runtime/observer.test.ts | 71 +- .../tests/unit/runtime/runtime.job.test.ts | 40 +- .../core/tests/unit/runtime/runtime.test.ts | 166 +-- .../CallbackSubscriptionContainer.test.ts | 14 +- .../ComponentSubscriptionContainer.test.ts | 16 +- .../container/SubscriptionContainer.test.ts | 14 +- .../subscription/sub.controller.test.ts | 196 +-- .../tests/unit/state/state.observer.test.ts | 200 +-- .../tests/unit/state/state.persistent.test.ts | 200 ++- .../unit/state/state.runtime.job.test.ts | 24 +- packages/core/tests/unit/state/state.test.ts | 442 +++--- .../tests/unit/storages/persistent.test.ts | 156 +-- .../core/tests/unit/storages/storage.test.ts | 166 +-- .../core/tests/unit/storages/storages.test.ts | 200 +-- packages/core/tests/unit/utils.test.ts | 358 +++-- packages/multieditor/jest.config.js | 6 +- packages/multieditor/src/index.ts | 4 +- packages/multieditor/src/internal.ts | 14 +- packages/multieditor/src/item.ts | 10 +- packages/multieditor/src/multieditor.ts | 58 +- packages/multieditor/src/status/index.ts | 6 +- .../multieditor/src/status/status.observer.ts | 6 +- packages/multieditor/src/validator/index.ts | 28 +- .../src/validator/types/number.validator.ts | 56 +- .../src/validator/types/string.validator.ts | 62 +- packages/react/jest.config.js | 6 +- packages/react/src/hooks/AgileHOC.ts | 20 +- packages/react/src/hooks/useAgile.ts | 20 +- packages/react/src/hooks/useEvent.ts | 14 +- packages/react/src/hooks/useWatcher.ts | 6 +- packages/react/src/index.ts | 10 +- packages/react/src/react.integration.ts | 8 +- .../src/utils/useIsomorphicLayoutEffect.ts | 8 +- 88 files changed, 3278 insertions(+), 3276 deletions(-) diff --git a/examples/multieditor-with-react/src/core/agile.ts b/examples/multieditor-with-react/src/core/agile.ts index 6c639a50..e2143ceb 100644 --- a/examples/multieditor-with-react/src/core/agile.ts +++ b/examples/multieditor-with-react/src/core/agile.ts @@ -1,4 +1,4 @@ -import { Agile, globalBind } from "@agile-ts/core"; +import {Agile, globalBind} from '@agile-ts/core'; const App = new Agile({ logConfig: { @@ -9,4 +9,4 @@ const App = new Agile({ export default App; // Create global Instance of SignUpEditor (for better debugging) -globalBind("__signUpEditor__", require("./signUpEditor")); +globalBind('__signUpEditor__', require('./signUpEditor')); diff --git a/examples/multieditor-with-react/src/core/signUpEditor.ts b/examples/multieditor-with-react/src/core/signUpEditor.ts index 59409901..b37cc235 100644 --- a/examples/multieditor-with-react/src/core/signUpEditor.ts +++ b/examples/multieditor-with-react/src/core/signUpEditor.ts @@ -1,24 +1,24 @@ -import MultiEditor, { Validator } from "@agile-ts/multieditor"; -import App from "./agile"; -import { generateColor, generateId, isLight } from "./utils"; +import MultiEditor, {Validator} from '@agile-ts/multieditor'; +import App from './agile'; +import {generateColor, generateId, isLight} from './utils'; export const isValidNameValidator = new Validator() .required() .string() .min(2) .max(10) - .matches(/^([^0-9]*)$/, "No Numbers allowed!"); + .matches(/^([^0-9]*)$/, 'No Numbers allowed!'); export const signUpEditor = new MultiEditor( (editor) => ({ data: { - id: "myCoolId", - firstName: "Jeff", - lastName: "", + id: 'myCoolId', + firstName: 'Jeff', + lastName: '', gender: undefined, - userName: "", - email: "", - aboutYou: "", + userName: '', + email: '', + aboutYou: '', age: undefined, image: { id: generateId(), @@ -34,12 +34,12 @@ export const signUpEditor = new MultiEditor( userName: isValidNameValidator .clone() .addValidationMethod(async (key, value, editor) => { - const isValid = value === "Jeff"; + const isValid = value === 'Jeff'; if (!isValid) editor.setStatus( key, - "error", - "Sry only the name Jeff is allowed!" + 'error', + 'Sry only the name Jeff is allowed!', ); return isValid; }), @@ -50,9 +50,9 @@ export const signUpEditor = new MultiEditor( .string() .min(10) .addValidationMethod(async (key, value, editor) => { - const isValid = typeof value === "string" && !value.includes("fuck"); + const isValid = typeof value === 'string' && !value.includes('fuck'); if (!isValid) - editor.setStatus(key, "error", "The word fuck is not allowed!"); + editor.setStatus(key, 'error', 'The word fuck is not allowed!'); return isValid; }), age: editor.Validator().required().number().min(18).max(100), @@ -62,20 +62,20 @@ export const signUpEditor = new MultiEditor( .required() .addValidationMethod(async (key, value, editor) => { const isValid = isLight(value.color); - if (!isValid) editor.setStatus(key, "error", "The Image is to dark!"); + if (!isValid) editor.setStatus(key, 'error', 'The Image is to dark!'); return isValid; }), }, computeMethods: { lastName: (value) => { - return value && typeof value === "string" ? value.toUpperCase() : value; + return value && typeof value === 'string' ? value.toUpperCase() : value; }, age: (value) => { return Number(value) || value; }, }, - fixedProperties: ["id"], - reValidateMode: "afterFirstSubmit", + fixedProperties: ['id'], + reValidateMode: 'afterFirstSubmit', }), - App + App, ); diff --git a/examples/multieditor-with-react/src/core/utils.ts b/examples/multieditor-with-react/src/core/utils.ts index 4d04e4d8..2d0dbf6d 100644 --- a/examples/multieditor-with-react/src/core/utils.ts +++ b/examples/multieditor-with-react/src/core/utils.ts @@ -1,18 +1,18 @@ export const generateColor = (): string => { - return "#" + ((Math.random() * 0xffffff) << 0).toString(16).padStart(6, "0"); + return '#' + ((Math.random() * 0xffffff) << 0).toString(16).padStart(6, '0'); }; export const generateId = () => { const dateIntString = new Date(new Date().toString()).getTime().toString(); const randomIntString = Math.floor( - Math.random() * Math.floor(10000000) + Math.random() * Math.floor(10000000), ).toString(); return dateIntString + randomIntString; }; export const isLight = (color: string): boolean => { - const hex = color.replace("#", ""); + const hex = color.replace('#', ''); const c_r = parseInt(hex.substr(0, 2), 16); const c_g = parseInt(hex.substr(2, 2), 16); const c_b = parseInt(hex.substr(4, 2), 16); diff --git a/examples/react-typescript/src/core/index.ts b/examples/react-typescript/src/core/index.ts index cb2582c5..a5c30290 100644 --- a/examples/react-typescript/src/core/index.ts +++ b/examples/react-typescript/src/core/index.ts @@ -1,24 +1,24 @@ -import { Agile, clone, Logger } from "@agile-ts/core"; +import {Agile, clone, Logger} from '@agile-ts/core'; export const App = new Agile({ - logConfig: { level: Logger.level.DEBUG }, + logConfig: {level: Logger.level.DEBUG}, }); -export const MY_STATE = App.State("MyState", { key: "my-state" }); //.persist(); -export const MY_STATE_2 = App.State("MyState2", { - key: "my-state2", +export const MY_STATE = App.State('MyState', {key: 'my-state'}); //.persist(); +export const MY_STATE_2 = App.State('MyState2', { + key: 'my-state2', }).persist(); MY_STATE_2.onLoad(() => { - console.log("On Load"); + console.log('On Load'); }); export const MY_STATE_3 = App.State(1); //.persist("my-state2"); -MY_STATE.watch("test", (value: any) => { - console.log("Watch " + value); +MY_STATE.watch('test', (value: any) => { + console.log('Watch ' + value); }); export const MY_COMPUTED = App.Computed(() => { - return "test" + MY_STATE.value + "_computed_" + MY_STATE_2.value; + return 'test' + MY_STATE.value + '_computed_' + MY_STATE_2.value; }, []); interface collectionValueInterface { @@ -28,35 +28,35 @@ interface collectionValueInterface { export const MY_COLLECTION = App.Collection( (collection) => ({ - key: "my-collection", + key: 'my-collection', groups: { myGroup: collection.Group(), }, selectors: { - mySelector: collection.Selector("id3"), + mySelector: collection.Selector('id3'), }, - }) + }), ).persist(); -MY_COLLECTION.collect({ id: "id1", name: "test" }); -MY_COLLECTION.collect({ id: "id2", name: "test2" }, "myGroup"); -MY_COLLECTION.update("id1", { id: "id1Updated", name: "testUpdated" }); -MY_COLLECTION.getGroup("myGroup")?.persist({ +MY_COLLECTION.collect({id: 'id1', name: 'test'}); +MY_COLLECTION.collect({id: 'id2', name: 'test2'}, 'myGroup'); +MY_COLLECTION.update('id1', {id: 'id1Updated', name: 'testUpdated'}); +MY_COLLECTION.getGroup('myGroup')?.persist({ followCollectionPersistKeyPattern: true, }); -console.log("Initial: myCollection ", clone(MY_COLLECTION)); +console.log('Initial: myCollection ', clone(MY_COLLECTION)); -export const MY_EVENT = App.Event<{ name: string }>({ +export const MY_EVENT = App.Event<{name: string}>({ delay: 3000, - key: "myEvent", + key: 'myEvent', }); MY_EVENT.on(() => { - console.log("Triggered Event (noId)"); + console.log('Triggered Event (noId)'); }); -MY_EVENT.on("Test", () => { - console.log("Triggered Event (Test)"); +MY_EVENT.on('Test', () => { + console.log('Triggered Event (Test)'); }); // LOGGER tests diff --git a/jest.config.base.js b/jest.config.base.js index 5e360e67..ab45f35b 100644 --- a/jest.config.base.js +++ b/jest.config.base.js @@ -1,9 +1,9 @@ module.exports = { - testEnvironment: "node", - coveragePathIgnorePatterns: ["(tests/.*.mock).(jsx?|tsx?)$"], - modulePathIgnorePatterns: ["dist"], - testMatch: ["/packages/**/tests/**/*.test.ts"], + testEnvironment: 'node', + coveragePathIgnorePatterns: ['(tests/.*.mock).(jsx?|tsx?)$'], + modulePathIgnorePatterns: ['dist'], + testMatch: ['/packages/**/tests/**/*.test.ts'], transform: { - "^.+\\.ts?$": "ts-jest", + '^.+\\.ts?$': 'ts-jest', }, }; diff --git a/jest.config.js b/jest.config.js index a77ee7ec..ef6c1439 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,6 +1,6 @@ -const baseConfig = require("./jest.config.base.js"); +const baseConfig = require('./jest.config.base.js'); module.exports = { ...baseConfig, - projects: ["/packages/*/jest.config.js"], + projects: ['/packages/*/jest.config.js'], }; diff --git a/packages/api/jest.config.js b/packages/api/jest.config.js index db1ae36a..301c508f 100644 --- a/packages/api/jest.config.js +++ b/packages/api/jest.config.js @@ -1,7 +1,7 @@ -const baseConfig = require("../../jest.config.base"); +const baseConfig = require('../../jest.config.base'); module.exports = { ...baseConfig, - rootDir: "../..", - name: "API", + rootDir: '../..', + name: 'API', }; diff --git a/packages/api/src/index.ts b/packages/api/src/index.ts index e43976c8..8337b0d5 100644 --- a/packages/api/src/index.ts +++ b/packages/api/src/index.ts @@ -1,11 +1,11 @@ -import * as http from "http"; +import * as http from 'http'; import { clone, copy, defineConfig, isValidObject, isValidUrl, -} from "@agile-ts/core"; +} from '@agile-ts/core'; export default class API { public config: ApiConfig; @@ -14,7 +14,7 @@ export default class API { * @public * @param config - Config */ - constructor(config: ApiConfig = { options: {} }) { + constructor(config: ApiConfig = {options: {}}) { this.config = config; } @@ -28,7 +28,7 @@ export default class API { */ public with(config: ApiConfig): API { const modifiedApi = clone(this); - modifiedApi.config = { ...this.config, ...config }; + modifiedApi.config = {...this.config, ...config}; return modifiedApi; } @@ -42,7 +42,7 @@ export default class API { * @param config - Config */ public get(path: string, config: RequestInit = {}) { - return this.send("GET", path, config); + return this.send('GET', path, config); } //========================================================================================================= @@ -56,7 +56,7 @@ export default class API { * @param config - Config */ public post(path: string, payload?: any, config: RequestInit = {}) { - return this.send("POST", path, payload, config); + return this.send('POST', path, payload, config); } //========================================================================================================= @@ -70,7 +70,7 @@ export default class API { * @param config - Config */ public put(path: string, payload?: any, config: RequestInit = {}) { - return this.send("PUT", path, payload, config); + return this.send('PUT', path, payload, config); } //========================================================================================================= @@ -84,7 +84,7 @@ export default class API { * @param config - Config */ public patch(path: string, payload?: any, config: RequestInit = {}) { - return this.send("PATCH", path, payload, config); + return this.send('PATCH', path, payload, config); } //========================================================================================================= @@ -98,7 +98,7 @@ export default class API { * @param config - Config */ public delete(path: string, payload?: any, config: RequestInit = {}) { - return this.send("DELETE", path, payload, config); + return this.send('DELETE', path, payload, config); } //========================================================================================================= @@ -112,7 +112,7 @@ export default class API { method: string, endpoint: string, payload?: any, - options: RequestInit = {} + options: RequestInit = {}, ): Promise { let fullUrl: string; let response: Response | undefined; @@ -127,16 +127,16 @@ export default class API { // Set Body if (isValidObject(payload)) { config.options.body = JSON.stringify(payload); - config.options.headers["content-type"] = "application/json"; + config.options.headers['content-type'] = 'application/json'; } else { config.options.body = payload; } // Build Url - if (endpoint.startsWith("http")) fullUrl = endpoint; + if (endpoint.startsWith('http')) fullUrl = endpoint; else - fullUrl = `${this.config.baseURL || ""}${ - "/" + this.config.path || "" + fullUrl = `${this.config.baseURL || ''}${ + '/' + this.config.path || '' }/${endpoint}`; // Warning if fullUrl might be invalid @@ -178,12 +178,12 @@ export default class API { status: timedout ? 408 : response?.status || 404, raw: response, data: {}, - type: response?.headers?.get("content-type"), + type: response?.headers?.get('content-type'), timedout: timedout, }; // Extract Response Data - if (agileResponse.type?.includes("application/json")) + if (agileResponse.type?.includes('application/json')) agileResponse.data = await agileResponse.raw?.json(); return agileResponse; diff --git a/packages/core/jest.config.js b/packages/core/jest.config.js index f9bc46d1..c82b0b01 100644 --- a/packages/core/jest.config.js +++ b/packages/core/jest.config.js @@ -1,7 +1,7 @@ -const baseConfig = require("../../jest.config.base"); +const baseConfig = require('../../jest.config.base'); module.exports = { ...baseConfig, - rootDir: "../..", - name: "Core", + rootDir: '../..', + name: 'Core', }; diff --git a/packages/core/scripts/prepublish.js b/packages/core/scripts/prepublish.js index ce6c946d..c92cc7ad 100644 --- a/packages/core/scripts/prepublish.js +++ b/packages/core/scripts/prepublish.js @@ -1,10 +1,10 @@ -const fs = require("fs-extra"); -const path = require("path"); -const execa = require("execa"); +const fs = require('fs-extra'); +const path = require('path'); +const execa = require('execa'); const run = () => { - fs.copySync("../../README.md", "./README.md"); - fs.copySync("../../LICENSE", "./LICENSE"); + fs.copySync('../../README.md', './README.md'); + fs.copySync('../../LICENSE', './LICENSE'); }; run(); diff --git a/packages/core/src/agile.ts b/packages/core/src/agile.ts index e158f7bf..ce22c52c 100644 --- a/packages/core/src/agile.ts +++ b/packages/core/src/agile.ts @@ -21,7 +21,7 @@ import { Logger, CreateLoggerConfigInterface, StateConfigInterface, -} from "./internal"; +} from './internal'; export class Agile { public config: AgileConfigInterface; @@ -36,7 +36,7 @@ export class Agile { // Static Logger with default config -> will be overwritten by config of last created Agile Instance static logger = new Logger({ - prefix: "Agile", + prefix: 'Agile', active: true, level: Logger.level.WARN, }); @@ -53,11 +53,11 @@ export class Agile { logConfig: {}, }); config.logConfig = defineConfig(config.logConfig, { - prefix: "Agile", + prefix: 'Agile', active: true, level: Logger.level.WARN, canUseCustomStyles: true, - allowedTags: ["runtime", "storage", "subscription", "multieditor"], + allowedTags: ['runtime', 'storage', 'subscription', 'multieditor'], }); this.config = { waitForMount: config.waitForMount as any, @@ -73,9 +73,9 @@ export class Agile { Agile.logger = new Logger(config.logConfig); // Create global instance of Agile - if (!globalBind("__agile__", this)) + if (!globalBind('__agile__', this)) Agile.logger.warn( - "Be careful with multiple Agile Instances in one Application!" + 'Be careful with multiple Agile Instances in one Application!', ); } @@ -101,7 +101,7 @@ export class Agile { */ public State = ( initialValue: ValueType, - config: StateConfigInterface = {} + config: StateConfigInterface = {}, ) => new State(this, initialValue, config); //========================================================================================================= @@ -113,7 +113,7 @@ export class Agile { * @param config - Config */ public Collection = ( - config?: CollectionConfig + config?: CollectionConfig, ) => new Collection(this, config); //========================================================================================================= @@ -127,7 +127,7 @@ export class Agile { */ public Computed = ( computeFunction: () => ComputedValueType, - deps?: Array + deps?: Array, ) => new Computed(this, computeFunction, { computedDeps: deps, @@ -142,7 +142,7 @@ export class Agile { * @param config - Config */ public Event = ( - config?: CreateEventConfigInterface + config?: CreateEventConfigInterface, ) => new Event(this, config); //========================================================================================================= @@ -169,7 +169,7 @@ export class Agile { */ public registerStorage( storage: Storage, - config: RegisterConfigInterface = {} + config: RegisterConfigInterface = {}, ): this { this.storages.register(storage, config); return this; diff --git a/packages/core/src/collection/collection.persistent.ts b/packages/core/src/collection/collection.persistent.ts index 540aa663..fc61c4d0 100644 --- a/packages/core/src/collection/collection.persistent.ts +++ b/packages/core/src/collection/collection.persistent.ts @@ -10,14 +10,14 @@ import { Persistent, PersistentKey, StorageKey, -} from "../internal"; +} from '../internal'; export class CollectionPersistent extends Persistent { public collection: () => Collection; - static defaultGroupSideEffectKey = "rebuildGroupStorageValue"; - static storageItemKeyPattern = "_${collectionKey}_item_${itemKey}"; - static storageGroupKeyPattern = "_${collectionKey}_group_${groupKey}"; + static defaultGroupSideEffectKey = 'rebuildGroupStorageValue'; + static storageItemKeyPattern = '_${collectionKey}_item_${itemKey}'; + static storageGroupKeyPattern = '_${collectionKey}_group_${groupKey}'; /** * @internal @@ -27,7 +27,7 @@ export class CollectionPersistent extends Persistent { */ constructor( collection: Collection, - config: CreatePersistentConfigInterface = {} + config: CreatePersistentConfigInterface = {}, ) { super(collection.agileInstance(), { instantiate: false, @@ -106,14 +106,14 @@ export class CollectionPersistent extends Persistent { // Check if Collection is Persisted const isPersisted = await this.agileInstance().storages.get( _key, - this.defaultStorageKey + this.defaultStorageKey, ); if (!isPersisted) return false; // Loads Values into Collection const loadValuesIntoCollection = async () => { const defaultGroup = this.collection().getGroup( - this.collection().config.defaultGroupKey + this.collection().config.defaultGroupKey, ); if (!defaultGroup) return false; @@ -131,13 +131,13 @@ export class CollectionPersistent extends Persistent { for (let itemKey of defaultGroup._value) { const itemStorageKey = CollectionPersistent.getItemStorageKey( itemKey, - _key + _key, ); // Get Storage Value const storageValue = await this.agileInstance().storages.get( itemStorageKey, - this.defaultStorageKey + this.defaultStorageKey, ); if (!storageValue) continue; @@ -167,7 +167,7 @@ export class CollectionPersistent extends Persistent { if (!this.ready) return false; const _key = key || this._key; const defaultGroup = this.collection().getGroup( - this.collection().config.defaultGroupKey + this.collection().config.defaultGroupKey, ); if (!defaultGroup) return false; @@ -176,12 +176,12 @@ export class CollectionPersistent extends Persistent { // Persist default Group if (!defaultGroup.isPersisted) - defaultGroup.persist({ followCollectionPersistKeyPattern: true }); + defaultGroup.persist({followCollectionPersistKeyPattern: true}); // Add sideEffect to default Group which adds and removes Items from the Storage depending on the Group Value defaultGroup.addSideEffect( CollectionPersistent.defaultGroupSideEffectKey, - () => this.rebuildStorageSideEffect(defaultGroup, _key) + () => this.rebuildStorageSideEffect(defaultGroup, _key), ); // Persist Collection Items @@ -189,7 +189,7 @@ export class CollectionPersistent extends Persistent { const item = this.collection().getItem(itemKey); const itemStorageKey = CollectionPersistent.getItemStorageKey( itemKey, - _key + _key, ); item?.persist(itemStorageKey); } @@ -211,7 +211,7 @@ export class CollectionPersistent extends Persistent { if (!this.ready) return false; const _key = key || this._key; const defaultGroup = this.collection().getGroup( - this.collection().config.defaultGroupKey + this.collection().config.defaultGroupKey, ); if (!defaultGroup) return false; @@ -223,7 +223,7 @@ export class CollectionPersistent extends Persistent { // Remove Rebuild Storage sideEffect from default Group defaultGroup.removeSideEffect( - CollectionPersistent.defaultGroupSideEffectKey + CollectionPersistent.defaultGroupSideEffectKey, ); // Remove Collection Items from Storage @@ -275,10 +275,10 @@ export class CollectionPersistent extends Persistent { if (group.previousStateValue.length === group._value.length) return; const addedKeys = group._value.filter( - (key) => !group.previousStateValue.includes(key) + (key) => !group.previousStateValue.includes(key), ); const removedKeys = group.previousStateValue.filter( - (key) => !group._value.includes(key) + (key) => !group._value.includes(key), ); // Persist Added Keys @@ -310,15 +310,15 @@ export class CollectionPersistent extends Persistent { */ public static getItemStorageKey( itemKey?: ItemKey, - collectionKey?: CollectionKey + collectionKey?: CollectionKey, ): string { if (!itemKey || !collectionKey) - Agile.logger.warn("Failed to build unique Item StorageKey!"); - if (!itemKey) itemKey = "unknown"; - if (!collectionKey) collectionKey = "unknown"; + Agile.logger.warn('Failed to build unique Item StorageKey!'); + if (!itemKey) itemKey = 'unknown'; + if (!collectionKey) collectionKey = 'unknown'; return this.storageItemKeyPattern - .replace("${collectionKey}", collectionKey.toString()) - .replace("${itemKey}", itemKey.toString()); + .replace('${collectionKey}', collectionKey.toString()) + .replace('${itemKey}', itemKey.toString()); } //========================================================================================================= @@ -332,15 +332,15 @@ export class CollectionPersistent extends Persistent { */ public static getGroupStorageKey( groupKey?: GroupKey, - collectionKey?: CollectionKey + collectionKey?: CollectionKey, ): string { if (!groupKey || !collectionKey) - Agile.logger.warn("Failed to build unique Group StorageKey!"); - if (!groupKey) groupKey = "unknown"; - if (!collectionKey) collectionKey = "unknown"; + Agile.logger.warn('Failed to build unique Group StorageKey!'); + if (!groupKey) groupKey = 'unknown'; + if (!collectionKey) collectionKey = 'unknown'; return this.storageGroupKeyPattern - .replace("${collectionKey}", collectionKey.toString()) - .replace("${groupKey}", groupKey.toString()); + .replace('${collectionKey}', collectionKey.toString()) + .replace('${groupKey}', groupKey.toString()); } } diff --git a/packages/core/src/collection/group.ts b/packages/core/src/collection/group.ts index 679d98a4..02c4b7a5 100644 --- a/packages/core/src/collection/group.ts +++ b/packages/core/src/collection/group.ts @@ -14,10 +14,10 @@ import { PersistentKey, ComputedTracker, StateRuntimeJobConfigInterface, -} from "../internal"; +} from '../internal'; export class Group extends State> { - static rebuildGroupSideEffectKey = "rebuildGroup"; + static rebuildGroupSideEffectKey = 'rebuildGroup'; collection: () => Collection; _output: Array = []; // Output of Group @@ -34,7 +34,7 @@ export class Group extends State> { constructor( collection: Collection, initialItems?: Array, - config: GroupConfigInterface = {} + config: GroupConfigInterface = {}, ) { super(collection.agileInstance(), initialItems || [], config); this.collection = () => collection; @@ -114,7 +114,7 @@ export class Group extends State> { */ public remove( itemKeys: ItemKey | ItemKey[], - config: GroupRemoveConfig = {} + config: GroupRemoveConfig = {}, ): this { const _itemKeys = normalizeArray(itemKeys); const notExistingItemKeysInCollection: Array = []; @@ -129,7 +129,7 @@ export class Group extends State> { // Check if itemKey exists in Group if (!newGroupValue.includes(itemKey)) { Agile.logger.error( - `Couldn't find ItemKey '${itemKey}' in Group '${this._key}'!` + `Couldn't find ItemKey '${itemKey}' in Group '${this._key}'!`, ); notExistingItemKeys.push(itemKey); notExistingItemKeysInCollection.push(itemKey); @@ -151,7 +151,7 @@ export class Group extends State> { if (notExistingItemKeysInCollection.length >= _itemKeys.length) config.background = true; - this.set(newGroupValue, { background: config.background }); + this.set(newGroupValue, {background: config.background}); return this; } @@ -171,7 +171,7 @@ export class Group extends State> { const existingItemKeys: Array = []; let newGroupValue = copy(this.nextStateValue); config = defineConfig(config, { - method: "push", + method: 'push', overwrite: false, background: false, }); @@ -195,7 +195,7 @@ export class Group extends State> { } // Add new ItemKey to Group - newGroupValue[config.method || "push"](itemKey); + newGroupValue[config.method || 'push'](itemKey); }); // Return if passed ItemKeys already exist @@ -208,7 +208,7 @@ export class Group extends State> { ) config.background = true; - this.set(newGroupValue, { background: config.background }); + this.set(newGroupValue, {background: config.background}); return this; } @@ -226,7 +226,7 @@ export class Group extends State> { public replace( oldItemKey: ItemKey, newItemKey: ItemKey, - config: StateRuntimeJobConfigInterface = {} + config: StateRuntimeJobConfigInterface = {}, ): this { let newGroupValue = copy(this._value); newGroupValue.splice(newGroupValue.indexOf(oldItemKey), 1, newItemKey); @@ -251,11 +251,11 @@ export class Group extends State> { */ public persist( key?: PersistentKey, - config?: GroupPersistConfigInterface + config?: GroupPersistConfigInterface, ): this; public persist( keyOrConfig: PersistentKey | GroupPersistConfigInterface = {}, - config: GroupPersistConfigInterface = {} + config: GroupPersistConfigInterface = {}, ): this { let _config: GroupPersistConfigInterface; let key: PersistentKey | undefined; @@ -277,7 +277,7 @@ export class Group extends State> { if (_config.followCollectionPersistKeyPattern) { key = CollectionPersistent.getGroupStorageKey( key || this._key, - this.collection()._key + this.collection()._key, ); } @@ -319,7 +319,7 @@ export class Group extends State> { `Couldn't find some Items in Collection '${this.collection()._key}' (${ this._key })`, - notFoundItemKeys + notFoundItemKeys, ); } @@ -337,7 +337,7 @@ export type GroupKey = string | number; * @param background - If adding ItemKey happens in the background (-> not causing any rerender) */ export interface GroupAddConfig { - method?: "unshift" | "push"; + method?: 'unshift' | 'push'; overwrite?: boolean; background?: boolean; } diff --git a/packages/core/src/collection/index.ts b/packages/core/src/collection/index.ts index 045e1c05..2da2eb97 100644 --- a/packages/core/src/collection/index.ts +++ b/packages/core/src/collection/index.ts @@ -14,7 +14,7 @@ import { CollectionPersistent, GroupAddConfig, ComputedTracker, -} from "../internal"; +} from '../internal'; export class Collection { public agileInstance: () => Agile; @@ -23,13 +23,13 @@ export class Collection { private initialConfig: CreateCollectionConfigInterface; public size = 0; // Amount of Items stored in Collection - public data: { [key: string]: Item } = {}; // Collection Data + public data: {[key: string]: Item} = {}; // Collection Data public _key?: CollectionKey; public isPersisted = false; // If Collection can be stored in Agile Storage (-> successfully integrated persistent) public persistent: CollectionPersistent | undefined; // Manages storing Collection Value into Storage - public groups: { [key: string]: Group } = {}; - public selectors: { [key: string]: Selector } = {}; + public groups: {[key: string]: Group} = {}; + public selectors: {[key: string]: Selector} = {}; /** * @public @@ -42,17 +42,17 @@ export class Collection { // Set temp Config for creating proper Placeholder Items (of Selector) this.config = { - defaultGroupKey: "default", - primaryKey: "id", + defaultGroupKey: 'default', + primaryKey: 'id', }; // Assign Properties - let _config = typeof config === "function" ? config(this) : config; + let _config = typeof config === 'function' ? config(this) : config; _config = defineConfig(_config, { - primaryKey: "id", + primaryKey: 'id', groups: {}, selectors: {}, - defaultGroupKey: "default", + defaultGroupKey: 'default', }); this._key = _config.key; this.config = { @@ -113,7 +113,7 @@ export class Collection { */ public Group( initialItems?: Array, - config?: GroupConfigInterface + config?: GroupConfigInterface, ): Group { return new Group(this, initialItems, config); } @@ -129,7 +129,7 @@ export class Collection { */ public Selector( initialKey: ItemKey, - config?: { key?: SelectorKey } + config?: {key?: SelectorKey}, ): Selector { return new Selector(this, initialKey, config); } @@ -141,9 +141,9 @@ export class Collection { * @internal * Instantiates Groups */ - public initGroups(groups: { [key: string]: Group } | string[]) { + public initGroups(groups: {[key: string]: Group} | string[]) { if (!groups) return; - let groupsObject: { [key: string]: Group } = {}; + let groupsObject: {[key: string]: Group} = {}; // If groups is Array of GroupNames transform it to Group Object if (Array.isArray(groups)) { @@ -173,9 +173,9 @@ export class Collection { * @internal * Instantiates Selectors */ - public initSelectors(selectors: { [key: string]: Selector } | string[]) { + public initSelectors(selectors: {[key: string]: Selector} | string[]) { if (!selectors) return; - let selectorsObject: { [key: string]: Selector } = {}; + let selectorsObject: {[key: string]: Selector} = {}; // If selectors is Array of SelectorNames transform it to Selector Object if (Array.isArray(selectors)) { @@ -185,7 +185,7 @@ export class Collection { selectorKey, { key: selectorKey, - } + }, ); }); } else selectorsObject = selectors; @@ -210,14 +210,14 @@ export class Collection { public collect( data: DataType | Array, groupKeys?: GroupKey | Array, - config: CollectConfigInterface = {} + config: CollectConfigInterface = {}, ): this { const _data = normalizeArray(data); const _groupKeys = normalizeArray(groupKeys); const defaultGroupKey = this.config.defaultGroupKey; const primaryKey = this.config.primaryKey; config = defineConfig(config, { - method: "push", + method: 'push', background: false, patch: false, select: false, @@ -267,9 +267,9 @@ export class Collection { public update( itemKey: ItemKey, changes: DefaultItem | DataType, - config: UpdateConfigInterface = {} + config: UpdateConfigInterface = {}, ): Item | undefined { - const item = this.getItem(itemKey, { notExisting: true }); + const item = this.getItem(itemKey, {notExisting: true}); const primaryKey = this.config.primaryKey; config = defineConfig(config, { addNewProperties: false, @@ -278,13 +278,13 @@ export class Collection { if (!item) { Agile.logger.error( - `Item with key/name '${itemKey}' doesn't exist in Collection '${this._key}'!` + `Item with key/name '${itemKey}' doesn't exist in Collection '${this._key}'!`, ); return undefined; } if (!isValidObject(changes)) { Agile.logger.error( - `You have to pass an valid Changes Object to update '${itemKey}' in '${this._key}'!` + `You have to pass an valid Changes Object to update '${itemKey}' in '${this._key}'!`, ); return undefined; } @@ -322,9 +322,9 @@ export class Collection { */ public createGroup( groupKey: GroupKey, - initialItems: Array = [] + initialItems: Array = [], ): Group { - let group = this.getGroup(groupKey, { notExisting: true }); + let group = this.getGroup(groupKey, {notExisting: true}); // Check if Group already exists if (group) { @@ -332,12 +332,12 @@ export class Collection { Agile.logger.warn(`Group with the name '${groupKey}' already exists!`); return group; } - group.set(initialItems, { overwrite: true }); + group.set(initialItems, {overwrite: true}); return group; } // Create Group - group = new Group(this, initialItems, { key: groupKey }); + group = new Group(this, initialItems, {key: groupKey}); this.groups[groupKey] = group; return group; @@ -354,7 +354,7 @@ export class Collection { */ public hasGroup( groupKey: GroupKey | undefined, - config: HasConfigInterface = {} + config: HasConfigInterface = {}, ): boolean { return !!this.getGroup(groupKey, config); } @@ -370,7 +370,7 @@ export class Collection { */ public getGroup( groupKey: GroupKey | undefined, - config: HasConfigInterface = {} + config: HasConfigInterface = {}, ): Group | undefined { config = defineConfig(config, { notExisting: false, @@ -396,7 +396,7 @@ export class Collection { * @param groupKey - Name/Key of Group */ public getGroupWithReference(groupKey: GroupKey): Group { - let group = this.getGroup(groupKey, { notExisting: true }); + let group = this.getGroup(groupKey, {notExisting: true}); // Create dummy Group to hold reference if (!group) { @@ -439,19 +439,19 @@ export class Collection { */ public createSelector( selectorKey: SelectorKey, - itemKey: ItemKey + itemKey: ItemKey, ): Selector { - let selector = this.getSelector(selectorKey, { notExisting: true }); + let selector = this.getSelector(selectorKey, {notExisting: true}); // Check if Selector already exists if (selector) { if (!selector.isPlaceholder) { Agile.logger.warn( - `Selector with the name '${selectorKey}' already exists!` + `Selector with the name '${selectorKey}' already exists!`, ); return selector; } - selector.select(itemKey, { overwrite: true }); + selector.select(itemKey, {overwrite: true}); return selector; } @@ -475,7 +475,7 @@ export class Collection { */ public hasSelector( selectorKey: SelectorKey | undefined, - config: HasConfigInterface = {} + config: HasConfigInterface = {}, ): boolean { return !!this.getSelector(selectorKey, config); } @@ -491,7 +491,7 @@ export class Collection { */ public getSelector( selectorKey: SelectorKey | undefined, - config: HasConfigInterface = {} + config: HasConfigInterface = {}, ): Selector | undefined { config = defineConfig(config, { notExisting: false, @@ -517,13 +517,13 @@ export class Collection { * @param selectorKey - Name/Key of Selector */ public getSelectorWithReference( - selectorKey: SelectorKey + selectorKey: SelectorKey, ): Selector { - let selector = this.getSelector(selectorKey, { notExisting: true }); + let selector = this.getSelector(selectorKey, {notExisting: true}); // Create dummy Selector to hold reference if (!selector) { - selector = new Selector(this, "unknown", { + selector = new Selector(this, 'unknown', { key: selectorKey, isPlaceholder: true, }); @@ -545,7 +545,7 @@ export class Collection { public removeSelector(selectorKey: SelectorKey): this { if (!this.selectors[selectorKey]) { Agile.logger.warn( - `Selector with the key/name '${selectorKey}' doesn't exist!` + `Selector with the key/name '${selectorKey}' doesn't exist!`, ); return this; } @@ -565,7 +565,7 @@ export class Collection { */ public hasItem( itemKey: ItemKey | undefined, - config: HasConfigInterface = {} + config: HasConfigInterface = {}, ): boolean { return !!this.getItem(itemKey, config); } @@ -581,7 +581,7 @@ export class Collection { */ public getItem( itemKey: ItemKey | undefined, - config: HasConfigInterface = {} + config: HasConfigInterface = {}, ): Item | undefined { config = defineConfig(config, { notExisting: false, @@ -603,7 +603,7 @@ export class Collection { * @param itemKey - Key/Name of Item */ public getItemWithReference(itemKey: ItemKey): Item { - let item = this.getItem(itemKey, { notExisting: true }); + let item = this.getItem(itemKey, {notExisting: true}); // Create dummy Item to hold reference if (!item) { @@ -611,11 +611,11 @@ export class Collection { this, { [this.config.primaryKey]: itemKey, // Setting PrimaryKey of Item to passed itemKey - dummy: "item", + dummy: 'item', } as any, { isPlaceholder: true, - } + }, ); this.data[itemKey] = item; } @@ -635,7 +635,7 @@ export class Collection { */ public getItemValue( itemKey: ItemKey | undefined, - config: HasConfigInterface = {} + config: HasConfigInterface = {}, ): DataType | undefined { let item = this.getItem(itemKey, config); if (!item) return undefined; @@ -659,11 +659,11 @@ export class Collection { */ public persist( key?: StorageKey, - config?: CollectionPersistentConfigInterface + config?: CollectionPersistentConfigInterface, ): this; public persist( keyOrConfig: StorageKey | CollectionPersistentConfigInterface = {}, - config: CollectionPersistentConfigInterface = {} + config: CollectionPersistentConfigInterface = {}, ): this { let _config: CollectionPersistentConfigInterface; let key: StorageKey | undefined; @@ -683,7 +683,7 @@ export class Collection { if (this.persistent) Agile.logger.warn( - `By persisting the Collection '${this._key}' twice you overwrite the old Persistent Instance!` + `By persisting the Collection '${this._key}' twice you overwrite the old Persistent Instance!`, ); // Create persistent -> Persist Value @@ -713,7 +713,7 @@ export class Collection { if (this.isPersisted) callback(true); } else { Agile.logger.error( - `Please make sure you persist the Collection '${this._key}' before using the 'onLoad' function!` + `Please make sure you persist the Collection '${this._key}' before using the 'onLoad' function!`, ); } return this; @@ -777,7 +777,7 @@ export class Collection { public put( itemKeys: ItemKey | Array, groupKeys: GroupKey | Array, - config: GroupAddConfig = {} + config: GroupAddConfig = {}, ) { const _itemKeys = normalizeArray(itemKeys); const _groupKeys = normalizeArray(groupKeys); @@ -801,9 +801,9 @@ export class Collection { public updateItemKey( oldItemKey: ItemKey, newItemKey: ItemKey, - config: UpdateItemKeyConfigInterface = {} + config: UpdateItemKeyConfigInterface = {}, ): boolean { - const item = this.getItem(oldItemKey, { notExisting: true }); + const item = this.getItem(oldItemKey, {notExisting: true}); config = defineConfig(config, { background: false, }); @@ -813,7 +813,7 @@ export class Collection { // Check if Item with newItemKey already exists if (this.hasItem(newItemKey)) { Agile.logger.warn( - `Couldn't update ItemKey from '${oldItemKey}' to '${newItemKey}' because an Item with the key/name '${newItemKey}' already exists!` + `Couldn't update ItemKey from '${oldItemKey}' to '${newItemKey}' because an Item with the key/name '${newItemKey}' already exists!`, ); return false; } @@ -829,19 +829,19 @@ export class Collection { // Update persist Key of Item (Doesn't get updated by updating key of Item because PersistKey is special formatted) item.persistent?.setKey( - CollectionPersistent.getItemStorageKey(newItemKey, this._key) + CollectionPersistent.getItemStorageKey(newItemKey, this._key), ); // Update ItemKey in Groups for (let groupKey in this.groups) { - const group = this.getGroup(groupKey, { notExisting: true }); + const group = this.getGroup(groupKey, {notExisting: true}); if (!group || !group.has(oldItemKey)) continue; - group.replace(oldItemKey, newItemKey, { background: config.background }); + group.replace(oldItemKey, newItemKey, {background: config.background}); } // Update ItemKey in Selectors for (let selectorKey in this.selectors) { - const selector = this.getSelector(selectorKey, { notExisting: true }); + const selector = this.getSelector(selectorKey, {notExisting: true}); if (!selector) continue; // Reselect Item in existing Selector which has selected the newItemKey @@ -873,7 +873,7 @@ export class Collection { public getGroupKeysThatHaveItemKey(itemKey: ItemKey): Array { const groupKeys: Array = []; for (let groupKey in this.groups) { - const group = this.getGroup(groupKey, { notExisting: true }); + const group = this.getGroup(groupKey, {notExisting: true}); if (group?.has(itemKey)) groupKeys.push(groupKey); } return groupKeys; @@ -906,7 +906,7 @@ export class Collection { */ public removeFromGroups( itemKeys: ItemKey | Array, - groupKeys: GroupKey | Array + groupKeys: GroupKey | Array, ): void { const _itemKeys = normalizeArray(itemKeys); const _groupKeys = normalizeArray(groupKeys); @@ -916,7 +916,7 @@ export class Collection { // Remove ItemKey from Groups _groupKeys.forEach((groupKey) => { - const group = this.getGroup(groupKey, { notExisting: true }); + const group = this.getGroup(groupKey, {notExisting: true}); if (!group || !group.has(itemKey)) return; group.remove(itemKey); removedFromGroupsCount++; @@ -943,12 +943,12 @@ export class Collection { const _itemKeys = normalizeArray(itemKeys); _itemKeys.forEach((itemKey) => { - const item = this.getItem(itemKey, { notExisting: true }); + const item = this.getItem(itemKey, {notExisting: true}); if (!item) return; // Remove Item from Groups for (let groupKey in this.groups) { - const group = this.getGroup(groupKey, { notExisting: true }); + const group = this.getGroup(groupKey, {notExisting: true}); if (group?.has(itemKey)) group?.remove(itemKey); } @@ -960,9 +960,9 @@ export class Collection { // Reselect Item in Selectors (to create new dummyItem that holds reference) for (let selectorKey in this.selectors) { - const selector = this.getSelector(selectorKey, { notExisting: true }); + const selector = this.getSelector(selectorKey, {notExisting: true}); if (selector?.hasSelected(itemKey)) - selector?.select(itemKey, { force: true }); + selector?.select(itemKey, {force: true}); } this.size--; @@ -988,28 +988,28 @@ export class Collection { if (!isValidObject(_data)) { Agile.logger.error( - `Item Data of Collection '${this._key}' has to be an valid Object!` + `Item Data of Collection '${this._key}' has to be an valid Object!`, ); return false; } if (!_data.hasOwnProperty(primaryKey)) { Agile.logger.error( - `Collection '${this._key}' Item Data has to contain a primaryKey property called '${this.config.primaryKey}'!` + `Collection '${this._key}' Item Data has to contain a primaryKey property called '${this.config.primaryKey}'!`, ); return false; } const itemKey = _data[primaryKey]; - let item = this.getItem(itemKey, { notExisting: true }); + let item = this.getItem(itemKey, {notExisting: true}); const wasPlaceholder = item?.isPlaceholder || false; const createItem = !item; // Create or update Item if (!createItem && config.patch) - item?.patch(_data, { background: config.background }); + item?.patch(_data, {background: config.background}); if (!createItem && !config.patch) - item?.set(_data, { background: config.background }); + item?.set(_data, {background: config.background}); if (createItem) { item = new Item(this, _data); this.data[itemKey] = item; @@ -1032,7 +1032,7 @@ export class Collection { */ public rebuildGroupsThatIncludeItemKey( itemKey: ItemKey, - config: RebuildGroupsThatIncludeItemKeyConfigInterface = {} + config: RebuildGroupsThatIncludeItemKeyConfigInterface = {}, ): void { config = defineConfig(config, { background: false, @@ -1055,7 +1055,7 @@ export class Collection { } } -export type DefaultItem = { [key: string]: any }; +export type DefaultItem = {[key: string]: any}; export type CollectionKey = string | number; export type ItemKey = string | number; @@ -1067,8 +1067,8 @@ export type ItemKey = string | number; * @param defaultGroupKey - Key/Name of Default Group that holds all collected Items */ export interface CreateCollectionConfigInterface { - groups?: { [key: string]: Group } | string[]; - selectors?: { [key: string]: Selector } | string[]; + groups?: {[key: string]: Group} | string[]; + selectors?: {[key: string]: Selector} | string[]; key?: CollectionKey; primaryKey?: string; defaultGroupKey?: ItemKey; @@ -1092,7 +1092,7 @@ export interface CollectionConfigInterface { */ export interface CollectConfigInterface { patch?: boolean; - method?: "push" | "unshift"; + method?: 'push' | 'unshift'; forEachItem?: (data: DataType, key: ItemKey, index: number) => void; background?: boolean; select?: boolean; diff --git a/packages/core/src/collection/item.ts b/packages/core/src/collection/item.ts index dd60200d..95551b62 100644 --- a/packages/core/src/collection/item.ts +++ b/packages/core/src/collection/item.ts @@ -5,10 +5,10 @@ import { StateKey, StateRuntimeJobConfigInterface, defineConfig, -} from "../internal"; +} from '../internal'; export class Item extends State { - static updateGroupSideEffectKey = "rebuildGroup"; + static updateGroupSideEffectKey = 'rebuildGroup'; public isSelected = false; // If Item is selected by a Selector public collection: () => Collection; @@ -22,7 +22,7 @@ export class Item extends State { constructor( collection: Collection, data: DataType, - config: ItemConfigInterface = {} + config: ItemConfigInterface = {}, ) { super(collection.agileInstance(), data, { isPlaceholder: config.isPlaceholder, @@ -47,7 +47,7 @@ export class Item extends State { */ public setKey( value: StateKey | undefined, - config: SetItemKeyConfig = {} + config: SetItemKeyConfig = {}, ): this { super.setKey(value); config = defineConfig(config, { @@ -65,20 +65,20 @@ export class Item extends State { // Add rebuildGroupsThatIncludeItemKey to sideEffects to rebuild Groups that include this Item if it changes this.addSideEffect(Item.updateGroupSideEffectKey, (config) => - this.collection().rebuildGroupsThatIncludeItemKey(value, config) + this.collection().rebuildGroupsThatIncludeItemKey(value, config), ); // Update ItemKey in ItemValue (After updating the sideEffect because otherwise it calls the old sideEffect) if (config.updateItemValuePrimaryKey) this.patch( - { [this.collection().config.primaryKey]: value }, + {[this.collection().config.primaryKey]: value}, { sideEffects: config.sideEffects, background: config.background, force: config.force, storage: config.storage, overwrite: config.overwrite, - } + }, ); // Initial Rebuild (not necessary if updating primaryKey in ItemValue because a sideEffect of the patch method is to rebuild the Group) diff --git a/packages/core/src/collection/selector.ts b/packages/core/src/collection/selector.ts index 8e8d4948..5780755f 100644 --- a/packages/core/src/collection/selector.ts +++ b/packages/core/src/collection/selector.ts @@ -7,13 +7,13 @@ import { ItemKey, State, StateRuntimeJobConfigInterface, -} from "../internal"; +} from '../internal'; export class Selector extends State< DataType | undefined > { - static dummyItemKey = "unknown"; - static rebuildSelectorSideEffectKey = "rebuildSelector"; + static dummyItemKey = 'unknown'; + static rebuildSelectorSideEffectKey = 'rebuildSelector'; public collection: () => Collection; public item: Item | undefined; public _itemKey: ItemKey; // Key of Item the Selector represents @@ -28,7 +28,7 @@ export class Selector extends State< constructor( collection: Collection, itemKey: ItemKey, - config: SelectorConfigInterface = {} + config: SelectorConfigInterface = {}, ) { super(collection.agileInstance(), undefined, config); config = defineConfig(config, { @@ -42,7 +42,7 @@ export class Selector extends State< this.isPlaceholder = true; // Initial Select - if (!config.isPlaceholder) this.select(itemKey, { overwrite: true }); + if (!config.isPlaceholder) this.select(itemKey, {overwrite: true}); } /** @@ -72,7 +72,7 @@ export class Selector extends State< */ public select( itemKey: ItemKey, - config: StateRuntimeJobConfigInterface = {} + config: StateRuntimeJobConfigInterface = {}, ): this { const oldItem = this.collection().getItem(this._itemKey, { notExisting: true, @@ -92,7 +92,7 @@ export class Selector extends State< } // Unselect old Item - this.unselect({ background: true }); + this.unselect({background: true}); this._itemKey = itemKey; this.item = newItem; @@ -100,7 +100,7 @@ export class Selector extends State< // Add SideEffect to newItem, that rebuild this Selector depending on the current Item Value newItem.addSideEffect(Selector.rebuildSelectorSideEffectKey, (config) => - this.rebuildSelector(config) + this.rebuildSelector(config), ); // Rebuild Selector for instantiating new 'selected' ItemKey properly diff --git a/packages/core/src/computed/computed.tracker.ts b/packages/core/src/computed/computed.tracker.ts index 7f2bd126..6f3b0d42 100644 --- a/packages/core/src/computed/computed.tracker.ts +++ b/packages/core/src/computed/computed.tracker.ts @@ -1,4 +1,4 @@ -import { Observer } from "../runtime/observer"; +import {Observer} from '../runtime/observer'; export class ComputedTracker { static isTracking = false; diff --git a/packages/core/src/computed/index.ts b/packages/core/src/computed/index.ts index 2f5ddf1d..c626332a 100644 --- a/packages/core/src/computed/index.ts +++ b/packages/core/src/computed/index.ts @@ -8,7 +8,7 @@ import { Event, StateConfigInterface, ComputedTracker, -} from "../internal"; +} from '../internal'; export class Computed extends State< ComputedValueType @@ -29,7 +29,7 @@ export class Computed extends State< constructor( agileInstance: Agile, computeFunction: () => ComputedValueType, - config: ComputedConfigInterface = {} + config: ComputedConfigInterface = {}, ) { super(agileInstance, computeFunction(), { key: config.key, @@ -78,7 +78,7 @@ export class Computed extends State< public updateComputeFunction( computeFunction: () => ComputedValueType, deps: Array = [], - config: UpdateComputeFunctionInterface = {} + config: UpdateComputeFunctionInterface = {}, ) { config = defineConfig(config, { background: false, @@ -145,10 +145,10 @@ export class Computed extends State< } if ( instance !== undefined && - instance["observer"] !== undefined && - instance["observer"] instanceof Observer + instance['observer'] !== undefined && + instance['observer'] instanceof Observer ) - finalInstances.push(instance["observer"]); + finalInstances.push(instance['observer']); } return finalInstances; } @@ -164,7 +164,7 @@ export class Computed extends State< public persist( keyOrConfig: StorageKey | StatePersistentConfigInterface = {}, - config: StatePersistentConfigInterface = {} + config: StatePersistentConfigInterface = {}, ): this { Agile.logger.error("You can't use persist method on ComputedState!"); return this; diff --git a/packages/core/src/event/event.observer.ts b/packages/core/src/event/event.observer.ts index 0684d2e5..72dc5542 100644 --- a/packages/core/src/event/event.observer.ts +++ b/packages/core/src/event/event.observer.ts @@ -8,7 +8,7 @@ import { RuntimeJobConfigInterface, defineConfig, RuntimeJobKey, -} from "../internal"; +} from '../internal'; export class EventObserver extends Observer { public event: () => Event; @@ -21,7 +21,7 @@ export class EventObserver extends Observer { */ constructor( event: Event, - config: CreateEventObserverConfigInterface = {} + config: CreateEventObserverConfigInterface = {}, ) { super(event.agileInstance(), { deps: config.deps, diff --git a/packages/core/src/event/index.ts b/packages/core/src/event/index.ts index dbe8f315..ea74a9af 100644 --- a/packages/core/src/event/index.ts +++ b/packages/core/src/event/index.ts @@ -5,8 +5,8 @@ import { generateId, isFunction, Observer, -} from "../internal"; -import { EventObserver } from "./event.observer"; +} from '../internal'; +import {EventObserver} from './event.observer'; export class Event { public agileInstance: () => Agile; @@ -16,7 +16,7 @@ export class Event { public _key?: EventKey; public uses = 0; - public callbacks: { [key: string]: EventCallbackFunction } = {}; // All 'subscribed' callback function + public callbacks: {[key: string]: EventCallbackFunction} = {}; // All 'subscribed' callback function public enabled = true; public observer: EventObserver; @@ -107,7 +107,7 @@ export class Event { public on(key: string, callback: EventCallbackFunction): this; public on( keyOrCallback: string | EventCallbackFunction, - callback?: EventCallbackFunction + callback?: EventCallbackFunction, ): this | string { const generateKey = isFunction(keyOrCallback); let _callback: EventCallbackFunction; @@ -124,7 +124,7 @@ export class Event { // Check if Callback is a Function if (!isFunction(_callback)) { Agile.logger.error( - "A Event Callback Function has to be typeof Function!" + 'A Event Callback Function has to be typeof Function!', ); return this; } @@ -132,7 +132,7 @@ export class Event { // Check if Callback Function already exists if (this.callbacks[key]) { Agile.logger.error( - `Event Callback Function with the key/name '${key}' already exists!` + `Event Callback Function with the key/name '${key}' already exists!`, ); return this; } @@ -283,9 +283,9 @@ export class Event { } export type EventKey = string | number; -export type DefaultEventPayload = { [key: string]: any }; +export type DefaultEventPayload = {[key: string]: any}; export type EventCallbackFunction = ( - payload: PayloadType + payload: PayloadType, ) => void; /** diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index c16e3760..8e39f0be 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,4 +1,4 @@ -import { Agile } from "./internal"; +import {Agile} from './internal'; -export * from "./internal"; -export default Agile; \ No newline at end of file +export * from './internal'; +export default Agile; diff --git a/packages/core/src/integrations/index.ts b/packages/core/src/integrations/index.ts index d2403bbb..04073cc9 100644 --- a/packages/core/src/integrations/index.ts +++ b/packages/core/src/integrations/index.ts @@ -1,4 +1,4 @@ -import { Agile, Integration } from "../internal"; +import {Agile, Integration} from '../internal'; export class Integrations { public agileInstance: () => Agile; @@ -15,7 +15,7 @@ export class Integrations { // Integrate initial Integrations which are static and got set external Agile.initialIntegrations.forEach((integration) => - this.integrate(integration) + this.integrate(integration), ); } @@ -31,8 +31,8 @@ export class Integrations { // Check if Integration is valid if (!integration._key) { Agile.logger.error( - "Failed to integrate framework! Invalid Integration!", - integration._key + 'Failed to integrate framework! Invalid Integration!', + integration._key, ); return false; } diff --git a/packages/core/src/integrations/integration.ts b/packages/core/src/integrations/integration.ts index d873882b..a40b757a 100644 --- a/packages/core/src/integrations/integration.ts +++ b/packages/core/src/integrations/integration.ts @@ -1,4 +1,4 @@ -import { Agile } from "../internal"; +import {Agile} from '../internal'; export class Integration { public _key: IntegrationKey; diff --git a/packages/core/src/internal.ts b/packages/core/src/internal.ts index c427f8a3..756f97e8 100644 --- a/packages/core/src/internal.ts +++ b/packages/core/src/internal.ts @@ -5,50 +5,50 @@ // !! All internal Agile modules must be imported from here!! // Logger -export * from "./logger"; +export * from './logger'; // Utils -export * from "./utils"; +export * from './utils'; // Agile -export * from "./agile"; +export * from './agile'; // Runtime -export * from "./runtime"; -export * from "./runtime/observer"; -export * from "./runtime/runtime.job"; -export * from "./runtime/subscription/container/SubscriptionContainer"; -export * from "./runtime/subscription/container/CallbackSubscriptionContainer"; -export * from "./runtime/subscription/container/ComponentSubscriptionContainer"; -export * from "./runtime/subscription/sub.controller"; +export * from './runtime'; +export * from './runtime/observer'; +export * from './runtime/runtime.job'; +export * from './runtime/subscription/container/SubscriptionContainer'; +export * from './runtime/subscription/container/CallbackSubscriptionContainer'; +export * from './runtime/subscription/container/ComponentSubscriptionContainer'; +export * from './runtime/subscription/sub.controller'; // Storage -export * from "./storages"; -export * from "./storages/storage"; -export * from "./storages/persistent"; +export * from './storages'; +export * from './storages/storage'; +export * from './storages/persistent'; // State -export * from "./state"; -export * from "./state/state.observer"; -export * from "./state/state.persistent"; -export * from "./state/state.runtime.job"; +export * from './state'; +export * from './state/state.observer'; +export * from './state/state.persistent'; +export * from './state/state.runtime.job'; // Computed -export * from "./computed"; -export * from "./computed/computed.tracker"; +export * from './computed'; +export * from './computed/computed.tracker'; // Collection -export * from "./collection"; -export * from "./collection/group"; -export * from "./collection/item"; -export * from "./collection/selector"; -export * from "./collection/collection.persistent"; +export * from './collection'; +export * from './collection/group'; +export * from './collection/item'; +export * from './collection/selector'; +export * from './collection/collection.persistent'; // Event -export * from "./event"; -export * from "./event/event.job"; -export * from "./event/event.observer"; +export * from './event'; +export * from './event/event.job'; +export * from './event/event.observer'; // Integrations -export * from "./integrations"; -export * from "./integrations/integration"; +export * from './integrations'; +export * from './integrations/integration'; diff --git a/packages/core/src/logger/index.ts b/packages/core/src/logger/index.ts index 0a5bdd9d..22dd5a93 100644 --- a/packages/core/src/logger/index.ts +++ b/packages/core/src/logger/index.ts @@ -4,7 +4,7 @@ import { isValidObject, generateId, isFunction, -} from "../internal"; +} from '../internal'; export class Logger { public key?: LoggerKey; @@ -12,7 +12,7 @@ export class Logger { public isActive: boolean; public config: LoggerConfigInterface; public allowedTags: string[] = []; - public loggerCategories: { [key: string]: LoggerCategoryInterface } = {}; // Holds all registered Logger Categories + public loggerCategories: {[key: string]: LoggerCategoryInterface} = {}; // Holds all registered Logger Categories public watchers: { [key: string]: LoggerWatcherConfigInterface; } = {}; @@ -22,9 +22,9 @@ export class Logger { * Logger - Handy Class for handling console.logs */ constructor(config: LoggerConfig = {}) { - let _config = typeof config === "function" ? config(this) : config; + let _config = typeof config === 'function' ? config(this) : config; _config = defineConfig(_config, { - prefix: "", + prefix: '', allowedTags: [], canUseCustomStyles: true, active: true, @@ -75,38 +75,38 @@ export class Logger { */ private addDefaultLoggerCategories() { this.createLoggerCategory({ - key: "log", + key: 'log', level: Logger.level.LOG, }); this.createLoggerCategory({ - key: "debug", - customStyle: "color: #3c3c3c;", - prefix: "Debug", + key: 'debug', + customStyle: 'color: #3c3c3c;', + prefix: 'Debug', level: Logger.level.DEBUG, }); this.createLoggerCategory({ - key: "info", - customStyle: "color: #6c69a0;", - prefix: "Info", + key: 'info', + customStyle: 'color: #6c69a0;', + prefix: 'Info', level: Logger.level.INFO, }); this.createLoggerCategory({ - key: "warn", - prefix: "Warn", + key: 'warn', + prefix: 'Warn', level: Logger.level.WARN, }); this.createLoggerCategory({ - key: "error", - prefix: "Error", + key: 'error', + prefix: 'Error', level: Logger.level.ERROR, }); this.createLoggerCategory({ - key: "trace", - prefix: "Trace", + key: 'trace', + prefix: 'Trace', level: Logger.level.TRACE, }); this.createLoggerCategory({ - key: "table", + key: 'table', level: Logger.level.TABLE, }); } @@ -143,59 +143,59 @@ export class Logger { } public log(...data: any[]) { - this.invokeConsole(data, "log", "log"); + this.invokeConsole(data, 'log', 'log'); } public debug(...data: any[]) { this.invokeConsole( data, - "debug", - typeof console.debug !== "undefined" ? "debug" : "log" + 'debug', + typeof console.debug !== 'undefined' ? 'debug' : 'log', ); } public info(...data: any[]) { this.invokeConsole( data, - "info", - typeof console.info !== "undefined" ? "info" : "log" + 'info', + typeof console.info !== 'undefined' ? 'info' : 'log', ); } public warn(...data: any[]) { this.invokeConsole( data, - "warn", - typeof console.warn !== "undefined" ? "warn" : "log" + 'warn', + typeof console.warn !== 'undefined' ? 'warn' : 'log', ); } public error(...data: any[]) { this.invokeConsole( data, - "error", - typeof console.error !== "undefined" ? "error" : "log" + 'error', + typeof console.error !== 'undefined' ? 'error' : 'log', ); } public trace(...data: any[]) { this.invokeConsole( data, - "trace", - typeof console.trace !== "undefined" ? "trace" : "log" + 'trace', + typeof console.trace !== 'undefined' ? 'trace' : 'log', ); } public table(...data: any[]) { this.invokeConsole( data, - "table", - typeof console.table !== "undefined" ? "table" : "log" + 'table', + typeof console.table !== 'undefined' ? 'table' : 'log', ); } public custom(loggerCategory: string, ...data: any[]) { - this.invokeConsole(data, loggerCategory, "log"); + this.invokeConsole(data, loggerCategory, 'log'); } //========================================================================================================= @@ -211,7 +211,7 @@ export class Logger { private invokeConsole( data: any[], loggerCategoryKey: LoggerCategoryKey, - consoleLogType: ConsoleLogType + consoleLogType: ConsoleLogType, ) { const loggerCategory = this.getLoggerCategory(loggerCategoryKey); @@ -220,18 +220,18 @@ export class Logger { // Build Prefix of Log const buildPrefix = (): string => { - let prefix: string = ""; + let prefix: string = ''; if (this.config.prefix) prefix = prefix.concat(this.config.prefix); if (loggerCategory.prefix) - prefix = prefix.concat(" " + loggerCategory.prefix); + prefix = prefix.concat(' ' + loggerCategory.prefix); if (this.config.prefix || loggerCategory.prefix) - prefix = prefix.concat(":"); + prefix = prefix.concat(':'); return prefix; }; // Add built Prefix - if (typeof data[0] === "string") - data[0] = buildPrefix().concat(" ").concat(data[0]); + if (typeof data[0] === 'string') + data[0] = buildPrefix().concat(' ').concat(data[0]); else data.unshift(buildPrefix()); // Call Watcher Callbacks @@ -247,7 +247,7 @@ export class Logger { const newLogs: any[] = []; let hasStyledString = false; // NOTE: Only one style can be used for one String block! for (let log of data) { - if (!hasStyledString && typeof log === "string") { + if (!hasStyledString && typeof log === 'string') { newLogs.push(`%c${log}`); newLogs.push(loggerCategory.customStyle); hasStyledString = true; @@ -259,10 +259,10 @@ export class Logger { } // Handle Console Table Log - if (consoleLogType === "table") { - if (typeof data[0] === "string") { + if (consoleLogType === 'table') { + if (typeof data[0] === 'string') { console.log(data[0]); - console.table(data.filter((d) => typeof d !== "string" && "number")); + console.table(data.filter((d) => typeof d !== 'string' && 'number')); } return; } @@ -281,7 +281,7 @@ export class Logger { */ public createLoggerCategory(loggerCategory: LoggerCategoryInterface) { loggerCategory = defineConfig(loggerCategory, { - prefix: "", + prefix: '', level: 0, }); this.loggerCategories[loggerCategory.key] = loggerCategory; @@ -318,7 +318,7 @@ export class Logger { public watch(key: string, config: LoggerWatcherConfigInterface): this; public watch( keyOrConfig: string | LoggerWatcherConfigInterface, - config?: LoggerWatcherConfigInterface + config?: LoggerWatcherConfigInterface, ): this | string { const generateKey = isValidObject(keyOrConfig); let _config: LoggerWatcherConfigInterface; @@ -339,7 +339,7 @@ export class Logger { // Check if Callback is a Function if (!isFunction(_config.callback)) { console.error( - "Agile: A Watcher Callback Function has to be an function!" + 'Agile: A Watcher Callback Function has to be an function!', ); return this; } @@ -347,7 +347,7 @@ export class Logger { // Check if Callback Function already exists if (this.watchers[key]) { console.error( - `Agile: Watcher Callback Function with the key/name ${key} already exists!` + `Agile: Watcher Callback Function with the key/name ${key} already exists!`, ); return this; } @@ -431,17 +431,17 @@ export type LoggerConfig = | ((logger: Logger) => CreateLoggerConfigInterface); export type ConsoleLogType = - | "log" - | "warn" - | "error" - | "trace" - | "table" - | "info" - | "debug"; + | 'log' + | 'warn' + | 'error' + | 'trace' + | 'table' + | 'info' + | 'debug'; export type LoggerWatcherCallback = ( loggerCategory: LoggerCategoryInterface, - data: any[] + data: any[], ) => void; /** diff --git a/packages/core/src/runtime/index.ts b/packages/core/src/runtime/index.ts index d26ca8d5..f3dcb488 100644 --- a/packages/core/src/runtime/index.ts +++ b/packages/core/src/runtime/index.ts @@ -5,7 +5,7 @@ import { CallbackSubscriptionContainer, ComponentSubscriptionContainer, defineConfig, -} from "../internal"; +} from '../internal'; export class Runtime { public agileInstance: () => Agile; @@ -42,7 +42,7 @@ export class Runtime { this.jobQueue.push(job); // Logging - Agile.logger.if.tag(["runtime"]).info(`Created Job '${job._key}'`, job); + Agile.logger.if.tag(['runtime']).info(`Created Job '${job._key}'`, job); // Perform Job if (config.perform) { @@ -70,7 +70,7 @@ export class Runtime { this.currentJob = null; // Logging - Agile.logger.if.tag(["runtime"]).info(`Completed Job '${job._key}'`, job); + Agile.logger.if.tag(['runtime']).info(`Completed Job '${job._key}'`, job); // Perform Jobs as long as Jobs are left in queue, if no job left update/rerender Subscribers of jobsToRerender if (this.jobQueue.length > 0) { @@ -110,7 +110,7 @@ export class Runtime { // Build final jobsToRerender and reset jobsToRerender Instances const jobsToRerender = this.jobsToRerender.concat( - Array.from(this.notReadyJobsToRerender) + Array.from(this.notReadyJobsToRerender), ); this.notReadyJobsToRerender = new Set(); this.jobsToRerender = []; @@ -124,7 +124,7 @@ export class Runtime { // Logging Agile.logger.warn( "SubscriptionContainer/Component isn't ready to rerender!", - subscriptionContainer + subscriptionContainer, ); return; } @@ -147,14 +147,14 @@ export class Runtime { if (subscriptionContainer instanceof ComponentSubscriptionContainer) this.agileInstance().integrations.update( subscriptionContainer.component, - this.getObjectBasedProps(subscriptionContainer) + this.getObjectBasedProps(subscriptionContainer), ); }); // Logging Agile.logger.if - .tag(["runtime"]) - .info("Updated/Rerendered Subscriptions", subscriptionsToUpdate); + .tag(['runtime']) + .info('Updated/Rerendered Subscriptions', subscriptionsToUpdate); return true; } @@ -170,7 +170,7 @@ export class Runtime { */ public handleObjectBasedSubscription( subscriptionContainer: SubscriptionContainer, - job: RuntimeJob + job: RuntimeJob, ): void { let foundKey: string | null = null; @@ -194,18 +194,18 @@ export class Runtime { * @param subscriptionContainer - Object based SubscriptionContainer */ public getObjectBasedProps( - subscriptionContainer: SubscriptionContainer - ): { [key: string]: any } { - const props: { [key: string]: any } = {}; + subscriptionContainer: SubscriptionContainer, + ): {[key: string]: any} { + const props: {[key: string]: any} = {}; // Map trough observerKeysToUpdate and build object out of Observer value subscriptionContainer.observerKeysToUpdate.forEach((updatedKey) => { if ( subscriptionContainer.subsObject && - subscriptionContainer.subsObject[updatedKey]["value"] + subscriptionContainer.subsObject[updatedKey]['value'] ) props[updatedKey] = - subscriptionContainer.subsObject[updatedKey]["value"]; + subscriptionContainer.subsObject[updatedKey]['value']; }); subscriptionContainer.observerKeysToUpdate = []; diff --git a/packages/core/src/runtime/observer.ts b/packages/core/src/runtime/observer.ts index fd60f06a..b26bcb94 100644 --- a/packages/core/src/runtime/observer.ts +++ b/packages/core/src/runtime/observer.ts @@ -4,7 +4,7 @@ import { RuntimeJob, SubscriptionContainer, defineConfig, -} from "../internal"; +} from '../internal'; export type ObserverKey = string | number; @@ -25,7 +25,7 @@ export class Observer { */ constructor( agileInstance: Agile, - config: CreateObserverConfigInterface = {} + config: CreateObserverConfigInterface = {}, ) { config = defineConfig(config, { deps: [], @@ -36,7 +36,7 @@ export class Observer { this.value = config.value; config.deps?.forEach((observer) => this.depend(observer)); config.subs?.forEach((subscriptionContainer) => - this.subscribe(subscriptionContainer) + this.subscribe(subscriptionContainer), ); } @@ -66,7 +66,7 @@ export class Observer { */ public perform(job: RuntimeJob) { Agile.logger.warn( - "Perform function isn't Set in Observer! Be aware that Observer is no stand alone class!" + "Perform function isn't Set in Observer! Be aware that Observer is no stand alone class!", ); } diff --git a/packages/core/src/runtime/runtime.job.ts b/packages/core/src/runtime/runtime.job.ts index 7e80e2a1..8b8bbd74 100644 --- a/packages/core/src/runtime/runtime.job.ts +++ b/packages/core/src/runtime/runtime.job.ts @@ -1,4 +1,4 @@ -import { Observer, defineConfig, SubscriptionContainer } from "../internal"; +import {Observer, defineConfig, SubscriptionContainer} from '../internal'; export class RuntimeJob { public _key?: RuntimeJobKey; @@ -16,7 +16,7 @@ export class RuntimeJob { */ constructor( observer: ObserverType, - config: CreateRuntimeJobConfigInterface = {} + config: CreateRuntimeJobConfigInterface = {}, ) { config = defineConfig(config, { background: false, diff --git a/packages/core/src/runtime/subscription/container/CallbackSubscriptionContainer.ts b/packages/core/src/runtime/subscription/container/CallbackSubscriptionContainer.ts index b83fe48b..eca14df6 100644 --- a/packages/core/src/runtime/subscription/container/CallbackSubscriptionContainer.ts +++ b/packages/core/src/runtime/subscription/container/CallbackSubscriptionContainer.ts @@ -2,7 +2,7 @@ import { Observer, SubscriptionContainer, SubscriptionContainerKeyType, -} from "../../../internal"; +} from '../../../internal'; export class CallbackSubscriptionContainer extends SubscriptionContainer { public callback: Function; @@ -17,7 +17,7 @@ export class CallbackSubscriptionContainer extends SubscriptionContainer { constructor( callback: Function, subs: Array = [], - key?: SubscriptionContainerKeyType + key?: SubscriptionContainerKeyType, ) { super(subs, key); this.callback = callback; diff --git a/packages/core/src/runtime/subscription/container/ComponentSubscriptionContainer.ts b/packages/core/src/runtime/subscription/container/ComponentSubscriptionContainer.ts index e6ba85de..cbd7bc22 100644 --- a/packages/core/src/runtime/subscription/container/ComponentSubscriptionContainer.ts +++ b/packages/core/src/runtime/subscription/container/ComponentSubscriptionContainer.ts @@ -2,7 +2,7 @@ import { Observer, SubscriptionContainer, SubscriptionContainerKeyType, -} from "../../../internal"; +} from '../../../internal'; export class ComponentSubscriptionContainer extends SubscriptionContainer { public component: any; @@ -17,7 +17,7 @@ export class ComponentSubscriptionContainer extends SubscriptionContainer { constructor( component: any, subs: Array = [], - key?: SubscriptionContainerKeyType + key?: SubscriptionContainerKeyType, ) { super(subs, key); this.component = component; diff --git a/packages/core/src/runtime/subscription/container/SubscriptionContainer.ts b/packages/core/src/runtime/subscription/container/SubscriptionContainer.ts index d22f4c50..f67c0d7a 100644 --- a/packages/core/src/runtime/subscription/container/SubscriptionContainer.ts +++ b/packages/core/src/runtime/subscription/container/SubscriptionContainer.ts @@ -1,4 +1,4 @@ -import { Observer } from "../../../internal"; +import {Observer} from '../../../internal'; export class SubscriptionContainer { public key?: SubscriptionContainerKeyType; @@ -8,7 +8,7 @@ export class SubscriptionContainer { // For Object based Subscription public isObjectBased = false; public observerKeysToUpdate: Array = []; // Holds temporary keys of Observers that got updated (Note: keys based on 'subsObject') - public subsObject?: { [key: string]: Observer }; // Same as subs but in Object shape + public subsObject?: {[key: string]: Observer}; // Same as subs but in Object shape /** * @internal diff --git a/packages/core/src/runtime/subscription/sub.controller.ts b/packages/core/src/runtime/subscription/sub.controller.ts index d837810a..8bdf830b 100644 --- a/packages/core/src/runtime/subscription/sub.controller.ts +++ b/packages/core/src/runtime/subscription/sub.controller.ts @@ -6,7 +6,7 @@ import { CallbackSubscriptionContainer, isFunction, SubscriptionContainerKeyType, -} from "../../internal"; +} from '../../internal'; export class SubController { public agileInstance: () => Agile; @@ -37,13 +37,13 @@ export class SubController { */ public subscribeWithSubsObject( integrationInstance: any, - subs: { [key: string]: Observer } = {}, - key?: SubscriptionContainerKeyType + subs: {[key: string]: Observer} = {}, + key?: SubscriptionContainerKeyType, ): { subscriptionContainer: SubscriptionContainer; - props: { [key: string]: Observer["value"] }; + props: {[key: string]: Observer['value']}; } { - const props: { [key: string]: Observer["value"] } = {}; + const props: {[key: string]: Observer['value']} = {}; // Create subsArray const subsArray: Observer[] = []; @@ -53,7 +53,7 @@ export class SubController { const subscriptionContainer = this.registerSubscription( integrationInstance, subsArray, - key + key, ); // Set SubscriptionContainer to Object based @@ -86,13 +86,13 @@ export class SubController { public subscribeWithSubsArray( integrationInstance: any, subs: Array = [], - key?: SubscriptionContainerKeyType + key?: SubscriptionContainerKeyType, ): SubscriptionContainer { // Register Subscription -> decide weather subscriptionInstance is callback or component based const subscriptionContainer = this.registerSubscription( integrationInstance, subs, - key + key, ); // Register subs @@ -127,10 +127,10 @@ export class SubController { // Logging Agile.logger.if - .tag(["core", "subscription"]) + .tag(['core', 'subscription']) .info( - "Unregistered Callback based Subscription ", - subscriptionInstance + 'Unregistered Callback based Subscription ', + subscriptionInstance, ); return; } @@ -142,10 +142,10 @@ export class SubController { // Logging Agile.logger.if - .tag(["core", "subscription"]) + .tag(['core', 'subscription']) .info( - "Unregistered Component based Subscription ", - subscriptionInstance + 'Unregistered Component based Subscription ', + subscriptionInstance, ); return; } @@ -153,18 +153,18 @@ export class SubController { // Unsubscribe component based Subscription with subscriptionInstance that holds a componentSubscriptionContainer if (subscriptionInstance.componentSubscriptionContainer) { unsub( - subscriptionInstance.componentSubscriptionContainer as ComponentSubscriptionContainer + subscriptionInstance.componentSubscriptionContainer as ComponentSubscriptionContainer, ); this.componentSubs.delete( - subscriptionInstance.componentSubscriptionContainer + subscriptionInstance.componentSubscriptionContainer, ); // Logging Agile.logger.if - .tag(["core", "subscription"]) + .tag(['core', 'subscription']) .info( - "Unregistered Component based Subscription ", - subscriptionInstance + 'Unregistered Component based Subscription ', + subscriptionInstance, ); return; } @@ -183,7 +183,7 @@ export class SubController { public registerSubscription( integrationInstance: any, subs: Array = [], - key?: SubscriptionContainerKeyType + key?: SubscriptionContainerKeyType, ): SubscriptionContainer { if (isFunction(integrationInstance)) return this.registerCallbackSubscription(integrationInstance, subs, key); @@ -203,12 +203,12 @@ export class SubController { public registerComponentSubscription( componentInstance: any, subs: Array = [], - key?: SubscriptionContainerKeyType + key?: SubscriptionContainerKeyType, ): ComponentSubscriptionContainer { const componentSubscriptionContainer = new ComponentSubscriptionContainer( componentInstance, subs, - key + key, ); this.componentSubs.add(componentSubscriptionContainer); @@ -223,10 +223,10 @@ export class SubController { // Logging Agile.logger.if - .tag(["core", "subscription"]) + .tag(['core', 'subscription']) .info( - "Registered Component based Subscription ", - componentSubscriptionContainer + 'Registered Component based Subscription ', + componentSubscriptionContainer, ); return componentSubscriptionContainer; @@ -245,22 +245,22 @@ export class SubController { public registerCallbackSubscription( callbackFunction: () => void, subs: Array = [], - key?: SubscriptionContainerKeyType + key?: SubscriptionContainerKeyType, ): CallbackSubscriptionContainer { const callbackSubscriptionContainer = new CallbackSubscriptionContainer( callbackFunction, subs, - key + key, ); this.callbackSubs.add(callbackSubscriptionContainer); callbackSubscriptionContainer.ready = true; // Logging Agile.logger.if - .tag(["core", "subscription"]) + .tag(['core', 'subscription']) .info( - "Registered Callback based Subscription ", - callbackSubscriptionContainer + 'Registered Callback based Subscription ', + callbackSubscriptionContainer, ); return callbackSubscriptionContainer; diff --git a/packages/core/src/state/index.ts b/packages/core/src/state/index.ts index f87a80e7..6ea6b995 100644 --- a/packages/core/src/state/index.ts +++ b/packages/core/src/state/index.ts @@ -16,7 +16,7 @@ import { ComputedTracker, StateIngestConfigInterface, StateRuntimeJobConfigInterface, -} from "../internal"; +} from '../internal'; export class State { public agileInstance: () => Agile; @@ -32,14 +32,14 @@ export class State { public observer: StateObserver; // Handles deps and subs of State and is like an interface to the Runtime public sideEffects: { - [key: string]: (properties?: { [key: string]: any }) => void; + [key: string]: (properties?: {[key: string]: any}) => void; } = {}; // SideEffects of State (will be executed in Runtime) public computeMethod?: ComputeMethod; public isPersisted = false; // If State can be stored in Agile Storage (-> successfully integrated persistent) public persistent: StatePersistent | undefined; // Manages storing State Value into Storage - public watchers: { [key: string]: StateWatcherCallback } = {}; + public watchers: {[key: string]: StateWatcherCallback} = {}; /** * @public @@ -51,7 +51,7 @@ export class State { constructor( agileInstance: Agile, initialValue: ValueType, - config: StateConfigInterface = {} + config: StateConfigInterface = {}, ) { config = defineConfig(config, { deps: [], @@ -70,7 +70,7 @@ export class State { this.isPlaceholder = true; // Initial Set - if (!config.isPlaceholder) this.set(initialValue, { overwrite: true }); + if (!config.isPlaceholder) this.set(initialValue, {overwrite: true}); } /** @@ -141,7 +141,7 @@ export class State { */ public set( value: ValueType, - config: StateRuntimeJobConfigInterface = {} + config: StateRuntimeJobConfigInterface = {}, ): this { config = defineConfig(config, { sideEffects: true, @@ -190,12 +190,12 @@ export class State { * @param type - wished Type ('String', 'Boolean', 'Array', 'Object', 'Number') */ public type(type: any): this { - const supportedTypes = ["String", "Boolean", "Array", "Object", "Number"]; + const supportedTypes = ['String', 'Boolean', 'Array', 'Object', 'Number']; // Check if type is a supported Type if (!supportedTypes.includes(type.name)) { Agile.logger.warn( - `'${type}' is not supported! Supported types: String, Boolean, Array, Object, Number` + `'${type}' is not supported! Supported types: String, Boolean, Array, Object, Number`, ); return this; } @@ -242,7 +242,7 @@ export class State { */ public patch( targetWithChanges: object, - config: PatchConfigInterface = {} + config: PatchConfigInterface = {}, ): this { config = defineConfig(config, { addNewProperties: true, @@ -255,13 +255,13 @@ export class State { if (!isValidObject(this.nextStateValue)) { Agile.logger.error( - "You can't use the patch method on a non object based States!" + "You can't use the patch method on a non object based States!", ); return this; } if (!isValidObject(targetWithChanges)) { - Agile.logger.error("TargetWithChanges has to be an Object!"); + Agile.logger.error('TargetWithChanges has to be an Object!'); return this; } @@ -269,7 +269,7 @@ export class State { this.nextStateValue = flatMerge( copy(this.nextStateValue), targetWithChanges, - { addNewProperties: config.addNewProperties } + {addNewProperties: config.addNewProperties}, ); // Ingest updated nextStateValue into Runtime @@ -303,7 +303,7 @@ export class State { public watch(key: string, callback: StateWatcherCallback): this; public watch( keyOrCallback: string | StateWatcherCallback, - callback?: StateWatcherCallback + callback?: StateWatcherCallback, ): this | string { const generateKey = isFunction(keyOrCallback); let _callback: StateWatcherCallback; @@ -320,7 +320,7 @@ export class State { // Check if Callback is valid Function if (!isFunction(_callback)) { Agile.logger.error( - "A Watcher Callback Function has to be typeof Function!" + 'A Watcher Callback Function has to be typeof Function!', ); return this; } @@ -328,7 +328,7 @@ export class State { // Check if watcherKey is already occupied if (this.watchers[key]) { Agile.logger.error( - `Watcher Callback Function with the key/name '${key}' already exists!` + `Watcher Callback Function with the key/name '${key}' already exists!`, ); return this; } @@ -356,7 +356,7 @@ export class State { * @param callback - Callback Function that gets called if the State Value changes */ public onInaugurated(callback: StateWatcherCallback) { - const watcherKey = "InauguratedWatcherKey"; + const watcherKey = 'InauguratedWatcherKey'; this.watch(watcherKey, (value) => { callback(value); this.removeWatcher(watcherKey); @@ -392,11 +392,11 @@ export class State { */ public persist( key?: PersistentKey, - config?: StatePersistentConfigInterface + config?: StatePersistentConfigInterface, ): this; public persist( keyOrConfig: PersistentKey | StatePersistentConfigInterface = {}, - config: StatePersistentConfigInterface = {} + config: StatePersistentConfigInterface = {}, ): this { let _config: StatePersistentConfigInterface; let key: PersistentKey | undefined; @@ -416,7 +416,7 @@ export class State { if (this.persistent) Agile.logger.warn( - `By persisting the State '${this._key}' twice you overwrite the old Persistent Instance!` + `By persisting the State '${this._key}' twice you overwrite the old Persistent Instance!`, ); // Create persistent -> Persist Value @@ -446,7 +446,7 @@ export class State { if (this.isPersisted) callback(true); } else { Agile.logger.error( - `Please make sure you persist the State '${this._key}' before using the 'onLoad' function!` + `Please make sure you persist the State '${this._key}' before using the 'onLoad' function!`, ); } return this; @@ -507,10 +507,10 @@ export class State { * Note: Only useful with boolean based States */ public invert(): this { - if (typeof this._value === "boolean") { + if (typeof this._value === 'boolean') { this.set(!this._value as any); } else { - Agile.logger.error("You can only invert boolean based States!"); + Agile.logger.error('You can only invert boolean based States!'); } return this; } @@ -525,7 +525,7 @@ export class State { */ public compute(method: ComputeMethod): this { if (!isFunction(method)) { - Agile.logger.error("A computeMethod has to be a function!"); + Agile.logger.error('A computeMethod has to be a function!'); return this; } this.computeMethod = method; @@ -543,10 +543,10 @@ export class State { */ public addSideEffect( key: string, - sideEffect: (properties?: { [key: string]: any }) => void + sideEffect: (properties?: {[key: string]: any}) => void, ): this { if (!isFunction(sideEffect)) { - Agile.logger.error("A sideEffect function has to be a function!"); + Agile.logger.error('A sideEffect function has to be a function!'); return this; } this.sideEffects[key] = sideEffect; @@ -602,7 +602,7 @@ export class State { */ public getPublicValue(): ValueType { // If State Value is used internal and output represents the real state value (for instance in Group) - if (this["output"] !== undefined) return this["output"]; + if (this['output'] !== undefined) return this['output']; return this._value; } diff --git a/packages/core/src/state/state.observer.ts b/packages/core/src/state/state.observer.ts index 4932cef6..553eefa9 100644 --- a/packages/core/src/state/state.observer.ts +++ b/packages/core/src/state/state.observer.ts @@ -13,7 +13,7 @@ import { StateRuntimeJob, StateRuntimeJobConfigInterface, RuntimeJobKey, -} from "../internal"; +} from '../internal'; export class StateObserver extends Observer { public state: () => State; @@ -27,9 +27,9 @@ export class StateObserver extends Observer { */ constructor( state: State, - config: CreateStateObserverConfigInterface = {} + config: CreateStateObserverConfigInterface = {}, ) { - super(state.agileInstance(), { ...config, ...{ value: state._value } }); + super(state.agileInstance(), {...config, ...{value: state._value}}); this.state = () => state; this.nextStateValue = copy(state._value); } @@ -63,7 +63,7 @@ export class StateObserver extends Observer { */ public ingestValue( newStateValue: ValueType, - config: StateIngestConfigInterface = {} + config: StateIngestConfigInterface = {}, ): void { const state = this.state(); config = defineConfig(config, { @@ -158,7 +158,7 @@ export class StateObserver extends Observer { // Ingest Dependencies of Observer into Runtime state.observer.deps.forEach( (observer) => - observer instanceof StateObserver && observer.ingest({ perform: false }) + observer instanceof StateObserver && observer.ingest({perform: false}), ); } } diff --git a/packages/core/src/state/state.persistent.ts b/packages/core/src/state/state.persistent.ts index 5e1fcf73..a548fdc0 100644 --- a/packages/core/src/state/state.persistent.ts +++ b/packages/core/src/state/state.persistent.ts @@ -5,10 +5,10 @@ import { PersistentKey, State, StorageKey, -} from "../internal"; +} from '../internal'; export class StatePersistent extends Persistent { - static storeValueSideEffectKey = "rebuildStateStorageValue"; + static storeValueSideEffectKey = 'rebuildStateStorageValue'; public state: () => State; /** @@ -19,7 +19,7 @@ export class StatePersistent extends Persistent { */ constructor( state: State, - config: CreatePersistentConfigInterface = {} + config: CreatePersistentConfigInterface = {}, ) { super(state.agileInstance(), { instantiate: false, @@ -97,12 +97,12 @@ export class StatePersistent extends Persistent { // Load Value from default Storage const loadedValue = await this.agileInstance().storages.get( _key, - this.defaultStorageKey + this.defaultStorageKey, ); if (!loadedValue) return false; // Assign loaded Value to State - this.state().set(loadedValue, { storage: false }); + this.state().set(loadedValue, {storage: false}); // Persist State, so that the Storage Value updates dynamically if the State updates await this.persistValue(_key); @@ -127,7 +127,7 @@ export class StatePersistent extends Persistent { StatePersistent.storeValueSideEffectKey, (config) => { this.rebuildStorageSideEffect(this.state(), _key, config); - } + }, ); // Rebuild Storage for saving State Value in the Storage @@ -194,14 +194,14 @@ export class StatePersistent extends Persistent { public rebuildStorageSideEffect( state: State, key: PersistentKey, - config: any = {} + config: any = {}, ) { if (config.storage !== undefined && !config.storage) return; this.agileInstance().storages.set( key, this.state().getPersistableValue(), - this.storageKeys + this.storageKeys, ); } } diff --git a/packages/core/src/state/state.runtime.job.ts b/packages/core/src/state/state.runtime.job.ts index 0cf1e7bb..505e282a 100644 --- a/packages/core/src/state/state.runtime.job.ts +++ b/packages/core/src/state/state.runtime.job.ts @@ -4,14 +4,14 @@ import { RuntimeJobConfigInterface, RuntimeJobKey, StateObserver, -} from "../internal"; +} from '../internal'; export class StateRuntimeJob extends RuntimeJob { public config: StateRuntimeJobConfigInterface; constructor( observer: StateObserver, - config: CreateStateRuntimeJobConfigInterface = {} + config: CreateStateRuntimeJobConfigInterface = {}, ) { super(observer, config); config = defineConfig(config, { diff --git a/packages/core/src/storages/index.ts b/packages/core/src/storages/index.ts index d85750b5..51433889 100644 --- a/packages/core/src/storages/index.ts +++ b/packages/core/src/storages/index.ts @@ -6,13 +6,13 @@ import { StorageKey, StorageItemKey, notEqual, -} from "../internal"; +} from '../internal'; export class Storages { public agileInstance: () => Agile; public defaultStorage?: Storage; - public storages: { [key: string]: Storage } = {}; // All registered Storages + public storages: {[key: string]: Storage} = {}; // All registered Storages public persistentInstances: Set = new Set(); /** @@ -40,14 +40,14 @@ export class Storages { // Check if Local Storage is Available if (!Storages.localStorageAvailable()) { Agile.logger.warn( - "Local Storage is here not available, to use Storage functionalities like persist please provide a custom Storage!" + 'Local Storage is here not available, to use Storage functionalities like persist please provide a custom Storage!', ); return false; } // Create and register Local Storage const _localStorage = new Storage({ - key: "localStorage", + key: 'localStorage', async: false, methods: { get: localStorage.getItem.bind(localStorage), @@ -55,7 +55,7 @@ export class Storages { remove: localStorage.removeItem.bind(localStorage), }, }); - return this.register(_localStorage, { default: true }); + return this.register(_localStorage, {default: true}); } //========================================================================================================= @@ -69,14 +69,14 @@ export class Storages { */ public register( storage: Storage, - config: RegisterConfigInterface = {} + config: RegisterConfigInterface = {}, ): boolean { const hasRegisteredAnyStorage = notEqual(this.storages, {}); // Check if Storage already exists if (this.storages.hasOwnProperty(storage.key)) { Agile.logger.error( - `Storage with the key/name '${storage.key}' already exists` + `Storage with the key/name '${storage.key}' already exists`, ); return false; } @@ -84,7 +84,7 @@ export class Storages { // Set first added Storage as default Storage if (!hasRegisteredAnyStorage && config.default === false) { Agile.logger.warn( - "Be aware that Agile has to assign the first added Storage as default Storage!" + 'Be aware that Agile has to assign the first added Storage as default Storage!', ); } if (!hasRegisteredAnyStorage) config.default = true; @@ -147,11 +147,11 @@ export class Storages { */ public get( key: StorageItemKey, - storageKey?: StorageKey + storageKey?: StorageKey, ): Promise { if (!this.hasStorage()) { Agile.logger.error( - "No Storage found! Please provide at least one Storage." + 'No Storage found! Please provide at least one Storage.', ); return Promise.resolve(undefined); } @@ -179,11 +179,11 @@ export class Storages { public set( key: StorageItemKey, value: any, - storageKeys?: StorageKey[] + storageKeys?: StorageKey[], ): void { if (!this.hasStorage()) { Agile.logger.error( - "No Storage found! Please provide at least one Storage." + 'No Storage found! Please provide at least one Storage.', ); return; } @@ -211,7 +211,7 @@ export class Storages { public remove(key: StorageItemKey, storageKeys?: StorageKey[]): void { if (!this.hasStorage()) { Agile.logger.error( - "No Storage found! Please provide at least one Storage." + 'No Storage found! Please provide at least one Storage.', ); return; } @@ -247,8 +247,8 @@ export class Storages { */ static localStorageAvailable(): boolean { try { - localStorage.setItem("_myDummyKey_", "myDummyValue"); - localStorage.removeItem("_myDummyKey_"); + localStorage.setItem('_myDummyKey_', 'myDummyValue'); + localStorage.removeItem('_myDummyKey_'); return true; } catch (e) { return false; diff --git a/packages/core/src/storages/persistent.ts b/packages/core/src/storages/persistent.ts index af5d3f62..c7466f77 100644 --- a/packages/core/src/storages/persistent.ts +++ b/packages/core/src/storages/persistent.ts @@ -1,9 +1,9 @@ -import { Agile, defineConfig, StorageKey } from "../internal"; +import {Agile, defineConfig, StorageKey} from '../internal'; export class Persistent { public agileInstance: () => Agile; - public static placeHolderKey = "__THIS_IS_A_PLACEHOLDER__"; + public static placeHolderKey = '__THIS_IS_A_PLACEHOLDER__'; public _key: PersistentKey; public ready = false; @@ -23,7 +23,7 @@ export class Persistent { */ constructor( agileInstance: Agile, - config: CreatePersistentConfigInterface = {} + config: CreatePersistentConfigInterface = {}, ) { this.agileInstance = () => agileInstance; this._key = Persistent.placeHolderKey; @@ -96,7 +96,7 @@ export class Persistent { // Validate Key if (this._key === Persistent.placeHolderKey) { Agile.logger.error( - "No valid persist Key found! Please provide a Key or assign one to the parent instance." + 'No valid persist Key found! Please provide a Key or assign one to the parent instance.', ); isValid = false; } @@ -104,7 +104,7 @@ export class Persistent { // Validate StorageKeys if (!this.defaultStorageKey || this.storageKeys.length <= 0) { Agile.logger.error( - "No persist Storage Key found! Please provide at least one Storage Key." + 'No persist Storage Key found! Please provide at least one Storage Key.', ); isValid = false; } @@ -162,7 +162,7 @@ export class Persistent { */ public async loadPersistedValue(key?: PersistentKey): Promise { Agile.logger.error( - `'loadPersistedValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!` + `'loadPersistedValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!`, ); return false; } @@ -177,7 +177,7 @@ export class Persistent { */ public async persistValue(key?: PersistentKey): Promise { Agile.logger.error( - `'persistValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!` + `'persistValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!`, ); return false; } @@ -192,7 +192,7 @@ export class Persistent { */ public async removePersistedValue(key?: PersistentKey): Promise { Agile.logger.error( - `'removePersistedValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!` + `'removePersistedValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!`, ); return false; } diff --git a/packages/core/src/storages/storage.ts b/packages/core/src/storages/storage.ts index 95ff4bb4..1630f5e1 100644 --- a/packages/core/src/storages/storage.ts +++ b/packages/core/src/storages/storage.ts @@ -4,7 +4,7 @@ import { isAsyncFunction, isFunction, Agile, -} from "../internal"; +} from '../internal'; export class Storage { public key: StorageKey; @@ -19,7 +19,7 @@ export class Storage { */ constructor(config: CreateStorageConfigInterface) { config = defineConfig(config, { - prefix: "agile", + prefix: 'agile', async: false, }); this.key = config.key; @@ -76,7 +76,7 @@ export class Storage { if (!this.ready || !this.methods.get) return; if (isAsyncFunction(this.methods.get)) Agile.logger.warn( - "Be aware that 'normalGet' returns a Promise with a stringified Value if using it in an async Storage!" + "Be aware that 'normalGet' returns a Promise with a stringified Value if using it in an async Storage!", ); // Get Value diff --git a/packages/core/src/utils.ts b/packages/core/src/utils.ts index 40a2e2d3..499f2e49 100644 --- a/packages/core/src/utils.ts +++ b/packages/core/src/utils.ts @@ -1,4 +1,4 @@ -import { State, Agile, Event, Collection, Observer } from "./internal"; +import {State, Agile, Event, Collection, Observer} from './internal'; //========================================================================================================= // Copy @@ -11,12 +11,12 @@ import { State, Agile, Event, Collection, Observer } from "./internal"; */ export function copy(value: T): T { // Extra checking '!value' because 'typeof null === object' - if (!value || typeof value !== "object") return value; + if (!value || typeof value !== 'object') return value; let temp; let newObject: any = Array.isArray(value) ? [] : {}; for (let property in value) { temp = value[property]; - newObject[property] = typeof temp === "object" ? copy(temp) : temp; + newObject[property] = typeof temp === 'object' ? copy(temp) : temp; } return newObject as T; } @@ -36,17 +36,17 @@ export function isValidObject(value: any): boolean { return obj instanceof HTMLElement; } catch (e) { return ( - typeof obj === "object" && + typeof obj === 'object' && obj.nodeType === 1 && - typeof obj.style === "object" && - typeof obj.ownerDocument === "object" + typeof obj.style === 'object' && + typeof obj.ownerDocument === 'object' ); } } return ( value !== null && - typeof value === "object" && + typeof value === 'object' && !isHTMLElement(value) && !Array.isArray(value) ); @@ -63,7 +63,7 @@ export function isValidObject(value: any): boolean { */ export function includesArray( array1: Array, - array2: Array + array2: Array, ): boolean { return array2.every((element) => array1.includes(element)); } @@ -79,7 +79,7 @@ export function includesArray( */ export function normalizeArray( items?: DataType | Array, - config: { createUndefinedArray?: boolean } = {} + config: {createUndefinedArray?: boolean} = {}, ): Array { config = defineConfig(config, { createUndefinedArray: false, // If it should return [] or [undefined] if the passed Item is undefined @@ -101,16 +101,16 @@ export function getAgileInstance(instance: any): Agile | undefined { try { // Try to get agileInstance from passed Instance if (instance) { - const _agileInstance = isFunction(instance["agileInstance"]) - ? instance["agileInstance"]() - : instance["agileInstance"]; + const _agileInstance = isFunction(instance['agileInstance']) + ? instance['agileInstance']() + : instance['agileInstance']; if (_agileInstance) return _agileInstance; } // Return global bound agileInstance - return globalThis["__agile__"]; + return globalThis['__agile__']; } catch (e) { - Agile.logger.error("Failed to get Agile Instance from ", instance); + Agile.logger.error('Failed to get Agile Instance from ', instance); } return undefined; @@ -125,7 +125,7 @@ export function getAgileInstance(instance: any): Agile | undefined { * @param value - Value that gets tested if its a function */ export function isFunction(value: any): boolean { - return typeof value === "function"; + return typeof value === 'function'; } //========================================================================================================= @@ -140,8 +140,8 @@ export function isAsyncFunction(value: any): boolean { const valueString = value.toString(); return ( isFunction(value) && - (value.constructor.name === "AsyncFunction" || - valueString.includes("__awaiter")) + (value.constructor.name === 'AsyncFunction' || + valueString.includes('__awaiter')) ); } @@ -156,13 +156,13 @@ export function isAsyncFunction(value: any): boolean { */ export function isValidUrl(url: string): boolean { const pattern = new RegExp( - "^(https?:\\/\\/)?" + // protocol - "((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|" + // domain name - "((\\d{1,3}\\.){3}\\d{1,3}))" + // OR ip (v4) address - "(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*" + // port and path - "(\\?[;&a-z\\d%_.~+=-]*)?" + // query string - "(\\#[-a-z\\d_]*)?$", - "i" + '^(https?:\\/\\/)?' + // protocol + '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name + '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address + '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path + '(\\?[;&a-z\\d%_.~+=-]*)?' + // query string + '(\\#[-a-z\\d_]*)?$', + 'i', ); return pattern.test(url); } @@ -176,7 +176,7 @@ export function isValidUrl(url: string): boolean { * @param value - Value that gets checked */ export function isJsonString(value: any): boolean { - if (typeof value !== "string") return false; + if (typeof value !== 'string') return false; try { JSON.parse(value); } catch (e) { @@ -198,19 +198,19 @@ export function isJsonString(value: any): boolean { export function defineConfig( config: ConfigInterface, defaults: Object, - overwriteUndefinedProperties?: boolean + overwriteUndefinedProperties?: boolean, ): ConfigInterface { if (overwriteUndefinedProperties === undefined) overwriteUndefinedProperties = true; if (overwriteUndefinedProperties) { - const finalConfig = { ...defaults, ...config }; + const finalConfig = {...defaults, ...config}; for (let key in finalConfig) if (finalConfig[key] === undefined) finalConfig[key] = defaults[key]; return finalConfig; } - return { ...defaults, ...config }; + return {...defaults, ...config}; } //========================================================================================================= @@ -234,7 +234,7 @@ export interface FlatMergeConfigInterface { export function flatMerge( source: DataType, changes: Object, - config: FlatMergeConfigInterface = {} + config: FlatMergeConfigInterface = {}, ): DataType { // Copy Source to avoid references const _source = copy(source); @@ -286,9 +286,9 @@ export function notEqual(value1: any, value2: any): boolean { */ export function generateId(length?: number): string { const characters = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; const charactersLength = characters.length; - let result = ""; + let result = ''; if (!length) length = 5; for (let i = 0; i < length; i++) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); @@ -330,7 +330,7 @@ export function clone(instance: T): T { export function globalBind( key: string, instance: any, - overwrite = false + overwrite = false, ): boolean { try { if (overwrite) { diff --git a/packages/core/tests/helper/test.integration.ts b/packages/core/tests/helper/test.integration.ts index d783fcae..ffc1dfdb 100644 --- a/packages/core/tests/helper/test.integration.ts +++ b/packages/core/tests/helper/test.integration.ts @@ -1,7 +1,7 @@ -import { Agile, Integration } from "../../src"; +import {Agile, Integration} from '../../src'; const testIntegration = new Integration({ - key: "test", + key: 'test', }); export default testIntegration; diff --git a/packages/core/tests/integration/collection.persistent.integration.test.ts b/packages/core/tests/integration/collection.persistent.integration.test.ts index 59a63df9..36a7ac95 100644 --- a/packages/core/tests/integration/collection.persistent.integration.test.ts +++ b/packages/core/tests/integration/collection.persistent.integration.test.ts @@ -1,9 +1,9 @@ // Note: This is no optimized Test! // It was manly used to see if the collection persistent works during the development -import { Agile, Item } from "../../src"; +import {Agile, Item} from '../../src'; -describe("Collection Persist Function Tests", () => { +describe('Collection Persist Function Tests', () => { const myStorage: any = {}; const storageMethods = { get: jest.fn((key) => { @@ -24,10 +24,10 @@ describe("Collection Persist Function Tests", () => { const App = new Agile(); App.registerStorage( App.Storage({ - key: "testStorage", - prefix: "test", + key: 'testStorage', + prefix: 'test', methods: storageMethods, - }) + }), ); interface User { @@ -35,13 +35,13 @@ describe("Collection Persist Function Tests", () => { name: string; } - describe("Collection", () => { - it("Can persist Collection", async () => { + describe('Collection', () => { + it('Can persist Collection', async () => { // Create Collection const MY_COLLECTION = App.Collection(); // Test Collecting Item before Persisting - MY_COLLECTION.collect({ id: 2, name: "hans" }); + MY_COLLECTION.collect({id: 2, name: 'hans'}); await new Promise((resolve) => setTimeout(resolve, 100)); expect(myStorage).toStrictEqual({}); @@ -50,12 +50,12 @@ describe("Collection Persist Function Tests", () => { expect(storageMethods.remove).not.toHaveBeenCalled(); // Test Persisting - MY_COLLECTION.persist("myCollection"); + MY_COLLECTION.persist('myCollection'); await new Promise((resolve) => setTimeout(resolve, 100)); expect(myStorage).toStrictEqual({ - _test_myCollection: "true", - _test__myCollection_group_default: "[2]", + _test_myCollection: 'true', + _test__myCollection_group_default: '[2]', _test__myCollection_item_2: '{"id":2,"name":"hans"}', }); expect(storageMethods.set).toHaveBeenCalledTimes(3); @@ -63,12 +63,12 @@ describe("Collection Persist Function Tests", () => { expect(storageMethods.remove).toHaveBeenCalledTimes(0); // Test collecting new Item - MY_COLLECTION.collect({ id: 1, name: "frank" }); + MY_COLLECTION.collect({id: 1, name: 'frank'}); await new Promise((resolve) => setTimeout(resolve, 100)); expect(myStorage).toStrictEqual({ - _test_myCollection: "true", - _test__myCollection_group_default: "[2,1]", + _test_myCollection: 'true', + _test__myCollection_group_default: '[2,1]', _test__myCollection_item_2: '{"id":2,"name":"hans"}', _test__myCollection_item_1: '{"id":1,"name":"frank"}', }); @@ -77,15 +77,15 @@ describe("Collection Persist Function Tests", () => { expect(storageMethods.remove).toHaveBeenCalledTimes(0); // Test creating Group - MY_COLLECTION.createGroup("stupidPeople", [1, 2]).persist({ + MY_COLLECTION.createGroup('stupidPeople', [1, 2]).persist({ followCollectionPersistKeyPattern: true, }); await new Promise((resolve) => setTimeout(resolve, 100)); expect(myStorage).toStrictEqual({ - _test_myCollection: "true", - _test__myCollection_group_stupidPeople: "[1,2]", - _test__myCollection_group_default: "[2,1]", + _test_myCollection: 'true', + _test__myCollection_group_stupidPeople: '[1,2]', + _test__myCollection_group_default: '[2,1]', _test__myCollection_item_2: '{"id":2,"name":"hans"}', _test__myCollection_item_1: '{"id":1,"name":"frank"}', }); @@ -94,13 +94,13 @@ describe("Collection Persist Function Tests", () => { expect(storageMethods.remove).toHaveBeenCalledTimes(0); // Test collecting new Item - MY_COLLECTION.collect({ id: 3, name: "günter" }); + MY_COLLECTION.collect({id: 3, name: 'günter'}); await new Promise((resolve) => setTimeout(resolve, 100)); expect(myStorage).toStrictEqual({ - _test_myCollection: "true", - _test__myCollection_group_stupidPeople: "[1,2]", - _test__myCollection_group_default: "[2,1,3]", + _test_myCollection: 'true', + _test__myCollection_group_stupidPeople: '[1,2]', + _test__myCollection_group_default: '[2,1,3]', _test__myCollection_item_2: '{"id":2,"name":"hans"}', _test__myCollection_item_1: '{"id":1,"name":"frank"}', _test__myCollection_item_3: '{"id":3,"name":"günter"}', @@ -110,13 +110,13 @@ describe("Collection Persist Function Tests", () => { expect(storageMethods.remove).toHaveBeenCalledTimes(0); // Test updating Item - MY_COLLECTION.update(3, { name: "Benno" }); + MY_COLLECTION.update(3, {name: 'Benno'}); await new Promise((resolve) => setTimeout(resolve, 100)); expect(myStorage).toStrictEqual({ - _test_myCollection: "true", - _test__myCollection_group_stupidPeople: "[1,2]", - _test__myCollection_group_default: "[2,1,3]", + _test_myCollection: 'true', + _test__myCollection_group_stupidPeople: '[1,2]', + _test__myCollection_group_default: '[2,1,3]', _test__myCollection_item_2: '{"id":2,"name":"hans"}', _test__myCollection_item_1: '{"id":1,"name":"frank"}', _test__myCollection_item_3: '{"id":3,"name":"Benno"}', @@ -126,13 +126,13 @@ describe("Collection Persist Function Tests", () => { expect(storageMethods.remove).toHaveBeenCalledTimes(0); // Test updating Item with ItemKey - MY_COLLECTION.update(1, { id: 37, name: "Arne" }); + MY_COLLECTION.update(1, {id: 37, name: 'Arne'}); await new Promise((resolve) => setTimeout(resolve, 100)); expect(myStorage).toStrictEqual({ - _test_myCollection: "true", - _test__myCollection_group_stupidPeople: "[37,2]", - _test__myCollection_group_default: "[2,37,3]", + _test_myCollection: 'true', + _test__myCollection_group_stupidPeople: '[37,2]', + _test__myCollection_group_default: '[2,37,3]', _test__myCollection_item_2: '{"id":2,"name":"hans"}', _test__myCollection_item_37: '{"id":37,"name":"Arne"}', _test__myCollection_item_3: '{"id":3,"name":"Benno"}', @@ -142,39 +142,39 @@ describe("Collection Persist Function Tests", () => { expect(storageMethods.remove).toHaveBeenCalledTimes(1); }); - it("Can load persisted Collection", async () => { + it('Can load persisted Collection', async () => { // Create Collection const MY_COLLECTION = App.Collection(); // Load persisted Value - MY_COLLECTION.persist("myCollection"); + MY_COLLECTION.persist('myCollection'); await new Promise((resolve) => setTimeout(resolve, 100)); expect(myStorage).toStrictEqual({ - _test_myCollection: "true", - _test__myCollection_group_stupidPeople: "[37,2]", - _test__myCollection_group_default: "[2,37,3]", + _test_myCollection: 'true', + _test__myCollection_group_stupidPeople: '[37,2]', + _test__myCollection_group_default: '[2,37,3]', _test__myCollection_item_2: '{"id":2,"name":"hans"}', _test__myCollection_item_37: '{"id":37,"name":"Arne"}', _test__myCollection_item_3: '{"id":3,"name":"Benno"}', }); expect(MY_COLLECTION.isPersisted).toBeTruthy(); expect(MY_COLLECTION.size).toBe(3); - expect(MY_COLLECTION.data["2"]).toBeInstanceOf(Item); - expect(MY_COLLECTION.data["37"]).toBeInstanceOf(Item); - expect(MY_COLLECTION.data["3"]).toBeInstanceOf(Item); + expect(MY_COLLECTION.data['2']).toBeInstanceOf(Item); + expect(MY_COLLECTION.data['37']).toBeInstanceOf(Item); + expect(MY_COLLECTION.data['3']).toBeInstanceOf(Item); // Updating some Collection Stuff - MY_COLLECTION.update(3, { name: "Angela" }); - MY_COLLECTION.collect({ id: 4, name: "Paul" }); - MY_COLLECTION.collect({ id: 99, name: "Jeff" }); + MY_COLLECTION.update(3, {name: 'Angela'}); + MY_COLLECTION.collect({id: 4, name: 'Paul'}); + MY_COLLECTION.collect({id: 99, name: 'Jeff'}); await new Promise((resolve) => setTimeout(resolve, 100)); expect(myStorage).toStrictEqual({ - _test_myCollection: "true", - _test__myCollection_group_default: "[2,37,3,4,99]", + _test_myCollection: 'true', + _test__myCollection_group_default: '[2,37,3,4,99]', _test__myCollection_item_2: '{"id":2,"name":"hans"}', - _test__myCollection_group_stupidPeople: "[37,2]", + _test__myCollection_group_stupidPeople: '[37,2]', _test__myCollection_item_3: '{"id":3,"name":"Angela"}', _test__myCollection_item_37: '{"id":37,"name":"Arne"}', _test__myCollection_item_4: '{"id":4,"name":"Paul"}', @@ -186,29 +186,29 @@ describe("Collection Persist Function Tests", () => { await new Promise((resolve) => setTimeout(resolve, 100)); expect(myStorage).toStrictEqual({ - _test_myCollection: "true", - _test__myCollection_group_default: "[2,37,4,99]", + _test_myCollection: 'true', + _test__myCollection_group_default: '[2,37,4,99]', _test__myCollection_item_2: '{"id":2,"name":"hans"}', - _test__myCollection_group_stupidPeople: "[37,2]", + _test__myCollection_group_stupidPeople: '[37,2]', _test__myCollection_item_37: '{"id":37,"name":"Arne"}', _test__myCollection_item_4: '{"id":4,"name":"Paul"}', _test__myCollection_item_99: '{"id":99,"name":"Jeff"}', }); }); - it("Can remove persisted Collection", async () => { + it('Can remove persisted Collection', async () => { // Create Collection const MY_COLLECTION = App.Collection(); // Load persisted Value - MY_COLLECTION.persist("myCollection"); + MY_COLLECTION.persist('myCollection'); await new Promise((resolve) => setTimeout(resolve, 100)); expect(myStorage).toStrictEqual({ - _test_myCollection: "true", - _test__myCollection_group_default: "[2,37,4,99]", + _test_myCollection: 'true', + _test__myCollection_group_default: '[2,37,4,99]', _test__myCollection_item_2: '{"id":2,"name":"hans"}', - _test__myCollection_group_stupidPeople: "[37,2]", + _test__myCollection_group_stupidPeople: '[37,2]', _test__myCollection_item_37: '{"id":37,"name":"Arne"}', _test__myCollection_item_4: '{"id":4,"name":"Paul"}', _test__myCollection_item_99: '{"id":99,"name":"Jeff"}', @@ -219,7 +219,7 @@ describe("Collection Persist Function Tests", () => { await new Promise((resolve) => setTimeout(resolve, 100)); expect(myStorage).toStrictEqual({ - _test__myCollection_group_stupidPeople: "[37,2]", + _test__myCollection_group_stupidPeople: '[37,2]', }); }); }); diff --git a/packages/core/tests/unit/agile.test.ts b/packages/core/tests/unit/agile.test.ts index c95fb200..8db34386 100644 --- a/packages/core/tests/unit/agile.test.ts +++ b/packages/core/tests/unit/agile.test.ts @@ -10,17 +10,17 @@ import { Collection, Logger, Storages, -} from "../../src"; -import testIntegration from "../helper/test.integration"; - -jest.mock("../../src/runtime/index"); -jest.mock("../../src/runtime/subscription/sub.controller"); -jest.mock("../../src/storages/index"); -jest.mock("../../src/integrations/index"); -jest.mock("../../src/storages/storage"); -jest.mock("../../src/collection/index"); -jest.mock("../../src/computed/index"); -jest.mock("../../src/event/index"); +} from '../../src'; +import testIntegration from '../helper/test.integration'; + +jest.mock('../../src/runtime/index'); +jest.mock('../../src/runtime/subscription/sub.controller'); +jest.mock('../../src/storages/index'); +jest.mock('../../src/integrations/index'); +jest.mock('../../src/storages/storage'); +jest.mock('../../src/collection/index'); +jest.mock('../../src/computed/index'); +jest.mock('../../src/event/index'); /* Can't mock Logger because I somehow can't overwrite a static get method jest.mock("../../src/logger/index", () => { return class { @@ -40,7 +40,7 @@ jest.mock("../../src/logger/index", () => { */ // jest.mock("../../src/state/index"); // Can't mock State because mocks get instantiated before everything else -> I got the good old not loaded Object error https://github.com/kentcdodds/how-jest-mocking-works -describe("Agile Tests", () => { +describe('Agile Tests', () => { const RuntimeMock = Runtime as jest.MockedClass; const SubControllerMock = SubController as jest.MockedClass< typeof SubController @@ -57,10 +57,10 @@ describe("Agile Tests", () => { IntegrationsMock.mockClear(); // Reset Global This - globalThis["__agile__"] = undefined; + globalThis['__agile__'] = undefined; }); - it("should instantiate Agile (default config)", () => { + it('should instantiate Agile (default config)', () => { const agile = new Agile(); // Check if Agile properties got instantiated properly @@ -80,30 +80,30 @@ describe("Agile Tests", () => { // Check if Static Logger has correct config expect(Agile.logger.config).toStrictEqual({ - prefix: "Agile", + prefix: 'Agile', level: Logger.level.WARN, canUseCustomStyles: true, }); expect(Agile.logger.allowedTags).toStrictEqual([ - "runtime", - "storage", - "subscription", - "multieditor", + 'runtime', + 'storage', + 'subscription', + 'multieditor', ]); expect(Agile.logger.isActive).toBeTruthy(); // Check if global Agile Instance got created - expect(globalThis["__agile__"]).toBe(agile); + expect(globalThis['__agile__']).toBe(agile); }); - it("should instantiate Agile with specific config", () => { + it('should instantiate Agile with specific config', () => { const agile = new Agile({ waitForMount: true, localStorage: false, logConfig: { level: Logger.level.DEBUG, active: false, - prefix: "Jeff", + prefix: 'Jeff', }, }); @@ -124,45 +124,45 @@ describe("Agile Tests", () => { // Check if Static Logger has correct config expect(Agile.logger.config).toStrictEqual({ - prefix: "Jeff", + prefix: 'Jeff', level: Logger.level.DEBUG, canUseCustomStyles: true, }); expect(Agile.logger.allowedTags).toStrictEqual([ - "runtime", - "storage", - "subscription", - "multieditor", + 'runtime', + 'storage', + 'subscription', + 'multieditor', ]); expect(Agile.logger.isActive).toBeFalsy(); // Check if global Agile Instance got created - expect(globalThis["__agile__"]).toBe(agile); + expect(globalThis['__agile__']).toBe(agile); }); - describe("Agile Function Tests", () => { + describe('Agile Function Tests', () => { let agile: Agile; beforeEach(() => { agile = new Agile(); }); - describe("storage function tests", () => { + describe('storage function tests', () => { const StorageMock = Storage as jest.MockedClass; beforeEach(() => { StorageMock.mockClear(); }); - it("should create Storage", () => { + it('should create Storage', () => { const storageConfig = { - prefix: "test", + prefix: 'test', methods: { get: () => {}, set: () => {}, remove: () => {}, }, - key: "myTestStorage", + key: 'myTestStorage', }; const storage = agile.Storage(storageConfig); @@ -171,29 +171,29 @@ describe("Agile Tests", () => { }); }); - describe("state function tests", () => { - it("should create State", () => { - const state = agile.State("testValue", { - key: "myCoolState", + describe('state function tests', () => { + it('should create State', () => { + const state = agile.State('testValue', { + key: 'myCoolState', }); expect(state).toBeInstanceOf(State); }); }); - describe("collection function tests", () => { + describe('collection function tests', () => { const CollectionMock = Collection as jest.MockedClass; beforeEach(() => { CollectionMock.mockClear(); }); - it("should create Collection", () => { + it('should create Collection', () => { const collectionConfig = { - selectors: ["test", "test1"], - groups: ["test2", "test10"], - defaultGroupKey: "frank", - key: "myCoolCollection", + selectors: ['test', 'test1'], + groups: ['test2', 'test10'], + defaultGroupKey: 'frank', + key: 'myCoolCollection', }; const collection = agile.Collection(collectionConfig); @@ -203,14 +203,14 @@ describe("Agile Tests", () => { }); }); - describe("computed function tests", () => { + describe('computed function tests', () => { const ComputedMock = Computed as jest.MockedClass; beforeEach(() => { ComputedMock.mockClear(); }); - it("should create Computed", () => { + it('should create Computed', () => { const computedFunction = () => { // console.log("Hello Jeff"); }; @@ -224,19 +224,19 @@ describe("Agile Tests", () => { }); }); - describe("event function tests", () => { + describe('event function tests', () => { const EventMock = Event as jest.MockedClass; beforeEach(() => { EventMock.mockClear(); }); - it("should create Event", () => { + it('should create Event', () => { const eventConfig = { rerender: true, delay: 1000, enabled: true, - key: "myCoolEvent", + key: 'myCoolEvent', }; const event = agile.Event(eventConfig); @@ -246,27 +246,27 @@ describe("Agile Tests", () => { }); }); - describe("integrate function tests", () => { - it("should integrate provided Framework", () => { + describe('integrate function tests', () => { + it('should integrate provided Framework', () => { const returnedAgile = agile.integrate(testIntegration); expect(returnedAgile).toBe(agile); expect(agile.integrations.integrate).toHaveBeenCalledWith( - testIntegration + testIntegration, ); }); }); - describe("registerStorage function tests", () => { - it("should register provided Storage", () => { + describe('registerStorage function tests', () => { + it('should register provided Storage', () => { const dummyStorage = new Storage({ - prefix: "test", + prefix: 'test', methods: { get: () => {}, set: () => {}, remove: () => {}, }, - key: "myTestStorage", + key: 'myTestStorage', }); const returnedAgile = agile.registerStorage(dummyStorage, { @@ -280,16 +280,16 @@ describe("Agile Tests", () => { }); }); - describe("hasIntegration function tests", () => { - it("should check if Agile has any registered Integration", () => { + describe('hasIntegration function tests', () => { + it('should check if Agile has any registered Integration', () => { agile.hasIntegration(); expect(agile.integrations.hasIntegration).toHaveBeenCalled(); }); }); - describe("hasStorage function tests", () => { - it("should check if Agile has any registered Storage", () => { + describe('hasStorage function tests', () => { + it('should check if Agile has any registered Storage', () => { agile.hasStorage(); expect(agile.storages.hasStorage).toHaveBeenCalled(); diff --git a/packages/core/tests/unit/collection/collection.persistent.test.ts b/packages/core/tests/unit/collection/collection.persistent.test.ts index 9d5ece58..c8d57224 100644 --- a/packages/core/tests/unit/collection/collection.persistent.test.ts +++ b/packages/core/tests/unit/collection/collection.persistent.test.ts @@ -7,9 +7,9 @@ import { StatePersistent, Group, Item, -} from "../../../src"; +} from '../../../src'; -describe("CollectionPersistent Tests", () => { +describe('CollectionPersistent Tests', () => { interface ItemInterface { id: string; name: string; @@ -21,13 +21,13 @@ describe("CollectionPersistent Tests", () => { beforeEach(() => { jest.clearAllMocks(); - dummyAgile = new Agile({ localStorage: false }); + dummyAgile = new Agile({localStorage: false}); dummyCollection = new Collection(dummyAgile, { - key: "dummyCollectionKey", + key: 'dummyCollectionKey', }); - jest.spyOn(CollectionPersistent.prototype, "instantiatePersistent"); - jest.spyOn(CollectionPersistent.prototype, "initialLoading"); + jest.spyOn(CollectionPersistent.prototype, 'instantiatePersistent'); + jest.spyOn(CollectionPersistent.prototype, 'initialLoading'); console.error = jest.fn(); console.warn = jest.fn(); }); @@ -35,7 +35,7 @@ describe("CollectionPersistent Tests", () => { it("should create CollectionPersistent and shouldn't call initialLoading if Persistent isn't ready (default config)", () => { // Overwrite instantiatePersistent once to not call it and set ready property jest - .spyOn(CollectionPersistent.prototype, "instantiatePersistent") + .spyOn(CollectionPersistent.prototype, 'instantiatePersistent') .mockImplementationOnce(function () { this.ready = false; }); @@ -61,20 +61,20 @@ describe("CollectionPersistent Tests", () => { it("should create CollectionPersistent and shouldn't call initialLoading if Persistent isn't ready (specific config)", () => { // Overwrite instantiatePersistent once to not call it and set ready property jest - .spyOn(CollectionPersistent.prototype, "instantiatePersistent") + .spyOn(CollectionPersistent.prototype, 'instantiatePersistent') .mockImplementationOnce(function () { this.ready = false; }); const collectionPersistent = new CollectionPersistent(dummyCollection, { - key: "collectionPersistentKey", - storageKeys: ["test1", "test2"], + key: 'collectionPersistentKey', + storageKeys: ['test1', 'test2'], }); expect(collectionPersistent).toBeInstanceOf(CollectionPersistent); expect(collectionPersistent.instantiatePersistent).toHaveBeenCalledWith({ - key: "collectionPersistentKey", - storageKeys: ["test1", "test2"], + key: 'collectionPersistentKey', + storageKeys: ['test1', 'test2'], }); expect(collectionPersistent.initialLoading).not.toHaveBeenCalled(); @@ -86,10 +86,10 @@ describe("CollectionPersistent Tests", () => { expect(collectionPersistent.defaultStorageKey).toBeUndefined(); }); - it("should create CollectionPersistent and should call initialLoading if Persistent is ready (default config)", () => { + it('should create CollectionPersistent and should call initialLoading if Persistent is ready (default config)', () => { // Overwrite instantiatePersistent once to not call it jest - .spyOn(CollectionPersistent.prototype, "instantiatePersistent") + .spyOn(CollectionPersistent.prototype, 'instantiatePersistent') .mockImplementationOnce(function () { this.ready = true; }); @@ -102,7 +102,7 @@ describe("CollectionPersistent Tests", () => { it("should create CollectionPersistent and shouldn't call initialLoading if Persistent is ready (config.instantiate = false)", () => { // Overwrite instantiatePersistent once to not call it and set ready property jest - .spyOn(CollectionPersistent.prototype, "instantiatePersistent") + .spyOn(CollectionPersistent.prototype, 'instantiatePersistent') .mockImplementationOnce(function () { this.ready = true; }); @@ -114,7 +114,7 @@ describe("CollectionPersistent Tests", () => { expect(collectionPersistent.initialLoading).not.toHaveBeenCalled(); }); - describe("CollectionPersistent Function Tests", () => { + describe('CollectionPersistent Function Tests', () => { let collectionPersistent: CollectionPersistent; let dummyItem1: Item; let dummyItem2: Item; @@ -123,126 +123,126 @@ describe("CollectionPersistent Tests", () => { beforeEach(() => { collectionPersistent = new CollectionPersistent(dummyCollection, { - key: "collectionPersistentKey", - storageKeys: ["dummyStorage"], + key: 'collectionPersistentKey', + storageKeys: ['dummyStorage'], }); dummyAgile.registerStorage( new Storage({ - key: "dummyStorage", + key: 'dummyStorage', methods: { get: jest.fn(), remove: jest.fn(), set: jest.fn(), }, - }) + }), ); dummyItem1 = new Item(dummyCollection, { - id: "1", - name: "frank", + id: '1', + name: 'frank', }); dummyItem1.persistent = new StatePersistent(dummyItem1); dummyItem2 = new Item(dummyCollection, { - id: "2", - name: "dieter", + id: '2', + name: 'dieter', }); dummyItem2.persistent = new StatePersistent(dummyItem2); dummyItem3 = new Item(dummyCollection, { - id: "3", - name: "hans", + id: '3', + name: 'hans', }); dummyItem3.persistent = new StatePersistent(dummyItem3); dummyItem4WithoutPersistent = new Item(dummyCollection, { - id: "4", - name: "jeff", + id: '4', + name: 'jeff', }); }); - describe("setKey function tests", () => { + describe('setKey function tests', () => { beforeEach(() => { collectionPersistent.removePersistedValue = jest.fn(); collectionPersistent.persistValue = jest.fn(); collectionPersistent.initialLoading = jest.fn(); - jest.spyOn(collectionPersistent, "validatePersistent"); + jest.spyOn(collectionPersistent, 'validatePersistent'); }); - it("should update key with valid key in ready Persistent", async () => { + it('should update key with valid key in ready Persistent', async () => { collectionPersistent.ready = true; - collectionPersistent._key = "dummyKey"; + collectionPersistent._key = 'dummyKey'; - await collectionPersistent.setKey("newKey"); + await collectionPersistent.setKey('newKey'); - expect(collectionPersistent._key).toBe("newKey"); + expect(collectionPersistent._key).toBe('newKey'); expect(collectionPersistent.ready).toBeTruthy(); expect(collectionPersistent.validatePersistent).toHaveBeenCalled(); expect(collectionPersistent.initialLoading).not.toHaveBeenCalled(); expect(collectionPersistent.persistValue).toHaveBeenCalledWith( - "newKey" + 'newKey', ); expect(collectionPersistent.removePersistedValue).toHaveBeenCalledWith( - "dummyKey" + 'dummyKey', ); }); - it("should update key with not valid key in ready Persistent", async () => { + it('should update key with not valid key in ready Persistent', async () => { collectionPersistent.ready = true; - collectionPersistent._key = "dummyKey"; + collectionPersistent._key = 'dummyKey'; await collectionPersistent.setKey(); expect(collectionPersistent._key).toBe( - CollectionPersistent.placeHolderKey + CollectionPersistent.placeHolderKey, ); expect(collectionPersistent.ready).toBeFalsy(); expect(collectionPersistent.validatePersistent).toHaveBeenCalled(); expect(collectionPersistent.initialLoading).not.toHaveBeenCalled(); expect(collectionPersistent.persistValue).not.toHaveBeenCalled(); expect(collectionPersistent.removePersistedValue).toHaveBeenCalledWith( - "dummyKey" + 'dummyKey', ); }); - it("should update key with valid key in not ready Persistent", async () => { + it('should update key with valid key in not ready Persistent', async () => { collectionPersistent.ready = false; - await collectionPersistent.setKey("newKey"); + await collectionPersistent.setKey('newKey'); - expect(collectionPersistent._key).toBe("newKey"); + expect(collectionPersistent._key).toBe('newKey'); expect(collectionPersistent.ready).toBeTruthy(); expect(collectionPersistent.validatePersistent).toHaveBeenCalled(); expect(collectionPersistent.initialLoading).toHaveBeenCalled(); expect(collectionPersistent.persistValue).not.toHaveBeenCalled(); expect( - collectionPersistent.removePersistedValue + collectionPersistent.removePersistedValue, ).not.toHaveBeenCalled(); }); - it("should update key with not valid key in not ready Persistent", async () => { + it('should update key with not valid key in not ready Persistent', async () => { collectionPersistent.ready = false; await collectionPersistent.setKey(); expect(collectionPersistent._key).toBe( - CollectionPersistent.placeHolderKey + CollectionPersistent.placeHolderKey, ); expect(collectionPersistent.ready).toBeFalsy(); expect(collectionPersistent.validatePersistent).toHaveBeenCalled(); expect(collectionPersistent.initialLoading).not.toHaveBeenCalled(); expect(collectionPersistent.persistValue).not.toHaveBeenCalled(); expect( - collectionPersistent.removePersistedValue + collectionPersistent.removePersistedValue, ).not.toHaveBeenCalled(); }); }); - describe("initialLoading function tests", () => { + describe('initialLoading function tests', () => { beforeEach(() => { - jest.spyOn(Persistent.prototype, "initialLoading"); + jest.spyOn(Persistent.prototype, 'initialLoading'); }); - it("should initialLoad and set isPersisted in Collection to true", async () => { + it('should initialLoad and set isPersisted in Collection to true', async () => { await collectionPersistent.initialLoading(); expect(Persistent.prototype.initialLoading).toHaveBeenCalled(); @@ -250,13 +250,13 @@ describe("CollectionPersistent Tests", () => { }); }); - describe("loadPersistedValue function tests", () => { + describe('loadPersistedValue function tests', () => { let dummyDefaultGroup: Group; beforeEach(() => { - collectionPersistent.defaultStorageKey = "test"; + collectionPersistent.defaultStorageKey = 'test'; - dummyDefaultGroup = new Group(dummyCollection, ["1", "2", "3"]); + dummyDefaultGroup = new Group(dummyCollection, ['1', '2', '3']); dummyDefaultGroup.persistent = new StatePersistent(dummyDefaultGroup); dummyDefaultGroup.persistent.ready = true; @@ -268,14 +268,14 @@ describe("CollectionPersistent Tests", () => { dummyCollection.collect = jest.fn(); }); - it("should load default Group and its Items with the persistentKey and apply it to the Collection if loading was successful", async () => { + it('should load default Group and its Items with the persistentKey and apply it to the Collection if loading was successful', async () => { collectionPersistent.ready = true; dummyAgile.storages.get = jest .fn() .mockReturnValueOnce(Promise.resolve(true)) - .mockReturnValueOnce({ id: "1", name: "hans" }) + .mockReturnValueOnce({id: '1', name: 'hans'}) .mockReturnValueOnce(undefined) - .mockReturnValueOnce({ id: "3", name: "frank" }); + .mockReturnValueOnce({id: '3', name: 'frank'}); dummyCollection.getGroup = jest.fn(() => dummyDefaultGroup as any); const response = await collectionPersistent.loadPersistedValue(); @@ -283,33 +283,33 @@ describe("CollectionPersistent Tests", () => { expect(response).toBeTruthy(); expect(dummyCollection.getGroup).toHaveBeenCalledWith( - dummyCollection.config.defaultGroupKey + dummyCollection.config.defaultGroupKey, ); expect(dummyAgile.storages.get).toHaveBeenCalledWith( collectionPersistent._key, - collectionPersistent.defaultStorageKey + collectionPersistent.defaultStorageKey, ); expect(dummyAgile.storages.get).toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( - "1", - collectionPersistent._key + '1', + collectionPersistent._key, ), - collectionPersistent.defaultStorageKey + collectionPersistent.defaultStorageKey, ); expect(dummyAgile.storages.get).toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( - "2", - collectionPersistent._key + '2', + collectionPersistent._key, ), - collectionPersistent.defaultStorageKey + collectionPersistent.defaultStorageKey, ); expect(dummyAgile.storages.get).toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( - "3", - collectionPersistent._key + '3', + collectionPersistent._key, ), - collectionPersistent.defaultStorageKey + collectionPersistent.defaultStorageKey, ); expect(dummyDefaultGroup.persist).toHaveBeenCalledWith({ @@ -320,17 +320,17 @@ describe("CollectionPersistent Tests", () => { expect(dummyDefaultGroup.isPersisted).toBeTruthy(); expect(dummyCollection.collect).toHaveBeenCalledWith({ - id: "1", - name: "hans", + id: '1', + name: 'hans', }); expect(dummyCollection.collect).not.toHaveBeenCalledWith(undefined); expect(dummyCollection.collect).toHaveBeenCalledWith({ - id: "3", - name: "frank", + id: '3', + name: 'frank', }); expect(collectionPersistent.persistValue).toHaveBeenCalledWith( - collectionPersistent._key + collectionPersistent._key, ); }); @@ -349,33 +349,33 @@ describe("CollectionPersistent Tests", () => { expect(dummyAgile.storages.get).toHaveBeenCalledWith( collectionPersistent._key, - collectionPersistent.defaultStorageKey + collectionPersistent.defaultStorageKey, ); expect(dummyAgile.storages.get).not.toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( - "1", - collectionPersistent._key + '1', + collectionPersistent._key, ), - collectionPersistent.defaultStorageKey + collectionPersistent.defaultStorageKey, ); expect(dummyAgile.storages.get).not.toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( - "2", - collectionPersistent._key + '2', + collectionPersistent._key, ), - collectionPersistent.defaultStorageKey + collectionPersistent.defaultStorageKey, ); expect(dummyAgile.storages.get).not.toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( - "3", - collectionPersistent._key + '3', + collectionPersistent._key, ), - collectionPersistent.defaultStorageKey + collectionPersistent.defaultStorageKey, ); expect(dummyDefaultGroup.persist).not.toHaveBeenCalled(); expect( - dummyDefaultGroup.persistent.initialLoading + dummyDefaultGroup.persistent.initialLoading, ).not.toHaveBeenCalled(); expect(dummyDefaultGroup.isPersisted).toBeFalsy(); @@ -384,41 +384,41 @@ describe("CollectionPersistent Tests", () => { expect(collectionPersistent.persistValue).not.toHaveBeenCalled(); }); - it("should load default Group and its Items with a specific Key and should apply it to the Collection if loading was successful", async () => { + it('should load default Group and its Items with a specific Key and should apply it to the Collection if loading was successful', async () => { collectionPersistent.ready = true; dummyAgile.storages.get = jest .fn() .mockReturnValueOnce(Promise.resolve(true)) - .mockReturnValueOnce({ id: "1", name: "hans" }) + .mockReturnValueOnce({id: '1', name: 'hans'}) .mockReturnValueOnce(undefined) - .mockReturnValueOnce({ id: "3", name: "frank" }); + .mockReturnValueOnce({id: '3', name: 'frank'}); dummyCollection.getGroup = jest.fn(() => dummyDefaultGroup as any); const response = await collectionPersistent.loadPersistedValue( - "dummyKey" + 'dummyKey', ); expect(response).toBeTruthy(); expect(dummyCollection.getGroup).toHaveBeenCalledWith( - dummyCollection.config.defaultGroupKey + dummyCollection.config.defaultGroupKey, ); expect(dummyAgile.storages.get).toHaveBeenCalledWith( - "dummyKey", - collectionPersistent.defaultStorageKey + 'dummyKey', + collectionPersistent.defaultStorageKey, ); expect(dummyAgile.storages.get).toHaveBeenCalledWith( - CollectionPersistent.getItemStorageKey("1", "dummyKey"), - collectionPersistent.defaultStorageKey + CollectionPersistent.getItemStorageKey('1', 'dummyKey'), + collectionPersistent.defaultStorageKey, ); expect(dummyAgile.storages.get).toHaveBeenCalledWith( - CollectionPersistent.getItemStorageKey("2", "dummyKey"), - collectionPersistent.defaultStorageKey + CollectionPersistent.getItemStorageKey('2', 'dummyKey'), + collectionPersistent.defaultStorageKey, ); expect(dummyAgile.storages.get).toHaveBeenCalledWith( - CollectionPersistent.getItemStorageKey("3", "dummyKey"), - collectionPersistent.defaultStorageKey + CollectionPersistent.getItemStorageKey('3', 'dummyKey'), + collectionPersistent.defaultStorageKey, ); expect(dummyDefaultGroup.persist).toHaveBeenCalledWith({ @@ -429,24 +429,24 @@ describe("CollectionPersistent Tests", () => { expect(dummyDefaultGroup.isPersisted).toBeTruthy(); expect(dummyCollection.collect).toHaveBeenCalledWith({ - id: "1", - name: "hans", + id: '1', + name: 'hans', }); expect(dummyCollection.collect).not.toHaveBeenCalledWith(undefined); expect(dummyCollection.collect).toHaveBeenCalledWith({ - id: "3", - name: "frank", + id: '3', + name: 'frank', }); expect(collectionPersistent.persistValue).toHaveBeenCalledWith( - "dummyKey" + 'dummyKey', ); }); it("shouldn't load default Group and its Items if Persistent isn't ready", async () => { collectionPersistent.ready = false; dummyAgile.storages.get = jest.fn(() => - Promise.resolve(undefined as any) + Promise.resolve(undefined as any), ); dummyCollection.getGroup = jest.fn(() => dummyDefaultGroup as any); @@ -460,7 +460,7 @@ describe("CollectionPersistent Tests", () => { expect(dummyDefaultGroup.persist).not.toHaveBeenCalled(); expect( - dummyDefaultGroup.persistent.initialLoading + dummyDefaultGroup.persistent.initialLoading, ).not.toHaveBeenCalled(); expect(dummyDefaultGroup.isPersisted).toBeFalsy(); @@ -482,38 +482,38 @@ describe("CollectionPersistent Tests", () => { expect(response).toBeFalsy(); expect(dummyCollection.getGroup).toHaveBeenCalledWith( - dummyCollection.config.defaultGroupKey + dummyCollection.config.defaultGroupKey, ); expect(dummyAgile.storages.get).toHaveBeenCalledWith( collectionPersistent._key, - collectionPersistent.defaultStorageKey + collectionPersistent.defaultStorageKey, ); expect(dummyAgile.storages.get).not.toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( - "1", - collectionPersistent._key + '1', + collectionPersistent._key, ), - collectionPersistent.defaultStorageKey + collectionPersistent.defaultStorageKey, ); expect(dummyAgile.storages.get).not.toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( - "2", - collectionPersistent._key + '2', + collectionPersistent._key, ), - collectionPersistent.defaultStorageKey + collectionPersistent.defaultStorageKey, ); expect(dummyAgile.storages.get).not.toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( - "3", - collectionPersistent._key + '3', + collectionPersistent._key, ), - collectionPersistent.defaultStorageKey + collectionPersistent.defaultStorageKey, ); expect(dummyDefaultGroup.persist).not.toHaveBeenCalled(); expect( - dummyDefaultGroup.persistent.initialLoading + dummyDefaultGroup.persistent.initialLoading, ).not.toHaveBeenCalled(); expect(dummyDefaultGroup.isPersisted).toBeFalsy(); @@ -523,21 +523,21 @@ describe("CollectionPersistent Tests", () => { }); }); - describe("persistValue function tests", () => { + describe('persistValue function tests', () => { let dummyDefaultGroup: Group; beforeEach(() => { - collectionPersistent.storageKeys = ["test1", "test2"]; + collectionPersistent.storageKeys = ['test1', 'test2']; collectionPersistent.isPersisted = undefined; - dummyDefaultGroup = new Group(dummyCollection, ["1", "2", "3"]); + dummyDefaultGroup = new Group(dummyCollection, ['1', '2', '3']); dummyCollection.data = { - ["1"]: dummyItem1, - ["3"]: dummyItem3, + ['1']: dummyItem1, + ['3']: dummyItem3, }; dummyDefaultGroup.persist = jest.fn(); - jest.spyOn(dummyDefaultGroup, "addSideEffect"); + jest.spyOn(dummyDefaultGroup, 'addSideEffect'); dummyItem1.persist = jest.fn(); dummyItem3.persist = jest.fn(); @@ -547,7 +547,7 @@ describe("CollectionPersistent Tests", () => { dummyAgile.storages.set = jest.fn(); }); - it("should persist defaultGroup and its Items with persistentKey", async () => { + it('should persist defaultGroup and its Items with persistentKey', async () => { collectionPersistent.ready = true; dummyCollection.getGroup = jest.fn(() => dummyDefaultGroup as any); @@ -558,66 +558,66 @@ describe("CollectionPersistent Tests", () => { expect(dummyAgile.storages.set).toHaveBeenCalledWith( collectionPersistent._key, true, - collectionPersistent.storageKeys + collectionPersistent.storageKeys, ); expect(dummyCollection.getGroup).toHaveBeenCalledWith( - dummyCollection.config.defaultGroupKey + dummyCollection.config.defaultGroupKey, ); expect(dummyDefaultGroup.persist).toHaveBeenCalledWith({ followCollectionPersistKeyPattern: true, }); expect(dummyDefaultGroup.addSideEffect).toHaveBeenCalledWith( CollectionPersistent.defaultGroupSideEffectKey, - expect.any(Function) + expect.any(Function), ); expect(dummyItem1.persist).toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( dummyItem1._key, - collectionPersistent._key - ) + collectionPersistent._key, + ), ); expect(dummyItem3.persist).toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( dummyItem3._key, - collectionPersistent._key - ) + collectionPersistent._key, + ), ); expect(collectionPersistent.isPersisted).toBeTruthy(); }); - it("should persist defaultGroup and its Items with specific Key", async () => { + it('should persist defaultGroup and its Items with specific Key', async () => { collectionPersistent.ready = true; dummyCollection.getGroup = jest.fn(() => dummyDefaultGroup as any); - const response = await collectionPersistent.persistValue("dummyKey"); + const response = await collectionPersistent.persistValue('dummyKey'); expect(response).toBeTruthy(); expect(dummyAgile.storages.set).toHaveBeenCalledWith( - "dummyKey", + 'dummyKey', true, - collectionPersistent.storageKeys + collectionPersistent.storageKeys, ); expect(dummyCollection.getGroup).toHaveBeenCalledWith( - dummyCollection.config.defaultGroupKey + dummyCollection.config.defaultGroupKey, ); expect(dummyDefaultGroup.persist).toHaveBeenCalledWith({ followCollectionPersistKeyPattern: true, }); expect(dummyDefaultGroup.addSideEffect).toHaveBeenCalledWith( CollectionPersistent.defaultGroupSideEffectKey, - expect.any(Function) + expect.any(Function), ); expect(dummyItem1.persist).toHaveBeenCalledWith( - CollectionPersistent.getItemStorageKey(dummyItem1._key, "dummyKey") + CollectionPersistent.getItemStorageKey(dummyItem1._key, 'dummyKey'), ); expect(dummyItem3.persist).toHaveBeenCalledWith( - CollectionPersistent.getItemStorageKey(dummyItem3._key, "dummyKey") + CollectionPersistent.getItemStorageKey(dummyItem3._key, 'dummyKey'), ); expect(collectionPersistent.isPersisted).toBeTruthy(); @@ -627,7 +627,7 @@ describe("CollectionPersistent Tests", () => { collectionPersistent.ready = false; dummyCollection.getGroup = jest.fn(() => dummyDefaultGroup as any); - const response = await collectionPersistent.persistValue("dummyKey"); + const response = await collectionPersistent.persistValue('dummyKey'); expect(response).toBeFalsy(); @@ -654,7 +654,7 @@ describe("CollectionPersistent Tests", () => { expect(dummyAgile.storages.set).not.toHaveBeenCalled(); expect(dummyCollection.getGroup).toHaveBeenCalledWith( - dummyCollection.config.defaultGroupKey + dummyCollection.config.defaultGroupKey, ); expect(dummyDefaultGroup.persist).not.toHaveBeenCalled(); expect(dummyDefaultGroup.addSideEffect).not.toHaveBeenCalled(); @@ -665,12 +665,12 @@ describe("CollectionPersistent Tests", () => { expect(collectionPersistent.isPersisted).toBeUndefined(); }); - describe("test added sideEffect called CollectionPersistent.defaultGroupSideEffectKey", () => { + describe('test added sideEffect called CollectionPersistent.defaultGroupSideEffectKey', () => { beforeEach(() => { collectionPersistent.rebuildStorageSideEffect = jest.fn(); }); - it("should call rebuildStorageSideEffect with persistentKey", async () => { + it('should call rebuildStorageSideEffect with persistentKey', async () => { collectionPersistent.ready = true; dummyCollection.getGroup = jest.fn(() => dummyDefaultGroup as any); @@ -681,39 +681,39 @@ describe("CollectionPersistent Tests", () => { ](); expect( - collectionPersistent.rebuildStorageSideEffect + collectionPersistent.rebuildStorageSideEffect, ).toHaveBeenCalledWith(dummyDefaultGroup, collectionPersistent._key); }); - it("should call rebuildStorageSideEffect with specific Key", async () => { + it('should call rebuildStorageSideEffect with specific Key', async () => { collectionPersistent.ready = true; dummyCollection.getGroup = jest.fn(() => dummyDefaultGroup as any); - await collectionPersistent.persistValue("dummyKey"); + await collectionPersistent.persistValue('dummyKey'); dummyDefaultGroup.sideEffects[ CollectionPersistent.defaultGroupSideEffectKey ](); expect( - collectionPersistent.rebuildStorageSideEffect - ).toHaveBeenCalledWith(dummyDefaultGroup, "dummyKey"); + collectionPersistent.rebuildStorageSideEffect, + ).toHaveBeenCalledWith(dummyDefaultGroup, 'dummyKey'); }); }); }); - describe("removePersistedValue function tests", () => { + describe('removePersistedValue function tests', () => { let dummyDefaultGroup: Group; beforeEach(() => { - collectionPersistent.storageKeys = ["test1", "test2"]; + collectionPersistent.storageKeys = ['test1', 'test2']; collectionPersistent.isPersisted = undefined; - dummyDefaultGroup = new Group(dummyCollection, ["1", "2", "3"]); + dummyDefaultGroup = new Group(dummyCollection, ['1', '2', '3']); dummyDefaultGroup.persistent = new StatePersistent(dummyDefaultGroup); dummyCollection.data = { - ["1"]: dummyItem1, - ["3"]: dummyItem3, + ['1']: dummyItem1, + ['3']: dummyItem3, }; dummyDefaultGroup.persistent.removePersistedValue = jest.fn(); @@ -725,7 +725,7 @@ describe("CollectionPersistent Tests", () => { dummyAgile.storages.remove = jest.fn(); }); - it("should remove persisted defaultGroup and its Items from Storage with persistentKey", async () => { + it('should remove persisted defaultGroup and its Items from Storage with persistentKey', async () => { collectionPersistent.ready = true; dummyCollection.getGroup = jest.fn(() => dummyDefaultGroup as any); @@ -735,17 +735,17 @@ describe("CollectionPersistent Tests", () => { expect(dummyAgile.storages.remove).toHaveBeenCalledWith( collectionPersistent._key, - collectionPersistent.storageKeys + collectionPersistent.storageKeys, ); expect(dummyCollection.getGroup).toHaveBeenCalledWith( - dummyCollection.config.defaultGroupKey + dummyCollection.config.defaultGroupKey, ); expect( - dummyDefaultGroup.persistent.removePersistedValue + dummyDefaultGroup.persistent.removePersistedValue, ).toHaveBeenCalled(); expect(dummyDefaultGroup.removeSideEffect).toHaveBeenCalledWith( - CollectionPersistent.defaultGroupSideEffectKey + CollectionPersistent.defaultGroupSideEffectKey, ); expect(dummyItem1.persistent.removePersistedValue).toHaveBeenCalled(); @@ -754,29 +754,29 @@ describe("CollectionPersistent Tests", () => { expect(collectionPersistent.isPersisted).toBeFalsy(); }); - it("should remove persisted defaultGroup and its Items from Storage with specific Key", async () => { + it('should remove persisted defaultGroup and its Items from Storage with specific Key', async () => { collectionPersistent.ready = true; dummyCollection.getGroup = jest.fn(() => dummyDefaultGroup as any); const response = await collectionPersistent.removePersistedValue( - "dummyKey" + 'dummyKey', ); expect(response).toBeTruthy(); expect(dummyAgile.storages.remove).toHaveBeenCalledWith( - "dummyKey", - collectionPersistent.storageKeys + 'dummyKey', + collectionPersistent.storageKeys, ); expect(dummyCollection.getGroup).toHaveBeenCalledWith( - dummyCollection.config.defaultGroupKey + dummyCollection.config.defaultGroupKey, ); expect( - dummyDefaultGroup.persistent.removePersistedValue + dummyDefaultGroup.persistent.removePersistedValue, ).toHaveBeenCalled(); expect(dummyDefaultGroup.removeSideEffect).toHaveBeenCalledWith( - CollectionPersistent.defaultGroupSideEffectKey + CollectionPersistent.defaultGroupSideEffectKey, ); expect(dummyItem1.persistent.removePersistedValue).toHaveBeenCalled(); @@ -797,15 +797,15 @@ describe("CollectionPersistent Tests", () => { expect(dummyCollection.getGroup).not.toHaveBeenCalled(); expect( - dummyDefaultGroup.persistent.removePersistedValue + dummyDefaultGroup.persistent.removePersistedValue, ).not.toHaveBeenCalled(); expect(dummyDefaultGroup.removeSideEffect).not.toHaveBeenCalled(); expect( - dummyItem1.persistent.removePersistedValue + dummyItem1.persistent.removePersistedValue, ).not.toHaveBeenCalled(); expect( - dummyItem3.persistent.removePersistedValue + dummyItem3.persistent.removePersistedValue, ).not.toHaveBeenCalled(); expect(collectionPersistent.isPersisted).toBeUndefined(); @@ -822,51 +822,51 @@ describe("CollectionPersistent Tests", () => { expect(dummyAgile.storages.remove).not.toHaveBeenCalled(); expect(dummyCollection.getGroup).toHaveBeenCalledWith( - dummyCollection.config.defaultGroupKey + dummyCollection.config.defaultGroupKey, ); expect( - dummyDefaultGroup.persistent.removePersistedValue + dummyDefaultGroup.persistent.removePersistedValue, ).not.toHaveBeenCalled(); expect(dummyDefaultGroup.removeSideEffect).not.toHaveBeenCalled(); expect( - dummyItem1.persistent.removePersistedValue + dummyItem1.persistent.removePersistedValue, ).not.toHaveBeenCalled(); expect( - dummyItem3.persistent.removePersistedValue + dummyItem3.persistent.removePersistedValue, ).not.toHaveBeenCalled(); expect(collectionPersistent.isPersisted).toBeUndefined(); }); }); - describe("formatKey function tests", () => { - it("should return key of Collection if no key got passed", () => { - dummyCollection._key = "coolKey"; + describe('formatKey function tests', () => { + it('should return key of Collection if no key got passed', () => { + dummyCollection._key = 'coolKey'; const response = collectionPersistent.formatKey(); - expect(response).toBe("coolKey"); + expect(response).toBe('coolKey'); }); - it("should return passed key", () => { - dummyCollection._key = "coolKey"; + it('should return passed key', () => { + dummyCollection._key = 'coolKey'; - const response = collectionPersistent.formatKey("awesomeKey"); + const response = collectionPersistent.formatKey('awesomeKey'); - expect(response).toBe("awesomeKey"); + expect(response).toBe('awesomeKey'); }); - it("should return and apply passed key to Collection if Collection had no own key before", () => { + it('should return and apply passed key to Collection if Collection had no own key before', () => { dummyCollection._key = undefined; - const response = collectionPersistent.formatKey("awesomeKey"); + const response = collectionPersistent.formatKey('awesomeKey'); - expect(response).toBe("awesomeKey"); - expect(dummyCollection._key).toBe("awesomeKey"); + expect(response).toBe('awesomeKey'); + expect(dummyCollection._key).toBe('awesomeKey'); }); - it("should return undefined if no key got passed and Collection has no key", () => { + it('should return undefined if no key got passed and Collection has no key', () => { dummyCollection._key = undefined; const response = collectionPersistent.formatKey(); @@ -875,16 +875,16 @@ describe("CollectionPersistent Tests", () => { }); }); - describe("rebuildStorageSideEffects function tests", () => { + describe('rebuildStorageSideEffects function tests', () => { let dummyGroup: Group; beforeEach(() => { dummyGroup = new Group(dummyCollection); dummyCollection.data = { - ["1"]: dummyItem1, - ["2"]: dummyItem2, - ["3"]: dummyItem3, - ["4"]: dummyItem4WithoutPersistent, + ['1']: dummyItem1, + ['2']: dummyItem2, + ['3']: dummyItem3, + ['4']: dummyItem4WithoutPersistent, }; dummyCollection.persistent = collectionPersistent; @@ -902,9 +902,9 @@ describe("CollectionPersistent Tests", () => { dummyItem3.persistent.persistValue = jest.fn(); }); - it("should return if no Item got added or removed", () => { - dummyGroup.previousStateValue = ["1", "2", "3"]; - dummyGroup._value = ["1", "2", "3"]; + it('should return if no Item got added or removed', () => { + dummyGroup.previousStateValue = ['1', '2', '3']; + dummyGroup._value = ['1', '2', '3']; collectionPersistent.rebuildStorageSideEffect(dummyGroup); @@ -914,13 +914,13 @@ describe("CollectionPersistent Tests", () => { expect(dummyItem4WithoutPersistent.persist).not.toHaveBeenCalled(); expect( - dummyItem1.persistent.removePersistedValue + dummyItem1.persistent.removePersistedValue, ).not.toHaveBeenCalled(); expect( - dummyItem2.persistent.removePersistedValue + dummyItem2.persistent.removePersistedValue, ).not.toHaveBeenCalled(); expect( - dummyItem3.persistent.removePersistedValue + dummyItem3.persistent.removePersistedValue, ).not.toHaveBeenCalled(); expect(dummyItem1.persistent.persistValue).not.toHaveBeenCalled(); @@ -928,9 +928,9 @@ describe("CollectionPersistent Tests", () => { expect(dummyItem3.persistent.persistValue).not.toHaveBeenCalled(); }); - it("should call removePersistedValue on Items that got removed from Group", () => { - dummyGroup.previousStateValue = ["1", "2", "3"]; - dummyGroup._value = ["2"]; + it('should call removePersistedValue on Items that got removed from Group', () => { + dummyGroup.previousStateValue = ['1', '2', '3']; + dummyGroup._value = ['2']; collectionPersistent.rebuildStorageSideEffect(dummyGroup); @@ -940,13 +940,19 @@ describe("CollectionPersistent Tests", () => { expect(dummyItem4WithoutPersistent.persist).not.toHaveBeenCalled(); expect(dummyItem1.persistent.removePersistedValue).toHaveBeenCalledWith( - CollectionPersistent.getItemStorageKey("1", collectionPersistent._key) + CollectionPersistent.getItemStorageKey( + '1', + collectionPersistent._key, + ), ); expect( - dummyItem2.persistent.removePersistedValue + dummyItem2.persistent.removePersistedValue, ).not.toHaveBeenCalled(); expect(dummyItem3.persistent.removePersistedValue).toHaveBeenCalledWith( - CollectionPersistent.getItemStorageKey("3", collectionPersistent._key) + CollectionPersistent.getItemStorageKey( + '3', + collectionPersistent._key, + ), ); expect(dummyItem1.persistent.persistValue).not.toHaveBeenCalled(); @@ -954,9 +960,9 @@ describe("CollectionPersistent Tests", () => { expect(dummyItem3.persistent.persistValue).not.toHaveBeenCalled(); }); - it("should call persistValue on Items that have a persistent and got added to Group", () => { - dummyGroup.previousStateValue = ["1"]; - dummyGroup._value = ["1", "2", "3"]; + it('should call persistValue on Items that have a persistent and got added to Group', () => { + dummyGroup.previousStateValue = ['1']; + dummyGroup._value = ['1', '2', '3']; collectionPersistent.rebuildStorageSideEffect(dummyGroup); @@ -966,27 +972,33 @@ describe("CollectionPersistent Tests", () => { expect(dummyItem4WithoutPersistent.persist).not.toHaveBeenCalled(); expect( - dummyItem1.persistent.removePersistedValue + dummyItem1.persistent.removePersistedValue, ).not.toHaveBeenCalled(); expect( - dummyItem2.persistent.removePersistedValue + dummyItem2.persistent.removePersistedValue, ).not.toHaveBeenCalled(); expect( - dummyItem3.persistent.removePersistedValue + dummyItem3.persistent.removePersistedValue, ).not.toHaveBeenCalled(); expect(dummyItem1.persistent.persistValue).not.toHaveBeenCalled(); expect(dummyItem2.persistent.persistValue).toHaveBeenCalledWith( - CollectionPersistent.getItemStorageKey("2", collectionPersistent._key) + CollectionPersistent.getItemStorageKey( + '2', + collectionPersistent._key, + ), ); expect(dummyItem3.persistent.persistValue).toHaveBeenCalledWith( - CollectionPersistent.getItemStorageKey("3", collectionPersistent._key) + CollectionPersistent.getItemStorageKey( + '3', + collectionPersistent._key, + ), ); }); - it("should call persist on Items that have no persistent and got added to Group", () => { - dummyGroup.previousStateValue = ["1"]; - dummyGroup._value = ["1", "4"]; + it('should call persist on Items that have no persistent and got added to Group', () => { + dummyGroup.previousStateValue = ['1']; + dummyGroup._value = ['1', '4']; collectionPersistent.rebuildStorageSideEffect(dummyGroup); @@ -994,17 +1006,20 @@ describe("CollectionPersistent Tests", () => { expect(dummyItem2.persist).not.toHaveBeenCalled(); expect(dummyItem3.persist).not.toHaveBeenCalled(); expect(dummyItem4WithoutPersistent.persist).toHaveBeenCalledWith( - CollectionPersistent.getItemStorageKey("4", collectionPersistent._key) + CollectionPersistent.getItemStorageKey( + '4', + collectionPersistent._key, + ), ); expect( - dummyItem1.persistent.removePersistedValue + dummyItem1.persistent.removePersistedValue, ).not.toHaveBeenCalled(); expect( - dummyItem2.persistent.removePersistedValue + dummyItem2.persistent.removePersistedValue, ).not.toHaveBeenCalled(); expect( - dummyItem3.persistent.removePersistedValue + dummyItem3.persistent.removePersistedValue, ).not.toHaveBeenCalled(); expect(dummyItem1.persistent.persistValue).not.toHaveBeenCalled(); @@ -1013,106 +1028,106 @@ describe("CollectionPersistent Tests", () => { }); }); - describe("getItemStorageKey function tests", () => { + describe('getItemStorageKey function tests', () => { beforeEach(() => { console.warn = jest.fn(); }); - it("should build ItemStorageKey out of itemKey and collectionKey", () => { + it('should build ItemStorageKey out of itemKey and collectionKey', () => { const response = CollectionPersistent.getItemStorageKey( - "itemKey", - "collectionKey" + 'itemKey', + 'collectionKey', ); - expect(response).toBe("_collectionKey_item_itemKey"); + expect(response).toBe('_collectionKey_item_itemKey'); expect(console.warn).not.toHaveBeenCalled(); }); - it("should build ItemStorageKey out of collectionKey with warning", () => { + it('should build ItemStorageKey out of collectionKey with warning', () => { const response = CollectionPersistent.getItemStorageKey( undefined, - "collectionKey" + 'collectionKey', ); - expect(response).toBe("_collectionKey_item_unknown"); + expect(response).toBe('_collectionKey_item_unknown'); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Failed to build unique Item StorageKey!" + 'Agile Warn: Failed to build unique Item StorageKey!', ); }); - it("should build ItemStorageKey out of itemKey with warning", () => { + it('should build ItemStorageKey out of itemKey with warning', () => { const response = CollectionPersistent.getItemStorageKey( - "itemKey", - undefined + 'itemKey', + undefined, ); - expect(response).toBe("_unknown_item_itemKey"); + expect(response).toBe('_unknown_item_itemKey'); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Failed to build unique Item StorageKey!" + 'Agile Warn: Failed to build unique Item StorageKey!', ); }); - it("should build ItemStorageKey out of nothing with warning", () => { + it('should build ItemStorageKey out of nothing with warning', () => { const response = CollectionPersistent.getItemStorageKey( undefined, - undefined + undefined, ); - expect(response).toBe("_unknown_item_unknown"); + expect(response).toBe('_unknown_item_unknown'); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Failed to build unique Item StorageKey!" + 'Agile Warn: Failed to build unique Item StorageKey!', ); }); }); - describe("getGroupStorageKey function tests", () => { + describe('getGroupStorageKey function tests', () => { beforeEach(() => { console.warn = jest.fn(); }); - it("should build GroupStorageKey out of groupKey and collectionKey", () => { + it('should build GroupStorageKey out of groupKey and collectionKey', () => { const response = CollectionPersistent.getGroupStorageKey( - "groupKey", - "collectionKey" + 'groupKey', + 'collectionKey', ); - expect(response).toBe("_collectionKey_group_groupKey"); + expect(response).toBe('_collectionKey_group_groupKey'); expect(console.warn).not.toHaveBeenCalled(); }); - it("should build GroupStorageKey out of collectionKey with warning", () => { + it('should build GroupStorageKey out of collectionKey with warning', () => { const response = CollectionPersistent.getGroupStorageKey( undefined, - "collectionKey" + 'collectionKey', ); - expect(response).toBe("_collectionKey_group_unknown"); + expect(response).toBe('_collectionKey_group_unknown'); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Failed to build unique Group StorageKey!" + 'Agile Warn: Failed to build unique Group StorageKey!', ); }); - it("should build GroupStorageKey out of groupKey with warning", () => { + it('should build GroupStorageKey out of groupKey with warning', () => { const response = CollectionPersistent.getGroupStorageKey( - "groupKey", - undefined + 'groupKey', + undefined, ); - expect(response).toBe("_unknown_group_groupKey"); + expect(response).toBe('_unknown_group_groupKey'); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Failed to build unique Group StorageKey!" + 'Agile Warn: Failed to build unique Group StorageKey!', ); }); - it("should build GroupStorageKey out of nothing with warning", () => { + it('should build GroupStorageKey out of nothing with warning', () => { const response = CollectionPersistent.getGroupStorageKey( undefined, - undefined + undefined, ); - expect(response).toBe("_unknown_group_unknown"); + expect(response).toBe('_unknown_group_unknown'); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Failed to build unique Group StorageKey!" + 'Agile Warn: Failed to build unique Group StorageKey!', ); }); }); diff --git a/packages/core/tests/unit/collection/collection.test.ts b/packages/core/tests/unit/collection/collection.test.ts index f46675e3..71854374 100644 --- a/packages/core/tests/unit/collection/collection.test.ts +++ b/packages/core/tests/unit/collection/collection.test.ts @@ -7,11 +7,11 @@ import { CollectionPersistent, ComputedTracker, StatePersistent, -} from "../../../src"; +} from '../../../src'; -jest.mock("../../../src/collection/collection.persistent"); +jest.mock('../../../src/collection/collection.persistent'); -describe("Collection Tests", () => { +describe('Collection Tests', () => { interface ItemInterface { id: string; name: string; @@ -20,28 +20,28 @@ describe("Collection Tests", () => { beforeEach(() => { jest.clearAllMocks(); - dummyAgile = new Agile({ localStorage: false }); + dummyAgile = new Agile({localStorage: false}); - jest.spyOn(Collection.prototype, "initSelectors"); - jest.spyOn(Collection.prototype, "initGroups"); + jest.spyOn(Collection.prototype, 'initSelectors'); + jest.spyOn(Collection.prototype, 'initGroups'); console.error = jest.fn(); console.warn = jest.fn(); }); - it("should create Collection (default config)", () => { + it('should create Collection (default config)', () => { // Overwrite methods once to not call id jest - .spyOn(Collection.prototype, "initSelectors") + .spyOn(Collection.prototype, 'initSelectors') .mockReturnValueOnce(undefined); jest - .spyOn(Collection.prototype, "initGroups") + .spyOn(Collection.prototype, 'initGroups') .mockReturnValueOnce(undefined); const collection = new Collection(dummyAgile); expect(collection.config).toStrictEqual({ - primaryKey: "id", - defaultGroupKey: "default", + primaryKey: 'id', + defaultGroupKey: 'default', }); expect(collection.size).toBe(0); expect(collection.data).toStrictEqual({}); @@ -55,78 +55,78 @@ describe("Collection Tests", () => { expect(Collection.prototype.initSelectors).toHaveBeenCalledWith({}); }); - it("should create Collection (specific config)", () => { + it('should create Collection (specific config)', () => { // Overwrite methods once to not call id jest - .spyOn(Collection.prototype, "initSelectors") + .spyOn(Collection.prototype, 'initSelectors') .mockReturnValueOnce(undefined); jest - .spyOn(Collection.prototype, "initGroups") + .spyOn(Collection.prototype, 'initGroups') .mockReturnValueOnce(undefined); const collection = new Collection(dummyAgile, { - defaultGroupKey: "general", - groups: ["group1", "group2"], - selectors: ["selector1", "selector2"], - key: "dummyCollectionKey", - primaryKey: "key", + defaultGroupKey: 'general', + groups: ['group1', 'group2'], + selectors: ['selector1', 'selector2'], + key: 'dummyCollectionKey', + primaryKey: 'key', }); expect(collection.config).toStrictEqual({ - primaryKey: "key", - defaultGroupKey: "general", + primaryKey: 'key', + defaultGroupKey: 'general', }); expect(collection.size).toBe(0); expect(collection.data).toStrictEqual({}); - expect(collection._key).toBe("dummyCollectionKey"); + expect(collection._key).toBe('dummyCollectionKey'); expect(collection.isPersisted).toBeFalsy(); expect(collection.persistent).toBeUndefined(); expect(collection.groups).toStrictEqual({}); expect(collection.selectors).toStrictEqual({}); expect(Collection.prototype.initGroups).toHaveBeenCalledWith([ - "group1", - "group2", + 'group1', + 'group2', ]); expect(Collection.prototype.initSelectors).toHaveBeenCalledWith([ - "selector1", - "selector2", + 'selector1', + 'selector2', ]); }); - it("should create Collection (specific config in function form)", () => { + it('should create Collection (specific config in function form)', () => { // Overwrite methods once to not call id jest - .spyOn(Collection.prototype, "initSelectors") + .spyOn(Collection.prototype, 'initSelectors') .mockReturnValueOnce(undefined); jest - .spyOn(Collection.prototype, "initGroups") + .spyOn(Collection.prototype, 'initGroups') .mockReturnValueOnce(undefined); const collection = new Collection( dummyAgile, (collection) => ({ - defaultGroupKey: "general", + defaultGroupKey: 'general', groups: { group1: collection.Group(), }, selectors: { - selector1: collection.Selector("id1"), + selector1: collection.Selector('id1'), }, - key: "dummyCollectionKey", - primaryKey: "key", - }) + key: 'dummyCollectionKey', + primaryKey: 'key', + }), ); expect(collection.config).toStrictEqual({ - primaryKey: "key", - defaultGroupKey: "general", + primaryKey: 'key', + defaultGroupKey: 'general', }); expect(collection.size).toBe(0); expect(collection.data).toStrictEqual({ id1: expect.any(Item), // Placeholder Item created by Selector }); - expect(collection._key).toBe("dummyCollectionKey"); + expect(collection._key).toBe('dummyCollectionKey'); expect(collection.isPersisted).toBeFalsy(); expect(collection.persistent).toBeUndefined(); expect(collection.groups).toStrictEqual({}); @@ -140,54 +140,54 @@ describe("Collection Tests", () => { }); }); - describe("Collection Function Tests", () => { + describe('Collection Function Tests', () => { let collection: Collection; beforeEach(() => { - collection = new Collection(dummyAgile, { key: "collectionKey" }); + collection = new Collection(dummyAgile, {key: 'collectionKey'}); }); - it("should call setKey with passed value", () => { + it('should call setKey with passed value', () => { collection.setKey = jest.fn(); - collection.key = "newKey"; + collection.key = 'newKey'; - expect(collection.setKey).toHaveBeenCalledWith("newKey"); + expect(collection.setKey).toHaveBeenCalledWith('newKey'); }); - describe("key get function tests", () => { - it("should return current State Key", () => { - expect(collection.key).toBe("collectionKey"); + describe('key get function tests', () => { + it('should return current State Key', () => { + expect(collection.key).toBe('collectionKey'); }); }); - describe("setKey function tests", () => { + describe('setKey function tests', () => { beforeEach(() => { collection.persistent = new CollectionPersistent(collection); collection.persistent.setKey = jest.fn(); }); - it("should update existing Key in all instances", () => { - collection.persistent._key = "collectionKey"; + it('should update existing Key in all instances', () => { + collection.persistent._key = 'collectionKey'; - collection.setKey("newKey"); + collection.setKey('newKey'); - expect(collection._key).toBe("newKey"); - expect(collection.persistent.setKey).toHaveBeenCalledWith("newKey"); + expect(collection._key).toBe('newKey'); + expect(collection.persistent.setKey).toHaveBeenCalledWith('newKey'); }); it("should update existing Key in all instances except persistent if the CollectionKey and PersistKey aren't equal", () => { - collection.persistent._key = "randomKey"; + collection.persistent._key = 'randomKey'; - collection.setKey("newKey"); + collection.setKey('newKey'); - expect(collection._key).toBe("newKey"); + expect(collection._key).toBe('newKey'); expect(collection.persistent.setKey).not.toHaveBeenCalled(); }); - it("should update existing Key in all instances except persistent if new CollectionKey is undefined", () => { - collection.persistent._key = "collectionKey"; + it('should update existing Key in all instances except persistent if new CollectionKey is undefined', () => { + collection.persistent._key = 'collectionKey'; collection.setKey(undefined); @@ -196,64 +196,64 @@ describe("Collection Tests", () => { }); }); - describe("Group function tests", () => { - it("should create Group which belongs to Collection", () => { + describe('Group function tests', () => { + it('should create Group which belongs to Collection', () => { const response = collection.Group([1, 2], { - key: "group1Key", + key: 'group1Key', }); expect(response).toBeInstanceOf(Group); - expect(response._key).toBe("group1Key"); + expect(response._key).toBe('group1Key'); expect(response._value).toStrictEqual([1, 2]); expect(response.collection()).toBe(collection); }); }); - describe("Selector function tests", () => { - it("should create Selector which belongs to Collection", () => { - const response = collection.Selector("id1", { - key: "selector1Key", + describe('Selector function tests', () => { + it('should create Selector which belongs to Collection', () => { + const response = collection.Selector('id1', { + key: 'selector1Key', }); expect(response).toBeInstanceOf(Selector); - expect(response._key).toBe("selector1Key"); - expect(response._itemKey).toBe("id1"); + expect(response._key).toBe('selector1Key'); + expect(response._itemKey).toBe('id1'); expect(response.collection()).toBe(collection); }); }); - describe("initGroups function tests", () => { - it("should create GroupsObject out of passed GroupKeys Array and add defaultGroup", () => { - collection.initGroups(["group1", "group2"]); + describe('initGroups function tests', () => { + it('should create GroupsObject out of passed GroupKeys Array and add defaultGroup', () => { + collection.initGroups(['group1', 'group2']); - expect(collection.groups).toHaveProperty("group1"); - expect(collection.groups["group1"]._key).toBe("group1"); - expect(collection.groups["group1"]._value).toStrictEqual([]); - expect(collection.groups["group1"].collection()).toBe(collection); + expect(collection.groups).toHaveProperty('group1'); + expect(collection.groups['group1']._key).toBe('group1'); + expect(collection.groups['group1']._value).toStrictEqual([]); + expect(collection.groups['group1'].collection()).toBe(collection); - expect(collection.groups).toHaveProperty("group2"); - expect(collection.groups["group2"]._key).toBe("group2"); - expect(collection.groups["group2"]._value).toStrictEqual([]); - expect(collection.groups["group2"].collection()).toBe(collection); + expect(collection.groups).toHaveProperty('group2'); + expect(collection.groups['group2']._key).toBe('group2'); + expect(collection.groups['group2']._value).toStrictEqual([]); + expect(collection.groups['group2'].collection()).toBe(collection); expect(collection.groups).toHaveProperty( - collection.config.defaultGroupKey as any + collection.config.defaultGroupKey as any, ); expect(collection.groups[collection.config.defaultGroupKey]._key).toBe( - "default" + 'default', ); expect( - collection.groups[collection.config.defaultGroupKey]._value + collection.groups[collection.config.defaultGroupKey]._value, ).toStrictEqual([]); expect( - collection.groups[collection.config.defaultGroupKey].collection() + collection.groups[collection.config.defaultGroupKey].collection(), ).toBe(collection); }); - it("should create GroupsObject out of passed Groups Object and add default Group", () => { + it('should create GroupsObject out of passed Groups Object and add default Group', () => { let dummyGroup1 = new Group(collection); - let dummyGroup2 = new Group(collection, ["test1", "test2"], { - key: "overwrittenKey", + let dummyGroup2 = new Group(collection, ['test1', 'test2'], { + key: 'overwrittenKey', }); collection.initGroups({ @@ -261,53 +261,53 @@ describe("Collection Tests", () => { dummyGroup2: dummyGroup2, }); - expect(collection.groups).toHaveProperty("dummyGroup1"); - expect(collection.groups["dummyGroup1"]._key).toBe("dummyGroup1"); - expect(collection.groups["dummyGroup1"]._value).toStrictEqual([]); - expect(collection.groups["dummyGroup1"].collection()).toBe(collection); + expect(collection.groups).toHaveProperty('dummyGroup1'); + expect(collection.groups['dummyGroup1']._key).toBe('dummyGroup1'); + expect(collection.groups['dummyGroup1']._value).toStrictEqual([]); + expect(collection.groups['dummyGroup1'].collection()).toBe(collection); - expect(collection.groups).toHaveProperty("dummyGroup2"); - expect(collection.groups["dummyGroup2"]._key).toBe("overwrittenKey"); - expect(collection.groups["dummyGroup2"]._value).toStrictEqual([ - "test1", - "test2", + expect(collection.groups).toHaveProperty('dummyGroup2'); + expect(collection.groups['dummyGroup2']._key).toBe('overwrittenKey'); + expect(collection.groups['dummyGroup2']._value).toStrictEqual([ + 'test1', + 'test2', ]); - expect(collection.groups["dummyGroup2"].collection()).toBe(collection); + expect(collection.groups['dummyGroup2'].collection()).toBe(collection); expect(collection.groups).toHaveProperty( - collection.config.defaultGroupKey as any + collection.config.defaultGroupKey as any, ); expect(collection.groups[collection.config.defaultGroupKey]._key).toBe( - "default" + 'default', ); expect( - collection.groups[collection.config.defaultGroupKey]._value + collection.groups[collection.config.defaultGroupKey]._value, ).toStrictEqual([]); expect( - collection.groups[collection.config.defaultGroupKey].collection() + collection.groups[collection.config.defaultGroupKey].collection(), ).toBe(collection); }); }); - describe("initSelectors function tests", () => { - it("should create SelectorsObject out of passed SelectorKeys Array", () => { - collection.initSelectors(["selector1", "selector2"]); + describe('initSelectors function tests', () => { + it('should create SelectorsObject out of passed SelectorKeys Array', () => { + collection.initSelectors(['selector1', 'selector2']); - expect(collection.selectors).toHaveProperty("selector1"); - expect(collection.selectors["selector1"]._key).toBe("selector1"); - expect(collection.selectors["selector1"]._itemKey).toBe("selector1"); - expect(collection.selectors["selector1"].collection()).toBe(collection); + expect(collection.selectors).toHaveProperty('selector1'); + expect(collection.selectors['selector1']._key).toBe('selector1'); + expect(collection.selectors['selector1']._itemKey).toBe('selector1'); + expect(collection.selectors['selector1'].collection()).toBe(collection); - expect(collection.selectors).toHaveProperty("selector2"); - expect(collection.selectors["selector2"]._key).toBe("selector2"); - expect(collection.selectors["selector2"]._itemKey).toBe("selector2"); - expect(collection.selectors["selector2"].collection()).toBe(collection); + expect(collection.selectors).toHaveProperty('selector2'); + expect(collection.selectors['selector2']._key).toBe('selector2'); + expect(collection.selectors['selector2']._itemKey).toBe('selector2'); + expect(collection.selectors['selector2'].collection()).toBe(collection); }); - it("should create SelectorsObject out of passed Selector Object", () => { - let dummySelector1 = new Selector(collection, "1"); - let dummySelector2 = new Selector(collection, "2", { - key: "overwrittenKey", + it('should create SelectorsObject out of passed Selector Object', () => { + let dummySelector1 = new Selector(collection, '1'); + let dummySelector2 = new Selector(collection, '2', { + key: 'overwrittenKey', }); collection.initSelectors({ @@ -315,27 +315,27 @@ describe("Collection Tests", () => { dummySelector2: dummySelector2, }); - expect(collection.selectors).toHaveProperty("dummySelector1"); - expect(collection.selectors["dummySelector1"]._key).toBe( - "dummySelector1" + expect(collection.selectors).toHaveProperty('dummySelector1'); + expect(collection.selectors['dummySelector1']._key).toBe( + 'dummySelector1', ); - expect(collection.selectors["dummySelector1"]._itemKey).toBe("1"); - expect(collection.selectors["dummySelector1"].collection()).toBe( - collection + expect(collection.selectors['dummySelector1']._itemKey).toBe('1'); + expect(collection.selectors['dummySelector1'].collection()).toBe( + collection, ); - expect(collection.selectors).toHaveProperty("dummySelector2"); - expect(collection.selectors["dummySelector2"]._key).toBe( - "overwrittenKey" + expect(collection.selectors).toHaveProperty('dummySelector2'); + expect(collection.selectors['dummySelector2']._key).toBe( + 'overwrittenKey', ); - expect(collection.selectors["dummySelector2"]._itemKey).toBe("2"); - expect(collection.selectors["dummySelector2"].collection()).toBe( - collection + expect(collection.selectors['dummySelector2']._itemKey).toBe('2'); + expect(collection.selectors['dummySelector2'].collection()).toBe( + collection, ); }); }); - describe("collect function tests", () => { + describe('collect function tests', () => { let dummyGroup1: Group; let dummyGroup2: Group; let defaultGroup: Group; @@ -360,119 +360,119 @@ describe("Collection Tests", () => { defaultGroup.add = jest.fn(); }); - it("should add Data to Collection and to default Group (default config)", () => { + it('should add Data to Collection and to default Group (default config)', () => { collection.setData = jest.fn(() => true); - collection.collect({ id: "1", name: "frank" }); + collection.collect({id: '1', name: 'frank'}); expect(collection.setData).toHaveBeenCalledWith( { - id: "1", - name: "frank", + id: '1', + name: 'frank', }, { patch: false, background: false, - } + }, ); expect(collection.createGroup).not.toHaveBeenCalled(); expect(dummyGroup1.add).not.toHaveBeenCalled(); expect(dummyGroup2.add).not.toHaveBeenCalled(); - expect(defaultGroup.add).toHaveBeenCalledWith("1", { - method: "push", + expect(defaultGroup.add).toHaveBeenCalledWith('1', { + method: 'push', background: false, }); expect(collection.createSelector).not.toHaveBeenCalled(); }); - it("should add Data to Collection and to default Group (specific config)", () => { + it('should add Data to Collection and to default Group (specific config)', () => { collection.setData = jest.fn(() => true); - collection.collect({ id: "1", name: "frank" }, [], { + collection.collect({id: '1', name: 'frank'}, [], { background: true, - method: "unshift", + method: 'unshift', patch: true, }); expect(collection.setData).toHaveBeenCalledWith( { - id: "1", - name: "frank", + id: '1', + name: 'frank', }, { patch: true, background: true, - } + }, ); expect(collection.createGroup).not.toHaveBeenCalled(); expect(dummyGroup1.add).not.toHaveBeenCalled(); expect(dummyGroup2.add).not.toHaveBeenCalled(); - expect(defaultGroup.add).toHaveBeenCalledWith("1", { - method: "unshift", + expect(defaultGroup.add).toHaveBeenCalledWith('1', { + method: 'unshift', background: true, }); expect(collection.createSelector).not.toHaveBeenCalled(); }); - it("should add Data to Collection and to passed Groups + default Group (default config)", () => { + it('should add Data to Collection and to passed Groups + default Group (default config)', () => { collection.setData = jest.fn(() => true); collection.collect( [ - { id: "1", name: "frank" }, - { id: "2", name: "hans" }, + {id: '1', name: 'frank'}, + {id: '2', name: 'hans'}, ], - ["dummyGroup1", "dummyGroup2"] + ['dummyGroup1', 'dummyGroup2'], ); expect(collection.setData).toHaveBeenCalledWith( { - id: "1", - name: "frank", + id: '1', + name: 'frank', }, { patch: false, background: false, - } + }, ); expect(collection.setData).toHaveBeenCalledWith( { - id: "2", - name: "hans", + id: '2', + name: 'hans', }, { patch: false, background: false, - } + }, ); expect(collection.createGroup).not.toHaveBeenCalled(); - expect(dummyGroup1.add).toHaveBeenCalledWith("1", { - method: "push", + expect(dummyGroup1.add).toHaveBeenCalledWith('1', { + method: 'push', background: false, }); - expect(dummyGroup1.add).toHaveBeenCalledWith("2", { - method: "push", + expect(dummyGroup1.add).toHaveBeenCalledWith('2', { + method: 'push', background: false, }); - expect(dummyGroup2.add).toHaveBeenCalledWith("1", { - method: "push", + expect(dummyGroup2.add).toHaveBeenCalledWith('1', { + method: 'push', background: false, }); - expect(dummyGroup2.add).toHaveBeenCalledWith("2", { - method: "push", + expect(dummyGroup2.add).toHaveBeenCalledWith('2', { + method: 'push', background: false, }); - expect(defaultGroup.add).toHaveBeenCalledWith("1", { - method: "push", + expect(defaultGroup.add).toHaveBeenCalledWith('1', { + method: 'push', background: false, }); - expect(defaultGroup.add).toHaveBeenCalledWith("2", { - method: "push", + expect(defaultGroup.add).toHaveBeenCalledWith('2', { + method: 'push', background: false, }); @@ -482,20 +482,20 @@ describe("Collection Tests", () => { it("should call setData and shouldn't add Items to passed Groups if setData failed (default config)", () => { collection.setData = jest.fn(() => false); - collection.collect({ id: "1", name: "frank" }, [ - "dummyGroup1", - "dummyGroup2", + collection.collect({id: '1', name: 'frank'}, [ + 'dummyGroup1', + 'dummyGroup2', ]); expect(collection.setData).toHaveBeenCalledWith( { - id: "1", - name: "frank", + id: '1', + name: 'frank', }, { patch: false, background: false, - } + }, ); expect(collection.createGroup).not.toHaveBeenCalled(); @@ -515,48 +515,48 @@ describe("Collection Tests", () => { return notExistingGroup as any; }); - collection.collect({ id: "1", name: "frank" }, "notExistingGroup"); + collection.collect({id: '1', name: 'frank'}, 'notExistingGroup'); expect(collection.setData).toHaveBeenCalledWith( { - id: "1", - name: "frank", + id: '1', + name: 'frank', }, { patch: false, background: false, - } + }, ); - expect(collection.createGroup).toHaveBeenCalledWith("notExistingGroup"); + expect(collection.createGroup).toHaveBeenCalledWith('notExistingGroup'); expect(dummyGroup1.add).not.toHaveBeenCalled(); expect(dummyGroup2.add).not.toHaveBeenCalled(); - expect(notExistingGroup.add).toHaveBeenCalledWith("1", { - method: "push", + expect(notExistingGroup.add).toHaveBeenCalledWith('1', { + method: 'push', background: false, }); - expect(defaultGroup.add).toHaveBeenCalledWith("1", { - method: "push", + expect(defaultGroup.add).toHaveBeenCalledWith('1', { + method: 'push', background: false, }); expect(collection.createSelector).not.toHaveBeenCalled(); }); - it("should create Selector for each Item (config.select)", () => { + it('should create Selector for each Item (config.select)', () => { collection.setData = jest.fn(() => true); collection.collect( [ - { id: "1", name: "frank" }, - { id: "2", name: "hans" }, + {id: '1', name: 'frank'}, + {id: '2', name: 'hans'}, ], [], - { select: true } + {select: true}, ); - expect(collection.createSelector).toHaveBeenCalledWith("1", "1"); - expect(collection.createSelector).toHaveBeenCalledWith("2", "2"); + expect(collection.createSelector).toHaveBeenCalledWith('1', '1'); + expect(collection.createSelector).toHaveBeenCalledWith('2', '2'); }); it("should call 'forEachItem' for each Item (default config)", () => { @@ -565,31 +565,31 @@ describe("Collection Tests", () => { collection.collect( [ - { id: "1", name: "frank" }, - { id: "2", name: "hans" }, + {id: '1', name: 'frank'}, + {id: '2', name: 'hans'}, ], [], - { forEachItem: forEachItemMock } + {forEachItem: forEachItemMock}, ); expect(forEachItemMock).toHaveBeenCalledWith( - { id: "1", name: "frank" }, - "1", - 0 + {id: '1', name: 'frank'}, + '1', + 0, ); expect(forEachItemMock).toHaveBeenCalledWith( - { id: "2", name: "hans" }, - "2", - 1 + {id: '2', name: 'hans'}, + '2', + 1, ); }); }); - describe("update function tests", () => { + describe('update function tests', () => { let dummyItem: Item; beforeEach(() => { - dummyItem = new Item(collection, { id: "dummyItem", name: "frank" }); + dummyItem = new Item(collection, {id: 'dummyItem', name: 'frank'}); collection.data = { dummyItem: dummyItem, }; @@ -598,72 +598,72 @@ describe("Collection Tests", () => { collection.updateItemKey = jest.fn(); }); - it("should update existing Item with valid changes Object (default config)", () => { - const response = collection.update("dummyItem", { name: "hans" }); + it('should update existing Item with valid changes Object (default config)', () => { + const response = collection.update('dummyItem', {name: 'hans'}); expect(response).toBe(dummyItem); expect(console.error).not.toHaveBeenCalled(); expect(dummyItem.patch).toHaveBeenCalledWith( { - name: "hans", + name: 'hans', }, { background: false, addNewProperties: false, - } + }, ); expect(collection.updateItemKey).not.toHaveBeenCalled(); }); - it("should update existing Item with valid changes Object (specific config)", () => { + it('should update existing Item with valid changes Object (specific config)', () => { const response = collection.update( - "dummyItem", - { name: "hans" }, + 'dummyItem', + {name: 'hans'}, { addNewProperties: true, background: true, - } + }, ); expect(response).toBe(dummyItem); expect(console.error).not.toHaveBeenCalled(); expect(dummyItem.patch).toHaveBeenCalledWith( { - name: "hans", + name: 'hans', }, { background: true, addNewProperties: true, - } + }, ); expect(collection.updateItemKey).not.toHaveBeenCalled(); }); - it("should update existing placeholder Item with valid changes Object (default config)", () => { + it('should update existing placeholder Item with valid changes Object (default config)', () => { dummyItem.isPlaceholder = true; - const response = collection.update("dummyItem", { name: "hans" }); + const response = collection.update('dummyItem', {name: 'hans'}); expect(response).toBe(dummyItem); expect(console.error).not.toHaveBeenCalled(); expect(dummyItem.patch).toHaveBeenCalledWith( { - name: "hans", + name: 'hans', }, { background: false, addNewProperties: false, - } + }, ); expect(collection.updateItemKey).not.toHaveBeenCalled(); }); it("shouldn't update not existing Item and should print error", () => { - const response = collection.update("notExisting", { name: "hans" }); + const response = collection.update('notExisting', {name: 'hans'}); expect(response).toBeUndefined(); expect(console.error).toHaveBeenCalledWith( - `Agile Error: Item with key/name 'notExisting' doesn't exist in Collection '${collection._key}'!` + `Agile Error: Item with key/name 'notExisting' doesn't exist in Collection '${collection._key}'!`, ); expect(dummyItem.patch).not.toHaveBeenCalled(); expect(collection.updateItemKey).not.toHaveBeenCalled(); @@ -671,56 +671,56 @@ describe("Collection Tests", () => { it("shouldn't update existing Item with invalid changes Object and should print error", () => { const response = collection.update( - "dummyItem", - "notValidChanges" as any + 'dummyItem', + 'notValidChanges' as any, ); expect(response).toBeUndefined(); expect(console.error).toHaveBeenCalledWith( - `Agile Error: You have to pass an valid Changes Object to update 'dummyItem' in '${collection._key}'!` + `Agile Error: You have to pass an valid Changes Object to update 'dummyItem' in '${collection._key}'!`, ); expect(dummyItem.patch).not.toHaveBeenCalled(); expect(collection.updateItemKey).not.toHaveBeenCalled(); }); - it("should update existing Item and its ItemKey with valid changes Object if ItemKey has changed (default config)", () => { - const response = collection.update("dummyItem", { - id: "newDummyItemKey", - name: "hans", + it('should update existing Item and its ItemKey with valid changes Object if ItemKey has changed (default config)', () => { + const response = collection.update('dummyItem', { + id: 'newDummyItemKey', + name: 'hans', }); expect(response).toBe(dummyItem); expect(console.error).not.toHaveBeenCalled(); expect(dummyItem.patch).toHaveBeenCalledWith( { - name: "hans", + name: 'hans', }, { background: false, addNewProperties: false, - } + }, ); expect(collection.updateItemKey).toHaveBeenCalledWith( - "dummyItem", - "newDummyItemKey", + 'dummyItem', + 'newDummyItemKey', { background: false, - } + }, ); }); }); - describe("createGroup function tests", () => { + describe('createGroup function tests', () => { let dummyGroup: Group; let dummyItem: Item; beforeEach(() => { - dummyItem = new Item(collection, { id: "dummyItem", name: "frank" }); + dummyItem = new Item(collection, {id: 'dummyItem', name: 'frank'}); collection.data = { dummyItem: dummyItem, }; - dummyGroup = new Group(collection, [], { key: "dummyGroup" }); + dummyGroup = new Group(collection, [], {key: 'dummyGroup'}); collection.groups = { dummyGroup: dummyGroup, }; @@ -728,43 +728,43 @@ describe("Collection Tests", () => { dummyGroup.set = jest.fn(); }); - it("should create and add not existing Group to Collection", () => { - const response = collection.createGroup("newGroup", ["dummyItem"]); + it('should create and add not existing Group to Collection', () => { + const response = collection.createGroup('newGroup', ['dummyItem']); expect(console.warn).not.toHaveBeenCalled(); expect(response).toBeInstanceOf(Group); - expect(response._key).toBe("newGroup"); + expect(response._key).toBe('newGroup'); expect(response.isPlaceholder).toBeFalsy(); - expect(response._value).toStrictEqual(["dummyItem"]); - expect(collection.groups["newGroup"]).toBe(response); + expect(response._value).toStrictEqual(['dummyItem']); + expect(collection.groups['newGroup']).toBe(response); }); it("shouldn't create and add existing Group to Collection", () => { - const response = collection.createGroup("dummyGroup", ["dummyItem"]); + const response = collection.createGroup('dummyGroup', ['dummyItem']); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Group with the name 'dummyGroup' already exists!" + "Agile Warn: Group with the name 'dummyGroup' already exists!", ); expect(response).toBe(dummyGroup); - expect(collection.groups["dummyGroup"]).toBe(dummyGroup); + expect(collection.groups['dummyGroup']).toBe(dummyGroup); expect(dummyGroup.set).not.toHaveBeenCalled(); }); - it("should update existing placeholder Group of Collection", () => { + it('should update existing placeholder Group of Collection', () => { dummyGroup.isPlaceholder = true; - const response = collection.createGroup("dummyGroup", ["dummyItem"]); + const response = collection.createGroup('dummyGroup', ['dummyItem']); expect(console.warn).not.toHaveBeenCalled(); expect(response).toBe(dummyGroup); - expect(collection.groups["dummyGroup"]).toBe(dummyGroup); - expect(dummyGroup.set).toHaveBeenCalledWith(["dummyItem"], { + expect(collection.groups['dummyGroup']).toBe(dummyGroup); + expect(dummyGroup.set).toHaveBeenCalledWith(['dummyItem'], { overwrite: true, }); }); }); - describe("hasGroup function tests", () => { + describe('hasGroup function tests', () => { let dummyGroup: Group; beforeEach(() => { @@ -773,41 +773,41 @@ describe("Collection Tests", () => { collection.getGroup = jest.fn(); }); - it("should call getGroup and return true if getGroup returns Group (default config)", () => { + it('should call getGroup and return true if getGroup returns Group (default config)', () => { collection.getGroup = jest.fn(() => dummyGroup as any); - const response = collection.hasGroup("test"); + const response = collection.hasGroup('test'); expect(response).toBeTruthy(); - expect(collection.getGroup).toHaveBeenCalledWith("test", {}); + expect(collection.getGroup).toHaveBeenCalledWith('test', {}); }); - it("should call getGroup and return true if getGroup returns Group (specific config)", () => { + it('should call getGroup and return true if getGroup returns Group (specific config)', () => { collection.getGroup = jest.fn(() => dummyGroup as any); - const response = collection.hasGroup("test", { notExisting: true }); + const response = collection.hasGroup('test', {notExisting: true}); expect(response).toBeTruthy(); - expect(collection.getGroup).toHaveBeenCalledWith("test", { + expect(collection.getGroup).toHaveBeenCalledWith('test', { notExisting: true, }); }); - it("should call getGroup and return false if getGroup returns undefined (default config)", () => { + it('should call getGroup and return false if getGroup returns undefined (default config)', () => { collection.getGroup = jest.fn(() => undefined); - const response = collection.hasGroup("test"); + const response = collection.hasGroup('test'); expect(response).toBeFalsy(); - expect(collection.getGroup).toHaveBeenCalledWith("test", {}); + expect(collection.getGroup).toHaveBeenCalledWith('test', {}); }); }); - describe("getGroup function tests", () => { + describe('getGroup function tests', () => { let dummyGroup: Group; beforeEach(() => { - dummyGroup = new Group(collection, [], { key: "dummyGroup" }); + dummyGroup = new Group(collection, [], {key: 'dummyGroup'}); collection.groups = { dummyGroup: dummyGroup, }; @@ -815,17 +815,17 @@ describe("Collection Tests", () => { ComputedTracker.tracked = jest.fn(); }); - it("should return and track existing Group (default config)", () => { - const response = collection.getGroup("dummyGroup"); + it('should return and track existing Group (default config)', () => { + const response = collection.getGroup('dummyGroup'); expect(response).toBe(dummyGroup); expect(ComputedTracker.tracked).toHaveBeenCalledWith( - dummyGroup.observer + dummyGroup.observer, ); }); it("shouldn't return and track not existing Group (default config)", () => { - const response = collection.getGroup("notExistingGroup"); + const response = collection.getGroup('notExistingGroup'); expect(response).toBeUndefined(); expect(ComputedTracker.tracked).not.toHaveBeenCalled(); @@ -834,31 +834,31 @@ describe("Collection Tests", () => { it("shouldn't return and track existing placeholder Group (default config)", () => { dummyGroup.isPlaceholder = true; - const response = collection.getGroup("dummyGroup"); + const response = collection.getGroup('dummyGroup'); expect(response).toBeUndefined(); expect(ComputedTracker.tracked).not.toHaveBeenCalled(); }); - it("should return and track existing placeholder Group (config.notExisting = true)", () => { + it('should return and track existing placeholder Group (config.notExisting = true)', () => { dummyGroup.isPlaceholder = true; - const response = collection.getGroup("dummyGroup", { + const response = collection.getGroup('dummyGroup', { notExisting: true, }); expect(response).toBe(dummyGroup); expect(ComputedTracker.tracked).toHaveBeenCalledWith( - dummyGroup.observer + dummyGroup.observer, ); }); }); - describe("getGroupWithReference function tests", () => { + describe('getGroupWithReference function tests', () => { let dummyGroup: Group; beforeEach(() => { - dummyGroup = new Group(collection, [], { key: "dummyGroup" }); + dummyGroup = new Group(collection, [], {key: 'dummyGroup'}); collection.groups = { dummyGroup: dummyGroup, }; @@ -866,64 +866,64 @@ describe("Collection Tests", () => { ComputedTracker.tracked = jest.fn(); }); - it("should return and track existing Group", () => { - const response = collection.getGroupWithReference("dummyGroup"); + it('should return and track existing Group', () => { + const response = collection.getGroupWithReference('dummyGroup'); expect(response).toBe(dummyGroup); expect(ComputedTracker.tracked).toHaveBeenCalledWith( - dummyGroup.observer + dummyGroup.observer, ); }); it("should return and track created reference Group if Group doesn't exist yet", () => { - const response = collection.getGroupWithReference("notExistingGroup"); + const response = collection.getGroupWithReference('notExistingGroup'); expect(response).toBeInstanceOf(Group); expect(response.isPlaceholder).toBeTruthy(); - expect(response._key).toBe("notExistingGroup"); - expect(collection.groups["notExistingGroup"]).toBe(response); + expect(response._key).toBe('notExistingGroup'); + expect(collection.groups['notExistingGroup']).toBe(response); expect(ComputedTracker.tracked).toHaveBeenCalledWith(response.observer); }); }); - describe("removeGroup function tests", () => { + describe('removeGroup function tests', () => { let dummyGroup: Group; beforeEach(() => { - dummyGroup = new Group(collection, [], { key: "dummyGroup" }); + dummyGroup = new Group(collection, [], {key: 'dummyGroup'}); collection.groups = { dummyGroup: dummyGroup, }; }); - it("should remove existing Group", () => { - collection.removeGroup("dummyGroup"); + it('should remove existing Group', () => { + collection.removeGroup('dummyGroup'); expect(console.warn).not.toHaveBeenCalled(); - expect(collection.groups["dummyGroup"]).toBeUndefined(); + expect(collection.groups['dummyGroup']).toBeUndefined(); }); it("shouldn't remove not existing Group and print warning", () => { - collection.removeGroup("notExistingGroup"); + collection.removeGroup('notExistingGroup'); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Group with the key/name 'notExistingGroup' doesn't exist!" + "Agile Warn: Group with the key/name 'notExistingGroup' doesn't exist!", ); }); }); - describe("createSelector function tests", () => { + describe('createSelector function tests', () => { let dummySelector: Selector; let dummyItem: Item; beforeEach(() => { - dummyItem = new Item(collection, { id: "dummyItem", name: "frank" }); + dummyItem = new Item(collection, {id: 'dummyItem', name: 'frank'}); collection.data = { dummyItem: dummyItem, }; - dummySelector = new Selector(collection, "dummyItem", { - key: "dummySelector", + dummySelector = new Selector(collection, 'dummyItem', { + key: 'dummySelector', }); collection.selectors = { dummySelector: dummySelector, @@ -932,93 +932,93 @@ describe("Collection Tests", () => { dummySelector.select = jest.fn(); }); - it("should create and add not existing Selector to Collection", () => { - const response = collection.createSelector("newSelector", "dummyItem"); + it('should create and add not existing Selector to Collection', () => { + const response = collection.createSelector('newSelector', 'dummyItem'); expect(console.warn).not.toHaveBeenCalled(); expect(response).toBeInstanceOf(Selector); - expect(response._key).toBe("newSelector"); + expect(response._key).toBe('newSelector'); expect(response.isPlaceholder).toBeFalsy(); - expect(response._itemKey).toStrictEqual("dummyItem"); - expect(collection.selectors["newSelector"]).toBe(response); + expect(response._itemKey).toStrictEqual('dummyItem'); + expect(collection.selectors['newSelector']).toBe(response); }); it("shouldn't create and add existing Selector to Collection", () => { const response = collection.createSelector( - "dummySelector", - "dummyItem" + 'dummySelector', + 'dummyItem', ); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Selector with the name 'dummySelector' already exists!" + "Agile Warn: Selector with the name 'dummySelector' already exists!", ); expect(response).toBe(dummySelector); - expect(collection.selectors["dummySelector"]).toBe(dummySelector); + expect(collection.selectors['dummySelector']).toBe(dummySelector); expect(dummySelector.select).not.toHaveBeenCalled(); }); - it("should update existing placeholder Selector of Collection", () => { + it('should update existing placeholder Selector of Collection', () => { dummySelector.isPlaceholder = true; const response = collection.createSelector( - "dummySelector", - "dummyItem" + 'dummySelector', + 'dummyItem', ); expect(console.warn).not.toHaveBeenCalled(); expect(response).toBe(dummySelector); - expect(collection.selectors["dummySelector"]).toBe(dummySelector); - expect(dummySelector.select).toHaveBeenCalledWith("dummyItem", { + expect(collection.selectors['dummySelector']).toBe(dummySelector); + expect(dummySelector.select).toHaveBeenCalledWith('dummyItem', { overwrite: true, }); }); }); - describe("hasSelector function tests", () => { + describe('hasSelector function tests', () => { let dummySelector: Selector; beforeEach(() => { - dummySelector = new Selector(collection, "unknown"); + dummySelector = new Selector(collection, 'unknown'); collection.getSelector = jest.fn(); }); - it("should call getSelector and return true if getSelector returns Selector (default config)", () => { + it('should call getSelector and return true if getSelector returns Selector (default config)', () => { collection.getSelector = jest.fn(() => dummySelector as any); - const response = collection.hasSelector("test"); + const response = collection.hasSelector('test'); expect(response).toBeTruthy(); - expect(collection.getSelector).toHaveBeenCalledWith("test", {}); + expect(collection.getSelector).toHaveBeenCalledWith('test', {}); }); - it("should call getSelector and return true if getSelector returns Selector (specific config)", () => { + it('should call getSelector and return true if getSelector returns Selector (specific config)', () => { collection.getSelector = jest.fn(() => dummySelector as any); - const response = collection.hasSelector("test", { notExisting: true }); + const response = collection.hasSelector('test', {notExisting: true}); expect(response).toBeTruthy(); - expect(collection.getSelector).toHaveBeenCalledWith("test", { + expect(collection.getSelector).toHaveBeenCalledWith('test', { notExisting: true, }); }); - it("should call getSelector and return false if getSelector returns undefined (default config)", () => { + it('should call getSelector and return false if getSelector returns undefined (default config)', () => { collection.getSelector = jest.fn(() => undefined); - const response = collection.hasSelector("test"); + const response = collection.hasSelector('test'); expect(response).toBeFalsy(); - expect(collection.getSelector).toHaveBeenCalledWith("test", {}); + expect(collection.getSelector).toHaveBeenCalledWith('test', {}); }); }); - describe("getSelector function tests", () => { + describe('getSelector function tests', () => { let dummySelector: Selector; beforeEach(() => { - dummySelector = new Selector(collection, "dummyItem", { - key: "dummySelector", + dummySelector = new Selector(collection, 'dummyItem', { + key: 'dummySelector', }); collection.selectors = { dummySelector: dummySelector, @@ -1027,17 +1027,17 @@ describe("Collection Tests", () => { ComputedTracker.tracked = jest.fn(); }); - it("should return and track existing Selector (default config)", () => { - const response = collection.getSelector("dummySelector"); + it('should return and track existing Selector (default config)', () => { + const response = collection.getSelector('dummySelector'); expect(response).toBe(dummySelector); expect(ComputedTracker.tracked).toHaveBeenCalledWith( - dummySelector.observer + dummySelector.observer, ); }); it("shouldn't return and track not existing Selector (default config)", () => { - const response = collection.getSelector("notExistingSelector"); + const response = collection.getSelector('notExistingSelector'); expect(response).toBeUndefined(); expect(ComputedTracker.tracked).not.toHaveBeenCalled(); @@ -1046,32 +1046,32 @@ describe("Collection Tests", () => { it("shouldn't return and track existing placeholder Selector (default config)", () => { dummySelector.isPlaceholder = true; - const response = collection.getSelector("dummySelector"); + const response = collection.getSelector('dummySelector'); expect(response).toBeUndefined(); expect(ComputedTracker.tracked).not.toHaveBeenCalled(); }); - it("should return and track existing placeholder Selector (config.notExisting = true)", () => { + it('should return and track existing placeholder Selector (config.notExisting = true)', () => { dummySelector.isPlaceholder = true; - const response = collection.getSelector("dummySelector", { + const response = collection.getSelector('dummySelector', { notExisting: true, }); expect(response).toBe(dummySelector); expect(ComputedTracker.tracked).toHaveBeenCalledWith( - dummySelector.observer + dummySelector.observer, ); }); }); - describe("getSelectorWithReference function tests", () => { + describe('getSelectorWithReference function tests', () => { let dummySelector: Selector; beforeEach(() => { - dummySelector = new Selector(collection, "dummyItem", { - key: "dummySelector", + dummySelector = new Selector(collection, 'dummyItem', { + key: 'dummySelector', }); collection.selectors = { dummySelector: dummySelector, @@ -1080,34 +1080,34 @@ describe("Collection Tests", () => { ComputedTracker.tracked = jest.fn(); }); - it("should return and track existing Selector", () => { - const response = collection.getSelectorWithReference("dummySelector"); + it('should return and track existing Selector', () => { + const response = collection.getSelectorWithReference('dummySelector'); expect(response).toBe(dummySelector); expect(ComputedTracker.tracked).toHaveBeenCalledWith( - dummySelector.observer + dummySelector.observer, ); }); it("should return and track created reference Selector if Selector doesn't exist yet", () => { const response = collection.getSelectorWithReference( - "notExistingSelector" + 'notExistingSelector', ); expect(response).toBeInstanceOf(Selector); expect(response.isPlaceholder).toBeTruthy(); - expect(response._key).toBe("notExistingSelector"); - expect(collection.selectors["notExistingSelector"]).toBe(response); + expect(response._key).toBe('notExistingSelector'); + expect(collection.selectors['notExistingSelector']).toBe(response); expect(ComputedTracker.tracked).toHaveBeenCalledWith(response.observer); }); }); - describe("removeSelector function tests", () => { + describe('removeSelector function tests', () => { let dummySelector: Selector; beforeEach(() => { - dummySelector = new Selector(collection, "dummyItem", { - key: "dummySelector", + dummySelector = new Selector(collection, 'dummyItem', { + key: 'dummySelector', }); collection.selectors = { dummySelector: dummySelector, @@ -1116,87 +1116,87 @@ describe("Collection Tests", () => { dummySelector.unselect = jest.fn(); }); - it("should remove existing Selector", () => { - collection.removeSelector("dummySelector"); + it('should remove existing Selector', () => { + collection.removeSelector('dummySelector'); expect(console.warn).not.toHaveBeenCalled(); - expect(collection.selectors).not.toHaveProperty("dummySelector"); + expect(collection.selectors).not.toHaveProperty('dummySelector'); expect(dummySelector.unselect).toHaveBeenCalled(); }); it("shouldn't remove not existing Selector and print warning", () => { - collection.removeSelector("notExistingSelector"); + collection.removeSelector('notExistingSelector'); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Selector with the key/name 'notExistingSelector' doesn't exist!" + "Agile Warn: Selector with the key/name 'notExistingSelector' doesn't exist!", ); - expect(collection.selectors).toHaveProperty("dummySelector"); + expect(collection.selectors).toHaveProperty('dummySelector'); expect(dummySelector.unselect).not.toHaveBeenCalled(); }); }); - describe("hasItem function tests", () => { + describe('hasItem function tests', () => { let dummyItem: Item; beforeEach(() => { - dummyItem = new Item(collection, { id: "1", name: "Jeff" }); + dummyItem = new Item(collection, {id: '1', name: 'Jeff'}); collection.getItem = jest.fn(); }); - it("should call getItem and return true if getItem returns Item (default config)", () => { + it('should call getItem and return true if getItem returns Item (default config)', () => { collection.getItem = jest.fn(() => dummyItem); - const response = collection.hasItem("test"); + const response = collection.hasItem('test'); expect(response).toBeTruthy(); - expect(collection.getItem).toHaveBeenCalledWith("test", {}); + expect(collection.getItem).toHaveBeenCalledWith('test', {}); }); - it("should call getItem and return true if getItem returns Item (specific config)", () => { + it('should call getItem and return true if getItem returns Item (specific config)', () => { collection.getItem = jest.fn(() => dummyItem); - const response = collection.hasItem("test", { notExisting: true }); + const response = collection.hasItem('test', {notExisting: true}); expect(response).toBeTruthy(); - expect(collection.getItem).toHaveBeenCalledWith("test", { + expect(collection.getItem).toHaveBeenCalledWith('test', { notExisting: true, }); }); - it("should call getItem and return false if getItem returns undefined (default config)", () => { + it('should call getItem and return false if getItem returns undefined (default config)', () => { collection.getItem = jest.fn(() => undefined); - const response = collection.hasItem("test"); + const response = collection.hasItem('test'); expect(response).toBeFalsy(); - expect(collection.getItem).toHaveBeenCalledWith("test", {}); + expect(collection.getItem).toHaveBeenCalledWith('test', {}); }); }); - describe("getItem function tests", () => { + describe('getItem function tests', () => { let dummyItem: Item; beforeEach(() => { - dummyItem = new Item(collection, { id: "1", name: "Jeff" }); + dummyItem = new Item(collection, {id: '1', name: 'Jeff'}); collection.data = { - ["1"]: dummyItem, + ['1']: dummyItem, }; ComputedTracker.tracked = jest.fn(); }); - it("should return and track existing Item (default config)", () => { - const response = collection.getItem("1"); + it('should return and track existing Item (default config)', () => { + const response = collection.getItem('1'); expect(response).toBe(dummyItem); expect(ComputedTracker.tracked).toHaveBeenCalledWith( - dummyItem.observer + dummyItem.observer, ); }); it("shouldn't return and track not existing Item (default config)", () => { - const response = collection.getItem("notExistingItem"); + const response = collection.getItem('notExistingItem'); expect(response).toBeUndefined(); expect(ComputedTracker.tracked).not.toHaveBeenCalled(); @@ -1205,109 +1205,109 @@ describe("Collection Tests", () => { it("shouldn't return and track existing placeholder Item (default config)", () => { dummyItem.isPlaceholder = true; - const response = collection.getItem("1"); + const response = collection.getItem('1'); expect(response).toBeUndefined(); expect(ComputedTracker.tracked).not.toHaveBeenCalled(); }); - it("should return and track existing placeholder Item (config.notExisting = true)", () => { + it('should return and track existing placeholder Item (config.notExisting = true)', () => { dummyItem.isPlaceholder = true; - const response = collection.getItem("1", { + const response = collection.getItem('1', { notExisting: true, }); expect(response).toBe(dummyItem); expect(ComputedTracker.tracked).toHaveBeenCalledWith( - dummyItem.observer + dummyItem.observer, ); }); }); - describe("getItemWithReference function tests", () => { + describe('getItemWithReference function tests', () => { let dummyItem: Item; beforeEach(() => { - dummyItem = new Item(collection, { id: "1", name: "Jeff" }); + dummyItem = new Item(collection, {id: '1', name: 'Jeff'}); collection.data = { - ["1"]: dummyItem, + ['1']: dummyItem, }; ComputedTracker.tracked = jest.fn(); }); - it("should return and track existing Item", () => { - const response = collection.getItemWithReference("1"); + it('should return and track existing Item', () => { + const response = collection.getItemWithReference('1'); expect(response).toBe(dummyItem); expect(ComputedTracker.tracked).toHaveBeenCalledWith( - dummyItem.observer + dummyItem.observer, ); }); it("should return and track created reference Item if Item doesn't exist yet", () => { - const response = collection.getItemWithReference("notExistingItem"); + const response = collection.getItemWithReference('notExistingItem'); expect(response).toBeInstanceOf(Item); expect(response.isPlaceholder).toBeTruthy(); - expect(response._key).toBe("notExistingItem"); - expect(collection.data["notExistingItem"]).toBe(response); + expect(response._key).toBe('notExistingItem'); + expect(collection.data['notExistingItem']).toBe(response); expect(ComputedTracker.tracked).toHaveBeenCalledWith(response.observer); }); }); - describe("getItemValue function tests", () => { + describe('getItemValue function tests', () => { let dummyItem: Item; beforeEach(() => { - dummyItem = new Item(collection, { id: "1", name: "Jeff" }); + dummyItem = new Item(collection, {id: '1', name: 'Jeff'}); collection.data = { - ["1"]: dummyItem, + ['1']: dummyItem, }; - jest.spyOn(collection, "getItem"); + jest.spyOn(collection, 'getItem'); }); - it("should return existing Item Value (default config)", () => { - const response = collection.getItemValue("1"); + it('should return existing Item Value (default config)', () => { + const response = collection.getItemValue('1'); expect(response).toBe(dummyItem._value); - expect(collection.getItem).toHaveBeenCalledWith("1", {}); + expect(collection.getItem).toHaveBeenCalledWith('1', {}); }); it("shouldn't return not existing Item Value (default config)", () => { - const response = collection.getItemValue("notExistingItem"); + const response = collection.getItemValue('notExistingItem'); expect(response).toBeUndefined(); - expect(collection.getItem).toHaveBeenCalledWith("notExistingItem", {}); + expect(collection.getItem).toHaveBeenCalledWith('notExistingItem', {}); }); it("shouldn't return existing placeholder Item Value (default config)", () => { dummyItem.isPlaceholder = true; - const response = collection.getItemValue("1"); + const response = collection.getItemValue('1'); expect(response).toBeUndefined(); - expect(collection.getItem).toHaveBeenCalledWith("1", {}); + expect(collection.getItem).toHaveBeenCalledWith('1', {}); }); - it("should return existing placeholder Item Value (config.notExisting = true)", () => { + it('should return existing placeholder Item Value (config.notExisting = true)', () => { dummyItem.isPlaceholder = true; - const response = collection.getItemValue("1", { + const response = collection.getItemValue('1', { notExisting: true, }); expect(response).toBe(dummyItem._value); - expect(collection.getItem).toHaveBeenCalledWith("1", { + expect(collection.getItem).toHaveBeenCalledWith('1', { notExisting: true, }); }); }); - describe("persist function tests", () => { - it("should create persistent with CollectionKey (default config)", () => { + describe('persist function tests', () => { + it('should create persistent with CollectionKey (default config)', () => { collection.persist(); expect(collection.persistent).toBeInstanceOf(CollectionPersistent); @@ -1318,64 +1318,64 @@ describe("Collection Tests", () => { }); }); - it("should create persistent with CollectionKey (specific config)", () => { + it('should create persistent with CollectionKey (specific config)', () => { collection.persist({ - storageKeys: ["test1", "test2"], + storageKeys: ['test1', 'test2'], instantiate: false, }); expect(collection.persistent).toBeInstanceOf(CollectionPersistent); expect(CollectionPersistent).toHaveBeenCalledWith(collection, { instantiate: false, - storageKeys: ["test1", "test2"], + storageKeys: ['test1', 'test2'], key: collection._key, }); }); - it("should create persistent with passed Key (default config)", () => { - collection.persist("passedKey"); + it('should create persistent with passed Key (default config)', () => { + collection.persist('passedKey'); expect(collection.persistent).toBeInstanceOf(CollectionPersistent); expect(CollectionPersistent).toHaveBeenCalledWith(collection, { instantiate: true, storageKeys: [], - key: "passedKey", + key: 'passedKey', }); }); - it("should create persistent with passed Key (specific config)", () => { - collection.persist("passedKey", { - storageKeys: ["test1", "test2"], + it('should create persistent with passed Key (specific config)', () => { + collection.persist('passedKey', { + storageKeys: ['test1', 'test2'], instantiate: false, }); expect(collection.persistent).toBeInstanceOf(CollectionPersistent); expect(CollectionPersistent).toHaveBeenCalledWith(collection, { instantiate: false, - storageKeys: ["test1", "test2"], - key: "passedKey", + storageKeys: ['test1', 'test2'], + key: 'passedKey', }); }); - it("should overwrite existing persistent with a warning", () => { + it('should overwrite existing persistent with a warning', () => { collection.persistent = new CollectionPersistent(collection); - collection.persist("newPersistentKey"); + collection.persist('newPersistentKey'); expect(collection.persistent).toBeInstanceOf(CollectionPersistent); // expect(collection.persistent._key).toBe("newPersistentKey"); // Can not test because of Mocking Persistent expect(CollectionPersistent).toHaveBeenCalledWith(collection, { instantiate: true, storageKeys: [], - key: "newPersistentKey", + key: 'newPersistentKey', }); expect(console.warn).toHaveBeenCalledWith( - `Agile Warn: By persisting the Collection '${collection._key}' twice you overwrite the old Persistent Instance!` + `Agile Warn: By persisting the Collection '${collection._key}' twice you overwrite the old Persistent Instance!`, ); }); }); - describe("onLoad function tests", () => { + describe('onLoad function tests', () => { const dummyCallbackFunction = jest.fn(); it("should set onLoad function if Collection is persisted and shouldn't call it initially (collection.isPersisted = false)", () => { @@ -1388,7 +1388,7 @@ describe("Collection Tests", () => { expect(dummyCallbackFunction).not.toHaveBeenCalled(); }); - it("should set onLoad function if Collection is persisted and should call it initially (collection.isPersisted = true)", () => { + it('should set onLoad function if Collection is persisted and should call it initially (collection.isPersisted = true)', () => { collection.persistent = new CollectionPersistent(collection); collection.isPersisted = true; @@ -1403,55 +1403,55 @@ describe("Collection Tests", () => { expect(dummyCallbackFunction).not.toHaveBeenCalled(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Please make sure you persist the Collection 'collectionKey' before using the 'onLoad' function!" + "Agile Error: Please make sure you persist the Collection 'collectionKey' before using the 'onLoad' function!", ); }); }); - describe("getGroupCount function tests", () => { + describe('getGroupCount function tests', () => { beforeEach(() => { collection.groups = { - 1: "x" as any, - 2: "y" as any, - 10: "z" as any, + 1: 'x' as any, + 2: 'y' as any, + 10: 'z' as any, }; }); - it("should return count of registered Groups", () => { + it('should return count of registered Groups', () => { expect(collection.getGroupCount()).toBe(3); }); }); - describe("getSelectorCount function tests", () => { + describe('getSelectorCount function tests', () => { beforeEach(() => { collection.selectors = { - 1: "x" as any, - 2: "y" as any, - 10: "z" as any, + 1: 'x' as any, + 2: 'y' as any, + 10: 'z' as any, }; }); - it("should return count of registered Selectors", () => { + it('should return count of registered Selectors', () => { expect(collection.getSelectorCount()).toBe(3); }); }); - describe("reset function tests", () => { + describe('reset function tests', () => { let dummyGroup: Group; let dummySelector: Selector; let dummyItem: Item; beforeEach(() => { - dummyItem = new Item(collection, { id: "dummyItem", name: "frank" }); + dummyItem = new Item(collection, {id: 'dummyItem', name: 'frank'}); collection.data = { dummyItem: dummyItem, }; - dummyGroup = new Group(collection, [], { key: "dummyGroup" }); + dummyGroup = new Group(collection, [], {key: 'dummyGroup'}); collection.groups = { dummyGroup: dummyGroup, }; - dummySelector = new Selector(collection, "dummyItem", { - key: "dummySelector", + dummySelector = new Selector(collection, 'dummyItem', { + key: 'dummySelector', }); collection.selectors = { dummySelector: dummySelector, @@ -1461,7 +1461,7 @@ describe("Collection Tests", () => { dummySelector.reset = jest.fn(); }); - it("should reset Collection and its Selectors and Groups", () => { + it('should reset Collection and its Selectors and Groups', () => { collection.reset(); expect(collection.data).toStrictEqual({}); @@ -1471,13 +1471,13 @@ describe("Collection Tests", () => { }); }); - describe("put function tests", () => { + describe('put function tests', () => { let dummyGroup1: Group; let dummyGroup2: Group; beforeEach(() => { - dummyGroup1 = new Group(collection, [], { key: "dummyGroup1" }); - dummyGroup2 = new Group(collection, [], { key: "dummyGroup2" }); + dummyGroup1 = new Group(collection, [], {key: 'dummyGroup1'}); + dummyGroup2 = new Group(collection, [], {key: 'dummyGroup2'}); collection.groups = { dummyGroup1: dummyGroup1, dummyGroup2: dummyGroup2, @@ -1487,38 +1487,38 @@ describe("Collection Tests", () => { dummyGroup2.add = jest.fn(); }); - it("should add passed itemKey to passed Group (default config)", () => { - collection.put("1", "dummyGroup1"); + it('should add passed itemKey to passed Group (default config)', () => { + collection.put('1', 'dummyGroup1'); - expect(dummyGroup1.add).toHaveBeenCalledWith(["1"], {}); + expect(dummyGroup1.add).toHaveBeenCalledWith(['1'], {}); expect(dummyGroup2.add).not.toHaveBeenCalled(); }); - it("should add passed itemKey to passed Group (specific config)", () => { - collection.put("1", "dummyGroup1", { + it('should add passed itemKey to passed Group (specific config)', () => { + collection.put('1', 'dummyGroup1', { overwrite: true, - method: "push", + method: 'push', }); - expect(dummyGroup1.add).toHaveBeenCalledWith(["1"], { + expect(dummyGroup1.add).toHaveBeenCalledWith(['1'], { overwrite: true, - method: "push", + method: 'push', }); expect(dummyGroup2.add).not.toHaveBeenCalled(); }); - it("should add passed itemKeys to passed Groups (default config)", () => { + it('should add passed itemKeys to passed Groups (default config)', () => { collection.put( - ["1", "2", "3"], - ["dummyGroup1", "notExistingGroup", "dummyGroup2"] + ['1', '2', '3'], + ['dummyGroup1', 'notExistingGroup', 'dummyGroup2'], ); - expect(dummyGroup1.add).toHaveBeenCalledWith(["1", "2", "3"], {}); - expect(dummyGroup2.add).toHaveBeenCalledWith(["1", "2", "3"], {}); + expect(dummyGroup1.add).toHaveBeenCalledWith(['1', '2', '3'], {}); + expect(dummyGroup2.add).toHaveBeenCalledWith(['1', '2', '3'], {}); }); }); - describe("updateItemKey function tests", () => { + describe('updateItemKey function tests', () => { let dummySelector1: Selector; let dummySelector2: Selector; let dummySelector3: Selector; @@ -1528,34 +1528,34 @@ describe("Collection Tests", () => { let dummyItem2: Item; beforeEach(() => { - dummyItem1 = new Item(collection, { id: "dummyItem1", name: "Jeff" }); + dummyItem1 = new Item(collection, {id: 'dummyItem1', name: 'Jeff'}); dummyItem1.persistent = new StatePersistent(dummyItem1); - dummyItem2 = new Item(collection, { id: "dummyItem2", name: "Hans" }); + dummyItem2 = new Item(collection, {id: 'dummyItem2', name: 'Hans'}); dummyItem2.persistent = new StatePersistent(dummyItem2); collection.data = { dummyItem1: dummyItem1, dummyItem2: dummyItem2, }; - dummyGroup1 = new Group(collection, ["dummyItem1", "dummyItem2"], { - key: "dummyGroup1", + dummyGroup1 = new Group(collection, ['dummyItem1', 'dummyItem2'], { + key: 'dummyGroup1', }); - dummyGroup2 = new Group(collection, ["dummyItem2"], { - key: "dummyGroup2", + dummyGroup2 = new Group(collection, ['dummyItem2'], { + key: 'dummyGroup2', }); collection.groups = { dummyGroup1: dummyGroup1, dummyGroup2: dummyGroup2, }; - dummySelector1 = new Selector(collection, "dummyItem1", { - key: "dummySelector1", + dummySelector1 = new Selector(collection, 'dummyItem1', { + key: 'dummySelector1', }); - dummySelector2 = new Selector(collection, "dummyItem2", { - key: "dummySelector2", + dummySelector2 = new Selector(collection, 'dummyItem2', { + key: 'dummySelector2', }); - dummySelector3 = new Selector(collection, "newDummyItem", { - key: "dummySelector3", + dummySelector3 = new Selector(collection, 'newDummyItem', { + key: 'dummySelector3', }); collection.selectors = { dummySelector1: dummySelector1, @@ -1576,110 +1576,110 @@ describe("Collection Tests", () => { dummySelector3.select = jest.fn(); }); - it("should update ItemKey in Collection, Selectors and Groups (default config)", () => { - const response = collection.updateItemKey("dummyItem1", "newDummyItem"); + it('should update ItemKey in Collection, Selectors and Groups (default config)', () => { + const response = collection.updateItemKey('dummyItem1', 'newDummyItem'); expect(response).toBeTruthy(); - expect(dummyItem1.setKey).toHaveBeenCalledWith("newDummyItem", { + expect(dummyItem1.setKey).toHaveBeenCalledWith('newDummyItem', { background: false, }); expect(dummyItem2.setKey).not.toHaveBeenCalled(); expect(dummyItem1.persistent.setKey).toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( - "newDummyItem", - collection._key - ) + 'newDummyItem', + collection._key, + ), ); expect(dummyItem2.persistent.setKey).not.toHaveBeenCalled(); expect(dummyGroup1.replace).toHaveBeenCalledWith( - "dummyItem1", - "newDummyItem", + 'dummyItem1', + 'newDummyItem', { background: false, - } + }, ); expect(dummyGroup2.replace).not.toHaveBeenCalled(); - expect(dummySelector1.select).toHaveBeenCalledWith("newDummyItem", { + expect(dummySelector1.select).toHaveBeenCalledWith('newDummyItem', { background: false, }); expect(dummySelector2.select).not.toHaveBeenCalled(); - expect(dummySelector3.select).toHaveBeenCalledWith("newDummyItem", { + expect(dummySelector3.select).toHaveBeenCalledWith('newDummyItem', { force: true, background: false, }); }); - it("should update ItemKey in Collection, Selectors and Groups (specific config)", () => { + it('should update ItemKey in Collection, Selectors and Groups (specific config)', () => { const response = collection.updateItemKey( - "dummyItem1", - "newDummyItem", + 'dummyItem1', + 'newDummyItem', { background: true, - } + }, ); expect(response).toBeTruthy(); - expect(dummyItem1.setKey).toHaveBeenCalledWith("newDummyItem", { + expect(dummyItem1.setKey).toHaveBeenCalledWith('newDummyItem', { background: true, }); expect(dummyItem1.persistent.setKey).toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( - "newDummyItem", - collection._key - ) + 'newDummyItem', + collection._key, + ), ); expect(dummyGroup1.replace).toHaveBeenCalledWith( - "dummyItem1", - "newDummyItem", + 'dummyItem1', + 'newDummyItem', { background: true, - } + }, ); - expect(dummySelector1.select).toHaveBeenCalledWith("newDummyItem", { + expect(dummySelector1.select).toHaveBeenCalledWith('newDummyItem', { background: true, }); - expect(dummySelector3.select).toHaveBeenCalledWith("newDummyItem", { + expect(dummySelector3.select).toHaveBeenCalledWith('newDummyItem', { force: true, background: true, }); }); - it("should update ItemKey in Collection, dummy Selectors and dummy Groups (default config)", () => { + it('should update ItemKey in Collection, dummy Selectors and dummy Groups (default config)', () => { dummyGroup1.isPlaceholder = true; dummySelector1.isPlaceholder = true; - const response = collection.updateItemKey("dummyItem1", "newDummyItem"); + const response = collection.updateItemKey('dummyItem1', 'newDummyItem'); expect(response).toBeTruthy(); - expect(dummyItem1.setKey).toHaveBeenCalledWith("newDummyItem", { + expect(dummyItem1.setKey).toHaveBeenCalledWith('newDummyItem', { background: false, }); expect(dummyItem1.persistent.setKey).toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( - "newDummyItem", - collection._key - ) + 'newDummyItem', + collection._key, + ), ); expect(dummyGroup1.replace).toHaveBeenCalledWith( - "dummyItem1", - "newDummyItem", + 'dummyItem1', + 'newDummyItem', { background: false, - } + }, ); - expect(dummySelector1.select).toHaveBeenCalledWith("newDummyItem", { + expect(dummySelector1.select).toHaveBeenCalledWith('newDummyItem', { background: false, }); - expect(dummySelector3.select).toHaveBeenCalledWith("newDummyItem", { + expect(dummySelector3.select).toHaveBeenCalledWith('newDummyItem', { force: true, background: false, }); @@ -1687,30 +1687,30 @@ describe("Collection Tests", () => { it("shouldn't update ItemKey of Item that doesn't exist (default config)", () => { const response = collection.updateItemKey( - "notExistingItem", - "newDummyItem" + 'notExistingItem', + 'newDummyItem', ); expect(response).toBeFalsy(); }); it("shouldn't update ItemKey if it stayed the same (default config)", () => { - const response = collection.updateItemKey("dummyItem1", "dummyItem1"); + const response = collection.updateItemKey('dummyItem1', 'dummyItem1'); expect(response).toBeFalsy(); }); it("shouldn't update ItemKey if ItemKey called after the newItemKey already exists and should print warning (default config)", () => { - const response = collection.updateItemKey("dummyItem1", "dummyItem2"); + const response = collection.updateItemKey('dummyItem1', 'dummyItem2'); expect(response).toBeFalsy(); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Couldn't update ItemKey from 'dummyItem1' to 'dummyItem2' because an Item with the key/name 'dummyItem2' already exists!" + "Agile Warn: Couldn't update ItemKey from 'dummyItem1' to 'dummyItem2' because an Item with the key/name 'dummyItem2' already exists!", ); }); }); - describe("getGroupKeysThatHaveItemKey function tests", () => { + describe('getGroupKeysThatHaveItemKey function tests', () => { let dummyGroup1: Group; let dummyGroup2: Group; let dummyGroup3: Group; @@ -1718,16 +1718,16 @@ describe("Collection Tests", () => { beforeEach(() => { dummyGroup1 = new Group( collection, - ["dummyItem1", "dummyItem2", "dummyItem3"], + ['dummyItem1', 'dummyItem2', 'dummyItem3'], { - key: "dummyGroup1", - } + key: 'dummyGroup1', + }, ); - dummyGroup2 = new Group(collection, ["dummyItem2", "dummyItem3"], { - key: "dummyGroup2", + dummyGroup2 = new Group(collection, ['dummyItem2', 'dummyItem3'], { + key: 'dummyGroup2', }); - dummyGroup3 = new Group(collection, ["dummyItem3"], { - key: "dummyGroup3", + dummyGroup3 = new Group(collection, ['dummyItem3'], { + key: 'dummyGroup3', }); collection.groups = { dummyGroup1: dummyGroup1, @@ -1736,49 +1736,49 @@ describe("Collection Tests", () => { }; }); - it("should return groupKeys that contain ItemKey", () => { + it('should return groupKeys that contain ItemKey', () => { expect( - collection.getGroupKeysThatHaveItemKey("unknownItem") + collection.getGroupKeysThatHaveItemKey('unknownItem'), ).toStrictEqual([]); expect( - collection.getGroupKeysThatHaveItemKey("dummyItem1") - ).toStrictEqual(["dummyGroup1"]); + collection.getGroupKeysThatHaveItemKey('dummyItem1'), + ).toStrictEqual(['dummyGroup1']); expect( - collection.getGroupKeysThatHaveItemKey("dummyItem2") - ).toStrictEqual(["dummyGroup1", "dummyGroup2"]); + collection.getGroupKeysThatHaveItemKey('dummyItem2'), + ).toStrictEqual(['dummyGroup1', 'dummyGroup2']); expect( - collection.getGroupKeysThatHaveItemKey("dummyItem3") - ).toStrictEqual(["dummyGroup1", "dummyGroup2", "dummyGroup3"]); + collection.getGroupKeysThatHaveItemKey('dummyItem3'), + ).toStrictEqual(['dummyGroup1', 'dummyGroup2', 'dummyGroup3']); }); }); - describe("remove function tests", () => { + describe('remove function tests', () => { beforeEach(() => { collection.removeFromGroups = jest.fn(); collection.removeItems = jest.fn(); }); - it("should remove Items from Group", () => { + it('should remove Items from Group', () => { collection - .remove(["test1", "test2"]) - .fromGroups(["testGroup1", "testGroup2"]); + .remove(['test1', 'test2']) + .fromGroups(['testGroup1', 'testGroup2']); expect(collection.removeFromGroups).toHaveBeenCalledWith( - ["test1", "test2"], - ["testGroup1", "testGroup2"] + ['test1', 'test2'], + ['testGroup1', 'testGroup2'], ); expect(collection.removeItems).not.toHaveBeenCalled(); }); - it("should remove Items from everywhere", () => { - collection.remove(["test1", "test2"]).everywhere(); + it('should remove Items from everywhere', () => { + collection.remove(['test1', 'test2']).everywhere(); expect(collection.removeFromGroups).not.toHaveBeenCalled(); - expect(collection.removeItems).toHaveBeenCalledWith(["test1", "test2"]); + expect(collection.removeItems).toHaveBeenCalledWith(['test1', 'test2']); }); }); - describe("removeFromGroups function tests", () => { + describe('removeFromGroups function tests', () => { let dummyGroup1: Group; let dummyGroup2: Group; let dummyGroup3: Group; @@ -1786,20 +1786,20 @@ describe("Collection Tests", () => { beforeEach(() => { dummyGroup1 = new Group( collection, - ["dummyItem1", "dummyItem2", "dummyItem3", "unknownItem"], + ['dummyItem1', 'dummyItem2', 'dummyItem3', 'unknownItem'], { - key: "dummyGroup1", - } + key: 'dummyGroup1', + }, ); dummyGroup2 = new Group( collection, - ["dummyItem2", "dummyItem3", "unknownItem"], + ['dummyItem2', 'dummyItem3', 'unknownItem'], { - key: "dummyGroup2", - } + key: 'dummyGroup2', + }, ); - dummyGroup3 = new Group(collection, ["dummyItem3", "unknownItem"], { - key: "dummyGroup3", + dummyGroup3 = new Group(collection, ['dummyItem3', 'unknownItem'], { + key: 'dummyGroup3', }); collection.groups = { dummyGroup1: dummyGroup1, @@ -1813,42 +1813,42 @@ describe("Collection Tests", () => { dummyGroup3.remove = jest.fn(); }); - it("should remove ItemKey from Group", () => { - collection.removeFromGroups("dummyItem2", "dummyGroup1"); + it('should remove ItemKey from Group', () => { + collection.removeFromGroups('dummyItem2', 'dummyGroup1'); expect(collection.removeItems).not.toHaveBeenCalled(); - expect(dummyGroup1.remove).toHaveBeenCalledWith("dummyItem2"); + expect(dummyGroup1.remove).toHaveBeenCalledWith('dummyItem2'); expect(dummyGroup2.remove).not.toHaveBeenCalled(); expect(dummyGroup3.remove).not.toHaveBeenCalled(); }); - it("should remove ItemKeys from Groups", () => { + it('should remove ItemKeys from Groups', () => { collection.removeFromGroups( - ["dummyItem2", "dummyItem3"], - ["dummyGroup2", "dummyGroup3"] + ['dummyItem2', 'dummyItem3'], + ['dummyGroup2', 'dummyGroup3'], ); expect(collection.removeItems).not.toHaveBeenCalled(); expect(dummyGroup1.remove).not.toHaveBeenCalled(); - expect(dummyGroup2.remove).toHaveBeenCalledWith("dummyItem2"); - expect(dummyGroup2.remove).toHaveBeenCalledWith("dummyItem3"); - expect(dummyGroup3.remove).not.toHaveBeenCalledWith("dummyItem2"); - expect(dummyGroup3.remove).toHaveBeenCalledWith("dummyItem3"); + expect(dummyGroup2.remove).toHaveBeenCalledWith('dummyItem2'); + expect(dummyGroup2.remove).toHaveBeenCalledWith('dummyItem3'); + expect(dummyGroup3.remove).not.toHaveBeenCalledWith('dummyItem2'); + expect(dummyGroup3.remove).toHaveBeenCalledWith('dummyItem3'); }); - it("should remove Item from Collection if it got removed from all Groups in which it was in", () => { - collection.removeFromGroups("dummyItem2", [ - "dummyGroup2", - "dummyGroup1", + it('should remove Item from Collection if it got removed from all Groups in which it was in', () => { + collection.removeFromGroups('dummyItem2', [ + 'dummyGroup2', + 'dummyGroup1', ]); - expect(collection.removeItems).toHaveBeenCalledWith("dummyItem2"); - expect(dummyGroup1.remove).toHaveBeenCalledWith("dummyItem2"); - expect(dummyGroup2.remove).toHaveBeenCalledWith("dummyItem2"); + expect(collection.removeItems).toHaveBeenCalledWith('dummyItem2'); + expect(dummyGroup1.remove).toHaveBeenCalledWith('dummyItem2'); + expect(dummyGroup2.remove).toHaveBeenCalledWith('dummyItem2'); }); }); - describe("removeItems function test", () => { + describe('removeItems function test', () => { let dummySelector1: Selector; let dummySelector2: Selector; let dummyGroup1: Group; @@ -1857,9 +1857,9 @@ describe("Collection Tests", () => { let dummyItem2: Item; beforeEach(() => { - dummyItem1 = new Item(collection, { id: "dummyItem1", name: "Jeff" }); + dummyItem1 = new Item(collection, {id: 'dummyItem1', name: 'Jeff'}); dummyItem1.persistent = new StatePersistent(dummyItem1); - dummyItem2 = new Item(collection, { id: "dummyItem2", name: "Hans" }); + dummyItem2 = new Item(collection, {id: 'dummyItem2', name: 'Hans'}); dummyItem2.persistent = new StatePersistent(dummyItem2); collection.data = { dummyItem1: dummyItem1, @@ -1867,22 +1867,22 @@ describe("Collection Tests", () => { }; collection.size = 2; - dummyGroup1 = new Group(collection, ["dummyItem1", "dummyItem2"], { - key: "dummyGroup1", + dummyGroup1 = new Group(collection, ['dummyItem1', 'dummyItem2'], { + key: 'dummyGroup1', }); - dummyGroup2 = new Group(collection, ["dummyItem2"], { - key: "dummyGroup2", + dummyGroup2 = new Group(collection, ['dummyItem2'], { + key: 'dummyGroup2', }); collection.groups = { dummyGroup1: dummyGroup1, dummyGroup2: dummyGroup2, }; - dummySelector1 = new Selector(collection, "dummyItem1", { - key: "dummySelector1", + dummySelector1 = new Selector(collection, 'dummyItem1', { + key: 'dummySelector1', }); - dummySelector2 = new Selector(collection, "dummyItem2", { - key: "dummySelector2", + dummySelector2 = new Selector(collection, 'dummyItem2', { + key: 'dummySelector2', }); collection.selectors = { dummySelector1: dummySelector1, @@ -1899,56 +1899,56 @@ describe("Collection Tests", () => { dummySelector2.select = jest.fn(); }); - it("should remove Item from Collection, Groups and Selectors", () => { - collection.removeItems("dummyItem1"); + it('should remove Item from Collection, Groups and Selectors', () => { + collection.removeItems('dummyItem1'); - expect(collection.data).not.toHaveProperty("dummyItem1"); - expect(collection.data).toHaveProperty("dummyItem2"); + expect(collection.data).not.toHaveProperty('dummyItem1'); + expect(collection.data).toHaveProperty('dummyItem2'); expect(collection.size).toBe(1); expect(dummyItem1.persistent.removePersistedValue).toHaveBeenCalled(); expect( - dummyItem2.persistent.removePersistedValue + dummyItem2.persistent.removePersistedValue, ).not.toHaveBeenCalled(); - expect(dummyGroup1.remove).toHaveBeenCalledWith("dummyItem1"); + expect(dummyGroup1.remove).toHaveBeenCalledWith('dummyItem1'); expect(dummyGroup2.remove).not.toHaveBeenCalled(); - expect(dummySelector1.select).toHaveBeenCalledWith("dummyItem1", { + expect(dummySelector1.select).toHaveBeenCalledWith('dummyItem1', { force: true, }); expect(dummySelector2.select).not.toHaveBeenCalled(); }); - it("should remove Items from Collection, Groups and Selectors", () => { - collection.removeItems(["dummyItem1", "dummyItem2", "notExistingItem"]); + it('should remove Items from Collection, Groups and Selectors', () => { + collection.removeItems(['dummyItem1', 'dummyItem2', 'notExistingItem']); - expect(collection.data).not.toHaveProperty("dummyItem1"); - expect(collection.data).not.toHaveProperty("dummyItem2"); + expect(collection.data).not.toHaveProperty('dummyItem1'); + expect(collection.data).not.toHaveProperty('dummyItem2'); expect(collection.size).toBe(0); expect(dummyItem1.persistent.removePersistedValue).toHaveBeenCalled(); expect(dummyItem2.persistent.removePersistedValue).toHaveBeenCalled(); - expect(dummyGroup1.remove).toHaveBeenCalledWith("dummyItem1"); - expect(dummyGroup1.remove).toHaveBeenCalledWith("dummyItem2"); - expect(dummyGroup2.remove).not.toHaveBeenCalledWith("dummyItem1"); - expect(dummyGroup2.remove).toHaveBeenCalledWith("dummyItem2"); + expect(dummyGroup1.remove).toHaveBeenCalledWith('dummyItem1'); + expect(dummyGroup1.remove).toHaveBeenCalledWith('dummyItem2'); + expect(dummyGroup2.remove).not.toHaveBeenCalledWith('dummyItem1'); + expect(dummyGroup2.remove).toHaveBeenCalledWith('dummyItem2'); - expect(dummySelector1.select).toHaveBeenCalledWith("dummyItem1", { + expect(dummySelector1.select).toHaveBeenCalledWith('dummyItem1', { force: true, }); - expect(dummySelector2.select).toHaveBeenCalledWith("dummyItem2", { + expect(dummySelector2.select).toHaveBeenCalledWith('dummyItem2', { force: true, }); }); }); - describe("setData function tests", () => { + describe('setData function tests', () => { let dummyItem1: Item; beforeEach(() => { - dummyItem1 = new Item(collection, { id: "dummyItem1", name: "Jeff" }); + dummyItem1 = new Item(collection, {id: 'dummyItem1', name: 'Jeff'}); collection.data = { dummyItem1: dummyItem1, }; @@ -1958,25 +1958,25 @@ describe("Collection Tests", () => { dummyItem1.set = jest.fn(); }); - it("should create new Item out of valid Data, rebuild Groups and increase size (default config)", () => { - const response = collection.setData({ id: "dummyItem2", name: "Hans" }); + it('should create new Item out of valid Data, rebuild Groups and increase size (default config)', () => { + const response = collection.setData({id: 'dummyItem2', name: 'Hans'}); expect(response).toBeTruthy(); - expect(collection.data).toHaveProperty("dummyItem1"); - expect(collection.data).toHaveProperty("dummyItem2"); - expect(collection.data["dummyItem2"]).toBeInstanceOf(Item); - expect(collection.data["dummyItem2"]._value).toStrictEqual({ - id: "dummyItem2", - name: "Hans", + expect(collection.data).toHaveProperty('dummyItem1'); + expect(collection.data).toHaveProperty('dummyItem2'); + expect(collection.data['dummyItem2']).toBeInstanceOf(Item); + expect(collection.data['dummyItem2']._value).toStrictEqual({ + id: 'dummyItem2', + name: 'Hans', }); expect(collection.size).toBe(2); }); it("shouldn't create new Item if passed Data is no valid Object", () => { - const response = collection.setData("noObject" as any); + const response = collection.setData('noObject' as any); expect(console.error).toHaveBeenCalledWith( - `Agile Error: Item Data of Collection '${collection._key}' has to be an valid Object!` + `Agile Error: Item Data of Collection '${collection._key}' has to be an valid Object!`, ); expect(response).toBeFalsy(); @@ -1984,10 +1984,10 @@ describe("Collection Tests", () => { }); it("shouldn't create new Item if passed Data has no primaryKey", () => { - const response = collection.setData({ name: "Frank" } as any); + const response = collection.setData({name: 'Frank'} as any); expect(console.error).toHaveBeenCalledWith( - `Agile Error: Collection '${collection._key}' Item Data has to contain a primaryKey property called '${collection.config.primaryKey}'!` + `Agile Error: Collection '${collection._key}' Item Data has to contain a primaryKey property called '${collection.config.primaryKey}'!`, ); expect(response).toBeFalsy(); @@ -1996,19 +1996,19 @@ describe("Collection Tests", () => { it("should update Item with valid Data, shouldn't rebuild Groups and shouldn't increase size (default config)", () => { const response = collection.setData({ - id: "dummyItem1", - name: "Dieter", + id: 'dummyItem1', + name: 'Dieter', }); expect(response).toBeTruthy(); - expect(collection.data).toHaveProperty("dummyItem1"); - expect(collection.data["dummyItem1"]).toBeInstanceOf(Item); + expect(collection.data).toHaveProperty('dummyItem1'); + expect(collection.data['dummyItem1']).toBeInstanceOf(Item); expect(collection.size).toBe(1); expect(dummyItem1.set).toHaveBeenCalledWith( - { id: "dummyItem1", name: "Dieter" }, - { background: false } + {id: 'dummyItem1', name: 'Dieter'}, + {background: false}, ); expect(dummyItem1.patch).not.toHaveBeenCalled(); }); @@ -2016,21 +2016,21 @@ describe("Collection Tests", () => { it("should update Item with valid Data, shouldn't rebuild Groups and shouldn't increase size (config.background = true)", () => { const response = collection.setData( { - id: "dummyItem1", - name: "Dieter", + id: 'dummyItem1', + name: 'Dieter', }, - { background: true } + {background: true}, ); expect(response).toBeTruthy(); - expect(collection.data).toHaveProperty("dummyItem1"); - expect(collection.data["dummyItem1"]).toBeInstanceOf(Item); + expect(collection.data).toHaveProperty('dummyItem1'); + expect(collection.data['dummyItem1']).toBeInstanceOf(Item); expect(collection.size).toBe(1); expect(dummyItem1.set).toHaveBeenCalledWith( - { id: "dummyItem1", name: "Dieter" }, - { background: true } + {id: 'dummyItem1', name: 'Dieter'}, + {background: true}, ); expect(dummyItem1.patch).not.toHaveBeenCalled(); }); @@ -2038,22 +2038,22 @@ describe("Collection Tests", () => { it("should update Item with valid Data, shouldn't rebuild Groups and shouldn't increase size (config.patch = true, background: true)", () => { const response = collection.setData( { - id: "dummyItem1", - name: "Dieter", + id: 'dummyItem1', + name: 'Dieter', }, - { patch: true, background: true } + {patch: true, background: true}, ); expect(response).toBeTruthy(); - expect(collection.data).toHaveProperty("dummyItem1"); - expect(collection.data["dummyItem1"]).toBeInstanceOf(Item); + expect(collection.data).toHaveProperty('dummyItem1'); + expect(collection.data['dummyItem1']).toBeInstanceOf(Item); expect(collection.size).toBe(1); expect(dummyItem1.set).not.toHaveBeenCalled(); expect(dummyItem1.patch).toHaveBeenCalledWith( - { id: "dummyItem1", name: "Dieter" }, - { background: true } + {id: 'dummyItem1', name: 'Dieter'}, + {background: true}, ); }); @@ -2062,33 +2062,33 @@ describe("Collection Tests", () => { collection.size = 0; const response = collection.setData({ - id: "dummyItem1", - name: "Dieter", + id: 'dummyItem1', + name: 'Dieter', }); expect(response).toBeTruthy(); - expect(collection.data).toHaveProperty("dummyItem1"); - expect(collection.data["dummyItem1"]).toBeInstanceOf(Item); + expect(collection.data).toHaveProperty('dummyItem1'); + expect(collection.data['dummyItem1']).toBeInstanceOf(Item); expect(collection.size).toBe(1); expect(dummyItem1.set).toHaveBeenCalledWith( - { id: "dummyItem1", name: "Dieter" }, - { background: false } + {id: 'dummyItem1', name: 'Dieter'}, + {background: false}, ); }); }); - describe("rebuildGroupsThatIncludeItemKey function tests", () => { + describe('rebuildGroupsThatIncludeItemKey function tests', () => { let dummyGroup1: Group; let dummyGroup2: Group; beforeEach(() => { - dummyGroup1 = new Group(collection, ["dummyItem1", "dummyItem2"], { - key: "dummyGroup1", + dummyGroup1 = new Group(collection, ['dummyItem1', 'dummyItem2'], { + key: 'dummyGroup1', }); - dummyGroup2 = new Group(collection, ["dummyItem2"], { - key: "dummyGroup2", + dummyGroup2 = new Group(collection, ['dummyItem2'], { + key: 'dummyGroup2', }); collection.groups = { dummyGroup1: dummyGroup1, @@ -2099,8 +2099,8 @@ describe("Collection Tests", () => { dummyGroup2.ingest = jest.fn(); }); - it("should call ingest on each Group that includes the passed ItemKey (default config)", () => { - collection.rebuildGroupsThatIncludeItemKey("dummyItem1"); + it('should call ingest on each Group that includes the passed ItemKey (default config)', () => { + collection.rebuildGroupsThatIncludeItemKey('dummyItem1'); expect(dummyGroup1.ingest).toHaveBeenCalledWith({ background: false, @@ -2111,8 +2111,8 @@ describe("Collection Tests", () => { expect(dummyGroup2.ingest).not.toHaveBeenCalled(); }); - it("should call ingest on each Group that includes the passed ItemKey (specific config)", () => { - collection.rebuildGroupsThatIncludeItemKey("dummyItem2", { + it('should call ingest on each Group that includes the passed ItemKey (specific config)', () => { + collection.rebuildGroupsThatIncludeItemKey('dummyItem2', { background: true, sideEffects: false, }); diff --git a/packages/core/tests/unit/collection/group.test.ts b/packages/core/tests/unit/collection/group.test.ts index 5487bd5b..358a6527 100644 --- a/packages/core/tests/unit/collection/group.test.ts +++ b/packages/core/tests/unit/collection/group.test.ts @@ -7,9 +7,9 @@ import { Item, State, CollectionPersistent, -} from "../../../src"; +} from '../../../src'; -describe("Group Tests", () => { +describe('Group Tests', () => { interface ItemInterface { id: string; name: string; @@ -20,21 +20,21 @@ describe("Group Tests", () => { beforeEach(() => { jest.clearAllMocks(); - dummyAgile = new Agile({ localStorage: false }); + dummyAgile = new Agile({localStorage: false}); dummyCollection = new Collection(dummyAgile, { - key: "dummyCollection", + key: 'dummyCollection', }); - jest.spyOn(Group.prototype, "rebuild"); - jest.spyOn(Group.prototype, "addSideEffect"); + jest.spyOn(Group.prototype, 'rebuild'); + jest.spyOn(Group.prototype, 'addSideEffect'); console.error = jest.fn(); console.warn = jest.fn(); }); - it("should create Group with no initialItems (default config)", () => { + it('should create Group with no initialItems (default config)', () => { // Overwrite methods once to not call it - jest.spyOn(Group.prototype, "rebuild").mockReturnValueOnce(undefined); - jest.spyOn(Group.prototype, "addSideEffect").mockReturnValueOnce(undefined); + jest.spyOn(Group.prototype, 'rebuild').mockReturnValueOnce(undefined); + jest.spyOn(Group.prototype, 'addSideEffect').mockReturnValueOnce(undefined); const group = new Group(dummyCollection); @@ -61,13 +61,13 @@ describe("Group Tests", () => { expect(group.watchers).toStrictEqual({}); }); - it("should create Group with no initialItems (specific config)", () => { + it('should create Group with no initialItems (specific config)', () => { // Overwrite methods once to not call it - jest.spyOn(Group.prototype, "rebuild").mockReturnValueOnce(undefined); - jest.spyOn(Group.prototype, "addSideEffect").mockReturnValueOnce(undefined); + jest.spyOn(Group.prototype, 'rebuild').mockReturnValueOnce(undefined); + jest.spyOn(Group.prototype, 'addSideEffect').mockReturnValueOnce(undefined); const group = new Group(dummyCollection, [], { - key: "dummyKey", + key: 'dummyKey', isPlaceholder: true, }); @@ -76,7 +76,7 @@ describe("Group Tests", () => { expect(group._items).toStrictEqual([]); expect(group.notFoundItemKeys).toStrictEqual([]); - expect(group._key).toBe("dummyKey"); + expect(group._key).toBe('dummyKey'); expect(group.valueType).toBeUndefined(); expect(group.isSet).toBeFalsy(); expect(group.isPlaceholder).toBeTruthy(); @@ -86,7 +86,7 @@ describe("Group Tests", () => { expect(group.nextStateValue).toStrictEqual([]); expect(group.observer).toBeInstanceOf(StateObserver); expect(group.observer.deps.size).toBe(0); - expect(group.observer._key).toBe("dummyKey"); + expect(group.observer._key).toBe('dummyKey'); expect(group.sideEffects).toStrictEqual({}); expect(group.computeMethod).toBeUndefined(); expect(group.isPersisted).toBeFalsy(); @@ -94,12 +94,12 @@ describe("Group Tests", () => { expect(group.watchers).toStrictEqual({}); }); - it("should create Group with initialItems (default config)", () => { + it('should create Group with initialItems (default config)', () => { // Overwrite methods once to not call it - jest.spyOn(Group.prototype, "rebuild").mockReturnValueOnce(undefined); - jest.spyOn(Group.prototype, "addSideEffect").mockReturnValueOnce(undefined); + jest.spyOn(Group.prototype, 'rebuild').mockReturnValueOnce(undefined); + jest.spyOn(Group.prototype, 'addSideEffect').mockReturnValueOnce(undefined); - const group = new Group(dummyCollection, ["test1", "test2", "test3"]); + const group = new Group(dummyCollection, ['test1', 'test2', 'test3']); expect(group.collection()).toBe(dummyCollection); expect(group._output).toStrictEqual([]); @@ -110,10 +110,10 @@ describe("Group Tests", () => { expect(group.valueType).toBeUndefined(); expect(group.isSet).toBeFalsy(); expect(group.isPlaceholder).toBeFalsy(); - expect(group.initialStateValue).toStrictEqual(["test1", "test2", "test3"]); - expect(group._value).toStrictEqual(["test1", "test2", "test3"]); - expect(group.previousStateValue).toStrictEqual(["test1", "test2", "test3"]); - expect(group.nextStateValue).toStrictEqual(["test1", "test2", "test3"]); + expect(group.initialStateValue).toStrictEqual(['test1', 'test2', 'test3']); + expect(group._value).toStrictEqual(['test1', 'test2', 'test3']); + expect(group.previousStateValue).toStrictEqual(['test1', 'test2', 'test3']); + expect(group.nextStateValue).toStrictEqual(['test1', 'test2', 'test3']); expect(group.observer).toBeInstanceOf(StateObserver); expect(group.observer.deps.size).toBe(0); expect(group.observer._key).toBeUndefined(); @@ -124,7 +124,7 @@ describe("Group Tests", () => { expect(group.watchers).toStrictEqual({}); }); - describe("Group Function Tests", () => { + describe('Group Function Tests', () => { let group: Group; let dummyItem1: Item; let dummyItem2: Item; @@ -132,59 +132,59 @@ describe("Group Tests", () => { beforeEach(() => { group = new Group(dummyCollection, [], { - key: "groupKey", + key: 'groupKey', }); - dummyCollection.collect({ id: "dummyItem1Key", name: "coolName" }); - dummyCollection.collect({ id: "dummyItem2Key", name: "coolName" }); - dummyItem1 = dummyCollection.getItem("dummyItem1Key"); - dummyItem2 = dummyCollection.getItem("dummyItem2Key"); + dummyCollection.collect({id: 'dummyItem1Key', name: 'coolName'}); + dummyCollection.collect({id: 'dummyItem2Key', name: 'coolName'}); + dummyItem1 = dummyCollection.getItem('dummyItem1Key'); + dummyItem2 = dummyCollection.getItem('dummyItem2Key'); dummyItem3 = new Item(dummyCollection, { - id: "dummyItem3Key", - name: "coolName", + id: 'dummyItem3Key', + name: 'coolName', }); }); - describe("output get function tests", () => { + describe('output get function tests', () => { beforeEach(() => { - jest.spyOn(ComputedTracker, "tracked"); + jest.spyOn(ComputedTracker, 'tracked'); }); - it("should return output of Group and call ComputedTracker.tracked", () => { + it('should return output of Group and call ComputedTracker.tracked', () => { group._output = [ - { id: "1", name: "Frank" }, - { id: "2", name: "Hans" }, + {id: '1', name: 'Frank'}, + {id: '2', name: 'Hans'}, ]; const response = group.output; expect(response).toStrictEqual([ - { id: "1", name: "Frank" }, - { id: "2", name: "Hans" }, + {id: '1', name: 'Frank'}, + {id: '2', name: 'Hans'}, ]); expect(ComputedTracker.tracked).toHaveBeenCalledWith(group.observer); }); }); - describe("output set function tests", () => { - it("should set output to passed value", () => { + describe('output set function tests', () => { + it('should set output to passed value', () => { group.output = [ - { id: "12", name: "Hans der 3" }, - { id: "99", name: "Frank" }, + {id: '12', name: 'Hans der 3'}, + {id: '99', name: 'Frank'}, ]; expect(group._output).toStrictEqual([ - { id: "12", name: "Hans der 3" }, - { id: "99", name: "Frank" }, + {id: '12', name: 'Hans der 3'}, + {id: '99', name: 'Frank'}, ]); }); }); - describe("item get function tests", () => { + describe('item get function tests', () => { beforeEach(() => { - jest.spyOn(ComputedTracker, "tracked"); + jest.spyOn(ComputedTracker, 'tracked'); }); - it("should return items of Group and call ComputedTracker.tracked", () => { + it('should return items of Group and call ComputedTracker.tracked', () => { group._items = [() => dummyItem1, () => dummyItem2]; const response = group.items; @@ -194,8 +194,8 @@ describe("Group Tests", () => { }); }); - describe("item set function tests", () => { - it("should set items to passed value", () => { + describe('item set function tests', () => { + it('should set items to passed value', () => { group.items = [dummyItem1, dummyItem2]; expect(group._items.length).toBe(2); @@ -204,199 +204,199 @@ describe("Group Tests", () => { }); }); - describe("has function tests", () => { + describe('has function tests', () => { beforeEach(() => { - group._value = ["test1", "test2"]; + group._value = ['test1', 'test2']; }); - it("should return true if group contains ItemKey", () => { - expect(group.has("test1")).toBeTruthy(); + it('should return true if group contains ItemKey', () => { + expect(group.has('test1')).toBeTruthy(); }); it("should return false if group doesn't contain ItemKey", () => { - expect(group.has("notExistingKey")).toBeFalsy(); + expect(group.has('notExistingKey')).toBeFalsy(); }); }); - describe("size function tests", () => { - it("should return size of Group", () => { - group._value = ["test1", "test2"]; + describe('size function tests', () => { + it('should return size of Group', () => { + group._value = ['test1', 'test2']; expect(group.size).toBe(2); }); }); - describe("remove function tests", () => { + describe('remove function tests', () => { beforeEach(() => { group.nextStateValue = [ - "dummyItem1Key", - "dummyItem2Key", - "dummyItem3Key", + 'dummyItem1Key', + 'dummyItem2Key', + 'dummyItem3Key', ]; group.set = jest.fn(); }); - it("should remove Item from Group not in background (default config)", () => { - group.remove("dummyItem1Key"); + it('should remove Item from Group not in background (default config)', () => { + group.remove('dummyItem1Key'); expect(console.error).not.toHaveBeenCalled(); expect(group.set).toHaveBeenCalledWith( - ["dummyItem2Key", "dummyItem3Key"], - { background: false } + ['dummyItem2Key', 'dummyItem3Key'], + {background: false}, ); }); - it("should remove Item from Group in background (config.background = true)", () => { - group.remove("dummyItem1Key", { background: true }); + it('should remove Item from Group in background (config.background = true)', () => { + group.remove('dummyItem1Key', {background: true}); expect(console.error).not.toHaveBeenCalled(); expect(group.set).toHaveBeenCalledWith( - ["dummyItem2Key", "dummyItem3Key"], - { background: true } + ['dummyItem2Key', 'dummyItem3Key'], + {background: true}, ); }); it("shouldn't remove not existing Item from Group (default config)", () => { - group.remove("notExistingKey"); + group.remove('notExistingKey'); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Couldn't find ItemKey 'notExistingKey' in Group 'groupKey'!" + "Agile Error: Couldn't find ItemKey 'notExistingKey' in Group 'groupKey'!", ); expect(group.set).not.toHaveBeenCalled(); }); it("should remove Item from Group that doesn't exist in Collection in background (default config)", () => { - group.remove("dummyItem3Key"); + group.remove('dummyItem3Key'); expect(console.error).not.toHaveBeenCalled(); expect(group.set).toHaveBeenCalledWith( - ["dummyItem1Key", "dummyItem2Key"], - { background: true } + ['dummyItem1Key', 'dummyItem2Key'], + {background: true}, ); }); - it("should remove Items from Group not in background (default config)", () => { - group.remove(["dummyItem1Key", "notExistingItemKey", "dummyItem3Key"]); + it('should remove Items from Group not in background (default config)', () => { + group.remove(['dummyItem1Key', 'notExistingItemKey', 'dummyItem3Key']); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Couldn't find ItemKey 'notExistingItemKey' in Group 'groupKey'!" + "Agile Error: Couldn't find ItemKey 'notExistingItemKey' in Group 'groupKey'!", ); - expect(group.set).toHaveBeenCalledWith(["dummyItem2Key"], { + expect(group.set).toHaveBeenCalledWith(['dummyItem2Key'], { background: false, }); }); it("should remove Items from Group in background if passing not existing Item and Item that doesn't exist in Collection (default config)", () => { - group.remove(["notExistingItemKey", "dummyItem3Key"]); + group.remove(['notExistingItemKey', 'dummyItem3Key']); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Couldn't find ItemKey 'notExistingItemKey' in Group 'groupKey'!" + "Agile Error: Couldn't find ItemKey 'notExistingItemKey' in Group 'groupKey'!", ); expect(group.set).toHaveBeenCalledWith( - ["dummyItem1Key", "dummyItem2Key"], + ['dummyItem1Key', 'dummyItem2Key'], { background: true, - } + }, ); }); }); - describe("add function tests", () => { + describe('add function tests', () => { beforeEach(() => { - group.nextStateValue = ["placeholder", "dummyItem1Key", "placeholder"]; + group.nextStateValue = ['placeholder', 'dummyItem1Key', 'placeholder']; group.set = jest.fn(); }); - it("should add Item to Group at the end not in background (default config)", () => { - group.add("dummyItem2Key"); + it('should add Item to Group at the end not in background (default config)', () => { + group.add('dummyItem2Key'); expect(group.set).toHaveBeenCalledWith( - ["placeholder", "dummyItem1Key", "placeholder", "dummyItem2Key"], - { background: false } + ['placeholder', 'dummyItem1Key', 'placeholder', 'dummyItem2Key'], + {background: false}, ); }); it("should add Item to Group at the beginning not in background (config.method = 'unshift')", () => { - group.add("dummyItem2Key", { method: "unshift" }); + group.add('dummyItem2Key', {method: 'unshift'}); expect(group.set).toHaveBeenCalledWith( - ["dummyItem2Key", "placeholder", "dummyItem1Key", "placeholder"], - { background: false } + ['dummyItem2Key', 'placeholder', 'dummyItem1Key', 'placeholder'], + {background: false}, ); }); - it("should add Item to Group at the end in background (config.background = true)", () => { - group.add("dummyItem2Key", { background: true }); + it('should add Item to Group at the end in background (config.background = true)', () => { + group.add('dummyItem2Key', {background: true}); expect(group.set).toHaveBeenCalledWith( - ["placeholder", "dummyItem1Key", "placeholder", "dummyItem2Key"], - { background: true } + ['placeholder', 'dummyItem1Key', 'placeholder', 'dummyItem2Key'], + {background: true}, ); }); it("should add Item to Group at the end that doesn't exist in Collection in background (default config)", () => { - group.add("dummyItem3Key"); + group.add('dummyItem3Key'); expect(group.set).toHaveBeenCalledWith( - ["placeholder", "dummyItem1Key", "placeholder", "dummyItem3Key"], - { background: true } + ['placeholder', 'dummyItem1Key', 'placeholder', 'dummyItem3Key'], + {background: true}, ); }); it("shouldn't add existing Item to Group again (default config)", () => { - group.add("dummyItem1Key"); + group.add('dummyItem1Key'); expect(group.set).not.toHaveBeenCalled(); }); - it("should remove existingItem and add it again at the end to the Group not in background (config.overwrite = true)", () => { - group.add("dummyItem1Key", { overwrite: true }); + it('should remove existingItem and add it again at the end to the Group not in background (config.overwrite = true)', () => { + group.add('dummyItem1Key', {overwrite: true}); expect(group.set).toHaveBeenCalledWith( - ["placeholder", "placeholder", "dummyItem1Key"], - { background: false } + ['placeholder', 'placeholder', 'dummyItem1Key'], + {background: false}, ); }); - it("should add Items to Group at the end not in background (default config)", () => { - group.add(["dummyItem1Key", "dummyItem2Key", "dummyItem3Key"]); + it('should add Items to Group at the end not in background (default config)', () => { + group.add(['dummyItem1Key', 'dummyItem2Key', 'dummyItem3Key']); expect(group.set).toHaveBeenCalledWith( [ - "placeholder", - "dummyItem1Key", - "placeholder", - "dummyItem2Key", - "dummyItem3Key", + 'placeholder', + 'dummyItem1Key', + 'placeholder', + 'dummyItem2Key', + 'dummyItem3Key', ], - { background: false } + {background: false}, ); }); - it("should add Items toGroup at the end in background if passing existing Item and in Collection not existing Item (default config)", () => { - group.add(["dummyItem1Key", "dummyItem3Key"]); + it('should add Items toGroup at the end in background if passing existing Item and in Collection not existing Item (default config)', () => { + group.add(['dummyItem1Key', 'dummyItem3Key']); expect(group.set).toHaveBeenCalledWith( - ["placeholder", "dummyItem1Key", "placeholder", "dummyItem3Key"], - { background: true } + ['placeholder', 'dummyItem1Key', 'placeholder', 'dummyItem3Key'], + {background: true}, ); }); }); - describe("replace function tests", () => { + describe('replace function tests', () => { beforeEach(() => { group._value = [1, 2, 3, 4, 5, 6]; group.set = jest.fn(); }); - it("should replace oldItemKey with new ItemKey (default config)", () => { + it('should replace oldItemKey with new ItemKey (default config)', () => { group.replace(4, 20); expect(group.set).toHaveBeenCalledWith([1, 2, 3, 20, 5, 6], {}); }); - it("should replace oldItemKey with new ItemKey (specific config)", () => { + it('should replace oldItemKey with new ItemKey (specific config)', () => { group.replace(2, 20, { storage: true, sideEffects: false, @@ -409,12 +409,12 @@ describe("Group Tests", () => { }); }); - describe("persist function tests", () => { + describe('persist function tests', () => { beforeEach(() => { - jest.spyOn(State.prototype, "persist"); + jest.spyOn(State.prototype, 'persist'); }); - it("should persist Group with GroupKey (default config)", () => { + it('should persist Group with GroupKey (default config)', () => { group.persist(); expect(State.prototype.persist).toHaveBeenCalledWith(group._key, { @@ -423,82 +423,82 @@ describe("Group Tests", () => { }); }); - it("should persist Group with GroupKey (specific config)", () => { - group.persist({ instantiate: false, storageKeys: ["test1", "test2"] }); + it('should persist Group with GroupKey (specific config)', () => { + group.persist({instantiate: false, storageKeys: ['test1', 'test2']}); expect(State.prototype.persist).toHaveBeenCalledWith(group._key, { instantiate: false, - storageKeys: ["test1", "test2"], + storageKeys: ['test1', 'test2'], }); }); - it("should persist Group with passed Key (default config)", () => { - group.persist("dummyKey"); + it('should persist Group with passed Key (default config)', () => { + group.persist('dummyKey'); - expect(State.prototype.persist).toHaveBeenCalledWith("dummyKey", { + expect(State.prototype.persist).toHaveBeenCalledWith('dummyKey', { instantiate: true, storageKeys: [], }); }); - it("should persist Group with passed Key (specific config)", () => { - group.persist("dummyKey", { + it('should persist Group with passed Key (specific config)', () => { + group.persist('dummyKey', { instantiate: false, - storageKeys: ["test1", "test2"], + storageKeys: ['test1', 'test2'], }); - expect(State.prototype.persist).toHaveBeenCalledWith("dummyKey", { + expect(State.prototype.persist).toHaveBeenCalledWith('dummyKey', { instantiate: false, - storageKeys: ["test1", "test2"], + storageKeys: ['test1', 'test2'], }); }); - it("should persist Group with formatted GroupKey (config.followCollectionPersistKeyPattern)", () => { - group.persist({ followCollectionPersistKeyPattern: true }); + it('should persist Group with formatted GroupKey (config.followCollectionPersistKeyPattern)', () => { + group.persist({followCollectionPersistKeyPattern: true}); expect(State.prototype.persist).toHaveBeenCalledWith( CollectionPersistent.getGroupStorageKey( group._key, - dummyCollection._key + dummyCollection._key, ), { instantiate: true, storageKeys: [], - } + }, ); }); - it("should persist Group with formatted passed Key (config.followCollectionPersistKeyPattern)", () => { - group.persist("dummyKey", { followCollectionPersistKeyPattern: true }); + it('should persist Group with formatted passed Key (config.followCollectionPersistKeyPattern)', () => { + group.persist('dummyKey', {followCollectionPersistKeyPattern: true}); expect(State.prototype.persist).toHaveBeenCalledWith( CollectionPersistent.getGroupStorageKey( - "dummyKey", - dummyCollection._key + 'dummyKey', + dummyCollection._key, ), { instantiate: true, storageKeys: [], - } + }, ); }); }); - describe("rebuild function tests", () => { + describe('rebuild function tests', () => { beforeEach(() => { - group._value = ["dummyItem1Key", "dummyItem3Key", "dummyItem2Key"]; + group._value = ['dummyItem1Key', 'dummyItem3Key', 'dummyItem2Key']; }); - it("should build Group output and items and set notFoundItemKeys to not found Item Keys", () => { + it('should build Group output and items and set notFoundItemKeys to not found Item Keys', () => { group.rebuild(); expect( - console.warn + console.warn, ).toHaveBeenCalledWith( `Agile Warn: Couldn't find some Items in Collection '${dummyCollection._key}' (${group._key})`, - ["dummyItem3Key"] + ['dummyItem3Key'], ); - expect(group.notFoundItemKeys).toStrictEqual(["dummyItem3Key"]); + expect(group.notFoundItemKeys).toStrictEqual(['dummyItem3Key']); expect(group.items).toStrictEqual([dummyItem1, dummyItem2]); expect(group._output).toStrictEqual([ dummyItem1._value, diff --git a/packages/core/tests/unit/collection/item.test.ts b/packages/core/tests/unit/collection/item.test.ts index 039b9fd1..975132ee 100644 --- a/packages/core/tests/unit/collection/item.test.ts +++ b/packages/core/tests/unit/collection/item.test.ts @@ -1,28 +1,28 @@ -import { Item, Collection, Agile, StateObserver, State } from "../../../src"; +import {Item, Collection, Agile, StateObserver, State} from '../../../src'; -describe("Item Tests", () => { +describe('Item Tests', () => { let dummyAgile: Agile; let dummyCollection: Collection; beforeEach(() => { - dummyAgile = new Agile({ localStorage: false }); + dummyAgile = new Agile({localStorage: false}); dummyCollection = new Collection(dummyAgile); - jest.spyOn(State.prototype, "setKey"); - jest.spyOn(Item.prototype, "setKey"); + jest.spyOn(State.prototype, 'setKey'); + jest.spyOn(Item.prototype, 'setKey'); }); - it("should create Item (default config)", () => { + it('should create Item (default config)', () => { // Overwrite setKey once to not call it - jest.spyOn(Item.prototype, "setKey").mockReturnValueOnce(undefined); + jest.spyOn(Item.prototype, 'setKey').mockReturnValueOnce(undefined); - const dummyData = { id: "dummyId", name: "dummyName" }; + const dummyData = {id: 'dummyId', name: 'dummyName'}; const item = new Item(dummyCollection, dummyData); expect(item.collection()).toBe(dummyCollection); expect(item.setKey).toHaveBeenCalledWith( dummyData[dummyCollection.config.primaryKey], - { updateItemValuePrimaryKey: false } + {updateItemValuePrimaryKey: false}, ); expect(item._key).toBe(dummyData[dummyCollection.config.primaryKey]); @@ -36,7 +36,7 @@ describe("Item Tests", () => { expect(item.observer).toBeInstanceOf(StateObserver); expect(item.observer.deps.size).toBe(0); expect(item.observer._key).toBe( - dummyData[dummyCollection.config.primaryKey] + dummyData[dummyCollection.config.primaryKey], ); expect(item.sideEffects).toStrictEqual({}); expect(item.computeMethod).toBeUndefined(); @@ -46,11 +46,11 @@ describe("Item Tests", () => { expect(item.isSelected).toBeFalsy(); }); - it("should create Item (specific config)", () => { + it('should create Item (specific config)', () => { // Overwrite setKey once to not call it - jest.spyOn(Item.prototype, "setKey").mockReturnValueOnce(undefined); + jest.spyOn(Item.prototype, 'setKey').mockReturnValueOnce(undefined); - const dummyData = { id: "dummyId", name: "dummyName" }; + const dummyData = {id: 'dummyId', name: 'dummyName'}; const item = new Item(dummyCollection, dummyData, { isPlaceholder: true, }); @@ -58,7 +58,7 @@ describe("Item Tests", () => { expect(item.collection()).toBe(dummyCollection); expect(item.setKey).toHaveBeenCalledWith( dummyData[dummyCollection.config.primaryKey], - { updateItemValuePrimaryKey: false } + {updateItemValuePrimaryKey: false}, ); expect(item._key).toBe(dummyData[dummyCollection.config.primaryKey]); @@ -72,7 +72,7 @@ describe("Item Tests", () => { expect(item.observer).toBeInstanceOf(StateObserver); expect(item.observer.deps.size).toBe(0); expect(item.observer._key).toBe( - dummyData[dummyCollection.config.primaryKey] + dummyData[dummyCollection.config.primaryKey], ); expect(item.sideEffects).toStrictEqual({}); expect(item.computeMethod).toBeUndefined(); @@ -82,33 +82,33 @@ describe("Item Tests", () => { expect(item.isSelected).toBeFalsy(); }); - describe("Item Function Tests", () => { + describe('Item Function Tests', () => { let item: Item; beforeEach(() => { - item = new Item(dummyCollection, { id: "dummyId", name: "dummyName" }); + item = new Item(dummyCollection, {id: 'dummyId', name: 'dummyName'}); item.removeSideEffect = jest.fn(); item.patch = jest.fn(); - jest.spyOn(item, "addSideEffect"); + jest.spyOn(item, 'addSideEffect'); dummyCollection.rebuildGroupsThatIncludeItemKey = jest.fn(); }); - describe("setKey function tests", () => { - it("should call State setKey, add rebuildGroup sideEffect to Item and patch newItemKey into Item (default config)", () => { - item.setKey("myNewKey"); + describe('setKey function tests', () => { + it('should call State setKey, add rebuildGroup sideEffect to Item and patch newItemKey into Item (default config)', () => { + item.setKey('myNewKey'); - expect(State.prototype.setKey).toHaveBeenCalledWith("myNewKey"); + expect(State.prototype.setKey).toHaveBeenCalledWith('myNewKey'); expect(item.removeSideEffect).toHaveBeenCalledWith( - Item.updateGroupSideEffectKey + Item.updateGroupSideEffectKey, ); expect(item.addSideEffect).toHaveBeenCalledWith( Item.updateGroupSideEffectKey, - expect.any(Function) + expect.any(Function), ); expect(item.patch).toHaveBeenCalledWith( { - [dummyCollection.config.primaryKey]: "myNewKey", + [dummyCollection.config.primaryKey]: 'myNewKey', }, { sideEffects: true, @@ -116,32 +116,32 @@ describe("Item Tests", () => { force: false, storage: true, overwrite: false, - } + }, ); expect( - dummyCollection.rebuildGroupsThatIncludeItemKey + dummyCollection.rebuildGroupsThatIncludeItemKey, ).not.toHaveBeenCalled(); }); - it("should call State setKey, add rebuildGroup sideEffect to Item and patch newItemKey into Item (specific config)", () => { - item.setKey("myNewKey", { + it('should call State setKey, add rebuildGroup sideEffect to Item and patch newItemKey into Item (specific config)', () => { + item.setKey('myNewKey', { sideEffects: false, background: true, force: true, }); - expect(State.prototype.setKey).toHaveBeenCalledWith("myNewKey"); + expect(State.prototype.setKey).toHaveBeenCalledWith('myNewKey'); expect(item.removeSideEffect).toHaveBeenCalledWith( - Item.updateGroupSideEffectKey + Item.updateGroupSideEffectKey, ); expect(item.addSideEffect).toHaveBeenCalledWith( Item.updateGroupSideEffectKey, - expect.any(Function) + expect.any(Function), ); expect(item.patch).toHaveBeenCalledWith( { - [dummyCollection.config.primaryKey]: "myNewKey", + [dummyCollection.config.primaryKey]: 'myNewKey', }, { sideEffects: false, @@ -149,53 +149,53 @@ describe("Item Tests", () => { force: true, storage: true, overwrite: false, - } + }, ); expect( - dummyCollection.rebuildGroupsThatIncludeItemKey + dummyCollection.rebuildGroupsThatIncludeItemKey, ).not.toHaveBeenCalled(); }); - it("should call State setKey, add rebuildGroup sideEffect to Item and call rebuildGroup once (config.updateItemValuePrimaryKey = false)", () => { - item.setKey("myNewKey", { + it('should call State setKey, add rebuildGroup sideEffect to Item and call rebuildGroup once (config.updateItemValuePrimaryKey = false)', () => { + item.setKey('myNewKey', { updateItemValuePrimaryKey: false, }); - expect(State.prototype.setKey).toHaveBeenCalledWith("myNewKey"); + expect(State.prototype.setKey).toHaveBeenCalledWith('myNewKey'); expect(item.removeSideEffect).toHaveBeenCalledWith( - Item.updateGroupSideEffectKey + Item.updateGroupSideEffectKey, ); expect(item.addSideEffect).toHaveBeenCalledWith( Item.updateGroupSideEffectKey, - expect.any(Function) + expect.any(Function), ); expect(item.patch).not.toHaveBeenCalled(); expect( - dummyCollection.rebuildGroupsThatIncludeItemKey - ).toHaveBeenCalledWith("myNewKey", { + dummyCollection.rebuildGroupsThatIncludeItemKey, + ).toHaveBeenCalledWith('myNewKey', { background: false, force: false, sideEffects: true, }); }); - describe("test added sideEffect called Item.updateGroupSideEffectKey", () => { + describe('test added sideEffect called Item.updateGroupSideEffectKey', () => { beforeEach(() => { dummyCollection.rebuildGroupsThatIncludeItemKey = jest.fn(); }); - it("should call rebuildGroupThatIncludeItemKey", () => { - item.setKey("myNewKey"); + it('should call rebuildGroupThatIncludeItemKey', () => { + item.setKey('myNewKey'); item.sideEffects[Item.updateGroupSideEffectKey]({ - dummy: "property", + dummy: 'property', }); expect( - dummyCollection.rebuildGroupsThatIncludeItemKey - ).toHaveBeenCalledWith("myNewKey", { dummy: "property" }); + dummyCollection.rebuildGroupsThatIncludeItemKey, + ).toHaveBeenCalledWith('myNewKey', {dummy: 'property'}); }); }); }); diff --git a/packages/core/tests/unit/collection/selector.test.ts b/packages/core/tests/unit/collection/selector.test.ts index 948bc37b..0a2d78bb 100644 --- a/packages/core/tests/unit/collection/selector.test.ts +++ b/packages/core/tests/unit/collection/selector.test.ts @@ -1,6 +1,6 @@ -import { Selector, Agile, Collection, StateObserver, Item } from "../../../src"; +import {Selector, Agile, Collection, StateObserver, Item} from '../../../src'; -describe("Selector Tests", () => { +describe('Selector Tests', () => { interface ItemInterface { id: string; name: string; @@ -11,23 +11,23 @@ describe("Selector Tests", () => { beforeEach(() => { jest.clearAllMocks(); - dummyAgile = new Agile({ localStorage: false }); + dummyAgile = new Agile({localStorage: false}); dummyCollection = new Collection(dummyAgile); - jest.spyOn(Selector.prototype, "select"); + jest.spyOn(Selector.prototype, 'select'); console.warn = jest.fn(); }); - it("should create Selector and call initial select (default config)", () => { + it('should create Selector and call initial select (default config)', () => { // Overwrite select once to not call it - jest.spyOn(Selector.prototype, "select").mockReturnValueOnce(undefined); + jest.spyOn(Selector.prototype, 'select').mockReturnValueOnce(undefined); - const selector = new Selector(dummyCollection, "dummyItemKey"); + const selector = new Selector(dummyCollection, 'dummyItemKey'); expect(selector.collection()).toBe(dummyCollection); expect(selector.item).toBeUndefined(); expect(selector._itemKey).toBe(Selector.dummyItemKey); - expect(selector.select).toHaveBeenCalledWith("dummyItemKey", { + expect(selector.select).toHaveBeenCalledWith('dummyItemKey', { overwrite: true, }); @@ -49,22 +49,22 @@ describe("Selector Tests", () => { expect(selector.watchers).toStrictEqual({}); }); - it("should create Selector and call initial select (specific config)", () => { + it('should create Selector and call initial select (specific config)', () => { // Overwrite select once to not call it - jest.spyOn(Selector.prototype, "select").mockReturnValueOnce(undefined); + jest.spyOn(Selector.prototype, 'select').mockReturnValueOnce(undefined); - const selector = new Selector(dummyCollection, "dummyItemKey", { - key: "dummyKey", + const selector = new Selector(dummyCollection, 'dummyItemKey', { + key: 'dummyKey', }); expect(selector.collection()).toBe(dummyCollection); expect(selector.item).toBeUndefined(); expect(selector._itemKey).toBe(Selector.dummyItemKey); - expect(selector.select).toHaveBeenCalledWith("dummyItemKey", { + expect(selector.select).toHaveBeenCalledWith('dummyItemKey', { overwrite: true, }); - expect(selector._key).toBe("dummyKey"); + expect(selector._key).toBe('dummyKey'); expect(selector.valueType).toBeUndefined(); expect(selector.isSet).toBeFalsy(); expect(selector.isPlaceholder).toBeTruthy(); @@ -74,7 +74,7 @@ describe("Selector Tests", () => { expect(selector.nextStateValue).toBeUndefined(); expect(selector.observer).toBeInstanceOf(StateObserver); expect(selector.observer.deps.size).toBe(0); - expect(selector.observer._key).toBe("dummyKey"); + expect(selector.observer._key).toBe('dummyKey'); expect(selector.sideEffects).toStrictEqual({}); expect(selector.computeMethod).toBeUndefined(); expect(selector.isPersisted).toBeFalsy(); @@ -84,9 +84,9 @@ describe("Selector Tests", () => { it("should create Selector and shouldn't call initial select (config.isPlaceholder = true)", () => { // Overwrite select once to not call it - jest.spyOn(Selector.prototype, "select").mockReturnValueOnce(undefined); + jest.spyOn(Selector.prototype, 'select').mockReturnValueOnce(undefined); - const selector = new Selector(dummyCollection, "dummyItemKey", { + const selector = new Selector(dummyCollection, 'dummyItemKey', { isPlaceholder: true, }); @@ -113,49 +113,49 @@ describe("Selector Tests", () => { expect(selector.watchers).toStrictEqual({}); }); - describe("Selector Function Tests", () => { + describe('Selector Function Tests', () => { let selector: Selector; let dummyItem1: Item; beforeEach(() => { dummyItem1 = new Item(dummyCollection, { - id: "dummyItem1", - name: "Frank", + id: 'dummyItem1', + name: 'Frank', }); dummyCollection.data = { dummyItem1: dummyItem1, }; - selector = new Selector(dummyCollection, "dummyItem1"); + selector = new Selector(dummyCollection, 'dummyItem1'); }); - describe("itemKey set function tests", () => { - it("should call select function with passed value", () => { + describe('itemKey set function tests', () => { + it('should call select function with passed value', () => { selector.select = jest.fn(); - selector.itemKey = "newItemKey"; + selector.itemKey = 'newItemKey'; - expect(selector.select).toHaveBeenCalledWith("newItemKey"); + expect(selector.select).toHaveBeenCalledWith('newItemKey'); }); }); - describe("itemKey get function tests", () => { - it("should return current ItemKey of Selector", () => { - selector._itemKey = "coolItemKey"; + describe('itemKey get function tests', () => { + it('should return current ItemKey of Selector', () => { + selector._itemKey = 'coolItemKey'; - expect(selector.itemKey).toBe("coolItemKey"); + expect(selector.itemKey).toBe('coolItemKey'); }); }); - describe("select function tests", () => { + describe('select function tests', () => { let dummyItem2: Item; beforeEach(() => { dummyItem2 = new Item(dummyCollection, { - id: "dummyItem2", - name: "Jeff", + id: 'dummyItem2', + name: 'Jeff', }); - dummyCollection.data["dummyItem2"] = dummyItem2; + dummyCollection.data['dummyItem2'] = dummyItem2; selector.rebuildSelector = jest.fn(); selector.unselect = jest.fn(); @@ -163,18 +163,18 @@ describe("Selector Tests", () => { dummyItem2.addSideEffect = jest.fn(); }); - it("should unselect old selected Item and select new Item (default config)", () => { + it('should unselect old selected Item and select new Item (default config)', () => { dummyCollection.getItemWithReference = jest.fn(() => dummyItem2); - selector.select("dummyItem2"); + selector.select('dummyItem2'); expect(dummyCollection.getItemWithReference).toHaveBeenCalledWith( - "dummyItem2" + 'dummyItem2', ); - expect(selector._itemKey).toBe("dummyItem2"); + expect(selector._itemKey).toBe('dummyItem2'); expect(selector.item).toBe(dummyItem2); - expect(selector.unselect).toHaveBeenCalledWith({ background: true }); + expect(selector.unselect).toHaveBeenCalledWith({background: true}); expect(selector.rebuildSelector).toHaveBeenCalledWith({ background: false, sideEffects: true, @@ -185,15 +185,15 @@ describe("Selector Tests", () => { expect(dummyItem2.addSideEffect).toHaveBeenCalledWith( Selector.rebuildSelectorSideEffectKey, - expect.any(Function) + expect.any(Function), ); expect(dummyItem2.isSelected).toBeTruthy(); }); - it("should unselect old selected Item and select new Item (specific config)", () => { + it('should unselect old selected Item and select new Item (specific config)', () => { dummyCollection.getItemWithReference = jest.fn(() => dummyItem2); - selector.select("dummyItem2", { + selector.select('dummyItem2', { force: true, sideEffects: false, background: true, @@ -201,12 +201,12 @@ describe("Selector Tests", () => { }); expect(dummyCollection.getItemWithReference).toHaveBeenCalledWith( - "dummyItem2" + 'dummyItem2', ); - expect(selector._itemKey).toBe("dummyItem2"); + expect(selector._itemKey).toBe('dummyItem2'); expect(selector.item).toBe(dummyItem2); - expect(selector.unselect).toHaveBeenCalledWith({ background: true }); + expect(selector.unselect).toHaveBeenCalledWith({background: true}); expect(selector.rebuildSelector).toHaveBeenCalledWith({ background: true, sideEffects: false, @@ -217,24 +217,24 @@ describe("Selector Tests", () => { expect(dummyItem2.addSideEffect).toHaveBeenCalledWith( Selector.rebuildSelectorSideEffectKey, - expect.any(Function) + expect.any(Function), ); expect(dummyItem2.isSelected).toBeTruthy(); }); - it("should print warning if trying to select selected Item again (default config)", () => { + it('should print warning if trying to select selected Item again (default config)', () => { dummyCollection.getItemWithReference = jest.fn(() => dummyItem1); - selector.select("dummyItem1"); + selector.select('dummyItem1'); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Selector has already selected 'dummyItem1'!" + "Agile Warn: Selector has already selected 'dummyItem1'!", ); expect(dummyCollection.getItemWithReference).toHaveBeenCalledWith( - "dummyItem1" + 'dummyItem1', ); - expect(selector._itemKey).toBe("dummyItem1"); + expect(selector._itemKey).toBe('dummyItem1'); expect(selector.item).toBe(dummyItem1); expect(selector.unselect).not.toHaveBeenCalled(); expect(selector.rebuildSelector).not.toHaveBeenCalled(); @@ -243,20 +243,20 @@ describe("Selector Tests", () => { expect(dummyItem1.isSelected).toBeTruthy(); }); - it("should be able to select selected Item again (config.force = true)", () => { + it('should be able to select selected Item again (config.force = true)', () => { dummyCollection.getItemWithReference = jest.fn(() => dummyItem1); - selector.select("dummyItem1", { force: true }); + selector.select('dummyItem1', {force: true}); expect(console.warn).not.toHaveBeenCalled(); expect(dummyCollection.getItemWithReference).toHaveBeenCalledWith( - "dummyItem1" + 'dummyItem1', ); - expect(selector._itemKey).toBe("dummyItem1"); + expect(selector._itemKey).toBe('dummyItem1'); expect(selector.item).toBe(dummyItem1); - expect(selector.unselect).toHaveBeenCalledWith({ background: true }); + expect(selector.unselect).toHaveBeenCalledWith({background: true}); expect(selector.rebuildSelector).toHaveBeenCalledWith({ background: false, sideEffects: true, @@ -267,23 +267,23 @@ describe("Selector Tests", () => { expect(dummyItem1.addSideEffect).toHaveBeenCalledWith( Selector.rebuildSelectorSideEffectKey, - expect.any(Function) + expect.any(Function), ); expect(dummyItem1.isSelected).toBeTruthy(); }); - it("should remove old selected Item, select new Item and overwrite Selector if old Item is placeholder (default config)", async () => { + it('should remove old selected Item, select new Item and overwrite Selector if old Item is placeholder (default config)', async () => { dummyCollection.getItemWithReference = jest.fn(() => dummyItem2); dummyItem1.isPlaceholder = true; - selector.select("dummyItem2"); + selector.select('dummyItem2'); expect(dummyCollection.getItemWithReference).toHaveBeenCalledWith( - "dummyItem2" + 'dummyItem2', ); - expect(selector._itemKey).toBe("dummyItem2"); + expect(selector._itemKey).toBe('dummyItem2'); expect(selector.item).toBe(dummyItem2); - expect(selector.unselect).toHaveBeenCalledWith({ background: true }); + expect(selector.unselect).toHaveBeenCalledWith({background: true}); expect(selector.rebuildSelector).toHaveBeenCalledWith({ background: false, sideEffects: true, @@ -294,7 +294,7 @@ describe("Selector Tests", () => { expect(dummyItem2.addSideEffect).toHaveBeenCalledWith( Selector.rebuildSelectorSideEffectKey, - expect.any(Function) + expect.any(Function), ); expect(dummyItem2.isSelected).toBeTruthy(); }); @@ -303,14 +303,14 @@ describe("Selector Tests", () => { dummyCollection.getItemWithReference = jest.fn(() => dummyItem2); dummyItem1.isPlaceholder = true; - selector.select("dummyItem2", { overwrite: false }); + selector.select('dummyItem2', {overwrite: false}); expect(dummyCollection.getItemWithReference).toHaveBeenCalledWith( - "dummyItem2" + 'dummyItem2', ); - expect(selector._itemKey).toBe("dummyItem2"); + expect(selector._itemKey).toBe('dummyItem2'); expect(selector.item).toBe(dummyItem2); - expect(selector.unselect).toHaveBeenCalledWith({ background: true }); + expect(selector.unselect).toHaveBeenCalledWith({background: true}); expect(selector.rebuildSelector).toHaveBeenCalledWith({ background: false, sideEffects: true, @@ -321,31 +321,31 @@ describe("Selector Tests", () => { expect(dummyItem2.addSideEffect).toHaveBeenCalledWith( Selector.rebuildSelectorSideEffectKey, - expect.any(Function) + expect.any(Function), ); expect(dummyItem2.isSelected).toBeTruthy(); }); - describe("test added sideEffect called Selector.rebuildSelectorSideEffectKey", () => { + describe('test added sideEffect called Selector.rebuildSelectorSideEffectKey', () => { beforeEach(() => { selector.rebuildSelector = jest.fn(); }); - it("should call rebuildSelector", () => { - selector.select("dummyItem1"); + it('should call rebuildSelector', () => { + selector.select('dummyItem1'); dummyItem1.sideEffects[Selector.rebuildSelectorSideEffectKey]({ - dummy: "property", + dummy: 'property', }); expect(selector.rebuildSelector).toHaveBeenCalledWith({ - dummy: "property", + dummy: 'property', }); }); }); }); - describe("unselect function tests", () => { + describe('unselect function tests', () => { beforeEach(() => { selector.rebuildSelector = jest.fn(); dummyItem1.removeSideEffect = jest.fn(); @@ -356,7 +356,7 @@ describe("Selector Tests", () => { expect(dummyItem1.isSelected).toBeFalsy(); expect(dummyItem1.removeSideEffect).toHaveBeenCalledWith( - Selector.rebuildSelectorSideEffectKey + Selector.rebuildSelectorSideEffectKey, ); expect(selector.item).toBeUndefined(); @@ -364,7 +364,7 @@ describe("Selector Tests", () => { expect(selector.isPlaceholder).toBeTruthy(); expect(selector.rebuildSelector).toHaveBeenCalledWith({}); - expect(dummyCollection.data).toHaveProperty("dummyItem1"); + expect(dummyCollection.data).toHaveProperty('dummyItem1'); }); it("should unselect current selected Item and shouldn't remove it from Collection (specific config)", () => { @@ -376,7 +376,7 @@ describe("Selector Tests", () => { expect(dummyItem1.isSelected).toBeFalsy(); expect(dummyItem1.removeSideEffect).toHaveBeenCalledWith( - Selector.rebuildSelectorSideEffectKey + Selector.rebuildSelectorSideEffectKey, ); expect(selector.item).toBeUndefined(); @@ -388,17 +388,17 @@ describe("Selector Tests", () => { force: true, }); - expect(dummyCollection.data).toHaveProperty("dummyItem1"); + expect(dummyCollection.data).toHaveProperty('dummyItem1'); }); - it("should unselect current selected placeholder Item and remove it from Collection (default config)", () => { + it('should unselect current selected placeholder Item and remove it from Collection (default config)', () => { dummyItem1.isPlaceholder = true; selector.unselect(); expect(dummyItem1.isSelected).toBeFalsy(); expect(dummyItem1.removeSideEffect).toHaveBeenCalledWith( - Selector.rebuildSelectorSideEffectKey + Selector.rebuildSelectorSideEffectKey, ); expect(selector.item).toBeUndefined(); @@ -406,46 +406,46 @@ describe("Selector Tests", () => { expect(selector.isPlaceholder).toBeTruthy(); expect(selector.rebuildSelector).toHaveBeenCalledWith({}); - expect(dummyCollection.data).not.toHaveProperty("dummyItem1"); + expect(dummyCollection.data).not.toHaveProperty('dummyItem1'); }); }); - describe("hasSelected function tests", () => { + describe('hasSelected function tests', () => { beforeEach(() => { - selector._itemKey = "dummyItemKey"; + selector._itemKey = 'dummyItemKey'; }); - it("should return true if Selector has selected ItemKey and Item isSelected", () => { + it('should return true if Selector has selected ItemKey and Item isSelected', () => { selector.item.isSelected = true; - expect(selector.hasSelected("dummyItemKey")).toBeTruthy(); + expect(selector.hasSelected('dummyItemKey')).toBeTruthy(); }); it("should return false if Selector hasn't selected ItemKey and Item isSelected", () => { selector.item.isSelected = true; - expect(selector.hasSelected("notSelectedItemKey")).toBeFalsy(); + expect(selector.hasSelected('notSelectedItemKey')).toBeFalsy(); }); it("should return false if Selector has selected ItemKey and Item isn't isSelected", () => { selector.item.isSelected = false; - expect(selector.hasSelected("dummyItemKey")).toBeFalsy(); + expect(selector.hasSelected('dummyItemKey')).toBeFalsy(); }); it("should return false if Selector hasn't selected ItemKey and Item isn't isSelected", () => { selector.item.isSelected = false; - expect(selector.hasSelected("notSelectedItemKey")).toBeFalsy(); + expect(selector.hasSelected('notSelectedItemKey')).toBeFalsy(); }); }); - describe("rebuildSelector function tests", () => { + describe('rebuildSelector function tests', () => { beforeEach(() => { selector.set = jest.fn(); }); - it("should set selector value to item value (default config)", () => { + it('should set selector value to item value (default config)', () => { selector.item = dummyItem1; selector.rebuildSelector(); @@ -453,7 +453,7 @@ describe("Selector Tests", () => { expect(selector.set).toHaveBeenCalledWith(selector.item._value, {}); }); - it("should set selector value to item value (specific config)", () => { + it('should set selector value to item value (specific config)', () => { selector.item = dummyItem1; selector.rebuildSelector({ @@ -469,7 +469,7 @@ describe("Selector Tests", () => { }); }); - it("should set selector value to undefined if Item is undefined (default config)", () => { + it('should set selector value to undefined if Item is undefined (default config)', () => { selector.item = undefined; selector.rebuildSelector(); diff --git a/packages/core/tests/unit/computed/computed.test.ts b/packages/core/tests/unit/computed/computed.test.ts index c1df8e96..5ed07f19 100644 --- a/packages/core/tests/unit/computed/computed.test.ts +++ b/packages/core/tests/unit/computed/computed.test.ts @@ -5,20 +5,20 @@ import { Observer, State, ComputedTracker, -} from "../../../src"; +} from '../../../src'; -describe("Computed Tests", () => { +describe('Computed Tests', () => { let dummyAgile: Agile; beforeEach(() => { - dummyAgile = new Agile({ localStorage: false }); + dummyAgile = new Agile({localStorage: false}); - jest.spyOn(Computed.prototype, "recompute"); + jest.spyOn(Computed.prototype, 'recompute'); console.error = jest.fn(); }); - it("should create Computed (default config)", () => { - const computedFunction = () => "computedValue"; + it('should create Computed (default config)', () => { + const computedFunction = () => 'computedValue'; const computed = new Computed(dummyAgile, computedFunction); @@ -29,10 +29,10 @@ describe("Computed Tests", () => { expect(computed.valueType).toBeUndefined(); expect(computed.isSet).toBeFalsy(); expect(computed.isPlaceholder).toBeFalsy(); - expect(computed.initialStateValue).toBe("computedValue"); - expect(computed._value).toBe("computedValue"); - expect(computed.previousStateValue).toBe("computedValue"); - expect(computed.nextStateValue).toBe("computedValue"); + expect(computed.initialStateValue).toBe('computedValue'); + expect(computed._value).toBe('computedValue'); + expect(computed.previousStateValue).toBe('computedValue'); + expect(computed.nextStateValue).toBe('computedValue'); expect(computed.observer).toBeInstanceOf(StateObserver); expect(computed.observer.deps.size).toBe(0); expect(computed.observer._key).toBeUndefined(); @@ -45,16 +45,16 @@ describe("Computed Tests", () => { expect(computed.recompute).toHaveBeenCalled(); }); - it("should create Computed (specific config)", () => { + it('should create Computed (specific config)', () => { const dummyObserver1 = new Observer(dummyAgile); const dummyObserver2 = new Observer(dummyAgile); const dummyState = new State(dummyAgile, undefined); const dummyStateObserver = new StateObserver(dummyState); dummyState.observer = dummyStateObserver; - const computedFunction = () => "computedValue"; + const computedFunction = () => 'computedValue'; const computed = new Computed(dummyAgile, computedFunction, { - key: "coolComputed", + key: 'coolComputed', deps: [dummyObserver1], computedDeps: [dummyObserver2, undefined, dummyState], }); @@ -65,18 +65,18 @@ describe("Computed Tests", () => { dummyObserver2, dummyStateObserver, ]); // x - expect(computed._key).toBe("coolComputed"); // x + expect(computed._key).toBe('coolComputed'); // x expect(computed.valueType).toBeUndefined(); expect(computed.isSet).toBeFalsy(); expect(computed.isPlaceholder).toBeFalsy(); - expect(computed.initialStateValue).toBe("computedValue"); - expect(computed._value).toBe("computedValue"); - expect(computed.previousStateValue).toBe("computedValue"); - expect(computed.nextStateValue).toBe("computedValue"); + expect(computed.initialStateValue).toBe('computedValue'); + expect(computed._value).toBe('computedValue'); + expect(computed.previousStateValue).toBe('computedValue'); + expect(computed.nextStateValue).toBe('computedValue'); expect(computed.observer).toBeInstanceOf(StateObserver); expect(computed.observer.deps.size).toBe(1); // x expect(computed.observer.deps.has(dummyObserver1)).toBeTruthy(); // x - expect(computed.observer._key).toBe("coolComputed"); // x + expect(computed.observer._key).toBe('coolComputed'); // x expect(computed.sideEffects).toStrictEqual({}); expect(computed.computeMethod).toBeUndefined(); expect(computed.isPersisted).toBeFalsy(); @@ -86,20 +86,20 @@ describe("Computed Tests", () => { expect(computed.recompute).toHaveBeenCalled(); }); - describe("Computed Function Tests", () => { + describe('Computed Function Tests', () => { let computed: Computed; - const dummyComputeFunction = jest.fn(() => "computedValue"); + const dummyComputeFunction = jest.fn(() => 'computedValue'); beforeEach(() => { computed = new Computed(dummyAgile, dummyComputeFunction); }); - describe("recompute function tests", () => { + describe('recompute function tests', () => { beforeEach(() => { computed.ingest = jest.fn(); }); - it("should ingest Computed into Runtime (default config)", () => { + it('should ingest Computed into Runtime (default config)', () => { computed.recompute(); expect(computed.ingest).toHaveBeenCalledWith({ @@ -108,7 +108,7 @@ describe("Computed Tests", () => { }); }); - it("should ingest Computed into Runtime (specific config)", () => { + it('should ingest Computed into Runtime (specific config)', () => { computed.recompute({ background: true, sideEffects: false, @@ -121,8 +121,8 @@ describe("Computed Tests", () => { }); }); - describe("updateComputeFunction function tests", () => { - const newComputeFunction = () => "newComputedValue"; + describe('updateComputeFunction function tests', () => { + const newComputeFunction = () => 'newComputedValue'; let dummyObserver: Observer; let oldDummyObserver: Observer; let dummyStateObserver: StateObserver; @@ -137,7 +137,7 @@ describe("Computed Tests", () => { computed.hardCodedDeps = [oldDummyObserver]; }); - it("should updated computeFunction and overwrite hardCodedDeps (default config)", () => { + it('should updated computeFunction and overwrite hardCodedDeps (default config)', () => { computed.updateComputeFunction(newComputeFunction, [ dummyState, dummyObserver, @@ -158,7 +158,7 @@ describe("Computed Tests", () => { }); }); - it("should updated computeFunction and overwrite hardCodedDeps (specific config)", () => { + it('should updated computeFunction and overwrite hardCodedDeps (specific config)', () => { computed.updateComputeFunction(newComputeFunction, [], { background: true, sideEffects: false, @@ -173,11 +173,11 @@ describe("Computed Tests", () => { }); }); - it("should updated computeFunction and add additional deps to hardCodedDeps (config.overwriteDeps = false)", () => { + it('should updated computeFunction and add additional deps to hardCodedDeps (config.overwriteDeps = false)', () => { computed.updateComputeFunction( newComputeFunction, [dummyState, dummyObserver], - { overwriteDeps: false } + {overwriteDeps: false}, ); expect(computed.hardCodedDeps).toStrictEqual([ @@ -198,7 +198,7 @@ describe("Computed Tests", () => { }); }); - describe("computeValue function tests", () => { + describe('computeValue function tests', () => { let dummyObserver1: Observer; let dummyObserver2: Observer; let dummyObserver3: Observer; @@ -216,8 +216,8 @@ describe("Computed Tests", () => { ComputedTracker.track = jest.fn(); }); - it("should call computeFunction and track dependencies the computeFunction depends on", () => { - computed.computeFunction = jest.fn(() => "newComputedValue"); + it('should call computeFunction and track dependencies the computeFunction depends on', () => { + computed.computeFunction = jest.fn(() => 'newComputedValue'); ComputedTracker.getTrackedObservers = jest.fn(() => [ dummyObserver1, dummyObserver2, @@ -225,7 +225,7 @@ describe("Computed Tests", () => { const response = computed.computeValue(); - expect(response).toBe("newComputedValue"); + expect(response).toBe('newComputedValue'); expect(dummyComputeFunction).toHaveBeenCalled(); expect(ComputedTracker.track).toHaveBeenCalled(); expect(ComputedTracker.getTrackedObservers).toHaveBeenCalled(); @@ -241,7 +241,7 @@ describe("Computed Tests", () => { }); }); - describe("formatDeps function tests", () => { + describe('formatDeps function tests', () => { let dummyObserver: Observer; let dummyStateObserver: StateObserver; let dummyState: State; @@ -254,45 +254,45 @@ describe("Computed Tests", () => { dummyState.observer = dummyStateObserver; }); - it("should return Observers that could be extracted from the passed Instances", () => { + it('should return Observers that could be extracted from the passed Instances', () => { const response = computed.formatDeps([ dummyObserver, dummyState, undefined, {}, - { observer: "fake" }, + {observer: 'fake'}, ]); expect(response).toStrictEqual([dummyObserver, dummyStateObserver]); }); }); - describe("patch function tests", () => { - it("should print error", () => { + describe('patch function tests', () => { + it('should print error', () => { computed.patch(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: You can't use patch method on ComputedState!" + "Agile Error: You can't use patch method on ComputedState!", ); }); }); - describe("persist function tests", () => { - it("should print error", () => { + describe('persist function tests', () => { + it('should print error', () => { computed.persist(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: You can't use persist method on ComputedState!" + "Agile Error: You can't use persist method on ComputedState!", ); }); }); - describe("invert function tests", () => { - it("should print error", () => { + describe('invert function tests', () => { + it('should print error', () => { computed.invert(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: You can't use invert method on ComputedState!" + "Agile Error: You can't use invert method on ComputedState!", ); }); }); diff --git a/packages/core/tests/unit/computed/computed.tracker.test.ts b/packages/core/tests/unit/computed/computed.tracker.test.ts index 9848b29d..f3320884 100644 --- a/packages/core/tests/unit/computed/computed.tracker.test.ts +++ b/packages/core/tests/unit/computed/computed.tracker.test.ts @@ -1,19 +1,19 @@ -import { ComputedTracker, Observer, Agile } from "../../../src"; +import {ComputedTracker, Observer, Agile} from '../../../src'; -describe("ComputedTracker Tests", () => { +describe('ComputedTracker Tests', () => { let dummyAgile: Agile; beforeEach(() => { - dummyAgile = new Agile({ localStorage: false }); + dummyAgile = new Agile({localStorage: false}); // Reset ComputedTracker (because it works static) ComputedTracker.isTracking = false; ComputedTracker.trackedObservers = new Set(); }); - describe("ComputedTracker Function Tests", () => { - describe("track function tests", () => { - it("should set isTracking to true", () => { + describe('ComputedTracker Function Tests', () => { + describe('track function tests', () => { + it('should set isTracking to true', () => { ComputedTracker.isTracking = false; ComputedTracker.track(); @@ -22,21 +22,21 @@ describe("ComputedTracker Tests", () => { }); }); - describe("tracked function tests", () => { + describe('tracked function tests', () => { let dummyObserver: Observer; beforeEach(() => { dummyObserver = new Observer(dummyAgile); }); - it("should add passed Observer to trackedObservers if ComputedTracker is tracking", () => { + it('should add passed Observer to trackedObservers if ComputedTracker is tracking', () => { ComputedTracker.isTracking = true; ComputedTracker.tracked(dummyObserver); expect(ComputedTracker.trackedObservers.size).toBe(1); expect( - ComputedTracker.trackedObservers.has(dummyObserver) + ComputedTracker.trackedObservers.has(dummyObserver), ).toBeTruthy(); }); @@ -49,7 +49,7 @@ describe("ComputedTracker Tests", () => { }); }); - describe("getTrackedObserver function tests", () => { + describe('getTrackedObserver function tests', () => { let dummyObserver1: Observer; let dummyObserver2: Observer; @@ -62,7 +62,7 @@ describe("ComputedTracker Tests", () => { ComputedTracker.trackedObservers.add(dummyObserver2); }); - it("should return tracked Observers and reset tracking", () => { + it('should return tracked Observers and reset tracking', () => { const response = ComputedTracker.getTrackedObservers(); expect(response).toStrictEqual([dummyObserver1, dummyObserver2]); diff --git a/packages/core/tests/unit/event/event.job.test.ts b/packages/core/tests/unit/event/event.job.test.ts index b6673df4..9d3ba8e6 100644 --- a/packages/core/tests/unit/event/event.job.test.ts +++ b/packages/core/tests/unit/event/event.job.test.ts @@ -1,19 +1,19 @@ -import { EventJob } from "../../../src"; +import {EventJob} from '../../../src'; -describe("EventJob Tests", () => { - it("should create EventJob (without keys)", () => { - const eventJob = new EventJob("myPayload"); +describe('EventJob Tests', () => { + it('should create EventJob (without keys)', () => { + const eventJob = new EventJob('myPayload'); - expect(eventJob.payload).toBe("myPayload"); + expect(eventJob.payload).toBe('myPayload'); expect(eventJob.creationTimestamp).toBeCloseTo(new Date().getTime(), -1); expect(eventJob.keys).toBeUndefined(); }); - it("should create EventJob (with keys)", () => { - const eventJob = new EventJob("myPayload", ["dummyKey1", "dummyKey2"]); + it('should create EventJob (with keys)', () => { + const eventJob = new EventJob('myPayload', ['dummyKey1', 'dummyKey2']); - expect(eventJob.payload).toBe("myPayload"); + expect(eventJob.payload).toBe('myPayload'); expect(eventJob.creationTimestamp).toBeCloseTo(new Date().getTime(), -1); - expect(eventJob.keys).toStrictEqual(["dummyKey1", "dummyKey2"]); + expect(eventJob.keys).toStrictEqual(['dummyKey1', 'dummyKey2']); }); }); diff --git a/packages/core/tests/unit/event/event.observer.test.ts b/packages/core/tests/unit/event/event.observer.test.ts index e77ec824..67e40dde 100644 --- a/packages/core/tests/unit/event/event.observer.test.ts +++ b/packages/core/tests/unit/event/event.observer.test.ts @@ -5,18 +5,18 @@ import { SubscriptionContainer, Event, RuntimeJob, -} from "../../../src"; +} from '../../../src'; -describe("EventObserver Tests", () => { +describe('EventObserver Tests', () => { let dummyAgile: Agile; let dummyEvent: Event; beforeEach(() => { - dummyAgile = new Agile({ localStorage: false }); + dummyAgile = new Agile({localStorage: false}); dummyEvent = new Event(dummyAgile); }); - it("should create EventObserver (default config)", () => { + it('should create EventObserver (default config)', () => { const eventObserver = new EventObserver(dummyEvent); expect(eventObserver).toBeInstanceOf(EventObserver); @@ -27,14 +27,14 @@ describe("EventObserver Tests", () => { expect(eventObserver.subs.size).toBe(0); }); - it("should create EventObserver (specific config)", () => { - const dummyObserver1 = new Observer(dummyAgile, { key: "dummyObserver1" }); - const dummyObserver2 = new Observer(dummyAgile, { key: "dummyObserver2" }); + it('should create EventObserver (specific config)', () => { + const dummyObserver1 = new Observer(dummyAgile, {key: 'dummyObserver1'}); + const dummyObserver2 = new Observer(dummyAgile, {key: 'dummyObserver2'}); const dummySubscription1 = new SubscriptionContainer(); const dummySubscription2 = new SubscriptionContainer(); const eventObserver = new EventObserver(dummyEvent, { - key: "testKey", + key: 'testKey', deps: [dummyObserver1, dummyObserver2], subs: [dummySubscription1, dummySubscription2], }); @@ -42,7 +42,7 @@ describe("EventObserver Tests", () => { expect(eventObserver).toBeInstanceOf(EventObserver); expect(eventObserver.event()).toBe(dummyEvent); expect(eventObserver.value).toBeUndefined(); - expect(eventObserver._key).toBe("testKey"); + expect(eventObserver._key).toBe('testKey'); expect(eventObserver.deps.size).toBe(2); expect(eventObserver.deps.has(dummyObserver2)).toBeTruthy(); expect(eventObserver.deps.has(dummyObserver1)).toBeTruthy(); @@ -51,17 +51,17 @@ describe("EventObserver Tests", () => { expect(eventObserver.subs.has(dummySubscription2)).toBeTruthy(); }); - describe("EventObserver Function Tests", () => { + describe('EventObserver Function Tests', () => { let eventObserver: EventObserver; beforeEach(() => { eventObserver = new EventObserver(dummyEvent, { - key: "eventObserverKey", + key: 'eventObserverKey', }); }); - describe("trigger function tests", () => { - it("should create RuntimeJob and ingest it into the Runtime (default config)", () => { + describe('trigger function tests', () => { + it('should create RuntimeJob and ingest it into the Runtime (default config)', () => { dummyAgile.runtime.ingest = jest.fn((job: RuntimeJob) => { expect(job._key).toBe(eventObserver._key); expect(job.observer).toBe(eventObserver); @@ -78,13 +78,13 @@ describe("EventObserver Tests", () => { expect.any(RuntimeJob), { perform: true, - } + }, ); }); - it("should ingest Event into Runtime (specific config)", () => { + it('should ingest Event into Runtime (specific config)', () => { dummyAgile.runtime.ingest = jest.fn((job: RuntimeJob) => { - expect(job._key).toBe("coolKey"); + expect(job._key).toBe('coolKey'); expect(job.observer).toBe(eventObserver); expect(job.config).toStrictEqual({ background: true, @@ -95,7 +95,7 @@ describe("EventObserver Tests", () => { eventObserver.trigger({ background: true, - key: "coolKey", + key: 'coolKey', perform: false, force: true, }); @@ -104,12 +104,12 @@ describe("EventObserver Tests", () => { expect.any(RuntimeJob), { perform: false, - } + }, ); }); }); - describe("perform function tests", () => { + describe('perform function tests', () => { // No tests necessary }); }); diff --git a/packages/core/tests/unit/event/event.test.ts b/packages/core/tests/unit/event/event.test.ts index d62f9bca..31e29f95 100644 --- a/packages/core/tests/unit/event/event.test.ts +++ b/packages/core/tests/unit/event/event.test.ts @@ -1,16 +1,16 @@ -import { Event, Agile, Observer, EventObserver } from "../../../src"; -import * as Utils from "../../../src/utils"; +import {Event, Agile, Observer, EventObserver} from '../../../src'; +import * as Utils from '../../../src/utils'; -describe("Event Tests", () => { +describe('Event Tests', () => { let dummyAgile: Agile; beforeEach(() => { - dummyAgile = new Agile({ localStorage: false }); + dummyAgile = new Agile({localStorage: false}); console.error = jest.fn(); }); - it("should create Event (default config)", () => { + it('should create Event (default config)', () => { const event = new Event(dummyAgile); expect(event.config).toStrictEqual({ @@ -31,11 +31,11 @@ describe("Event Tests", () => { expect(event.payload).toBeUndefined(); }); - it("should create Event (specific config)", () => { + it('should create Event (specific config)', () => { const dummyObserver = new Observer(dummyAgile); const event = new Event(dummyAgile, { - key: "coolEvent", + key: 'coolEvent', deps: [dummyObserver], delay: 20, maxUses: 40, @@ -49,114 +49,114 @@ describe("Event Tests", () => { overlap: false, rerender: true, }); - expect(event._key).toBe("coolEvent"); + expect(event._key).toBe('coolEvent'); expect(event.uses).toBe(0); expect(event.callbacks).toStrictEqual({}); expect(event.enabled).toBeFalsy(); expect(event.observer).toBeInstanceOf(EventObserver); expect(event.observer.deps.size).toBe(1); expect(event.observer.deps.has(dummyObserver)).toBeTruthy(); - expect(event.observer._key).toBe("coolEvent"); + expect(event.observer._key).toBe('coolEvent'); expect(event.currentTimeout).toBeUndefined(); expect(event.queue).toStrictEqual([]); expect(event.payload).toBeUndefined(); }); - describe("Event Function Tests", () => { + describe('Event Function Tests', () => { let event: Event; beforeEach(() => { event = new Event(dummyAgile, { - key: "eventKey", + key: 'eventKey', }); }); - describe("key set function tests", () => { - it("should call setKey with passed value", () => { + describe('key set function tests', () => { + it('should call setKey with passed value', () => { event.setKey = jest.fn(); - event.key = "newKey"; + event.key = 'newKey'; - expect(event.setKey).toHaveBeenCalledWith("newKey"); + expect(event.setKey).toHaveBeenCalledWith('newKey'); }); }); - describe("key get function tests", () => { - it("should return current State Key", () => { - expect(event.key).toBe("eventKey"); + describe('key get function tests', () => { + it('should return current State Key', () => { + expect(event.key).toBe('eventKey'); }); }); - describe("setKey function tests", () => { - it("should update existing Key in all instances", () => { - event.setKey("newKey"); + describe('setKey function tests', () => { + it('should update existing Key in all instances', () => { + event.setKey('newKey'); - expect(event.key).toBe("newKey"); - expect(event.observer._key).toBe("newKey"); + expect(event.key).toBe('newKey'); + expect(event.observer._key).toBe('newKey'); }); }); - describe("on function tests", () => { + describe('on function tests', () => { const dummyCallbackFunction1 = () => {}; const dummyCallbackFunction2 = () => {}; - it("should add passed callbackFunction to callbacks at passed key", () => { - const response = event.on("dummyKey", dummyCallbackFunction1); + it('should add passed callbackFunction to callbacks at passed key', () => { + const response = event.on('dummyKey', dummyCallbackFunction1); expect(response).toBe(event); - expect(event.callbacks).toHaveProperty("dummyKey"); - expect(event.callbacks["dummyKey"]).toBe(dummyCallbackFunction1); + expect(event.callbacks).toHaveProperty('dummyKey'); + expect(event.callbacks['dummyKey']).toBe(dummyCallbackFunction1); }); - it("should add passed callbackFunction to callbacks at random key if no key passed and return that generated key", () => { - jest.spyOn(Utils, "generateId").mockReturnValue("randomKey"); + it('should add passed callbackFunction to callbacks at random key if no key passed and return that generated key', () => { + jest.spyOn(Utils, 'generateId').mockReturnValue('randomKey'); const response = event.on(dummyCallbackFunction1); - expect(response).toBe("randomKey"); - expect(event.callbacks).toHaveProperty("randomKey"); - expect(event.callbacks["randomKey"]).toBe(dummyCallbackFunction1); + expect(response).toBe('randomKey'); + expect(event.callbacks).toHaveProperty('randomKey'); + expect(event.callbacks['randomKey']).toBe(dummyCallbackFunction1); expect(Utils.generateId).toHaveBeenCalled(); }); it("shouldn't add passed invalid callbackFunction to callbacks at passed key", () => { - const response = event.on("dummyKey", "noFunction hehe" as any); + const response = event.on('dummyKey', 'noFunction hehe' as any); expect(response).toBe(event); - expect(event.callbacks).not.toHaveProperty("dummyKey"); + expect(event.callbacks).not.toHaveProperty('dummyKey'); expect(console.error).toHaveBeenCalledWith( - "Agile Error: A Event Callback Function has to be typeof Function!" + 'Agile Error: A Event Callback Function has to be typeof Function!', ); }); it("shouldn't add passed callbackFunction to callbacks at passed key if passed key is already occupied", () => { - event.callbacks["dummyKey"] = dummyCallbackFunction2; + event.callbacks['dummyKey'] = dummyCallbackFunction2; - const response = event.on("dummyKey", dummyCallbackFunction1); + const response = event.on('dummyKey', dummyCallbackFunction1); expect(response).toBe(event); - expect(event.callbacks).toHaveProperty("dummyKey"); - expect(event.callbacks["dummyKey"]).toBe(dummyCallbackFunction2); + expect(event.callbacks).toHaveProperty('dummyKey'); + expect(event.callbacks['dummyKey']).toBe(dummyCallbackFunction2); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Event Callback Function with the key/name 'dummyKey' already exists!" + "Agile Error: Event Callback Function with the key/name 'dummyKey' already exists!", ); }); }); - describe("trigger function tests", () => { + describe('trigger function tests', () => { beforeEach(() => { event.delayedTrigger = jest.fn(); event.normalTrigger = jest.fn(); }); - it("should call normalTrigger if Event is enabled (config.delay = false)", () => { + it('should call normalTrigger if Event is enabled (config.delay = false)', () => { event.enabled = true; event.config.delay = undefined; - event.trigger("myPayload", ["specificKey"]); + event.trigger('myPayload', ['specificKey']); - expect(event.normalTrigger).toHaveBeenCalledWith("myPayload", [ - "specificKey", + expect(event.normalTrigger).toHaveBeenCalledWith('myPayload', [ + 'specificKey', ]); expect(event.delayedTrigger).not.toHaveBeenCalled(); }); @@ -165,20 +165,20 @@ describe("Event Tests", () => { event.enabled = false; event.config.delay = undefined; - event.trigger("myPayload", ["specificKey"]); + event.trigger('myPayload', ['specificKey']); expect(event.normalTrigger).not.toHaveBeenCalled(); expect(event.delayedTrigger).not.toHaveBeenCalled(); }); - it("should call normalTrigger if Event is enabled (config.delay = false)", () => { + it('should call normalTrigger if Event is enabled (config.delay = false)', () => { event.enabled = true; event.config.delay = 10; - event.trigger("myPayload", ["specificKey"]); + event.trigger('myPayload', ['specificKey']); - expect(event.delayedTrigger).toHaveBeenCalledWith("myPayload", 10, [ - "specificKey", + expect(event.delayedTrigger).toHaveBeenCalledWith('myPayload', 10, [ + 'specificKey', ]); expect(event.normalTrigger).not.toHaveBeenCalled(); }); @@ -187,15 +187,15 @@ describe("Event Tests", () => { event.enabled = false; event.config.delay = 10; - event.trigger("myPayload", ["specificKey"]); + event.trigger('myPayload', ['specificKey']); expect(event.delayedTrigger).not.toHaveBeenCalled(); expect(event.normalTrigger).not.toHaveBeenCalled(); }); }); - describe("disable function tests", () => { - it("should disable Event", () => { + describe('disable function tests', () => { + it('should disable Event', () => { event.enabled = undefined; event.disable(); @@ -204,8 +204,8 @@ describe("Event Tests", () => { }); }); - describe("enable function tests", () => { - it("should enable Event", () => { + describe('enable function tests', () => { + it('should enable Event', () => { event.enabled = undefined; event.enable(); @@ -214,8 +214,8 @@ describe("Event Tests", () => { }); }); - describe("reset function tests", () => { - it("should reset enabled, uses and the currentTimeout", () => { + describe('reset function tests', () => { + it('should reset enabled, uses and the currentTimeout', () => { const timeout = setTimeout(() => {}, 1000); // @ts-ignore clearTimeout = jest.fn(); @@ -232,38 +232,38 @@ describe("Event Tests", () => { }); }); - describe("removeCallback function tests", () => { + describe('removeCallback function tests', () => { beforeEach(() => { - event.callbacks["dummyKey"] = () => {}; + event.callbacks['dummyKey'] = () => {}; }); - it("should remove callback at key from Event", () => { - event.removeCallback("dummyKey"); + it('should remove callback at key from Event', () => { + event.removeCallback('dummyKey'); - expect(event.callbacks).not.toHaveProperty("dummyKey"); + expect(event.callbacks).not.toHaveProperty('dummyKey'); }); }); - describe("normalTrigger function tests", () => { - const dummyPayload = "123"; + describe('normalTrigger function tests', () => { + const dummyPayload = '123'; const dummyCallbackFunction1 = jest.fn(); const dummyCallbackFunction2 = jest.fn(); const dummyCallbackFunction3 = jest.fn(); beforeEach(() => { - event.callbacks["callback1"] = dummyCallbackFunction1; - event.callbacks["callback2"] = dummyCallbackFunction2; - event.callbacks["callback3"] = dummyCallbackFunction3; + event.callbacks['callback1'] = dummyCallbackFunction1; + event.callbacks['callback2'] = dummyCallbackFunction2; + event.callbacks['callback3'] = dummyCallbackFunction3; event.observer.trigger = jest.fn(); event.disable = jest.fn(); }); - it("should call callback functions at passed keys with passed payload", () => { + it('should call callback functions at passed keys with passed payload', () => { event.config.rerender = false; event.uses = 0; - event.normalTrigger(dummyPayload, ["callback1", "callback3"]); + event.normalTrigger(dummyPayload, ['callback1', 'callback3']); expect(dummyCallbackFunction1).toHaveBeenCalledWith(dummyPayload); expect(dummyCallbackFunction2).not.toHaveBeenCalled(); @@ -273,7 +273,7 @@ describe("Event Tests", () => { expect(event.uses).toBe(1); }); - it("should call all callback functions with passed payload", () => { + it('should call all callback functions with passed payload', () => { event.config.rerender = false; event.uses = 0; @@ -287,7 +287,7 @@ describe("Event Tests", () => { expect(event.uses).toBe(1); }); - it("should call all callback functions and trigger a rerender (config.rerender)", () => { + it('should call all callback functions and trigger a rerender (config.rerender)', () => { event.config.rerender = true; event.uses = 0; @@ -301,7 +301,7 @@ describe("Event Tests", () => { expect(event.uses).toBe(1); }); - it("should call all callback functions and disable event if maxUses got reached (config.maxUses)", () => { + it('should call all callback functions and disable event if maxUses got reached (config.maxUses)', () => { event.config.maxUses = 2; event.config.rerender = false; event.uses = 0; @@ -318,24 +318,24 @@ describe("Event Tests", () => { }); }); - describe("delayedTrigger function tests", () => { - const dummyPayload1 = "123"; - const dummyPayload2 = "321"; + describe('delayedTrigger function tests', () => { + const dummyPayload1 = '123'; + const dummyPayload2 = '321'; beforeEach(() => { event.normalTrigger = jest.fn(); }); - it("should execute one Event after the other", async () => { + it('should execute one Event after the other', async () => { event.config.overlap = false; - event.delayedTrigger(dummyPayload1, 500, ["callback1", "callback3"]); - event.delayedTrigger(dummyPayload2, 500, ["callback2"]); + event.delayedTrigger(dummyPayload1, 500, ['callback1', 'callback3']); + event.delayedTrigger(dummyPayload2, 500, ['callback2']); expect(event.currentTimeout).not.toBeUndefined(); expect(event.queue.length).toBe(1); expect(event.queue[0].payload).toBe(dummyPayload2); - expect(event.queue[0].keys).toStrictEqual(["callback2"]); + expect(event.queue[0].keys).toStrictEqual(['callback2']); expect(event.normalTrigger).not.toHaveBeenCalled(); await new Promise((resolve) => setTimeout(resolve, 500)); @@ -344,11 +344,11 @@ describe("Event Tests", () => { expect(event.currentTimeout).not.toBeUndefined(); expect(event.queue.length).toBe(0); expect(event.normalTrigger).toHaveBeenCalledWith(dummyPayload1, [ - "callback1", - "callback3", + 'callback1', + 'callback3', ]); expect(event.normalTrigger).not.toHaveBeenCalledWith(dummyPayload2, [ - "callback2", + 'callback2', ]); await new Promise((resolve) => setTimeout(resolve, 500)); @@ -357,15 +357,15 @@ describe("Event Tests", () => { expect(event.currentTimeout).toBeUndefined(); expect(event.queue.length).toBe(0); expect(event.normalTrigger).toHaveBeenCalledWith(dummyPayload2, [ - "callback2", + 'callback2', ]); }); - it("should execute Events at the same time (config.overlap = true)", async () => { + it('should execute Events at the same time (config.overlap = true)', async () => { event.config.overlap = true; - event.delayedTrigger(dummyPayload1, 500, ["callback1", "callback3"]); - event.delayedTrigger(dummyPayload2, 500, ["callback2"]); + event.delayedTrigger(dummyPayload1, 500, ['callback1', 'callback3']); + event.delayedTrigger(dummyPayload2, 500, ['callback2']); expect(event.currentTimeout).toBeUndefined(); expect(event.queue.length).toBe(0); @@ -377,11 +377,11 @@ describe("Event Tests", () => { expect(event.currentTimeout).toBeUndefined(); expect(event.queue.length).toBe(0); expect(event.normalTrigger).toHaveBeenCalledWith(dummyPayload1, [ - "callback1", - "callback3", + 'callback1', + 'callback3', ]); expect(event.normalTrigger).toHaveBeenCalledWith(dummyPayload2, [ - "callback2", + 'callback2', ]); }); }); diff --git a/packages/core/tests/unit/integrations/integration.test.ts b/packages/core/tests/unit/integrations/integration.test.ts index 7ccab02c..ef1cbbf2 100644 --- a/packages/core/tests/unit/integrations/integration.test.ts +++ b/packages/core/tests/unit/integrations/integration.test.ts @@ -1,46 +1,46 @@ -import { Integration } from "../../../src"; +import {Integration} from '../../../src'; -describe("Integration Tests", () => { - it("should create Integration", () => { +describe('Integration Tests', () => { + it('should create Integration', () => { const methods = { bind: () => Promise.resolve(true), updateMethod: () => {}, }; const integrationConfig = { - frameworkInstance: { react: "native" }, - key: "test", + frameworkInstance: {react: 'native'}, + key: 'test', ...methods, }; const integration = new Integration(integrationConfig); - expect(integration._key).toBe("test"); - expect(integration.frameworkInstance).toStrictEqual({ react: "native" }); + expect(integration._key).toBe('test'); + expect(integration.frameworkInstance).toStrictEqual({react: 'native'}); expect(integration.ready).toBeFalsy(); expect(integration.integrated).toBeFalsy(); expect(integration.methods).toStrictEqual(methods); }); - describe("Integration Function Tests", () => { + describe('Integration Function Tests', () => { let integration: Integration; beforeEach(() => { - integration = new Integration({ key: "dummyIntegration" }); + integration = new Integration({key: 'dummyIntegration'}); }); - describe("key set function tests", () => { - it("should update key in Integration", () => { - integration.key = "myCoolKey"; + describe('key set function tests', () => { + it('should update key in Integration', () => { + integration.key = 'myCoolKey'; - expect(integration._key).toBe("myCoolKey"); + expect(integration._key).toBe('myCoolKey'); }); }); - describe("key get function tests", () => { - it("should return current key of Integration", () => { - integration._key = "myCoolKey"; + describe('key get function tests', () => { + it('should return current key of Integration', () => { + integration._key = 'myCoolKey'; - expect(integration.key).toBe("myCoolKey"); + expect(integration.key).toBe('myCoolKey'); }); }); }); diff --git a/packages/core/tests/unit/integrations/integrations.test.ts b/packages/core/tests/unit/integrations/integrations.test.ts index 89bac99d..d4249c84 100644 --- a/packages/core/tests/unit/integrations/integrations.test.ts +++ b/packages/core/tests/unit/integrations/integrations.test.ts @@ -1,29 +1,29 @@ -import { Agile, Integration, Integrations } from "../../../src"; +import {Agile, Integration, Integrations} from '../../../src'; -describe("Integrations Tests", () => { +describe('Integrations Tests', () => { let dummyAgile: Agile; beforeEach(() => { - dummyAgile = new Agile({ localStorage: false }); + dummyAgile = new Agile({localStorage: false}); Agile.initialIntegrations = []; console.error = jest.fn(); console.warn = jest.fn(); - jest.spyOn(Integrations.prototype, "integrate"); + jest.spyOn(Integrations.prototype, 'integrate'); }); - it("should create Integrations", () => { + it('should create Integrations', () => { const integrations = new Integrations(dummyAgile); expect(integrations.integrations.size).toBe(0); }); - it("should create Integrations and integrate Agile initialIntegrations", async () => { + it('should create Integrations and integrate Agile initialIntegrations', async () => { const dummyIntegration1 = new Integration({ - key: "initialIntegration1", + key: 'initialIntegration1', }); const dummyIntegration2 = new Integration({ - key: "initialIntegration2", + key: 'initialIntegration2', }); Agile.initialIntegrations.push(dummyIntegration1); Agile.initialIntegrations.push(dummyIntegration2); @@ -38,7 +38,7 @@ describe("Integrations Tests", () => { expect(integrations.integrate).toHaveBeenCalledWith(dummyIntegration2); }); - describe("Integrations Function Tests", () => { + describe('Integrations Function Tests', () => { let integrations: Integrations; let dummyIntegration1: Integration; let dummyIntegration2: Integration; @@ -46,15 +46,15 @@ describe("Integrations Tests", () => { beforeEach(() => { integrations = new Integrations(dummyAgile); dummyIntegration1 = new Integration({ - key: "dummyIntegration1", + key: 'dummyIntegration1', }); dummyIntegration2 = new Integration({ - key: "dummyIntegration2", + key: 'dummyIntegration2', }); }); - describe("integrate function tests", () => { - it("should integrate valid integration with no bind function", async () => { + describe('integrate function tests', () => { + it('should integrate valid integration with no bind function', async () => { const response = await integrations.integrate(dummyIntegration1); expect(response).toBeTruthy(); @@ -63,7 +63,7 @@ describe("Integrations Tests", () => { expect(dummyIntegration1.integrated).toBeTruthy(); }); - it("should integrate valid integration with bind function that returns true", async () => { + it('should integrate valid integration with bind function that returns true', async () => { dummyIntegration1.methods.bind = jest.fn(() => Promise.resolve(true)); const response = await integrations.integrate(dummyIntegration1); @@ -75,7 +75,7 @@ describe("Integrations Tests", () => { expect(dummyIntegration1.methods.bind).toHaveBeenCalledWith(dummyAgile); }); - it("should integrate valid integration with bind function that returns false", async () => { + it('should integrate valid integration with bind function that returns false', async () => { dummyIntegration1.methods.bind = jest.fn(() => Promise.resolve(false)); const response = await integrations.integrate(dummyIntegration1); @@ -98,22 +98,22 @@ describe("Integrations Tests", () => { expect(dummyIntegration1.integrated).toBeFalsy(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Failed to integrate framework! Invalid Integration!", - dummyIntegration1._key + 'Agile Error: Failed to integrate framework! Invalid Integration!', + dummyIntegration1._key, ); }); }); - describe("update function tests", () => { - const dummyComponentInstance = { my: "component" }; - const dummyUpdatedData = { my: "updatedData" }; + describe('update function tests', () => { + const dummyComponentInstance = {my: 'component'}; + const dummyUpdatedData = {my: 'updatedData'}; beforeEach(() => { integrations.integrate(dummyIntegration1); integrations.integrate(dummyIntegration2); }); - it("should call updateMethod on each ready Integration", () => { + it('should call updateMethod on each ready Integration', () => { dummyIntegration1.ready = false; dummyIntegration1.methods.updateMethod = jest.fn(); dummyIntegration2.methods.updateMethod = jest.fn(); @@ -123,21 +123,21 @@ describe("Integrations Tests", () => { expect(dummyIntegration1.methods.updateMethod).not.toHaveBeenCalled(); expect(dummyIntegration2.methods.updateMethod).toHaveBeenCalledWith( dummyComponentInstance, - dummyUpdatedData + dummyUpdatedData, ); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Integration 'dummyIntegration1' isn't ready yet!" + "Agile Warn: Integration 'dummyIntegration1' isn't ready yet!", ); }); }); - describe("hasIntegration function tests", () => { - it("should return false if Integrations has no integrated Integration", () => { + describe('hasIntegration function tests', () => { + it('should return false if Integrations has no integrated Integration', () => { expect(integrations.hasIntegration()).toBeFalsy(); }); - it("should return true if Integrations has at least one integrated Integration", () => { + it('should return true if Integrations has at least one integrated Integration', () => { integrations.integrate(dummyIntegration1); expect(integrations.hasIntegration()).toBeTruthy(); diff --git a/packages/core/tests/unit/runtime/observer.test.ts b/packages/core/tests/unit/runtime/observer.test.ts index b5d44c7f..9f020c5d 100644 --- a/packages/core/tests/unit/runtime/observer.test.ts +++ b/packages/core/tests/unit/runtime/observer.test.ts @@ -1,11 +1,6 @@ -import { - Observer, - Agile, - SubscriptionContainer, - RuntimeJob, -} from "../../../src"; - -describe("Observer Tests", () => { +import {Observer, Agile, SubscriptionContainer, RuntimeJob} from '../../../src'; + +describe('Observer Tests', () => { let dummyAgile: Agile; let dummyObserver1: Observer; let dummyObserver2: Observer; @@ -14,16 +9,16 @@ describe("Observer Tests", () => { beforeEach(() => { dummyAgile = new Agile(); - dummyObserver1 = new Observer(dummyAgile, { key: "dummyObserver1" }); - dummyObserver2 = new Observer(dummyAgile, { key: "dummyObserver2" }); + dummyObserver1 = new Observer(dummyAgile, {key: 'dummyObserver1'}); + dummyObserver2 = new Observer(dummyAgile, {key: 'dummyObserver2'}); dummySubscription1 = new SubscriptionContainer(); dummySubscription2 = new SubscriptionContainer(); console.warn = jest.fn(); - jest.spyOn(Observer.prototype, "subscribe"); + jest.spyOn(Observer.prototype, 'subscribe'); }); - it("should create Observer (default config)", () => { + it('should create Observer (default config)', () => { const observer = new Observer(dummyAgile); expect(observer._key).toBeUndefined(); @@ -32,16 +27,16 @@ describe("Observer Tests", () => { expect(observer.subs.size).toBe(0); }); - it("should create Observer (specific config)", () => { + it('should create Observer (specific config)', () => { const observer = new Observer(dummyAgile, { - key: "testKey", + key: 'testKey', subs: [dummySubscription1, dummySubscription2], deps: [dummyObserver1, dummyObserver2], - value: "coolValue", + value: 'coolValue', }); - expect(observer._key).toBe("testKey"); - expect(observer.value).toBe("coolValue"); + expect(observer._key).toBe('testKey'); + expect(observer.value).toBe('coolValue'); expect(observer.deps.size).toBe(2); expect(observer.deps.has(dummyObserver2)).toBeTruthy(); expect(observer.deps.has(dummyObserver1)).toBeTruthy(); @@ -53,51 +48,51 @@ describe("Observer Tests", () => { expect(observer.subscribe).toHaveBeenCalledWith(dummySubscription2); }); - describe("Observer Function Tests", () => { + describe('Observer Function Tests', () => { let observer: Observer; beforeEach(() => { - observer = new Observer(dummyAgile, { key: "observer" }); + observer = new Observer(dummyAgile, {key: 'observer'}); }); - describe("key set function tests", () => { - it("should update key in Observer", () => { - observer.key = "myNewDummyKey"; + describe('key set function tests', () => { + it('should update key in Observer', () => { + observer.key = 'myNewDummyKey'; - expect(observer._key).toBe("myNewDummyKey"); + expect(observer._key).toBe('myNewDummyKey'); }); }); - describe("key get function tests", () => { - it("should return current key of Observer", () => { - observer._key = "myDummyKey"; + describe('key get function tests', () => { + it('should return current key of Observer', () => { + observer._key = 'myDummyKey'; - expect(observer.key).toBe("myDummyKey"); + expect(observer.key).toBe('myDummyKey'); }); }); - describe("perform function tests", () => { - it("should print warning", () => { + describe('perform function tests', () => { + it('should print warning', () => { const dummyJob = new RuntimeJob(observer); observer.perform(dummyJob); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Perform function isn't Set in Observer! Be aware that Observer is no stand alone class!" + "Agile Warn: Perform function isn't Set in Observer! Be aware that Observer is no stand alone class!", ); }); }); - describe("depend function tests", () => { + describe('depend function tests', () => { let dummyObserver1: Observer; let dummyObserver2: Observer; beforeEach(() => { - dummyObserver1 = new Observer(dummyAgile, { key: "dummyObserver1" }); - dummyObserver2 = new Observer(dummyAgile, { key: "dummyObserver2" }); + dummyObserver1 = new Observer(dummyAgile, {key: 'dummyObserver1'}); + dummyObserver2 = new Observer(dummyAgile, {key: 'dummyObserver2'}); }); - it("should add passed Observer to deps", () => { + it('should add passed Observer to deps', () => { observer.depend(dummyObserver1); expect(observer.deps.size).toBe(1); @@ -114,7 +109,7 @@ describe("Observer Tests", () => { }); }); - describe("subscribe function tests", () => { + describe('subscribe function tests', () => { let dummySubscriptionContainer1: SubscriptionContainer; let dummySubscriptionContainer2: SubscriptionContainer; @@ -123,7 +118,7 @@ describe("Observer Tests", () => { dummySubscriptionContainer2 = new SubscriptionContainer(); }); - it("should add subscriptionContainer to subs and this(Observer) to SubscriptionContainer subs", () => { + it('should add subscriptionContainer to subs and this(Observer) to SubscriptionContainer subs', () => { observer.subscribe(dummySubscriptionContainer1); expect(observer.subs.size).toBe(1); @@ -144,7 +139,7 @@ describe("Observer Tests", () => { }); }); - describe("unsubscribe function tests", () => { + describe('unsubscribe function tests', () => { let dummySubscriptionContainer1: SubscriptionContainer; let dummySubscriptionContainer2: SubscriptionContainer; @@ -155,7 +150,7 @@ describe("Observer Tests", () => { observer.subscribe(dummySubscriptionContainer2); }); - it("should remove subscriptionContainer from subs and this(Observer) from SubscriptionContainer subs", () => { + it('should remove subscriptionContainer from subs and this(Observer) from SubscriptionContainer subs', () => { observer.unsubscribe(dummySubscriptionContainer1); expect(observer.subs.size).toBe(1); diff --git a/packages/core/tests/unit/runtime/runtime.job.test.ts b/packages/core/tests/unit/runtime/runtime.job.test.ts index 77d0f4ef..4ec0e2fb 100644 --- a/packages/core/tests/unit/runtime/runtime.job.test.ts +++ b/packages/core/tests/unit/runtime/runtime.job.test.ts @@ -1,19 +1,19 @@ -import { Agile, Integration, RuntimeJob, Observer } from "../../../src"; +import {Agile, Integration, RuntimeJob, Observer} from '../../../src'; -describe("RuntimeJob Tests", () => { +describe('RuntimeJob Tests', () => { let dummyAgile: Agile; let dummyIntegration: Integration; let dummyObserver: Observer; beforeEach(() => { - dummyAgile = new Agile({ localStorage: false }); + dummyAgile = new Agile({localStorage: false}); dummyIntegration = new Integration({ - key: "myIntegration", + key: 'myIntegration', }); dummyObserver = new Observer(dummyAgile); }); - it("should create RuntimeJob with Agile that has integrations (default config)", () => { + it('should create RuntimeJob with Agile that has integrations (default config)', () => { dummyAgile.integrate(dummyIntegration); const job = new RuntimeJob(dummyObserver); @@ -30,16 +30,16 @@ describe("RuntimeJob Tests", () => { expect(job.subscriptionContainersToUpdate.size).toBe(0); }); - it("should create RuntimeJob with Agile that has integrations (specific config)", () => { + it('should create RuntimeJob with Agile that has integrations (specific config)', () => { dummyAgile.integrate(dummyIntegration); const job = new RuntimeJob(dummyObserver, { - key: "dummyJob", + key: 'dummyJob', sideEffects: false, force: true, }); - expect(job._key).toBe("dummyJob"); + expect(job._key).toBe('dummyJob'); expect(job.observer).toBe(dummyObserver); expect(job.config).toStrictEqual({ background: false, @@ -51,7 +51,7 @@ describe("RuntimeJob Tests", () => { expect(job.subscriptionContainersToUpdate.size).toBe(0); }); - it("should create RuntimeJob with Agile that has no integrations (default config)", () => { + it('should create RuntimeJob with Agile that has no integrations (default config)', () => { const job = new RuntimeJob(dummyObserver); expect(job._key).toBeUndefined(); @@ -66,10 +66,10 @@ describe("RuntimeJob Tests", () => { expect(job.subscriptionContainersToUpdate.size).toBe(0); }); - it("should create RuntimeJob and Agile that has integrations (config.background = true)", () => { + it('should create RuntimeJob and Agile that has integrations (config.background = true)', () => { dummyAgile.integrate(dummyIntegration); - const job = new RuntimeJob(dummyObserver, { background: true }); + const job = new RuntimeJob(dummyObserver, {background: true}); expect(job._key).toBeUndefined(); expect(job.observer).toBe(dummyObserver); @@ -83,26 +83,26 @@ describe("RuntimeJob Tests", () => { expect(job.subscriptionContainersToUpdate.size).toBe(0); }); - describe("RuntimeJob Function Tests", () => { + describe('RuntimeJob Function Tests', () => { let job: RuntimeJob; beforeEach(() => { job = new RuntimeJob(dummyObserver); }); - describe("key get function tests", () => { - it("should return key of RuntimeJob", () => { - job._key = "myCoolKey"; + describe('key get function tests', () => { + it('should return key of RuntimeJob', () => { + job._key = 'myCoolKey'; - expect(job.key).toBe("myCoolKey"); + expect(job.key).toBe('myCoolKey'); }); }); - describe("key set function tests", () => { - it("should update key in RuntimeJob", () => { - job.key = "myCoolKey"; + describe('key set function tests', () => { + it('should update key in RuntimeJob', () => { + job.key = 'myCoolKey'; - expect(job._key).toBe("myCoolKey"); + expect(job._key).toBe('myCoolKey'); }); }); }); diff --git a/packages/core/tests/unit/runtime/runtime.test.ts b/packages/core/tests/unit/runtime/runtime.test.ts index 16fcedce..37296f76 100644 --- a/packages/core/tests/unit/runtime/runtime.test.ts +++ b/packages/core/tests/unit/runtime/runtime.test.ts @@ -6,19 +6,19 @@ import { Observer, Runtime, SubscriptionContainer, -} from "../../../src"; -import testIntegration from "../../helper/test.integration"; +} from '../../../src'; +import testIntegration from '../../helper/test.integration'; -describe("Runtime Tests", () => { +describe('Runtime Tests', () => { let dummyAgile: Agile; beforeEach(() => { - dummyAgile = new Agile({ localStorage: false }); + dummyAgile = new Agile({localStorage: false}); console.warn = jest.fn(); }); - it("should create Runtime", () => { + it('should create Runtime', () => { const runtime = new Runtime(dummyAgile); expect(runtime.currentJob).toBeNull(); @@ -27,7 +27,7 @@ describe("Runtime Tests", () => { expect(runtime.jobsToRerender).toStrictEqual([]); }); - describe("Runtime Function Tests", () => { + describe('Runtime Function Tests', () => { let runtime: Runtime; let dummyObserver1: Observer; let dummyObserver2: Observer; @@ -35,12 +35,12 @@ describe("Runtime Tests", () => { beforeEach(() => { runtime = new Runtime(dummyAgile); - dummyObserver1 = new Observer(dummyAgile, { key: "dummyObserver1" }); - dummyObserver2 = new Observer(dummyAgile, { key: "dummyObserver2" }); - dummyObserver3 = new Observer(dummyAgile, { key: "dummyObserver3" }); + dummyObserver1 = new Observer(dummyAgile, {key: 'dummyObserver1'}); + dummyObserver2 = new Observer(dummyAgile, {key: 'dummyObserver2'}); + dummyObserver3 = new Observer(dummyAgile, {key: 'dummyObserver3'}); }); - describe("ingest function tests", () => { + describe('ingest function tests', () => { let dummyJob: RuntimeJob; beforeEach(() => { @@ -49,7 +49,7 @@ describe("Runtime Tests", () => { runtime.perform = jest.fn(); }); - it("should perform passed Job (default config)", () => { + it('should perform passed Job (default config)', () => { runtime.ingest(dummyJob); expect(runtime.jobQueue.length).toBe(0); @@ -57,7 +57,7 @@ describe("Runtime Tests", () => { }); it("shouldn't perform passed Job (config.perform = false)", () => { - runtime.ingest(dummyJob, { perform: false }); + runtime.ingest(dummyJob, {perform: false}); expect(runtime.jobQueue.length).toBe(1); expect(runtime.jobQueue[0]).toBe(dummyJob); @@ -65,25 +65,25 @@ describe("Runtime Tests", () => { }); }); - describe("perform function tests", () => { + describe('perform function tests', () => { let dummyJob1: RuntimeJob; let dummyJob2: RuntimeJob; let dummyJob3: RuntimeJob; beforeEach(() => { - dummyJob1 = new RuntimeJob(dummyObserver1, { key: "dummyJob1" }); - dummyJob2 = new RuntimeJob(dummyObserver2, { key: "dummyJob2" }); - dummyJob3 = new RuntimeJob(dummyObserver1, { key: "dummyJob3" }); + dummyJob1 = new RuntimeJob(dummyObserver1, {key: 'dummyJob1'}); + dummyJob2 = new RuntimeJob(dummyObserver2, {key: 'dummyJob2'}); + dummyJob3 = new RuntimeJob(dummyObserver1, {key: 'dummyJob3'}); dummyJob1.rerender = true; dummyJob2.rerender = true; dummyJob3.rerender = false; runtime.updateSubscribers = jest.fn(); - jest.spyOn(dummyObserver1, "perform"); - jest.spyOn(dummyObserver2, "perform"); + jest.spyOn(dummyObserver1, 'perform'); + jest.spyOn(dummyObserver2, 'perform'); }); - it("should perform passed and all in jobQueue remaining Jobs and call updateSubscribers", async () => { + it('should perform passed and all in jobQueue remaining Jobs and call updateSubscribers', async () => { runtime.jobQueue.push(dummyJob2); runtime.jobQueue.push(dummyJob3); @@ -129,7 +129,7 @@ describe("Runtime Tests", () => { }); }); - describe("updateSubscribers function tests", () => { + describe('updateSubscribers function tests', () => { let dummyObserver4: Observer; let rCallbackSubJob: RuntimeJob; let nrArCallbackSubJob: RuntimeJob; @@ -141,33 +141,33 @@ describe("Runtime Tests", () => { let nrCallbackSubContainerCallbackFunction = () => {}; let rComponentSubContainer: ComponentSubscriptionContainer; let rComponentSubContainerComponent = { - my: "cool component", + my: 'cool component', }; let nrComponentSubContainer: ComponentSubscriptionContainer; let nrComponentSubContainerComponent = { - my: "second cool component", + my: 'second cool component', }; beforeEach(() => { dummyAgile.integrate(testIntegration); - dummyObserver4 = new Observer(dummyAgile, { key: "dummyObserver4" }); + dummyObserver4 = new Observer(dummyAgile, {key: 'dummyObserver4'}); - dummyObserver1.value = "dummyObserverValue1"; - dummyObserver2.value = "dummyObserverValue2"; - dummyObserver3.value = "dummyObserverValue3"; - dummyObserver4.value = "dummyObserverValue4"; + dummyObserver1.value = 'dummyObserverValue1'; + dummyObserver2.value = 'dummyObserverValue2'; + dummyObserver3.value = 'dummyObserverValue3'; + dummyObserver4.value = 'dummyObserverValue4'; // Create Ready Callback Subscription rCallbackSubContainer = dummyAgile.subController.subscribeWithSubsArray( rCallbackSubContainerCallbackFunction, - [dummyObserver1, dummyObserver2] + [dummyObserver1, dummyObserver2], ) as CallbackSubscriptionContainer; rCallbackSubContainer.callback = jest.fn(); // Create Not Ready Callback Subscription nrCallbackSubContainer = dummyAgile.subController.subscribeWithSubsArray( nrCallbackSubContainerCallbackFunction, - [dummyObserver2] + [dummyObserver2], ) as CallbackSubscriptionContainer; nrCallbackSubContainer.callback = jest.fn(); nrCallbackSubContainer.ready = false; @@ -178,7 +178,7 @@ describe("Runtime Tests", () => { { observer3: dummyObserver3, observer4: dummyObserver4, - } + }, ).subscriptionContainer as ComponentSubscriptionContainer; // Create Not Ready Component Subscription @@ -186,24 +186,24 @@ describe("Runtime Tests", () => { nrComponentSubContainerComponent, { observer4: dummyObserver4, - } + }, ).subscriptionContainer as ComponentSubscriptionContainer; nrComponentSubContainer.ready = false; - rComponentSubJob = new RuntimeJob(dummyObserver3, { key: "dummyJob3" }); // Job with ready Component Subscription - rCallbackSubJob = new RuntimeJob(dummyObserver1, { key: "dummyJob1" }); // Job with ready CallbackSubscription + rComponentSubJob = new RuntimeJob(dummyObserver3, {key: 'dummyJob3'}); // Job with ready Component Subscription + rCallbackSubJob = new RuntimeJob(dummyObserver1, {key: 'dummyJob1'}); // Job with ready CallbackSubscription nrArComponentSubJob = new RuntimeJob(dummyObserver4, { - key: "dummyJob4", + key: 'dummyJob4', }); // Job with not ready and ready Component Subscription nrArCallbackSubJob = new RuntimeJob(dummyObserver2, { - key: "dummyJob2", + key: 'dummyJob2', }); // Job with not ready and ready Callback Subscription - jest.spyOn(dummyAgile.integrations, "update"); - jest.spyOn(runtime, "handleObjectBasedSubscription"); + jest.spyOn(dummyAgile.integrations, 'update'); + jest.spyOn(runtime, 'handleObjectBasedSubscription'); }); - it("should return false if agile has no integration", () => { + it('should return false if agile has no integration', () => { dummyAgile.hasIntegration = jest.fn(() => false); runtime.jobsToRerender.push(rCallbackSubJob); runtime.jobsToRerender.push(nrArCallbackSubJob); @@ -218,7 +218,7 @@ describe("Runtime Tests", () => { expect(nrCallbackSubContainer.callback).not.toHaveBeenCalled(); }); - it("should return false if no Jobs in jobsToRerender and notReadyJobsToRerender left", () => { + it('should return false if no Jobs in jobsToRerender and notReadyJobsToRerender left', () => { dummyAgile.hasIntegration = jest.fn(() => true); runtime.jobsToRerender = []; runtime.notReadyJobsToRerender = new Set(); @@ -228,7 +228,7 @@ describe("Runtime Tests", () => { expect(response).toBeFalsy(); }); - it("should update ready component based Subscription", () => { + it('should update ready component based Subscription', () => { dummyAgile.hasIntegration = jest.fn(() => true); runtime.jobsToRerender.push(rComponentSubJob); @@ -241,18 +241,18 @@ describe("Runtime Tests", () => { expect(dummyAgile.integrations.update).toHaveBeenCalledWith( rComponentSubContainerComponent, { - observer3: "dummyObserverValue3", - } + observer3: 'dummyObserverValue3', + }, ); expect(runtime.handleObjectBasedSubscription).toHaveBeenCalledWith( rComponentSubContainer, - rComponentSubJob + rComponentSubJob, ); expect(rComponentSubJob.subscriptionContainersToUpdate.size).toBe(0); expect(dummyObserver3.subs.size).toBe(1); }); - it("should update ready callback based Subscription", () => { + it('should update ready callback based Subscription', () => { dummyAgile.hasIntegration = jest.fn(() => true); runtime.jobsToRerender.push(rCallbackSubJob); @@ -276,23 +276,23 @@ describe("Runtime Tests", () => { expect(runtime.jobsToRerender).toStrictEqual([]); expect(runtime.notReadyJobsToRerender.size).toBe(2); expect( - runtime.notReadyJobsToRerender.has(nrArCallbackSubJob) + runtime.notReadyJobsToRerender.has(nrArCallbackSubJob), ).toBeTruthy(); expect( - runtime.notReadyJobsToRerender.has(nrArComponentSubJob) + runtime.notReadyJobsToRerender.has(nrArComponentSubJob), ).toBeTruthy(); expect(nrArCallbackSubJob.subscriptionContainersToUpdate.size).toBe(1); expect( nrArCallbackSubJob.subscriptionContainersToUpdate.has( - nrCallbackSubContainer - ) + nrCallbackSubContainer, + ), ).toBeTruthy(); expect(nrArComponentSubJob.subscriptionContainersToUpdate.size).toBe(1); expect( nrArComponentSubJob.subscriptionContainersToUpdate.has( - nrComponentSubContainer - ) + nrComponentSubContainer, + ), ).toBeTruthy(); expect(rCallbackSubContainer.callback).toHaveBeenCalledTimes(1); @@ -302,14 +302,14 @@ describe("Runtime Tests", () => { expect(dummyAgile.integrations.update).toHaveBeenCalledWith( rComponentSubContainerComponent, { - observer4: "dummyObserverValue4", - } + observer4: 'dummyObserverValue4', + }, ); expect(dummyAgile.integrations.update).not.toHaveBeenCalledWith( nrComponentSubContainerComponent, { - observer4: "dummyObserverValue4", - } + observer4: 'dummyObserverValue4', + }, ); expect(dummyObserver2.subs.size).toBe(2); @@ -317,24 +317,24 @@ describe("Runtime Tests", () => { expect(runtime.handleObjectBasedSubscription).toHaveBeenCalledWith( rComponentSubContainer, - nrArComponentSubJob + nrArComponentSubJob, ); expect(runtime.handleObjectBasedSubscription).not.toHaveBeenCalledWith( nrComponentSubContainer, - nrArComponentSubJob + nrArComponentSubJob, ); expect(console.warn).toHaveBeenCalledWith( "Agile Warn: SubscriptionContainer/Component isn't ready to rerender!", - nrCallbackSubContainer + nrCallbackSubContainer, ); expect(console.warn).toHaveBeenCalledWith( "Agile Warn: SubscriptionContainer/Component isn't ready to rerender!", - nrComponentSubContainer + nrComponentSubContainer, ); }); - it("should update in the past not ready Subscriptions in notReadyJobsToUpdate", () => { + it('should update in the past not ready Subscriptions in notReadyJobsToUpdate', () => { dummyAgile.hasIntegration = jest.fn(() => true); runtime.notReadyJobsToRerender.add(rCallbackSubJob); @@ -349,14 +349,14 @@ describe("Runtime Tests", () => { }); }); - describe("handleObjectBasedSubscription function tests", () => { + describe('handleObjectBasedSubscription function tests', () => { let arraySubscriptionContainer: SubscriptionContainer; let dummyComponent = { - my: "cool component", + my: 'cool component', }; let objectSubscriptionContainer: SubscriptionContainer; let dummyComponent2 = { - my: "second cool component", + my: 'second cool component', }; let arrayJob: RuntimeJob; let objectJob1: RuntimeJob; @@ -365,9 +365,9 @@ describe("Runtime Tests", () => { beforeEach(() => { arraySubscriptionContainer = dummyAgile.subController.subscribeWithSubsArray( dummyComponent, - [dummyObserver1, dummyObserver2, dummyObserver3] + [dummyObserver1, dummyObserver2, dummyObserver3], ); - arrayJob = new RuntimeJob(dummyObserver1, { key: "dummyArrayJob" }); + arrayJob = new RuntimeJob(dummyObserver1, {key: 'dummyArrayJob'}); objectSubscriptionContainer = dummyAgile.subController.subscribeWithSubsObject( dummyComponent2, @@ -375,36 +375,36 @@ describe("Runtime Tests", () => { observer1: dummyObserver1, observer2: dummyObserver2, observer3: dummyObserver3, - } + }, ).subscriptionContainer; - objectJob1 = new RuntimeJob(dummyObserver1, { key: "dummyObjectJob1" }); - objectJob2 = new RuntimeJob(dummyObserver3, { key: "dummyObjectJob2" }); + objectJob1 = new RuntimeJob(dummyObserver1, {key: 'dummyObjectJob1'}); + objectJob2 = new RuntimeJob(dummyObserver3, {key: 'dummyObjectJob2'}); }); - it("should ignore not object based SubscriptionContainer", () => { + it('should ignore not object based SubscriptionContainer', () => { runtime.handleObjectBasedSubscription( arraySubscriptionContainer, - arrayJob + arrayJob, ); expect(arraySubscriptionContainer.observerKeysToUpdate).toStrictEqual( - [] + [], ); }); - it("should add Job Observer to changedObjectKeys in SubscriptionContainer", () => { + it('should add Job Observer to changedObjectKeys in SubscriptionContainer', () => { runtime.handleObjectBasedSubscription( objectSubscriptionContainer, - objectJob1 + objectJob1, ); expect(objectSubscriptionContainer.observerKeysToUpdate).toStrictEqual([ - "observer1", + 'observer1', ]); }); }); - describe("getObjectBasedProps function tests", () => { + describe('getObjectBasedProps function tests', () => { let subscriptionContainer: SubscriptionContainer; let dummyFunction = () => {}; @@ -415,22 +415,22 @@ describe("Runtime Tests", () => { observer1: dummyObserver1, observer2: dummyObserver2, observer3: dummyObserver3, - } + }, ).subscriptionContainer; - dummyObserver1.value = "dummyObserverValue1"; - dummyObserver3.value = "dummyObserverValue3"; + dummyObserver1.value = 'dummyObserverValue1'; + dummyObserver3.value = 'dummyObserverValue3'; }); - it("should build Observer Value Object out of observerKeysToUpdate and Value of Observer", () => { - subscriptionContainer.observerKeysToUpdate.push("observer1"); - subscriptionContainer.observerKeysToUpdate.push("observer2"); - subscriptionContainer.observerKeysToUpdate.push("observer3"); + it('should build Observer Value Object out of observerKeysToUpdate and Value of Observer', () => { + subscriptionContainer.observerKeysToUpdate.push('observer1'); + subscriptionContainer.observerKeysToUpdate.push('observer2'); + subscriptionContainer.observerKeysToUpdate.push('observer3'); const props = runtime.getObjectBasedProps(subscriptionContainer); expect(props).toStrictEqual({ - observer1: "dummyObserverValue1", - observer3: "dummyObserverValue3", + observer1: 'dummyObserverValue1', + observer3: 'dummyObserverValue3', }); expect(subscriptionContainer.observerKeysToUpdate).toStrictEqual([]); }); diff --git a/packages/core/tests/unit/runtime/subscription/container/CallbackSubscriptionContainer.test.ts b/packages/core/tests/unit/runtime/subscription/container/CallbackSubscriptionContainer.test.ts index a8eb040a..271e087d 100644 --- a/packages/core/tests/unit/runtime/subscription/container/CallbackSubscriptionContainer.test.ts +++ b/packages/core/tests/unit/runtime/subscription/container/CallbackSubscriptionContainer.test.ts @@ -2,31 +2,31 @@ import { Agile, CallbackSubscriptionContainer, Observer, -} from "../../../../../src"; +} from '../../../../../src'; -describe("CallbackSubscriptionContainer Tests", () => { +describe('CallbackSubscriptionContainer Tests', () => { let dummyAgile: Agile; let dummyObserver1: Observer; let dummyObserver2: Observer; beforeEach(() => { dummyAgile = new Agile(); - dummyObserver1 = new Observer(dummyAgile, { key: "dummyObserver1" }); - dummyObserver2 = new Observer(dummyAgile, { key: "dummyObserver2" }); + dummyObserver1 = new Observer(dummyAgile, {key: 'dummyObserver1'}); + dummyObserver2 = new Observer(dummyAgile, {key: 'dummyObserver2'}); }); - it("should create CallbackSubscriptionContainer", () => { + it('should create CallbackSubscriptionContainer', () => { const dummyIntegration = () => {}; const subscriptionContainer = new CallbackSubscriptionContainer( dummyIntegration, [dummyObserver1, dummyObserver2], - "dummyKey" + 'dummyKey', ); expect(subscriptionContainer.callback).toBe(dummyIntegration); - expect(subscriptionContainer.key).toBe("dummyKey"); + expect(subscriptionContainer.key).toBe('dummyKey'); expect(subscriptionContainer.ready).toBeFalsy(); expect(subscriptionContainer.subs.size).toBe(2); expect(subscriptionContainer.subs.has(dummyObserver1)).toBeTruthy(); diff --git a/packages/core/tests/unit/runtime/subscription/container/ComponentSubscriptionContainer.test.ts b/packages/core/tests/unit/runtime/subscription/container/ComponentSubscriptionContainer.test.ts index e3d3f5e1..40e4438f 100644 --- a/packages/core/tests/unit/runtime/subscription/container/ComponentSubscriptionContainer.test.ts +++ b/packages/core/tests/unit/runtime/subscription/container/ComponentSubscriptionContainer.test.ts @@ -2,31 +2,31 @@ import { Agile, ComponentSubscriptionContainer, Observer, -} from "../../../../../src"; +} from '../../../../../src'; -describe("ComponentSubscriptionContainer Tests", () => { +describe('ComponentSubscriptionContainer Tests', () => { let dummyAgile: Agile; let dummyObserver1: Observer; let dummyObserver2: Observer; beforeEach(() => { dummyAgile = new Agile(); - dummyObserver1 = new Observer(dummyAgile, { key: "dummyObserver1" }); - dummyObserver2 = new Observer(dummyAgile, { key: "dummyObserver2" }); + dummyObserver1 = new Observer(dummyAgile, {key: 'dummyObserver1'}); + dummyObserver2 = new Observer(dummyAgile, {key: 'dummyObserver2'}); }); - it("should create ComponentSubscriptionContainer", () => { - const dummyIntegration = { dummy: "integration" }; + it('should create ComponentSubscriptionContainer', () => { + const dummyIntegration = {dummy: 'integration'}; const subscriptionContainer = new ComponentSubscriptionContainer( dummyIntegration, [dummyObserver1, dummyObserver2], - "dummyKey" + 'dummyKey', ); expect(subscriptionContainer.component).toStrictEqual(dummyIntegration); - expect(subscriptionContainer.key).toBe("dummyKey"); + expect(subscriptionContainer.key).toBe('dummyKey'); expect(subscriptionContainer.ready).toBeFalsy(); expect(subscriptionContainer.subs.size).toBe(2); expect(subscriptionContainer.subs.has(dummyObserver1)).toBeTruthy(); diff --git a/packages/core/tests/unit/runtime/subscription/container/SubscriptionContainer.test.ts b/packages/core/tests/unit/runtime/subscription/container/SubscriptionContainer.test.ts index c46b4360..fadf9c6a 100644 --- a/packages/core/tests/unit/runtime/subscription/container/SubscriptionContainer.test.ts +++ b/packages/core/tests/unit/runtime/subscription/container/SubscriptionContainer.test.ts @@ -1,23 +1,23 @@ -import { Agile, Observer, SubscriptionContainer } from "../../../../../src"; +import {Agile, Observer, SubscriptionContainer} from '../../../../../src'; -describe("SubscriptionContainer Tests", () => { +describe('SubscriptionContainer Tests', () => { let dummyAgile: Agile; let dummyObserver1: Observer; let dummyObserver2: Observer; beforeEach(() => { dummyAgile = new Agile(); - dummyObserver1 = new Observer(dummyAgile, { key: "dummyObserver1" }); - dummyObserver2 = new Observer(dummyAgile, { key: "dummyObserver2" }); + dummyObserver1 = new Observer(dummyAgile, {key: 'dummyObserver1'}); + dummyObserver2 = new Observer(dummyAgile, {key: 'dummyObserver2'}); }); - it("should create SubscriptionContainer", () => { + it('should create SubscriptionContainer', () => { const subscriptionContainer = new SubscriptionContainer( [dummyObserver1, dummyObserver2], - "dummyKey" + 'dummyKey', ); - expect(subscriptionContainer.key).toBe("dummyKey"); + expect(subscriptionContainer.key).toBe('dummyKey'); expect(subscriptionContainer.ready).toBeFalsy(); expect(subscriptionContainer.subs.size).toBe(2); expect(subscriptionContainer.subs.has(dummyObserver1)).toBeTruthy(); diff --git a/packages/core/tests/unit/runtime/subscription/sub.controller.test.ts b/packages/core/tests/unit/runtime/subscription/sub.controller.test.ts index 768b4480..2349ca93 100644 --- a/packages/core/tests/unit/runtime/subscription/sub.controller.test.ts +++ b/packages/core/tests/unit/runtime/subscription/sub.controller.test.ts @@ -5,61 +5,61 @@ import { Observer, SubController, SubscriptionContainer, -} from "../../../../src"; +} from '../../../../src'; -describe("SubController Tests", () => { +describe('SubController Tests', () => { let dummyAgile: Agile; beforeEach(() => { - dummyAgile = new Agile({ localStorage: false }); + dummyAgile = new Agile({localStorage: false}); }); - it("should create SubController", () => { + it('should create SubController', () => { const subController = new SubController(dummyAgile); expect(subController.callbackSubs.size).toBe(0); expect(subController.callbackSubs.size).toBe(0); }); - describe("SubController Function Tests", () => { + describe('SubController Function Tests', () => { let subController: SubController; let dummyObserver1: Observer; let dummyObserver2: Observer; beforeEach(() => { - dummyObserver1 = new Observer(dummyAgile, { key: "dummyObserver1" }); - dummyObserver2 = new Observer(dummyAgile, { key: "dummyObserver2" }); + dummyObserver1 = new Observer(dummyAgile, {key: 'dummyObserver1'}); + dummyObserver2 = new Observer(dummyAgile, {key: 'dummyObserver2'}); subController = new SubController(dummyAgile); }); - describe("subscribeWithSubsObject function tests", () => { - const dummyIntegration = "myDummyIntegration"; + describe('subscribeWithSubsObject function tests', () => { + const dummyIntegration = 'myDummyIntegration'; let dummySubscriptionContainer: SubscriptionContainer; beforeEach(() => { dummySubscriptionContainer = new SubscriptionContainer(); - dummyObserver1.value = "myCoolValue"; + dummyObserver1.value = 'myCoolValue'; subController.registerSubscription = jest.fn( - () => dummySubscriptionContainer + () => dummySubscriptionContainer, ); - jest.spyOn(dummyObserver1, "subscribe"); - jest.spyOn(dummyObserver2, "subscribe"); + jest.spyOn(dummyObserver1, 'subscribe'); + jest.spyOn(dummyObserver2, 'subscribe'); }); - it("should create subscriptionContainer and add in Object shape passed Observers to it", () => { + it('should create subscriptionContainer and add in Object shape passed Observers to it', () => { const subscribeWithSubsResponse = subController.subscribeWithSubsObject( dummyIntegration, { dummyObserver1: dummyObserver1, dummyObserver2: dummyObserver2, }, - "subscribeWithSubsObjectKey" + 'subscribeWithSubsObjectKey', ); expect(subscribeWithSubsResponse).toStrictEqual({ props: { - dummyObserver1: "myCoolValue", + dummyObserver1: 'myCoolValue', }, subscriptionContainer: dummySubscriptionContainer, }); @@ -67,7 +67,7 @@ describe("SubController Tests", () => { expect(subController.registerSubscription).toHaveBeenCalledWith( dummyIntegration, [dummyObserver1, dummyObserver2], - "subscribeWithSubsObjectKey" + 'subscribeWithSubsObjectKey', ); expect(dummySubscriptionContainer.isObjectBased).toBeTruthy(); @@ -78,40 +78,40 @@ describe("SubController Tests", () => { expect(dummySubscriptionContainer.subs.size).toBe(2); expect( - dummySubscriptionContainer.subs.has(dummyObserver1) + dummySubscriptionContainer.subs.has(dummyObserver1), ).toBeTruthy(); expect( - dummySubscriptionContainer.subs.has(dummyObserver2) + dummySubscriptionContainer.subs.has(dummyObserver2), ).toBeTruthy(); expect(dummyObserver1.subscribe).toHaveBeenCalledWith( - dummySubscriptionContainer + dummySubscriptionContainer, ); expect(dummyObserver2.subscribe).toHaveBeenCalledWith( - dummySubscriptionContainer + dummySubscriptionContainer, ); }); }); - describe("subscribeWithSubsArray function tests", () => { - const dummyIntegration = "myDummyIntegration"; + describe('subscribeWithSubsArray function tests', () => { + const dummyIntegration = 'myDummyIntegration'; let dummySubscriptionContainer: SubscriptionContainer; beforeEach(() => { dummySubscriptionContainer = new SubscriptionContainer(); subController.registerSubscription = jest.fn( - () => dummySubscriptionContainer + () => dummySubscriptionContainer, ); - jest.spyOn(dummyObserver1, "subscribe"); - jest.spyOn(dummyObserver2, "subscribe"); + jest.spyOn(dummyObserver1, 'subscribe'); + jest.spyOn(dummyObserver2, 'subscribe'); }); - it("should create subscriptionContainer and add in Array Shape passed Observers to it", () => { + it('should create subscriptionContainer and add in Array Shape passed Observers to it', () => { const subscribeWithSubsArrayResponse = subController.subscribeWithSubsArray( dummyIntegration, [dummyObserver1, dummyObserver2], - "subscribeWithSubsArrayKey" + 'subscribeWithSubsArrayKey', ); expect(subscribeWithSubsArrayResponse).toBe(dummySubscriptionContainer); @@ -119,7 +119,7 @@ describe("SubController Tests", () => { expect(subController.registerSubscription).toHaveBeenCalledWith( dummyIntegration, [dummyObserver1, dummyObserver2], - "subscribeWithSubsArrayKey" + 'subscribeWithSubsArrayKey', ); expect(dummySubscriptionContainer.isObjectBased).toBeFalsy(); @@ -127,33 +127,33 @@ describe("SubController Tests", () => { expect(dummySubscriptionContainer.subs.size).toBe(2); expect( - dummySubscriptionContainer.subs.has(dummyObserver1) + dummySubscriptionContainer.subs.has(dummyObserver1), ).toBeTruthy(); expect( - dummySubscriptionContainer.subs.has(dummyObserver2) + dummySubscriptionContainer.subs.has(dummyObserver2), ).toBeTruthy(); expect(dummyObserver1.subscribe).toHaveBeenCalledWith( - dummySubscriptionContainer + dummySubscriptionContainer, ); expect(dummyObserver2.subscribe).toHaveBeenCalledWith( - dummySubscriptionContainer + dummySubscriptionContainer, ); }); }); - describe("unsubscribe function tests", () => { + describe('unsubscribe function tests', () => { beforeEach(() => { - jest.spyOn(dummyObserver1, "unsubscribe"); - jest.spyOn(dummyObserver2, "unsubscribe"); + jest.spyOn(dummyObserver1, 'unsubscribe'); + jest.spyOn(dummyObserver2, 'unsubscribe'); }); - it("should unsubscribe callbackSubscriptionContainer", () => { + it('should unsubscribe callbackSubscriptionContainer', () => { const dummyIntegration = () => {}; const callbackSubscriptionContainer = subController.registerCallbackSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - "myKey" + 'myKey', ); subController.unsubscribe(callbackSubscriptionContainer); @@ -161,21 +161,21 @@ describe("SubController Tests", () => { expect(subController.callbackSubs.size).toBe(0); expect(callbackSubscriptionContainer.ready).toBeFalsy(); expect(dummyObserver1.unsubscribe).toHaveBeenCalledWith( - callbackSubscriptionContainer + callbackSubscriptionContainer, ); expect(dummyObserver2.unsubscribe).toHaveBeenCalledWith( - callbackSubscriptionContainer + callbackSubscriptionContainer, ); }); - it("should unsubscribe componentSubscriptionContainer", () => { + it('should unsubscribe componentSubscriptionContainer', () => { const dummyIntegration: any = { - dummy: "integration", + dummy: 'integration', }; const componentSubscriptionContainer = subController.registerComponentSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - "myKey" + 'myKey', ); subController.unsubscribe(componentSubscriptionContainer); @@ -183,21 +183,21 @@ describe("SubController Tests", () => { expect(subController.componentSubs.size).toBe(0); expect(componentSubscriptionContainer.ready).toBeFalsy(); expect(dummyObserver1.unsubscribe).toHaveBeenCalledWith( - componentSubscriptionContainer + componentSubscriptionContainer, ); expect(dummyObserver2.unsubscribe).toHaveBeenCalledWith( - componentSubscriptionContainer + componentSubscriptionContainer, ); }); - it("should unsubscribe componentSubscriptionContainer in a passed Object that hold an instance of it", () => { + it('should unsubscribe componentSubscriptionContainer in a passed Object that hold an instance of it', () => { const dummyIntegration: any = { - dummy: "integration", + dummy: 'integration', }; const componentSubscriptionContainer = subController.registerComponentSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - "myKey" + 'myKey', ); subController.unsubscribe(dummyIntegration); @@ -205,181 +205,181 @@ describe("SubController Tests", () => { expect(subController.componentSubs.size).toBe(0); expect(componentSubscriptionContainer.ready).toBeFalsy(); expect(dummyObserver1.unsubscribe).toHaveBeenCalledWith( - componentSubscriptionContainer + componentSubscriptionContainer, ); expect(dummyObserver2.unsubscribe).toHaveBeenCalledWith( - componentSubscriptionContainer + componentSubscriptionContainer, ); }); }); - describe("registerSubscription function tests", () => { + describe('registerSubscription function tests', () => { let dummySubscriptionContainer: SubscriptionContainer; beforeEach(() => { dummySubscriptionContainer = new SubscriptionContainer(); subController.registerCallbackSubscription = jest.fn( - () => dummySubscriptionContainer as CallbackSubscriptionContainer + () => dummySubscriptionContainer as CallbackSubscriptionContainer, ); subController.registerComponentSubscription = jest.fn( - () => dummySubscriptionContainer as ComponentSubscriptionContainer + () => dummySubscriptionContainer as ComponentSubscriptionContainer, ); }); - it("should call registerCallbackSubscription if passed integrationInstance is a Function", () => { + it('should call registerCallbackSubscription if passed integrationInstance is a Function', () => { const dummyIntegration = () => {}; const subscriptionContainer = subController.registerSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - "niceKey" + 'niceKey', ); expect(subscriptionContainer).toBe(dummySubscriptionContainer); expect(subController.registerCallbackSubscription).toHaveBeenCalledWith( dummyIntegration, [dummyObserver1, dummyObserver2], - "niceKey" + 'niceKey', ); expect( - subController.registerComponentSubscription + subController.registerComponentSubscription, ).not.toHaveBeenCalled(); }); - it("should call registerComponentSubscription if passed integrationInstance is not a Function", () => { - const dummyIntegration = { dummy: "integration" }; + it('should call registerComponentSubscription if passed integrationInstance is not a Function', () => { + const dummyIntegration = {dummy: 'integration'}; const subscriptionContainer = subController.registerSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - "niceKey" + 'niceKey', ); expect(subscriptionContainer).toBe(dummySubscriptionContainer); expect( - subController.registerComponentSubscription + subController.registerComponentSubscription, ).toHaveBeenCalledWith( dummyIntegration, [dummyObserver1, dummyObserver2], - "niceKey" + 'niceKey', ); expect( - subController.registerCallbackSubscription + subController.registerCallbackSubscription, ).not.toHaveBeenCalled(); }); }); - describe("registerComponentSubscription function tests", () => { - it("should return ready componentSubscriptionContainer and add it to dummyIntegration (agileInstance.config.mount = false)", () => { - const dummyIntegration: any = { dummy: "integration" }; + describe('registerComponentSubscription function tests', () => { + it('should return ready componentSubscriptionContainer and add it to dummyIntegration (agileInstance.config.mount = false)', () => { + const dummyIntegration: any = {dummy: 'integration'}; const componentSubscriptionContainer = subController.registerComponentSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - "myKey" + 'myKey', ); expect(componentSubscriptionContainer).toBeInstanceOf( - ComponentSubscriptionContainer + ComponentSubscriptionContainer, ); - expect(componentSubscriptionContainer.key).toBe("myKey"); + expect(componentSubscriptionContainer.key).toBe('myKey'); expect(componentSubscriptionContainer.component).toStrictEqual( - dummyIntegration + dummyIntegration, ); expect(componentSubscriptionContainer.ready).toBeTruthy(); expect(componentSubscriptionContainer.subs.size).toBe(2); expect( - componentSubscriptionContainer.subs.has(dummyObserver1) + componentSubscriptionContainer.subs.has(dummyObserver1), ).toBeTruthy(); expect( - componentSubscriptionContainer.subs.has(dummyObserver2) + componentSubscriptionContainer.subs.has(dummyObserver2), ).toBeTruthy(); expect(subController.componentSubs.size).toBe(1); expect( - subController.componentSubs.has(componentSubscriptionContainer) + subController.componentSubs.has(componentSubscriptionContainer), ).toBeTruthy(); expect(dummyIntegration.componentSubscriptionContainer).toBe( - componentSubscriptionContainer + componentSubscriptionContainer, ); }); it("should return not ready componentSubscriptionContainer if componentInstance isn't mounted (agileInstance.config.mount = true)", () => { dummyAgile.config.waitForMount = true; const dummyIntegration: any = { - dummy: "integration", + dummy: 'integration', }; const componentSubscriptionContainer = subController.registerComponentSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - "myKey" + 'myKey', ); expect(componentSubscriptionContainer).toBeInstanceOf( - ComponentSubscriptionContainer + ComponentSubscriptionContainer, ); expect(componentSubscriptionContainer.ready).toBeFalsy(); }); - it("should return ready componentSubscriptionContainer if componentInstance is mounted (agileInstance.config.mount = true)", () => { + it('should return ready componentSubscriptionContainer if componentInstance is mounted (agileInstance.config.mount = true)', () => { dummyAgile.config.waitForMount = true; const dummyIntegration: any = { - dummy: "integration", + dummy: 'integration', }; subController.mount(dummyIntegration); const componentSubscriptionContainer = subController.registerComponentSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - "myKey" + 'myKey', ); expect(componentSubscriptionContainer).toBeInstanceOf( - ComponentSubscriptionContainer + ComponentSubscriptionContainer, ); expect(componentSubscriptionContainer.ready).toBeTruthy(); }); }); - describe("registerCallbackSubscription function tests", () => { - it("should return callbackSubscriptionContainer", () => { + describe('registerCallbackSubscription function tests', () => { + it('should return callbackSubscriptionContainer', () => { const dummyIntegration = () => {}; const callbackSubscriptionContainer = subController.registerCallbackSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - "myKey" + 'myKey', ); expect(callbackSubscriptionContainer).toBeInstanceOf( - CallbackSubscriptionContainer + CallbackSubscriptionContainer, ); - expect(callbackSubscriptionContainer.key).toBe("myKey"); + expect(callbackSubscriptionContainer.key).toBe('myKey'); expect(callbackSubscriptionContainer.callback).toBe(dummyIntegration); expect(callbackSubscriptionContainer.ready).toBeTruthy(); expect(callbackSubscriptionContainer.subs.size).toBe(2); expect( - callbackSubscriptionContainer.subs.has(dummyObserver1) + callbackSubscriptionContainer.subs.has(dummyObserver1), ).toBeTruthy(); expect( - callbackSubscriptionContainer.subs.has(dummyObserver2) + callbackSubscriptionContainer.subs.has(dummyObserver2), ).toBeTruthy(); expect(subController.callbackSubs.size).toBe(1); expect( - subController.callbackSubs.has(callbackSubscriptionContainer) + subController.callbackSubs.has(callbackSubscriptionContainer), ).toBeTruthy(); }); }); - describe("mount function tests", () => { + describe('mount function tests', () => { const dummyIntegration: any = { - dummy: "integration", + dummy: 'integration', }; let componentSubscriptionContainer: ComponentSubscriptionContainer; @@ -388,24 +388,24 @@ describe("SubController Tests", () => { componentSubscriptionContainer = subController.registerComponentSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - "myKey" + 'myKey', ); }); - it("should add componentInstance to mountedComponents and set its subscriptionContainer to ready", () => { + it('should add componentInstance to mountedComponents and set its subscriptionContainer to ready', () => { subController.mount(dummyIntegration); expect(componentSubscriptionContainer.ready).toBeTruthy(); expect(subController.mountedComponents.size).toBe(1); expect( - subController.mountedComponents.has(dummyIntegration) + subController.mountedComponents.has(dummyIntegration), ).toBeTruthy(); }); }); - describe("unmount function tests", () => { + describe('unmount function tests', () => { const dummyIntegration: any = { - dummy: "integration", + dummy: 'integration', }; let componentSubscriptionContainer: ComponentSubscriptionContainer; @@ -414,12 +414,12 @@ describe("SubController Tests", () => { componentSubscriptionContainer = subController.registerComponentSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - "myKey" + 'myKey', ); subController.mount(dummyIntegration); }); - it("should remove componentInstance from mountedComponents and set its subscriptionContainer to not ready", () => { + it('should remove componentInstance from mountedComponents and set its subscriptionContainer to not ready', () => { subController.unmount(dummyIntegration); expect(componentSubscriptionContainer.ready).toBeFalsy(); diff --git a/packages/core/tests/unit/state/state.observer.test.ts b/packages/core/tests/unit/state/state.observer.test.ts index a8cff5d9..27f71459 100644 --- a/packages/core/tests/unit/state/state.observer.test.ts +++ b/packages/core/tests/unit/state/state.observer.test.ts @@ -7,46 +7,46 @@ import { StateObserver, StatePersistent, SubscriptionContainer, -} from "../../../src"; +} from '../../../src'; -describe("StateObserver Tests", () => { +describe('StateObserver Tests', () => { let dummyAgile: Agile; let dummyState: State; beforeEach(() => { - dummyAgile = new Agile({ localStorage: false }); - dummyState = new State(dummyAgile, "dummyValue", { key: "dummyState" }); + dummyAgile = new Agile({localStorage: false}); + dummyState = new State(dummyAgile, 'dummyValue', {key: 'dummyState'}); }); - it("should create StateObserver (default config)", () => { + it('should create StateObserver (default config)', () => { const stateObserver = new StateObserver(dummyState); expect(stateObserver).toBeInstanceOf(StateObserver); - expect(stateObserver.nextStateValue).toBe("dummyValue"); + expect(stateObserver.nextStateValue).toBe('dummyValue'); expect(stateObserver.state()).toBe(dummyState); - expect(stateObserver.value).toBe("dummyValue"); + expect(stateObserver.value).toBe('dummyValue'); expect(stateObserver._key).toBeUndefined(); expect(stateObserver.deps.size).toBe(0); expect(stateObserver.subs.size).toBe(0); }); - it("should create StateObserver (specific config)", () => { - const dummyObserver1 = new Observer(dummyAgile, { key: "dummyObserver1" }); - const dummyObserver2 = new Observer(dummyAgile, { key: "dummyObserver2" }); + it('should create StateObserver (specific config)', () => { + const dummyObserver1 = new Observer(dummyAgile, {key: 'dummyObserver1'}); + const dummyObserver2 = new Observer(dummyAgile, {key: 'dummyObserver2'}); const dummySubscription1 = new SubscriptionContainer(); const dummySubscription2 = new SubscriptionContainer(); const stateObserver = new StateObserver(dummyState, { - key: "testKey", + key: 'testKey', deps: [dummyObserver1, dummyObserver2], subs: [dummySubscription1, dummySubscription2], }); expect(stateObserver).toBeInstanceOf(StateObserver); - expect(stateObserver.nextStateValue).toBe("dummyValue"); + expect(stateObserver.nextStateValue).toBe('dummyValue'); expect(stateObserver.state()).toBe(dummyState); - expect(stateObserver.value).toBe("dummyValue"); - expect(stateObserver._key).toBe("testKey"); + expect(stateObserver.value).toBe('dummyValue'); + expect(stateObserver._key).toBe('testKey'); expect(stateObserver.deps.size).toBe(2); expect(stateObserver.deps.has(dummyObserver2)).toBeTruthy(); expect(stateObserver.deps.has(dummyObserver1)).toBeTruthy(); @@ -55,54 +55,54 @@ describe("StateObserver Tests", () => { expect(stateObserver.subs.has(dummySubscription2)).toBeTruthy(); }); - describe("StateObserver Function Tests", () => { + describe('StateObserver Function Tests', () => { let stateObserver: StateObserver; beforeEach(() => { stateObserver = new StateObserver(dummyState, { - key: "stateObserverKey", + key: 'stateObserverKey', }); }); - describe("ingest function tests", () => { + describe('ingest function tests', () => { let computedObserver: StateObserver; let dummyComputed: Computed; beforeEach(() => { dummyComputed = new Computed(dummyAgile, () => {}, { - key: "dummyComputed", + key: 'dummyComputed', }); computedObserver = new StateObserver(dummyComputed, { - key: "computedObserverKey", + key: 'computedObserverKey', }); stateObserver.ingestValue = jest.fn(); computedObserver.ingestValue = jest.fn(); }); - it("should call ingestValue with nextStateValue (default config)", () => { - dummyState.nextStateValue = "nextValue"; + it('should call ingestValue with nextStateValue (default config)', () => { + dummyState.nextStateValue = 'nextValue'; stateObserver.ingest(); - expect(stateObserver.ingestValue).toHaveBeenCalledWith("nextValue", {}); + expect(stateObserver.ingestValue).toHaveBeenCalledWith('nextValue', {}); }); - it("should call ingestValue with nextStateValue (specific config)", () => { - dummyState.nextStateValue = "nextValue"; + it('should call ingestValue with nextStateValue (specific config)', () => { + dummyState.nextStateValue = 'nextValue'; stateObserver.ingest({ force: true, - key: "coolKey", + key: 'coolKey', storage: false, sideEffects: false, background: true, perform: false, }); - expect(stateObserver.ingestValue).toHaveBeenCalledWith("nextValue", { + expect(stateObserver.ingestValue).toHaveBeenCalledWith('nextValue', { force: true, - key: "coolKey", + key: 'coolKey', storage: false, sideEffects: false, background: true, @@ -110,20 +110,20 @@ describe("StateObserver Tests", () => { }); }); - it("should call ingestValue with computedValue if Observer belongs to a ComputedState (default config)", () => { - dummyComputed.computeValue = jest.fn(() => "computedValue"); + it('should call ingestValue with computedValue if Observer belongs to a ComputedState (default config)', () => { + dummyComputed.computeValue = jest.fn(() => 'computedValue'); computedObserver.ingest(); expect(computedObserver.ingestValue).toHaveBeenCalledWith( - "computedValue", - {} + 'computedValue', + {}, ); expect(dummyComputed.computeValue).toHaveBeenCalled(); }); }); - describe("ingestValue function tests", () => { + describe('ingestValue function tests', () => { beforeEach(() => { dummyAgile.runtime.ingest = jest.fn(); }); @@ -141,20 +141,20 @@ describe("StateObserver Tests", () => { }); }); - stateObserver.ingestValue("updatedDummyValue"); + stateObserver.ingestValue('updatedDummyValue'); - expect(stateObserver.nextStateValue).toBe("updatedDummyValue"); + expect(stateObserver.nextStateValue).toBe('updatedDummyValue'); expect(dummyAgile.runtime.ingest).toHaveBeenCalledWith( expect.any(StateRuntimeJob), { perform: true, - } + }, ); }); it("should ingest State into Runtime if newValue isn't equal to currentValue (specific config)", () => { dummyAgile.runtime.ingest = jest.fn((job: StateRuntimeJob) => { - expect(job._key).toBe("dummyJob"); + expect(job._key).toBe('dummyJob'); expect(job.observer).toBe(stateObserver); expect(job.config).toStrictEqual({ background: false, @@ -165,34 +165,34 @@ describe("StateObserver Tests", () => { }); }); - stateObserver.ingestValue("updatedDummyValue", { + stateObserver.ingestValue('updatedDummyValue', { perform: false, force: true, sideEffects: false, overwrite: true, - key: "dummyJob", + key: 'dummyJob', }); - expect(stateObserver.nextStateValue).toBe("updatedDummyValue"); + expect(stateObserver.nextStateValue).toBe('updatedDummyValue'); expect(dummyAgile.runtime.ingest).toHaveBeenCalledWith( expect.any(StateRuntimeJob), { perform: false, - } + }, ); }); it("shouldn't ingest State into Runtime if newValue is equal to currentValue (default config)", () => { - dummyState._value = "updatedDummyValue"; + dummyState._value = 'updatedDummyValue'; - stateObserver.ingestValue("updatedDummyValue"); + stateObserver.ingestValue('updatedDummyValue'); - expect(stateObserver.nextStateValue).toBe("updatedDummyValue"); + expect(stateObserver.nextStateValue).toBe('updatedDummyValue'); expect(dummyAgile.runtime.ingest).not.toHaveBeenCalled(); }); - it("should ingest State into Runtime if newValue is equal to currentValue (config.force = true)", () => { - dummyState._value = "updatedDummyValue"; + it('should ingest State into Runtime if newValue is equal to currentValue (config.force = true)', () => { + dummyState._value = 'updatedDummyValue'; dummyAgile.runtime.ingest = jest.fn((job: StateRuntimeJob) => { expect(job._key).toBe(stateObserver._key); expect(job.observer).toBe(stateObserver); @@ -205,18 +205,18 @@ describe("StateObserver Tests", () => { }); }); - stateObserver.ingestValue("updatedDummyValue", { force: true }); + stateObserver.ingestValue('updatedDummyValue', {force: true}); - expect(stateObserver.nextStateValue).toBe("updatedDummyValue"); + expect(stateObserver.nextStateValue).toBe('updatedDummyValue'); expect(dummyAgile.runtime.ingest).toHaveBeenCalledWith( expect.any(StateRuntimeJob), { perform: true, - } + }, ); }); - it("should ingest placeholder State into Runtime (default config)", () => { + it('should ingest placeholder State into Runtime (default config)', () => { dummyAgile.runtime.ingest = jest.fn((job: StateRuntimeJob) => { expect(job._key).toBe(stateObserver._key); expect(job.observer).toBe(stateObserver); @@ -230,40 +230,40 @@ describe("StateObserver Tests", () => { }); dummyState.isPlaceholder = true; - stateObserver.ingestValue("updatedDummyValue"); + stateObserver.ingestValue('updatedDummyValue'); - expect(stateObserver.nextStateValue).toBe("updatedDummyValue"); + expect(stateObserver.nextStateValue).toBe('updatedDummyValue'); expect(dummyAgile.runtime.ingest).toHaveBeenCalledWith( expect.any(StateRuntimeJob), { perform: true, - } + }, ); }); - it("should ingest State into Runtime and compute newStateValue if State compute Function is set (default config)", () => { + it('should ingest State into Runtime and compute newStateValue if State compute Function is set (default config)', () => { dummyState.computeMethod = (value) => `cool value '${value}'`; - stateObserver.ingestValue("updatedDummyValue"); + stateObserver.ingestValue('updatedDummyValue'); expect(stateObserver.nextStateValue).toBe( - "cool value 'updatedDummyValue'" + "cool value 'updatedDummyValue'", ); expect(dummyAgile.runtime.ingest).toHaveBeenCalledWith( expect.any(StateRuntimeJob), { perform: true, - } + }, ); }); }); - describe("perform function tests", () => { + describe('perform function tests', () => { let dummyJob: StateRuntimeJob; beforeEach(() => { dummyJob = new StateRuntimeJob(stateObserver, { - key: "dummyJob", + key: 'dummyJob', }); dummyState.persistent = new StatePersistent(dummyState); dummyState.isPersisted = true; @@ -271,84 +271,84 @@ describe("StateObserver Tests", () => { stateObserver.sideEffects = jest.fn(); }); - it("should perform Job", () => { - dummyJob.observer.nextStateValue = "newValue"; - dummyState.initialStateValue = "initialValue"; - dummyState._value = "dummyValue"; + it('should perform Job', () => { + dummyJob.observer.nextStateValue = 'newValue'; + dummyState.initialStateValue = 'initialValue'; + dummyState._value = 'dummyValue'; stateObserver.perform(dummyJob); - expect(dummyState.previousStateValue).toBe("dummyValue"); - expect(dummyState.initialStateValue).toBe("initialValue"); - expect(dummyState._value).toBe("newValue"); - expect(dummyState.nextStateValue).toBe("newValue"); + expect(dummyState.previousStateValue).toBe('dummyValue'); + expect(dummyState.initialStateValue).toBe('initialValue'); + expect(dummyState._value).toBe('newValue'); + expect(dummyState.nextStateValue).toBe('newValue'); expect(dummyState.isSet).toBeTruthy(); - expect(stateObserver.value).toBe("newValue"); + expect(stateObserver.value).toBe('newValue'); expect(stateObserver.sideEffects).toHaveBeenCalledWith(dummyJob); }); - it("should perform Job and overwrite State (job.config.overwrite = true)", () => { - dummyJob.observer.nextStateValue = "newValue"; + it('should perform Job and overwrite State (job.config.overwrite = true)', () => { + dummyJob.observer.nextStateValue = 'newValue'; dummyJob.config.overwrite = true; dummyState.isPlaceholder = true; - dummyState.initialStateValue = "overwriteValue"; - dummyState._value = "dummyValue"; + dummyState.initialStateValue = 'overwriteValue'; + dummyState._value = 'dummyValue'; stateObserver.perform(dummyJob); - expect(dummyState.previousStateValue).toBe("newValue"); - expect(dummyState.initialStateValue).toBe("newValue"); - expect(dummyState._value).toBe("newValue"); - expect(dummyState.nextStateValue).toBe("newValue"); + expect(dummyState.previousStateValue).toBe('newValue'); + expect(dummyState.initialStateValue).toBe('newValue'); + expect(dummyState._value).toBe('newValue'); + expect(dummyState.nextStateValue).toBe('newValue'); expect(dummyState.isSet).toBeFalsy(); expect(dummyState.isPlaceholder).toBeFalsy(); - expect(stateObserver.value).toBe("newValue"); + expect(stateObserver.value).toBe('newValue'); expect(stateObserver.sideEffects).toHaveBeenCalledWith(dummyJob); }); - it("should perform Job and set isSet to false if initialStateValue equals to newStateValue", () => { - dummyJob.observer.nextStateValue = "newValue"; - dummyState.initialStateValue = "newValue"; - dummyState._value = "dummyValue"; + it('should perform Job and set isSet to false if initialStateValue equals to newStateValue', () => { + dummyJob.observer.nextStateValue = 'newValue'; + dummyState.initialStateValue = 'newValue'; + dummyState._value = 'dummyValue'; stateObserver.perform(dummyJob); - expect(dummyState.previousStateValue).toBe("dummyValue"); - expect(dummyState.initialStateValue).toBe("newValue"); - expect(dummyState._value).toBe("newValue"); - expect(dummyState.nextStateValue).toBe("newValue"); + expect(dummyState.previousStateValue).toBe('dummyValue'); + expect(dummyState.initialStateValue).toBe('newValue'); + expect(dummyState._value).toBe('newValue'); + expect(dummyState.nextStateValue).toBe('newValue'); expect(dummyState.isSet).toBeFalsy(); - expect(stateObserver.value).toBe("newValue"); + expect(stateObserver.value).toBe('newValue'); expect(stateObserver.sideEffects).toHaveBeenCalledWith(dummyJob); }); }); - describe("sideEffects function tests", () => { + describe('sideEffects function tests', () => { let dummyJob: StateRuntimeJob; let dummyStateObserver: StateObserver; beforeEach(() => { - dummyStateObserver = new StateObserver(new State(dummyAgile, "test")); + dummyStateObserver = new StateObserver(new State(dummyAgile, 'test')); dummyJob = new StateRuntimeJob(stateObserver, { - key: "dummyJob", + key: 'dummyJob', }); dummyState.observer.deps.add(dummyStateObserver); - dummyState.watchers["dummyWatcher"] = jest.fn(); - dummyState.sideEffects["dummySideEffect"] = jest.fn(); + dummyState.watchers['dummyWatcher'] = jest.fn(); + dummyState.sideEffects['dummySideEffect'] = jest.fn(); dummyStateObserver.ingest = jest.fn(); }); - it("should call watchers, sideEffects and ingest dependencies of State", () => { - dummyState._value = "dummyValue"; + it('should call watchers, sideEffects and ingest dependencies of State', () => { + dummyState._value = 'dummyValue'; stateObserver.sideEffects(dummyJob); - expect(dummyState.watchers["dummyWatcher"]).toHaveBeenCalledWith( - "dummyValue" + expect(dummyState.watchers['dummyWatcher']).toHaveBeenCalledWith( + 'dummyValue', ); - expect(dummyState.sideEffects["dummySideEffect"]).toHaveBeenCalledWith( - dummyJob.config + expect(dummyState.sideEffects['dummySideEffect']).toHaveBeenCalledWith( + dummyJob.config, ); expect(dummyStateObserver.ingest).toHaveBeenCalledWith({ perform: false, @@ -356,15 +356,15 @@ describe("StateObserver Tests", () => { }); it("should call watchers, ingest dependencies of State and shouldn't call sideEffects (job.config.sideEffects = false)", () => { - dummyState._value = "dummyValue"; + dummyState._value = 'dummyValue'; dummyJob.config.sideEffects = false; stateObserver.sideEffects(dummyJob); - expect(dummyState.watchers["dummyWatcher"]).toHaveBeenCalledWith( - "dummyValue" + expect(dummyState.watchers['dummyWatcher']).toHaveBeenCalledWith( + 'dummyValue', ); expect( - dummyState.sideEffects["dummySideEffect"] + dummyState.sideEffects['dummySideEffect'], ).not.toHaveBeenCalled(); expect(dummyStateObserver.ingest).toHaveBeenCalledWith({ perform: false, diff --git a/packages/core/tests/unit/state/state.persistent.test.ts b/packages/core/tests/unit/state/state.persistent.test.ts index 31e60f9f..056cb244 100644 --- a/packages/core/tests/unit/state/state.persistent.test.ts +++ b/packages/core/tests/unit/state/state.persistent.test.ts @@ -1,30 +1,24 @@ -import { - Agile, - State, - StatePersistent, - Storage, - Persistent, -} from "../../../src"; - -describe("StatePersistent Tests", () => { +import {Agile, State, StatePersistent, Storage, Persistent} from '../../../src'; + +describe('StatePersistent Tests', () => { let dummyAgile: Agile; let dummyState: State; beforeEach(() => { jest.clearAllMocks(); - dummyAgile = new Agile({ localStorage: false }); - dummyState = new State(dummyAgile, "dummyValue"); + dummyAgile = new Agile({localStorage: false}); + dummyState = new State(dummyAgile, 'dummyValue'); - jest.spyOn(StatePersistent.prototype, "instantiatePersistent"); - jest.spyOn(StatePersistent.prototype, "initialLoading"); + jest.spyOn(StatePersistent.prototype, 'instantiatePersistent'); + jest.spyOn(StatePersistent.prototype, 'initialLoading'); console.error = jest.fn(); }); it("should create StatePersistent and shouldn't call initialLoading if Persistent isn't ready (default config)", () => { // Overwrite instantiatePersistent once to not call it and set ready property jest - .spyOn(StatePersistent.prototype, "instantiatePersistent") + .spyOn(StatePersistent.prototype, 'instantiatePersistent') .mockImplementationOnce(function () { this.ready = false; }); @@ -50,20 +44,20 @@ describe("StatePersistent Tests", () => { it("should create StatePersistent and shouldn't call initialLoading if Persistent isn't ready (specific config)", () => { // Overwrite instantiatePersistent once to not call it and set ready property jest - .spyOn(StatePersistent.prototype, "instantiatePersistent") + .spyOn(StatePersistent.prototype, 'instantiatePersistent') .mockImplementationOnce(function () { this.ready = false; }); const statePersistent = new StatePersistent(dummyState, { - key: "statePersistentKey", - storageKeys: ["test1", "test2"], + key: 'statePersistentKey', + storageKeys: ['test1', 'test2'], }); expect(statePersistent).toBeInstanceOf(StatePersistent); expect(statePersistent.instantiatePersistent).toHaveBeenCalledWith({ - key: "statePersistentKey", - storageKeys: ["test1", "test2"], + key: 'statePersistentKey', + storageKeys: ['test1', 'test2'], }); expect(statePersistent.initialLoading).not.toHaveBeenCalled(); @@ -75,10 +69,10 @@ describe("StatePersistent Tests", () => { expect(statePersistent.defaultStorageKey).toBeUndefined(); }); - it("should create StatePersistent and should call initialLoading if Persistent is ready (default config)", () => { + it('should create StatePersistent and should call initialLoading if Persistent is ready (default config)', () => { // Overwrite instantiatePersistent once to not call it jest - .spyOn(StatePersistent.prototype, "instantiatePersistent") + .spyOn(StatePersistent.prototype, 'instantiatePersistent') .mockImplementationOnce(function () { this.ready = true; }); @@ -91,7 +85,7 @@ describe("StatePersistent Tests", () => { it("should create StatePersistent and shouldn't call initialLoading if Persistent is ready (config.instantiate = false)", () => { // Overwrite instantiatePersistent once to not call it and set ready property jest - .spyOn(StatePersistent.prototype, "instantiatePersistent") + .spyOn(StatePersistent.prototype, 'instantiatePersistent') .mockImplementationOnce(function () { this.ready = true; }); @@ -103,53 +97,53 @@ describe("StatePersistent Tests", () => { expect(statePersistent.initialLoading).not.toHaveBeenCalled(); }); - describe("StatePersistent Function Tests", () => { + describe('StatePersistent Function Tests', () => { let statePersistent: StatePersistent; beforeEach(() => { statePersistent = new StatePersistent(dummyState, { - key: "statePersistentKey", - storageKeys: ["dummyStorage"], + key: 'statePersistentKey', + storageKeys: ['dummyStorage'], }); dummyAgile.registerStorage( new Storage({ - key: "dummyStorage", + key: 'dummyStorage', methods: { get: jest.fn(), remove: jest.fn(), set: jest.fn(), }, - }) + }), ); }); - describe("setKey function tests", () => { + describe('setKey function tests', () => { beforeEach(() => { statePersistent.removePersistedValue = jest.fn(); statePersistent.persistValue = jest.fn(); statePersistent.initialLoading = jest.fn(); - jest.spyOn(statePersistent, "validatePersistent"); + jest.spyOn(statePersistent, 'validatePersistent'); }); - it("should update key with valid key in ready Persistent", async () => { + it('should update key with valid key in ready Persistent', async () => { statePersistent.ready = true; - statePersistent._key = "dummyKey"; + statePersistent._key = 'dummyKey'; - await statePersistent.setKey("newKey"); + await statePersistent.setKey('newKey'); - expect(statePersistent._key).toBe("newKey"); + expect(statePersistent._key).toBe('newKey'); expect(statePersistent.ready).toBeTruthy(); expect(statePersistent.validatePersistent).toHaveBeenCalled(); expect(statePersistent.initialLoading).not.toHaveBeenCalled(); - expect(statePersistent.persistValue).toHaveBeenCalledWith("newKey"); + expect(statePersistent.persistValue).toHaveBeenCalledWith('newKey'); expect(statePersistent.removePersistedValue).toHaveBeenCalledWith( - "dummyKey" + 'dummyKey', ); }); - it("should update key with not valid key in ready Persistent", async () => { + it('should update key with not valid key in ready Persistent', async () => { statePersistent.ready = true; - statePersistent._key = "dummyKey"; + statePersistent._key = 'dummyKey'; await statePersistent.setKey(); @@ -159,16 +153,16 @@ describe("StatePersistent Tests", () => { expect(statePersistent.initialLoading).not.toHaveBeenCalled(); expect(statePersistent.persistValue).not.toHaveBeenCalled(); expect(statePersistent.removePersistedValue).toHaveBeenCalledWith( - "dummyKey" + 'dummyKey', ); }); - it("should update key with valid key in not ready Persistent", async () => { + it('should update key with valid key in not ready Persistent', async () => { statePersistent.ready = false; - await statePersistent.setKey("newKey"); + await statePersistent.setKey('newKey'); - expect(statePersistent._key).toBe("newKey"); + expect(statePersistent._key).toBe('newKey'); expect(statePersistent.ready).toBeTruthy(); expect(statePersistent.validatePersistent).toHaveBeenCalled(); expect(statePersistent.initialLoading).toHaveBeenCalled(); @@ -176,7 +170,7 @@ describe("StatePersistent Tests", () => { expect(statePersistent.removePersistedValue).not.toHaveBeenCalled(); }); - it("should update key with not valid key in not ready Persistent", async () => { + it('should update key with not valid key in not ready Persistent', async () => { statePersistent.ready = false; await statePersistent.setKey(); @@ -190,12 +184,12 @@ describe("StatePersistent Tests", () => { }); }); - describe("initialLoading function tests", () => { + describe('initialLoading function tests', () => { beforeEach(() => { - jest.spyOn(Persistent.prototype, "initialLoading"); + jest.spyOn(Persistent.prototype, 'initialLoading'); }); - it("should initialLoad and set isPersisted in State to true", async () => { + it('should initialLoad and set isPersisted in State to true', async () => { await statePersistent.initialLoading(); expect(Persistent.prototype.initialLoading).toHaveBeenCalled(); @@ -203,16 +197,16 @@ describe("StatePersistent Tests", () => { }); }); - describe("loadPersistedValue function tests", () => { + describe('loadPersistedValue function tests', () => { beforeEach(() => { dummyState.set = jest.fn(); statePersistent.persistValue = jest.fn(); }); - it("should load State Value with persistentKey and apply it to the State if loading was successful", async () => { + it('should load State Value with persistentKey and apply it to the State if loading was successful', async () => { statePersistent.ready = true; dummyAgile.storages.get = jest.fn(() => - Promise.resolve("dummyValue" as any) + Promise.resolve('dummyValue' as any), ); const response = await statePersistent.loadPersistedValue(); @@ -220,20 +214,20 @@ describe("StatePersistent Tests", () => { expect(response).toBeTruthy(); expect(dummyAgile.storages.get).toHaveBeenCalledWith( statePersistent._key, - statePersistent.defaultStorageKey + statePersistent.defaultStorageKey, ); - expect(dummyState.set).toHaveBeenCalledWith("dummyValue", { + expect(dummyState.set).toHaveBeenCalledWith('dummyValue', { storage: false, }); expect(statePersistent.persistValue).toHaveBeenCalledWith( - statePersistent._key + statePersistent._key, ); }); it("should load State Value with persistentKey and shouldn't apply it to the State if loading wasn't successful", async () => { statePersistent.ready = true; dummyAgile.storages.get = jest.fn(() => - Promise.resolve(undefined as any) + Promise.resolve(undefined as any), ); const response = await statePersistent.loadPersistedValue(); @@ -241,35 +235,35 @@ describe("StatePersistent Tests", () => { expect(response).toBeFalsy(); expect(dummyAgile.storages.get).toHaveBeenCalledWith( statePersistent._key, - statePersistent.defaultStorageKey + statePersistent.defaultStorageKey, ); expect(dummyState.set).not.toHaveBeenCalled(); expect(statePersistent.persistValue).not.toHaveBeenCalled(); }); - it("should load State Value with specific Key and apply it to the State if loading was successful", async () => { + it('should load State Value with specific Key and apply it to the State if loading was successful', async () => { statePersistent.ready = true; dummyAgile.storages.get = jest.fn(() => - Promise.resolve("dummyValue" as any) + Promise.resolve('dummyValue' as any), ); - const response = await statePersistent.loadPersistedValue("coolKey"); + const response = await statePersistent.loadPersistedValue('coolKey'); expect(response).toBeTruthy(); expect(dummyAgile.storages.get).toHaveBeenCalledWith( - "coolKey", - statePersistent.defaultStorageKey + 'coolKey', + statePersistent.defaultStorageKey, ); - expect(dummyState.set).toHaveBeenCalledWith("dummyValue", { + expect(dummyState.set).toHaveBeenCalledWith('dummyValue', { storage: false, }); - expect(statePersistent.persistValue).toHaveBeenCalledWith("coolKey"); + expect(statePersistent.persistValue).toHaveBeenCalledWith('coolKey'); }); it("shouldn't load State Value if Persistent isn't ready", async () => { statePersistent.ready = false; dummyAgile.storages.get = jest.fn(() => - Promise.resolve(undefined as any) + Promise.resolve(undefined as any), ); const response = await statePersistent.loadPersistedValue(); @@ -281,7 +275,7 @@ describe("StatePersistent Tests", () => { }); }); - describe("persistValue function tests", () => { + describe('persistValue function tests', () => { beforeEach(() => { dummyState.addSideEffect = jest.fn(); statePersistent.rebuildStorageSideEffect = jest.fn(); @@ -289,7 +283,7 @@ describe("StatePersistent Tests", () => { statePersistent.isPersisted = false; }); - it("should persist State with persistentKey", async () => { + it('should persist State with persistentKey', async () => { statePersistent.ready = true; const response = await statePersistent.persistValue(); @@ -297,28 +291,28 @@ describe("StatePersistent Tests", () => { expect(response).toBeTruthy(); expect(dummyState.addSideEffect).toHaveBeenCalledWith( StatePersistent.storeValueSideEffectKey, - expect.any(Function) + expect.any(Function), ); expect(statePersistent.rebuildStorageSideEffect).toHaveBeenCalledWith( dummyState, - statePersistent._key + statePersistent._key, ); expect(statePersistent.isPersisted).toBeTruthy(); }); - it("should persist State with specific Key", async () => { + it('should persist State with specific Key', async () => { statePersistent.ready = true; - const response = await statePersistent.persistValue("coolKey"); + const response = await statePersistent.persistValue('coolKey'); expect(response).toBeTruthy(); expect(dummyState.addSideEffect).toHaveBeenCalledWith( StatePersistent.storeValueSideEffectKey, - expect.any(Function) + expect.any(Function), ); expect(statePersistent.rebuildStorageSideEffect).toHaveBeenCalledWith( dummyState, - "coolKey" + 'coolKey', ); expect(statePersistent.isPersisted).toBeTruthy(); }); @@ -334,30 +328,30 @@ describe("StatePersistent Tests", () => { expect(statePersistent.isPersisted).toBeFalsy(); }); - describe("test added sideEffect called StatePersistent.storeValueSideEffectKey", () => { + describe('test added sideEffect called StatePersistent.storeValueSideEffectKey', () => { beforeEach(() => { statePersistent.rebuildStorageSideEffect = jest.fn(); }); - it("should call rebuildStorageSideEffect", async () => { + it('should call rebuildStorageSideEffect', async () => { await statePersistent.persistValue(); dummyState.sideEffects[StatePersistent.storeValueSideEffectKey]({ - dummy: "property", + dummy: 'property', }); expect(statePersistent.rebuildStorageSideEffect).toHaveBeenCalledWith( dummyState, statePersistent._key, { - dummy: "property", - } + dummy: 'property', + }, ); }); }); }); - describe("removePersistedValue function tests", () => { + describe('removePersistedValue function tests', () => { beforeEach(() => { dummyState.removeSideEffect = jest.fn(); dummyAgile.storages.remove = jest.fn(); @@ -365,34 +359,34 @@ describe("StatePersistent Tests", () => { statePersistent.isPersisted = true; }); - it("should remove persisted State from Storage with persistentKey", async () => { + it('should remove persisted State from Storage with persistentKey', async () => { statePersistent.ready = true; const response = await statePersistent.removePersistedValue(); expect(response).toBeTruthy(); expect(dummyState.removeSideEffect).toHaveBeenCalledWith( - StatePersistent.storeValueSideEffectKey + StatePersistent.storeValueSideEffectKey, ); expect(dummyAgile.storages.remove).toHaveBeenCalledWith( statePersistent._key, - statePersistent.storageKeys + statePersistent.storageKeys, ); expect(statePersistent.isPersisted).toBeFalsy(); }); - it("should remove persisted State from Storage with specific Key", async () => { + it('should remove persisted State from Storage with specific Key', async () => { statePersistent.ready = true; - const response = await statePersistent.removePersistedValue("coolKey"); + const response = await statePersistent.removePersistedValue('coolKey'); expect(response).toBeTruthy(); expect(dummyState.removeSideEffect).toHaveBeenCalledWith( - StatePersistent.storeValueSideEffectKey + StatePersistent.storeValueSideEffectKey, ); expect(dummyAgile.storages.remove).toHaveBeenCalledWith( - "coolKey", - statePersistent.storageKeys + 'coolKey', + statePersistent.storageKeys, ); expect(statePersistent.isPersisted).toBeFalsy(); }); @@ -400,7 +394,7 @@ describe("StatePersistent Tests", () => { it("shouldn't remove State from Storage if Persistent isn't ready", async () => { statePersistent.ready = false; - const response = await statePersistent.removePersistedValue("coolKey"); + const response = await statePersistent.removePersistedValue('coolKey'); expect(response).toBeFalsy(); expect(dummyState.removeSideEffect).not.toHaveBeenCalled(); @@ -409,33 +403,33 @@ describe("StatePersistent Tests", () => { }); }); - describe("formatKey function tests", () => { - it("should return key of State if no key got passed", () => { - dummyState._key = "coolKey"; + describe('formatKey function tests', () => { + it('should return key of State if no key got passed', () => { + dummyState._key = 'coolKey'; const response = statePersistent.formatKey(); - expect(response).toBe("coolKey"); + expect(response).toBe('coolKey'); }); - it("should return passed key", () => { - dummyState._key = "coolKey"; + it('should return passed key', () => { + dummyState._key = 'coolKey'; - const response = statePersistent.formatKey("awesomeKey"); + const response = statePersistent.formatKey('awesomeKey'); - expect(response).toBe("awesomeKey"); + expect(response).toBe('awesomeKey'); }); - it("should return and apply passed key to State if State had no own key before", () => { + it('should return and apply passed key to State if State had no own key before', () => { dummyState._key = undefined; - const response = statePersistent.formatKey("awesomeKey"); + const response = statePersistent.formatKey('awesomeKey'); - expect(response).toBe("awesomeKey"); - expect(dummyState._key).toBe("awesomeKey"); + expect(response).toBe('awesomeKey'); + expect(dummyState._key).toBe('awesomeKey'); }); - it("should return undefined if no key got passed and State has no key", () => { + it('should return undefined if no key got passed and State has no key', () => { dummyState._key = undefined; const response = statePersistent.formatKey(); @@ -444,23 +438,23 @@ describe("StatePersistent Tests", () => { }); }); - describe("rebuildStorageSideEffect function tests", () => { + describe('rebuildStorageSideEffect function tests', () => { beforeEach(() => { dummyAgile.storages.set = jest.fn(); }); - it("should save State Value in Storage (default config)", () => { - statePersistent.rebuildStorageSideEffect(dummyState, "coolKey"); + it('should save State Value in Storage (default config)', () => { + statePersistent.rebuildStorageSideEffect(dummyState, 'coolKey'); expect(dummyAgile.storages.set).toHaveBeenCalledWith( - "coolKey", + 'coolKey', dummyState.getPersistableValue(), - statePersistent.storageKeys + statePersistent.storageKeys, ); }); it("shouldn't save State Value in Storage (config.storage = false)", () => { - statePersistent.rebuildStorageSideEffect(dummyState, "coolKey", { + statePersistent.rebuildStorageSideEffect(dummyState, 'coolKey', { storage: false, }); diff --git a/packages/core/tests/unit/state/state.runtime.job.test.ts b/packages/core/tests/unit/state/state.runtime.job.test.ts index 9e57bf58..05c29cbd 100644 --- a/packages/core/tests/unit/state/state.runtime.job.test.ts +++ b/packages/core/tests/unit/state/state.runtime.job.test.ts @@ -5,26 +5,26 @@ import { StateRuntimeJob, State, Integration, -} from "../../../src"; +} from '../../../src'; // jest.mock("../../../src/runtime/runtime.job"); // Can't mock RuntimeJob because mocks get instantiated before everything else -> I got the good old not loaded Object error https://github.com/kentcdodds/how-jest-mocking-works -describe("RuntimeJob Tests", () => { +describe('RuntimeJob Tests', () => { let dummyAgile: Agile; let dummyIntegration: Integration; let dummyState: State; let dummyObserver: StateObserver; beforeEach(() => { - dummyAgile = new Agile({ localStorage: false }); + dummyAgile = new Agile({localStorage: false}); dummyIntegration = new Integration({ - key: "myIntegration", + key: 'myIntegration', }); - dummyState = new State(dummyAgile, "dummyValue"); + dummyState = new State(dummyAgile, 'dummyValue'); dummyObserver = new StateObserver(dummyState); }); - it("should create RuntimeJob with Agile that has integrations (default config)", () => { + it('should create RuntimeJob with Agile that has integrations (default config)', () => { dummyAgile.integrate(dummyIntegration); const job = new StateRuntimeJob(dummyObserver); @@ -43,16 +43,16 @@ describe("RuntimeJob Tests", () => { expect(job.subscriptionContainersToUpdate.size).toBe(0); }); - it("should create RuntimeJob with Agile that has integrations (specific config)", () => { + it('should create RuntimeJob with Agile that has integrations (specific config)', () => { dummyAgile.integrate(dummyIntegration); const job = new StateRuntimeJob(dummyObserver, { - key: "dummyJob", + key: 'dummyJob', sideEffects: false, force: true, }); - expect(job._key).toBe("dummyJob"); + expect(job._key).toBe('dummyJob'); expect(job.observer).toBe(dummyObserver); expect(job.config).toStrictEqual({ background: false, @@ -66,7 +66,7 @@ describe("RuntimeJob Tests", () => { expect(job.subscriptionContainersToUpdate.size).toBe(0); }); - it("should create RuntimeJob with Agile that has no integrations (default config)", () => { + it('should create RuntimeJob with Agile that has no integrations (default config)', () => { const job = new StateRuntimeJob(dummyObserver); expect(job._key).toBeUndefined(); @@ -83,10 +83,10 @@ describe("RuntimeJob Tests", () => { expect(job.subscriptionContainersToUpdate.size).toBe(0); }); - it("should create RuntimeJob and Agile that has integrations (config.background = true)", () => { + it('should create RuntimeJob and Agile that has integrations (config.background = true)', () => { dummyAgile.integrate(dummyIntegration); - const job = new StateRuntimeJob(dummyObserver, { background: true }); + const job = new StateRuntimeJob(dummyObserver, {background: true}); expect(job._key).toBeUndefined(); expect(job.observer).toBe(dummyObserver); diff --git a/packages/core/tests/unit/state/state.test.ts b/packages/core/tests/unit/state/state.test.ts index a1717ea7..5481b53b 100644 --- a/packages/core/tests/unit/state/state.test.ts +++ b/packages/core/tests/unit/state/state.test.ts @@ -5,39 +5,39 @@ import { Observer, StatePersistent, ComputedTracker, -} from "../../../src"; -import * as Utils from "../../../src/utils"; +} from '../../../src'; +import * as Utils from '../../../src/utils'; -jest.mock("../../../src/state/state.persistent"); +jest.mock('../../../src/state/state.persistent'); -describe("State Tests", () => { +describe('State Tests', () => { let dummyAgile: Agile; beforeEach(() => { jest.clearAllMocks(); - dummyAgile = new Agile({ localStorage: false }); + dummyAgile = new Agile({localStorage: false}); - jest.spyOn(State.prototype, "set"); + jest.spyOn(State.prototype, 'set'); console.error = jest.fn(); console.warn = jest.fn(); }); - it("should create State and should call initial set (default config)", () => { + it('should create State and should call initial set (default config)', () => { // Overwrite select once to not call it - jest.spyOn(State.prototype, "set").mockReturnValueOnce(undefined); + jest.spyOn(State.prototype, 'set').mockReturnValueOnce(undefined); - const state = new State(dummyAgile, "coolValue"); + const state = new State(dummyAgile, 'coolValue'); - expect(state.set).toHaveBeenCalledWith("coolValue", { overwrite: true }); + expect(state.set).toHaveBeenCalledWith('coolValue', {overwrite: true}); expect(state._key).toBeUndefined(); expect(state.valueType).toBeUndefined(); expect(state.isSet).toBeFalsy(); expect(state.isPlaceholder).toBeTruthy(); - expect(state.initialStateValue).toBe("coolValue"); - expect(state._value).toBe("coolValue"); - expect(state.previousStateValue).toBe("coolValue"); - expect(state.nextStateValue).toBe("coolValue"); + expect(state.initialStateValue).toBe('coolValue'); + expect(state._value).toBe('coolValue'); + expect(state.previousStateValue).toBe('coolValue'); + expect(state.nextStateValue).toBe('coolValue'); expect(state.observer).toBeInstanceOf(StateObserver); expect(state.observer.deps.size).toBe(0); expect(state.observer._key).toBeUndefined(); @@ -48,30 +48,30 @@ describe("State Tests", () => { expect(state.watchers).toStrictEqual({}); }); - it("should create State and should call initial set (specific config)", () => { + it('should create State and should call initial set (specific config)', () => { // Overwrite select once to not call it - jest.spyOn(State.prototype, "set").mockReturnValueOnce(undefined); + jest.spyOn(State.prototype, 'set').mockReturnValueOnce(undefined); const dummyObserver = new Observer(dummyAgile); - const state = new State(dummyAgile, "coolValue", { - key: "coolState", + const state = new State(dummyAgile, 'coolValue', { + key: 'coolState', deps: [dummyObserver], }); - expect(state.set).toHaveBeenCalledWith("coolValue", { overwrite: true }); - expect(state._key).toBe("coolState"); + expect(state.set).toHaveBeenCalledWith('coolValue', {overwrite: true}); + expect(state._key).toBe('coolState'); expect(state.valueType).toBeUndefined(); expect(state.isSet).toBeFalsy(); expect(state.isPlaceholder).toBeTruthy(); - expect(state.initialStateValue).toBe("coolValue"); - expect(state._value).toBe("coolValue"); - expect(state.previousStateValue).toBe("coolValue"); - expect(state.nextStateValue).toBe("coolValue"); + expect(state.initialStateValue).toBe('coolValue'); + expect(state._value).toBe('coolValue'); + expect(state.previousStateValue).toBe('coolValue'); + expect(state.nextStateValue).toBe('coolValue'); expect(state.observer).toBeInstanceOf(StateObserver); expect(state.observer.deps.size).toBe(1); expect(state.observer.deps.has(dummyObserver)).toBeTruthy(); - expect(state.observer._key).toBe("coolState"); + expect(state.observer._key).toBe('coolState'); expect(state.sideEffects).toStrictEqual({}); expect(state.computeMethod).toBeUndefined(); expect(state.isPersisted).toBeFalsy(); @@ -81,19 +81,19 @@ describe("State Tests", () => { it("should create State and shouldn't call initial set (config.isPlaceholder = true)", () => { // Overwrite select once to not call it - jest.spyOn(State.prototype, "set").mockReturnValueOnce(undefined); + jest.spyOn(State.prototype, 'set').mockReturnValueOnce(undefined); - const state = new State(dummyAgile, "coolValue", { isPlaceholder: true }); + const state = new State(dummyAgile, 'coolValue', {isPlaceholder: true}); expect(state.set).not.toHaveBeenCalled(); expect(state._key).toBeUndefined(); expect(state.valueType).toBeUndefined(); expect(state.isSet).toBeFalsy(); expect(state.isPlaceholder).toBeTruthy(); - expect(state.initialStateValue).toBe("coolValue"); - expect(state._value).toBe("coolValue"); - expect(state.previousStateValue).toBe("coolValue"); - expect(state.nextStateValue).toBe("coolValue"); + expect(state.initialStateValue).toBe('coolValue'); + expect(state._value).toBe('coolValue'); + expect(state.previousStateValue).toBe('coolValue'); + expect(state.nextStateValue).toBe('coolValue'); expect(state.observer).toBeInstanceOf(StateObserver); expect(state.observer.deps.size).toBe(0); expect(state.observer._key).toBeUndefined(); @@ -104,33 +104,33 @@ describe("State Tests", () => { expect(state.watchers).toStrictEqual({}); }); - describe("State Function Tests", () => { + describe('State Function Tests', () => { let numberState: State; - let objectState: State<{ name: string; age: number }>; + let objectState: State<{name: string; age: number}>; let arrayState: State; let booleanState: State; beforeEach(() => { numberState = new State(dummyAgile, 10, { - key: "numberStateKey", + key: 'numberStateKey', }); - objectState = new State<{ name: string; age: number }>( + objectState = new State<{name: string; age: number}>( dummyAgile, - { name: "jeff", age: 10 }, + {name: 'jeff', age: 10}, { - key: "objectStateKey", - } + key: 'objectStateKey', + }, ); - arrayState = new State(dummyAgile, ["jeff"], { - key: "arrayStateKey", + arrayState = new State(dummyAgile, ['jeff'], { + key: 'arrayStateKey', }); booleanState = new State(dummyAgile, false, { - key: "booleanStateKey", + key: 'booleanStateKey', }); }); - describe("value set function tests", () => { - it("should call set function with passed value", () => { + describe('value set function tests', () => { + it('should call set function with passed value', () => { numberState.set = jest.fn(); numberState.value = 20; @@ -139,67 +139,67 @@ describe("State Tests", () => { }); }); - describe("value get function tests", () => { - it("should return current value", () => { + describe('value get function tests', () => { + it('should return current value', () => { expect(numberState.value).toBe(10); ComputedTracker.tracked = jest.fn(); }); - it("should return current value", () => { + it('should return current value', () => { const value = numberState.value; expect(value).toBe(10); expect(ComputedTracker.tracked).toHaveBeenCalledWith( - numberState.observer + numberState.observer, ); }); }); - describe("key set function tests", () => { - it("should call setKey with passed value", () => { + describe('key set function tests', () => { + it('should call setKey with passed value', () => { numberState.setKey = jest.fn(); - numberState.key = "newKey"; + numberState.key = 'newKey'; - expect(numberState.setKey).toHaveBeenCalledWith("newKey"); + expect(numberState.setKey).toHaveBeenCalledWith('newKey'); }); }); - describe("key get function tests", () => { - it("should return current State Key", () => { - expect(numberState.key).toBe("numberStateKey"); + describe('key get function tests', () => { + it('should return current State Key', () => { + expect(numberState.key).toBe('numberStateKey'); }); }); - describe("setKey function tests", () => { + describe('setKey function tests', () => { beforeEach(() => { numberState.persistent = new StatePersistent(numberState); numberState.persistent.setKey = jest.fn(); }); - it("should update existing Key in all instances", () => { - numberState.persistent._key = "numberStateKey"; + it('should update existing Key in all instances', () => { + numberState.persistent._key = 'numberStateKey'; - numberState.setKey("newKey"); + numberState.setKey('newKey'); - expect(numberState._key).toBe("newKey"); - expect(numberState.observer._key).toBe("newKey"); - expect(numberState.persistent.setKey).toHaveBeenCalledWith("newKey"); + expect(numberState._key).toBe('newKey'); + expect(numberState.observer._key).toBe('newKey'); + expect(numberState.persistent.setKey).toHaveBeenCalledWith('newKey'); }); it("should update existing Key in all instances except persistent if the StateKey and PersistKey aren't equal", () => { - numberState.persistent._key = "randomKey"; + numberState.persistent._key = 'randomKey'; - numberState.setKey("newKey"); + numberState.setKey('newKey'); - expect(numberState._key).toBe("newKey"); - expect(numberState.observer._key).toBe("newKey"); + expect(numberState._key).toBe('newKey'); + expect(numberState.observer._key).toBe('newKey'); expect(numberState.persistent.setKey).not.toHaveBeenCalled(); }); - it("should update existing Key in all instances except persistent if new StateKey is undefined", () => { - numberState.persistent._key = "numberStateKey"; + it('should update existing Key in all instances except persistent if new StateKey is undefined', () => { + numberState.persistent._key = 'numberStateKey'; numberState.setKey(undefined); @@ -209,12 +209,12 @@ describe("State Tests", () => { }); }); - describe("set function tests", () => { + describe('set function tests', () => { beforeEach(() => { - jest.spyOn(numberState.observer, "ingestValue"); + jest.spyOn(numberState.observer, 'ingestValue'); }); - it("should ingestValue if value has correct type (default config)", () => { + it('should ingestValue if value has correct type (default config)', () => { numberState.set(20); expect(console.warn).not.toHaveBeenCalled(); @@ -228,7 +228,7 @@ describe("State Tests", () => { }); }); - it("should ingestValue if value has correct type (specific config)", () => { + it('should ingestValue if value has correct type (specific config)', () => { numberState.set(20, { sideEffects: false, background: true, @@ -249,11 +249,11 @@ describe("State Tests", () => { it("shouldn't ingestValue if value hasn't correct type (default config)", () => { numberState.type(Number); - numberState.set("coolValue" as any); + numberState.set('coolValue' as any); expect(console.warn).not.toHaveBeenCalled(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Incorrect type (string) was provided." + 'Agile Error: Incorrect type (string) was provided.', ); expect(numberState.observer.ingestValue).not.toHaveBeenCalled(); }); @@ -261,54 +261,54 @@ describe("State Tests", () => { it("should ingestValue if value hasn't correct type (config.force = true)", () => { numberState.type(Number); - numberState.set("coolValue" as any, { force: true }); + numberState.set('coolValue' as any, {force: true}); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Incorrect type (string) was provided." + 'Agile Warn: Incorrect type (string) was provided.', ); expect(console.error).not.toHaveBeenCalled(); expect(numberState.observer.ingestValue).toHaveBeenCalledWith( - "coolValue", + 'coolValue', { sideEffects: true, background: false, force: true, storage: true, overwrite: false, - } + }, ); }); it("should ingestValue if value hasn't correct type but the type isn't explicit defined (default config)", () => { - numberState.set("coolValue" as any); + numberState.set('coolValue' as any); expect(console.warn).not.toHaveBeenCalled(); expect(console.error).not.toHaveBeenCalled(); expect(numberState.observer.ingestValue).toHaveBeenCalledWith( - "coolValue", + 'coolValue', { sideEffects: true, background: false, force: false, storage: true, overwrite: false, - } + }, ); }); }); - describe("ingest function tests", () => { + describe('ingest function tests', () => { beforeEach(() => { numberState.observer.ingest = jest.fn(); }); - it("should call ingest function in Observer (default config)", () => { + it('should call ingest function in Observer (default config)', () => { numberState.ingest(); expect(numberState.observer.ingest).toHaveBeenCalledWith({}); }); - it("should call ingest function in Observer (specific config)", () => { + it('should call ingest function in Observer (specific config)', () => { numberState.ingest({ force: true, background: true, @@ -321,40 +321,40 @@ describe("State Tests", () => { }); }); - describe("type function tests", () => { - it("should assign valid Type to State", () => { + describe('type function tests', () => { + it('should assign valid Type to State', () => { numberState.type(Number); - expect(numberState.valueType).toBe("number"); + expect(numberState.valueType).toBe('number'); }); it("shouldn't assign invalid Type to State", () => { - numberState.type("fuckingType"); + numberState.type('fuckingType'); expect(numberState.valueType).toBeUndefined(); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: 'fuckingType' is not supported! Supported types: String, Boolean, Array, Object, Number" + "Agile Warn: 'fuckingType' is not supported! Supported types: String, Boolean, Array, Object, Number", ); }); }); - describe("undo function tests", () => { + describe('undo function tests', () => { beforeEach(() => { numberState.set = jest.fn(); }); - it("should assign previousStateValue to currentValue (default config)", () => { + it('should assign previousStateValue to currentValue (default config)', () => { numberState.previousStateValue = 99; numberState.undo(); expect(numberState.set).toHaveBeenCalledWith( numberState.previousStateValue, - {} + {}, ); }); - it("should assign previousStateValue to currentValue (specific config)", () => { + it('should assign previousStateValue to currentValue (specific config)', () => { numberState.previousStateValue = 99; numberState.undo({ @@ -367,28 +367,28 @@ describe("State Tests", () => { { force: true, storage: false, - } + }, ); }); }); - describe("reset function tests", () => { + describe('reset function tests', () => { beforeEach(() => { numberState.set = jest.fn(); }); - it("should assign initialStateValue to currentValue (default config)", () => { + it('should assign initialStateValue to currentValue (default config)', () => { numberState.initialStateValue = 99; numberState.reset(); expect(numberState.set).toHaveBeenCalledWith( numberState.initialStateValue, - {} + {}, ); }); - it("should assign initialStateValue to currentValue (specific config)", () => { + it('should assign initialStateValue to currentValue (specific config)', () => { numberState.initialStateValue = 99; numberState.reset({ @@ -401,49 +401,49 @@ describe("State Tests", () => { { force: true, storage: false, - } + }, ); }); }); - describe("patch function tests", () => { + describe('patch function tests', () => { beforeEach(() => { objectState.ingest = jest.fn(); numberState.ingest = jest.fn(); - jest.spyOn(Utils, "flatMerge"); + jest.spyOn(Utils, 'flatMerge'); }); it("shouldn't patch and ingest passed object based value into a not object based State (default config)", () => { - numberState.patch({ changed: "object" }); + numberState.patch({changed: 'object'}); expect(console.error).toHaveBeenCalledWith( - "Agile Error: You can't use the patch method on a non object based States!" + "Agile Error: You can't use the patch method on a non object based States!", ); expect(objectState.ingest).not.toHaveBeenCalled(); }); it("shouldn't patch and ingest passed not object based value into object based State (default config)", () => { - objectState.patch("number" as any); + objectState.patch('number' as any); expect(console.error).toHaveBeenCalledWith( - "Agile Error: TargetWithChanges has to be an Object!" + 'Agile Error: TargetWithChanges has to be an Object!', ); expect(objectState.ingest).not.toHaveBeenCalled(); }); - it("should patch and ingest passed object based value into a object based State (default config)", () => { - objectState.patch({ name: "frank" }); + it('should patch and ingest passed object based value into a object based State (default config)', () => { + objectState.patch({name: 'frank'}); expect(Utils.flatMerge).toHaveBeenCalledWith( - { age: 10, name: "jeff" }, - { name: "frank" }, + {age: 10, name: 'jeff'}, + {name: 'frank'}, { addNewProperties: true, - } + }, ); expect(objectState.nextStateValue).toStrictEqual({ age: 10, - name: "frank", + name: 'frank', }); expect(objectState.ingest).toHaveBeenCalledWith({ background: false, @@ -454,28 +454,28 @@ describe("State Tests", () => { }); }); - it("should patch and ingest passed object based value into a object based State (specific config)", () => { + it('should patch and ingest passed object based value into a object based State (specific config)', () => { objectState.patch( - { name: "frank" }, + {name: 'frank'}, { addNewProperties: false, background: true, force: true, overwrite: true, sideEffects: false, - } + }, ); expect(Utils.flatMerge).toHaveBeenCalledWith( - { age: 10, name: "jeff" }, - { name: "frank" }, + {age: 10, name: 'jeff'}, + {name: 'frank'}, { addNewProperties: false, - } + }, ); expect(objectState.nextStateValue).toStrictEqual({ age: 10, - name: "frank", + name: 'frank', }); expect(objectState.ingest).toHaveBeenCalledWith({ background: true, @@ -487,115 +487,115 @@ describe("State Tests", () => { }); }); - describe("watch function tests", () => { + describe('watch function tests', () => { const dummyCallbackFunction1 = () => {}; const dummyCallbackFunction2 = () => {}; - it("should add passed watcherFunction to watchers at passed key", () => { - const response = numberState.watch("dummyKey", dummyCallbackFunction1); + it('should add passed watcherFunction to watchers at passed key', () => { + const response = numberState.watch('dummyKey', dummyCallbackFunction1); expect(response).toBe(numberState); - expect(numberState.watchers).toHaveProperty("dummyKey"); - expect(numberState.watchers["dummyKey"]).toBe(dummyCallbackFunction1); + expect(numberState.watchers).toHaveProperty('dummyKey'); + expect(numberState.watchers['dummyKey']).toBe(dummyCallbackFunction1); }); - it("should add passed watcherFunction to watchers at random key if no key passed and return that generated key", () => { - jest.spyOn(Utils, "generateId").mockReturnValue("randomKey"); + it('should add passed watcherFunction to watchers at random key if no key passed and return that generated key', () => { + jest.spyOn(Utils, 'generateId').mockReturnValue('randomKey'); const response = numberState.watch(dummyCallbackFunction1); - expect(response).toBe("randomKey"); - expect(numberState.watchers).toHaveProperty("randomKey"); - expect(numberState.watchers["randomKey"]).toBe(dummyCallbackFunction1); + expect(response).toBe('randomKey'); + expect(numberState.watchers).toHaveProperty('randomKey'); + expect(numberState.watchers['randomKey']).toBe(dummyCallbackFunction1); expect(Utils.generateId).toHaveBeenCalled(); }); it("shouldn't add passed invalid watcherFunction to watchers at passed key", () => { const response = numberState.watch( - "dummyKey", - "noFunction hehe" as any + 'dummyKey', + 'noFunction hehe' as any, ); expect(response).toBe(numberState); - expect(numberState.watchers).not.toHaveProperty("dummyKey"); + expect(numberState.watchers).not.toHaveProperty('dummyKey'); expect(console.error).toHaveBeenCalledWith( - "Agile Error: A Watcher Callback Function has to be typeof Function!" + 'Agile Error: A Watcher Callback Function has to be typeof Function!', ); }); it("shouldn't add passed watcherFunction to watchers at passed key if passed key is already occupied", () => { - numberState.watchers["dummyKey"] = dummyCallbackFunction2; + numberState.watchers['dummyKey'] = dummyCallbackFunction2; - const response = numberState.watch("dummyKey", dummyCallbackFunction1); + const response = numberState.watch('dummyKey', dummyCallbackFunction1); expect(response).toBe(numberState); - expect(numberState.watchers).toHaveProperty("dummyKey"); - expect(numberState.watchers["dummyKey"]).toBe(dummyCallbackFunction2); + expect(numberState.watchers).toHaveProperty('dummyKey'); + expect(numberState.watchers['dummyKey']).toBe(dummyCallbackFunction2); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Watcher Callback Function with the key/name 'dummyKey' already exists!" + "Agile Error: Watcher Callback Function with the key/name 'dummyKey' already exists!", ); }); }); - describe("removeWatcher function tests", () => { + describe('removeWatcher function tests', () => { beforeEach(() => { - numberState.watchers["dummyKey"] = () => {}; + numberState.watchers['dummyKey'] = () => {}; }); - it("should remove watcher at key from State", () => { - numberState.removeWatcher("dummyKey"); + it('should remove watcher at key from State', () => { + numberState.removeWatcher('dummyKey'); - expect(numberState.watchers).not.toHaveProperty("dummyKey"); + expect(numberState.watchers).not.toHaveProperty('dummyKey'); }); }); - describe("onInaugurated function tests", () => { + describe('onInaugurated function tests', () => { let dummyCallbackFunction; beforeEach(() => { - jest.spyOn(numberState, "watch"); + jest.spyOn(numberState, 'watch'); dummyCallbackFunction = jest.fn(); }); - it("should add watcher called InauguratedWatcherKey to State that destroys it self after it got called", () => { + it('should add watcher called InauguratedWatcherKey to State that destroys it self after it got called', () => { numberState.onInaugurated(dummyCallbackFunction); expect(numberState.watch).toHaveBeenCalledWith( - "InauguratedWatcherKey", - expect.any(Function) + 'InauguratedWatcherKey', + expect.any(Function), ); - expect(numberState.watchers).toHaveProperty("InauguratedWatcherKey"); + expect(numberState.watchers).toHaveProperty('InauguratedWatcherKey'); }); - it("should remove itself after getting called", () => { + it('should remove itself after getting called', () => { numberState.onInaugurated(dummyCallbackFunction); // Call Inaugurated Watcher - numberState.watchers["InauguratedWatcherKey"](10); + numberState.watchers['InauguratedWatcherKey'](10); expect(dummyCallbackFunction).toHaveBeenCalledWith(10); expect(numberState.watchers).not.toHaveProperty( - "InauguratedWatcherKey" + 'InauguratedWatcherKey', ); }); }); - describe("hasWatcher function tests", () => { + describe('hasWatcher function tests', () => { beforeEach(() => { - numberState.watchers["dummyKey"] = () => {}; + numberState.watchers['dummyKey'] = () => {}; }); - it("should return true if Watcher at given Key exists", () => { - expect(numberState.hasWatcher("dummyKey")).toBeTruthy(); + it('should return true if Watcher at given Key exists', () => { + expect(numberState.hasWatcher('dummyKey')).toBeTruthy(); }); it("should return false if Watcher at given Key doesn't exists", () => { - expect(numberState.hasWatcher("notExistingDummyKey")).toBeFalsy(); + expect(numberState.hasWatcher('notExistingDummyKey')).toBeFalsy(); }); }); - describe("persist function tests", () => { - it("should create persistent with StateKey (default config)", () => { + describe('persist function tests', () => { + it('should create persistent with StateKey (default config)', () => { numberState.persist(); expect(numberState.persistent).toBeInstanceOf(StatePersistent); @@ -606,64 +606,64 @@ describe("State Tests", () => { }); }); - it("should create persistent with StateKey (specific config)", () => { + it('should create persistent with StateKey (specific config)', () => { numberState.persist({ - storageKeys: ["test1", "test2"], + storageKeys: ['test1', 'test2'], instantiate: false, }); expect(numberState.persistent).toBeInstanceOf(StatePersistent); expect(StatePersistent).toHaveBeenCalledWith(numberState, { instantiate: false, - storageKeys: ["test1", "test2"], + storageKeys: ['test1', 'test2'], key: numberState._key, }); }); - it("should create persistent with passed Key (default config)", () => { - numberState.persist("passedKey"); + it('should create persistent with passed Key (default config)', () => { + numberState.persist('passedKey'); expect(numberState.persistent).toBeInstanceOf(StatePersistent); expect(StatePersistent).toHaveBeenCalledWith(numberState, { instantiate: true, storageKeys: [], - key: "passedKey", + key: 'passedKey', }); }); - it("should create persistent with passed Key (specific config)", () => { - numberState.persist("passedKey", { - storageKeys: ["test1", "test2"], + it('should create persistent with passed Key (specific config)', () => { + numberState.persist('passedKey', { + storageKeys: ['test1', 'test2'], instantiate: false, }); expect(numberState.persistent).toBeInstanceOf(StatePersistent); expect(StatePersistent).toHaveBeenCalledWith(numberState, { instantiate: false, - storageKeys: ["test1", "test2"], - key: "passedKey", + storageKeys: ['test1', 'test2'], + key: 'passedKey', }); }); - it("should overwrite existing persistent with a warning", () => { + it('should overwrite existing persistent with a warning', () => { numberState.persistent = new StatePersistent(numberState); - numberState.persist("newPersistentKey"); + numberState.persist('newPersistentKey'); expect(numberState.persistent).toBeInstanceOf(StatePersistent); // expect(numberState.persistent._key).toBe("newPersistentKey"); // Can not test because of Mocking Persistent expect(StatePersistent).toHaveBeenCalledWith(numberState, { instantiate: true, storageKeys: [], - key: "newPersistentKey", + key: 'newPersistentKey', }); expect(console.warn).toHaveBeenCalledWith( - `Agile Warn: By persisting the State '${numberState._key}' twice you overwrite the old Persistent Instance!` + `Agile Warn: By persisting the State '${numberState._key}' twice you overwrite the old Persistent Instance!`, ); }); }); - describe("onLoad function tests", () => { + describe('onLoad function tests', () => { const dummyCallbackFunction = jest.fn(); it("should set onLoad function if State is persisted and shouldn't call it initially (state.isPersisted = false)", () => { @@ -676,7 +676,7 @@ describe("State Tests", () => { expect(dummyCallbackFunction).not.toHaveBeenCalled(); }); - it("should set onLoad function if State is persisted and should call it initially (state.isPersisted = true)", () => { + it('should set onLoad function if State is persisted and should call it initially (state.isPersisted = true)', () => { numberState.persistent = new StatePersistent(numberState); numberState.isPersisted = true; @@ -691,14 +691,14 @@ describe("State Tests", () => { expect(dummyCallbackFunction).not.toHaveBeenCalled(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Please make sure you persist the State 'numberStateKey' before using the 'onLoad' function!" + "Agile Error: Please make sure you persist the State 'numberStateKey' before using the 'onLoad' function!", ); }); }); - describe("copy function tests", () => { - it("should return a reference free copy of the current State Value", () => { - jest.spyOn(Utils, "copy"); + describe('copy function tests', () => { + it('should return a reference free copy of the current State Value', () => { + jest.spyOn(Utils, 'copy'); const value = numberState.copy(); expect(value).toBe(10); @@ -706,12 +706,12 @@ describe("State Tests", () => { }); }); - describe("exists get function tests", () => { + describe('exists get function tests', () => { it("should return true if value isn't undefined and State is no placeholder", () => { expect(numberState.exists).toBeTruthy(); }); - it("should return false if value is undefined and State is no placeholder", () => { + it('should return false if value is undefined and State is no placeholder', () => { numberState._value = undefined; expect(numberState.exists).toBeFalsy(); @@ -724,19 +724,19 @@ describe("State Tests", () => { }); }); - describe("is function tests", () => { + describe('is function tests', () => { beforeEach(() => { - jest.spyOn(Utils, "equal"); + jest.spyOn(Utils, 'equal'); }); - it("should return true if passed value is equal to the current StateValue", () => { + it('should return true if passed value is equal to the current StateValue', () => { const response = numberState.is(10); expect(response).toBeTruthy(); expect(Utils.equal).toHaveBeenCalledWith(10, numberState._value); }); - it("should return false if passed value is not equal to the current StateValue", () => { + it('should return false if passed value is not equal to the current StateValue', () => { const response = numberState.is(20); expect(response).toBeFalsy(); @@ -744,19 +744,19 @@ describe("State Tests", () => { }); }); - describe("isNot function tests", () => { + describe('isNot function tests', () => { beforeEach(() => { - jest.spyOn(Utils, "notEqual"); + jest.spyOn(Utils, 'notEqual'); }); - it("should return false if passed value is equal to the current StateValue", () => { + it('should return false if passed value is equal to the current StateValue', () => { const response = numberState.isNot(10); expect(response).toBeFalsy(); expect(Utils.notEqual).toHaveBeenCalledWith(10, numberState._value); }); - it("should return true if passed value is not equal to the current StateValue", () => { + it('should return true if passed value is not equal to the current StateValue', () => { const response = numberState.isNot(20); expect(response).toBeTruthy(); @@ -764,13 +764,13 @@ describe("State Tests", () => { }); }); - describe("invert function tests", () => { + describe('invert function tests', () => { beforeEach(() => { numberState.set = jest.fn(); booleanState.set = jest.fn(); }); - it("should invert current value of a boolean based State", () => { + it('should invert current value of a boolean based State', () => { booleanState.invert(); expect(booleanState.set).toHaveBeenCalledWith(true); @@ -781,13 +781,13 @@ describe("State Tests", () => { expect(numberState.set).not.toHaveBeenCalled(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: You can only invert boolean based States!" + 'Agile Error: You can only invert boolean based States!', ); }); }); - describe("compute function tests", () => { - it("should assign passed function to computeMethod", () => { + describe('compute function tests', () => { + it('should assign passed function to computeMethod', () => { const computeMethod = () => 10; numberState.compute(computeMethod); @@ -800,59 +800,59 @@ describe("State Tests", () => { expect(numberState.computeMethod).toBeUndefined(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: A computeMethod has to be a function!" + 'Agile Error: A computeMethod has to be a function!', ); }); }); - describe("addSideEffect function tests", () => { + describe('addSideEffect function tests', () => { const sideEffectFunction = () => {}; - it("should add passed function to sideEffects at passed key", () => { - numberState.addSideEffect("dummyKey", sideEffectFunction); + it('should add passed function to sideEffects at passed key', () => { + numberState.addSideEffect('dummyKey', sideEffectFunction); - expect(numberState.sideEffects).toHaveProperty("dummyKey"); - expect(numberState.sideEffects["dummyKey"]).toBe(sideEffectFunction); + expect(numberState.sideEffects).toHaveProperty('dummyKey'); + expect(numberState.sideEffects['dummyKey']).toBe(sideEffectFunction); }); it("shouldn't add passed invalid function to sideEffects at passed key", () => { - numberState.addSideEffect("dummyKey", 10 as any); + numberState.addSideEffect('dummyKey', 10 as any); - expect(numberState.sideEffects).not.toHaveProperty("dummyKey"); + expect(numberState.sideEffects).not.toHaveProperty('dummyKey'); expect(console.error).toHaveBeenCalledWith( - "Agile Error: A sideEffect function has to be a function!" + 'Agile Error: A sideEffect function has to be a function!', ); }); }); - describe("removeSideEffect function tests", () => { + describe('removeSideEffect function tests', () => { beforeEach(() => { - numberState.sideEffects["dummyKey"] = jest.fn(); + numberState.sideEffects['dummyKey'] = jest.fn(); }); - it("should remove sideEffect at key from State", () => { - numberState.removeSideEffect("dummyKey"); + it('should remove sideEffect at key from State', () => { + numberState.removeSideEffect('dummyKey'); - expect(numberState.sideEffects).not.toHaveProperty("dummyKey"); + expect(numberState.sideEffects).not.toHaveProperty('dummyKey'); }); }); - describe("hasSideEffect function tests", () => { + describe('hasSideEffect function tests', () => { beforeEach(() => { - numberState.sideEffects["dummyKey"] = jest.fn(); + numberState.sideEffects['dummyKey'] = jest.fn(); }); - it("should return true if SideEffect at given Key exists", () => { - expect(numberState.hasSideEffect("dummyKey")).toBeTruthy(); + it('should return true if SideEffect at given Key exists', () => { + expect(numberState.hasSideEffect('dummyKey')).toBeTruthy(); }); it("should return false if SideEffect at given Key doesn't exists", () => { - expect(numberState.hasSideEffect("notExistingDummyKey")).toBeFalsy(); + expect(numberState.hasSideEffect('notExistingDummyKey')).toBeFalsy(); }); }); - describe("hasCorrectType function tests", () => { - it("should return true if State Type matches passed type", () => { + describe('hasCorrectType function tests', () => { + it('should return true if State Type matches passed type', () => { numberState.type(Number); expect(numberState.hasCorrectType(10)).toBeTruthy(); @@ -861,21 +861,21 @@ describe("State Tests", () => { it("should return false if State Type doesn't matches passed type", () => { numberState.type(Number); - expect(numberState.hasCorrectType("stringValue")).toBeFalsy(); + expect(numberState.hasCorrectType('stringValue')).toBeFalsy(); }); - it("should return true if State has no defined Type", () => { - expect(numberState.hasCorrectType("stringValue")).toBeTruthy(); + it('should return true if State has no defined Type', () => { + expect(numberState.hasCorrectType('stringValue')).toBeTruthy(); }); }); - describe("getPublicValue function tests", () => { - it("should return value of State", () => { + describe('getPublicValue function tests', () => { + it('should return value of State', () => { expect(numberState.getPublicValue()).toBe(10); }); - it("should return output of State", () => { - numberState["output"] = 99; + it('should return output of State', () => { + numberState['output'] = 99; expect(numberState.getPublicValue()).toBe(99); }); diff --git a/packages/core/tests/unit/storages/persistent.test.ts b/packages/core/tests/unit/storages/persistent.test.ts index 1937aba3..29ccb681 100644 --- a/packages/core/tests/unit/storages/persistent.test.ts +++ b/packages/core/tests/unit/storages/persistent.test.ts @@ -1,21 +1,21 @@ -import { Agile, Persistent, Storage } from "../../../src"; +import {Agile, Persistent, Storage} from '../../../src'; -describe("Persistent Tests", () => { +describe('Persistent Tests', () => { let dummyAgile: Agile; beforeEach(() => { jest.clearAllMocks(); - dummyAgile = new Agile({ localStorage: false }); + dummyAgile = new Agile({localStorage: false}); - jest.spyOn(Persistent.prototype, "instantiatePersistent"); + jest.spyOn(Persistent.prototype, 'instantiatePersistent'); console.error = jest.fn(); }); - it("should create Persistent (default config)", () => { + it('should create Persistent (default config)', () => { // Overwrite instantiatePersistent once to not call it jest - .spyOn(Persistent.prototype, "instantiatePersistent") + .spyOn(Persistent.prototype, 'instantiatePersistent') .mockReturnValueOnce(undefined); const persistent = new Persistent(dummyAgile); @@ -26,7 +26,7 @@ describe("Persistent Tests", () => { key: undefined, }); expect( - dummyAgile.storages.persistentInstances.has(persistent) + dummyAgile.storages.persistentInstances.has(persistent), ).toBeTruthy(); expect(persistent._key).toBe(Persistent.placeHolderKey); @@ -37,24 +37,24 @@ describe("Persistent Tests", () => { expect(persistent.defaultStorageKey).toBeUndefined(); }); - it("should create Persistent (specific config)", () => { + it('should create Persistent (specific config)', () => { // Overwrite instantiatePersistent once to not call it jest - .spyOn(Persistent.prototype, "instantiatePersistent") + .spyOn(Persistent.prototype, 'instantiatePersistent') .mockReturnValueOnce(undefined); const persistent = new Persistent(dummyAgile, { - storageKeys: ["test1", "test2"], - key: "persistentKey", + storageKeys: ['test1', 'test2'], + key: 'persistentKey', }); expect(persistent).toBeInstanceOf(Persistent); expect(persistent.instantiatePersistent).toHaveBeenCalledWith({ - storageKeys: ["test1", "test2"], - key: "persistentKey", + storageKeys: ['test1', 'test2'], + key: 'persistentKey', }); expect( - dummyAgile.storages.persistentInstances.has(persistent) + dummyAgile.storages.persistentInstances.has(persistent), ).toBeTruthy(); expect(persistent._key).toBe(Persistent.placeHolderKey); @@ -65,18 +65,18 @@ describe("Persistent Tests", () => { expect(persistent.defaultStorageKey).toBeUndefined(); }); - it("should create Persistent (config.instantiate = false)", () => { + it('should create Persistent (config.instantiate = false)', () => { // Overwrite instantiatePersistent once to not call it jest - .spyOn(Persistent.prototype, "instantiatePersistent") + .spyOn(Persistent.prototype, 'instantiatePersistent') .mockReturnValueOnce(undefined); - const persistent = new Persistent(dummyAgile, { instantiate: false }); + const persistent = new Persistent(dummyAgile, {instantiate: false}); expect(persistent).toBeInstanceOf(Persistent); expect(persistent.instantiatePersistent).not.toHaveBeenCalled(); expect( - dummyAgile.storages.persistentInstances.has(persistent) + dummyAgile.storages.persistentInstances.has(persistent), ).toBeTruthy(); expect(persistent._key).toBe(Persistent.placeHolderKey); @@ -87,54 +87,54 @@ describe("Persistent Tests", () => { expect(persistent.defaultStorageKey).toBeUndefined(); }); - describe("Persistent Function Tests", () => { + describe('Persistent Function Tests', () => { let persistent: Persistent; beforeEach(() => { persistent = new Persistent(dummyAgile); }); - describe("key set function tests", () => { - it("should call setKey with passed value", () => { + describe('key set function tests', () => { + it('should call setKey with passed value', () => { persistent.setKey = jest.fn(); - persistent.key = "dummyKey"; + persistent.key = 'dummyKey'; - expect(persistent.setKey).toHaveBeenCalledWith("dummyKey"); + expect(persistent.setKey).toHaveBeenCalledWith('dummyKey'); }); }); - describe("ket get function tests", () => { - it("should get key property of Persistent", () => { - persistent._key = "dummyKey"; + describe('ket get function tests', () => { + it('should get key property of Persistent', () => { + persistent._key = 'dummyKey'; - expect(persistent.key).toBe("dummyKey"); + expect(persistent.key).toBe('dummyKey'); }); }); - describe("instantiatePersistent function tests", () => { - it("should call assign key to formatKey and call assignStorageKeys, validatePersistent", () => { - jest.spyOn(persistent, "formatKey"); - jest.spyOn(persistent, "assignStorageKeys"); - jest.spyOn(persistent, "validatePersistent"); + describe('instantiatePersistent function tests', () => { + it('should call assign key to formatKey and call assignStorageKeys, validatePersistent', () => { + jest.spyOn(persistent, 'formatKey'); + jest.spyOn(persistent, 'assignStorageKeys'); + jest.spyOn(persistent, 'validatePersistent'); persistent.instantiatePersistent({ - key: "persistentKey", - storageKeys: ["myName", "is", "jeff"], + key: 'persistentKey', + storageKeys: ['myName', 'is', 'jeff'], }); - expect(persistent._key).toBe("persistentKey"); - expect(persistent.formatKey).toHaveBeenCalledWith("persistentKey"); + expect(persistent._key).toBe('persistentKey'); + expect(persistent.formatKey).toHaveBeenCalledWith('persistentKey'); expect(persistent.assignStorageKeys).toHaveBeenCalledWith([ - "myName", - "is", - "jeff", + 'myName', + 'is', + 'jeff', ]); expect(persistent.validatePersistent).toHaveBeenCalled(); }); }); - describe("validatePersistent function tests", () => { + describe('validatePersistent function tests', () => { beforeEach(() => { persistent.key = Persistent.placeHolderKey; persistent.defaultStorageKey = undefined; @@ -142,19 +142,19 @@ describe("Persistent Tests", () => { persistent.ready = undefined; }); - it("should return false and print error if no set key and no set StorageKeys", () => { + it('should return false and print error if no set key and no set StorageKeys', () => { const isValid = persistent.validatePersistent(); expect(isValid).toBeFalsy(); expect(persistent.ready).toBeFalsy(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: No valid persist Key found! Please provide a Key or assign one to the parent instance." + 'Agile Error: No valid persist Key found! Please provide a Key or assign one to the parent instance.', ); }); - it("should return false and print error if set key and no set StorageKeys", () => { - persistent._key = "persistentKey"; + it('should return false and print error if set key and no set StorageKeys', () => { + persistent._key = 'persistentKey'; const isValid = persistent.validatePersistent(); @@ -162,13 +162,13 @@ describe("Persistent Tests", () => { expect(persistent.ready).toBeFalsy(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: No persist Storage Key found! Please provide at least one Storage Key." + 'Agile Error: No persist Storage Key found! Please provide at least one Storage Key.', ); }); - it("should return false if no set key and set StorageKeys", () => { - persistent.defaultStorageKey = "test"; - persistent.storageKeys = ["test"]; + it('should return false if no set key and set StorageKeys', () => { + persistent.defaultStorageKey = 'test'; + persistent.storageKeys = ['test']; const isValid = persistent.validatePersistent(); @@ -176,14 +176,14 @@ describe("Persistent Tests", () => { expect(persistent.ready).toBeFalsy(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: No valid persist Key found! Please provide a Key or assign one to the parent instance." + 'Agile Error: No valid persist Key found! Please provide a Key or assign one to the parent instance.', ); }); - it("should return true if set key and set StorageKeys", () => { - persistent._key = "persistentKey"; - persistent.defaultStorageKey = "test"; - persistent.storageKeys = ["test"]; + it('should return true if set key and set StorageKeys', () => { + persistent._key = 'persistentKey'; + persistent.defaultStorageKey = 'test'; + persistent.storageKeys = ['test']; const isValid = persistent.validatePersistent(); @@ -192,39 +192,39 @@ describe("Persistent Tests", () => { }); }); - describe("assignStorageKeys function tests", () => { - it("should assign passed StorageKeys and set first one as default StorageKey", () => { - persistent.assignStorageKeys(["test1", "test2", "test3"]); + describe('assignStorageKeys function tests', () => { + it('should assign passed StorageKeys and set first one as default StorageKey', () => { + persistent.assignStorageKeys(['test1', 'test2', 'test3']); expect(persistent.storageKeys).toStrictEqual([ - "test1", - "test2", - "test3", + 'test1', + 'test2', + 'test3', ]); - expect(persistent.defaultStorageKey).toBe("test1"); + expect(persistent.defaultStorageKey).toBe('test1'); }); - it("should try to get default StorageKey from Agile if no StorageKeys passed", () => { + it('should try to get default StorageKey from Agile if no StorageKeys passed', () => { dummyAgile.storages.register( new Storage({ - key: "storage1", + key: 'storage1', methods: { get: (key) => {}, set: (key, value) => {}, remove: (key) => {}, }, }), - { default: true } + {default: true}, ); persistent.assignStorageKeys(); - expect(persistent.storageKeys).toStrictEqual(["storage1"]); - expect(persistent.defaultStorageKey).toBe("storage1"); + expect(persistent.storageKeys).toStrictEqual(['storage1']); + expect(persistent.defaultStorageKey).toBe('storage1'); }); }); - describe("initialLoading function tests", () => { + describe('initialLoading function tests', () => { beforeEach(() => { persistent.onLoad = jest.fn(); persistent.loadPersistedValue = jest.fn(); @@ -252,38 +252,38 @@ describe("Persistent Tests", () => { }); }); - describe("loadPersistedValue function tests", () => { - it("should print error", () => { + describe('loadPersistedValue function tests', () => { + it('should print error', () => { persistent.loadPersistedValue(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: 'loadPersistedValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!" + "Agile Error: 'loadPersistedValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!", ); }); }); - describe("persistValue function tests", () => { - it("should print error", () => { + describe('persistValue function tests', () => { + it('should print error', () => { persistent.persistValue(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: 'persistValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!" + "Agile Error: 'persistValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!", ); }); }); - describe("removePersistedValue function tests", () => { - it("should print error", () => { + describe('removePersistedValue function tests', () => { + it('should print error', () => { persistent.removePersistedValue(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: 'removePersistedValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!" + "Agile Error: 'removePersistedValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!", ); }); - describe("formatKey function tests", () => { - it("should return passed key", () => { - expect(persistent.formatKey("test")).toBe("test"); + describe('formatKey function tests', () => { + it('should return passed key', () => { + expect(persistent.formatKey('test')).toBe('test'); }); }); }); diff --git a/packages/core/tests/unit/storages/storage.test.ts b/packages/core/tests/unit/storages/storage.test.ts index e2cf17cb..ad4f5dc6 100644 --- a/packages/core/tests/unit/storages/storage.test.ts +++ b/packages/core/tests/unit/storages/storage.test.ts @@ -1,6 +1,6 @@ -import { Storage } from "../../../src"; +import {Storage} from '../../../src'; -describe("Storage Tests", () => { +describe('Storage Tests', () => { let dummyStorageMethods; beforeEach(() => { @@ -13,115 +13,115 @@ describe("Storage Tests", () => { }; // https://codewithhugo.com/jest-stub-mock-spy-set-clear/ - jest.spyOn(Storage.prototype, "validate"); + jest.spyOn(Storage.prototype, 'validate'); console.warn = jest.fn(); console.error = jest.fn(); }); - it("should create not async Storage with normal Storage Methods (default config)", () => { - jest.spyOn(Storage.prototype, "validate").mockReturnValueOnce(true); + it('should create not async Storage with normal Storage Methods (default config)', () => { + jest.spyOn(Storage.prototype, 'validate').mockReturnValueOnce(true); const storage = new Storage({ - key: "customStorage", + key: 'customStorage', methods: dummyStorageMethods, }); - expect(storage.key).toBe("customStorage"); + expect(storage.key).toBe('customStorage'); expect(storage.validate).toHaveBeenCalled(); expect(storage.ready).toBe(true); expect(storage.config).toStrictEqual({ async: false, - prefix: "agile", + prefix: 'agile', }); expect(storage.methods).toStrictEqual(dummyStorageMethods); }); - it("should create not async Storage with normal Storage Methods (specific config)", () => { - jest.spyOn(Storage.prototype, "validate").mockReturnValueOnce(true); + it('should create not async Storage with normal Storage Methods (specific config)', () => { + jest.spyOn(Storage.prototype, 'validate').mockReturnValueOnce(true); const storage = new Storage({ - key: "customStorage", + key: 'customStorage', methods: dummyStorageMethods, - prefix: "testPrefix", + prefix: 'testPrefix', }); - expect(storage.key).toBe("customStorage"); + expect(storage.key).toBe('customStorage'); expect(storage.validate).toHaveBeenCalled(); expect(storage.ready).toBe(true); expect(storage.config).toStrictEqual({ async: false, - prefix: "testPrefix", + prefix: 'testPrefix', }); expect(storage.methods).toStrictEqual(dummyStorageMethods); }); - it("should create async Storage with normal Storage Methods (config.async = true)", () => { - jest.spyOn(Storage.prototype, "validate").mockReturnValueOnce(true); + it('should create async Storage with normal Storage Methods (config.async = true)', () => { + jest.spyOn(Storage.prototype, 'validate').mockReturnValueOnce(true); const storage = new Storage({ - key: "customStorage", + key: 'customStorage', methods: dummyStorageMethods, async: true, }); - expect(storage.key).toBe("customStorage"); + expect(storage.key).toBe('customStorage'); expect(storage.validate).toHaveBeenCalled(); expect(storage.ready).toBe(true); expect(storage.config).toStrictEqual({ async: true, - prefix: "agile", + prefix: 'agile', }); expect(storage.methods).toStrictEqual(dummyStorageMethods); }); - it("should create async Storage with async Storage Methods (default config)", () => { - jest.spyOn(Storage.prototype, "validate").mockReturnValueOnce(true); + it('should create async Storage with async Storage Methods (default config)', () => { + jest.spyOn(Storage.prototype, 'validate').mockReturnValueOnce(true); dummyStorageMethods.get = async () => jest.fn(); const storage = new Storage({ - key: "customStorage", + key: 'customStorage', methods: dummyStorageMethods, }); - expect(storage.key).toBe("customStorage"); + expect(storage.key).toBe('customStorage'); expect(storage.validate).toHaveBeenCalled(); expect(storage.ready).toBe(true); expect(storage.config).toStrictEqual({ async: true, - prefix: "agile", + prefix: 'agile', }); expect(storage.methods).toStrictEqual(dummyStorageMethods); }); - it("should create invalid Storage with normal Storage Methods if validate returns false (default config)", () => { - jest.spyOn(Storage.prototype, "validate").mockReturnValueOnce(false); + it('should create invalid Storage with normal Storage Methods if validate returns false (default config)', () => { + jest.spyOn(Storage.prototype, 'validate').mockReturnValueOnce(false); const storage = new Storage({ - key: "customStorage", + key: 'customStorage', methods: dummyStorageMethods, }); - expect(storage.key).toBe("customStorage"); + expect(storage.key).toBe('customStorage'); expect(storage.validate).toHaveBeenCalled(); expect(storage.ready).toBe(false); expect(storage.config).toStrictEqual({ async: false, - prefix: "agile", + prefix: 'agile', }); expect(storage.methods).toStrictEqual(dummyStorageMethods); }); - describe("Storage Function Tests", () => { + describe('Storage Function Tests', () => { let storage: Storage; beforeEach(() => { storage = new Storage({ - key: "customStorage", + key: 'customStorage', methods: dummyStorageMethods, }); }); - describe("validate function tests", () => { - it("should return true if all methods are valid", () => { + describe('validate function tests', () => { + it('should return true if all methods are valid', () => { const response = storage.validate(); expect(response).toBeTruthy(); @@ -135,7 +135,7 @@ describe("Storage Tests", () => { expect(response).toBeFalsy(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Your GET StorageMethod isn't valid!" + "Agile Error: Your GET StorageMethod isn't valid!", ); }); @@ -146,7 +146,7 @@ describe("Storage Tests", () => { expect(response).toBeFalsy(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Your SET StorageMethod isn't valid!" + "Agile Error: Your SET StorageMethod isn't valid!", ); }); @@ -157,103 +157,103 @@ describe("Storage Tests", () => { expect(response).toBeFalsy(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Your REMOVE StorageMethod isn't valid!" + "Agile Error: Your REMOVE StorageMethod isn't valid!", ); }); }); - describe("normalGet function tests", () => { - it("should call get method in storageMethods if Storage is ready", () => { + describe('normalGet function tests', () => { + it('should call get method in storageMethods if Storage is ready', () => { storage.ready = true; - storage.methods.get = jest.fn(() => "dummyResponse"); + storage.methods.get = jest.fn(() => 'dummyResponse'); - const response = storage.normalGet("myTestKey"); + const response = storage.normalGet('myTestKey'); - expect(response).toBe("dummyResponse"); + expect(response).toBe('dummyResponse'); expect(storage.methods.get).toHaveBeenCalledWith( - storage.getStorageKey("myTestKey") + storage.getStorageKey('myTestKey'), ); }); - it("should call get method in storageMethods and resolve json if Storage is ready", () => { + it('should call get method in storageMethods and resolve json if Storage is ready', () => { storage.ready = true; storage.methods.get = jest.fn(() => [ { - dummy: "json", + dummy: 'json', }, ]); - const response = storage.normalGet("myTestKey"); + const response = storage.normalGet('myTestKey'); - expect(response).toStrictEqual([{ dummy: "json" }]); + expect(response).toStrictEqual([{dummy: 'json'}]); expect(storage.methods.get).toHaveBeenCalledWith( - storage.getStorageKey("myTestKey") + storage.getStorageKey('myTestKey'), ); }); it("shouldn't call get method in storageMethods if Storage isn't ready", () => { storage.ready = false; - const response = storage.normalGet("myTestKey"); + const response = storage.normalGet('myTestKey'); expect(response).toBeUndefined(); expect(storage.methods.get).not.toHaveBeenCalled(); }); - it("should call get method in storageMethods and print warning if get method is async", async () => { + it('should call get method in storageMethods and print warning if get method is async', async () => { storage.ready = true; storage.methods.get = async () => { await new Promise((resolve) => setTimeout(resolve, 100)); - return "dummyResponse"; + return 'dummyResponse'; }; - const response = storage.normalGet("myTestKey"); + const response = storage.normalGet('myTestKey'); expect(response).toBeInstanceOf(Promise); // Couldn't figure out how to create an async mock function // expect(storage.methods.get).toHaveBeenCalledWith( // storage.getStorageKey("myTestKey") // ); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Be aware that 'normalGet' returns a Promise with a stringified Value if using it in an async Storage!" + "Agile Warn: Be aware that 'normalGet' returns a Promise with a stringified Value if using it in an async Storage!", ); return response.then((value) => { - expect(value).toBe("dummyResponse"); + expect(value).toBe('dummyResponse'); }); }); }); - describe("get function tests", () => { - it("should call and await get method in storageMethods if Storage is ready", async () => { + describe('get function tests', () => { + it('should call and await get method in storageMethods if Storage is ready', async () => { storage.ready = true; storage.methods.get = async () => { await new Promise((resolve) => setTimeout(resolve, 100)); - return "dummyResponse"; + return 'dummyResponse'; }; - const response = await storage.get("myTestKey"); + const response = await storage.get('myTestKey'); - expect(response).toBe("dummyResponse"); + expect(response).toBe('dummyResponse'); // Couldn't figure out how to create an async mock function // expect(storage.methods.get).toHaveBeenCalledWith( // storage.getStorageKey("myTestKey") // ); }); - it("should call and await get method in storageMethods and resolve json if Storage is ready", async () => { + it('should call and await get method in storageMethods and resolve json if Storage is ready', async () => { storage.ready = true; storage.methods.get = async () => { await new Promise((resolve) => setTimeout(resolve, 100)); return [ { - dummy: "json", + dummy: 'json', }, ]; }; - const response = await storage.get("myTestKey"); + const response = await storage.get('myTestKey'); - expect(response).toStrictEqual([{ dummy: "json" }]); + expect(response).toStrictEqual([{dummy: 'json'}]); // Couldn't figure out how to create an async mock function // expect(storage.methods.get).toHaveBeenCalledWith( // storage.getStorageKey("myTestKey") @@ -263,7 +263,7 @@ describe("Storage Tests", () => { it("shouldn't call get method in storageMethods if Storage isn't ready", async () => { storage.ready = false; - const response = await storage.get("myTestKey"); + const response = await storage.get('myTestKey'); expect(response).toBeUndefined(); expect(storage.methods.get).not.toHaveBeenCalled(); @@ -271,67 +271,67 @@ describe("Storage Tests", () => { it("should call normalGet if get method isn't async", async () => { storage.ready = true; - storage.normalGet = jest.fn(() => "dummyResponse" as any); + storage.normalGet = jest.fn(() => 'dummyResponse' as any); - const response = await storage.get("myTestKey"); + const response = await storage.get('myTestKey'); - expect(response).toBe("dummyResponse"); - expect(storage.normalGet).toHaveBeenCalledWith("myTestKey"); + expect(response).toBe('dummyResponse'); + expect(storage.normalGet).toHaveBeenCalledWith('myTestKey'); }); }); - describe("set function tests", () => { - it("should call set method in storageMethods if Storage is ready", () => { + describe('set function tests', () => { + it('should call set method in storageMethods if Storage is ready', () => { storage.ready = true; - storage.set("myTestKey", "hello there"); + storage.set('myTestKey', 'hello there'); expect(storage.methods.set).toHaveBeenCalledWith( - storage.getStorageKey("myTestKey"), - JSON.stringify("hello there") + storage.getStorageKey('myTestKey'), + JSON.stringify('hello there'), ); }); it("shouldn't call set method in storageMethods if Storage isn't ready", () => { storage.ready = false; - storage.set("myTestKey", "hello there"); + storage.set('myTestKey', 'hello there'); expect(storage.methods.set).not.toHaveBeenCalled(); }); }); - describe("remove function tests", () => { - it("should call remove method in storageMethods if Storage is ready", () => { + describe('remove function tests', () => { + it('should call remove method in storageMethods if Storage is ready', () => { storage.ready = true; - storage.remove("myTestKey"); + storage.remove('myTestKey'); expect(storage.methods.remove).toHaveBeenCalledWith( - storage.getStorageKey("myTestKey") + storage.getStorageKey('myTestKey'), ); }); it("shouldn't call remove method in storageMethods if Storage isn't ready", () => { storage.ready = false; - storage.remove("myTestKey"); + storage.remove('myTestKey'); expect(storage.methods.remove).not.toHaveBeenCalled(); }); }); - describe("getStorageKey function tests", () => { - it("should add prefix to passed key if prefix is set", () => { - storage.config.prefix = "test"; + describe('getStorageKey function tests', () => { + it('should add prefix to passed key if prefix is set', () => { + storage.config.prefix = 'test'; - expect(storage.getStorageKey("coolKey")).toBe("_test_coolKey"); + expect(storage.getStorageKey('coolKey')).toBe('_test_coolKey'); }); it("shouldn't add prefix to passed key if prefix isn't set", () => { storage.config.prefix = undefined; - expect(storage.getStorageKey("coolKey")).toBe("coolKey"); + expect(storage.getStorageKey('coolKey')).toBe('coolKey'); }); }); }); diff --git a/packages/core/tests/unit/storages/storages.test.ts b/packages/core/tests/unit/storages/storages.test.ts index 9644d496..1ba2759d 100644 --- a/packages/core/tests/unit/storages/storages.test.ts +++ b/packages/core/tests/unit/storages/storages.test.ts @@ -1,17 +1,17 @@ -import { Storages, Agile, Storage, Persistent } from "../../../src"; +import {Storages, Agile, Storage, Persistent} from '../../../src'; -describe("Storages Tests", () => { +describe('Storages Tests', () => { let dummyAgile; beforeEach(() => { - dummyAgile = new Agile({ localStorage: false }); + dummyAgile = new Agile({localStorage: false}); - jest.spyOn(Storages.prototype, "instantiateLocalStorage"); + jest.spyOn(Storages.prototype, 'instantiateLocalStorage'); console.error = jest.fn(); console.warn = jest.fn(); }); - it("should create Storages (default config)", () => { + it('should create Storages (default config)', () => { const storages = new Storages(dummyAgile); expect(storages.defaultStorage).toBeUndefined(); @@ -20,8 +20,8 @@ describe("Storages Tests", () => { expect(storages.instantiateLocalStorage).not.toHaveBeenCalled(); }); - it("should create Storages and should get a warning (config.localStorage = true)", () => { - const storages = new Storages(dummyAgile, { localStorage: true }); + it('should create Storages and should get a warning (config.localStorage = true)', () => { + const storages = new Storages(dummyAgile, {localStorage: true}); expect(storages.defaultStorage).toBeUndefined(); expect(storages.storages).toStrictEqual({}); @@ -29,7 +29,7 @@ describe("Storages Tests", () => { expect(storages.instantiateLocalStorage).toHaveBeenCalled(); }); - describe("Storages Function Tests", () => { + describe('Storages Function Tests', () => { let storages: Storages; let dummyStorage1: Storage; let dummyStorage2: Storage; @@ -46,20 +46,20 @@ describe("Storages Tests", () => { }; dummyStorage1 = new Storage({ - key: "storage1", + key: 'storage1', methods: dummyStorageMethods, }); dummyStorage2 = new Storage({ - key: "storage2", + key: 'storage2', methods: dummyStorageMethods, }); dummyStorage3 = new Storage({ - key: "storage3", + key: 'storage3', methods: dummyStorageMethods, }); }); - describe("instantiateLocalStorage function tests", () => { + describe('instantiateLocalStorage function tests', () => { beforeEach(() => { global.localStorage = { getItem: jest.fn(), @@ -70,8 +70,8 @@ describe("Storages Tests", () => { storages.register = jest.fn(() => true); }); - it("should register localStorage if localStorage is available", () => { - jest.spyOn(Storages, "localStorageAvailable").mockReturnValueOnce(true); + it('should register localStorage if localStorage is available', () => { + jest.spyOn(Storages, 'localStorageAvailable').mockReturnValueOnce(true); const response = storages.instantiateLocalStorage(); @@ -83,7 +83,7 @@ describe("Storages Tests", () => { it("shouldn't register localStorage if localStorage isn't available", () => { jest - .spyOn(Storages, "localStorageAvailable") + .spyOn(Storages, 'localStorageAvailable') .mockReturnValueOnce(false); const response = storages.instantiateLocalStorage(); @@ -93,25 +93,25 @@ describe("Storages Tests", () => { }); }); - describe("register function tests", () => { - it("should register Storage and assign it as default Storage (default config)", () => { + describe('register function tests', () => { + it('should register Storage and assign it as default Storage (default config)', () => { const response = storages.register(dummyStorage1); - expect(storages.storages).toHaveProperty("storage1"); - expect(storages.storages["storage1"]).toBe(dummyStorage1); + expect(storages.storages).toHaveProperty('storage1'); + expect(storages.storages['storage1']).toBe(dummyStorage1); expect(storages.defaultStorage).toBe(dummyStorage1); expect(response).toBeTruthy(); }); - it("should register Storage and assign it as default Storage with a warning (config.default = false)", () => { - const response = storages.register(dummyStorage1, { default: false }); + it('should register Storage and assign it as default Storage with a warning (config.default = false)', () => { + const response = storages.register(dummyStorage1, {default: false}); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Be aware that Agile has to assign the first added Storage as default Storage!" + 'Agile Warn: Be aware that Agile has to assign the first added Storage as default Storage!', ); - expect(storages.storages).toHaveProperty("storage1"); - expect(storages.storages["storage1"]).toBe(dummyStorage1); + expect(storages.storages).toHaveProperty('storage1'); + expect(storages.storages['storage1']).toBe(dummyStorage1); expect(storages.defaultStorage).toBe(dummyStorage1); expect(response).toBeTruthy(); }); @@ -121,26 +121,26 @@ describe("Storages Tests", () => { const response = storages.register(dummyStorage2); - expect(storages.storages).toHaveProperty("storage2"); - expect(storages.storages["storage2"]).toBe(dummyStorage2); + expect(storages.storages).toHaveProperty('storage2'); + expect(storages.storages['storage2']).toBe(dummyStorage2); expect(storages.defaultStorage).toBe(dummyStorage1); expect(response).toBeTruthy(); }); - it("should register second Storage and should assign it as default Storage (config.default = true)", () => { + it('should register second Storage and should assign it as default Storage (config.default = true)', () => { storages.register(dummyStorage1); - const response = storages.register(dummyStorage2, { default: true }); + const response = storages.register(dummyStorage2, {default: true}); - expect(storages.storages).toHaveProperty("storage2"); - expect(storages.storages["storage2"]).toBe(dummyStorage2); + expect(storages.storages).toHaveProperty('storage2'); + expect(storages.storages['storage2']).toBe(dummyStorage2); expect(storages.defaultStorage).toBe(dummyStorage2); expect(response).toBeTruthy(); }); it("shouldn't register Storage with the same key twice", () => { const dummyStorage = new Storage({ - key: "storage1", + key: 'storage1', methods: dummyStorageMethods, }); storages.register(dummyStorage); @@ -148,23 +148,23 @@ describe("Storages Tests", () => { const response = storages.register(dummyStorage1); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Storage with the key/name 'storage1' already exists" + "Agile Error: Storage with the key/name 'storage1' already exists", ); - expect(storages.storages).toHaveProperty("storage1"); - expect(storages.storages["storage1"]).toBe(dummyStorage); + expect(storages.storages).toHaveProperty('storage1'); + expect(storages.storages['storage1']).toBe(dummyStorage); expect(response).toBeFalsy(); }); - it("should call updateValue method on all persistent Instances that have the newly registered StorageKey", () => { + it('should call updateValue method on all persistent Instances that have the newly registered StorageKey', () => { const dummyPersistent1 = new Persistent(dummyAgile, { - storageKeys: ["storage1"], + storageKeys: ['storage1'], }); const dummyPersistent2 = new Persistent(dummyAgile, { - storageKeys: ["notExistingStorage"], + storageKeys: ['notExistingStorage'], }); - jest.spyOn(dummyPersistent1, "persistValue"); - jest.spyOn(dummyPersistent2, "persistValue"); + jest.spyOn(dummyPersistent1, 'persistValue'); + jest.spyOn(dummyPersistent2, 'persistValue'); const response = storages.register(dummyStorage1); @@ -173,19 +173,19 @@ describe("Storages Tests", () => { expect(response).toBeTruthy(); }); - it("should reassignStorageKeys, revalidate and initialLoad Persistents that have no defined defaultStorage", () => { + it('should reassignStorageKeys, revalidate and initialLoad Persistents that have no defined defaultStorage', () => { const dummyPersistent1 = new Persistent(dummyAgile); dummyPersistent1.defaultStorageKey = undefined; const dummyPersistent2 = new Persistent(dummyAgile); - dummyPersistent2.defaultStorageKey = "unknown"; - jest.spyOn(dummyPersistent1, "assignStorageKeys"); + dummyPersistent2.defaultStorageKey = 'unknown'; + jest.spyOn(dummyPersistent1, 'assignStorageKeys'); jest - .spyOn(dummyPersistent1, "validatePersistent") + .spyOn(dummyPersistent1, 'validatePersistent') .mockReturnValue(true); - jest.spyOn(dummyPersistent1, "initialLoading"); - jest.spyOn(dummyPersistent2, "assignStorageKeys"); - jest.spyOn(dummyPersistent2, "validatePersistent"); - jest.spyOn(dummyPersistent2, "initialLoading"); + jest.spyOn(dummyPersistent1, 'initialLoading'); + jest.spyOn(dummyPersistent2, 'assignStorageKeys'); + jest.spyOn(dummyPersistent2, 'validatePersistent'); + jest.spyOn(dummyPersistent2, 'initialLoading'); const response = storages.register(dummyStorage1); @@ -201,86 +201,86 @@ describe("Storages Tests", () => { }); }); - describe("getStorage function tests", () => { + describe('getStorage function tests', () => { beforeEach(() => { storages.register(dummyStorage1); }); - it("should get existing Storage", () => { - const response = storages.getStorage("storage1"); + it('should get existing Storage', () => { + const response = storages.getStorage('storage1'); expect(response).toBe(dummyStorage1); }); it("shouldn't get not existing Storage", () => { - const response = storages.getStorage("notExistingStorage"); + const response = storages.getStorage('notExistingStorage'); expect(response).toBeUndefined(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Storage with the key/name 'notExistingStorage' doesn't exist" + "Agile Error: Storage with the key/name 'notExistingStorage' doesn't exist", ); }); it("shouldn't get existing and not ready Storage", () => { dummyStorage1.ready = false; - const response = storages.getStorage("storage1"); + const response = storages.getStorage('storage1'); expect(response).toBeUndefined(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Storage with the key/name 'storage1' isn't ready" + "Agile Error: Storage with the key/name 'storage1' isn't ready", ); }); }); - describe("get function tests", () => { + describe('get function tests', () => { beforeEach(() => { storages.register(dummyStorage1); storages.register(dummyStorage2); - dummyStorage1.get = jest.fn(() => "dummyStorage1Response" as any); - dummyStorage2.get = jest.fn(() => "dummyStorage2Response" as any); + dummyStorage1.get = jest.fn(() => 'dummyStorage1Response' as any); + dummyStorage2.get = jest.fn(() => 'dummyStorage2Response' as any); }); - it("should call get method in default Storage", async () => { - const response = await storages.get("value1"); + it('should call get method in default Storage', async () => { + const response = await storages.get('value1'); - expect(response).toBe("dummyStorage1Response"); - expect(dummyStorage1.get).toHaveBeenCalledWith("value1"); + expect(response).toBe('dummyStorage1Response'); + expect(dummyStorage1.get).toHaveBeenCalledWith('value1'); expect(dummyStorage2.get).not.toHaveBeenCalled(); }); - it("should call get method in specific Storage", async () => { - const response = await storages.get("value1", "storage2"); + it('should call get method in specific Storage', async () => { + const response = await storages.get('value1', 'storage2'); - expect(response).toBe("dummyStorage2Response"); + expect(response).toBe('dummyStorage2Response'); expect(dummyStorage1.get).not.toHaveBeenCalled(); - expect(dummyStorage2.get).toHaveBeenCalledWith("value1"); + expect(dummyStorage2.get).toHaveBeenCalledWith('value1'); }); it("should call get method in default Storage if specific Storage doesn't exist", async () => { - const response = await storages.get("value1", "notExistingStorage"); + const response = await storages.get('value1', 'notExistingStorage'); - expect(response).toBe("dummyStorage1Response"); - expect(dummyStorage1.get).toHaveBeenCalledWith("value1"); + expect(response).toBe('dummyStorage1Response'); + expect(dummyStorage1.get).toHaveBeenCalledWith('value1'); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Storage with the key/name 'notExistingStorage' doesn't exist" + "Agile Error: Storage with the key/name 'notExistingStorage' doesn't exist", ); }); - it("should print error if no storage found", async () => { + it('should print error if no storage found', async () => { const storages2 = new Storages(dummyAgile); - const response = await storages2.get("value1"); + const response = await storages2.get('value1'); expect(response).toBeUndefined(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: No Storage found! Please provide at least one Storage." + 'Agile Error: No Storage found! Please provide at least one Storage.', ); }); }); - describe("set function tests", () => { + describe('set function tests', () => { beforeEach(() => { storages.register(dummyStorage1); storages.register(dummyStorage2); @@ -291,35 +291,35 @@ describe("Storages Tests", () => { dummyStorage3.set = jest.fn(); }); - it("should call set method in default Storage", () => { - storages.set("value1", "testValue"); + it('should call set method in default Storage', () => { + storages.set('value1', 'testValue'); - expect(dummyStorage1.set).toHaveBeenCalledWith("value1", "testValue"); + expect(dummyStorage1.set).toHaveBeenCalledWith('value1', 'testValue'); expect(dummyStorage2.set).not.toHaveBeenCalled(); expect(dummyStorage3.set).not.toHaveBeenCalled(); }); - it("should call set method in specific Storages", () => { - storages.set("value1", "testValue", ["storage2", "storage3"]); + it('should call set method in specific Storages', () => { + storages.set('value1', 'testValue', ['storage2', 'storage3']); expect(dummyStorage1.set).not.toHaveBeenCalled(); - expect(dummyStorage2.set).toHaveBeenCalledWith("value1", "testValue"); - expect(dummyStorage3.set).toHaveBeenCalledWith("value1", "testValue"); + expect(dummyStorage2.set).toHaveBeenCalledWith('value1', 'testValue'); + expect(dummyStorage3.set).toHaveBeenCalledWith('value1', 'testValue'); }); - it("should print error if no storage found", () => { + it('should print error if no storage found', () => { const storages2 = new Storages(dummyAgile); - const response = storages2.set("value1", "testValue"); + const response = storages2.set('value1', 'testValue'); expect(response).toBeUndefined(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: No Storage found! Please provide at least one Storage." + 'Agile Error: No Storage found! Please provide at least one Storage.', ); }); }); - describe("remove function tests", () => { + describe('remove function tests', () => { beforeEach(() => { storages.register(dummyStorage1); storages.register(dummyStorage2); @@ -330,48 +330,48 @@ describe("Storages Tests", () => { dummyStorage3.remove = jest.fn(); }); - it("should call remove method in default Storage", () => { - storages.remove("value1"); + it('should call remove method in default Storage', () => { + storages.remove('value1'); - expect(dummyStorage1.remove).toHaveBeenCalledWith("value1"); + expect(dummyStorage1.remove).toHaveBeenCalledWith('value1'); expect(dummyStorage2.remove).not.toHaveBeenCalled(); expect(dummyStorage3.remove).not.toHaveBeenCalled(); }); - it("should call remove method in specific Storages", () => { - storages.remove("value1", ["storage2", "storage3"]); + it('should call remove method in specific Storages', () => { + storages.remove('value1', ['storage2', 'storage3']); expect(dummyStorage1.remove).not.toHaveBeenCalled(); - expect(dummyStorage2.remove).toHaveBeenCalledWith("value1"); - expect(dummyStorage3.remove).toHaveBeenCalledWith("value1"); + expect(dummyStorage2.remove).toHaveBeenCalledWith('value1'); + expect(dummyStorage3.remove).toHaveBeenCalledWith('value1'); }); - it("should print error if no storage found", () => { + it('should print error if no storage found', () => { const storages2 = new Storages(dummyAgile); - const response = storages2.remove("value1"); + const response = storages2.remove('value1'); expect(response).toBeUndefined(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: No Storage found! Please provide at least one Storage." + 'Agile Error: No Storage found! Please provide at least one Storage.', ); }); }); - describe("hasStorage function tests", () => { - it("should return true if Storages has registered Storages", () => { + describe('hasStorage function tests', () => { + it('should return true if Storages has registered Storages', () => { storages.register(dummyStorage1); expect(storages.hasStorage()).toBeTruthy(); }); - it("should return false if Storages has no registered Storage", () => { + it('should return false if Storages has no registered Storage', () => { expect(storages.hasStorage()).toBeFalsy(); }); }); - describe("localStorageAvailable function tests", () => { - it("should return true if a instance of local Storage exists", () => { + describe('localStorageAvailable function tests', () => { + it('should return true if a instance of local Storage exists', () => { global.localStorage = { getItem: jest.fn(), removeItem: jest.fn(), @@ -381,7 +381,7 @@ describe("Storages Tests", () => { expect(Storages.localStorageAvailable()).toBeTruthy(); }); - it("should return false if no instance of localStorage exits", () => { + it('should return false if no instance of localStorage exits', () => { global.localStorage = undefined; expect(Storages.localStorageAvailable()).toBeFalsy(); diff --git a/packages/core/tests/unit/utils.test.ts b/packages/core/tests/unit/utils.test.ts index fdff28da..04afdf36 100644 --- a/packages/core/tests/unit/utils.test.ts +++ b/packages/core/tests/unit/utils.test.ts @@ -20,13 +20,13 @@ import { Event, Observer, Collection, -} from "../../src"; +} from '../../src'; -describe("Utils Tests", () => { +describe('Utils Tests', () => { let dummyAgile: Agile; beforeEach(() => { - dummyAgile = new Agile({ localStorage: false }); + dummyAgile = new Agile({localStorage: false}); // @ts-ignore | Reset globalThis globalThis = {}; @@ -34,8 +34,8 @@ describe("Utils Tests", () => { console.error = jest.fn(); }); - describe("copy function tests", () => { - it("should copy Array without any reference", () => { + describe('copy function tests', () => { + it('should copy Array without any reference', () => { const myArray = [1, 2, 3, 4, 5]; const myCopiedArray = copy(myArray); @@ -48,117 +48,115 @@ describe("Utils Tests", () => { expect(myArray).toStrictEqual([1, 2, 3, 4, 5]); }); - it("should copy Object without any reference", () => { - const myObject = { id: 1, name: "jeff" }; + it('should copy Object without any reference', () => { + const myObject = {id: 1, name: 'jeff'}; const myCopiedObject = copy(myObject); - expect(myCopiedObject).toStrictEqual({ id: 1, name: "jeff" }); - expect(myObject).toStrictEqual({ id: 1, name: "jeff" }); + expect(myCopiedObject).toStrictEqual({id: 1, name: 'jeff'}); + expect(myObject).toStrictEqual({id: 1, name: 'jeff'}); - myObject.name = "hans"; + myObject.name = 'hans'; - expect(myObject).toStrictEqual({ id: 1, name: "hans" }); - expect(myCopiedObject).toStrictEqual({ id: 1, name: "jeff" }); + expect(myObject).toStrictEqual({id: 1, name: 'hans'}); + expect(myCopiedObject).toStrictEqual({id: 1, name: 'jeff'}); }); - it("should copy deep Object without any reference", () => { + it('should copy deep Object without any reference', () => { const myObject = { id: 1, - name: "jeff", - location: { country: "Germany", state: "Bayern" }, + name: 'jeff', + location: {country: 'Germany', state: 'Bayern'}, }; const myCopiedObject = copy(myObject); expect(myCopiedObject).toStrictEqual({ id: 1, - name: "jeff", - location: { country: "Germany", state: "Bayern" }, + name: 'jeff', + location: {country: 'Germany', state: 'Bayern'}, }); expect(myObject).toStrictEqual({ id: 1, - name: "jeff", - location: { country: "Germany", state: "Bayern" }, + name: 'jeff', + location: {country: 'Germany', state: 'Bayern'}, }); - myObject.name = "hans"; - myObject.location.state = "Sachsen"; + myObject.name = 'hans'; + myObject.location.state = 'Sachsen'; expect(myObject).toStrictEqual({ id: 1, - name: "hans", - location: { country: "Germany", state: "Sachsen" }, + name: 'hans', + location: {country: 'Germany', state: 'Sachsen'}, }); expect(myCopiedObject).toStrictEqual({ id: 1, - name: "jeff", - location: { country: "Germany", state: "Bayern" }, + name: 'jeff', + location: {country: 'Germany', state: 'Bayern'}, }); }); - it("should copy default Types", () => { + it('should copy default Types', () => { const myNumber = 5; const myCopiedNumber = copy(myNumber); - const myString = "frank"; + const myString = 'frank'; const myCopiedString = copy(myString); expect(myCopiedNumber).toBe(5); expect(myNumber).toBe(5); - expect(myCopiedString).toBe("frank"); - expect(myString).toBe("frank"); + expect(myCopiedString).toBe('frank'); + expect(myString).toBe('frank'); }); }); - describe("isValidObject function tests", () => { + describe('isValidObject function tests', () => { // Can't be Tested in not Web-Environment // it("should return false if passing HTML Element", () => { // expect(isValidObject(HTMLElement)).toBe(false); // }); - it("should return false if passed instance is invalid Object", () => { + it('should return false if passed instance is invalid Object', () => { expect(isValidObject(null)).toBe(false); - expect(isValidObject("Hello")).toBe(false); + expect(isValidObject('Hello')).toBe(false); expect(isValidObject([1, 2])).toBe(false); expect(isValidObject(123)).toBe(false); }); - it("should return true if passed instance is valid Object", () => { - expect(isValidObject({ hello: "jeff" })).toBe(true); - expect(isValidObject({ hello: "jeff", deep: { hello: "franz" } })).toBe( - true - ); + it('should return true if passed instance is valid Object', () => { + expect(isValidObject({hello: 'jeff'})).toBe(true); + expect(isValidObject({hello: 'jeff', deep: {hello: 'franz'}})).toBe(true); }); }); - describe("includesArray function tests", () => { + describe('includesArray function tests', () => { it("should return false if Array1 doesn't include Array2", () => { expect(includesArray([1, 2], [5, 6])).toBe(false); }); - it("should return false if Array1 does only include parts of Array2", () => { + it('should return false if Array1 does only include parts of Array2', () => { expect(includesArray([1, 2], [2, 6])).toBe(false); }); - it("should return true if Array1 includes Array2", () => { + it('should return true if Array1 includes Array2', () => { expect(includesArray([1, 4, 2, 3], [1, 2])).toBe(true); }); - it("should return true if Array1 is equal to Array2", () => { + it('should return true if Array1 is equal to Array2', () => { expect(includesArray([1, 2], [1, 2])).toBe(true); }); }); - describe("normalizeArray function tests", () => { - it("should normalize Array (default config)", () => { - expect(normalizeArray([1, 2, undefined, 3, "hi"])).toStrictEqual([ + describe('normalizeArray function tests', () => { + it('should normalize Array (default config)', () => { + expect(normalizeArray([1, 2, undefined, 3, 'hi'])).toStrictEqual([ 1, 2, undefined, 3, - "hi", + 'hi', ]); }); - it("should normalize single Item (default config)", () => { + it('should normalize single Item (default config)', () => { expect(normalizeArray(1)).toStrictEqual([1]); }); @@ -166,128 +164,128 @@ describe("Utils Tests", () => { expect(normalizeArray(undefined)).toStrictEqual([]); }); - it("should normalize undefined (config.createUndefinedArray = true)", () => { + it('should normalize undefined (config.createUndefinedArray = true)', () => { expect( - normalizeArray(undefined, { createUndefinedArray: true }) + normalizeArray(undefined, {createUndefinedArray: true}), ).toStrictEqual([undefined]); }); }); - describe("getAgileInstance function tests", () => { + describe('getAgileInstance function tests', () => { beforeEach(() => { - globalThis["__agile__"] = dummyAgile; + globalThis['__agile__'] = dummyAgile; }); - it("should get agileInstance from State", () => { - const dummyState = new State(dummyAgile, "dummyValue"); + it('should get agileInstance from State', () => { + const dummyState = new State(dummyAgile, 'dummyValue'); expect(getAgileInstance(dummyState)).toBe(dummyAgile); }); - it("should get agileInstance from Event", () => { + it('should get agileInstance from Event', () => { const dummyEvent = new Event(dummyAgile); expect(getAgileInstance(dummyEvent)).toBe(dummyAgile); }); - it("should get agileInstance from Collection", () => { + it('should get agileInstance from Collection', () => { const dummyCollection = new Collection(dummyAgile); expect(getAgileInstance(dummyCollection)).toBe(dummyAgile); }); - it("should get agileInstance from Observer", () => { + it('should get agileInstance from Observer', () => { const dummyObserver = new Observer(dummyAgile); expect(getAgileInstance(dummyObserver)).toBe(dummyAgile); }); - it("should get agileInstance from globalThis if passed instance holds no agileInstance", () => { - expect(getAgileInstance("weiredInstance")).toBe(dummyAgile); + it('should get agileInstance from globalThis if passed instance holds no agileInstance', () => { + expect(getAgileInstance('weiredInstance')).toBe(dummyAgile); }); - it("should print error if something went wrong", () => { + it('should print error if something went wrong', () => { // @ts-ignore | Destroy globalThis globalThis = undefined; - const response = getAgileInstance("weiredInstance"); + const response = getAgileInstance('weiredInstance'); expect(response).toBeUndefined(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Failed to get Agile Instance from ", - "weiredInstance" + 'Agile Error: Failed to get Agile Instance from ', + 'weiredInstance', ); }); }); - describe("isFunction function tests", () => { - it("should return true if passed instance is valid Function", () => { + describe('isFunction function tests', () => { + it('should return true if passed instance is valid Function', () => { expect(isFunction(() => {})).toBe(true); }); - it("should return false if passed instance is invalid Function", () => { - expect(isFunction("hello")).toBe(false); + it('should return false if passed instance is invalid Function', () => { + expect(isFunction('hello')).toBe(false); expect(isFunction(1)).toBe(false); expect(isFunction([1, 2, 3])).toBe(false); - expect(isFunction({ hello: "jeff" })).toBe(false); + expect(isFunction({hello: 'jeff'})).toBe(false); }); }); - describe("isAsyncFunction function tests", () => { - it("should return true if passed instance is valid async Function", () => { + describe('isAsyncFunction function tests', () => { + it('should return true if passed instance is valid async Function', () => { expect(isAsyncFunction(async () => {})).toBe(true); expect(isAsyncFunction(async function () {})).toBe(true); }); - it("should return false if passed instance is invalid async Function", () => { - expect(isAsyncFunction("hello")).toBe(false); + it('should return false if passed instance is invalid async Function', () => { + expect(isAsyncFunction('hello')).toBe(false); expect(isAsyncFunction(1)).toBe(false); expect(isAsyncFunction([1, 2, 3])).toBe(false); - expect(isAsyncFunction({ hello: "jeff" })).toBe(false); + expect(isAsyncFunction({hello: 'jeff'})).toBe(false); expect(isAsyncFunction(() => {})).toBe(false); expect(isAsyncFunction(function () {})).toBe(false); }); }); // Note: isValidUrl Function doesn't work to 100% yet!! - describe("isValidUrl function tests", () => { - it("should return true if passed instance is valid url", () => { - expect(isValidUrl("https://www.google.com/")).toBe(true); - expect(isValidUrl("www.google.com")).toBe(true); - expect(isValidUrl("google.com")).toBe(true); + describe('isValidUrl function tests', () => { + it('should return true if passed instance is valid url', () => { + expect(isValidUrl('https://www.google.com/')).toBe(true); + expect(isValidUrl('www.google.com')).toBe(true); + expect(isValidUrl('google.com')).toBe(true); // expect(isValidUrl("https://en.wikipedia.org/wiki/Procter_&_Gamble")).toBe( // true // ); }); - it("should return false if passed instance is invalid url", () => { - expect(isValidUrl("hello")).toBe(false); - expect(isValidUrl("https://sdfasd")).toBe(false); - expect(isValidUrl("https://")).toBe(false); - expect(isValidUrl("")).toBe(false); + it('should return false if passed instance is invalid url', () => { + expect(isValidUrl('hello')).toBe(false); + expect(isValidUrl('https://sdfasd')).toBe(false); + expect(isValidUrl('https://')).toBe(false); + expect(isValidUrl('')).toBe(false); // expect(isValidUrl("www.google")).toBe(false); }); }); - describe("isJsonString function tests", () => { - it("should return true if passed instance is valid Json String", () => { + describe('isJsonString function tests', () => { + it('should return true if passed instance is valid Json String', () => { expect(isJsonString('{"name":"John", "age":31, "city":"New York"}')).toBe( - true + true, ); }); - it("should return false if passed instance is invalid Json String", () => { - expect(isJsonString("frank")).toBe(false); + it('should return false if passed instance is invalid Json String', () => { + expect(isJsonString('frank')).toBe(false); expect(isJsonString('{name":"John", "age":31, "city":"New York"}')).toBe( - false + false, ); expect(isJsonString(10)).toBe(false); - expect(isJsonString({ name: "John", age: 31 })).toBe(false); + expect(isJsonString({name: 'John', age: 31})).toBe(false); }); }); - describe("defineConfig function tests", () => { - it("should merge defaults into config and overwrite undefined properties (default config)", () => { + describe('defineConfig function tests', () => { + it('should merge defaults into config and overwrite undefined properties (default config)', () => { const config = { allowLogging: true, loops: 10, @@ -299,14 +297,14 @@ describe("Utils Tests", () => { loops: 15, isHuman: true, isRobot: false, - name: "jeff", - }) + name: 'jeff', + }), ).toStrictEqual({ allowLogging: true, loops: 10, isHuman: true, isRobot: false, - name: "jeff", + name: 'jeff', }); }); @@ -324,35 +322,35 @@ describe("Utils Tests", () => { loops: 15, isHuman: true, isRobot: false, - name: "jeff", + name: 'jeff', }, - false - ) + false, + ), ).toStrictEqual({ allowLogging: true, loops: 10, isHuman: undefined, isRobot: false, - name: "jeff", + name: 'jeff', }); }); }); - describe("flatMerge function tests", () => { - it("should merge Changes Object into Source Object", () => { + describe('flatMerge function tests', () => { + it('should merge Changes Object into Source Object', () => { const source = { id: 123, - name: "jeff", + name: 'jeff', size: 189, }; expect( flatMerge(source, { - name: "hans", + name: 'hans', size: 177, - }) + }), ).toStrictEqual({ id: 123, - name: "hans", + name: 'hans', size: 177, }); }); @@ -360,117 +358,117 @@ describe("Utils Tests", () => { it("shouldn't add new properties to Source Object", () => { const source = { id: 123, - name: "jeff", + name: 'jeff', size: 189, }; expect( flatMerge(source, { - name: "hans", + name: 'hans', size: 177, - location: "behind you", - }) + location: 'behind you', + }), ).toStrictEqual({ id: 123, - name: "hans", + name: 'hans', size: 177, }); }); - it("should add new properties to source Object (config.addNewProperties = true)", () => { + it('should add new properties to source Object (config.addNewProperties = true)', () => { const source = { id: 123, - name: "jeff", + name: 'jeff', size: 189, }; expect( flatMerge( source, { - name: "hans", + name: 'hans', size: 177, - location: "behind you", + location: 'behind you', }, - { addNewProperties: true } - ) + {addNewProperties: true}, + ), ).toStrictEqual({ id: 123, - name: "hans", + name: 'hans', size: 177, - location: "behind you", + location: 'behind you', }); }); it("shouldn't deep merge Changes Object into Source Object", () => { const source = { id: 123, - name: "jeff", + name: 'jeff', address: { - place: "JeffsHome", - country: "Germany", + place: 'JeffsHome', + country: 'Germany', }, }; expect( flatMerge(source, { - place: "JeffsNewHome", - }) + place: 'JeffsNewHome', + }), ).toStrictEqual({ id: 123, - name: "jeff", + name: 'jeff', address: { - place: "JeffsHome", - country: "Germany", + place: 'JeffsHome', + country: 'Germany', }, }); }); }); - describe("equal function tests", () => { - it("should return true if value1 and value2 are equal", () => { - expect(equal({ id: 123, name: "jeff" }, { id: 123, name: "jeff" })).toBe( - true + describe('equal function tests', () => { + it('should return true if value1 and value2 are equal', () => { + expect(equal({id: 123, name: 'jeff'}, {id: 123, name: 'jeff'})).toBe( + true, ); expect(equal([1, 2, 3], [1, 2, 3])).toBe(true); expect(equal(12, 12)).toBe(true); - expect(equal("hi", "hi")).toBe(true); + expect(equal('hi', 'hi')).toBe(true); }); it("should return false if value1 and value2 aren't equal", () => { - expect(equal({ id: 123, name: "jeff" }, { id: 123, name: "hans" })).toBe( - false + expect(equal({id: 123, name: 'jeff'}, {id: 123, name: 'hans'})).toBe( + false, ); expect(equal([1, 2], [3, 5])).toBe(false); expect(equal(12, 13)).toBe(false); - expect(equal("hi", "bye")).toBe(false); + expect(equal('hi', 'bye')).toBe(false); }); }); - describe("notEqual function tests", () => { - it("should return false if value1 and value2 are equal", () => { - expect( - notEqual({ id: 123, name: "jeff" }, { id: 123, name: "jeff" }) - ).toBe(false); + describe('notEqual function tests', () => { + it('should return false if value1 and value2 are equal', () => { + expect(notEqual({id: 123, name: 'jeff'}, {id: 123, name: 'jeff'})).toBe( + false, + ); expect(notEqual([1, 2, 3], [1, 2, 3])).toBe(false); expect(notEqual(12, 12)).toBe(false); - expect(equal("hi", "bye")).toBe(false); + expect(equal('hi', 'bye')).toBe(false); }); it("should return true if value1 and value2 aren't equal", () => { - expect( - notEqual({ id: 123, name: "jeff" }, { id: 123, name: "hans" }) - ).toBe(true); + expect(notEqual({id: 123, name: 'jeff'}, {id: 123, name: 'hans'})).toBe( + true, + ); expect(notEqual([1, 2], [3, 5])).toBe(true); expect(notEqual(12, 13)).toBe(true); - expect(notEqual("hi", "bye")).toBe(true); + expect(notEqual('hi', 'bye')).toBe(true); }); }); - describe("generateId function tests", () => { - it("should returned generated Id that matches regex", () => { + describe('generateId function tests', () => { + it('should returned generated Id that matches regex', () => { expect(generateId()).toMatch(/^[a-zA-Z0-9]*$/); }); - it("should returned generated Id with correct length (length = x)", () => { + it('should returned generated Id with correct length (length = x)', () => { expect(generateId(10)).toMatch(/^[a-zA-Z0-9]*$/); expect(generateId(10).length).toEqual(10); expect(generateId(5).length).toEqual(5); @@ -478,91 +476,91 @@ describe("Utils Tests", () => { }); }); - describe("clone function tests", () => { - it("should clone Object/Class without any reference", () => { + describe('clone function tests', () => { + it('should clone Object/Class without any reference', () => { class DummyClass { constructor( public id: number, public name: string, - public location: { country: string; state: string } + public location: {country: string; state: string}, ) {} } - const dummyClass = new DummyClass(10, "jeff", { - country: "USA", - state: "California", + const dummyClass = new DummyClass(10, 'jeff', { + country: 'USA', + state: 'California', }); const clonedDummyClass = clone(dummyClass); expect(dummyClass).toBeInstanceOf(DummyClass); expect(clonedDummyClass).toBeInstanceOf(DummyClass); - expect(dummyClass.name).toBe("jeff"); + expect(dummyClass.name).toBe('jeff'); expect(dummyClass.id).toBe(10); expect(dummyClass.location).toStrictEqual({ - country: "USA", - state: "California", + country: 'USA', + state: 'California', }); - expect(clonedDummyClass.name).toBe("jeff"); + expect(clonedDummyClass.name).toBe('jeff'); expect(clonedDummyClass.id).toBe(10); expect(clonedDummyClass.location).toStrictEqual({ - country: "USA", - state: "California", + country: 'USA', + state: 'California', }); - dummyClass.name = "frank"; - dummyClass.location.state = "Florida"; + dummyClass.name = 'frank'; + dummyClass.location.state = 'Florida'; - expect(dummyClass.name).toBe("frank"); + expect(dummyClass.name).toBe('frank'); expect(dummyClass.id).toBe(10); expect(dummyClass.location).toStrictEqual({ - country: "USA", - state: "Florida", + country: 'USA', + state: 'Florida', }); - expect(clonedDummyClass.name).toBe("jeff"); + expect(clonedDummyClass.name).toBe('jeff'); expect(clonedDummyClass.id).toBe(10); expect(clonedDummyClass.location).toStrictEqual({ - country: "USA", - state: "California", + country: 'USA', + state: 'California', }); }); }); - describe("globalBind function tests", () => { - const dummyKey = "myDummyKey"; + describe('globalBind function tests', () => { + const dummyKey = 'myDummyKey'; beforeEach(() => { globalThis[dummyKey] = undefined; }); - it("should bind instance at key globally (default config)", () => { - globalBind(dummyKey, "dummyInstance"); + it('should bind instance at key globally (default config)', () => { + globalBind(dummyKey, 'dummyInstance'); - expect(globalThis[dummyKey]).toBe("dummyInstance"); + expect(globalThis[dummyKey]).toBe('dummyInstance'); }); it("shouldn't overwrite already existing instance at key (default config)", () => { - globalBind(dummyKey, "I am first!"); + globalBind(dummyKey, 'I am first!'); - globalBind(dummyKey, "dummyInstance"); + globalBind(dummyKey, 'dummyInstance'); - expect(globalThis[dummyKey]).toBe("I am first!"); + expect(globalThis[dummyKey]).toBe('I am first!'); }); - it("should overwrite already existing instance at key (overwrite = true)", () => { - globalBind(dummyKey, "I am first!"); + it('should overwrite already existing instance at key (overwrite = true)', () => { + globalBind(dummyKey, 'I am first!'); - globalBind(dummyKey, "dummyInstance", true); + globalBind(dummyKey, 'dummyInstance', true); - expect(globalThis[dummyKey]).toBe("dummyInstance"); + expect(globalThis[dummyKey]).toBe('dummyInstance'); }); - it("should print error if something went wrong during the bind process", () => { + it('should print error if something went wrong during the bind process', () => { // @ts-ignore | Destroy globalThis globalThis = undefined; - globalBind(dummyKey, "dummyInstance"); + globalBind(dummyKey, 'dummyInstance'); expect(console.error).toHaveBeenCalledWith( - `Agile Error: Failed to create global Instance called '${dummyKey}'` + `Agile Error: Failed to create global Instance called '${dummyKey}'`, ); }); }); diff --git a/packages/multieditor/jest.config.js b/packages/multieditor/jest.config.js index 0161f78b..a7382750 100644 --- a/packages/multieditor/jest.config.js +++ b/packages/multieditor/jest.config.js @@ -1,7 +1,7 @@ -const baseConfig = require("../../jest.config.base"); +const baseConfig = require('../../jest.config.base'); module.exports = { ...baseConfig, - rootDir: "../..", - name: "Multi Editor", + rootDir: '../..', + name: 'Multi Editor', }; diff --git a/packages/multieditor/src/index.ts b/packages/multieditor/src/index.ts index 0d98d39c..b24a3e96 100644 --- a/packages/multieditor/src/index.ts +++ b/packages/multieditor/src/index.ts @@ -1,4 +1,4 @@ -import { MultiEditor } from "./internal"; +import {MultiEditor} from './internal'; -export * from "./internal"; +export * from './internal'; export default MultiEditor; diff --git a/packages/multieditor/src/internal.ts b/packages/multieditor/src/internal.ts index 2516c4b6..44a62c7f 100644 --- a/packages/multieditor/src/internal.ts +++ b/packages/multieditor/src/internal.ts @@ -4,10 +4,10 @@ // !! All internal Agile Editor modules must be imported from here!! -export * from "./multieditor"; -export * from "./item"; -export * from "./validator"; -export * from "./validator/types/string.validator"; -export * from "./validator/types/number.validator"; -export * from "./status/index"; -export * from "./status/status.observer"; +export * from './multieditor'; +export * from './item'; +export * from './validator'; +export * from './validator/types/string.validator'; +export * from './validator/types/number.validator'; +export * from './status/index'; +export * from './status/status.observer'; diff --git a/packages/multieditor/src/item.ts b/packages/multieditor/src/item.ts index 8ec86a6d..c9077ac0 100644 --- a/packages/multieditor/src/item.ts +++ b/packages/multieditor/src/item.ts @@ -2,8 +2,8 @@ import { defineConfig, State, StateRuntimeJobConfigInterface, -} from "@agile-ts/core"; -import { MultiEditor, Validator, Status, ItemKey } from "./internal"; +} from '@agile-ts/core'; +import {MultiEditor, Validator, Status, ItemKey} from './internal'; export class Item extends State { public editor: () => MultiEditor; @@ -26,7 +26,7 @@ export class Item extends State { editor: MultiEditor, data: DataType, key: ItemKey, - config: ItemConfigInterface = {} + config: ItemConfigInterface = {}, ) { super(editor.agileInstance(), data, { key: key, @@ -40,11 +40,11 @@ export class Item extends State { this.status = new Status(this); // Add SideEffect that rebuilds the Status depending of the Item value - this.addSideEffect("validateItem", async () => { + this.addSideEffect('validateItem', async () => { this.isValid = await this.validator.validate( key, this.value, - this.editor() + this.editor(), ); if (this.editor().canAssignStatusToItemOnChange(this)) this.status.display = true; diff --git a/packages/multieditor/src/multieditor.ts b/packages/multieditor/src/multieditor.ts index 556a4948..9030f598 100644 --- a/packages/multieditor/src/multieditor.ts +++ b/packages/multieditor/src/multieditor.ts @@ -5,14 +5,14 @@ import { defineConfig, getAgileInstance, Observer, -} from "@agile-ts/core"; +} from '@agile-ts/core'; import { Item, Validator, StatusType, StatusInterface, ValidationMethodInterface, -} from "./internal"; +} from './internal'; export class MultiEditor< DataType = any, @@ -33,7 +33,7 @@ export class MultiEditor< public computeMethods: DataObject> = {}; public onSubmit: ( preparedData: DataObject, - config?: OnSubmitConfigType + config?: OnSubmitConfigType, ) => Promise; public _key?: EditorKey; @@ -48,22 +48,22 @@ export class MultiEditor< */ constructor( config: EditorConfig, - agileInstance?: Agile + agileInstance?: Agile, ) { if (!agileInstance) agileInstance = getAgileInstance(null); if (!agileInstance) Agile.logger.error( - "No Global agileInstance found! Please pass an agileInstance into the MultiEditor!" + 'No Global agileInstance found! Please pass an agileInstance into the MultiEditor!', ); this.agileInstance = () => agileInstance as any; - let _config = typeof config === "function" ? config(this) : config; + let _config = typeof config === 'function' ? config(this) : config; _config = defineConfig(_config, { fixedProperties: [], editableProperties: Object.keys(_config.data), validateMethods: {}, computeMethods: {}, - reValidateMode: "onSubmit", - validate: "editable", + reValidateMode: 'onSubmit', + validate: 'editable', }); this._key = _config?.key; this.onSubmit = _config.onSubmit as any; @@ -162,7 +162,7 @@ export class MultiEditor< public setValue( key: ItemKey, value: DataType, - config: SetValueConfigInterface = {} + config: SetValueConfigInterface = {}, ): this { const item = this.getItemById(key); if (!item) return this; @@ -189,7 +189,7 @@ export class MultiEditor< public updateInitialValue( key: ItemKey, value: DataType, - config: UpdateInitialValueConfigInterface = {} + config: UpdateInitialValueConfigInterface = {}, ): this { const item = this.getItemById(key); if (!item) return this; @@ -208,7 +208,7 @@ export class MultiEditor< background: config.background, }); } else { - item.ingest({ force: true, background: config.background }); + item.ingest({force: true, background: config.background}); } return this; @@ -224,7 +224,7 @@ export class MultiEditor< * @return false if MultiEditor is not valid */ public async submit( - config: SubmitConfigInterface = {} + config: SubmitConfigInterface = {}, ): Promise { const preparedData: DataObject = {}; config = defineConfig(config, { @@ -248,7 +248,7 @@ export class MultiEditor< // Logging Agile.logger.if - .tag(["multieditor"]) + .tag(['multieditor']) .info(`Submit MultiEditor '${this.key}'`, this.isValid); // Check if Editor is Valid @@ -410,7 +410,7 @@ export class MultiEditor< }).addValidationMethod(validation); } } - return new Validator({ key: key }); + return new Validator({key: key}); } //========================================================================================================= @@ -438,7 +438,7 @@ export class MultiEditor< // Check if Items are Valid for (let key in this.data) { const item = this.data[key]; - if (!item.config.canBeEdited && this.config.validate === "editable") + if (!item.config.canBeEdited && this.config.validate === 'editable') continue; isValid = item.isValid && isValid; } @@ -457,11 +457,11 @@ export class MultiEditor< */ public canAssignStatusToItemOnChange(item: Item): boolean { return ( - (this.config.reValidateMode === "onChange" || - (this.config.reValidateMode === "afterFirstSubmit" && + (this.config.reValidateMode === 'onChange' || + (this.config.reValidateMode === 'afterFirstSubmit' && this.submitted)) && - (this.config.validate === "all" || - (this.config.validate === "editable" && item.config.canBeEdited) || + (this.config.validate === 'all' || + (this.config.validate === 'editable' && item.config.canBeEdited) || false) ); } @@ -476,18 +476,18 @@ export class MultiEditor< */ public canAssignStatusToItemOnSubmit(item: Item): boolean { return ( - (this.config.reValidateMode === "onSubmit" || - (this.config.reValidateMode === "afterFirstSubmit" && + (this.config.reValidateMode === 'onSubmit' || + (this.config.reValidateMode === 'afterFirstSubmit' && !this.submitted) || - (this.config.reValidateMode === "onChange" && !item.status.display)) && - (this.config.validate === "all" || - (this.config.validate === "editable" && item.config.canBeEdited) || + (this.config.reValidateMode === 'onChange' && !item.status.display)) && + (this.config.validate === 'all' || + (this.config.validate === 'editable' && item.config.canBeEdited) || false) ); } } -export type DataObject = { [key: string]: T }; +export type DataObject = {[key: string]: T}; export type EditorKey = string | number; export type ItemKey = string | number; @@ -517,7 +517,7 @@ export interface CreateEditorConfigInterface< computeMethods?: DataObject>; onSubmit: ( preparedData: DataObject, - config?: onSubmitConfig + config?: onSubmitConfig, ) => Promise; reValidateMode?: RevalidationModeType; validate?: ValidateType; @@ -539,7 +539,7 @@ export type EditorConfig< > = | CreateEditorConfigInterface | (( - editor: MultiEditor + editor: MultiEditor, ) => CreateEditorConfigInterface< DataType, SubmitReturnType, @@ -571,5 +571,5 @@ export interface UpdateInitialValueConfigInterface { background?: boolean; } -export type RevalidationModeType = "onChange" | "onSubmit" | "afterFirstSubmit"; -export type ValidateType = "all" | "editable"; +export type RevalidationModeType = 'onChange' | 'onSubmit' | 'afterFirstSubmit'; +export type ValidateType = 'all' | 'editable'; diff --git a/packages/multieditor/src/status/index.ts b/packages/multieditor/src/status/index.ts index a0955390..095a1e8e 100644 --- a/packages/multieditor/src/status/index.ts +++ b/packages/multieditor/src/status/index.ts @@ -1,5 +1,5 @@ -import { Agile, copy, RuntimeJobConfigInterface } from "@agile-ts/core"; -import { Item, StatusObserver } from "../internal"; +import {Agile, copy, RuntimeJobConfigInterface} from '@agile-ts/core'; +import {Item, StatusObserver} from '../internal'; export class Status { public agileInstance: () => Agile; @@ -89,7 +89,7 @@ export class Status { } } -export type StatusType = "error" | "success"; +export type StatusType = 'error' | 'success'; /** * @param type - Type of Status diff --git a/packages/multieditor/src/status/status.observer.ts b/packages/multieditor/src/status/status.observer.ts index cb7aaeb9..acc72ea1 100644 --- a/packages/multieditor/src/status/status.observer.ts +++ b/packages/multieditor/src/status/status.observer.ts @@ -1,4 +1,4 @@ -import { Status, StatusInterface } from "../internal"; +import {Status, StatusInterface} from '../internal'; import { Agile, copy, @@ -9,7 +9,7 @@ import { ObserverKey, RuntimeJob, RuntimeJobConfigInterface, -} from "@agile-ts/core"; +} from '@agile-ts/core'; export class StatusObserver extends Observer { public status: () => Status; @@ -25,7 +25,7 @@ export class StatusObserver extends Observer { constructor( agileInstance: Agile, status: Status, - config: StatusObserverConfigInterface = {} + config: StatusObserverConfigInterface = {}, ) { super(agileInstance, { key: config.key, diff --git a/packages/multieditor/src/validator/index.ts b/packages/multieditor/src/validator/index.ts index 9ca1ef76..846be48a 100644 --- a/packages/multieditor/src/validator/index.ts +++ b/packages/multieditor/src/validator/index.ts @@ -4,14 +4,14 @@ import { defineConfig, generateId, isFunction, -} from "@agile-ts/core"; +} from '@agile-ts/core'; import { DataObject, MultiEditor, ItemKey, StringValidator, NumberValidator, -} from "../internal"; +} from '../internal'; export class Validator { public _key?: ValidatorKey; @@ -25,7 +25,7 @@ export class Validator { */ constructor(config: ValidatorConfigInterface = {}) { this.config = defineConfig(config, { - prefix: "default", + prefix: 'default', }); this._key = this.config.key; } @@ -59,7 +59,7 @@ export class Validator { public async validate( key: ItemKey, value: DataType, - editor: MultiEditor + editor: MultiEditor, ): Promise { let isValid = true; const item = editor.getItemById(key); @@ -77,7 +77,7 @@ export class Validator { (await this.validationMethods[validationMethodKey]( key, value, - editor + editor, )) && isValid; // Handle tracked Statuses @@ -105,11 +105,11 @@ export class Validator { */ public addValidationMethod( key: ItemKey, - method: ValidationMethodInterface + method: ValidationMethodInterface, ): this; public addValidationMethod( keyOrMethod: ItemKey | ValidationMethodInterface, - method?: ValidationMethodInterface + method?: ValidationMethodInterface, ): this { const generateKey = isFunction(keyOrMethod); let _method: ValidationMethodInterface; @@ -125,14 +125,14 @@ export class Validator { // Check if Validation Method is a Function if (!isFunction(_method)) { - Agile.logger.error("A Validation Method has to be a function!"); + Agile.logger.error('A Validation Method has to be a function!'); return this; } // Check if Validation Method already exists if (this.validationMethods[key]) { Agile.logger.error( - `Validation Method with the key/name '${key}' already exists!` + `Validation Method with the key/name '${key}' already exists!`, ); return this; } @@ -188,18 +188,18 @@ export class Validator { */ public required(errorMessage?: string): this { this.addValidationMethod( - this.getValidationMethodKey("required"), + this.getValidationMethodKey('required'), async (key: ItemKey, value: DataType, editor) => { const isValid = !!value; if (!isValid) { editor.setStatus( key, - "error", - errorMessage || `${key} is a required field` + 'error', + errorMessage || `${key} is a required field`, ); } return isValid; - } + }, ); return this; } @@ -221,7 +221,7 @@ export type ValidatorKey = string | number; export type ValidationMethodInterface = ( key: ItemKey, value: DataType, - editor: MultiEditor + editor: MultiEditor, ) => Promise; /** diff --git a/packages/multieditor/src/validator/types/number.validator.ts b/packages/multieditor/src/validator/types/number.validator.ts index 580f2a3c..e7ada358 100644 --- a/packages/multieditor/src/validator/types/number.validator.ts +++ b/packages/multieditor/src/validator/types/number.validator.ts @@ -1,5 +1,5 @@ -import { Validator } from "../../internal"; -import { copy } from "@agile-ts/core"; +import {Validator} from '../../internal'; +import {copy} from '@agile-ts/core'; export class NumberValidator extends Validator { /** @@ -9,7 +9,7 @@ export class NumberValidator extends Validator { * @param errorMessage - Error Message */ constructor(validator: Validator, errorMessage?: string) { - super({ key: validator.key, prefix: "number" }); + super({key: validator.key, prefix: 'number'}); // Copy ValidationMethods of old Validator into this Validator for (let key in validator.validationMethods) { @@ -18,18 +18,18 @@ export class NumberValidator extends Validator { // Add Number Validation Method this.addValidationMethod( - this.getValidationMethodKey("isNumber"), + this.getValidationMethodKey('isNumber'), async (key, value, editor) => { - const isValid = typeof value === "number"; + const isValid = typeof value === 'number'; if (!isValid) { editor.setStatus( key, - "error", - errorMessage || `${key} is no valid Number!` + 'error', + errorMessage || `${key} is no valid Number!`, ); } return isValid; - } + }, ); } @@ -44,19 +44,19 @@ export class NumberValidator extends Validator { */ public max(number: number, errorMessage?: string): this { this.addValidationMethod( - this.getValidationMethodKey("maxNumber"), + this.getValidationMethodKey('maxNumber'), async (key, value, editor) => { - if (!value || typeof value !== "number") return false; + if (!value || typeof value !== 'number') return false; const isValid = value <= number; if (!isValid) { editor.setStatus( key, - "error", - errorMessage || `${key} has to be smaller than ${number}` + 'error', + errorMessage || `${key} has to be smaller than ${number}`, ); } return isValid; - } + }, ); return this; } @@ -72,19 +72,19 @@ export class NumberValidator extends Validator { */ public min(number: number, errorMessage?: string): this { this.addValidationMethod( - this.getValidationMethodKey("minNumber"), + this.getValidationMethodKey('minNumber'), async (key, value, editor) => { - if (!value || typeof value !== "number") return false; + if (!value || typeof value !== 'number') return false; const isValid = value >= number; if (!isValid) { editor.setStatus( key, - "error", - errorMessage || `${key} has to be larger than ${number}` + 'error', + errorMessage || `${key} has to be larger than ${number}`, ); } return isValid; - } + }, ); return this; } @@ -99,19 +99,19 @@ export class NumberValidator extends Validator { */ public positive(errorMessage?: string): this { this.addValidationMethod( - this.getValidationMethodKey("positive"), + this.getValidationMethodKey('positive'), async (key, value, editor) => { - if (!value || typeof value !== "number") return false; + if (!value || typeof value !== 'number') return false; const isValid = value >= 0; if (!isValid) { editor.setStatus( key, - "error", - errorMessage || `${key} has to be positive` + 'error', + errorMessage || `${key} has to be positive`, ); } return isValid; - } + }, ); return this; } @@ -126,19 +126,19 @@ export class NumberValidator extends Validator { */ public negative(errorMessage?: string): this { this.addValidationMethod( - this.getValidationMethodKey("negative"), + this.getValidationMethodKey('negative'), async (key, value, editor) => { - if (!value || typeof value !== "number") return false; + if (!value || typeof value !== 'number') return false; const isValid = value < 0; if (!isValid) { editor.setStatus( key, - "error", - errorMessage || `${key} has to be negative` + 'error', + errorMessage || `${key} has to be negative`, ); } return isValid; - } + }, ); return this; } diff --git a/packages/multieditor/src/validator/types/string.validator.ts b/packages/multieditor/src/validator/types/string.validator.ts index 03fe4b5c..71c8a7fe 100644 --- a/packages/multieditor/src/validator/types/string.validator.ts +++ b/packages/multieditor/src/validator/types/string.validator.ts @@ -1,5 +1,5 @@ -import { Validator } from "../../internal"; -import { copy } from "@agile-ts/core"; +import {Validator} from '../../internal'; +import {copy} from '@agile-ts/core'; export class StringValidator extends Validator { /** @@ -9,7 +9,7 @@ export class StringValidator extends Validator { * @param errorMessage - Error Message */ constructor(validator: Validator, errorMessage?: string) { - super({ key: validator.key, prefix: "string" }); + super({key: validator.key, prefix: 'string'}); // Copy ValidationMethods of old Validator into this Validator for (let key in validator.validationMethods) { @@ -18,18 +18,18 @@ export class StringValidator extends Validator { // Add String Validation Method this.addValidationMethod( - this.getValidationMethodKey("isString"), + this.getValidationMethodKey('isString'), async (key, value, editor) => { - const isValid = typeof value === "string"; + const isValid = typeof value === 'string'; if (!isValid) { editor.setStatus( key, - "error", - errorMessage || `${key} is no valid String!` + 'error', + errorMessage || `${key} is no valid String!`, ); } return isValid; - } + }, ); } @@ -44,19 +44,19 @@ export class StringValidator extends Validator { */ public max(length: number, errorMessage?: string): this { this.addValidationMethod( - this.getValidationMethodKey("maxLength"), + this.getValidationMethodKey('maxLength'), async (key, value, editor) => { - if (!value || typeof value !== "string") return false; + if (!value || typeof value !== 'string') return false; const isValid = value.length <= length; if (!isValid) { editor.setStatus( key, - "error", - errorMessage || `${key} has more than ${length} characters` + 'error', + errorMessage || `${key} has more than ${length} characters`, ); } return isValid; - } + }, ); return this; } @@ -72,19 +72,19 @@ export class StringValidator extends Validator { */ public min(length: number, errorMessage?: string): this { this.addValidationMethod( - this.getValidationMethodKey("minLength"), + this.getValidationMethodKey('minLength'), async (key, value, editor) => { - if (!value || typeof value !== "string") return false; + if (!value || typeof value !== 'string') return false; const isValid = value.length >= length; if (!isValid) { editor.setStatus( key, - "error", - errorMessage || `${key} needs at least ${length} characters` + 'error', + errorMessage || `${key} needs at least ${length} characters`, ); } return isValid; - } + }, ); return this; } @@ -99,20 +99,20 @@ export class StringValidator extends Validator { */ public email(errorMessage?: string): this { this.addValidationMethod( - this.getValidationMethodKey("email"), + this.getValidationMethodKey('email'), async (key, value, editor) => { - if (!value || typeof value !== "string") return false; + if (!value || typeof value !== 'string') return false; const emailRegex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; const isValid = emailRegex.test(value.toLowerCase()); if (!isValid) { editor.setStatus( key, - "error", - errorMessage || `${key} is no valid email` + 'error', + errorMessage || `${key} is no valid email`, ); } return isValid; - } + }, ); return this; } @@ -127,20 +127,20 @@ export class StringValidator extends Validator { */ public url(errorMessage?: string): this { this.addValidationMethod( - this.getValidationMethodKey("email"), + this.getValidationMethodKey('email'), async (key, value, editor) => { - if (!value || typeof value !== "string") return false; + if (!value || typeof value !== 'string') return false; const urlRegex = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)?/gi; const isValid = urlRegex.test(value.toLowerCase()); if (!isValid) { editor.setStatus( key, - "error", - errorMessage || `${key} is no valid url` + 'error', + errorMessage || `${key} is no valid url`, ); } return isValid; - } + }, ); return this; } @@ -156,13 +156,13 @@ export class StringValidator extends Validator { */ public matches(regex: RegExp, errorMessage?: string): this { this.addValidationMethod(async (key, value, editor) => { - if (!value || typeof value !== "string") return false; + if (!value || typeof value !== 'string') return false; const isValid = regex.test(value.toLowerCase()); if (!isValid) { editor.setStatus( key, - "error", - errorMessage || `${key} doesn't follow defined regex` + 'error', + errorMessage || `${key} doesn't follow defined regex`, ); } return isValid; diff --git a/packages/react/jest.config.js b/packages/react/jest.config.js index cadc764f..185e3be4 100644 --- a/packages/react/jest.config.js +++ b/packages/react/jest.config.js @@ -1,7 +1,7 @@ -const baseConfig = require("../../jest.config.base"); +const baseConfig = require('../../jest.config.base'); module.exports = { ...baseConfig, - rootDir: "../..", - name: "React", + rootDir: '../..', + name: 'React', }; diff --git a/packages/react/src/hooks/AgileHOC.ts b/packages/react/src/hooks/AgileHOC.ts index 2b684180..5b843385 100644 --- a/packages/react/src/hooks/AgileHOC.ts +++ b/packages/react/src/hooks/AgileHOC.ts @@ -1,4 +1,4 @@ -import React from "react"; +import React from 'react'; import { State, Agile, @@ -6,15 +6,15 @@ import { getAgileInstance, normalizeArray, Observer, -} from "@agile-ts/core"; +} from '@agile-ts/core'; export function AgileHOC( ReactComponent: any, - deps?: Array | { [key: string]: State } | State, - agileInstance?: Agile + deps?: Array | {[key: string]: State} | State, + agileInstance?: Agile, ) { let depsArray: Array; - let depsObject: { [key: string]: Observer } = {}; + let depsObject: {[key: string]: Observer} = {}; if (deps instanceof State || Array.isArray(deps)) { // Normalize Dependencies @@ -29,7 +29,7 @@ export function AgileHOC( Agile.logger.error("Please don't pass an empty array!"); } } - } else if (typeof deps === "object") { + } else if (typeof deps === 'object') { for (let dep in deps) { depsObject[dep] = deps[dep].observer; } @@ -45,13 +45,13 @@ export function AgileHOC( } } } else { - Agile.logger.error("No Valid AgileHOC properties"); + Agile.logger.error('No Valid AgileHOC properties'); return ReactComponent; } // Check if agile Instance exists if (!agileInstance) { - Agile.logger.error("Failed to get Agile Instance"); + Agile.logger.error('Failed to get Agile Instance'); return ReactComponent; } @@ -69,14 +69,14 @@ export function AgileHOC( if (depsArray) this.agileInstance().subController.subscribeWithSubsArray( this, - depsArray + depsArray, ); // Create HOC based Subscription with Object if (depsObject) { const response = this.agileInstance().subController.subscribeWithSubsObject( this, - depsObject + depsObject, ); this.updatedProps = { ...props, diff --git a/packages/react/src/hooks/useAgile.ts b/packages/react/src/hooks/useAgile.ts index a391c3f6..bd4dd627 100644 --- a/packages/react/src/hooks/useAgile.ts +++ b/packages/react/src/hooks/useAgile.ts @@ -1,4 +1,4 @@ -import React from "react"; +import React from 'react'; import { Agile, Collection, @@ -8,8 +8,8 @@ import { Observer, State, SubscriptionContainerKeyType, -} from "@agile-ts/core"; -import { useIsomorphicLayoutEffect } from "../utils/useIsomorphicLayoutEffect"; +} from '@agile-ts/core'; +import {useIsomorphicLayoutEffect} from '../utils/useIsomorphicLayoutEffect'; // Array Type // https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-1.html @@ -67,7 +67,7 @@ export function useAgile< >( deps: X | [], key?: SubscriptionContainerKeyType, - agileInstance?: Agile + agileInstance?: Agile, ): AgileHookArrayType; /** @@ -79,7 +79,7 @@ export function useAgile< export function useAgile( dep: X, key?: SubscriptionContainerKeyType, - agileInstance?: Agile + agileInstance?: Agile, ): AgileHookType; export function useAgile< @@ -88,7 +88,7 @@ export function useAgile< >( deps: X | Y, key?: SubscriptionContainerKeyType, - agileInstance?: Agile + agileInstance?: Agile, ): AgileHookArrayType | AgileHookType { // Normalize Dependencies and special Agile Instance Types like Collection const depsArray = normalizeArray(deps, { @@ -96,12 +96,12 @@ export function useAgile< }).map((item) => item instanceof Collection ? item.getGroupWithReference(item.config.defaultGroupKey) - : item + : item, ); // Creates Return Value of Hook, depending if deps are in Array shape or not const getReturnValue = ( - depsArray: (State | Observer | undefined)[] + depsArray: (State | Observer | undefined)[], ): AgileHookArrayType | AgileHookType => { if (depsArray.length === 1 && !Array.isArray(deps)) return depsArray[0] instanceof Observer @@ -119,7 +119,7 @@ export function useAgile< useIsomorphicLayoutEffect(() => { if (!agileInstance) agileInstance = getAgileInstance(depsArray[0]); if (!agileInstance || !agileInstance.subController) { - Agile.logger.error("Failed to subscribe Component with deps", depsArray); + Agile.logger.error('Failed to subscribe Component with deps', depsArray); return; } @@ -134,7 +134,7 @@ export function useAgile< forceRender(); }, observers, - key + key, ); // Unsubscribe Callback based Subscription on Unmount diff --git a/packages/react/src/hooks/useEvent.ts b/packages/react/src/hooks/useEvent.ts index a87ebf4d..4ac211b2 100644 --- a/packages/react/src/hooks/useEvent.ts +++ b/packages/react/src/hooks/useEvent.ts @@ -1,18 +1,18 @@ -import React from "react"; +import React from 'react'; import { Agile, Event, EventCallbackFunction, getAgileInstance, SubscriptionContainerKeyType, -} from "@agile-ts/core"; -import { useIsomorphicLayoutEffect } from "../utils/useIsomorphicLayoutEffect"; +} from '@agile-ts/core'; +import {useIsomorphicLayoutEffect} from '../utils/useIsomorphicLayoutEffect'; export function useEvent>( event: E, - callback: EventCallbackFunction, + callback: EventCallbackFunction, key?: SubscriptionContainerKeyType, - agileInstance?: Agile + agileInstance?: Agile, ) { // Trigger State used to force the component to rerender const [, forceRender] = React.useReducer((s) => s + 1, 0); @@ -23,7 +23,7 @@ export function useEvent>( // Get Agile Instance if (!agileInstance) agileInstance = getAgileInstance(event); if (!agileInstance || !agileInstance.subController) { - Agile.logger.error("Failed to subscribe Component with deps", event); + Agile.logger.error('Failed to subscribe Component with deps', event); return; } @@ -33,7 +33,7 @@ export function useEvent>( forceRender(); }, [event.observer], - key + key, ); // Unsubscribe Callback based Subscription and Event on Unmount diff --git a/packages/react/src/hooks/useWatcher.ts b/packages/react/src/hooks/useWatcher.ts index 50e2ad5d..a3b27317 100644 --- a/packages/react/src/hooks/useWatcher.ts +++ b/packages/react/src/hooks/useWatcher.ts @@ -1,9 +1,9 @@ -import React from "react"; -import { StateWatcherCallback, State } from "@agile-ts/core"; +import React from 'react'; +import {StateWatcherCallback, State} from '@agile-ts/core'; export function useWatcher( state: State, - callback: StateWatcherCallback + callback: StateWatcherCallback, ) { React.useEffect(() => { const generatedKey = state.watch(callback); diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts index 95e62f18..d1ed1a20 100644 --- a/packages/react/src/index.ts +++ b/packages/react/src/index.ts @@ -1,8 +1,8 @@ -import reactIntegration from "./react.integration"; +import reactIntegration from './react.integration'; -export { useAgile } from "./hooks/useAgile"; -export { AgileHOC } from "./hooks/AgileHOC"; -export { useEvent } from "./hooks/useEvent"; -export { useWatcher } from "./hooks/useWatcher"; +export {useAgile} from './hooks/useAgile'; +export {AgileHOC} from './hooks/AgileHOC'; +export {useEvent} from './hooks/useEvent'; +export {useWatcher} from './hooks/useWatcher'; export default reactIntegration; diff --git a/packages/react/src/react.integration.ts b/packages/react/src/react.integration.ts index 0cb7f828..a3890e44 100644 --- a/packages/react/src/react.integration.ts +++ b/packages/react/src/react.integration.ts @@ -1,9 +1,9 @@ -import { Agile, Integration } from "@agile-ts/core"; -import { AgileReactComponent } from "./hooks/AgileHOC"; -import React from "react"; +import {Agile, Integration} from '@agile-ts/core'; +import {AgileReactComponent} from './hooks/AgileHOC'; +import React from 'react'; const reactIntegration = new Integration({ - key: "react", + key: 'react', frameworkInstance: React, bind(agileInstance: Agile) { // Nothing to bind ;D diff --git a/packages/react/src/utils/useIsomorphicLayoutEffect.ts b/packages/react/src/utils/useIsomorphicLayoutEffect.ts index 6014c3d7..61e56649 100644 --- a/packages/react/src/utils/useIsomorphicLayoutEffect.ts +++ b/packages/react/src/utils/useIsomorphicLayoutEffect.ts @@ -1,4 +1,4 @@ -import { useEffect, useLayoutEffect } from "react"; +import {useEffect, useLayoutEffect} from 'react'; // React currently throws a warning when using useLayoutEffect on the server. // To get around it, we can conditionally useEffect on the server (no-op) and @@ -10,8 +10,8 @@ import { useEffect, useLayoutEffect } from "react"; // subscription is created and an inconsistent state may be observed export const useIsomorphicLayoutEffect = - typeof window !== "undefined" && - typeof window.document !== "undefined" && - typeof window.document.createElement !== "undefined" + typeof window !== 'undefined' && + typeof window.document !== 'undefined' && + typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect; From dc2bb315590c1de4866d9b5ff8a4a448011439e1 Mon Sep 17 00:00:00 2001 From: Benno Kohrs Date: Wed, 6 Jan 2021 07:00:30 +0100 Subject: [PATCH 03/15] added basic eslint --- .eslintignore | 2 + .eslintrc.json | 20 + .gitignore | 1 + examples/react-typescript/package-lock.json | 14064 ------------------ examples/react-typescript/yarn.lock | 11140 ++++++++++++++ package.json | 10 +- yarn.lock | 391 +- 7 files changed, 11545 insertions(+), 14083 deletions(-) create mode 100644 .eslintignore create mode 100644 .eslintrc.json delete mode 100644 examples/react-typescript/package-lock.json create mode 100644 examples/react-typescript/yarn.lock diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..de4d1f00 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,2 @@ +dist +node_modules diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 00000000..c5624c4e --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,20 @@ +{ + "env": { + "browser": true, + "es2021": true + }, + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 12, + "sourceType": "module" + }, + "plugins": [ + "@typescript-eslint" + ], + "rules": { + } +} diff --git a/.gitignore b/.gitignore index e83c4c56..26e7b327 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ node_modules/ dist .yalc +package-lock.json # Differs on each engine yalc.lock diff --git a/examples/react-typescript/package-lock.json b/examples/react-typescript/package-lock.json deleted file mode 100644 index d50d0759..00000000 --- a/examples/react-typescript/package-lock.json +++ /dev/null @@ -1,14064 +0,0 @@ -{ - "name": "react-typescript", - "version": "0.1.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@agile-ts/api": { - "version": "file:.yalc/@agile-ts/api" - }, - "@agile-ts/core": { - "version": "file:.yalc/@agile-ts/core" - }, - "@agile-ts/multieditor": { - "version": "file:.yalc/@agile-ts/multieditor" - }, - "@agile-ts/react": { - "version": "file:.yalc/@agile-ts/react" - }, - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/compat-data": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.7.tgz", - "integrity": "sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==" - }, - "@babel/core": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", - "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.0", - "@babel/parser": "^7.9.0", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "@babel/generator": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", - "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", - "requires": { - "@babel/types": "^7.12.5", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", - "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", - "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", - "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-builder-react-jsx": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", - "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-builder-react-jsx-experimental": { - "version": "7.12.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz", - "integrity": "sha512-AjEa0jrQqNk7eDQOo0pTfUOwQBMF+xVqrausQwT9/rTKy0g04ggFNaJpaE09IQMn9yExluigWMJcj0WC7bq+Og==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-module-imports": "^7.12.1", - "@babel/types": "^7.12.1" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", - "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", - "requires": { - "@babel/compat-data": "^7.12.5", - "@babel/helper-validator-option": "^7.12.1", - "browserslist": "^4.14.5", - "semver": "^5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", - "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.12.1", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.10.4" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz", - "integrity": "sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "regexpu-core": "^4.7.1" - } - }, - "@babel/helper-define-map": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", - "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/types": "^7.10.5", - "lodash": "^4.17.19" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", - "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", - "requires": { - "@babel/types": "^7.12.1" - } - }, - "@babel/helper-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", - "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", - "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", - "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz", - "integrity": "sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==", - "requires": { - "@babel/types": "^7.12.7" - } - }, - "@babel/helper-module-imports": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", - "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", - "requires": { - "@babel/types": "^7.12.5" - } - }, - "@babel/helper-module-transforms": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", - "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", - "requires": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-simple-access": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/helper-validator-identifier": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1", - "lodash": "^4.17.19" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.7.tgz", - "integrity": "sha512-I5xc9oSJ2h59OwyUqjv95HRyzxj53DAubUERgQMrpcCEYQyToeHA+NEcUEsVWB4j53RDeskeBJ0SgRAYHDBckw==", - "requires": { - "@babel/types": "^7.12.7" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", - "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-wrap-function": "^7.10.4", - "@babel/types": "^7.12.1" - } - }, - "@babel/helper-replace-supers": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", - "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", - "requires": { - "@babel/helper-member-expression-to-functions": "^7.12.1", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.12.5", - "@babel/types": "^7.12.5" - } - }, - "@babel/helper-simple-access": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", - "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", - "requires": { - "@babel/types": "^7.12.1" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", - "requires": { - "@babel/types": "^7.12.1" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", - "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", - "requires": { - "@babel/types": "^7.11.0" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" - }, - "@babel/helper-validator-option": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", - "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==" - }, - "@babel/helper-wrap-function": { - "version": "7.12.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", - "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helpers": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", - "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", - "requires": { - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.5", - "@babel/types": "^7.12.5" - } - }, - "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.7.tgz", - "integrity": "sha512-oWR02Ubp4xTLCAqPRiNIuMVgNO5Aif/xpXtabhzW2HWUD47XJsAB4Zd/Rg30+XeQA3juXigV7hlquOTmwqLiwg==" - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", - "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.12.1", - "@babel/plugin-syntax-async-generators": "^7.8.0" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", - "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-proposal-decorators": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz", - "integrity": "sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-decorators": "^7.8.3" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", - "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", - "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", - "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.0" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", - "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", - "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz", - "integrity": "sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", - "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.12.1" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", - "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz", - "integrity": "sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", - "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", - "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", - "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-decorators": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.1.tgz", - "integrity": "sha512-ir9YW5daRrTYiy9UJ2TzdNIJEZu8KclVzDcfSt4iEmOtwQ4llPtWInNKJyKnVXp1vE4bbVd5S31M/im3mYMO1w==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-flow": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.1.tgz", - "integrity": "sha512-1lBLLmtxrwpm4VKmtVFselI/P3pX+G63fAtUUt6b2Nzgao77KNDwyuRt90Mj2/9pKobtt68FdvjfqohZjg/FCA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", - "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", - "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz", - "integrity": "sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", - "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", - "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", - "requires": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.12.1" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", - "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", - "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", - "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-define-map": "^7.10.4", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.10.4", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", - "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", - "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", - "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", - "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", - "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-flow-strip-types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz", - "integrity": "sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-flow": "^7.8.3" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", - "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", - "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", - "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", - "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", - "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", - "requires": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", - "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", - "requires": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.12.1", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", - "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", - "requires": { - "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-identifier": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", - "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", - "requires": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", - "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", - "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", - "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", - "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", - "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-react-constant-elements": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.12.1.tgz", - "integrity": "sha512-KOHd0tIRLoER+J+8f9DblZDa1fLGPwaaN1DI1TVHuQFOpjHV22C3CUB3obeC4fexHY9nx+fH0hQNvLFFfA1mxA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-react-display-name": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz", - "integrity": "sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-react-jsx": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.7.tgz", - "integrity": "sha512-YFlTi6MEsclFAPIDNZYiCRbneg1MFGao9pPG9uD5htwE0vDbPaMUMeYd6itWjw7K4kro4UbdQf3ljmFl9y48dQ==", - "requires": { - "@babel/helper-builder-react-jsx": "^7.10.4", - "@babel/helper-builder-react-jsx-experimental": "^7.12.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.12.1" - } - }, - "@babel/plugin-transform-react-jsx-development": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.7.tgz", - "integrity": "sha512-Rs3ETtMtR3VLXFeYRChle5SsP/P9Jp/6dsewBQfokDSzKJThlsuFcnzLTDRALiUmTC48ej19YD9uN1mupEeEDg==", - "requires": { - "@babel/helper-builder-react-jsx-experimental": "^7.12.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.12.1" - } - }, - "@babel/plugin-transform-react-jsx-self": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz", - "integrity": "sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-react-jsx-source": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz", - "integrity": "sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-react-pure-annotations": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz", - "integrity": "sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", - "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", - "requires": { - "regenerator-transform": "^0.14.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", - "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz", - "integrity": "sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw==", - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "resolve": "^1.8.1", - "semver": "^5.5.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", - "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", - "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz", - "integrity": "sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", - "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", - "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-typescript": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz", - "integrity": "sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-typescript": "^7.12.1" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", - "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", - "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/preset-env": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.7.tgz", - "integrity": "sha512-OnNdfAr1FUQg7ksb7bmbKoby4qFOHw6DKWWUNB9KqnnCldxhxJlP+21dpyaWFmf2h0rTbOkXJtAGevY3XW1eew==", - "requires": { - "@babel/compat-data": "^7.12.7", - "@babel/helper-compilation-targets": "^7.12.5", - "@babel/helper-module-imports": "^7.12.5", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-option": "^7.12.1", - "@babel/plugin-proposal-async-generator-functions": "^7.12.1", - "@babel/plugin-proposal-class-properties": "^7.12.1", - "@babel/plugin-proposal-dynamic-import": "^7.12.1", - "@babel/plugin-proposal-export-namespace-from": "^7.12.1", - "@babel/plugin-proposal-json-strings": "^7.12.1", - "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", - "@babel/plugin-proposal-numeric-separator": "^7.12.7", - "@babel/plugin-proposal-object-rest-spread": "^7.12.1", - "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.12.7", - "@babel/plugin-proposal-private-methods": "^7.12.1", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.12.1", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.12.1", - "@babel/plugin-transform-arrow-functions": "^7.12.1", - "@babel/plugin-transform-async-to-generator": "^7.12.1", - "@babel/plugin-transform-block-scoped-functions": "^7.12.1", - "@babel/plugin-transform-block-scoping": "^7.12.1", - "@babel/plugin-transform-classes": "^7.12.1", - "@babel/plugin-transform-computed-properties": "^7.12.1", - "@babel/plugin-transform-destructuring": "^7.12.1", - "@babel/plugin-transform-dotall-regex": "^7.12.1", - "@babel/plugin-transform-duplicate-keys": "^7.12.1", - "@babel/plugin-transform-exponentiation-operator": "^7.12.1", - "@babel/plugin-transform-for-of": "^7.12.1", - "@babel/plugin-transform-function-name": "^7.12.1", - "@babel/plugin-transform-literals": "^7.12.1", - "@babel/plugin-transform-member-expression-literals": "^7.12.1", - "@babel/plugin-transform-modules-amd": "^7.12.1", - "@babel/plugin-transform-modules-commonjs": "^7.12.1", - "@babel/plugin-transform-modules-systemjs": "^7.12.1", - "@babel/plugin-transform-modules-umd": "^7.12.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", - "@babel/plugin-transform-new-target": "^7.12.1", - "@babel/plugin-transform-object-super": "^7.12.1", - "@babel/plugin-transform-parameters": "^7.12.1", - "@babel/plugin-transform-property-literals": "^7.12.1", - "@babel/plugin-transform-regenerator": "^7.12.1", - "@babel/plugin-transform-reserved-words": "^7.12.1", - "@babel/plugin-transform-shorthand-properties": "^7.12.1", - "@babel/plugin-transform-spread": "^7.12.1", - "@babel/plugin-transform-sticky-regex": "^7.12.7", - "@babel/plugin-transform-template-literals": "^7.12.1", - "@babel/plugin-transform-typeof-symbol": "^7.12.1", - "@babel/plugin-transform-unicode-escapes": "^7.12.1", - "@babel/plugin-transform-unicode-regex": "^7.12.1", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.12.7", - "core-js-compat": "^3.7.0", - "semver": "^5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/preset-react": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.7.tgz", - "integrity": "sha512-wKeTdnGUP5AEYCYQIMeXMMwU7j+2opxrG0WzuZfxuuW9nhKvvALBjl67653CWamZJVefuJGI219G591RSldrqQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-transform-react-display-name": "^7.12.1", - "@babel/plugin-transform-react-jsx": "^7.12.7", - "@babel/plugin-transform-react-jsx-development": "^7.12.7", - "@babel/plugin-transform-react-jsx-self": "^7.12.1", - "@babel/plugin-transform-react-jsx-source": "^7.12.1", - "@babel/plugin-transform-react-pure-annotations": "^7.12.1" - } - }, - "@babel/preset-typescript": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz", - "integrity": "sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-transform-typescript": "^7.9.0" - } - }, - "@babel/runtime": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", - "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/runtime-corejs3": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.12.5.tgz", - "integrity": "sha512-roGr54CsTmNPPzZoCP1AmDXuBoNao7tnSA83TXTwt+UK5QVyh1DIJnrgYRPWKCF2flqZQXwa7Yr8v7VmLzF0YQ==", - "requires": { - "core-js-pure": "^3.0.0", - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", - "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.12.7", - "@babel/types": "^7.12.7" - } - }, - "@babel/traverse": { - "version": "7.12.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.9.tgz", - "integrity": "sha512-iX9ajqnLdoU1s1nHt36JDI9KG4k+vmI8WgjK5d+aDTwQbL2fUnzedNedssA645Ede3PM2ma1n8Q4h2ohwXgMXw==", - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.12.7", - "@babel/types": "^7.12.7", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - } - }, - "@babel/types": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.7.tgz", - "integrity": "sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "@cnakazawa/watch": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", - "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", - "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" - } - }, - "@csstools/convert-colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", - "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==" - }, - "@csstools/normalize.css": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz", - "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==" - }, - "@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "requires": { - "@emotion/memoize": "0.7.4" - } - }, - "@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" - }, - "@emotion/stylis": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", - "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" - }, - "@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" - }, - "@hapi/address": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", - "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==" - }, - "@hapi/bourne": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", - "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" - }, - "@hapi/hoek": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", - "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" - }, - "@hapi/joi": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", - "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", - "requires": { - "@hapi/address": "2.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/topo": "3.x.x" - } - }, - "@hapi/topo": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", - "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", - "requires": { - "@hapi/hoek": "^8.3.0" - } - }, - "@jest/console": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", - "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", - "requires": { - "@jest/source-map": "^24.9.0", - "chalk": "^2.0.1", - "slash": "^2.0.0" - } - }, - "@jest/core": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", - "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", - "requires": { - "@jest/console": "^24.7.1", - "@jest/reporters": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-changed-files": "^24.9.0", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-resolve-dependencies": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "jest-watcher": "^24.9.0", - "micromatch": "^3.1.10", - "p-each-series": "^1.0.0", - "realpath-native": "^1.1.0", - "rimraf": "^2.5.4", - "slash": "^2.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" - } - } - }, - "@jest/environment": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", - "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", - "requires": { - "@jest/fake-timers": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0" - } - }, - "@jest/fake-timers": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", - "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", - "requires": { - "@jest/types": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0" - } - }, - "@jest/reporters": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", - "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", - "requires": { - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "istanbul-lib-coverage": "^2.0.2", - "istanbul-lib-instrument": "^3.0.1", - "istanbul-lib-report": "^2.0.4", - "istanbul-lib-source-maps": "^3.0.1", - "istanbul-reports": "^2.2.6", - "jest-haste-map": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "node-notifier": "^5.4.2", - "slash": "^2.0.0", - "source-map": "^0.6.0", - "string-length": "^2.0.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "@jest/source-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", - "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.1.15", - "source-map": "^0.6.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "@jest/test-result": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", - "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", - "requires": { - "@jest/console": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/istanbul-lib-coverage": "^2.0.0" - } - }, - "@jest/test-sequencer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", - "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", - "requires": { - "@jest/test-result": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0" - } - }, - "@jest/transform": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", - "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^24.9.0", - "babel-plugin-istanbul": "^5.1.0", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.9.0", - "jest-regex-util": "^24.9.0", - "jest-util": "^24.9.0", - "micromatch": "^3.1.10", - "pirates": "^4.0.1", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "2.4.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" - }, - "@sheerun/mutationobserver-shim": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz", - "integrity": "sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw==", - "dev": true - }, - "@svgr/babel-plugin-add-jsx-attribute": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz", - "integrity": "sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig==" - }, - "@svgr/babel-plugin-remove-jsx-attribute": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz", - "integrity": "sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ==" - }, - "@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz", - "integrity": "sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w==" - }, - "@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz", - "integrity": "sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w==" - }, - "@svgr/babel-plugin-svg-dynamic-title": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz", - "integrity": "sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w==" - }, - "@svgr/babel-plugin-svg-em-dimensions": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz", - "integrity": "sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w==" - }, - "@svgr/babel-plugin-transform-react-native-svg": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz", - "integrity": "sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw==" - }, - "@svgr/babel-plugin-transform-svg-component": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz", - "integrity": "sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw==" - }, - "@svgr/babel-preset": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-4.3.3.tgz", - "integrity": "sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A==", - "requires": { - "@svgr/babel-plugin-add-jsx-attribute": "^4.2.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^4.2.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^4.2.0", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^4.2.0", - "@svgr/babel-plugin-svg-dynamic-title": "^4.3.3", - "@svgr/babel-plugin-svg-em-dimensions": "^4.2.0", - "@svgr/babel-plugin-transform-react-native-svg": "^4.2.0", - "@svgr/babel-plugin-transform-svg-component": "^4.2.0" - } - }, - "@svgr/core": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-4.3.3.tgz", - "integrity": "sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w==", - "requires": { - "@svgr/plugin-jsx": "^4.3.3", - "camelcase": "^5.3.1", - "cosmiconfig": "^5.2.1" - } - }, - "@svgr/hast-util-to-babel-ast": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz", - "integrity": "sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg==", - "requires": { - "@babel/types": "^7.4.4" - } - }, - "@svgr/plugin-jsx": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz", - "integrity": "sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w==", - "requires": { - "@babel/core": "^7.4.5", - "@svgr/babel-preset": "^4.3.3", - "@svgr/hast-util-to-babel-ast": "^4.3.2", - "svg-parser": "^2.0.0" - } - }, - "@svgr/plugin-svgo": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz", - "integrity": "sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w==", - "requires": { - "cosmiconfig": "^5.2.1", - "merge-deep": "^3.0.2", - "svgo": "^1.2.2" - } - }, - "@svgr/webpack": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-4.3.3.tgz", - "integrity": "sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg==", - "requires": { - "@babel/core": "^7.4.5", - "@babel/plugin-transform-react-constant-elements": "^7.0.0", - "@babel/preset-env": "^7.4.5", - "@babel/preset-react": "^7.0.0", - "@svgr/core": "^4.3.3", - "@svgr/plugin-jsx": "^4.3.3", - "@svgr/plugin-svgo": "^4.3.1", - "loader-utils": "^1.2.3" - } - }, - "@testing-library/dom": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-6.16.0.tgz", - "integrity": "sha512-lBD88ssxqEfz0wFL6MeUyyWZfV/2cjEZZV3YRpb2IoJRej/4f1jB0TzqIOznTpfR1r34CNesrubxwIlAQ8zgPA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4", - "@sheerun/mutationobserver-shim": "^0.3.2", - "@types/testing-library__dom": "^6.12.1", - "aria-query": "^4.0.2", - "dom-accessibility-api": "^0.3.0", - "pretty-format": "^25.1.0", - "wait-for-expect": "^3.0.2" - }, - "dependencies": { - "@jest/types": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", - "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.10", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.10.tgz", - "integrity": "sha512-z8PNtlhrj7eJNLmrAivM7rjBESG6JwC5xP3RVk12i/8HVP7Xnx/sEmERnRImyEuUaJfO942X0qMOYsoupaJbZQ==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "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, - "requires": { - "color-convert": "^2.0.1" - } - }, - "aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "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, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "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 - }, - "pretty-format": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", - "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", - "dev": true, - "requires": { - "@jest/types": "^25.5.0", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^16.12.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@testing-library/react": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-9.5.0.tgz", - "integrity": "sha512-di1b+D0p+rfeboHO5W7gTVeZDIK5+maEgstrZbWZSSvxDyfDRkkyBE1AJR5Psd6doNldluXlCWqXriUfqu/9Qg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4", - "@testing-library/dom": "^6.15.0", - "@types/testing-library__react": "^9.1.2" - } - }, - "@testing-library/user-event": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-7.2.1.tgz", - "integrity": "sha512-oZ0Ib5I4Z2pUEcoo95cT1cr6slco9WY7yiPpG+RGNkj8YcYgJnM7pXmYmorNOReh8MIGcKSqXyeGjxnr8YiZbA==", - "dev": true - }, - "@types/babel__core": { - "version": "7.1.12", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.12.tgz", - "integrity": "sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ==", - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", - "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", - "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.0.16", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.16.tgz", - "integrity": "sha512-S63Dt4CZOkuTmpLGGWtT/mQdVORJOpx6SZWGVaP56dda/0Nx5nEe82K7/LAm8zYr6SfMq+1N2OreIOrHAx656w==", - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==" - }, - "@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - }, - "dependencies": { - "@types/node": { - "version": "14.14.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.10.tgz", - "integrity": "sha512-J32dgx2hw8vXrSbu4ZlVhn1Nm3GbeCFNw2FWL8S5QKucHGY0cyNwjdQdO+KMBZ4wpmC7KhLCiNsdk1RFRIYUQQ==" - } - } - }, - "@types/history": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.8.tgz", - "integrity": "sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA==", - "dev": true - }, - "@types/hoist-non-react-statics": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", - "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", - "dev": true, - "requires": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==" - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", - "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/json-schema": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", - "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==" - }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" - }, - "@types/node": { - "version": "12.19.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.7.tgz", - "integrity": "sha512-zvjOU1g4CpPilbTDUATnZCUb/6lARMRAqzT7ILwl1P3YvU2leEcZ2+fw9+Jrw/paXB1CgQyXTrN4hWDtqT9O2A==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "@types/prop-types": { - "version": "15.7.3", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", - "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==", - "dev": true - }, - "@types/q": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", - "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" - }, - "@types/react": { - "version": "16.14.2", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.2.tgz", - "integrity": "sha512-BzzcAlyDxXl2nANlabtT4thtvbbnhee8hMmH/CcJrISDBVcJS1iOsP1f0OAgSdGE0MsY9tqcrb9YoZcOFv9dbQ==", - "dev": true, - "requires": { - "@types/prop-types": "*", - "csstype": "^3.0.2" - } - }, - "@types/react-dom": { - "version": "16.9.10", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.10.tgz", - "integrity": "sha512-ItatOrnXDMAYpv6G8UCk2VhbYVTjZT9aorLtA/OzDN9XJ2GKcfam68jutoAcILdRjsRUO8qb7AmyObF77Q8QFw==", - "dev": true, - "requires": { - "@types/react": "^16" - } - }, - "@types/react-native": { - "version": "0.63.37", - "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.63.37.tgz", - "integrity": "sha512-xr9SZG7tQQBKT6840tAGaWEC65D2gjyxZtuZxz631UgeW1ofItuu9HMVhoyYqot2hRSa6Q4YC8FYkRVUpM53/w==", - "dev": true, - "requires": { - "@types/react": "*" - } - }, - "@types/react-router": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.8.tgz", - "integrity": "sha512-HzOyJb+wFmyEhyfp4D4NYrumi+LQgQL/68HvJO+q6XtuHSDvw6Aqov7sCAhjbNq3bUPgPqbdvjXC5HeB2oEAPg==", - "dev": true, - "requires": { - "@types/history": "*", - "@types/react": "*" - } - }, - "@types/react-router-dom": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.1.6.tgz", - "integrity": "sha512-gjrxYqxz37zWEdMVvQtWPFMFj1dRDb4TGOcgyOfSXTrEXdF92L00WE3C471O3TV/RF1oskcStkXsOU0Ete4s/g==", - "dev": true, - "requires": { - "@types/history": "*", - "@types/react": "*", - "@types/react-router": "*" - } - }, - "@types/stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==" - }, - "@types/styled-components": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.4.tgz", - "integrity": "sha512-78f5Zuy0v/LTQNOYfpH+CINHpchzMMmAt9amY2YNtSgsk1TmlKm8L2Wijss/mtTrsUAVTm2CdGB8VOM65vA8xg==", - "dev": true, - "requires": { - "@types/hoist-non-react-statics": "*", - "@types/react": "*", - "@types/react-native": "*", - "csstype": "^3.0.2" - } - }, - "@types/testing-library__dom": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-6.14.0.tgz", - "integrity": "sha512-sMl7OSv0AvMOqn1UJ6j1unPMIHRXen0Ita1ujnMX912rrOcawe4f7wu0Zt9GIQhBhJvH2BaibqFgQ3lP+Pj2hA==", - "dev": true, - "requires": { - "pretty-format": "^24.3.0" - } - }, - "@types/testing-library__react": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-9.1.3.tgz", - "integrity": "sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w==", - "dev": true, - "requires": { - "@types/react-dom": "*", - "@types/testing-library__dom": "*", - "pretty-format": "^25.1.0" - }, - "dependencies": { - "@jest/types": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", - "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/yargs": { - "version": "15.0.10", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.10.tgz", - "integrity": "sha512-z8PNtlhrj7eJNLmrAivM7rjBESG6JwC5xP3RVk12i/8HVP7Xnx/sEmERnRImyEuUaJfO942X0qMOYsoupaJbZQ==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "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, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "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, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "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 - }, - "pretty-format": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", - "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", - "dev": true, - "requires": { - "@jest/types": "^25.5.0", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^16.12.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@types/yargs": { - "version": "13.0.11", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", - "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", - "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==" - }, - "@typescript-eslint/eslint-plugin": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", - "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", - "requires": { - "@typescript-eslint/experimental-utils": "2.34.0", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "tsutils": "^3.17.1" - } - }, - "@typescript-eslint/experimental-utils": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", - "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==", - "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.34.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" - } - }, - "@typescript-eslint/parser": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", - "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", - "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.34.0", - "@typescript-eslint/typescript-estree": "2.34.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "@typescript-eslint/typescript-estree": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", - "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", - "requires": { - "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" - }, - "dependencies": { - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" - } - } - }, - "@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", - "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==" - }, - "@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==" - }, - "@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==" - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", - "requires": { - "@webassemblyjs/wast-printer": "1.8.5" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==" - }, - "@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", - "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==" - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", - "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", - "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", - "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==" - }, - "@webassemblyjs/wasm-edit": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", - "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/helper-wasm-section": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-opt": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "@webassemblyjs/wast-printer": "1.8.5" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", - "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", - "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/floating-point-hex-parser": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-code-frame": "1.8.5", - "@webassemblyjs/helper-fsm": "1.8.5", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", - "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - }, - "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - }, - "acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - } - } - }, - "acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==" - }, - "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" - }, - "address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" - }, - "adjust-sourcemap-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz", - "integrity": "sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA==", - "requires": { - "assert": "1.4.1", - "camelcase": "5.0.0", - "loader-utils": "1.2.3", - "object-path": "0.11.4", - "regex-parser": "2.2.10" - }, - "dependencies": { - "camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==" - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - } - } - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" - }, - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" - }, - "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "requires": { - "type-fest": "^0.11.0" - }, - "dependencies": { - "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==" - } - } - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "aria-query": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", - "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", - "requires": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.0" - } - }, - "arity-n": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", - "integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U=" - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" - }, - "array-includes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.2.tgz", - "integrity": "sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "get-intrinsic": "^1.0.1", - "is-string": "^1.0.5" - } - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "array.prototype.flat": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", - "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" - } - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" - } - } - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "requires": { - "util": "0.10.3" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - }, - "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" - }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "requires": { - "lodash": "^4.17.14" - } - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - }, - "autoprefixer": { - "version": "9.8.6", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", - "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", - "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "colorette": "^1.2.1", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, - "axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "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" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - } - }, - "babel-extract-comments": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", - "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==", - "requires": { - "babylon": "^6.18.0" - } - }, - "babel-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", - "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", - "requires": { - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/babel__core": "^7.1.0", - "babel-plugin-istanbul": "^5.1.0", - "babel-preset-jest": "^24.9.0", - "chalk": "^2.4.2", - "slash": "^2.0.0" - } - }, - "babel-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", - "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", - "requires": { - "find-cache-dir": "^2.1.0", - "loader-utils": "^1.4.0", - "mkdirp": "^0.5.3", - "pify": "^4.0.1", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - } - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-istanbul": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", - "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.3.0", - "test-exclude": "^5.2.3" - } - }, - "babel-plugin-jest-hoist": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", - "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", - "requires": { - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-plugin-macros": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", - "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", - "requires": { - "@babel/runtime": "^7.7.2", - "cosmiconfig": "^6.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - } - }, - "import-fresh": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", - "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "parse-json": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", - "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - } - } - }, - "babel-plugin-named-asset-import": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz", - "integrity": "sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw==" - }, - "babel-plugin-styled-components": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.12.0.tgz", - "integrity": "sha512-FEiD7l5ZABdJPpLssKXjBUJMYqzbcNzBowfXDCdJhOpbhWiewapUaY+LZGT8R4Jg2TwOjGjG4RKeyrO5p9sBkA==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-module-imports": "^7.0.0", - "babel-plugin-syntax-jsx": "^6.18.0", - "lodash": "^4.17.11" - } - }, - "babel-plugin-syntax-jsx": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" - }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", - "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", - "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.8.0", - "babel-runtime": "^6.26.0" - } - }, - "babel-plugin-transform-react-remove-prop-types": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", - "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" - }, - "babel-preset-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", - "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", - "requires": { - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^24.9.0" - } - }, - "babel-preset-react-app": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz", - "integrity": "sha512-k58RtQOKH21NyKtzptoAvtAODuAJJs3ZhqBMl456/GnXEQ/0La92pNmwgWoMn5pBTrsvk3YYXdY7zpY4e3UIxA==", - "requires": { - "@babel/core": "7.9.0", - "@babel/plugin-proposal-class-properties": "7.8.3", - "@babel/plugin-proposal-decorators": "7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "7.8.3", - "@babel/plugin-proposal-numeric-separator": "7.8.3", - "@babel/plugin-proposal-optional-chaining": "7.9.0", - "@babel/plugin-transform-flow-strip-types": "7.9.0", - "@babel/plugin-transform-react-display-name": "7.8.3", - "@babel/plugin-transform-runtime": "7.9.0", - "@babel/preset-env": "7.9.0", - "@babel/preset-react": "7.9.1", - "@babel/preset-typescript": "7.9.0", - "@babel/runtime": "7.9.0", - "babel-plugin-macros": "2.8.0", - "babel-plugin-transform-react-remove-prop-types": "0.4.24" - }, - "dependencies": { - "@babel/plugin-proposal-class-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz", - "integrity": "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", - "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", - "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" - } - }, - "@babel/plugin-transform-react-display-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz", - "integrity": "sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/preset-env": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", - "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", - "requires": { - "@babel/compat-data": "^7.9.0", - "@babel/helper-compilation-targets": "^7.8.7", - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-proposal-async-generator-functions": "^7.8.3", - "@babel/plugin-proposal-dynamic-import": "^7.8.3", - "@babel/plugin-proposal-json-strings": "^7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-numeric-separator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.9.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.9.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.8.3", - "@babel/plugin-transform-async-to-generator": "^7.8.3", - "@babel/plugin-transform-block-scoped-functions": "^7.8.3", - "@babel/plugin-transform-block-scoping": "^7.8.3", - "@babel/plugin-transform-classes": "^7.9.0", - "@babel/plugin-transform-computed-properties": "^7.8.3", - "@babel/plugin-transform-destructuring": "^7.8.3", - "@babel/plugin-transform-dotall-regex": "^7.8.3", - "@babel/plugin-transform-duplicate-keys": "^7.8.3", - "@babel/plugin-transform-exponentiation-operator": "^7.8.3", - "@babel/plugin-transform-for-of": "^7.9.0", - "@babel/plugin-transform-function-name": "^7.8.3", - "@babel/plugin-transform-literals": "^7.8.3", - "@babel/plugin-transform-member-expression-literals": "^7.8.3", - "@babel/plugin-transform-modules-amd": "^7.9.0", - "@babel/plugin-transform-modules-commonjs": "^7.9.0", - "@babel/plugin-transform-modules-systemjs": "^7.9.0", - "@babel/plugin-transform-modules-umd": "^7.9.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.8.3", - "@babel/plugin-transform-object-super": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.8.7", - "@babel/plugin-transform-property-literals": "^7.8.3", - "@babel/plugin-transform-regenerator": "^7.8.7", - "@babel/plugin-transform-reserved-words": "^7.8.3", - "@babel/plugin-transform-shorthand-properties": "^7.8.3", - "@babel/plugin-transform-spread": "^7.8.3", - "@babel/plugin-transform-sticky-regex": "^7.8.3", - "@babel/plugin-transform-template-literals": "^7.8.3", - "@babel/plugin-transform-typeof-symbol": "^7.8.4", - "@babel/plugin-transform-unicode-regex": "^7.8.3", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", - "browserslist": "^4.9.1", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.0" - } - }, - "@babel/preset-react": { - "version": "7.9.1", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.9.1.tgz", - "integrity": "sha512-aJBYF23MPj0RNdp/4bHnAP0NVqqZRr9kl0NAOP4nJCex6OYVio59+dnQzsAWFuogdLyeaKA1hmfUIVZkY5J+TQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-transform-react-display-name": "^7.8.3", - "@babel/plugin-transform-react-jsx": "^7.9.1", - "@babel/plugin-transform-react-jsx-development": "^7.9.0", - "@babel/plugin-transform-react-jsx-self": "^7.9.0", - "@babel/plugin-transform-react-jsx-source": "^7.9.0" - } - }, - "@babel/runtime": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.0.tgz", - "integrity": "sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - } - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" - }, - "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "bn.js": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", - "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==" - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - } - } - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" - }, - "browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", - "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" - } - } - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "4.14.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.7.tgz", - "integrity": "sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==", - "requires": { - "caniuse-lite": "^1.0.30001157", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.591", - "escalade": "^3.1.1", - "node-releases": "^1.1.66" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - } - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, - "cacache": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", - "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", - "requires": { - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.2", - "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "minipass": "^3.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "p-map": "^3.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^2.7.1", - "ssri": "^7.0.0", - "unique-filename": "^1.1.1" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "call-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", - "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.0" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" - }, - "camel-case": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", - "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", - "requires": { - "pascal-case": "^3.1.1", - "tslib": "^1.10.0" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "camelize": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", - "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001161", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001161.tgz", - "integrity": "sha512-JharrCDxOqPLBULF9/SPa6yMcBRTjZARJ6sc3cuKrPfyIk64JN6kuMINWqA99Xc8uElMFcROliwtz0n9pYej+g==" - }, - "capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", - "requires": { - "rsvp": "^4.8.4" - } - }, - "case-sensitive-paths-webpack-plugin": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz", - "integrity": "sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "chokidar": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", - "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - }, - "dependencies": { - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "clone-deep": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", - "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", - "requires": { - "for-own": "^0.1.3", - "is-plain-object": "^2.0.1", - "kind-of": "^3.0.2", - "lazy-cache": "^1.0.3", - "shallow-clone": "^0.1.2" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", - "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.4" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "color-string": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", - "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "colorette": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", - "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "common-tags": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", - "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==" - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, - "compose-function": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", - "integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=", - "requires": { - "arity-n": "^1.0.4" - } - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "confusing-browser-globals": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", - "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==" - }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" - }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - }, - "core-js": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.0.tgz", - "integrity": "sha512-W2VYNB0nwQQE7tKS7HzXd7r2y/y2SVJl4ga6oH/dnaLFzM0o2lB2P3zCkWj5Wc/zyMYjtgd5Hmhk0ObkQFZOIA==" - }, - "core-js-compat": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.0.tgz", - "integrity": "sha512-o9QKelQSxQMYWHXc/Gc4L8bx/4F7TTraE5rhuN8I7mKBt5dBIUpXpIR3omv70ebr8ST5R3PqbDQr+ZI3+Tt1FQ==", - "requires": { - "browserslist": "^4.14.7", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" - } - } - }, - "core-js-pure": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.8.0.tgz", - "integrity": "sha512-fRjhg3NeouotRoIV0L1FdchA6CK7ZD+lyINyMoz19SyV+ROpC4noS1xItWHFtwZdlqfMfVPJEyEGdfri2bD1pA==" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "requires": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "css-blank-pseudo": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", - "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", - "requires": { - "postcss": "^7.0.5" - } - }, - "css-color-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", - "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" - }, - "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - } - }, - "css-has-pseudo": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", - "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", - "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^5.0.0-rc.4" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "css-loader": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz", - "integrity": "sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA==", - "requires": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.23", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.1.1", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.0.2", - "schema-utils": "^2.6.0" - }, - "dependencies": { - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - } - } - }, - "css-prefers-color-scheme": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", - "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", - "requires": { - "postcss": "^7.0.5" - } - }, - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" - }, - "css-to-react-native": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz", - "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==", - "requires": { - "camelize": "^1.0.0", - "css-color-keywords": "^1.0.0", - "postcss-value-parser": "^4.0.2" - } - }, - "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" - }, - "cssdb": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", - "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==" - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" - }, - "cssnano": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "cssnano-preset-default": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", - "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", - "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=" - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=" - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "requires": { - "css-tree": "^1.1.2" - }, - "dependencies": { - "css-tree": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", - "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" - }, - "cssstyle": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", - "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", - "requires": { - "cssom": "0.3.x" - } - }, - "csstype": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.5.tgz", - "integrity": "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ==", - "dev": true - }, - "cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "damerau-levenshtein": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", - "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==" - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } - } - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - }, - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, - "default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", - "requires": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "dependencies": { - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } - } - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=" - }, - "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==" - }, - "detect-port-alt": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", - "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", - "requires": { - "address": "^1.0.1", - "debug": "^2.6.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "diff-sequences": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", - "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==" - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" - } - } - }, - "dir-glob": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", - "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", - "requires": { - "arrify": "^1.0.1", - "path-type": "^3.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" - }, - "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "requires": { - "buffer-indexof": "^1.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-accessibility-api": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.3.0.tgz", - "integrity": "sha512-PzwHEmsRP3IGY4gv/Ug+rMeaTIyTJvadCb+ujYXYeIylbHJezIyNToe8KfEgHTCEYyC+/bUghYOGg8yMGlZ6vA==", - "dev": true - }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "requires": { - "utila": "~0.4" - } - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.2.tgz", - "integrity": "sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==" - } - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-case": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.3.tgz", - "integrity": "sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA==", - "requires": { - "no-case": "^3.0.3", - "tslib": "^1.10.0" - } - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "requires": { - "is-obj": "^2.0.0" - } - }, - "dotenv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", - "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" - }, - "duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "electron-to-chromium": { - "version": "1.3.610", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.610.tgz", - "integrity": "sha512-eFDC+yVQpEhtlapk4CYDPfV9ajF9cEof5TBcO49L1ETO+aYogrKWDmYpZyxBScMNe8Bo/gJamH4amQ4yyvXg4g==" - }, - "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" - } - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", - "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.18.0-next.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", - "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.0", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true - } - } - }, - "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "requires": { - "type-fest": "^0.8.1" - } - }, - "import-fresh": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", - "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - } - } - }, - "eslint-config-react-app": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz", - "integrity": "sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==", - "requires": { - "confusing-browser-globals": "^1.0.9" - } - }, - "eslint-import-resolver-node": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", - "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", - "requires": { - "debug": "^2.6.9", - "resolve": "^1.13.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "eslint-loader": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.3.tgz", - "integrity": "sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw==", - "requires": { - "fs-extra": "^8.1.0", - "loader-fs-cache": "^1.0.2", - "loader-utils": "^1.2.3", - "object-hash": "^2.0.1", - "schema-utils": "^2.6.1" - } - }, - "eslint-module-utils": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", - "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", - "requires": { - "debug": "^2.6.9", - "pkg-dir": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "requires": { - "find-up": "^2.1.0" - } - } - } - }, - "eslint-plugin-flowtype": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz", - "integrity": "sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ==", - "requires": { - "lodash": "^4.17.15" - } - }, - "eslint-plugin-import": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz", - "integrity": "sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw==", - "requires": { - "array-includes": "^3.0.3", - "array.prototype.flat": "^1.2.1", - "contains-path": "^0.1.0", - "debug": "^2.6.9", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.2", - "eslint-module-utils": "^2.4.1", - "has": "^1.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.0", - "read-pkg-up": "^2.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "requires": { - "pify": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - } - } - } - }, - "eslint-plugin-jsx-a11y": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz", - "integrity": "sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg==", - "requires": { - "@babel/runtime": "^7.4.5", - "aria-query": "^3.0.0", - "array-includes": "^3.0.3", - "ast-types-flow": "^0.0.7", - "axobject-query": "^2.0.2", - "damerau-levenshtein": "^1.0.4", - "emoji-regex": "^7.0.2", - "has": "^1.0.3", - "jsx-ast-utils": "^2.2.1" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - } - } - }, - "eslint-plugin-react": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz", - "integrity": "sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ==", - "requires": { - "array-includes": "^3.1.1", - "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.2.3", - "object.entries": "^1.1.1", - "object.fromentries": "^2.0.2", - "object.values": "^1.1.1", - "prop-types": "^15.7.2", - "resolve": "^1.15.1", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.2", - "xregexp": "^4.3.0" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "requires": { - "esutils": "^2.0.2" - } - }, - "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", - "requires": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" - } - } - } - }, - "eslint-plugin-react-hooks": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", - "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==" - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - }, - "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "events": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==" - }, - "eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", - "requires": { - "original": "^1.0.0" - } - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "exec-sh": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", - "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==" - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "expect": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", - "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", - "requires": { - "@jest/types": "^24.9.0", - "ansi-styles": "^3.2.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.9.0" - } - }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - } - } - }, - "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "requires": { - "type": "^2.0.0" - }, - "dependencies": { - "type": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz", - "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "dependencies": { - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "requires": { - "bser": "2.1.1" - } - }, - "figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "requires": { - "flat-cache": "^2.0.1" - } - }, - "file-loader": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz", - "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==", - "requires": { - "loader-utils": "^1.2.3", - "schema-utils": "^2.5.0" - } - }, - "filesize": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", - "integrity": "sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg==" - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - } - }, - "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==" - }, - "flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", - "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==" - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "follow-redirects": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", - "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==" - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "requires": { - "for-in": "^1.0.1" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "fork-ts-checker-webpack-plugin": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz", - "integrity": "sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ==", - "requires": { - "babel-code-frame": "^6.22.0", - "chalk": "^2.4.1", - "chokidar": "^3.3.0", - "micromatch": "^3.1.10", - "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "requires": { - "minipass": "^3.0.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, - "get-intrinsic": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", - "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" - }, - "global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "requires": { - "global-prefix": "^3.0.0" - } - }, - "global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - }, - "globby": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", - "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", - "requires": { - "array-union": "^1.0.1", - "dir-glob": "2.0.0", - "fast-glob": "^2.0.2", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - }, - "dependencies": { - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" - } - } - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" - }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" - }, - "gzip-size": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", - "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", - "requires": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - } - } - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "harmony-reflect": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", - "integrity": "sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - } - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" - }, - "history": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", - "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", - "requires": { - "@babel/runtime": "^7.1.2", - "loose-envify": "^1.2.0", - "resolve-pathname": "^3.0.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0", - "value-equal": "^1.0.1" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "requires": { - "react-is": "^16.7.0" - } - }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=" - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" - }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "html-entities": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", - "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==" - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" - }, - "html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", - "requires": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", - "he": "^1.2.0", - "param-case": "^3.0.3", - "relateurl": "^0.2.7", - "terser": "^4.6.3" - }, - "dependencies": { - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" - } - } - }, - "html-webpack-plugin": { - "version": "4.0.0-beta.11", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz", - "integrity": "sha512-4Xzepf0qWxf8CGg7/WQM5qBB2Lc/NFI7MhU59eUDTkuQp3skZczH4UA1d6oQyDEIoMDgERVhRyTdtUPZ5s5HBg==", - "requires": { - "html-minifier-terser": "^5.0.1", - "loader-utils": "^1.2.3", - "lodash": "^4.17.15", - "pretty-error": "^2.1.1", - "tapable": "^1.1.3", - "util.promisify": "1.0.0" - }, - "dependencies": { - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - } - } - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - } - } - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - } - } - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", - "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", - "requires": { - "postcss": "^7.0.14" - } - }, - "identity-obj-proxy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", - "requires": { - "harmony-reflect": "^1.4.6" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" - }, - "immer": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz", - "integrity": "sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg==" - }, - "import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", - "requires": { - "import-from": "^2.1.0" - } - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", - "requires": { - "resolve-from": "^3.0.0" - } - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - } - }, - "internal-slot": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", - "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", - "requires": { - "es-abstract": "^1.17.0-next.1", - "has": "^1.0.3", - "side-channel": "^1.0.2" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-callable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==" - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "requires": { - "ci-info": "^2.0.0" - } - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", - "requires": { - "has": "^1.0.3" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" - }, - "is-docker": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", - "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==" - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negative-zero": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", - "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=" - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "requires": { - "is-path-inside": "^2.1.0" - } - }, - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "requires": { - "path-is-inside": "^1.0.2" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", - "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" - }, - "is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" - }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "requires": { - "html-comment-regex": "^1.1.0" - } - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==" - }, - "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", - "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" - } - }, - "istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", - "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" - }, - "dependencies": { - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "istanbul-reports": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", - "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", - "requires": { - "html-escaper": "^2.0.0" - } - }, - "jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", - "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", - "requires": { - "import-local": "^2.0.0", - "jest-cli": "^24.9.0" - }, - "dependencies": { - "jest-cli": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", - "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", - "requires": { - "@jest/core": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "import-local": "^2.0.0", - "is-ci": "^2.0.0", - "jest-config": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "prompts": "^2.0.1", - "realpath-native": "^1.1.0", - "yargs": "^13.3.0" - } - } - } - }, - "jest-changed-files": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", - "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", - "requires": { - "@jest/types": "^24.9.0", - "execa": "^1.0.0", - "throat": "^4.0.0" - } - }, - "jest-config": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", - "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", - "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.9.0", - "@jest/types": "^24.9.0", - "babel-jest": "^24.9.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^24.9.0", - "jest-environment-node": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "micromatch": "^3.1.10", - "pretty-format": "^24.9.0", - "realpath-native": "^1.1.0" - } - }, - "jest-diff": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", - "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", - "requires": { - "chalk": "^2.0.1", - "diff-sequences": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - } - }, - "jest-docblock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", - "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", - "requires": { - "detect-newline": "^2.1.0" - } - }, - "jest-each": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", - "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", - "requires": { - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0" - } - }, - "jest-environment-jsdom": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", - "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", - "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0", - "jsdom": "^11.5.1" - } - }, - "jest-environment-jsdom-fourteen": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz", - "integrity": "sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q==", - "requires": { - "@jest/environment": "^24.3.0", - "@jest/fake-timers": "^24.3.0", - "@jest/types": "^24.3.0", - "jest-mock": "^24.0.0", - "jest-util": "^24.0.0", - "jsdom": "^14.1.0" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - }, - "jsdom": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", - "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", - "requires": { - "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.3", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.2", - "xml-name-validator": "^3.0.0" - } - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "requires": { - "async-limiter": "~1.0.0" - } - } - } - }, - "jest-environment-node": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", - "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", - "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0" - } - }, - "jest-get-type": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", - "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==" - }, - "jest-haste-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", - "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", - "requires": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" - }, - "dependencies": { - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true - } - } - }, - "jest-jasmine2": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", - "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^24.9.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0", - "throat": "^4.0.0" - } - }, - "jest-leak-detector": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", - "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", - "requires": { - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - } - }, - "jest-matcher-utils": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", - "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", - "requires": { - "chalk": "^2.0.1", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - } - }, - "jest-message-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", - "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/stack-utils": "^1.0.1", - "chalk": "^2.0.1", - "micromatch": "^3.1.10", - "slash": "^2.0.0", - "stack-utils": "^1.0.1" - } - }, - "jest-mock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", - "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", - "requires": { - "@jest/types": "^24.9.0" - } - }, - "jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==" - }, - "jest-regex-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", - "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==" - }, - "jest-resolve": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", - "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", - "requires": { - "@jest/types": "^24.9.0", - "browser-resolve": "^1.11.3", - "chalk": "^2.0.1", - "jest-pnp-resolver": "^1.2.1", - "realpath-native": "^1.1.0" - } - }, - "jest-resolve-dependencies": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", - "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", - "requires": { - "@jest/types": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-snapshot": "^24.9.0" - } - }, - "jest-runner": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", - "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", - "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.4.2", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-docblock": "^24.3.0", - "jest-haste-map": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-leak-detector": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "source-map-support": "^0.5.6", - "throat": "^4.0.0" - } - }, - "jest-runtime": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", - "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", - "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/source-map": "^24.3.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "strip-bom": "^3.0.0", - "yargs": "^13.3.0" - } - }, - "jest-serializer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", - "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==" - }, - "jest-snapshot": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", - "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", - "requires": { - "@babel/types": "^7.0.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "expect": "^24.9.0", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^24.9.0", - "semver": "^6.2.0" - } - }, - "jest-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", - "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", - "requires": { - "@jest/console": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/source-map": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "callsites": "^3.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", - "mkdirp": "^0.5.1", - "slash": "^2.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "jest-validate": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", - "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", - "requires": { - "@jest/types": "^24.9.0", - "camelcase": "^5.3.1", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "leven": "^3.1.0", - "pretty-format": "^24.9.0" - } - }, - "jest-watch-typeahead": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz", - "integrity": "sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q==", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^2.4.1", - "jest-regex-util": "^24.9.0", - "jest-watcher": "^24.3.0", - "slash": "^3.0.0", - "string-length": "^3.1.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - }, - "string-length": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", - "integrity": "sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==", - "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^5.2.0" - } - } - } - }, - "jest-watcher": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", - "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", - "requires": { - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "jest-util": "^24.9.0", - "string-length": "^2.0.0" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" - } - } - }, - "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" - }, - "dependencies": { - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", - "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", - "requires": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "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.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==" - } - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "requires": { - "jsonify": "~0.0.0" - } - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "json3": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", - "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==" - }, - "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "requires": { - "minimist": "^1.2.5" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "jsx-ast-utils": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", - "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", - "requires": { - "array-includes": "^3.1.1", - "object.assign": "^4.1.0" - } - }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" - }, - "last-call-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", - "requires": { - "lodash": "^4.17.5", - "webpack-sources": "^1.1.0" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" - }, - "left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==" - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "requires": { - "leven": "^3.1.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "loader-fs-cache": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", - "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", - "requires": { - "find-cache-dir": "^0.1.1", - "mkdirp": "^0.5.1" - }, - "dependencies": { - "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "requires": { - "find-up": "^1.0.0" - } - } - } - }, - "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - } - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" - }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "requires": { - "lodash._reinterpolate": "^3.0.0" - } - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" - }, - "loglevel": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", - "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==" - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lower-case": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", - "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", - "requires": { - "tslib": "^1.10.0" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "requires": { - "yallist": "^3.0.2" - }, - "dependencies": { - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - } - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "requires": { - "tmpl": "1.0.x" - } - }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==" - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "merge-deep": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", - "integrity": "sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA==", - "requires": { - "arr-union": "^3.1.0", - "clone-deep": "^0.2.4", - "kind-of": "^3.0.2" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "microevent.ts": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", - "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==" - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" - } - } - }, - "mime": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", - "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==" - }, - "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" - }, - "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "requires": { - "mime-db": "1.44.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "mini-create-react-context": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", - "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", - "requires": { - "@babel/runtime": "^7.12.1", - "tiny-warning": "^1.0.3" - } - }, - "mini-css-extract-plugin": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", - "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", - "requires": { - "loader-utils": "^1.1.0", - "normalize-url": "1.9.1", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "requires": { - "minipass": "^3.0.0" - } - }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mixin-object": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", - "requires": { - "for-in": "^0.1.3", - "is-extendable": "^0.1.1" - }, - "dependencies": { - "for-in": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=" - } - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "no-case": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", - "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", - "requires": { - "lower-case": "^2.0.1", - "tslib": "^1.10.0" - } - }, - "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" - }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - } - } - } - } - }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=" - }, - "node-notifier": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", - "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", - "requires": { - "growly": "^1.3.0", - "is-wsl": "^1.1.0", - "semver": "^5.5.0", - "shellwords": "^0.1.1", - "which": "^1.3.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "node-releases": { - "version": "1.1.67", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.67.tgz", - "integrity": "sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==" - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" - }, - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "^2.0.0" - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "requires": { - "boolbase": "~1.0.0" - } - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" - }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "object-hash": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.0.3.tgz", - "integrity": "sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg==" - }, - "object-inspect": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==" - }, - "object-is": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz", - "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object-path": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", - "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=" - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.entries": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", - "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "has": "^1.0.3" - } - }, - "object.fromentries": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.3.tgz", - "integrity": "sha512-IDUSMXs6LOSJBWE++L0lzIbSqHl9KDCfff2x/JSEIDtEUavUnyMYC2ZGay/04Zq4UT8lvd4xNhU4/YHKibAOlw==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "has": "^1.0.3" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz", - "integrity": "sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz", - "integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "has": "^1.0.3" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/open/-/open-7.3.0.tgz", - "integrity": "sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw==", - "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "dependencies": { - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "requires": { - "is-docker": "^2.0.0" - } - } - } - }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "requires": { - "is-wsl": "^1.1.0" - } - }, - "optimize-css-assets-webpack-plugin": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz", - "integrity": "sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA==", - "requires": { - "cssnano": "^4.1.10", - "last-call-webpack-plugin": "^3.0.0" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "requires": { - "url-parse": "^1.4.3" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "p-each-series": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", - "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", - "requires": { - "p-reduce": "^1.0.0" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=" - }, - "p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "requires": { - "retry": "^0.12.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "param-case": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.3.tgz", - "integrity": "sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==", - "requires": { - "dot-case": "^3.0.3", - "tslib": "^1.10.0" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "requires": { - "callsites": "^3.0.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - } - } - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==" - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "pascal-case": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.1.tgz", - "integrity": "sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA==", - "requires": { - "no-case": "^3.0.3", - "tslib": "^1.10.0" - } - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "requires": { - "isarray": "0.0.1" - } - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "requires": { - "pify": "^3.0.0" - } - }, - "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "^2.0.0" - } - }, - "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "requires": { - "node-modules-regexp": "^1.0.0" - } - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "requires": { - "find-up": "^3.0.0" - } - }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "requires": { - "find-up": "^3.0.0" - } - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" - }, - "pnp-webpack-plugin": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", - "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", - "requires": { - "ts-pnp": "^1.1.6" - } - }, - "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" - }, - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-attribute-case-insensitive": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", - "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", - "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^6.0.2" - } - }, - "postcss-browser-comments": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz", - "integrity": "sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig==", - "requires": { - "postcss": "^7" - } - }, - "postcss-calc": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", - "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", - "requires": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "postcss-color-functional-notation": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", - "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", - "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-color-gray": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", - "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", - "requires": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.5", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-color-hex-alpha": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", - "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", - "requires": { - "postcss": "^7.0.14", - "postcss-values-parser": "^2.0.1" - } - }, - "postcss-color-mod-function": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", - "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", - "requires": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-color-rebeccapurple": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", - "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", - "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-custom-media": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", - "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", - "requires": { - "postcss": "^7.0.14" - } - }, - "postcss-custom-properties": { - "version": "8.0.11", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", - "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", - "requires": { - "postcss": "^7.0.17", - "postcss-values-parser": "^2.0.1" - } - }, - "postcss-custom-selectors": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", - "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", - "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-dir-pseudo-class": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", - "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", - "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-double-position-gradients": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", - "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", - "requires": { - "postcss": "^7.0.5", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-env-function": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", - "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", - "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-flexbugs-fixes": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz", - "integrity": "sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-focus-visible": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", - "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-focus-within": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", - "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-font-variant": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz", - "integrity": "sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-gap-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", - "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-image-set-function": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", - "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", - "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-initial": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", - "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", - "requires": { - "lodash.template": "^4.5.0", - "postcss": "^7.0.2" - } - }, - "postcss-lab-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", - "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", - "requires": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-load-config": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", - "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", - "requires": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" - } - }, - "postcss-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", - "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", - "requires": { - "loader-utils": "^1.1.0", - "postcss": "^7.0.0", - "postcss-load-config": "^2.0.0", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "postcss-logical": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", - "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-media-minmax": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", - "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", - "requires": { - "postcss": "^7.0.5" - } - }, - "postcss-modules-local-by-default": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", - "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", - "requires": { - "icss-utils": "^4.1.1", - "postcss": "^7.0.32", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", - "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", - "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" - } - }, - "postcss-modules-values": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", - "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", - "requires": { - "icss-utils": "^4.0.0", - "postcss": "^7.0.6" - } - }, - "postcss-nesting": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", - "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-normalize": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-8.0.1.tgz", - "integrity": "sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ==", - "requires": { - "@csstools/normalize.css": "^10.1.0", - "browserslist": "^4.6.2", - "postcss": "^7.0.17", - "postcss-browser-comments": "^3.0.0", - "sanitize.css": "^10.0.0" - } - }, - "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-overflow-shorthand": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", - "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-page-break": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", - "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-place": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", - "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", - "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-preset-env": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", - "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", - "requires": { - "autoprefixer": "^9.6.1", - "browserslist": "^4.6.4", - "caniuse-lite": "^1.0.30000981", - "css-blank-pseudo": "^0.1.4", - "css-has-pseudo": "^0.10.0", - "css-prefers-color-scheme": "^3.1.1", - "cssdb": "^4.4.0", - "postcss": "^7.0.17", - "postcss-attribute-case-insensitive": "^4.0.1", - "postcss-color-functional-notation": "^2.0.1", - "postcss-color-gray": "^5.0.0", - "postcss-color-hex-alpha": "^5.0.3", - "postcss-color-mod-function": "^3.0.3", - "postcss-color-rebeccapurple": "^4.0.1", - "postcss-custom-media": "^7.0.8", - "postcss-custom-properties": "^8.0.11", - "postcss-custom-selectors": "^5.1.2", - "postcss-dir-pseudo-class": "^5.0.0", - "postcss-double-position-gradients": "^1.0.0", - "postcss-env-function": "^2.0.2", - "postcss-focus-visible": "^4.0.0", - "postcss-focus-within": "^3.0.0", - "postcss-font-variant": "^4.0.0", - "postcss-gap-properties": "^2.0.0", - "postcss-image-set-function": "^3.0.1", - "postcss-initial": "^3.0.0", - "postcss-lab-function": "^2.0.1", - "postcss-logical": "^3.0.0", - "postcss-media-minmax": "^4.0.0", - "postcss-nesting": "^7.0.0", - "postcss-overflow-shorthand": "^2.0.0", - "postcss-page-break": "^2.0.0", - "postcss-place": "^4.0.1", - "postcss-pseudo-class-any-link": "^6.0.0", - "postcss-replace-overflow-wrap": "^3.0.0", - "postcss-selector-matches": "^4.0.0", - "postcss-selector-not": "^4.0.0" - } - }, - "postcss-pseudo-class-any-link": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", - "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", - "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-replace-overflow-wrap": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", - "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-safe-parser": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz", - "integrity": "sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-selector-matches": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", - "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", - "requires": { - "balanced-match": "^1.0.0", - "postcss": "^7.0.2" - } - }, - "postcss-selector-not": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz", - "integrity": "sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==", - "requires": { - "balanced-match": "^1.0.0", - "postcss": "^7.0.2" - } - }, - "postcss-selector-parser": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", - "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", - "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1", - "util-deprecate": "^1.0.2" - } - }, - "postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", - "requires": { - "is-svg": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" - }, - "postcss-values-parser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", - "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", - "requires": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" - }, - "pretty-bytes": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.4.1.tgz", - "integrity": "sha512-s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9LxA==" - }, - "pretty-error": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", - "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", - "requires": { - "lodash": "^4.17.20", - "renderkid": "^2.0.4" - } - }, - "pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", - "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - } - } - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - }, - "promise": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", - "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", - "requires": { - "asap": "~2.0.6" - } - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" - }, - "prompts": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", - "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.1" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" - } - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - }, - "raf": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", - "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", - "requires": { - "performance-now": "^2.1.0" - } - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - } - } - }, - "react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - } - }, - "react-app-polyfill": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz", - "integrity": "sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g==", - "requires": { - "core-js": "^3.5.0", - "object-assign": "^4.1.1", - "promise": "^8.0.3", - "raf": "^3.4.1", - "regenerator-runtime": "^0.13.3", - "whatwg-fetch": "^3.0.0" - } - }, - "react-dev-utils": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.2.1.tgz", - "integrity": "sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ==", - "requires": { - "@babel/code-frame": "7.8.3", - "address": "1.1.2", - "browserslist": "4.10.0", - "chalk": "2.4.2", - "cross-spawn": "7.0.1", - "detect-port-alt": "1.1.6", - "escape-string-regexp": "2.0.0", - "filesize": "6.0.1", - "find-up": "4.1.0", - "fork-ts-checker-webpack-plugin": "3.1.1", - "global-modules": "2.0.0", - "globby": "8.0.2", - "gzip-size": "5.1.1", - "immer": "1.10.0", - "inquirer": "7.0.4", - "is-root": "2.1.0", - "loader-utils": "1.2.3", - "open": "^7.0.2", - "pkg-up": "3.1.0", - "react-error-overlay": "^6.0.7", - "recursive-readdir": "2.2.2", - "shell-quote": "1.7.2", - "strip-ansi": "6.0.0", - "text-table": "0.2.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - }, - "browserslist": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.10.0.tgz", - "integrity": "sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA==", - "requires": { - "caniuse-lite": "^1.0.30001035", - "electron-to-chromium": "^1.3.378", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" - } - }, - "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" - }, - "cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" - }, - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "inquirer": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", - "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^2.4.2", - "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.15", - "mute-stream": "0.0.8", - "run-async": "^2.2.0", - "rxjs": "^6.5.3", - "string-width": "^4.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "dependencies": { - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - } - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - } - }, - "react-error-overlay": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.8.tgz", - "integrity": "sha512-HvPuUQnLp5H7TouGq3kzBeioJmXms1wHy9EGjz2OURWBp4qZO6AfGEcnxts1D/CbwPLRAgTMPCEgYhA3sEM4vw==" - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "react-router": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", - "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", - "requires": { - "@babel/runtime": "^7.1.2", - "history": "^4.9.0", - "hoist-non-react-statics": "^3.1.0", - "loose-envify": "^1.3.1", - "mini-create-react-context": "^0.4.0", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.2", - "react-is": "^16.6.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - } - }, - "react-router-dom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", - "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", - "requires": { - "@babel/runtime": "^7.1.2", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-router": "5.2.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - } - }, - "react-scripts": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-3.4.3.tgz", - "integrity": "sha512-oSnoWmii/iKdeQiwaO6map1lUaZLmG0xIUyb/HwCVFLT7gNbj8JZ9RmpvMCZ4fB98ZUMRfNmp/ft8uy/xD1RLA==", - "requires": { - "@babel/core": "7.9.0", - "@svgr/webpack": "4.3.3", - "@typescript-eslint/eslint-plugin": "^2.10.0", - "@typescript-eslint/parser": "^2.10.0", - "babel-eslint": "10.1.0", - "babel-jest": "^24.9.0", - "babel-loader": "8.1.0", - "babel-plugin-named-asset-import": "^0.3.6", - "babel-preset-react-app": "^9.1.2", - "camelcase": "^5.3.1", - "case-sensitive-paths-webpack-plugin": "2.3.0", - "css-loader": "3.4.2", - "dotenv": "8.2.0", - "dotenv-expand": "5.1.0", - "eslint": "^6.6.0", - "eslint-config-react-app": "^5.2.1", - "eslint-loader": "3.0.3", - "eslint-plugin-flowtype": "4.6.0", - "eslint-plugin-import": "2.20.1", - "eslint-plugin-jsx-a11y": "6.2.3", - "eslint-plugin-react": "7.19.0", - "eslint-plugin-react-hooks": "^1.6.1", - "file-loader": "4.3.0", - "fs-extra": "^8.1.0", - "fsevents": "2.1.2", - "html-webpack-plugin": "4.0.0-beta.11", - "identity-obj-proxy": "3.0.0", - "jest": "24.9.0", - "jest-environment-jsdom-fourteen": "1.0.1", - "jest-resolve": "24.9.0", - "jest-watch-typeahead": "0.4.2", - "mini-css-extract-plugin": "0.9.0", - "optimize-css-assets-webpack-plugin": "5.0.3", - "pnp-webpack-plugin": "1.6.4", - "postcss-flexbugs-fixes": "4.1.0", - "postcss-loader": "3.0.0", - "postcss-normalize": "8.0.1", - "postcss-preset-env": "6.7.0", - "postcss-safe-parser": "4.0.1", - "react-app-polyfill": "^1.0.6", - "react-dev-utils": "^10.2.1", - "resolve": "1.15.0", - "resolve-url-loader": "3.1.1", - "sass-loader": "8.0.2", - "semver": "6.3.0", - "style-loader": "0.23.1", - "terser-webpack-plugin": "2.3.8", - "ts-pnp": "1.1.6", - "url-loader": "2.3.0", - "webpack": "4.42.0", - "webpack-dev-server": "3.11.0", - "webpack-manifest-plugin": "2.2.0", - "workbox-webpack-plugin": "4.3.1" - } - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", - "requires": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "requires": { - "picomatch": "^2.2.1" - } - }, - "realpath-native": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", - "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", - "requires": { - "util.promisify": "^1.0.0" - } - }, - "recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", - "requires": { - "minimatch": "3.0.4" - } - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - }, - "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", - "requires": { - "regenerate": "^1.4.0" - } - }, - "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" - }, - "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regex-parser": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.10.tgz", - "integrity": "sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA==" - }, - "regexp.prototype.flags": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", - "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, - "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==" - }, - "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" - } - }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" - }, - "regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" - } - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" - }, - "renderkid": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.4.tgz", - "integrity": "sha512-K2eXrSOJdq+HuKzlcjOlGoOarUu5SDguDEhE7+Ah4zuOWL40j8A/oHvLlLob9PSTNvVnBd+/q0Er1QfpEuem5g==", - "requires": { - "css-select": "^1.1.0", - "dom-converter": "^0.2", - "htmlparser2": "^3.3.0", - "lodash": "^4.17.20", - "strip-ansi": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "requires": { - "lodash": "^4.17.19" - } - }, - "request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" - }, - "resolve": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", - "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" - }, - "resolve-pathname": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", - "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - }, - "resolve-url-loader": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz", - "integrity": "sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ==", - "requires": { - "adjust-sourcemap-loader": "2.0.0", - "camelcase": "5.3.1", - "compose-function": "3.0.3", - "convert-source-map": "1.7.0", - "es6-iterator": "2.0.3", - "loader-utils": "1.2.3", - "postcss": "7.0.21", - "rework": "1.0.1", - "rework-visit": "1.0.0", - "source-map": "0.6.1" - }, - "dependencies": { - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - } - }, - "postcss": { - "version": "7.0.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", - "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" - }, - "rework": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", - "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", - "requires": { - "convert-source-map": "^0.3.3", - "css": "^2.0.0" - }, - "dependencies": { - "convert-source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", - "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=" - } - } - }, - "rework-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", - "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=" - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=" - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=" - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "rsvp": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==" - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "requires": { - "aproba": "^1.1.1" - } - }, - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sane": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", - "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", - "requires": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" - } - }, - "sanitize.css": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-10.0.0.tgz", - "integrity": "sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg==" - }, - "sass-loader": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", - "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", - "requires": { - "clone-deep": "^4.0.1", - "loader-utils": "^1.2.3", - "neo-async": "^2.6.1", - "schema-utils": "^2.6.1", - "semver": "^6.3.0" - }, - "dependencies": { - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "requires": { - "kind-of": "^6.0.2" - } - } - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", - "requires": { - "xmlchars": "^2.1.1" - } - }, - "scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" - }, - "selfsigned": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", - "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", - "requires": { - "node-forge": "^0.10.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-clone": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", - "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", - "requires": { - "is-extendable": "^0.1.1", - "kind-of": "^2.0.1", - "lazy-cache": "^0.2.3", - "mixin-object": "^2.0.1" - }, - "dependencies": { - "kind-of": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", - "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", - "requires": { - "is-buffer": "^1.0.2" - } - }, - "lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" - } - } - }, - "shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" - }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" - }, - "side-channel": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", - "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", - "requires": { - "es-abstract": "^1.18.0-next.0", - "object-inspect": "^1.8.0" - } - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - } - } - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "requires": { - "kind-of": "^3.2.0" - } - }, - "sockjs": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", - "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", - "requires": { - "faye-websocket": "^0.10.0", - "uuid": "^3.4.0", - "websocket-driver": "0.6.5" - } - }, - "sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", - "requires": { - "debug": "^3.2.5", - "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "requires": { - "websocket-driver": ">=0.5.1" - } - } - } - }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz", - "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==" - }, - "spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - } - }, - "spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "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" - } - }, - "ssri": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", - "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", - "requires": { - "figgy-pudding": "^3.5.1", - "minipass": "^3.1.1" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" - }, - "stack-utils": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.4.tgz", - "integrity": "sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w==", - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" - } - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" - }, - "string-length": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", - "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", - "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "string.prototype.matchall": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.3.tgz", - "integrity": "sha512-OBxYDA2ifZQ2e13cP82dWFMaCV9CGF8GzmN4fljBVw5O5wep0lu4gacm1OL6MjROoUnB8VbkWRThqkV2YFLNxw==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "has-symbols": "^1.0.1", - "internal-slot": "^1.0.2", - "regexp.prototype.flags": "^1.3.0", - "side-channel": "^1.0.3" - } - }, - "string.prototype.trimend": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", - "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", - "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, - "dependencies": { - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" - } - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - } - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - }, - "strip-comments": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", - "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==", - "requires": { - "babel-extract-comments": "^1.0.0", - "babel-plugin-transform-object-rest-spread": "^6.26.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - }, - "style-loader": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", - "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", - "requires": { - "loader-utils": "^1.1.0", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "styled-components": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.2.1.tgz", - "integrity": "sha512-sBdgLWrCFTKtmZm/9x7jkIabjFNVzCUeKfoQsM6R3saImkUnjx0QYdLwJHBjY9ifEcmjDamJDVfknWm1yxZPxQ==", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/traverse": "^7.4.5", - "@emotion/is-prop-valid": "^0.8.8", - "@emotion/stylis": "^0.8.4", - "@emotion/unitless": "^0.7.4", - "babel-plugin-styled-components": ">= 1", - "css-to-react-native": "^3.0.0", - "hoist-non-react-statics": "^3.0.0", - "shallowequal": "^1.1.0", - "supports-color": "^5.5.0" - } - }, - "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "svg-parser": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", - "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" - }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - } - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" - }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" - }, - "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "terser-webpack-plugin": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz", - "integrity": "sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w==", - "requires": { - "cacache": "^13.0.1", - "find-cache-dir": "^3.3.1", - "jest-worker": "^25.4.0", - "p-limit": "^2.3.0", - "schema-utils": "^2.6.6", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.6.12", - "webpack-sources": "^1.4.3" - }, - "dependencies": { - "find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "jest-worker": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", - "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "requires": { - "semver": "^6.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "requires": { - "find-up": "^4.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "test-exclude": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", - "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", - "requires": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" - }, - "throat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", - "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=" - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" - }, - "timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "requires": { - "setimmediate": "^1.0.4" - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" - }, - "tiny-invariant": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", - "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==" - }, - "tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "requires": { - "punycode": "^2.1.0" - } - }, - "ts-pnp": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.6.tgz", - "integrity": "sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ==" - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", - "requires": { - "tslib": "^1.8.1" - } - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "typescript": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", - "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==" - }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" - }, - "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" - }, - "uri-js": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", - "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - } - } - }, - "url-loader": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz", - "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==", - "requires": { - "loader-utils": "^1.2.3", - "mime": "^2.4.4", - "schema-utils": "^2.5.0" - } - }, - "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - }, - "v8-compile-cache": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", - "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==" - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "value-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", - "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" - }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "wait-for-expect": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.2.tgz", - "integrity": "sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==", - "dev": true - }, - "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", - "requires": { - "makeerror": "1.0.x" - } - }, - "watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", - "requires": { - "chokidar": "^3.4.1", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.1" - } - }, - "watchpack-chokidar2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", - "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", - "optional": true, - "requires": { - "chokidar": "^2.1.8" - }, - "dependencies": { - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "optional": true - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "optional": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "optional": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "optional": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "optional": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "optional": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "optional": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "optional": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - }, - "webpack": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.42.0.tgz", - "integrity": "sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/wasm-edit": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "acorn": "^6.2.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.6.0", - "webpack-sources": "^1.4.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - }, - "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", - "requires": { - "figgy-pudding": "^3.5.1" - } - }, - "terser-webpack-plugin": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", - "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", - "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - } - } - } - }, - "webpack-dev-middleware": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", - "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", - "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - } - }, - "webpack-dev-server": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", - "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", - "requires": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "0.3.20", - "sockjs-client": "1.4.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "requires": { - "async-limiter": "~1.0.0" - } - } - } - }, - "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - } - }, - "webpack-manifest-plugin": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz", - "integrity": "sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ==", - "requires": { - "fs-extra": "^7.0.0", - "lodash": ">=3.5 <5", - "object.entries": "^1.1.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } - } - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "websocket-driver": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", - "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", - "requires": { - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-fetch": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz", - "integrity": "sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A==" - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" - }, - "whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" - }, - "workbox-background-sync": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz", - "integrity": "sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-broadcast-update": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz", - "integrity": "sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-build": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-4.3.1.tgz", - "integrity": "sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw==", - "requires": { - "@babel/runtime": "^7.3.4", - "@hapi/joi": "^15.0.0", - "common-tags": "^1.8.0", - "fs-extra": "^4.0.2", - "glob": "^7.1.3", - "lodash.template": "^4.4.0", - "pretty-bytes": "^5.1.0", - "stringify-object": "^3.3.0", - "strip-comments": "^1.0.2", - "workbox-background-sync": "^4.3.1", - "workbox-broadcast-update": "^4.3.1", - "workbox-cacheable-response": "^4.3.1", - "workbox-core": "^4.3.1", - "workbox-expiration": "^4.3.1", - "workbox-google-analytics": "^4.3.1", - "workbox-navigation-preload": "^4.3.1", - "workbox-precaching": "^4.3.1", - "workbox-range-requests": "^4.3.1", - "workbox-routing": "^4.3.1", - "workbox-strategies": "^4.3.1", - "workbox-streams": "^4.3.1", - "workbox-sw": "^4.3.1", - "workbox-window": "^4.3.1" - }, - "dependencies": { - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } - } - }, - "workbox-cacheable-response": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz", - "integrity": "sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-core": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-4.3.1.tgz", - "integrity": "sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg==" - }, - "workbox-expiration": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-4.3.1.tgz", - "integrity": "sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-google-analytics": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz", - "integrity": "sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg==", - "requires": { - "workbox-background-sync": "^4.3.1", - "workbox-core": "^4.3.1", - "workbox-routing": "^4.3.1", - "workbox-strategies": "^4.3.1" - } - }, - "workbox-navigation-preload": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz", - "integrity": "sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-precaching": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-4.3.1.tgz", - "integrity": "sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-range-requests": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz", - "integrity": "sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-routing": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-4.3.1.tgz", - "integrity": "sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-strategies": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-4.3.1.tgz", - "integrity": "sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-streams": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-4.3.1.tgz", - "integrity": "sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-sw": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-4.3.1.tgz", - "integrity": "sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w==" - }, - "workbox-webpack-plugin": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz", - "integrity": "sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ==", - "requires": { - "@babel/runtime": "^7.0.0", - "json-stable-stringify": "^1.0.1", - "workbox-build": "^4.3.1" - } - }, - "workbox-window": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-4.3.1.tgz", - "integrity": "sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "requires": { - "errno": "~0.1.7" - } - }, - "worker-rpc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", - "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", - "requires": { - "microevent.ts": "~0.1.1" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "requires": { - "mkdirp": "^0.5.1" - } - }, - "write-file-atomic": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", - "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" - }, - "xregexp": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.4.0.tgz", - "integrity": "sha512-83y4aa8o8o4NZe+L+46wpa+F1cWR/wCGOWI3tzqUso0w3/KAvXy0+Di7Oe/cbNMixDR4Jmi7NEybWU6ps25Wkg==", - "requires": { - "@babel/runtime-corejs3": "^7.12.1" - } - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yaml": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==" - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } -} diff --git a/examples/react-typescript/yarn.lock b/examples/react-typescript/yarn.lock new file mode 100644 index 00000000..4e52950a --- /dev/null +++ b/examples/react-typescript/yarn.lock @@ -0,0 +1,11140 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@agile-ts/api@file:.yalc/@agile-ts/api": + version "0.0.7" + +"@agile-ts/core@file:.yalc/@agile-ts/core": + version "0.0.7" + +"@agile-ts/multieditor@file:.yalc/@agile-ts/multieditor": + version "0.0.7" + +"@agile-ts/react@file:.yalc/@agile-ts/react": + version "0.0.7" + +"@babel/code-frame@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11", "@babel/code-frame@^7.8.3": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/compat-data@^7.12.5", "@babel/compat-data@^7.12.7", "@babel/compat-data@^7.9.0": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41" + integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw== + +"@babel/core@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.1.0", "@babel/core@^7.4.5": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" + integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.10" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.5" + "@babel/parser" "^7.12.10" + "@babel/template" "^7.12.7" + "@babel/traverse" "^7.12.10" + "@babel/types" "^7.12.10" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.12.10", "@babel/generator@^7.12.11", "@babel/generator@^7.4.0", "@babel/generator@^7.9.0": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af" + integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA== + dependencies: + "@babel/types" "^7.12.11" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d" + integrity sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ== + dependencies: + "@babel/types" "^7.12.10" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" + integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-compilation-targets@^7.12.5", "@babel/helper-compilation-targets@^7.8.7": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz#cb470c76198db6a24e9dbc8987275631e5d29831" + integrity sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw== + dependencies: + "@babel/compat-data" "^7.12.5" + "@babel/helper-validator-option" "^7.12.1" + browserslist "^4.14.5" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" + integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.12.1" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.10.4" + +"@babel/helper-create-regexp-features-plugin@^7.12.1": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz#2084172e95443fa0a09214ba1bb328f9aea1278f" + integrity sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + regexpu-core "^4.7.1" + +"@babel/helper-define-map@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" + integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/types" "^7.10.5" + lodash "^4.17.19" + +"@babel/helper-explode-assignable-expression@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz#8006a466695c4ad86a2a5f2fb15b5f2c31ad5633" + integrity sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-function-name@^7.10.4", "@babel/helper-function-name@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42" + integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA== + dependencies: + "@babel/helper-get-function-arity" "^7.12.10" + "@babel/template" "^7.12.7" + "@babel/types" "^7.12.11" + +"@babel/helper-get-function-arity@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf" + integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag== + dependencies: + "@babel/types" "^7.12.10" + +"@babel/helper-hoist-variables@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" + integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-member-expression-to-functions@^7.12.1", "@babel/helper-member-expression-to-functions@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855" + integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw== + dependencies: + "@babel/types" "^7.12.7" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.5", "@babel/helper-module-imports@^7.8.3": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" + integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== + dependencies: + "@babel/types" "^7.12.5" + +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.9.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" + integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-simple-access" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/helper-validator-identifier" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + lodash "^4.17.19" + +"@babel/helper-optimise-call-expression@^7.10.4", "@babel/helper-optimise-call-expression@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d" + integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ== + dependencies: + "@babel/types" "^7.12.10" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + +"@babel/helper-remap-async-to-generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd" + integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-wrap-function" "^7.10.4" + "@babel/types" "^7.12.1" + +"@babel/helper-replace-supers@^7.12.1": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz#ea511658fc66c7908f923106dd88e08d1997d60d" + integrity sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.12.7" + "@babel/helper-optimise-call-expression" "^7.12.10" + "@babel/traverse" "^7.12.10" + "@babel/types" "^7.12.11" + +"@babel/helper-simple-access@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" + integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" + integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0", "@babel/helper-split-export-declaration@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a" + integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g== + dependencies: + "@babel/types" "^7.12.11" + +"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" + integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== + +"@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz#d66cb8b7a3e7fe4c6962b32020a131ecf0847f4f" + integrity sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw== + +"@babel/helper-wrap-function@^7.10.4": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9" + integrity sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helpers@^7.12.5", "@babel/helpers@^7.9.0": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" + integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.9.0": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79" + integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== + +"@babel/plugin-proposal-async-generator-functions@^7.12.1", "@babel/plugin-proposal-async-generator-functions@^7.8.3": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz#04b8f24fd4532008ab4e79f788468fd5a8476566" + integrity sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-class-properties@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" + integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-proposal-class-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" + integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-decorators@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz#2156860ab65c5abf068c3f67042184041066543e" + integrity sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-decorators" "^7.8.3" + +"@babel/plugin-proposal-dynamic-import@^7.12.1", "@babel/plugin-proposal-dynamic-import@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc" + integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-export-namespace-from@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4" + integrity sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.12.1", "@babel/plugin-proposal-json-strings@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c" + integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-logical-assignment-operators@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751" + integrity sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" + integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" + integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.12.7", "@babel/plugin-proposal-numeric-separator@^7.8.3": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz#8bf253de8139099fea193b297d23a9d406ef056b" + integrity sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.9.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" + integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.12.1" + +"@babel/plugin-proposal-optional-catch-binding@^7.12.1", "@babel/plugin-proposal-optional-catch-binding@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942" + integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" + integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.12.7", "@babel/plugin-proposal-optional-chaining@^7.9.0": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz#e02f0ea1b5dc59d401ec16fb824679f683d3303c" + integrity sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-private-methods@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389" + integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072" + integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" + integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-decorators@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.1.tgz#81a8b535b284476c41be6de06853a8802b98c5dd" + integrity sha512-ir9YW5daRrTYiy9UJ2TzdNIJEZu8KclVzDcfSt4iEmOtwQ4llPtWInNKJyKnVXp1vE4bbVd5S31M/im3mYMO1w== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.1.tgz#a77670d9abe6d63e8acadf4c31bb1eb5a506bbdd" + integrity sha512-1lBLLmtxrwpm4VKmtVFselI/P3pX+G63fAtUUt6b2Nzgao77KNDwyuRt90Mj2/9pKobtt68FdvjfqohZjg/FCA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" + integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.12.1", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" + integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-typescript@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz#460ba9d77077653803c3dd2e673f76d66b4029e5" + integrity sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" + integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-async-to-generator@^7.12.1", "@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1" + integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" + +"@babel/plugin-transform-block-scoped-functions@^7.12.1", "@babel/plugin-transform-block-scoped-functions@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" + integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-block-scoping@^7.12.11", "@babel/plugin-transform-block-scoping@^7.8.3": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz#d93a567a152c22aea3b1929bb118d1d0a175cdca" + integrity sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.9.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" + integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-define-map" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.10.4" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.12.1", "@babel/plugin-transform-computed-properties@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" + integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" + integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975" + integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-duplicate-keys@^7.12.1", "@babel/plugin-transform-duplicate-keys@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228" + integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-exponentiation-operator@^7.12.1", "@babel/plugin-transform-exponentiation-operator@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0" + integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-flow-strip-types@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz#8a3538aa40434e000b8f44a3c5c9ac7229bd2392" + integrity sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-flow" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.9.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" + integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-function-name@^7.12.1", "@babel/plugin-transform-function-name@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" + integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-literals@^7.12.1", "@babel/plugin-transform-literals@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" + integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.12.1", "@babel/plugin-transform-member-expression-literals@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" + integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-modules-amd@^7.12.1", "@babel/plugin-transform-modules-amd@^7.9.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9" + integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ== + dependencies: + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.12.1", "@babel/plugin-transform-modules-commonjs@^7.9.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" + integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag== + dependencies: + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-simple-access" "^7.12.1" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.12.1", "@babel/plugin-transform-modules-systemjs@^7.9.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086" + integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q== + dependencies: + "@babel/helper-hoist-variables" "^7.10.4" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-identifier" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.12.1", "@babel/plugin-transform-modules-umd@^7.9.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902" + integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q== + dependencies: + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1", "@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753" + integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + +"@babel/plugin-transform-new-target@^7.12.1", "@babel/plugin-transform-new-target@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0" + integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-object-super@^7.12.1", "@babel/plugin-transform-object-super@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" + integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + +"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.8.7": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" + integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-property-literals@^7.12.1", "@babel/plugin-transform-property-literals@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" + integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-constant-elements@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.12.1.tgz#4471f0851feec3231cc9aaa0dccde39947c1ac1e" + integrity sha512-KOHd0tIRLoER+J+8f9DblZDa1fLGPwaaN1DI1TVHuQFOpjHV22C3CUB3obeC4fexHY9nx+fH0hQNvLFFfA1mxA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-display-name@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" + integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-react-display-name@^7.12.1", "@babel/plugin-transform-react-display-name@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz#1cbcd0c3b1d6648c55374a22fc9b6b7e5341c00d" + integrity sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-jsx-development@^7.12.7", "@babel/plugin-transform-react-jsx-development@^7.9.0": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.12.tgz#bccca33108fe99d95d7f9e82046bfe762e71f4e7" + integrity sha512-i1AxnKxHeMxUaWVXQOSIco4tvVvvCxMSfeBMnMM06mpaJt3g+MpxYQQrDfojUQldP1xxraPSJYSMEljoWM/dCg== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.12.12" + +"@babel/plugin-transform-react-jsx-self@^7.9.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz#ef43cbca2a14f1bd17807dbe4376ff89d714cf28" + integrity sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-jsx-source@^7.9.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz#d07de6863f468da0809edcf79a1aa8ce2a82a26b" + integrity sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-jsx@^7.12.10", "@babel/plugin-transform-react-jsx@^7.12.12", "@babel/plugin-transform-react-jsx@^7.9.1": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.12.tgz#b0da51ffe5f34b9a900e9f1f5fb814f9e512d25e" + integrity sha512-JDWGuzGNWscYcq8oJVCtSE61a5+XAOos+V0HrxnDieUus4UMnBEosDnY1VJqU5iZ4pA04QY7l0+JvHL1hZEfsw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.10" + "@babel/helper-module-imports" "^7.12.5" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.12.1" + "@babel/types" "^7.12.12" + +"@babel/plugin-transform-react-pure-annotations@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz#05d46f0ab4d1339ac59adf20a1462c91b37a1a42" + integrity sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-regenerator@^7.12.1", "@babel/plugin-transform-regenerator@^7.8.7": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753" + integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.12.1", "@babel/plugin-transform-reserved-words@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8" + integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-runtime@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz#45468c0ae74cc13204e1d3b1f4ce6ee83258af0b" + integrity sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" + integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" + integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + +"@babel/plugin-transform-sticky-regex@^7.12.7", "@babel/plugin-transform-sticky-regex@^7.8.3": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz#560224613ab23987453948ed21d0b0b193fa7fad" + integrity sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" + integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-typeof-symbol@^7.12.10", "@babel/plugin-transform-typeof-symbol@^7.8.4": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz#de01c4c8f96580bd00f183072b0d0ecdcf0dec4b" + integrity sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-typescript@^7.9.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz#d92cc0af504d510e26a754a7dbc2e5c8cd9c7ab4" + integrity sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-typescript" "^7.12.1" + +"@babel/plugin-transform-unicode-escapes@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709" + integrity sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-regex@^7.12.1", "@babel/plugin-transform-unicode-regex@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb" + integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/preset-env@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" + integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== + dependencies: + "@babel/compat-data" "^7.9.0" + "@babel/helper-compilation-targets" "^7.8.7" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.9.0" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.9.0" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.0" + "@babel/plugin-transform-modules-commonjs" "^7.9.0" + "@babel/plugin-transform-modules-systemjs" "^7.9.0" + "@babel/plugin-transform-modules-umd" "^7.9.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.8.7" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.9.0" + browserslist "^4.9.1" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-env@^7.4.5": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.11.tgz#55d5f7981487365c93dbbc84507b1c7215e857f9" + integrity sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw== + dependencies: + "@babel/compat-data" "^7.12.7" + "@babel/helper-compilation-targets" "^7.12.5" + "@babel/helper-module-imports" "^7.12.5" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-option" "^7.12.11" + "@babel/plugin-proposal-async-generator-functions" "^7.12.1" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-dynamic-import" "^7.12.1" + "@babel/plugin-proposal-export-namespace-from" "^7.12.1" + "@babel/plugin-proposal-json-strings" "^7.12.1" + "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-numeric-separator" "^7.12.7" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.7" + "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.12.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.12.1" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-async-to-generator" "^7.12.1" + "@babel/plugin-transform-block-scoped-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.11" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-computed-properties" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-dotall-regex" "^7.12.1" + "@babel/plugin-transform-duplicate-keys" "^7.12.1" + "@babel/plugin-transform-exponentiation-operator" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-function-name" "^7.12.1" + "@babel/plugin-transform-literals" "^7.12.1" + "@babel/plugin-transform-member-expression-literals" "^7.12.1" + "@babel/plugin-transform-modules-amd" "^7.12.1" + "@babel/plugin-transform-modules-commonjs" "^7.12.1" + "@babel/plugin-transform-modules-systemjs" "^7.12.1" + "@babel/plugin-transform-modules-umd" "^7.12.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" + "@babel/plugin-transform-new-target" "^7.12.1" + "@babel/plugin-transform-object-super" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-property-literals" "^7.12.1" + "@babel/plugin-transform-regenerator" "^7.12.1" + "@babel/plugin-transform-reserved-words" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/plugin-transform-sticky-regex" "^7.12.7" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/plugin-transform-typeof-symbol" "^7.12.10" + "@babel/plugin-transform-unicode-escapes" "^7.12.1" + "@babel/plugin-transform-unicode-regex" "^7.12.1" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.12.11" + core-js-compat "^3.8.0" + semver "^5.5.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" + integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@7.9.1": + version "7.9.1" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.9.1.tgz#b346403c36d58c3bb544148272a0cefd9c28677a" + integrity sha512-aJBYF23MPj0RNdp/4bHnAP0NVqqZRr9kl0NAOP4nJCex6OYVio59+dnQzsAWFuogdLyeaKA1hmfUIVZkY5J+TQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-react-display-name" "^7.8.3" + "@babel/plugin-transform-react-jsx" "^7.9.1" + "@babel/plugin-transform-react-jsx-development" "^7.9.0" + "@babel/plugin-transform-react-jsx-self" "^7.9.0" + "@babel/plugin-transform-react-jsx-source" "^7.9.0" + +"@babel/preset-react@^7.0.0": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.10.tgz#4fed65f296cbb0f5fb09de6be8cddc85cc909be9" + integrity sha512-vtQNjaHRl4DUpp+t+g4wvTHsLQuye+n0H/wsXIZRn69oz/fvNC7gQ4IK73zGJBaxvHoxElDvnYCthMcT7uzFoQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-react-display-name" "^7.12.1" + "@babel/plugin-transform-react-jsx" "^7.12.10" + "@babel/plugin-transform-react-jsx-development" "^7.12.7" + "@babel/plugin-transform-react-pure-annotations" "^7.12.1" + +"@babel/preset-typescript@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz#87705a72b1f0d59df21c179f7c3d2ef4b16ce192" + integrity sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-typescript" "^7.9.0" + +"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.12.1": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.12.5.tgz#ffee91da0eb4c6dae080774e94ba606368e414f4" + integrity sha512-roGr54CsTmNPPzZoCP1AmDXuBoNao7tnSA83TXTwt+UK5QVyh1DIJnrgYRPWKCF2flqZQXwa7Yr8v7VmLzF0YQ== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.0.tgz#337eda67401f5b066a6f205a3113d4ac18ba495b" + integrity sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" + integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.10.4", "@babel/template@^7.12.7", "@babel/template@^7.4.0", "@babel/template@^7.8.6": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" + integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.12.7" + "@babel/types" "^7.12.7" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.9.0": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376" + integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w== + dependencies: + "@babel/code-frame" "^7.12.11" + "@babel/generator" "^7.12.11" + "@babel/helper-function-name" "^7.12.11" + "@babel/helper-split-export-declaration" "^7.12.11" + "@babel/parser" "^7.12.11" + "@babel/types" "^7.12.12" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.9.0": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299" + integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + +"@csstools/normalize.css@^10.1.0": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" + integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== + +"@emotion/is-prop-valid@^0.8.8": + version "0.8.8" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" + integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== + dependencies: + "@emotion/memoize" "0.7.4" + +"@emotion/memoize@0.7.4": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" + integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== + +"@emotion/stylis@^0.8.4": + version "0.8.5" + resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== + +"@emotion/unitless@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + +"@hapi/address@2.x.x": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" + integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== + +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== + +"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" + integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== + +"@hapi/joi@^15.0.0": + version "15.1.1" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" + integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== + dependencies: + "@hapi/address" "2.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/hoek" "8.x.x" + "@hapi/topo" "3.x.x" + +"@hapi/topo@3.x.x": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" + integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== + dependencies: + "@hapi/hoek" "^8.3.0" + +"@jest/console@^24.7.1", "@jest/console@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== + dependencies: + "@jest/source-map" "^24.9.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/core@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" + integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== + dependencies: + "@jest/console" "^24.7.1" + "@jest/reporters" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-changed-files "^24.9.0" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-resolve-dependencies "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + jest-watcher "^24.9.0" + micromatch "^3.1.10" + p-each-series "^1.0.0" + realpath-native "^1.1.0" + rimraf "^2.5.4" + slash "^2.0.0" + strip-ansi "^5.0.0" + +"@jest/environment@^24.3.0", "@jest/environment@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" + integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== + dependencies: + "@jest/fake-timers" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + +"@jest/fake-timers@^24.3.0", "@jest/fake-timers@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== + dependencies: + "@jest/types" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + +"@jest/reporters@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" + integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + istanbul-lib-coverage "^2.0.2" + istanbul-lib-instrument "^3.0.1" + istanbul-lib-report "^2.0.4" + istanbul-lib-source-maps "^3.0.1" + istanbul-reports "^2.2.6" + jest-haste-map "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + node-notifier "^5.4.2" + slash "^2.0.0" + source-map "^0.6.0" + string-length "^2.0.0" + +"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/test-result@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== + dependencies: + "@jest/console" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/istanbul-lib-coverage" "^2.0.0" + +"@jest/test-sequencer@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" + integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== + dependencies: + "@jest/test-result" "^24.9.0" + jest-haste-map "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + +"@jest/transform@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" + integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^24.9.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.9.0" + jest-regex-util "^24.9.0" + jest-util "^24.9.0" + micromatch "^3.1.10" + pirates "^4.0.1" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" + +"@jest/types@^24.3.0", "@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^13.0.0" + +"@jest/types@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" + integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@sheerun/mutationobserver-shim@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz#5405ee8e444ed212db44e79351f0c70a582aae25" + integrity sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw== + +"@svgr/babel-plugin-add-jsx-attribute@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1" + integrity sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig== + +"@svgr/babel-plugin-remove-jsx-attribute@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz#297550b9a8c0c7337bea12bdfc8a80bb66f85abc" + integrity sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ== + +"@svgr/babel-plugin-remove-jsx-empty-expression@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz#c196302f3e68eab6a05e98af9ca8570bc13131c7" + integrity sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz#310ec0775de808a6a2e4fd4268c245fd734c1165" + integrity sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w== + +"@svgr/babel-plugin-svg-dynamic-title@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz#2cdedd747e5b1b29ed4c241e46256aac8110dd93" + integrity sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w== + +"@svgr/babel-plugin-svg-em-dimensions@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz#9a94791c9a288108d20a9d2cc64cac820f141391" + integrity sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w== + +"@svgr/babel-plugin-transform-react-native-svg@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz#151487322843359a1ca86b21a3815fd21a88b717" + integrity sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw== + +"@svgr/babel-plugin-transform-svg-component@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz#5f1e2f886b2c85c67e76da42f0f6be1b1767b697" + integrity sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw== + +"@svgr/babel-preset@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-4.3.3.tgz#a75d8c2f202ac0e5774e6bfc165d028b39a1316c" + integrity sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^4.2.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^4.2.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^4.2.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^4.2.0" + "@svgr/babel-plugin-svg-dynamic-title" "^4.3.3" + "@svgr/babel-plugin-svg-em-dimensions" "^4.2.0" + "@svgr/babel-plugin-transform-react-native-svg" "^4.2.0" + "@svgr/babel-plugin-transform-svg-component" "^4.2.0" + +"@svgr/core@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.3.3.tgz#b37b89d5b757dc66e8c74156d00c368338d24293" + integrity sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w== + dependencies: + "@svgr/plugin-jsx" "^4.3.3" + camelcase "^5.3.1" + cosmiconfig "^5.2.1" + +"@svgr/hast-util-to-babel-ast@^4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz#1d5a082f7b929ef8f1f578950238f630e14532b8" + integrity sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg== + dependencies: + "@babel/types" "^7.4.4" + +"@svgr/plugin-jsx@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz#e2ba913dbdfbe85252a34db101abc7ebd50992fa" + integrity sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w== + dependencies: + "@babel/core" "^7.4.5" + "@svgr/babel-preset" "^4.3.3" + "@svgr/hast-util-to-babel-ast" "^4.3.2" + svg-parser "^2.0.0" + +"@svgr/plugin-svgo@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz#daac0a3d872e3f55935c6588dd370336865e9e32" + integrity sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w== + dependencies: + cosmiconfig "^5.2.1" + merge-deep "^3.0.2" + svgo "^1.2.2" + +"@svgr/webpack@4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.3.3.tgz#13cc2423bf3dff2d494f16b17eb7eacb86895017" + integrity sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg== + dependencies: + "@babel/core" "^7.4.5" + "@babel/plugin-transform-react-constant-elements" "^7.0.0" + "@babel/preset-env" "^7.4.5" + "@babel/preset-react" "^7.0.0" + "@svgr/core" "^4.3.3" + "@svgr/plugin-jsx" "^4.3.3" + "@svgr/plugin-svgo" "^4.3.1" + loader-utils "^1.2.3" + +"@testing-library/dom@*": + version "7.29.1" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.29.1.tgz#a08ebeb26b2ea859b1621ff9642d114c1f04fe3a" + integrity sha512-6BU7vAjKuMspCy9QQEtbWgmkuXi/yOSZo3ANdvZmNQW8N/WQGjO9cvlcA5EFJaPtp2hL1RAaPGpCXxumijUxCg== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^4.2.0" + aria-query "^4.2.2" + chalk "^4.1.0" + dom-accessibility-api "^0.5.4" + lz-string "^1.4.4" + pretty-format "^26.6.2" + +"@testing-library/dom@^6.15.0": + version "6.16.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-6.16.0.tgz#04ada27ed74ad4c0f0d984a1245bb29b1fd90ba9" + integrity sha512-lBD88ssxqEfz0wFL6MeUyyWZfV/2cjEZZV3YRpb2IoJRej/4f1jB0TzqIOznTpfR1r34CNesrubxwIlAQ8zgPA== + dependencies: + "@babel/runtime" "^7.8.4" + "@sheerun/mutationobserver-shim" "^0.3.2" + "@types/testing-library__dom" "^6.12.1" + aria-query "^4.0.2" + dom-accessibility-api "^0.3.0" + pretty-format "^25.1.0" + wait-for-expect "^3.0.2" + +"@testing-library/react@^9.3.2": + version "9.5.0" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-9.5.0.tgz#71531655a7890b61e77a1b39452fbedf0472ca5e" + integrity sha512-di1b+D0p+rfeboHO5W7gTVeZDIK5+maEgstrZbWZSSvxDyfDRkkyBE1AJR5Psd6doNldluXlCWqXriUfqu/9Qg== + dependencies: + "@babel/runtime" "^7.8.4" + "@testing-library/dom" "^6.15.0" + "@types/testing-library__react" "^9.1.2" + +"@testing-library/user-event@^7.1.2": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-7.2.1.tgz#2ad4e844175a3738cb9e7064be5ea070b8863a1c" + integrity sha512-oZ0Ib5I4Z2pUEcoo95cT1cr6slco9WY7yiPpG+RGNkj8YcYgJnM7pXmYmorNOReh8MIGcKSqXyeGjxnr8YiZbA== + +"@types/aria-query@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.0.tgz#14264692a9d6e2fa4db3df5e56e94b5e25647ac0" + integrity sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A== + +"@types/babel__core@^7.1.0": + version "7.1.12" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" + integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.2.tgz#f3d71178e187858f7c45e30380f8f1b7415a12d8" + integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.0.tgz#0c888dd70b3ee9eebb6e4f200e809da0076262be" + integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.0.tgz#b9a1efa635201ba9bc850323a8793ee2d36c04a0" + integrity sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg== + dependencies: + "@babel/types" "^7.3.0" + +"@types/eslint-visitor-keys@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" + integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== + +"@types/glob@^7.1.1": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/history@*": + version "4.7.8" + resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.8.tgz#49348387983075705fe8f4e02fb67f7daaec4934" + integrity sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA== + +"@types/hoist-non-react-statics@*": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" + integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" + integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" + integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" + integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/node@*": + version "14.14.20" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.20.tgz#f7974863edd21d1f8a494a73e8e2b3658615c340" + integrity sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A== + +"@types/node@^12.0.0": + version "12.19.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.12.tgz#04793c2afa4ce833a9972e4c476432e30f9df47b" + integrity sha512-UwfL2uIU9arX/+/PRcIkT08/iBadGN2z6ExOROA2Dh5mAuWTBj6iJbQX4nekiV5H8cTrEG569LeX+HRco9Cbxw== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prop-types@*": + version "15.7.3" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" + integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== + +"@types/q@^1.5.1": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" + integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== + +"@types/react-dom@*": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.0.tgz#b3b691eb956c4b3401777ee67b900cb28415d95a" + integrity sha512-lUqY7OlkF/RbNtD5nIq7ot8NquXrdFrjSOR6+w9a9RFQevGi1oZO1dcJbXMeONAPKtZ2UrZOEJ5UOCVsxbLk/g== + dependencies: + "@types/react" "*" + +"@types/react-dom@^16.9.0": + version "16.9.10" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.10.tgz#4485b0bec3d41f856181b717f45fd7831101156f" + integrity sha512-ItatOrnXDMAYpv6G8UCk2VhbYVTjZT9aorLtA/OzDN9XJ2GKcfam68jutoAcILdRjsRUO8qb7AmyObF77Q8QFw== + dependencies: + "@types/react" "^16" + +"@types/react-router-dom@^5.1.5": + version "5.1.7" + resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.1.7.tgz#a126d9ea76079ffbbdb0d9225073eb5797ab7271" + integrity sha512-D5mHD6TbdV/DNHYsnwBTv+y73ei+mMjrkGrla86HthE4/PVvL1J94Bu3qABU+COXzpL23T1EZapVVpwHuBXiUg== + dependencies: + "@types/history" "*" + "@types/react" "*" + "@types/react-router" "*" + +"@types/react-router@*": + version "5.1.9" + resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.9.tgz#92a5558f22243d45f90e7699812c342bd98ba41e" + integrity sha512-US6C0rq2Wt/7uje1roqO0R++Sr0jqplKaBChDY5sNg5k7GC/79YFK0ZsLEdemqUjW05wq1Y/9YYEUgfNZ8TlvA== + dependencies: + "@types/history" "*" + "@types/react" "*" + +"@types/react@*": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.0.tgz#5af3eb7fad2807092f0046a1302b7823e27919b8" + integrity sha512-aj/L7RIMsRlWML3YB6KZiXB3fV2t41+5RBGYF8z+tAKU43Px8C3cYUZsDvf1/+Bm4FK21QWBrDutu8ZJ/70qOw== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@types/react@^16", "@types/react@^16.9.0": + version "16.14.2" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.2.tgz#85dcc0947d0645349923c04ccef6018a1ab7538c" + integrity sha512-BzzcAlyDxXl2nANlabtT4thtvbbnhee8hMmH/CcJrISDBVcJS1iOsP1f0OAgSdGE0MsY9tqcrb9YoZcOFv9dbQ== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + +"@types/styled-components@^5.1.3": + version "5.1.7" + resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.7.tgz#3cd10b088c1cb1acde2e4b166b3e8275a3083710" + integrity sha512-BJzPhFygYspyefAGFZTZ/8lCEY4Tk+Iqktvnko3xmJf9LrLqs3+grxPeU3O0zLl6yjbYBopD0/VikbHgXDbJtA== + dependencies: + "@types/hoist-non-react-statics" "*" + "@types/react" "*" + csstype "^3.0.2" + +"@types/testing-library__dom@*": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-7.5.0.tgz#e0a00dd766983b1d6e9d10d33e708005ce6ad13e" + integrity sha512-mj1aH4cj3XUpMEgVpognma5kHVtbm6U6cHZmEFzCRiXPvKkuHrFr3+yXdGLXvfFRBaQIVshPGHI+hGTOJlhS/g== + dependencies: + "@testing-library/dom" "*" + +"@types/testing-library__dom@^6.12.1": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-6.14.0.tgz#1aede831cb4ed4a398448df5a2c54b54a365644e" + integrity sha512-sMl7OSv0AvMOqn1UJ6j1unPMIHRXen0Ita1ujnMX912rrOcawe4f7wu0Zt9GIQhBhJvH2BaibqFgQ3lP+Pj2hA== + dependencies: + pretty-format "^24.3.0" + +"@types/testing-library__react@^9.1.2": + version "9.1.3" + resolved "https://registry.yarnpkg.com/@types/testing-library__react/-/testing-library__react-9.1.3.tgz#35eca61cc6ea923543796f16034882a1603d7302" + integrity sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w== + dependencies: + "@types/react-dom" "*" + "@types/testing-library__dom" "*" + pretty-format "^25.1.0" + +"@types/yargs-parser@*": + version "20.2.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" + integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== + +"@types/yargs@^13.0.0": + version "13.0.11" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.11.tgz#def2f0c93e4bdf2c61d7e34899b17e34be28d3b1" + integrity sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^15.0.0": + version "15.0.12" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.12.tgz#6234ce3e3e3fa32c5db301a170f96a599c960d74" + integrity sha512-f+fD/fQAo3BCbCDlrUpznF1A5Zp9rB0noS5vnoormHSIPFKL0Z2DcUJ3Gxp5ytH4uLRNxy7AwYUC9exZzqGMAw== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^2.10.0": + version "2.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9" + integrity sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ== + dependencies: + "@typescript-eslint/experimental-utils" "2.34.0" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@2.34.0": + version "2.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" + integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "2.34.0" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/parser@^2.10.0": + version "2.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.34.0.tgz#50252630ca319685420e9a39ca05fe185a256bc8" + integrity sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "2.34.0" + "@typescript-eslint/typescript-estree" "2.34.0" + eslint-visitor-keys "^1.1.0" + +"@typescript-eslint/typescript-estree@2.34.0": + version "2.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" + integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== + dependencies: + debug "^4.1.1" + eslint-visitor-keys "^1.1.0" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + +"@webassemblyjs/ast@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" + integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== + dependencies: + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + +"@webassemblyjs/floating-point-hex-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" + integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== + +"@webassemblyjs/helper-api-error@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" + integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== + +"@webassemblyjs/helper-buffer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" + integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== + +"@webassemblyjs/helper-code-frame@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" + integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== + dependencies: + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/helper-fsm@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" + integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== + +"@webassemblyjs/helper-module-context@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" + integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== + dependencies: + "@webassemblyjs/ast" "1.8.5" + mamacro "^0.0.3" + +"@webassemblyjs/helper-wasm-bytecode@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" + integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== + +"@webassemblyjs/helper-wasm-section@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" + integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + +"@webassemblyjs/ieee754@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" + integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" + integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" + integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== + +"@webassemblyjs/wasm-edit@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" + integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/helper-wasm-section" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-opt" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/wasm-gen@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" + integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wasm-opt@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" + integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + +"@webassemblyjs/wasm-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" + integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wast-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" + integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/floating-point-hex-parser" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-code-frame" "1.8.5" + "@webassemblyjs/helper-fsm" "1.8.5" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" + integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-globals@^4.1.0, acorn-globals@^4.3.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + +acorn-jsx@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + +acorn-walk@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== + +acorn@^5.5.3: + version "5.7.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== + +acorn@^6.0.1, acorn@^6.0.4, acorn@^6.2.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +address@1.1.2, address@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +adjust-sourcemap-loader@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz#6471143af75ec02334b219f54bc7970c52fb29a4" + integrity sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA== + dependencies: + assert "1.4.1" + camelcase "5.0.0" + loader-utils "1.2.3" + object-path "0.11.4" + regex-parser "2.2.10" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-escapes@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.0.0, ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +aria-query@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" + integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= + dependencies: + ast-types-flow "0.0.7" + commander "^2.11.0" + +aria-query@^4.0.2, aria-query@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" + integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== + dependencies: + "@babel/runtime" "^7.10.2" + "@babel/runtime-corejs3" "^7.10.2" + +arity-n@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" + integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-includes@^3.0.3, array-includes@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8" + integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + get-intrinsic "^1.0.1" + is-string "^1.0.5" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +array.prototype.flat@^1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" + integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= + dependencies: + util "0.10.3" + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types-flow@0.0.7, ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^9.6.1: + version "9.8.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" + integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== + dependencies: + browserslist "^4.12.0" + caniuse-lite "^1.0.30001109" + colorette "^1.2.1" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + +axobject-query@^2.0.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" + integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== + +babel-code-frame@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-eslint@10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + +babel-extract-comments@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" + integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== + dependencies: + babylon "^6.18.0" + +babel-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" + integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== + dependencies: + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.9.0" + chalk "^2.4.2" + slash "^2.0.0" + +babel-loader@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== + dependencies: + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" + pify "^4.0.1" + schema-utils "^2.6.5" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" + integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + find-up "^3.0.0" + istanbul-lib-instrument "^3.3.0" + test-exclude "^5.2.3" + +babel-plugin-jest-hoist@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" + integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== + dependencies: + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + +babel-plugin-named-asset-import@^0.3.6: + version "0.3.7" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz#156cd55d3f1228a5765774340937afc8398067dd" + integrity sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw== + +"babel-plugin-styled-components@>= 1": + version "1.12.0" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.12.0.tgz#1dec1676512177de6b827211e9eda5a30db4f9b9" + integrity sha512-FEiD7l5ZABdJPpLssKXjBUJMYqzbcNzBowfXDCdJhOpbhWiewapUaY+LZGT8R4Jg2TwOjGjG4RKeyrO5p9sBkA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-module-imports" "^7.0.0" + babel-plugin-syntax-jsx "^6.18.0" + lodash "^4.17.11" + +babel-plugin-syntax-jsx@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= + +babel-plugin-transform-object-rest-spread@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-react-remove-prop-types@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + +babel-preset-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" + integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== + dependencies: + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.9.0" + +babel-preset-react-app@^9.1.2: + version "9.1.2" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz#54775d976588a8a6d1a99201a702befecaf48030" + integrity sha512-k58RtQOKH21NyKtzptoAvtAODuAJJs3ZhqBMl456/GnXEQ/0La92pNmwgWoMn5pBTrsvk3YYXdY7zpY4e3UIxA== + dependencies: + "@babel/core" "7.9.0" + "@babel/plugin-proposal-class-properties" "7.8.3" + "@babel/plugin-proposal-decorators" "7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "7.8.3" + "@babel/plugin-proposal-numeric-separator" "7.8.3" + "@babel/plugin-proposal-optional-chaining" "7.9.0" + "@babel/plugin-transform-flow-strip-types" "7.9.0" + "@babel/plugin-transform-react-display-name" "7.8.3" + "@babel/plugin-transform-runtime" "7.9.0" + "@babel/preset-env" "7.9.0" + "@babel/preset-react" "7.9.1" + "@babel/preset-typescript" "7.9.0" + "@babel/runtime" "7.9.0" + babel-plugin-macros "2.8.0" + babel-plugin-transform-react-remove-prop-types "0.4.24" + +babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" + integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== + +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" + integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== + dependencies: + resolve "1.1.7" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@4.10.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" + integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== + dependencies: + caniuse-lite "^1.0.30001035" + electron-to-chromium "^1.3.378" + node-releases "^1.1.52" + pkg-up "^3.1.0" + +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.9.1: + version "4.16.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.1.tgz#bf757a2da376b3447b800a16f0f1c96358138766" + integrity sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA== + dependencies: + caniuse-lite "^1.0.30001173" + colorette "^1.2.1" + electron-to-chromium "^1.3.634" + escalade "^3.1.1" + node-releases "^1.1.69" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" + integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== + dependencies: + chownr "^1.1.2" + figgy-pudding "^3.5.1" + fs-minipass "^2.0.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + minipass "^3.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + p-map "^3.0.0" + promise-inflight "^1.0.1" + rimraf "^2.7.1" + ssri "^7.0.0" + unique-filename "^1.1.1" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-bind@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" + integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.0" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + +camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelize@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" + integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001173: + version "1.0.30001173" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001173.tgz#3c47bbe3cd6d7a9eda7f50ac016d158005569f56" + integrity sha512-R3aqmjrICdGCTAnSXtNyvWYMK3YtV5jwudbq0T7nN9k4kmE4CBuwPqyJ+KBzepSTh0huivV2gLbSMEzTTmfeYw== + +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + +case-sensitive-paths-webpack-plugin@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" + integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + 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" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.3.0, chokidar@^3.4.1: + version "3.4.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" + integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.1.2" + +chownr@^1.1.1, chownr@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-css@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +clone-deep@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" + integrity sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY= + dependencies: + for-own "^0.1.3" + is-plain-object "^2.0.1" + kind-of "^3.0.2" + lazy-cache "^1.0.3" + shallow-clone "^0.1.2" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6" + integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" + integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.4" + +colorette@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" + integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.11.0, commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +common-tags@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" + integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compose-function@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" + integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= + dependencies: + arity-n "^1.0.4" + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +confusing-browser-globals@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" + integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@1.7.0, convert-source-map@^1.4.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@^0.3.3: + version "0.3.5" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" + integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js-compat@^3.6.2, core-js-compat@^3.8.0: + version "3.8.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.2.tgz#3717f51f6c3d2ebba8cbf27619b57160029d1d4c" + integrity sha512-LO8uL9lOIyRRrQmZxHZFl1RV+ZbcsAkFWTktn5SmH40WgLtSNYN4m4W2v9ONT147PxBY/XrRhrWq8TlvObyUjQ== + dependencies: + browserslist "^4.16.0" + semver "7.0.0" + +core-js-pure@^3.0.0: + version "3.8.2" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.8.2.tgz#286f885c0dac1cdcd6d78397392abc25ddeca225" + integrity sha512-v6zfIQqL/pzTVAbZvYUozsxNfxcFb6Ks3ZfEbuneJl3FW9Jb8F6vLWB6f+qTmAu72msUdyb84V8d/yBFf7FNnw== + +core-js@^2.4.0: + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + +core-js@^3.5.0: + version "3.8.2" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.2.tgz#0a1fd6709246da9ca8eff5bb0cbd15fba9ac7044" + integrity sha512-FfApuSRgrR6G5s58casCBd9M2k+4ikuu4wbW6pJyYU7bd9zvFc9qf7vr5xmrZOhT9nn+8uwlH1oRR9jTnFoA3A== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + dependencies: + postcss "^7.0.5" + +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + +css-loader@3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" + integrity sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.23" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.1.1" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.0.2" + schema-utils "^2.6.0" + +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0, css-select@^2.0.2: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-to-react-native@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" + integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5" + integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +css@^2.0.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^1.0.0, cssstyle@^1.1.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" + integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== + dependencies: + cssom "0.3.x" + +csstype@^3.0.2: + version "3.0.5" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.5.tgz#7fdec6a28a67ae18647c51668a9ff95bb2fa7bb8" + integrity sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ== + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +damerau-levenshtein@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" + integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^1.0.0, data-urls@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.1.1, debug@^3.2.5: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +detect-port-alt@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +diff-sequences@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" + integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-accessibility-api@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.3.0.tgz#511e5993dd673b97c87ea47dba0e3892f7e0c983" + integrity sha512-PzwHEmsRP3IGY4gv/Ug+rMeaTIyTJvadCb+ujYXYeIylbHJezIyNToe8KfEgHTCEYyC+/bUghYOGg8yMGlZ6vA== + +dom-accessibility-api@^0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.4.tgz#b06d059cdd4a4ad9a79275f9d414a5c126241166" + integrity sha512-TvrjBckDy2c6v6RLxPv5QXOnU+SmF9nBII5621Ve5fu6Z/BDrENurBEvlC1f44lKEUVqOpK4w9E5Idc5/EgkLQ== + +dom-converter@^0.2: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" + integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== + +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@^1.5.1, domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +dotenv-expand@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + +duplexer@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.634: + version "1.3.634" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.634.tgz#82ea400f520f739c4f6ff00c1f7524827a917d25" + integrity sha512-QPrWNYeE/A0xRvl/QP3E0nkaEvYUvH3gM04ZWYtIa6QlSpEetRlRI1xvQ7hiMIySHHEV+mwDSX8Kj4YZY6ZQAw== + +elliptic@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" + integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^7.0.1, emoji-regex@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" + integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + +errno@^0.1.3, errno@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: + version "1.17.7" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" + integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-abstract@^1.18.0-next.1: + version "1.18.0-next.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" + integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-negative-zero "^2.0.0" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escodegen@^1.11.0, escodegen@^1.9.1: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-react-app@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz#698bf7aeee27f0cea0139eaef261c7bf7dd623df" + integrity sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ== + dependencies: + confusing-browser-globals "^1.0.9" + +eslint-import-resolver-node@^0.3.2: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-loader@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-3.0.3.tgz#e018e3d2722381d982b1201adb56819c73b480ca" + integrity sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw== + dependencies: + fs-extra "^8.1.0" + loader-fs-cache "^1.0.2" + loader-utils "^1.2.3" + object-hash "^2.0.1" + schema-utils "^2.6.1" + +eslint-module-utils@^2.4.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-flowtype@4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz#82b2bd6f21770e0e5deede0228e456cb35308451" + integrity sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ== + dependencies: + lodash "^4.17.15" + +eslint-plugin-import@2.20.1: + version "2.20.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" + integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== + dependencies: + array-includes "^3.0.3" + array.prototype.flat "^1.2.1" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.4.1" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.0" + read-pkg-up "^2.0.0" + resolve "^1.12.0" + +eslint-plugin-jsx-a11y@6.2.3: + version "6.2.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" + integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg== + dependencies: + "@babel/runtime" "^7.4.5" + aria-query "^3.0.0" + array-includes "^3.0.3" + ast-types-flow "^0.0.7" + axobject-query "^2.0.2" + damerau-levenshtein "^1.0.4" + emoji-regex "^7.0.2" + has "^1.0.3" + jsx-ast-utils "^2.2.1" + +eslint-plugin-react-hooks@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" + integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA== + +eslint-plugin-react@7.19.0: + version "7.19.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz#6d08f9673628aa69c5559d33489e855d83551666" + integrity sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ== + dependencies: + array-includes "^3.1.1" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.2.3" + object.entries "^1.1.1" + object.fromentries "^2.0.2" + object.values "^1.1.1" + prop-types "^15.7.2" + resolve "^1.15.1" + semver "^6.3.0" + string.prototype.matchall "^4.0.2" + xregexp "^4.3.0" + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-utils@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint@^6.6.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.14" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.3" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== + dependencies: + acorn "^7.1.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.1.0" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0, esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" + integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== + +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + dependencies: + original "^1.0.0" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exec-sh@^0.3.2: + version "0.3.4" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expect@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" + integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== + dependencies: + "@jest/types" "^24.9.0" + ansi-styles "^3.2.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.9.0" + +express@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^2.0.2: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.1: + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +file-loader@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" + integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== + dependencies: + loader-utils "^1.2.3" + schema-utils "^2.5.0" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filesize@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f" + integrity sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@4.1.0, find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7" + integrity sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg== + +for-in@^0.1.3: + version "0.1.8" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" + integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +for-own@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +fork-ts-checker-webpack-plugin@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" + integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== + dependencies: + babel-code-frame "^6.22.0" + chalk "^2.4.1" + chokidar "^3.3.0" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + worker-rpc "^0.1.0" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" + integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.0, get-intrinsic@^1.0.1, get-intrinsic@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49" + integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.0.0, glob-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globby@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" + integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== + dependencies: + array-union "^1.0.1" + dir-glob "2.0.0" + fast-glob "^2.0.2" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +gzip-size@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +harmony-reflect@^1.4.6: + version "1.6.1" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" + integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +history@^4.9.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" + integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== + dependencies: + "@babel/runtime" "^7.1.2" + loose-envify "^1.2.0" + resolve-pathname "^3.0.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^1.0.1" + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + +html-entities@^1.3.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +html-minifier-terser@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" + integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== + dependencies: + camel-case "^4.1.1" + clean-css "^4.2.3" + commander "^4.1.1" + he "^1.2.0" + param-case "^3.0.3" + relateurl "^0.2.7" + terser "^4.6.3" + +html-webpack-plugin@4.0.0-beta.11: + version "4.0.0-beta.11" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz#3059a69144b5aecef97708196ca32f9e68677715" + integrity sha512-4Xzepf0qWxf8CGg7/WQM5qBB2Lc/NFI7MhU59eUDTkuQp3skZczH4UA1d6oQyDEIoMDgERVhRyTdtUPZ5s5HBg== + dependencies: + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.15" + pretty-error "^2.1.1" + tapable "^1.1.3" + util.promisify "1.0.0" + +htmlparser2@^3.10.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-parser-js@>=0.5.1: + version "0.5.3" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" + integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== + +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.17.0: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +iconv-lite@0.4.24, iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +identity-obj-proxy@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= + dependencies: + harmony-reflect "^1.4.6" + +ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +immer@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" + integrity sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg== + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0, import-fresh@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inquirer@7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" + integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^2.4.2" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.2.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +inquirer@^7.0.0: + version "7.3.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" + integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.19" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.6.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +internal-slot@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" + integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== + dependencies: + es-abstract "^1.17.0-next.1" + has "^1.0.3" + side-channel "^1.0.2" + +invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" + integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== + dependencies: + call-bind "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^1.0.2, is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" + integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-core-module@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-docker@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" + integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-negative-zero@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.0.4, is-regex@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" + integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== + dependencies: + has-symbols "^1.0.1" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-root@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== + +istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" + integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== + dependencies: + "@babel/generator" "^7.4.0" + "@babel/parser" "^7.4.3" + "@babel/template" "^7.4.0" + "@babel/traverse" "^7.4.3" + "@babel/types" "^7.4.0" + istanbul-lib-coverage "^2.0.5" + semver "^6.0.0" + +istanbul-lib-report@^2.0.4: + version "2.0.8" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" + integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== + dependencies: + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + supports-color "^6.1.0" + +istanbul-lib-source-maps@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" + integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + rimraf "^2.6.3" + source-map "^0.6.1" + +istanbul-reports@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" + integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== + dependencies: + html-escaper "^2.0.0" + +jest-changed-files@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" + integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== + dependencies: + "@jest/types" "^24.9.0" + execa "^1.0.0" + throat "^4.0.0" + +jest-cli@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" + integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== + dependencies: + "@jest/core" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + import-local "^2.0.0" + is-ci "^2.0.0" + jest-config "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + prompts "^2.0.1" + realpath-native "^1.1.0" + yargs "^13.3.0" + +jest-config@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" + integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^24.9.0" + "@jest/types" "^24.9.0" + babel-jest "^24.9.0" + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^24.9.0" + jest-environment-node "^24.9.0" + jest-get-type "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + micromatch "^3.1.10" + pretty-format "^24.9.0" + realpath-native "^1.1.0" + +jest-diff@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" + integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== + dependencies: + chalk "^2.0.1" + diff-sequences "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-docblock@^24.3.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" + integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== + dependencies: + detect-newline "^2.1.0" + +jest-each@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" + integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== + dependencies: + "@jest/types" "^24.9.0" + chalk "^2.0.1" + jest-get-type "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + +jest-environment-jsdom-fourteen@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz#4cd0042f58b4ab666950d96532ecb2fc188f96fb" + integrity sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q== + dependencies: + "@jest/environment" "^24.3.0" + "@jest/fake-timers" "^24.3.0" + "@jest/types" "^24.3.0" + jest-mock "^24.0.0" + jest-util "^24.0.0" + jsdom "^14.1.0" + +jest-environment-jsdom@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" + integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + jsdom "^11.5.1" + +jest-environment-node@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" + integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + +jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== + +jest-haste-map@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== + dependencies: + "@jest/types" "^24.9.0" + anymatch "^2.0.0" + fb-watchman "^2.0.0" + graceful-fs "^4.1.15" + invariant "^2.2.4" + jest-serializer "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.9.0" + micromatch "^3.1.10" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" + +jest-jasmine2@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" + integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + co "^4.6.0" + expect "^24.9.0" + is-generator-fn "^2.0.0" + jest-each "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + throat "^4.0.0" + +jest-leak-detector@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" + integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== + dependencies: + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-matcher-utils@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" + integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== + dependencies: + chalk "^2.0.1" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/stack-utils" "^1.0.1" + chalk "^2.0.1" + micromatch "^3.1.10" + slash "^2.0.0" + stack-utils "^1.0.1" + +jest-mock@^24.0.0, jest-mock@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== + dependencies: + "@jest/types" "^24.9.0" + +jest-pnp-resolver@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== + +jest-resolve-dependencies@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" + integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== + dependencies: + "@jest/types" "^24.9.0" + jest-regex-util "^24.3.0" + jest-snapshot "^24.9.0" + +jest-resolve@24.9.0, jest-resolve@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" + integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== + dependencies: + "@jest/types" "^24.9.0" + browser-resolve "^1.11.3" + chalk "^2.0.1" + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" + +jest-runner@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" + integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.4.2" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-docblock "^24.3.0" + jest-haste-map "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-leak-detector "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + source-map-support "^0.5.6" + throat "^4.0.0" + +jest-runtime@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" + integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/source-map" "^24.3.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + realpath-native "^1.1.0" + slash "^2.0.0" + strip-bom "^3.0.0" + yargs "^13.3.0" + +jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== + +jest-snapshot@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" + integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + expect "^24.9.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^24.9.0" + semver "^6.2.0" + +jest-util@^24.0.0, jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== + dependencies: + "@jest/console" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/source-map" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + callsites "^3.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.15" + is-ci "^2.0.0" + mkdirp "^0.5.1" + slash "^2.0.0" + source-map "^0.6.0" + +jest-validate@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" + integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== + dependencies: + "@jest/types" "^24.9.0" + camelcase "^5.3.1" + chalk "^2.0.1" + jest-get-type "^24.9.0" + leven "^3.1.0" + pretty-format "^24.9.0" + +jest-watch-typeahead@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz#e5be959698a7fa2302229a5082c488c3c8780a4a" + integrity sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q== + dependencies: + ansi-escapes "^4.2.1" + chalk "^2.4.1" + jest-regex-util "^24.9.0" + jest-watcher "^24.3.0" + slash "^3.0.0" + string-length "^3.1.0" + strip-ansi "^5.0.0" + +jest-watcher@^24.3.0, jest-watcher@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" + integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== + dependencies: + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + jest-util "^24.9.0" + string-length "^2.0.0" + +jest-worker@^24.6.0, jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jest-worker@^25.4.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" + integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest@24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" + integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== + dependencies: + import-local "^2.0.0" + jest-cli "^24.9.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdom@^11.5.1: + version "11.12.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" + integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== + dependencies: + abab "^2.0.0" + acorn "^5.5.3" + acorn-globals "^4.1.0" + array-equal "^1.0.0" + cssom ">= 0.3.2 < 0.4.0" + cssstyle "^1.0.0" + data-urls "^1.0.0" + domexception "^1.0.1" + escodegen "^1.9.1" + html-encoding-sniffer "^1.0.2" + left-pad "^1.3.0" + nwsapi "^2.0.7" + parse5 "4.0.0" + pn "^1.1.0" + request "^2.87.0" + request-promise-native "^1.0.5" + sax "^1.2.4" + symbol-tree "^3.2.2" + tough-cookie "^2.3.4" + 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.1" + ws "^5.2.0" + xml-name-validator "^3.0.0" + +jsdom@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-14.1.0.tgz#916463b6094956b0a6c1782c94e380cd30e1981b" + integrity sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng== + dependencies: + abab "^2.0.0" + acorn "^6.0.4" + acorn-globals "^4.3.0" + array-equal "^1.0.0" + cssom "^0.3.4" + cssstyle "^1.1.1" + data-urls "^1.1.0" + domexception "^1.0.1" + escodegen "^1.11.0" + html-encoding-sniffer "^1.0.2" + nwsapi "^2.1.3" + parse5 "5.1.0" + pn "^1.1.0" + request "^2.88.0" + request-promise-native "^1.0.5" + saxes "^3.1.9" + symbol-tree "^3.2.2" + tough-cookie "^2.5.0" + w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.1.2" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^7.0.0" + ws "^6.1.2" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: + version "2.4.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e" + integrity sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w== + dependencies: + array-includes "^3.1.1" + object.assign "^4.1.0" + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" + integrity sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU= + dependencies: + is-buffer "^1.0.2" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + +lazy-cache@^0.2.3: + version "0.2.7" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" + integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U= + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= + +left-pad@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +loader-fs-cache@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz#f08657646d607078be2f0a032f8bd69dd6f277d9" + integrity sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA== + dependencies: + find-cache-dir "^0.1.1" + mkdirp "^0.5.1" + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash.template@^4.4.0, lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +"lodash@>=3.5 <5", lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.5: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + +loglevel@^1.6.8: + version "1.7.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" + integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lz-string@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" + integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +mamacro@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-deep@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.2.tgz#f39fa100a4f1bd34ff29f7d2bf4508fbb8d83ad2" + integrity sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA== + dependencies: + arr-union "^3.1.0" + clone-deep "^0.2.4" + kind-of "^3.0.2" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.2.3: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +microevent.ts@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" + integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.45.0, "mime-db@>= 1.43.0 < 2": + version "1.45.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" + integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.28" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd" + integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ== + dependencies: + mime-db "1.45.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.4: + version "2.4.7" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.7.tgz#962aed9be0ed19c91fd7dc2ece5d7f4e89a90d74" + integrity sha512-dhNd1uA2u397uQk3Nv5LM4lm93WYDUXFn3Fu291FJerns4jyTudqhIWe4W04YLy7Uk1tm1Ore04NpjRvQp/NPA== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mini-create-react-context@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" + integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== + dependencies: + "@babel/runtime" "^7.12.1" + tiny-warning "^1.0.3" + +mini-css-extract-plugin@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" + integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@3.0.4, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mixin-object@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" + integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= + dependencies: + for-in "^0.1.3" + is-extendable "^0.1.1" + +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nan@^2.12.1: + version "2.14.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0, neo-async@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-notifier@^5.4.2: + version "5.4.3" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" + integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== + dependencies: + growly "^1.3.0" + is-wsl "^1.1.0" + semver "^5.5.0" + shellwords "^0.1.1" + which "^1.3.0" + +node-releases@^1.1.52, node-releases@^1.1.69: + version "1.1.69" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.69.tgz#3149dbde53b781610cd8b486d62d86e26c3725f6" + integrity sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA== + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +nwsapi@^2.0.7, nwsapi@^2.1.3: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-hash@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.1.1.tgz#9447d0279b4fcf80cff3259bf66a1dc73afabe09" + integrity sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ== + +object-inspect@^1.8.0, object-inspect@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== + +object-is@^1.0.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.4.tgz#63d6c83c00a43f4cbc9434eb9757c8a5b8565068" + integrity sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-path@0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" + integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0, object.assign@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.entries@^1.1.0, object.entries@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" + integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has "^1.0.3" + +object.fromentries@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.3.tgz#13cefcffa702dc67750314a3305e8cb3fad1d072" + integrity sha512-IDUSMXs6LOSJBWE++L0lzIbSqHl9KDCfff2x/JSEIDtEUavUnyMYC2ZGay/04Zq4UT8lvd4xNhU4/YHKibAOlw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has "^1.0.3" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz#0dfda8d108074d9c563e80490c883b6661091544" + integrity sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0, object.values@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731" + integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has "^1.0.3" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^7.0.2: + version "7.3.0" + resolved "https://registry.yarnpkg.com/open/-/open-7.3.0.tgz#45461fdee46444f3645b6e14eb3ca94b82e1be69" + integrity sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optimize-css-assets-webpack-plugin@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" + integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + +optionator@^0.8.1, optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + dependencies: + p-reduce "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" + integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== + +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" + integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= + dependencies: + find-up "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@3.1.0, pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + +pnp-webpack-plugin@1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== + dependencies: + ts-pnp "^1.1.6" + +portfinder@^1.0.26: + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" + +postcss-browser-comments@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" + integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== + dependencies: + postcss "^7" + +postcss-calc@^7.0.1: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" + integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-flexbugs-fixes@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz#e094a9df1783e2200b7b19f875dcad3b3aff8b20" + integrity sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA== + dependencies: + postcss "^7.0.0" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641" + integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== + dependencies: + postcss "^7.0.2" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-initial@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" + integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== + dependencies: + lodash.template "^4.5.0" + postcss "^7.0.2" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-load-config@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" + integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" + integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.32" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776" + integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== + dependencies: + "@csstools/normalize.css" "^10.1.0" + browserslist "^4.6.2" + postcss "^7.0.17" + postcss-browser-comments "^3.0.0" + sanitize.css "^10.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-safe-parser@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz#8756d9e4c36fdce2c72b091bbc8ca176ab1fcdea" + integrity sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ== + dependencies: + postcss "^7.0.0" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf" + integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" + integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + util-deprecate "^1.0.2" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@7.0.21: + version "7.0.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" + integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.23, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" + integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +pretty-bytes@^5.1.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.5.0.tgz#0cecda50a74a941589498011cf23275aa82b339e" + integrity sha512-p+T744ZyjjiaFlMUZZv6YPC5JrkNj8maRmPaQCWFJFplUAzpIUTRaTcS+7wmZtUoFXHtESJb23ISliaWyz3SHA== + +pretty-error@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" + integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== + dependencies: + lodash "^4.17.20" + renderkid "^2.0.4" + +pretty-format@^24.3.0, pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== + dependencies: + "@jest/types" "^24.9.0" + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + react-is "^16.8.4" + +pretty-format@^25.1.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" + integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== + dependencies: + "@jest/types" "^25.5.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + +pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise@^8.0.3: + version "8.1.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" + integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== + dependencies: + asap "~2.0.6" + +prompts@^2.0.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" + integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.6.2, prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +proxy-addr@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +raf@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-app-polyfill@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz#890f8d7f2842ce6073f030b117de9130a5f385f0" + integrity sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g== + dependencies: + core-js "^3.5.0" + object-assign "^4.1.1" + promise "^8.0.3" + raf "^3.4.1" + regenerator-runtime "^0.13.3" + whatwg-fetch "^3.0.0" + +react-dev-utils@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.2.1.tgz#f6de325ae25fa4d546d09df4bb1befdc6dd19c19" + integrity sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ== + dependencies: + "@babel/code-frame" "7.8.3" + address "1.1.2" + browserslist "4.10.0" + chalk "2.4.2" + cross-spawn "7.0.1" + detect-port-alt "1.1.6" + escape-string-regexp "2.0.0" + filesize "6.0.1" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "3.1.1" + global-modules "2.0.0" + globby "8.0.2" + gzip-size "5.1.1" + immer "1.10.0" + inquirer "7.0.4" + is-root "2.1.0" + loader-utils "1.2.3" + open "^7.0.2" + pkg-up "3.1.0" + react-error-overlay "^6.0.7" + recursive-readdir "2.2.2" + shell-quote "1.7.2" + strip-ansi "6.0.0" + text-table "0.2.0" + +react-dom@^16.13.1: + version "16.14.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.14.0.tgz#7ad838ec29a777fb3c75c3a190f661cf92ab8b89" + integrity sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.19.1" + +react-error-overlay@^6.0.7: + version "6.0.8" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.8.tgz#474ed11d04fc6bda3af643447d85e9127ed6b5de" + integrity sha512-HvPuUQnLp5H7TouGq3kzBeioJmXms1wHy9EGjz2OURWBp4qZO6AfGEcnxts1D/CbwPLRAgTMPCEgYhA3sEM4vw== + +react-is@^16.12.0, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" + integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== + +react-router-dom@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.2.0.tgz#9e65a4d0c45e13289e66c7b17c7e175d0ea15662" + integrity sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA== + dependencies: + "@babel/runtime" "^7.1.2" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.2.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-router@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.0.tgz#424e75641ca8747fbf76e5ecca69781aa37ea293" + integrity sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw== + dependencies: + "@babel/runtime" "^7.1.2" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + mini-create-react-context "^0.4.0" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-scripts@3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.4.3.tgz#21de5eb93de41ee92cd0b85b0e1298d0bb2e6c51" + integrity sha512-oSnoWmii/iKdeQiwaO6map1lUaZLmG0xIUyb/HwCVFLT7gNbj8JZ9RmpvMCZ4fB98ZUMRfNmp/ft8uy/xD1RLA== + dependencies: + "@babel/core" "7.9.0" + "@svgr/webpack" "4.3.3" + "@typescript-eslint/eslint-plugin" "^2.10.0" + "@typescript-eslint/parser" "^2.10.0" + babel-eslint "10.1.0" + babel-jest "^24.9.0" + babel-loader "8.1.0" + babel-plugin-named-asset-import "^0.3.6" + babel-preset-react-app "^9.1.2" + camelcase "^5.3.1" + case-sensitive-paths-webpack-plugin "2.3.0" + css-loader "3.4.2" + dotenv "8.2.0" + dotenv-expand "5.1.0" + eslint "^6.6.0" + eslint-config-react-app "^5.2.1" + eslint-loader "3.0.3" + eslint-plugin-flowtype "4.6.0" + eslint-plugin-import "2.20.1" + eslint-plugin-jsx-a11y "6.2.3" + eslint-plugin-react "7.19.0" + eslint-plugin-react-hooks "^1.6.1" + file-loader "4.3.0" + fs-extra "^8.1.0" + html-webpack-plugin "4.0.0-beta.11" + identity-obj-proxy "3.0.0" + jest "24.9.0" + jest-environment-jsdom-fourteen "1.0.1" + jest-resolve "24.9.0" + jest-watch-typeahead "0.4.2" + mini-css-extract-plugin "0.9.0" + optimize-css-assets-webpack-plugin "5.0.3" + pnp-webpack-plugin "1.6.4" + postcss-flexbugs-fixes "4.1.0" + postcss-loader "3.0.0" + postcss-normalize "8.0.1" + postcss-preset-env "6.7.0" + postcss-safe-parser "4.0.1" + react-app-polyfill "^1.0.6" + react-dev-utils "^10.2.1" + resolve "1.15.0" + resolve-url-loader "3.1.1" + sass-loader "8.0.2" + semver "6.3.0" + style-loader "0.23.1" + terser-webpack-plugin "2.3.8" + ts-pnp "1.1.6" + url-loader "2.3.0" + webpack "4.42.0" + webpack-dev-server "3.11.0" + webpack-manifest-plugin "2.2.0" + workbox-webpack-plugin "4.3.1" + optionalDependencies: + fsevents "2.1.2" + +react@^16.13.1: + version "16.14.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" + integrity sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + dependencies: + picomatch "^2.2.1" + +realpath-native@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== + dependencies: + util.promisify "^1.0.0" + +recursive-readdir@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + dependencies: + minimatch "3.0.4" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: + version "0.13.7" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regex-parser@2.2.10: + version "2.2.10" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37" + integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== + +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpp@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +regexpu-core@^4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" + integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.5.tgz#483b1ac59c6601ab30a7a596a5965cabccfdd0a5" + integrity sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ== + dependencies: + css-select "^2.0.2" + dom-converter "^0.2" + htmlparser2 "^3.10.1" + lodash "^4.17.20" + strip-ansi "^3.0.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== + dependencies: + lodash "^4.17.19" + +request-promise-native@^1.0.5: + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== + dependencies: + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.87.0, request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-pathname@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" + integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== + +resolve-url-loader@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz#28931895fa1eab9be0647d3b2958c100ae3c0bf0" + integrity sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ== + dependencies: + adjust-sourcemap-loader "2.0.0" + camelcase "5.3.1" + compose-function "3.0.3" + convert-source-map "1.7.0" + es6-iterator "2.0.3" + loader-utils "1.2.3" + postcss "7.0.21" + rework "1.0.1" + rework-visit "1.0.0" + source-map "0.6.1" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + +resolve@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5" + integrity sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw== + dependencies: + path-parse "^1.0.6" + +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.3.2, resolve@^1.8.1: + version "1.19.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== + dependencies: + is-core-module "^2.1.0" + path-parse "^1.0.6" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +rework-visit@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" + integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= + +rework@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" + integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= + dependencies: + convert-source-map "^0.3.3" + css "^2.0.0" + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + +run-async@^2.2.0, run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +rxjs@^6.5.3, rxjs@^6.6.0: + version "6.6.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" + integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== + dependencies: + tslib "^1.9.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + +sanitize.css@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" + integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== + +sass-loader@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d" + integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== + dependencies: + clone-deep "^4.0.1" + loader-utils "^1.2.3" + neo-async "^2.6.1" + schema-utils "^2.6.1" + semver "^6.3.0" + +sax@^1.2.4, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^3.1.9: + version "3.1.11" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" + integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== + dependencies: + xmlchars "^2.1.1" + +scheduler@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" + integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.1, schema-utils@^2.6.5, schema-utils@^2.6.6: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.10.7: + version "1.10.8" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" + integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== + dependencies: + node-forge "^0.10.0" + +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@6.3.0, semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^7.3.2: + version "7.3.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + dependencies: + lru-cache "^6.0.0" + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-clone@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" + integrity sha1-WQnodLp3EG1zrEFM/sH/yofZcGA= + dependencies: + is-extendable "^0.1.1" + kind-of "^2.0.1" + lazy-cache "^0.2.3" + mixin-object "^2.0.1" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +side-channel@^1.0.2, side-channel@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sockjs-client@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" + +sockjs@0.3.20: + version "0.3.20" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" + integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== + dependencies: + faye-websocket "^0.10.0" + uuid "^3.4.0" + websocket-driver "0.6.5" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.5.6, source-map-support@~0.5.12: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.7" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" + integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + 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" + +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + +ssri@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" + integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== + dependencies: + figgy-pudding "^3.5.1" + minipass "^3.1.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.4.tgz#4b600971dcfc6aed0cbdf2a8268177cc916c87c8" + integrity sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w== + dependencies: + escape-string-regexp "^2.0.0" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-length@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= + dependencies: + astral-regex "^1.0.0" + strip-ansi "^4.0.0" + +string-length@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" + integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== + dependencies: + astral-regex "^1.0.0" + strip-ansi "^5.2.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.matchall@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.3.tgz#24243399bc31b0a49d19e2b74171a15653ec996a" + integrity sha512-OBxYDA2ifZQ2e13cP82dWFMaCV9CGF8GzmN4fljBVw5O5wep0lu4gacm1OL6MjROoUnB8VbkWRThqkV2YFLNxw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has-symbols "^1.0.1" + internal-slot "^1.0.2" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.3" + +string.prototype.trimend@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" + integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" + integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@6.0.0, strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-comments@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" + integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== + dependencies: + babel-extract-comments "^1.0.0" + babel-plugin-transform-object-rest-spread "^6.26.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-json-comments@^3.0.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +style-loader@0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" + integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== + dependencies: + loader-utils "^1.1.0" + schema-utils "^1.0.0" + +styled-components@^5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.2.1.tgz#6ed7fad2dc233825f64c719ffbdedd84ad79101a" + integrity sha512-sBdgLWrCFTKtmZm/9x7jkIabjFNVzCUeKfoQsM6R3saImkUnjx0QYdLwJHBjY9ifEcmjDamJDVfknWm1yxZPxQ== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/traverse" "^7.4.5" + "@emotion/is-prop-valid" "^0.8.8" + "@emotion/stylis" "^0.8.4" + "@emotion/unitless" "^0.7.4" + babel-plugin-styled-components ">= 1" + css-to-react-native "^3.0.0" + hoist-non-react-statics "^3.0.0" + shallowequal "^1.1.0" + supports-color "^5.5.0" + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0, supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +svg-parser@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^1.0.0, svgo@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +symbol-tree@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +terser-webpack-plugin@2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz#894764a19b0743f2f704e7c2a848c5283a696724" + integrity sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w== + dependencies: + cacache "^13.0.1" + find-cache-dir "^3.3.1" + jest-worker "^25.4.0" + p-limit "^2.3.0" + schema-utils "^2.6.6" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.6.12" + webpack-sources "^1.4.3" + +terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^4.1.2, terser@^4.6.12, terser@^4.6.3: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +test-exclude@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== + dependencies: + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" + +text-table@0.2.0, text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throat@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tiny-invariant@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" + integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== + +tiny-warning@^1.0.0, tiny-warning@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + +ts-pnp@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.6.tgz#389a24396d425a0d3162e96d2b4638900fdc289a" + integrity sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ== + +ts-pnp@^1.1.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" + integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== + +tslib@^1.8.1, tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" + integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== + +tsutils@^3.17.1: + version "3.18.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.18.0.tgz#38add50a28ec97e988cb43c5b32e55d1ff4a222a" + integrity sha512-D9Tu8nE3E7D1Bsf/V29oMHceMf+gnVO+pDguk/A5YRo1cLpkiQ48ZnbbS57pvvHeY+OIeNQx1vf4ASPlEtRpcA== + dependencies: + tslib "^1.8.1" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f" + integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA== + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +typescript@^3.9.7: + version "3.9.7" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" + integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +uri-js@^4.2.2: + version "4.4.0" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" + integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-loader@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" + integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== + dependencies: + loader-utils "^1.2.3" + mime "^2.4.4" + schema-utils "^2.5.0" + +url-parse@^1.4.3: + version "1.4.7" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" + integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util.promisify@^1.0.0, util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.3.2, uuid@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache@^2.0.3: + version "2.2.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" + integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +value-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" + integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +w3c-hr-time@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" + integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== + dependencies: + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" + +wait-for-expect@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/wait-for-expect/-/wait-for-expect-3.0.2.tgz#d2f14b2f7b778c9b82144109c8fa89ceaadaa463" + integrity sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag== + +walker@^1.0.7, walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.6.0: + version "1.7.5" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.1" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +webpack-dev-middleware@^3.7.2: + version "3.7.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" + integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" + integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.3.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.8" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.26" + schema-utils "^1.0.0" + selfsigned "^1.10.7" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "0.3.20" + sockjs-client "1.4.0" + spdy "^4.0.2" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "^13.3.2" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-manifest-plugin@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" + integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== + dependencies: + fs-extra "^7.0.0" + lodash ">=3.5 <5" + object.entries "^1.1.0" + tapable "^1.0.0" + +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@4.42.0: + version "4.42.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.0.tgz#b901635dd6179391d90740a63c93f76f39883eb8" + integrity sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/wasm-edit" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + acorn "^6.2.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.1" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.6.0" + webpack-sources "^1.4.1" + +websocket-driver@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" + integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= + dependencies: + websocket-extensions ">=0.1.1" + +websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@^3.0.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz#605a2cd0a7146e5db141e29d1c62ab84c0c4c868" + integrity sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A== + +whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^6.4.1: + version "6.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9, which@^1.3.0, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +workbox-background-sync@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz#26821b9bf16e9e37fd1d640289edddc08afd1950" + integrity sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg== + dependencies: + workbox-core "^4.3.1" + +workbox-broadcast-update@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz#e2c0280b149e3a504983b757606ad041f332c35b" + integrity sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA== + dependencies: + workbox-core "^4.3.1" + +workbox-build@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-4.3.1.tgz#414f70fb4d6de47f6538608b80ec52412d233e64" + integrity sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw== + dependencies: + "@babel/runtime" "^7.3.4" + "@hapi/joi" "^15.0.0" + common-tags "^1.8.0" + fs-extra "^4.0.2" + glob "^7.1.3" + lodash.template "^4.4.0" + pretty-bytes "^5.1.0" + stringify-object "^3.3.0" + strip-comments "^1.0.2" + workbox-background-sync "^4.3.1" + workbox-broadcast-update "^4.3.1" + workbox-cacheable-response "^4.3.1" + workbox-core "^4.3.1" + workbox-expiration "^4.3.1" + workbox-google-analytics "^4.3.1" + workbox-navigation-preload "^4.3.1" + workbox-precaching "^4.3.1" + workbox-range-requests "^4.3.1" + workbox-routing "^4.3.1" + workbox-strategies "^4.3.1" + workbox-streams "^4.3.1" + workbox-sw "^4.3.1" + workbox-window "^4.3.1" + +workbox-cacheable-response@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz#f53e079179c095a3f19e5313b284975c91428c91" + integrity sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw== + dependencies: + workbox-core "^4.3.1" + +workbox-core@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-4.3.1.tgz#005d2c6a06a171437afd6ca2904a5727ecd73be6" + integrity sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg== + +workbox-expiration@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-4.3.1.tgz#d790433562029e56837f341d7f553c4a78ebe921" + integrity sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw== + dependencies: + workbox-core "^4.3.1" + +workbox-google-analytics@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz#9eda0183b103890b5c256e6f4ea15a1f1548519a" + integrity sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg== + dependencies: + workbox-background-sync "^4.3.1" + workbox-core "^4.3.1" + workbox-routing "^4.3.1" + workbox-strategies "^4.3.1" + +workbox-navigation-preload@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz#29c8e4db5843803b34cd96dc155f9ebd9afa453d" + integrity sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw== + dependencies: + workbox-core "^4.3.1" + +workbox-precaching@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-4.3.1.tgz#9fc45ed122d94bbe1f0ea9584ff5940960771cba" + integrity sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ== + dependencies: + workbox-core "^4.3.1" + +workbox-range-requests@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz#f8a470188922145cbf0c09a9a2d5e35645244e74" + integrity sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA== + dependencies: + workbox-core "^4.3.1" + +workbox-routing@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-4.3.1.tgz#a675841af623e0bb0c67ce4ed8e724ac0bed0cda" + integrity sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g== + dependencies: + workbox-core "^4.3.1" + +workbox-strategies@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-4.3.1.tgz#d2be03c4ef214c115e1ab29c9c759c9fe3e9e646" + integrity sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw== + dependencies: + workbox-core "^4.3.1" + +workbox-streams@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-4.3.1.tgz#0b57da70e982572de09c8742dd0cb40a6b7c2cc3" + integrity sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA== + dependencies: + workbox-core "^4.3.1" + +workbox-sw@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-4.3.1.tgz#df69e395c479ef4d14499372bcd84c0f5e246164" + integrity sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w== + +workbox-webpack-plugin@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz#47ff5ea1cc074b6c40fb5a86108863a24120d4bd" + integrity sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ== + dependencies: + "@babel/runtime" "^7.0.0" + json-stable-stringify "^1.0.1" + workbox-build "^4.3.1" + +workbox-window@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-4.3.1.tgz#ee6051bf10f06afa5483c9b8dfa0531994ede0f3" + integrity sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg== + dependencies: + workbox-core "^4.3.1" + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +worker-rpc@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" + integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== + dependencies: + microevent.ts "~0.1.1" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" + integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + +ws@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + dependencies: + async-limiter "~1.0.0" + +ws@^6.1.2, ws@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xregexp@^4.3.0: + version "4.4.1" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.4.1.tgz#c84a88fa79e9ab18ca543959712094492185fe65" + integrity sha512-2u9HwfadaJaY9zHtRRnH6BY6CQVNQKkYm3oLtC9gJXXzfsbACg5X5e4EZZGVAH+YIfa+QA9lsFQTTe3HURF3ag== + dependencies: + "@babel/runtime-corejs3" "^7.12.1" + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" + integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.7.2: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^13.3.0, yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" diff --git a/package.json b/package.json index b32f20dd..9ebf6734 100644 --- a/package.json +++ b/package.json @@ -23,15 +23,20 @@ "package-install": "lerna exec yarn install", "version-bump": "changeset", "release": "lerna run release && changeset publish", - "prettier": "prettier --config .prettierrc --write \"**/*.{js,ts}\"" + "prettier": "prettier --config .prettierrc --write \"**/*.{js,ts}\"", + "lint": "eslint --cache \"**/*.{js,jsx,ts,tsx}\"" }, "repository": { "type": "git", "url": "git+https://github.com/agile-ts/agile.git" }, "devDependencies": { + "@changesets/cli": "^2.12.0", "@types/jest": "^26.0.15", "@types/node": "^14.14.7", + "@typescript-eslint/eslint-plugin": "^4.12.0", + "@typescript-eslint/parser": "^4.12.0", + "eslint": "^7.17.0", "eslint-config-prettier": "^6.11.0", "jest": "^26.6.3", "lerna": "^3.22.1", @@ -41,8 +46,7 @@ "ts-node": "^8.10.2", "tsc-watch": "^4.1.0", "tslib": "^2.0.0", - "typescript": "^3.9.7", - "@changesets/cli": "^2.12.0" + "typescript": "^3.9.7" }, "workspaces": [ "packages/*" diff --git a/yarn.lock b/yarn.lock index a055e13e..d41cd66e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,7 +3,7 @@ "@agile-ts/core@file:packages/core": - version "0.0.6" + version "0.0.7" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11": version "7.12.11" @@ -472,6 +472,22 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@eslint/eslintrc@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.2.tgz#d01fc791e2fc33e88a29d6f3dc7e93d0cd784b76" + integrity sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + lodash "^4.17.19" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + "@evocateur/libnpmaccess@^3.1.2": version "3.1.2" resolved "https://registry.yarnpkg.com/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz#ecf7f6ce6b004e9f942b098d92200be4a4b1c845" @@ -1689,6 +1705,11 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" +"@types/json-schema@^7.0.3": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" + integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== + "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" @@ -1754,6 +1775,76 @@ dependencies: "@types/yargs-parser" "*" +"@typescript-eslint/eslint-plugin@^4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.12.0.tgz#00d1b23b40b58031e6d7c04a5bc6c1a30a2e834a" + integrity sha512-wHKj6q8s70sO5i39H2g1gtpCXCvjVszzj6FFygneNFyIAxRvNSVz9GML7XpqrB9t7hNutXw+MHnLN/Ih6uyB8Q== + dependencies: + "@typescript-eslint/experimental-utils" "4.12.0" + "@typescript-eslint/scope-manager" "4.12.0" + debug "^4.1.1" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.12.0.tgz#372838e76db76c9a56959217b768a19f7129546b" + integrity sha512-MpXZXUAvHt99c9ScXijx7i061o5HEjXltO+sbYfZAAHxv3XankQkPaNi5myy0Yh0Tyea3Hdq1pi7Vsh0GJb0fA== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/scope-manager" "4.12.0" + "@typescript-eslint/types" "4.12.0" + "@typescript-eslint/typescript-estree" "4.12.0" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/parser@^4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.12.0.tgz#e1cf30436e4f916c31fcc962158917bd9e9d460a" + integrity sha512-9XxVADAo9vlfjfoxnjboBTxYOiNY93/QuvcPgsiKvHxW6tOZx1W4TvkIQ2jB3k5M0pbFP5FlXihLK49TjZXhuQ== + dependencies: + "@typescript-eslint/scope-manager" "4.12.0" + "@typescript-eslint/types" "4.12.0" + "@typescript-eslint/typescript-estree" "4.12.0" + debug "^4.1.1" + +"@typescript-eslint/scope-manager@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.12.0.tgz#beeb8beca895a07b10c593185a5612f1085ef279" + integrity sha512-QVf9oCSVLte/8jvOsxmgBdOaoe2J0wtEmBr13Yz0rkBNkl5D8bfnf6G4Vhox9qqMIoG7QQoVwd2eG9DM/ge4Qg== + dependencies: + "@typescript-eslint/types" "4.12.0" + "@typescript-eslint/visitor-keys" "4.12.0" + +"@typescript-eslint/types@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.12.0.tgz#fb891fe7ccc9ea8b2bbd2780e36da45d0dc055e5" + integrity sha512-N2RhGeheVLGtyy+CxRmxdsniB7sMSCfsnbh8K/+RUIXYYq3Ub5+sukRCjVE80QerrUBvuEvs4fDhz5AW/pcL6g== + +"@typescript-eslint/typescript-estree@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.12.0.tgz#3963418c850f564bdab3882ae23795d115d6d32e" + integrity sha512-gZkFcmmp/CnzqD2RKMich2/FjBTsYopjiwJCroxqHZIY11IIoN0l5lKqcgoAPKHt33H2mAkSfvzj8i44Jm7F4w== + dependencies: + "@typescript-eslint/types" "4.12.0" + "@typescript-eslint/visitor-keys" "4.12.0" + debug "^4.1.1" + globby "^11.0.1" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/visitor-keys@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.12.0.tgz#a470a79be6958075fa91c725371a83baf428a67a" + integrity sha512-hVpsLARbDh4B9TKYz5cLbcdMIOAoBYgFPCSP9FFS/liSF+b33gVNq8JHY3QGhHNVz85hObvL7BEYLlgx553WCw== + dependencies: + "@typescript-eslint/types" "4.12.0" + eslint-visitor-keys "^2.0.0" + "@zkochan/cmd-shim@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@zkochan/cmd-shim/-/cmd-shim-3.1.0.tgz#2ab8ed81f5bb5452a85f25758eb9b8681982fd2e" @@ -1789,12 +1880,17 @@ acorn-globals@^6.0.0: acorn "^7.1.1" acorn-walk "^7.1.1" +acorn-jsx@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + acorn-walk@^7.1.1: version "7.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn@^7.1.1: +acorn@^7.1.1, acorn@^7.4.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== @@ -1820,7 +1916,7 @@ agentkeepalive@^3.4.1: dependencies: humanize-ms "^1.2.1" -ajv@^6.12.3: +ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1830,6 +1926,16 @@ ajv@^6.12.3: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.0.3.tgz#13ae747eff125cafb230ac504b2406cf371eece2" + integrity sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" @@ -2025,6 +2131,11 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -2814,7 +2925,7 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -2936,7 +3047,7 @@ debug@^3.1.0, debug@^3.2.6: dependencies: ms "^2.1.1" -debug@^4.1.0, debug@^4.1.1: +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== @@ -2988,7 +3099,7 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deep-is@~0.1.3: +deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= @@ -3101,6 +3212,13 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + domexception@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" @@ -3179,7 +3297,7 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enquirer@^2.3.0: +enquirer@^2.3.0, enquirer@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -3281,16 +3399,112 @@ eslint-config-prettier@^6.11.0: dependencies: get-stdin "^6.0.0" +eslint-scope@^5.0.0, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.0.0, eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + +eslint@^7.17.0: + version "7.17.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.17.0.tgz#4ccda5bf12572ad3bf760e6f195886f50569adb0" + integrity sha512-zJk08MiBgwuGoxes5sSQhOtibZ75pz0J35XTRlZOk9xMffhpA9BTbQZxoXZzOl5zMbleShbGwtw+1kGferfFwQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@eslint/eslintrc" "^0.2.2" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.2.0" + esutils "^2.0.2" + file-entry-cache "^6.0.0" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.19" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.4" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -estraverse@^4.2.0: +esquery@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -3482,7 +3696,7 @@ fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -3513,6 +3727,13 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" +file-entry-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a" + integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA== + dependencies: + flat-cache "^3.0.4" + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -3576,6 +3797,19 @@ find-yarn-workspace-root2@1.2.16: micromatch "^4.0.2" pkg-dir "^4.2.0" +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.0.tgz#a5d06b4a8b01e3a63771daa5cb7a1903e2e57067" + integrity sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA== + flush-write-stream@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" @@ -3678,6 +3912,11 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -3871,7 +4110,14 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globby@^11.0.0: +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globby@^11.0.0, globby@^11.0.1: version "11.0.1" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== @@ -4129,7 +4375,7 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^4.0.3: +ignore@^4.0.3, ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== @@ -4147,6 +4393,14 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" @@ -5071,11 +5325,21 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -5182,6 +5446,14 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -5327,7 +5599,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.2.1: +lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.2.1: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -6105,6 +6377,18 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -6272,6 +6556,13 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + parse-github-repo-url@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" @@ -6473,6 +6764,11 @@ preferred-pm@^3.0.0: path-exists "^4.0.0" which-pm "2.0.0" +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -6508,6 +6804,11 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -6827,6 +7128,11 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexpp@^3.0.0, regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + registry-auth-token@^4.0.0: version "4.2.1" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" @@ -6910,6 +7216,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -6994,7 +7305,7 @@ rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: dependencies: glob "^7.1.3" -rimraf@^3.0.0: +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -7086,7 +7397,7 @@ semver-diff@^3.1.1: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.x, semver@^7.3.2: +semver@7.x, semver@^7.2.1, semver@^7.3.2: version "7.3.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== @@ -7169,6 +7480,15 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + slide@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -7570,6 +7890,11 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -7611,6 +7936,16 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +table@^6.0.4: + version "6.0.7" + resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" + integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== + dependencies: + ajv "^7.0.2" + lodash "^4.17.20" + slice-ansi "^4.0.0" + string-width "^4.2.0" + tar@^4.4.10, tar@^4.4.12, tar@^4.4.8: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" @@ -7675,6 +8010,11 @@ text-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + thenify-all@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" @@ -7873,7 +8213,7 @@ tsc-watch@^4.1.0: string-argv "^0.1.1" strip-ansi "^6.0.0" -tslib@^1.9.0: +tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -7883,6 +8223,13 @@ tslib@^2.0.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== +tsutils@^3.17.1: + version "3.18.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.18.0.tgz#38add50a28ec97e988cb43c5b32e55d1ff4a222a" + integrity sha512-D9Tu8nE3E7D1Bsf/V29oMHceMf+gnVO+pDguk/A5YRo1cLpkiQ48ZnbbS57pvvHeY+OIeNQx1vf4ASPlEtRpcA== + dependencies: + tslib "^1.8.1" + tty-table@^2.8.10: version "2.8.13" resolved "https://registry.yarnpkg.com/tty-table/-/tty-table-2.8.13.tgz#d484a416381973eaebbdf19c79136b390e5c6d70" @@ -7907,6 +8254,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -8114,6 +8468,11 @@ uuid@^8.3.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +v8-compile-cache@^2.0.3: + version "2.2.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" + integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== + v8-to-istanbul@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz#5b95cef45c0f83217ec79f8fc7ee1c8b486aee07" @@ -8275,7 +8634,7 @@ windows-release@^3.1.0: dependencies: execa "^1.0.0" -word-wrap@~1.2.3: +word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== From b014bb8f5fe599cf681848c303fe589d08750745 Mon Sep 17 00:00:00 2001 From: Benno Kohrs Date: Wed, 6 Jan 2021 07:01:44 +0100 Subject: [PATCH 04/15] added .eslintcache to git itnore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 26e7b327..2dea8293 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ yalc.lock npm-debug.log* yarn-debug.log* yarn-error.log* +.eslintcache # Editor directories and files .idea From 142513268a65303cc3a95c3815640fd11389eeac Mon Sep 17 00:00:00 2001 From: Benno Kohrs Date: Wed, 6 Jan 2021 07:54:03 +0100 Subject: [PATCH 05/15] updated eslinter --- .eslintignore | 3 + .eslintrc.js | 32 ++++ .eslintrc.json | 20 -- package.json | 5 + yarn.lock | 482 +++++++++++++++++++++++++++++++++++++++++++++---- 5 files changed, 491 insertions(+), 51 deletions(-) create mode 100644 .eslintrc.js delete mode 100644 .eslintrc.json diff --git a/.eslintignore b/.eslintignore index de4d1f00..37e51613 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,2 +1,5 @@ dist node_modules +.eslintrc.js +jest.config.js +jest.config.base.js \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..59841737 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,32 @@ +const OFF = 0; +const WARNING = 1; +const ERROR = 2; + +module.exports = { + root: true, + env: { + browser: true, + commonjs: true, + jest: true, + node: true, + }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'prettier', + 'airbnb-base/legacy', + ], + parser: '@typescript-eslint/parser', + parserOptions: { + allowImportExportEverywhere: true, + ecmaVersion: 12, + sourceType: 'module', + }, + plugins: ['@typescript-eslint', 'prettier'], + rules: { + 'func-names': OFF, + '@typescript-eslint/no-explicit-any': OFF, + 'guard-for-in': OFF, + 'no-restricted-syntax': OFF, + }, +}; diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index c5624c4e..00000000 --- a/.eslintrc.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "env": { - "browser": true, - "es2021": true - }, - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 12, - "sourceType": "module" - }, - "plugins": [ - "@typescript-eslint" - ], - "rules": { - } -} diff --git a/package.json b/package.json index 9ebf6734..590b5ad8 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,12 @@ "@typescript-eslint/eslint-plugin": "^4.12.0", "@typescript-eslint/parser": "^4.12.0", "eslint": "^7.17.0", + "eslint-config-airbnb-base": "^14.2.1", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-prettier": "^3.3.1", "eslint-config-prettier": "^6.11.0", + "eslint-plugin-node": "^11.1.0", + "eslint-config-node": "^4.1.0", "jest": "^26.6.3", "lerna": "^3.22.1", "nodemon": "^2.0.6", diff --git a/yarn.lock b/yarn.lock index d41cd66e..dbedc2e2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -146,7 +146,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7": +"@babel/parser@^7.1.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.7.0": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79" integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== @@ -251,7 +251,7 @@ "@babel/parser" "^7.12.7" "@babel/types" "^7.12.7" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5": +"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5", "@babel/traverse@^7.7.0": version "7.12.12" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376" integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w== @@ -266,7 +266,7 @@ globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3": +"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.7.0": version "7.12.12" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299" integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ== @@ -1710,6 +1710,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" @@ -1880,7 +1885,7 @@ acorn-globals@^6.0.0: acorn "^7.1.1" acorn-walk "^7.1.1" -acorn-jsx@^5.3.1: +acorn-jsx@^5.2.0, acorn-jsx@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== @@ -1916,7 +1921,7 @@ agentkeepalive@^3.4.1: dependencies: humanize-ms "^1.2.1" -ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2082,6 +2087,17 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= +array-includes@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8" + integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + get-intrinsic "^1.0.1" + is-string "^1.0.5" + array-union@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -2104,6 +2120,15 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array.prototype.flat@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" + integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -2131,6 +2156,11 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" @@ -2161,6 +2191,18 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== +babel-eslint@^10.0.1: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + babel-jest@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" @@ -2539,7 +2581,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0: +chalk@^4.0.0, chalk@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== @@ -2614,11 +2656,23 @@ cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + cli-width@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -2778,11 +2832,21 @@ configstore@^5.0.1: write-file-atomic "^3.0.0" xdg-basedir "^4.0.0" +confusing-browser-globals@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" + integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== + console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + conventional-changelog-angular@^5.0.3: version "5.0.12" resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9" @@ -2914,7 +2978,7 @@ cross-spawn@^5.0.1, cross-spawn@^5.1.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^6.0.0: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -3033,7 +3097,7 @@ debug@3.1.0: dependencies: ms "2.0.0" -debug@^2.2.0, debug@^2.3.3: +debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -3212,6 +3276,14 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -3392,6 +3464,33 @@ escodegen@^1.14.1: optionalDependencies: source-map "~0.6.1" +eslint-config-airbnb-base@^14.2.1: + version "14.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz#8a2eb38455dc5a312550193b319cdaeef042cd1e" + integrity sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA== + dependencies: + confusing-browser-globals "^1.0.10" + object.assign "^4.1.2" + object.entries "^1.1.2" + +eslint-config-esnext@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-esnext/-/eslint-config-esnext-4.1.0.tgz#8695b858fcf40d28c1aedca181f700528c7b60c6" + integrity sha512-GhfVEXdqYKEIIj7j+Fw2SQdL9qyZMekgXfq6PyXM66cQw0B435ddjz3P3kxOBVihMRJ0xGYjosaveQz5Y6z0uA== + dependencies: + babel-eslint "^10.0.1" + eslint "^6.8.0" + eslint-plugin-babel "^5.2.1" + eslint-plugin-import "^2.14.0" + +eslint-config-node@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-node/-/eslint-config-node-4.1.0.tgz#fc1f13946d83766d6b83b0e67699e2071a56f417" + integrity sha512-Wz17xV5O2WFG8fGdMYEBdbiL6TL7YNJSJvSX9V4sXQownewfYmoqlly7wxqLkOUv/57pq6LnnotMiQQrrPjCqQ== + dependencies: + eslint "^6.8.0" + eslint-config-esnext "^4.1.0" + eslint-config-prettier@^6.11.0: version "6.15.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9" @@ -3399,6 +3498,80 @@ eslint-config-prettier@^6.11.0: dependencies: get-stdin "^6.0.0" +eslint-import-resolver-node@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-babel@^5.2.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-5.3.1.tgz#75a2413ffbf17e7be57458301c60291f2cfbf560" + integrity sha512-VsQEr6NH3dj664+EyxJwO4FCYm/00JhYb3Sk3ft8o+fpKuIfQ9TaW6uVUfvwMXHcf/lsnRIoyFPsLMyiWCSL/g== + dependencies: + eslint-rule-composer "^0.3.0" + +eslint-plugin-es@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" + integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== + dependencies: + eslint-utils "^2.0.0" + regexpp "^3.0.0" + +eslint-plugin-import@^2.14.0, eslint-plugin-import@^2.22.1: + version "2.22.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" + integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== + dependencies: + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.4" + eslint-module-utils "^2.6.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.1" + read-pkg-up "^2.0.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + +eslint-plugin-node@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" + integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== + dependencies: + eslint-plugin-es "^3.0.0" + eslint-utils "^2.0.0" + ignore "^5.1.1" + minimatch "^3.0.4" + resolve "^1.10.1" + semver "^6.1.0" + +eslint-plugin-prettier@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz#7079cfa2497078905011e6f82e8dd8453d1371b7" + integrity sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-rule-composer@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" + integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== + eslint-scope@^5.0.0, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -3407,6 +3580,13 @@ eslint-scope@^5.0.0, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" +eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + eslint-utils@^2.0.0, eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" @@ -3414,7 +3594,7 @@ eslint-utils@^2.0.0, eslint-utils@^2.1.0: dependencies: eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== @@ -3424,6 +3604,49 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== +eslint@^6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.14" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.3" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + eslint@^7.17.0: version "7.17.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.17.0.tgz#4ccda5bf12572ad3bf760e6f195886f50569adb0" @@ -3467,6 +3690,15 @@ eslint@^7.17.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" +espree@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== + dependencies: + acorn "^7.1.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.1.0" + espree@^7.3.0, espree@^7.3.1: version "7.3.1" resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" @@ -3481,7 +3713,7 @@ esprima@^4.0.0, esprima@^4.0.1: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.2.0: +esquery@^1.0.1, esquery@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== @@ -3667,6 +3899,11 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + fast-glob@^2.2.6: version "2.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" @@ -3727,6 +3964,20 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + file-entry-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a" @@ -3759,7 +4010,7 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.0.0: +find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= @@ -3797,6 +4048,15 @@ find-yarn-workspace-root2@1.2.16: micromatch "^4.0.2" pkg-dir "^4.2.0" +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -3805,6 +4065,11 @@ flat-cache@^3.0.4: flatted "^3.1.0" rimraf "^3.0.2" +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + flatted@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.0.tgz#a5d06b4a8b01e3a63771daa5cb7a1903e2e57067" @@ -3946,7 +4211,7 @@ get-caller-file@^2.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.0: +get-intrinsic@^1.0.0, get-intrinsic@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49" integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== @@ -4380,7 +4645,7 @@ ignore@^4.0.3, ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.4: +ignore@^5.1.1, ignore@^5.1.4: version "5.1.8" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== @@ -4505,6 +4770,25 @@ inquirer@^6.2.0: strip-ansi "^5.1.0" through "^2.3.6" +inquirer@^7.0.0: + version "7.3.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" + integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.19" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.6.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" @@ -4761,6 +5045,11 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + is-subdir@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-subdir/-/is-subdir-1.1.1.tgz#423e66902f9c5f159b9cc4826c820df083059538" @@ -4809,7 +5098,7 @@ is-yarn-global@^0.3.0: resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== -isarray@1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -5352,6 +5641,13 @@ json5@2.x, json5@^2.1.2: dependencies: minimist "^1.2.5" +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -5446,6 +5742,14 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -5454,14 +5758,6 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -5478,6 +5774,16 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -5599,7 +5905,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.2.1: +lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.2.1: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -6012,7 +6318,7 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -mute-stream@~0.0.4: +mute-stream@0.0.8, mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== @@ -6313,7 +6619,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.1: +object.assign@^4.1.1, object.assign@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== @@ -6323,6 +6629,16 @@ object.assign@^4.1.1: has-symbols "^1.0.1" object-keys "^1.1.1" +object.entries@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" + integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has "^1.0.3" + object.getownpropertydescriptors@^2.0.3: version "2.1.1" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz#0dfda8d108074d9c563e80490c883b6661091544" @@ -6339,6 +6655,16 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" +object.values@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731" + integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has "^1.0.3" + octokit-pagination-methods@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" @@ -6365,7 +6691,7 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" -optionator@^0.8.1: +optionator@^0.8.1, optionator@^0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== @@ -6672,6 +6998,13 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -6735,6 +7068,13 @@ pirates@^4.0.1: dependencies: node-modules-regexp "^1.0.0" +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -6779,6 +7119,13 @@ prepend-http@^2.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + prettier@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5" @@ -6990,6 +7337,14 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + read-pkg-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" @@ -7016,6 +7371,15 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -7128,6 +7492,11 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + regexpp@^3.0.0, regexpp@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" @@ -7260,7 +7629,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.10.0, resolve@^1.17.0, resolve@^1.18.1: +resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.18.1: version "1.19.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== @@ -7283,6 +7652,14 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -7298,6 +7675,13 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" @@ -7317,7 +7701,7 @@ rsvp@^4.8.4: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== -run-async@^2.2.0: +run-async@^2.2.0, run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== @@ -7334,7 +7718,7 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rxjs@^6.4.0: +rxjs@^6.4.0, rxjs@^6.6.0: version "6.6.3" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== @@ -7404,7 +7788,7 @@ semver@7.x, semver@^7.2.1, semver@^7.3.2: dependencies: lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: +semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -7480,6 +7864,15 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + slice-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" @@ -7890,7 +8283,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.0.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -7936,6 +8329,16 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + table@^6.0.4: version "6.0.7" resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" @@ -8213,6 +8616,16 @@ tsc-watch@^4.1.0: string-argv "^0.1.1" strip-ansi "^6.0.0" +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -8718,6 +9131,13 @@ write-pkg@^3.1.0: sort-keys "^2.0.0" write-json-file "^2.2.0" +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + ws@^7.2.3: version "7.4.2" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.2.tgz#782100048e54eb36fe9843363ab1c68672b261dd" From 86700339d76bf8daf659a59102c9901eb36eca43 Mon Sep 17 00:00:00 2001 From: Benno Kohrs Date: Wed, 6 Jan 2021 08:31:20 +0100 Subject: [PATCH 06/15] removed airbnb prettier settings because they where to hard --- .eslintrc.js | 4 +--- .prettierrc | 6 ++++-- package.json | 2 -- yarn.lock | 28 ++-------------------------- 4 files changed, 7 insertions(+), 33 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 59841737..5eb0abf8 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -14,7 +14,6 @@ module.exports = { 'eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier', - 'airbnb-base/legacy', ], parser: '@typescript-eslint/parser', parserOptions: { @@ -26,7 +25,6 @@ module.exports = { rules: { 'func-names': OFF, '@typescript-eslint/no-explicit-any': OFF, - 'guard-for-in': OFF, - 'no-restricted-syntax': OFF, + '@typescript-eslint/explicit-module-boundary-types': OFF, }, }; diff --git a/.prettierrc b/.prettierrc index a32cd472..4fd88bbe 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,9 +1,11 @@ { "arrowParens": "always", - "bracketSpacing": false, + "bracketSpacing": true, "jsxBracketSameLine": true, "printWidth": 80, + "tabWidth": 2, "proseWrap": "never", "singleQuote": true, - "trailingComma": "all" + "trailingComma": "all", + "endOfLine": "lf" } \ No newline at end of file diff --git a/package.json b/package.json index 590b5ad8..8cf2f5bb 100644 --- a/package.json +++ b/package.json @@ -37,8 +37,6 @@ "@typescript-eslint/eslint-plugin": "^4.12.0", "@typescript-eslint/parser": "^4.12.0", "eslint": "^7.17.0", - "eslint-config-airbnb-base": "^14.2.1", - "eslint-plugin-import": "^2.22.1", "eslint-plugin-prettier": "^3.3.1", "eslint-config-prettier": "^6.11.0", "eslint-plugin-node": "^11.1.0", diff --git a/yarn.lock b/yarn.lock index dbedc2e2..6d71500a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2832,11 +2832,6 @@ configstore@^5.0.1: write-file-atomic "^3.0.0" xdg-basedir "^4.0.0" -confusing-browser-globals@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" - integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== - console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" @@ -3464,15 +3459,6 @@ escodegen@^1.14.1: optionalDependencies: source-map "~0.6.1" -eslint-config-airbnb-base@^14.2.1: - version "14.2.1" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz#8a2eb38455dc5a312550193b319cdaeef042cd1e" - integrity sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA== - dependencies: - confusing-browser-globals "^1.0.10" - object.assign "^4.1.2" - object.entries "^1.1.2" - eslint-config-esnext@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/eslint-config-esnext/-/eslint-config-esnext-4.1.0.tgz#8695b858fcf40d28c1aedca181f700528c7b60c6" @@ -3529,7 +3515,7 @@ eslint-plugin-es@^3.0.0: eslint-utils "^2.0.0" regexpp "^3.0.0" -eslint-plugin-import@^2.14.0, eslint-plugin-import@^2.22.1: +eslint-plugin-import@^2.14.0: version "2.22.1" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== @@ -6619,7 +6605,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.1, object.assign@^4.1.2: +object.assign@^4.1.1: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== @@ -6629,16 +6615,6 @@ object.assign@^4.1.1, object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" -object.entries@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" - integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - has "^1.0.3" - object.getownpropertydescriptors@^2.0.3: version "2.1.1" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz#0dfda8d108074d9c563e80490c883b6661091544" From 296c51286372e402f6008f45d124f5112f1f87d3 Mon Sep 17 00:00:00 2001 From: Benno Kohrs Date: Wed, 6 Jan 2021 08:48:43 +0100 Subject: [PATCH 07/15] added comment in .prettierrc --- .prettierrc | 1 + 1 file changed, 1 insertion(+) diff --git a/.prettierrc b/.prettierrc index 4fd88bbe..45d5eab8 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,4 +1,5 @@ { + "_comment": "To apply prettier config to Webstorm https://intellij-support.jetbrains.com/hc/en-us/community/posts/360002745119-How-to-have-Reformat-Code-feature-behave-exactly-like-Prettier-", "arrowParens": "always", "bracketSpacing": true, "jsxBracketSameLine": true, From 3502ede5e8696e74f5decf29a6c9bb6c9b00f4cd Mon Sep 17 00:00:00 2001 From: Benno Kohrs Date: Wed, 6 Jan 2021 10:18:03 +0100 Subject: [PATCH 08/15] reformat whole core and fixed eslint issues --- .eslintrc.js | 2 + .../src/collection/collection.persistent.ts | 8 +- packages/core/src/collection/group.ts | 9 +- packages/core/src/collection/index.ts | 94 +++++++-------- packages/core/src/collection/item.ts | 2 +- packages/core/src/collection/selector.ts | 6 +- .../core/src/computed/computed.tracker.ts | 2 +- packages/core/src/computed/index.ts | 11 +- packages/core/src/event/index.ts | 12 +- packages/core/src/index.ts | 2 +- packages/core/src/integrations/index.ts | 2 +- packages/core/src/integrations/integration.ts | 2 +- packages/core/src/logger/index.ts | 36 ++++-- packages/core/src/runtime/index.ts | 6 +- packages/core/src/runtime/runtime.job.ts | 2 +- .../container/SubscriptionContainer.ts | 4 +- .../runtime/subscription/sub.controller.ts | 10 +- packages/core/src/state/index.ts | 12 +- packages/core/src/state/state.observer.ts | 9 +- packages/core/src/state/state.persistent.ts | 2 +- packages/core/src/storages/index.ts | 10 +- packages/core/src/storages/persistent.ts | 10 +- packages/core/src/utils.ts | 18 +-- .../core/tests/helper/test.integration.ts | 2 +- .../collection.persistent.integration.test.ts | 18 +-- packages/core/tests/unit/agile.test.ts | 24 +++- .../collection/collection.persistent.test.ts | 10 +- .../tests/unit/collection/collection.test.ts | 111 +++++++++--------- .../core/tests/unit/collection/group.test.ts | 57 ++++----- .../core/tests/unit/collection/item.test.ts | 16 +-- .../tests/unit/collection/selector.test.ts | 18 +-- .../core/tests/unit/computed/computed.test.ts | 6 +- .../unit/computed/computed.tracker.test.ts | 4 +- .../core/tests/unit/event/event.job.test.ts | 2 +- .../tests/unit/event/event.observer.test.ts | 6 +- packages/core/tests/unit/event/event.test.ts | 21 +++- .../unit/integrations/integration.test.ts | 12 +- .../unit/integrations/integrations.test.ts | 8 +- .../core/tests/unit/runtime/observer.test.ts | 19 +-- .../tests/unit/runtime/runtime.job.test.ts | 6 +- .../core/tests/unit/runtime/runtime.test.ts | 48 ++++---- .../CallbackSubscriptionContainer.test.ts | 8 +- .../ComponentSubscriptionContainer.test.ts | 6 +- .../container/SubscriptionContainer.test.ts | 6 +- .../subscription/sub.controller.test.ts | 22 ++-- .../tests/unit/state/state.observer.test.ts | 22 ++-- .../tests/unit/state/state.persistent.test.ts | 10 +- .../unit/state/state.runtime.job.test.ts | 5 +- packages/core/tests/unit/state/state.test.ts | 30 ++--- .../tests/unit/storages/persistent.test.ts | 20 ++-- .../core/tests/unit/storages/storage.test.ts | 6 +- .../core/tests/unit/storages/storages.test.ts | 10 +- packages/core/tests/unit/utils.test.ts | 86 +++++++++----- 53 files changed, 492 insertions(+), 398 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 5eb0abf8..86b85534 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -26,5 +26,7 @@ module.exports = { 'func-names': OFF, '@typescript-eslint/no-explicit-any': OFF, '@typescript-eslint/explicit-module-boundary-types': OFF, + '@typescript-eslint/ban-types': WARNING, + '@typescript-eslint/ban-ts-comment': WARNING, }, }; diff --git a/packages/core/src/collection/collection.persistent.ts b/packages/core/src/collection/collection.persistent.ts index fc61c4d0..17c28b4c 100644 --- a/packages/core/src/collection/collection.persistent.ts +++ b/packages/core/src/collection/collection.persistent.ts @@ -128,7 +128,7 @@ export class CollectionPersistent extends Persistent { } // Load Items into Collection - for (let itemKey of defaultGroup._value) { + for (const itemKey of defaultGroup._value) { const itemStorageKey = CollectionPersistent.getItemStorageKey( itemKey, _key, @@ -176,7 +176,7 @@ export class CollectionPersistent extends Persistent { // Persist default Group if (!defaultGroup.isPersisted) - defaultGroup.persist({followCollectionPersistKeyPattern: true}); + defaultGroup.persist({ followCollectionPersistKeyPattern: true }); // Add sideEffect to default Group which adds and removes Items from the Storage depending on the Group Value defaultGroup.addSideEffect( @@ -185,7 +185,7 @@ export class CollectionPersistent extends Persistent { ); // Persist Collection Items - for (let itemKey of defaultGroup._value) { + for (const itemKey of defaultGroup._value) { const item = this.collection().getItem(itemKey); const itemStorageKey = CollectionPersistent.getItemStorageKey( itemKey, @@ -227,7 +227,7 @@ export class CollectionPersistent extends Persistent { ); // Remove Collection Items from Storage - for (let itemKey of defaultGroup._value) { + for (const itemKey of defaultGroup._value) { const item = this.collection().getItem(itemKey); item?.persistent?.removePersistedValue(); } diff --git a/packages/core/src/collection/group.ts b/packages/core/src/collection/group.ts index 02c4b7a5..df1f0c62 100644 --- a/packages/core/src/collection/group.ts +++ b/packages/core/src/collection/group.ts @@ -151,7 +151,7 @@ export class Group extends State> { if (notExistingItemKeysInCollection.length >= _itemKeys.length) config.background = true; - this.set(newGroupValue, {background: config.background}); + this.set(newGroupValue, { background: config.background }); return this; } @@ -208,7 +208,7 @@ export class Group extends State> { ) config.background = true; - this.set(newGroupValue, {background: config.background}); + this.set(newGroupValue, { background: config.background }); return this; } @@ -228,7 +228,7 @@ export class Group extends State> { newItemKey: ItemKey, config: StateRuntimeJobConfigInterface = {}, ): this { - let newGroupValue = copy(this._value); + const newGroupValue = copy(this._value); newGroupValue.splice(newGroupValue.indexOf(oldItemKey), 1, newItemKey); this.set(newGroupValue, config); return this; @@ -299,7 +299,6 @@ export class Group extends State> { public rebuild() { const notFoundItemKeys: Array = []; // Item Keys that couldn't be found in Collection const groupItems: Array> = []; - let groupOutput: Array; // Create groupItems by finding Item at ItemKey in Collection this._value.forEach((itemKey) => { @@ -309,7 +308,7 @@ export class Group extends State> { }); // Create groupOutput out of groupItems - groupOutput = groupItems.map((item) => { + const groupOutput = groupItems.map((item) => { return item.getPublicValue(); }); diff --git a/packages/core/src/collection/index.ts b/packages/core/src/collection/index.ts index 2da2eb97..f88ee8e0 100644 --- a/packages/core/src/collection/index.ts +++ b/packages/core/src/collection/index.ts @@ -23,13 +23,13 @@ export class Collection { private initialConfig: CreateCollectionConfigInterface; public size = 0; // Amount of Items stored in Collection - public data: {[key: string]: Item} = {}; // Collection Data + public data: { [key: string]: Item } = {}; // Collection Data public _key?: CollectionKey; public isPersisted = false; // If Collection can be stored in Agile Storage (-> successfully integrated persistent) public persistent: CollectionPersistent | undefined; // Manages storing Collection Value into Storage - public groups: {[key: string]: Group} = {}; - public selectors: {[key: string]: Selector} = {}; + public groups: { [key: string]: Group } = {}; + public selectors: { [key: string]: Selector } = {}; /** * @public @@ -129,7 +129,7 @@ export class Collection { */ public Selector( initialKey: ItemKey, - config?: {key?: SelectorKey}, + config?: { key?: SelectorKey }, ): Selector { return new Selector(this, initialKey, config); } @@ -141,9 +141,9 @@ export class Collection { * @internal * Instantiates Groups */ - public initGroups(groups: {[key: string]: Group} | string[]) { + public initGroups(groups: { [key: string]: Group } | string[]) { if (!groups) return; - let groupsObject: {[key: string]: Group} = {}; + let groupsObject: { [key: string]: Group } = {}; // If groups is Array of GroupNames transform it to Group Object if (Array.isArray(groups)) { @@ -160,7 +160,7 @@ export class Collection { }); // Set Key/Name of Group to property Name - for (let key in groupsObject) + for (const key in groupsObject) if (!groupsObject[key]._key) groupsObject[key].setKey(key); this.groups = groupsObject; @@ -173,9 +173,9 @@ export class Collection { * @internal * Instantiates Selectors */ - public initSelectors(selectors: {[key: string]: Selector} | string[]) { + public initSelectors(selectors: { [key: string]: Selector } | string[]) { if (!selectors) return; - let selectorsObject: {[key: string]: Selector} = {}; + let selectorsObject: { [key: string]: Selector } = {}; // If selectors is Array of SelectorNames transform it to Selector Object if (Array.isArray(selectors)) { @@ -191,7 +191,7 @@ export class Collection { } else selectorsObject = selectors; // Set Key/Name of Selector to property Name - for (let key in selectorsObject) + for (const key in selectorsObject) if (!selectorsObject[key]._key) selectorsObject[key].setKey(key); this.selectors = selectorsObject; @@ -269,7 +269,7 @@ export class Collection { changes: DefaultItem | DataType, config: UpdateConfigInterface = {}, ): Item | undefined { - const item = this.getItem(itemKey, {notExisting: true}); + const item = this.getItem(itemKey, { notExisting: true }); const primaryKey = this.config.primaryKey; config = defineConfig(config, { addNewProperties: false, @@ -324,7 +324,7 @@ export class Collection { groupKey: GroupKey, initialItems: Array = [], ): Group { - let group = this.getGroup(groupKey, {notExisting: true}); + let group = this.getGroup(groupKey, { notExisting: true }); // Check if Group already exists if (group) { @@ -332,12 +332,12 @@ export class Collection { Agile.logger.warn(`Group with the name '${groupKey}' already exists!`); return group; } - group.set(initialItems, {overwrite: true}); + group.set(initialItems, { overwrite: true }); return group; } // Create Group - group = new Group(this, initialItems, {key: groupKey}); + group = new Group(this, initialItems, { key: groupKey }); this.groups[groupKey] = group; return group; @@ -396,7 +396,7 @@ export class Collection { * @param groupKey - Name/Key of Group */ public getGroupWithReference(groupKey: GroupKey): Group { - let group = this.getGroup(groupKey, {notExisting: true}); + let group = this.getGroup(groupKey, { notExisting: true }); // Create dummy Group to hold reference if (!group) { @@ -441,7 +441,7 @@ export class Collection { selectorKey: SelectorKey, itemKey: ItemKey, ): Selector { - let selector = this.getSelector(selectorKey, {notExisting: true}); + let selector = this.getSelector(selectorKey, { notExisting: true }); // Check if Selector already exists if (selector) { @@ -451,7 +451,7 @@ export class Collection { ); return selector; } - selector.select(itemKey, {overwrite: true}); + selector.select(itemKey, { overwrite: true }); return selector; } @@ -519,7 +519,7 @@ export class Collection { public getSelectorWithReference( selectorKey: SelectorKey, ): Selector { - let selector = this.getSelector(selectorKey, {notExisting: true}); + let selector = this.getSelector(selectorKey, { notExisting: true }); // Create dummy Selector to hold reference if (!selector) { @@ -603,7 +603,7 @@ export class Collection { * @param itemKey - Key/Name of Item */ public getItemWithReference(itemKey: ItemKey): Item { - let item = this.getItem(itemKey, {notExisting: true}); + let item = this.getItem(itemKey, { notExisting: true }); // Create dummy Item to hold reference if (!item) { @@ -637,7 +637,7 @@ export class Collection { itemKey: ItemKey | undefined, config: HasConfigInterface = {}, ): DataType | undefined { - let item = this.getItem(itemKey, config); + const item = this.getItem(itemKey, config); if (!item) return undefined; return item.value; } @@ -728,7 +728,7 @@ export class Collection { */ public getGroupCount(): number { let size = 0; - for (let group in this.groups) size++; + for (const group in this.groups) size++; return size; } @@ -741,7 +741,7 @@ export class Collection { */ public getSelectorCount(): number { let size = 0; - for (let selector in this.selectors) size++; + for (const selector in this.selectors) size++; return size; } @@ -758,10 +758,10 @@ export class Collection { this.size = 0; // Reset Groups - for (let key in this.groups) this.getGroup(key)?.reset(); + for (const key in this.groups) this.getGroup(key)?.reset(); // Reset Selectors - for (let key in this.selectors) this.getSelector(key)?.reset(); + for (const key in this.selectors) this.getSelector(key)?.reset(); } //========================================================================================================= @@ -803,7 +803,7 @@ export class Collection { newItemKey: ItemKey, config: UpdateItemKeyConfigInterface = {}, ): boolean { - const item = this.getItem(oldItemKey, {notExisting: true}); + const item = this.getItem(oldItemKey, { notExisting: true }); config = defineConfig(config, { background: false, }); @@ -833,15 +833,15 @@ export class Collection { ); // Update ItemKey in Groups - for (let groupKey in this.groups) { - const group = this.getGroup(groupKey, {notExisting: true}); + for (const groupKey in this.groups) { + const group = this.getGroup(groupKey, { notExisting: true }); if (!group || !group.has(oldItemKey)) continue; - group.replace(oldItemKey, newItemKey, {background: config.background}); + group.replace(oldItemKey, newItemKey, { background: config.background }); } // Update ItemKey in Selectors - for (let selectorKey in this.selectors) { - const selector = this.getSelector(selectorKey, {notExisting: true}); + for (const selectorKey in this.selectors) { + const selector = this.getSelector(selectorKey, { notExisting: true }); if (!selector) continue; // Reselect Item in existing Selector which has selected the newItemKey @@ -872,8 +872,8 @@ export class Collection { */ public getGroupKeysThatHaveItemKey(itemKey: ItemKey): Array { const groupKeys: Array = []; - for (let groupKey in this.groups) { - const group = this.getGroup(groupKey, {notExisting: true}); + for (const groupKey in this.groups) { + const group = this.getGroup(groupKey, { notExisting: true }); if (group?.has(itemKey)) groupKeys.push(groupKey); } return groupKeys; @@ -916,7 +916,7 @@ export class Collection { // Remove ItemKey from Groups _groupKeys.forEach((groupKey) => { - const group = this.getGroup(groupKey, {notExisting: true}); + const group = this.getGroup(groupKey, { notExisting: true }); if (!group || !group.has(itemKey)) return; group.remove(itemKey); removedFromGroupsCount++; @@ -943,12 +943,12 @@ export class Collection { const _itemKeys = normalizeArray(itemKeys); _itemKeys.forEach((itemKey) => { - const item = this.getItem(itemKey, {notExisting: true}); + const item = this.getItem(itemKey, { notExisting: true }); if (!item) return; // Remove Item from Groups - for (let groupKey in this.groups) { - const group = this.getGroup(groupKey, {notExisting: true}); + for (const groupKey in this.groups) { + const group = this.getGroup(groupKey, { notExisting: true }); if (group?.has(itemKey)) group?.remove(itemKey); } @@ -959,10 +959,10 @@ export class Collection { delete this.data[itemKey]; // Reselect Item in Selectors (to create new dummyItem that holds reference) - for (let selectorKey in this.selectors) { - const selector = this.getSelector(selectorKey, {notExisting: true}); + for (const selectorKey in this.selectors) { + const selector = this.getSelector(selectorKey, { notExisting: true }); if (selector?.hasSelected(itemKey)) - selector?.select(itemKey, {force: true}); + selector?.select(itemKey, { force: true }); } this.size--; @@ -993,7 +993,7 @@ export class Collection { return false; } - if (!_data.hasOwnProperty(primaryKey)) { + if (!Object.prototype.hasOwnProperty.call(_data, primaryKey)) { Agile.logger.error( `Collection '${this._key}' Item Data has to contain a primaryKey property called '${this.config.primaryKey}'!`, ); @@ -1001,15 +1001,15 @@ export class Collection { } const itemKey = _data[primaryKey]; - let item = this.getItem(itemKey, {notExisting: true}); + let item = this.getItem(itemKey, { notExisting: true }); const wasPlaceholder = item?.isPlaceholder || false; const createItem = !item; // Create or update Item if (!createItem && config.patch) - item?.patch(_data, {background: config.background}); + item?.patch(_data, { background: config.background }); if (!createItem && !config.patch) - item?.set(_data, {background: config.background}); + item?.set(_data, { background: config.background }); if (createItem) { item = new Item(this, _data); this.data[itemKey] = item; @@ -1040,7 +1040,7 @@ export class Collection { }); // Rebuild Groups that include ItemKey - for (let groupKey in this.groups) { + for (const groupKey in this.groups) { const group = this.getGroup(groupKey); if (group?.has(itemKey)) { // group.rebuild(); Not necessary because a sideEffect of the Group is to rebuild it self @@ -1055,7 +1055,7 @@ export class Collection { } } -export type DefaultItem = {[key: string]: any}; +export type DefaultItem = { [key: string]: any }; export type CollectionKey = string | number; export type ItemKey = string | number; @@ -1067,8 +1067,8 @@ export type ItemKey = string | number; * @param defaultGroupKey - Key/Name of Default Group that holds all collected Items */ export interface CreateCollectionConfigInterface { - groups?: {[key: string]: Group} | string[]; - selectors?: {[key: string]: Selector} | string[]; + groups?: { [key: string]: Group } | string[]; + selectors?: { [key: string]: Selector } | string[]; key?: CollectionKey; primaryKey?: string; defaultGroupKey?: ItemKey; diff --git a/packages/core/src/collection/item.ts b/packages/core/src/collection/item.ts index 95551b62..14c0e01e 100644 --- a/packages/core/src/collection/item.ts +++ b/packages/core/src/collection/item.ts @@ -71,7 +71,7 @@ export class Item extends State { // Update ItemKey in ItemValue (After updating the sideEffect because otherwise it calls the old sideEffect) if (config.updateItemValuePrimaryKey) this.patch( - {[this.collection().config.primaryKey]: value}, + { [this.collection().config.primaryKey]: value }, { sideEffects: config.sideEffects, background: config.background, diff --git a/packages/core/src/collection/selector.ts b/packages/core/src/collection/selector.ts index 5780755f..797f4d58 100644 --- a/packages/core/src/collection/selector.ts +++ b/packages/core/src/collection/selector.ts @@ -42,7 +42,7 @@ export class Selector extends State< this.isPlaceholder = true; // Initial Select - if (!config.isPlaceholder) this.select(itemKey, {overwrite: true}); + if (!config.isPlaceholder) this.select(itemKey, { overwrite: true }); } /** @@ -77,7 +77,7 @@ export class Selector extends State< const oldItem = this.collection().getItem(this._itemKey, { notExisting: true, }); // Because this.item might be outdated - let newItem = this.collection().getItemWithReference(itemKey); + const newItem = this.collection().getItemWithReference(itemKey); config = defineConfig(config, { background: false, sideEffects: true, @@ -92,7 +92,7 @@ export class Selector extends State< } // Unselect old Item - this.unselect({background: true}); + this.unselect({ background: true }); this._itemKey = itemKey; this.item = newItem; diff --git a/packages/core/src/computed/computed.tracker.ts b/packages/core/src/computed/computed.tracker.ts index 6f3b0d42..48d8b87e 100644 --- a/packages/core/src/computed/computed.tracker.ts +++ b/packages/core/src/computed/computed.tracker.ts @@ -1,4 +1,4 @@ -import {Observer} from '../runtime/observer'; +import { Observer } from '../runtime/observer'; export class ComputedTracker { static isTracking = false; diff --git a/packages/core/src/computed/index.ts b/packages/core/src/computed/index.ts index c626332a..7c1dcc80 100644 --- a/packages/core/src/computed/index.ts +++ b/packages/core/src/computed/index.ts @@ -3,8 +3,6 @@ import { Agile, defineConfig, Observer, - StorageKey, - StatePersistentConfigInterface, Event, StateConfigInterface, ComputedTracker, @@ -113,7 +111,7 @@ export class Computed extends State< // Auto track Observers the computeFunction might depend on ComputedTracker.track(); const computedValue = this.computeFunction(); - let foundDeps = ComputedTracker.getTrackedObservers(); + const foundDeps = ComputedTracker.getTrackedObservers(); // Handle foundDeps and hardCodedDeps const newDeps: Array = []; @@ -138,7 +136,7 @@ export class Computed extends State< */ public formatDeps(instances: Array): Array { const finalInstances: Array = []; - for (let instance of instances) { + for (const instance of instances) { if (instance instanceof Observer) { finalInstances.push(instance); continue; @@ -162,10 +160,7 @@ export class Computed extends State< return this; } - public persist( - keyOrConfig: StorageKey | StatePersistentConfigInterface = {}, - config: StatePersistentConfigInterface = {}, - ): this { + public persist(): this { Agile.logger.error("You can't use persist method on ComputedState!"); return this; } diff --git a/packages/core/src/event/index.ts b/packages/core/src/event/index.ts index ea74a9af..f3cc3eea 100644 --- a/packages/core/src/event/index.ts +++ b/packages/core/src/event/index.ts @@ -6,7 +6,7 @@ import { isFunction, Observer, } from '../internal'; -import {EventObserver} from './event.observer'; +import { EventObserver } from './event.observer'; export class Event { public agileInstance: () => Agile; @@ -16,7 +16,7 @@ export class Event { public _key?: EventKey; public uses = 0; - public callbacks: {[key: string]: EventCallbackFunction} = {}; // All 'subscribed' callback function + public callbacks: { [key: string]: EventCallbackFunction } = {}; // All 'subscribed' callback function public enabled = true; public observer: EventObserver; @@ -224,9 +224,11 @@ export class Event { public normalTrigger(payload: PayloadType, keys?: string[]) { // Call wished Callback Functions if (!keys) { - for (let key in this.callbacks) this.callbacks[key](payload); + for (const key in this.callbacks) this.callbacks[key](payload); } else { - for (let key of keys) this.callbacks[key](payload); + for (const key of keys) { + if (this.callbacks[key]) this.callbacks[key](payload); + } } // Cause rerender @@ -283,7 +285,7 @@ export class Event { } export type EventKey = string | number; -export type DefaultEventPayload = {[key: string]: any}; +export type DefaultEventPayload = { [key: string]: any }; export type EventCallbackFunction = ( payload: PayloadType, ) => void; diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 8e39f0be..6469f1fa 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,4 +1,4 @@ -import {Agile} from './internal'; +import { Agile } from './internal'; export * from './internal'; export default Agile; diff --git a/packages/core/src/integrations/index.ts b/packages/core/src/integrations/index.ts index 04073cc9..0b162049 100644 --- a/packages/core/src/integrations/index.ts +++ b/packages/core/src/integrations/index.ts @@ -1,4 +1,4 @@ -import {Agile, Integration} from '../internal'; +import { Agile, Integration } from '../internal'; export class Integrations { public agileInstance: () => Agile; diff --git a/packages/core/src/integrations/integration.ts b/packages/core/src/integrations/integration.ts index a40b757a..94c011db 100644 --- a/packages/core/src/integrations/integration.ts +++ b/packages/core/src/integrations/integration.ts @@ -1,4 +1,4 @@ -import {Agile} from '../internal'; +import { Agile } from '../internal'; export class Integration { public _key: IntegrationKey; diff --git a/packages/core/src/logger/index.ts b/packages/core/src/logger/index.ts index 22dd5a93..94edb091 100644 --- a/packages/core/src/logger/index.ts +++ b/packages/core/src/logger/index.ts @@ -12,7 +12,7 @@ export class Logger { public isActive: boolean; public config: LoggerConfigInterface; public allowedTags: string[] = []; - public loggerCategories: {[key: string]: LoggerCategoryInterface} = {}; // Holds all registered Logger Categories + public loggerCategories: { [key: string]: LoggerCategoryInterface } = {}; // Holds all registered Logger Categories public watchers: { [key: string]: LoggerWatcherConfigInterface; } = {}; @@ -132,13 +132,27 @@ export class Logger { }; } return { - log: () => {}, - debug: () => {}, - info: () => {}, - warn: () => {}, - error: () => {}, - trace: () => {}, - table: () => {}, + log: () => { + /* do nothing */ + }, + debug: () => { + /* do nothing */ + }, + info: () => { + /* do nothing */ + }, + warn: () => { + /* do nothing */ + }, + error: () => { + /* do nothing */ + }, + trace: () => { + /* do nothing */ + }, + table: () => { + /* do nothing */ + }, }; } @@ -220,7 +234,7 @@ export class Logger { // Build Prefix of Log const buildPrefix = (): string => { - let prefix: string = ''; + let prefix = ''; if (this.config.prefix) prefix = prefix.concat(this.config.prefix); if (loggerCategory.prefix) prefix = prefix.concat(' ' + loggerCategory.prefix); @@ -235,7 +249,7 @@ export class Logger { else data.unshift(buildPrefix()); // Call Watcher Callbacks - for (let key in this.watchers) { + for (const key in this.watchers) { const watcher = this.watchers[key]; if (loggerCategory.level >= (watcher.level || 0)) { watcher.callback(loggerCategory, data); @@ -246,7 +260,7 @@ export class Logger { if (this.config.canUseCustomStyles && loggerCategory.customStyle) { const newLogs: any[] = []; let hasStyledString = false; // NOTE: Only one style can be used for one String block! - for (let log of data) { + for (const log of data) { if (!hasStyledString && typeof log === 'string') { newLogs.push(`%c${log}`); newLogs.push(loggerCategory.customStyle); diff --git a/packages/core/src/runtime/index.ts b/packages/core/src/runtime/index.ts index f3dcb488..5f73a8e1 100644 --- a/packages/core/src/runtime/index.ts +++ b/packages/core/src/runtime/index.ts @@ -178,7 +178,7 @@ export class Runtime { if (!subscriptionContainer.isObjectBased) return; // Find Key of Job Observer in SubscriptionContainer - for (let key in subscriptionContainer.subsObject) + for (const key in subscriptionContainer.subsObject) if (subscriptionContainer.subsObject[key] === job.observer) foundKey = key; @@ -195,8 +195,8 @@ export class Runtime { */ public getObjectBasedProps( subscriptionContainer: SubscriptionContainer, - ): {[key: string]: any} { - const props: {[key: string]: any} = {}; + ): { [key: string]: any } { + const props: { [key: string]: any } = {}; // Map trough observerKeysToUpdate and build object out of Observer value subscriptionContainer.observerKeysToUpdate.forEach((updatedKey) => { diff --git a/packages/core/src/runtime/runtime.job.ts b/packages/core/src/runtime/runtime.job.ts index 8b8bbd74..2e6506a8 100644 --- a/packages/core/src/runtime/runtime.job.ts +++ b/packages/core/src/runtime/runtime.job.ts @@ -1,4 +1,4 @@ -import {Observer, defineConfig, SubscriptionContainer} from '../internal'; +import { Observer, defineConfig, SubscriptionContainer } from '../internal'; export class RuntimeJob { public _key?: RuntimeJobKey; diff --git a/packages/core/src/runtime/subscription/container/SubscriptionContainer.ts b/packages/core/src/runtime/subscription/container/SubscriptionContainer.ts index f67c0d7a..79517abd 100644 --- a/packages/core/src/runtime/subscription/container/SubscriptionContainer.ts +++ b/packages/core/src/runtime/subscription/container/SubscriptionContainer.ts @@ -1,4 +1,4 @@ -import {Observer} from '../../../internal'; +import { Observer } from '../../../internal'; export class SubscriptionContainer { public key?: SubscriptionContainerKeyType; @@ -8,7 +8,7 @@ export class SubscriptionContainer { // For Object based Subscription public isObjectBased = false; public observerKeysToUpdate: Array = []; // Holds temporary keys of Observers that got updated (Note: keys based on 'subsObject') - public subsObject?: {[key: string]: Observer}; // Same as subs but in Object shape + public subsObject?: { [key: string]: Observer }; // Same as subs but in Object shape /** * @internal diff --git a/packages/core/src/runtime/subscription/sub.controller.ts b/packages/core/src/runtime/subscription/sub.controller.ts index 8bdf830b..6f7383f0 100644 --- a/packages/core/src/runtime/subscription/sub.controller.ts +++ b/packages/core/src/runtime/subscription/sub.controller.ts @@ -37,17 +37,17 @@ export class SubController { */ public subscribeWithSubsObject( integrationInstance: any, - subs: {[key: string]: Observer} = {}, + subs: { [key: string]: Observer } = {}, key?: SubscriptionContainerKeyType, ): { subscriptionContainer: SubscriptionContainer; - props: {[key: string]: Observer['value']}; + props: { [key: string]: Observer['value'] }; } { - const props: {[key: string]: Observer['value']} = {}; + const props: { [key: string]: Observer['value'] } = {}; // Create subsArray const subsArray: Observer[] = []; - for (let key in subs) subsArray.push(subs[key]); + for (const key in subs) subsArray.push(subs[key]); // Register Subscription -> decide weather subscriptionInstance is callback or component based const subscriptionContainer = this.registerSubscription( @@ -61,7 +61,7 @@ export class SubController { subscriptionContainer.subsObject = subs; // Register subs and build props object - for (let key in subs) { + for (const key in subs) { const observer = subs[key]; observer.subscribe(subscriptionContainer); if (observer.value) props[key] = observer.value; diff --git a/packages/core/src/state/index.ts b/packages/core/src/state/index.ts index 6ea6b995..e7fb7d84 100644 --- a/packages/core/src/state/index.ts +++ b/packages/core/src/state/index.ts @@ -32,14 +32,14 @@ export class State { public observer: StateObserver; // Handles deps and subs of State and is like an interface to the Runtime public sideEffects: { - [key: string]: (properties?: {[key: string]: any}) => void; + [key: string]: (properties?: { [key: string]: any }) => void; } = {}; // SideEffects of State (will be executed in Runtime) public computeMethod?: ComputeMethod; public isPersisted = false; // If State can be stored in Agile Storage (-> successfully integrated persistent) public persistent: StatePersistent | undefined; // Manages storing State Value into Storage - public watchers: {[key: string]: StateWatcherCallback} = {}; + public watchers: { [key: string]: StateWatcherCallback } = {}; /** * @public @@ -70,7 +70,7 @@ export class State { this.isPlaceholder = true; // Initial Set - if (!config.isPlaceholder) this.set(initialValue, {overwrite: true}); + if (!config.isPlaceholder) this.set(initialValue, { overwrite: true }); } /** @@ -269,7 +269,7 @@ export class State { this.nextStateValue = flatMerge( copy(this.nextStateValue), targetWithChanges, - {addNewProperties: config.addNewProperties}, + { addNewProperties: config.addNewProperties }, ); // Ingest updated nextStateValue into Runtime @@ -543,7 +543,7 @@ export class State { */ public addSideEffect( key: string, - sideEffect: (properties?: {[key: string]: any}) => void, + sideEffect: (properties?: { [key: string]: any }) => void, ): this { if (!isFunction(sideEffect)) { Agile.logger.error('A sideEffect function has to be a function!'); @@ -589,7 +589,7 @@ export class State { */ public hasCorrectType(value: any): boolean { if (!this.valueType) return true; - let type: string = typeof value; + const type = typeof value; return type === this.valueType; } diff --git a/packages/core/src/state/state.observer.ts b/packages/core/src/state/state.observer.ts index 553eefa9..b62a1a46 100644 --- a/packages/core/src/state/state.observer.ts +++ b/packages/core/src/state/state.observer.ts @@ -29,7 +29,7 @@ export class StateObserver extends Observer { state: State, config: CreateStateObserverConfigInterface = {}, ) { - super(state.agileInstance(), {...config, ...{value: state._value}}); + super(state.agileInstance(), { ...config, ...{ value: state._value } }); this.state = () => state; this.nextStateValue = copy(state._value); } @@ -145,20 +145,21 @@ export class StateObserver extends Observer { const state = job.observer.state(); // Call Watchers Functions - for (let watcherKey in state.watchers) + for (const watcherKey in state.watchers) if (isFunction(state.watchers[watcherKey])) state.watchers[watcherKey](state.getPublicValue()); // Call SideEffect Functions if (job.config?.sideEffects) - for (let sideEffectKey in state.sideEffects) + for (const sideEffectKey in state.sideEffects) if (isFunction(state.sideEffects[sideEffectKey])) state.sideEffects[sideEffectKey](job.config); // Ingest Dependencies of Observer into Runtime state.observer.deps.forEach( (observer) => - observer instanceof StateObserver && observer.ingest({perform: false}), + observer instanceof StateObserver && + observer.ingest({ perform: false }), ); } } diff --git a/packages/core/src/state/state.persistent.ts b/packages/core/src/state/state.persistent.ts index a548fdc0..be7d749e 100644 --- a/packages/core/src/state/state.persistent.ts +++ b/packages/core/src/state/state.persistent.ts @@ -102,7 +102,7 @@ export class StatePersistent extends Persistent { if (!loadedValue) return false; // Assign loaded Value to State - this.state().set(loadedValue, {storage: false}); + this.state().set(loadedValue, { storage: false }); // Persist State, so that the Storage Value updates dynamically if the State updates await this.persistValue(_key); diff --git a/packages/core/src/storages/index.ts b/packages/core/src/storages/index.ts index 51433889..0fc20aab 100644 --- a/packages/core/src/storages/index.ts +++ b/packages/core/src/storages/index.ts @@ -12,7 +12,7 @@ export class Storages { public agileInstance: () => Agile; public defaultStorage?: Storage; - public storages: {[key: string]: Storage} = {}; // All registered Storages + public storages: { [key: string]: Storage } = {}; // All registered Storages public persistentInstances: Set = new Set(); /** @@ -55,7 +55,7 @@ export class Storages { remove: localStorage.removeItem.bind(localStorage), }, }); - return this.register(_localStorage, {default: true}); + return this.register(_localStorage, { default: true }); } //========================================================================================================= @@ -74,7 +74,7 @@ export class Storages { const hasRegisteredAnyStorage = notEqual(this.storages, {}); // Check if Storage already exists - if (this.storages.hasOwnProperty(storage.key)) { + if (Object.prototype.hasOwnProperty.call(this.storages, storage.key)) { Agile.logger.error( `Storage with the key/name '${storage.key}' already exists`, ); @@ -190,7 +190,7 @@ export class Storages { // Call set Method in specific Storages if (storageKeys) { - for (let storageKey of storageKeys) + for (const storageKey of storageKeys) this.getStorage(storageKey)?.set(key, value); return; } @@ -218,7 +218,7 @@ export class Storages { // Call remove Method in specific Storages if (storageKeys) { - for (let storageKey of storageKeys) + for (const storageKey of storageKeys) this.getStorage(storageKey)?.remove(key); return; } diff --git a/packages/core/src/storages/persistent.ts b/packages/core/src/storages/persistent.ts index c7466f77..898c2724 100644 --- a/packages/core/src/storages/persistent.ts +++ b/packages/core/src/storages/persistent.ts @@ -1,6 +1,6 @@ -import {Agile, defineConfig, StorageKey} from '../internal'; +import { Agile, defineConfig, StorageKey } from '../internal'; -export class Persistent { +export class Persistent { public agileInstance: () => Agile; public static placeHolderKey = '__THIS_IS_A_PLACEHOLDER__'; @@ -160,7 +160,7 @@ export class Persistent { * Loads Value from Storage * @return Success? */ - public async loadPersistedValue(key?: PersistentKey): Promise { + public async loadPersistedValue(): Promise { Agile.logger.error( `'loadPersistedValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!`, ); @@ -175,7 +175,7 @@ export class Persistent { * Saves/Updates Value in Storage * @return Success? */ - public async persistValue(key?: PersistentKey): Promise { + public async persistValue(): Promise { Agile.logger.error( `'persistValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!`, ); @@ -190,7 +190,7 @@ export class Persistent { * Removes Value form Storage * @return Success? */ - public async removePersistedValue(key?: PersistentKey): Promise { + public async removePersistedValue(): Promise { Agile.logger.error( `'removePersistedValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!`, ); diff --git a/packages/core/src/utils.ts b/packages/core/src/utils.ts index 499f2e49..6dc24cc5 100644 --- a/packages/core/src/utils.ts +++ b/packages/core/src/utils.ts @@ -1,4 +1,4 @@ -import {State, Agile, Event, Collection, Observer} from './internal'; +import { Agile } from './internal'; //========================================================================================================= // Copy @@ -13,8 +13,8 @@ export function copy(value: T): T { // Extra checking '!value' because 'typeof null === object' if (!value || typeof value !== 'object') return value; let temp; - let newObject: any = Array.isArray(value) ? [] : {}; - for (let property in value) { + const newObject: any = Array.isArray(value) ? [] : {}; + for (const property in value) { temp = value[property]; newObject[property] = typeof temp === 'object' ? copy(temp) : temp; } @@ -79,7 +79,7 @@ export function includesArray( */ export function normalizeArray( items?: DataType | Array, - config: {createUndefinedArray?: boolean} = {}, + config: { createUndefinedArray?: boolean } = {}, ): Array { config = defineConfig(config, { createUndefinedArray: false, // If it should return [] or [undefined] if the passed Item is undefined @@ -204,13 +204,13 @@ export function defineConfig( overwriteUndefinedProperties = true; if (overwriteUndefinedProperties) { - const finalConfig = {...defaults, ...config}; - for (let key in finalConfig) + const finalConfig = { ...defaults, ...config }; + for (const key in finalConfig) if (finalConfig[key] === undefined) finalConfig[key] = defaults[key]; return finalConfig; } - return {...defaults, ...config}; + return { ...defaults, ...config }; } //========================================================================================================= @@ -241,7 +241,7 @@ export function flatMerge( if (!_source) return _source; // Loop through source object an merge changes into it - let keys = Object.keys(changes); + const keys = Object.keys(changes); keys.forEach((property) => { if (!config.addNewProperties && !_source[property]) return; _source[property] = changes[property]; @@ -310,7 +310,7 @@ export function clone(instance: T): T { const objectClone = Object.assign(objectCopy, instance); // Copy Properties of Class - for (let key in objectClone) objectClone[key] = copy(objectClone[key]); + for (const key in objectClone) objectClone[key] = copy(objectClone[key]); return objectClone; } diff --git a/packages/core/tests/helper/test.integration.ts b/packages/core/tests/helper/test.integration.ts index ffc1dfdb..77ba684f 100644 --- a/packages/core/tests/helper/test.integration.ts +++ b/packages/core/tests/helper/test.integration.ts @@ -1,4 +1,4 @@ -import {Agile, Integration} from '../../src'; +import { Integration } from '../../src'; const testIntegration = new Integration({ key: 'test', diff --git a/packages/core/tests/integration/collection.persistent.integration.test.ts b/packages/core/tests/integration/collection.persistent.integration.test.ts index 36a7ac95..2de8a891 100644 --- a/packages/core/tests/integration/collection.persistent.integration.test.ts +++ b/packages/core/tests/integration/collection.persistent.integration.test.ts @@ -1,7 +1,7 @@ // Note: This is no optimized Test! // It was manly used to see if the collection persistent works during the development -import {Agile, Item} from '../../src'; +import { Agile, Item } from '../../src'; describe('Collection Persist Function Tests', () => { const myStorage: any = {}; @@ -41,7 +41,7 @@ describe('Collection Persist Function Tests', () => { const MY_COLLECTION = App.Collection(); // Test Collecting Item before Persisting - MY_COLLECTION.collect({id: 2, name: 'hans'}); + MY_COLLECTION.collect({ id: 2, name: 'hans' }); await new Promise((resolve) => setTimeout(resolve, 100)); expect(myStorage).toStrictEqual({}); @@ -63,7 +63,7 @@ describe('Collection Persist Function Tests', () => { expect(storageMethods.remove).toHaveBeenCalledTimes(0); // Test collecting new Item - MY_COLLECTION.collect({id: 1, name: 'frank'}); + MY_COLLECTION.collect({ id: 1, name: 'frank' }); await new Promise((resolve) => setTimeout(resolve, 100)); expect(myStorage).toStrictEqual({ @@ -94,7 +94,7 @@ describe('Collection Persist Function Tests', () => { expect(storageMethods.remove).toHaveBeenCalledTimes(0); // Test collecting new Item - MY_COLLECTION.collect({id: 3, name: 'günter'}); + MY_COLLECTION.collect({ id: 3, name: 'günter' }); await new Promise((resolve) => setTimeout(resolve, 100)); expect(myStorage).toStrictEqual({ @@ -110,7 +110,7 @@ describe('Collection Persist Function Tests', () => { expect(storageMethods.remove).toHaveBeenCalledTimes(0); // Test updating Item - MY_COLLECTION.update(3, {name: 'Benno'}); + MY_COLLECTION.update(3, { name: 'Benno' }); await new Promise((resolve) => setTimeout(resolve, 100)); expect(myStorage).toStrictEqual({ @@ -126,7 +126,7 @@ describe('Collection Persist Function Tests', () => { expect(storageMethods.remove).toHaveBeenCalledTimes(0); // Test updating Item with ItemKey - MY_COLLECTION.update(1, {id: 37, name: 'Arne'}); + MY_COLLECTION.update(1, { id: 37, name: 'Arne' }); await new Promise((resolve) => setTimeout(resolve, 100)); expect(myStorage).toStrictEqual({ @@ -165,9 +165,9 @@ describe('Collection Persist Function Tests', () => { expect(MY_COLLECTION.data['3']).toBeInstanceOf(Item); // Updating some Collection Stuff - MY_COLLECTION.update(3, {name: 'Angela'}); - MY_COLLECTION.collect({id: 4, name: 'Paul'}); - MY_COLLECTION.collect({id: 99, name: 'Jeff'}); + MY_COLLECTION.update(3, { name: 'Angela' }); + MY_COLLECTION.collect({ id: 4, name: 'Paul' }); + MY_COLLECTION.collect({ id: 99, name: 'Jeff' }); await new Promise((resolve) => setTimeout(resolve, 100)); expect(myStorage).toStrictEqual({ diff --git a/packages/core/tests/unit/agile.test.ts b/packages/core/tests/unit/agile.test.ts index 8db34386..58959710 100644 --- a/packages/core/tests/unit/agile.test.ts +++ b/packages/core/tests/unit/agile.test.ts @@ -158,9 +158,15 @@ describe('Agile Tests', () => { const storageConfig = { prefix: 'test', methods: { - get: () => {}, - set: () => {}, - remove: () => {}, + get: () => { + /* empty function */ + }, + set: () => { + /* empty function */ + }, + remove: () => { + /* empty function */ + }, }, key: 'myTestStorage', }; @@ -262,9 +268,15 @@ describe('Agile Tests', () => { const dummyStorage = new Storage({ prefix: 'test', methods: { - get: () => {}, - set: () => {}, - remove: () => {}, + get: () => { + /* empty function */ + }, + set: () => { + /* empty function */ + }, + remove: () => { + /* empty function */ + }, }, key: 'myTestStorage', }); diff --git a/packages/core/tests/unit/collection/collection.persistent.test.ts b/packages/core/tests/unit/collection/collection.persistent.test.ts index c8d57224..6a6e0c29 100644 --- a/packages/core/tests/unit/collection/collection.persistent.test.ts +++ b/packages/core/tests/unit/collection/collection.persistent.test.ts @@ -21,7 +21,7 @@ describe('CollectionPersistent Tests', () => { beforeEach(() => { jest.clearAllMocks(); - dummyAgile = new Agile({localStorage: false}); + dummyAgile = new Agile({ localStorage: false }); dummyCollection = new Collection(dummyAgile, { key: 'dummyCollectionKey', }); @@ -273,9 +273,9 @@ describe('CollectionPersistent Tests', () => { dummyAgile.storages.get = jest .fn() .mockReturnValueOnce(Promise.resolve(true)) - .mockReturnValueOnce({id: '1', name: 'hans'}) + .mockReturnValueOnce({ id: '1', name: 'hans' }) .mockReturnValueOnce(undefined) - .mockReturnValueOnce({id: '3', name: 'frank'}); + .mockReturnValueOnce({ id: '3', name: 'frank' }); dummyCollection.getGroup = jest.fn(() => dummyDefaultGroup as any); const response = await collectionPersistent.loadPersistedValue(); @@ -389,9 +389,9 @@ describe('CollectionPersistent Tests', () => { dummyAgile.storages.get = jest .fn() .mockReturnValueOnce(Promise.resolve(true)) - .mockReturnValueOnce({id: '1', name: 'hans'}) + .mockReturnValueOnce({ id: '1', name: 'hans' }) .mockReturnValueOnce(undefined) - .mockReturnValueOnce({id: '3', name: 'frank'}); + .mockReturnValueOnce({ id: '3', name: 'frank' }); dummyCollection.getGroup = jest.fn(() => dummyDefaultGroup as any); const response = await collectionPersistent.loadPersistedValue( diff --git a/packages/core/tests/unit/collection/collection.test.ts b/packages/core/tests/unit/collection/collection.test.ts index 71854374..40189198 100644 --- a/packages/core/tests/unit/collection/collection.test.ts +++ b/packages/core/tests/unit/collection/collection.test.ts @@ -16,11 +16,12 @@ describe('Collection Tests', () => { id: string; name: string; } + let dummyAgile: Agile; beforeEach(() => { jest.clearAllMocks(); - dummyAgile = new Agile({localStorage: false}); + dummyAgile = new Agile({ localStorage: false }); jest.spyOn(Collection.prototype, 'initSelectors'); jest.spyOn(Collection.prototype, 'initGroups'); @@ -144,7 +145,7 @@ describe('Collection Tests', () => { let collection: Collection; beforeEach(() => { - collection = new Collection(dummyAgile, {key: 'collectionKey'}); + collection = new Collection(dummyAgile, { key: 'collectionKey' }); }); it('should call setKey with passed value', () => { @@ -363,7 +364,7 @@ describe('Collection Tests', () => { it('should add Data to Collection and to default Group (default config)', () => { collection.setData = jest.fn(() => true); - collection.collect({id: '1', name: 'frank'}); + collection.collect({ id: '1', name: 'frank' }); expect(collection.setData).toHaveBeenCalledWith( { @@ -390,7 +391,7 @@ describe('Collection Tests', () => { it('should add Data to Collection and to default Group (specific config)', () => { collection.setData = jest.fn(() => true); - collection.collect({id: '1', name: 'frank'}, [], { + collection.collect({ id: '1', name: 'frank' }, [], { background: true, method: 'unshift', patch: true, @@ -423,8 +424,8 @@ describe('Collection Tests', () => { collection.collect( [ - {id: '1', name: 'frank'}, - {id: '2', name: 'hans'}, + { id: '1', name: 'frank' }, + { id: '2', name: 'hans' }, ], ['dummyGroup1', 'dummyGroup2'], ); @@ -482,7 +483,7 @@ describe('Collection Tests', () => { it("should call setData and shouldn't add Items to passed Groups if setData failed (default config)", () => { collection.setData = jest.fn(() => false); - collection.collect({id: '1', name: 'frank'}, [ + collection.collect({ id: '1', name: 'frank' }, [ 'dummyGroup1', 'dummyGroup2', ]); @@ -515,7 +516,7 @@ describe('Collection Tests', () => { return notExistingGroup as any; }); - collection.collect({id: '1', name: 'frank'}, 'notExistingGroup'); + collection.collect({ id: '1', name: 'frank' }, 'notExistingGroup'); expect(collection.setData).toHaveBeenCalledWith( { @@ -548,11 +549,11 @@ describe('Collection Tests', () => { collection.collect( [ - {id: '1', name: 'frank'}, - {id: '2', name: 'hans'}, + { id: '1', name: 'frank' }, + { id: '2', name: 'hans' }, ], [], - {select: true}, + { select: true }, ); expect(collection.createSelector).toHaveBeenCalledWith('1', '1'); @@ -565,20 +566,20 @@ describe('Collection Tests', () => { collection.collect( [ - {id: '1', name: 'frank'}, - {id: '2', name: 'hans'}, + { id: '1', name: 'frank' }, + { id: '2', name: 'hans' }, ], [], - {forEachItem: forEachItemMock}, + { forEachItem: forEachItemMock }, ); expect(forEachItemMock).toHaveBeenCalledWith( - {id: '1', name: 'frank'}, + { id: '1', name: 'frank' }, '1', 0, ); expect(forEachItemMock).toHaveBeenCalledWith( - {id: '2', name: 'hans'}, + { id: '2', name: 'hans' }, '2', 1, ); @@ -589,7 +590,7 @@ describe('Collection Tests', () => { let dummyItem: Item; beforeEach(() => { - dummyItem = new Item(collection, {id: 'dummyItem', name: 'frank'}); + dummyItem = new Item(collection, { id: 'dummyItem', name: 'frank' }); collection.data = { dummyItem: dummyItem, }; @@ -599,7 +600,7 @@ describe('Collection Tests', () => { }); it('should update existing Item with valid changes Object (default config)', () => { - const response = collection.update('dummyItem', {name: 'hans'}); + const response = collection.update('dummyItem', { name: 'hans' }); expect(response).toBe(dummyItem); expect(console.error).not.toHaveBeenCalled(); @@ -618,7 +619,7 @@ describe('Collection Tests', () => { it('should update existing Item with valid changes Object (specific config)', () => { const response = collection.update( 'dummyItem', - {name: 'hans'}, + { name: 'hans' }, { addNewProperties: true, background: true, @@ -642,7 +643,7 @@ describe('Collection Tests', () => { it('should update existing placeholder Item with valid changes Object (default config)', () => { dummyItem.isPlaceholder = true; - const response = collection.update('dummyItem', {name: 'hans'}); + const response = collection.update('dummyItem', { name: 'hans' }); expect(response).toBe(dummyItem); expect(console.error).not.toHaveBeenCalled(); @@ -659,7 +660,7 @@ describe('Collection Tests', () => { }); it("shouldn't update not existing Item and should print error", () => { - const response = collection.update('notExisting', {name: 'hans'}); + const response = collection.update('notExisting', { name: 'hans' }); expect(response).toBeUndefined(); expect(console.error).toHaveBeenCalledWith( @@ -715,12 +716,12 @@ describe('Collection Tests', () => { let dummyItem: Item; beforeEach(() => { - dummyItem = new Item(collection, {id: 'dummyItem', name: 'frank'}); + dummyItem = new Item(collection, { id: 'dummyItem', name: 'frank' }); collection.data = { dummyItem: dummyItem, }; - dummyGroup = new Group(collection, [], {key: 'dummyGroup'}); + dummyGroup = new Group(collection, [], { key: 'dummyGroup' }); collection.groups = { dummyGroup: dummyGroup, }; @@ -785,7 +786,7 @@ describe('Collection Tests', () => { it('should call getGroup and return true if getGroup returns Group (specific config)', () => { collection.getGroup = jest.fn(() => dummyGroup as any); - const response = collection.hasGroup('test', {notExisting: true}); + const response = collection.hasGroup('test', { notExisting: true }); expect(response).toBeTruthy(); expect(collection.getGroup).toHaveBeenCalledWith('test', { @@ -807,7 +808,7 @@ describe('Collection Tests', () => { let dummyGroup: Group; beforeEach(() => { - dummyGroup = new Group(collection, [], {key: 'dummyGroup'}); + dummyGroup = new Group(collection, [], { key: 'dummyGroup' }); collection.groups = { dummyGroup: dummyGroup, }; @@ -858,7 +859,7 @@ describe('Collection Tests', () => { let dummyGroup: Group; beforeEach(() => { - dummyGroup = new Group(collection, [], {key: 'dummyGroup'}); + dummyGroup = new Group(collection, [], { key: 'dummyGroup' }); collection.groups = { dummyGroup: dummyGroup, }; @@ -890,7 +891,7 @@ describe('Collection Tests', () => { let dummyGroup: Group; beforeEach(() => { - dummyGroup = new Group(collection, [], {key: 'dummyGroup'}); + dummyGroup = new Group(collection, [], { key: 'dummyGroup' }); collection.groups = { dummyGroup: dummyGroup, }; @@ -917,7 +918,7 @@ describe('Collection Tests', () => { let dummyItem: Item; beforeEach(() => { - dummyItem = new Item(collection, {id: 'dummyItem', name: 'frank'}); + dummyItem = new Item(collection, { id: 'dummyItem', name: 'frank' }); collection.data = { dummyItem: dummyItem, }; @@ -995,7 +996,7 @@ describe('Collection Tests', () => { it('should call getSelector and return true if getSelector returns Selector (specific config)', () => { collection.getSelector = jest.fn(() => dummySelector as any); - const response = collection.hasSelector('test', {notExisting: true}); + const response = collection.hasSelector('test', { notExisting: true }); expect(response).toBeTruthy(); expect(collection.getSelector).toHaveBeenCalledWith('test', { @@ -1139,7 +1140,7 @@ describe('Collection Tests', () => { let dummyItem: Item; beforeEach(() => { - dummyItem = new Item(collection, {id: '1', name: 'Jeff'}); + dummyItem = new Item(collection, { id: '1', name: 'Jeff' }); collection.getItem = jest.fn(); }); @@ -1156,7 +1157,7 @@ describe('Collection Tests', () => { it('should call getItem and return true if getItem returns Item (specific config)', () => { collection.getItem = jest.fn(() => dummyItem); - const response = collection.hasItem('test', {notExisting: true}); + const response = collection.hasItem('test', { notExisting: true }); expect(response).toBeTruthy(); expect(collection.getItem).toHaveBeenCalledWith('test', { @@ -1178,7 +1179,7 @@ describe('Collection Tests', () => { let dummyItem: Item; beforeEach(() => { - dummyItem = new Item(collection, {id: '1', name: 'Jeff'}); + dummyItem = new Item(collection, { id: '1', name: 'Jeff' }); collection.data = { ['1']: dummyItem, }; @@ -1229,7 +1230,7 @@ describe('Collection Tests', () => { let dummyItem: Item; beforeEach(() => { - dummyItem = new Item(collection, {id: '1', name: 'Jeff'}); + dummyItem = new Item(collection, { id: '1', name: 'Jeff' }); collection.data = { ['1']: dummyItem, }; @@ -1261,7 +1262,7 @@ describe('Collection Tests', () => { let dummyItem: Item; beforeEach(() => { - dummyItem = new Item(collection, {id: '1', name: 'Jeff'}); + dummyItem = new Item(collection, { id: '1', name: 'Jeff' }); collection.data = { ['1']: dummyItem, }; @@ -1442,11 +1443,11 @@ describe('Collection Tests', () => { let dummyItem: Item; beforeEach(() => { - dummyItem = new Item(collection, {id: 'dummyItem', name: 'frank'}); + dummyItem = new Item(collection, { id: 'dummyItem', name: 'frank' }); collection.data = { dummyItem: dummyItem, }; - dummyGroup = new Group(collection, [], {key: 'dummyGroup'}); + dummyGroup = new Group(collection, [], { key: 'dummyGroup' }); collection.groups = { dummyGroup: dummyGroup, }; @@ -1476,8 +1477,8 @@ describe('Collection Tests', () => { let dummyGroup2: Group; beforeEach(() => { - dummyGroup1 = new Group(collection, [], {key: 'dummyGroup1'}); - dummyGroup2 = new Group(collection, [], {key: 'dummyGroup2'}); + dummyGroup1 = new Group(collection, [], { key: 'dummyGroup1' }); + dummyGroup2 = new Group(collection, [], { key: 'dummyGroup2' }); collection.groups = { dummyGroup1: dummyGroup1, dummyGroup2: dummyGroup2, @@ -1528,9 +1529,9 @@ describe('Collection Tests', () => { let dummyItem2: Item; beforeEach(() => { - dummyItem1 = new Item(collection, {id: 'dummyItem1', name: 'Jeff'}); + dummyItem1 = new Item(collection, { id: 'dummyItem1', name: 'Jeff' }); dummyItem1.persistent = new StatePersistent(dummyItem1); - dummyItem2 = new Item(collection, {id: 'dummyItem2', name: 'Hans'}); + dummyItem2 = new Item(collection, { id: 'dummyItem2', name: 'Hans' }); dummyItem2.persistent = new StatePersistent(dummyItem2); collection.data = { dummyItem1: dummyItem1, @@ -1857,9 +1858,9 @@ describe('Collection Tests', () => { let dummyItem2: Item; beforeEach(() => { - dummyItem1 = new Item(collection, {id: 'dummyItem1', name: 'Jeff'}); + dummyItem1 = new Item(collection, { id: 'dummyItem1', name: 'Jeff' }); dummyItem1.persistent = new StatePersistent(dummyItem1); - dummyItem2 = new Item(collection, {id: 'dummyItem2', name: 'Hans'}); + dummyItem2 = new Item(collection, { id: 'dummyItem2', name: 'Hans' }); dummyItem2.persistent = new StatePersistent(dummyItem2); collection.data = { dummyItem1: dummyItem1, @@ -1948,7 +1949,7 @@ describe('Collection Tests', () => { let dummyItem1: Item; beforeEach(() => { - dummyItem1 = new Item(collection, {id: 'dummyItem1', name: 'Jeff'}); + dummyItem1 = new Item(collection, { id: 'dummyItem1', name: 'Jeff' }); collection.data = { dummyItem1: dummyItem1, }; @@ -1959,7 +1960,7 @@ describe('Collection Tests', () => { }); it('should create new Item out of valid Data, rebuild Groups and increase size (default config)', () => { - const response = collection.setData({id: 'dummyItem2', name: 'Hans'}); + const response = collection.setData({ id: 'dummyItem2', name: 'Hans' }); expect(response).toBeTruthy(); expect(collection.data).toHaveProperty('dummyItem1'); @@ -1984,7 +1985,7 @@ describe('Collection Tests', () => { }); it("shouldn't create new Item if passed Data has no primaryKey", () => { - const response = collection.setData({name: 'Frank'} as any); + const response = collection.setData({ name: 'Frank' } as any); expect(console.error).toHaveBeenCalledWith( `Agile Error: Collection '${collection._key}' Item Data has to contain a primaryKey property called '${collection.config.primaryKey}'!`, @@ -2007,8 +2008,8 @@ describe('Collection Tests', () => { expect(collection.size).toBe(1); expect(dummyItem1.set).toHaveBeenCalledWith( - {id: 'dummyItem1', name: 'Dieter'}, - {background: false}, + { id: 'dummyItem1', name: 'Dieter' }, + { background: false }, ); expect(dummyItem1.patch).not.toHaveBeenCalled(); }); @@ -2019,7 +2020,7 @@ describe('Collection Tests', () => { id: 'dummyItem1', name: 'Dieter', }, - {background: true}, + { background: true }, ); expect(response).toBeTruthy(); @@ -2029,8 +2030,8 @@ describe('Collection Tests', () => { expect(collection.size).toBe(1); expect(dummyItem1.set).toHaveBeenCalledWith( - {id: 'dummyItem1', name: 'Dieter'}, - {background: true}, + { id: 'dummyItem1', name: 'Dieter' }, + { background: true }, ); expect(dummyItem1.patch).not.toHaveBeenCalled(); }); @@ -2041,7 +2042,7 @@ describe('Collection Tests', () => { id: 'dummyItem1', name: 'Dieter', }, - {patch: true, background: true}, + { patch: true, background: true }, ); expect(response).toBeTruthy(); @@ -2052,8 +2053,8 @@ describe('Collection Tests', () => { expect(dummyItem1.set).not.toHaveBeenCalled(); expect(dummyItem1.patch).toHaveBeenCalledWith( - {id: 'dummyItem1', name: 'Dieter'}, - {background: true}, + { id: 'dummyItem1', name: 'Dieter' }, + { background: true }, ); }); @@ -2073,8 +2074,8 @@ describe('Collection Tests', () => { expect(collection.size).toBe(1); expect(dummyItem1.set).toHaveBeenCalledWith( - {id: 'dummyItem1', name: 'Dieter'}, - {background: false}, + { id: 'dummyItem1', name: 'Dieter' }, + { background: false }, ); }); }); diff --git a/packages/core/tests/unit/collection/group.test.ts b/packages/core/tests/unit/collection/group.test.ts index 358a6527..a7468099 100644 --- a/packages/core/tests/unit/collection/group.test.ts +++ b/packages/core/tests/unit/collection/group.test.ts @@ -14,13 +14,14 @@ describe('Group Tests', () => { id: string; name: string; } + let dummyAgile: Agile; let dummyCollection: Collection; beforeEach(() => { jest.clearAllMocks(); - dummyAgile = new Agile({localStorage: false}); + dummyAgile = new Agile({ localStorage: false }); dummyCollection = new Collection(dummyAgile, { key: 'dummyCollection', }); @@ -134,8 +135,8 @@ describe('Group Tests', () => { group = new Group(dummyCollection, [], { key: 'groupKey', }); - dummyCollection.collect({id: 'dummyItem1Key', name: 'coolName'}); - dummyCollection.collect({id: 'dummyItem2Key', name: 'coolName'}); + dummyCollection.collect({ id: 'dummyItem1Key', name: 'coolName' }); + dummyCollection.collect({ id: 'dummyItem2Key', name: 'coolName' }); dummyItem1 = dummyCollection.getItem('dummyItem1Key'); dummyItem2 = dummyCollection.getItem('dummyItem2Key'); dummyItem3 = new Item(dummyCollection, { @@ -151,15 +152,15 @@ describe('Group Tests', () => { it('should return output of Group and call ComputedTracker.tracked', () => { group._output = [ - {id: '1', name: 'Frank'}, - {id: '2', name: 'Hans'}, + { id: '1', name: 'Frank' }, + { id: '2', name: 'Hans' }, ]; const response = group.output; expect(response).toStrictEqual([ - {id: '1', name: 'Frank'}, - {id: '2', name: 'Hans'}, + { id: '1', name: 'Frank' }, + { id: '2', name: 'Hans' }, ]); expect(ComputedTracker.tracked).toHaveBeenCalledWith(group.observer); }); @@ -168,13 +169,13 @@ describe('Group Tests', () => { describe('output set function tests', () => { it('should set output to passed value', () => { group.output = [ - {id: '12', name: 'Hans der 3'}, - {id: '99', name: 'Frank'}, + { id: '12', name: 'Hans der 3' }, + { id: '99', name: 'Frank' }, ]; expect(group._output).toStrictEqual([ - {id: '12', name: 'Hans der 3'}, - {id: '99', name: 'Frank'}, + { id: '12', name: 'Hans der 3' }, + { id: '99', name: 'Frank' }, ]); }); }); @@ -242,17 +243,17 @@ describe('Group Tests', () => { expect(console.error).not.toHaveBeenCalled(); expect(group.set).toHaveBeenCalledWith( ['dummyItem2Key', 'dummyItem3Key'], - {background: false}, + { background: false }, ); }); it('should remove Item from Group in background (config.background = true)', () => { - group.remove('dummyItem1Key', {background: true}); + group.remove('dummyItem1Key', { background: true }); expect(console.error).not.toHaveBeenCalled(); expect(group.set).toHaveBeenCalledWith( ['dummyItem2Key', 'dummyItem3Key'], - {background: true}, + { background: true }, ); }); @@ -271,7 +272,7 @@ describe('Group Tests', () => { expect(console.error).not.toHaveBeenCalled(); expect(group.set).toHaveBeenCalledWith( ['dummyItem1Key', 'dummyItem2Key'], - {background: true}, + { background: true }, ); }); @@ -312,25 +313,25 @@ describe('Group Tests', () => { expect(group.set).toHaveBeenCalledWith( ['placeholder', 'dummyItem1Key', 'placeholder', 'dummyItem2Key'], - {background: false}, + { background: false }, ); }); it("should add Item to Group at the beginning not in background (config.method = 'unshift')", () => { - group.add('dummyItem2Key', {method: 'unshift'}); + group.add('dummyItem2Key', { method: 'unshift' }); expect(group.set).toHaveBeenCalledWith( ['dummyItem2Key', 'placeholder', 'dummyItem1Key', 'placeholder'], - {background: false}, + { background: false }, ); }); it('should add Item to Group at the end in background (config.background = true)', () => { - group.add('dummyItem2Key', {background: true}); + group.add('dummyItem2Key', { background: true }); expect(group.set).toHaveBeenCalledWith( ['placeholder', 'dummyItem1Key', 'placeholder', 'dummyItem2Key'], - {background: true}, + { background: true }, ); }); @@ -339,7 +340,7 @@ describe('Group Tests', () => { expect(group.set).toHaveBeenCalledWith( ['placeholder', 'dummyItem1Key', 'placeholder', 'dummyItem3Key'], - {background: true}, + { background: true }, ); }); @@ -350,11 +351,11 @@ describe('Group Tests', () => { }); it('should remove existingItem and add it again at the end to the Group not in background (config.overwrite = true)', () => { - group.add('dummyItem1Key', {overwrite: true}); + group.add('dummyItem1Key', { overwrite: true }); expect(group.set).toHaveBeenCalledWith( ['placeholder', 'placeholder', 'dummyItem1Key'], - {background: false}, + { background: false }, ); }); @@ -369,7 +370,7 @@ describe('Group Tests', () => { 'dummyItem2Key', 'dummyItem3Key', ], - {background: false}, + { background: false }, ); }); @@ -378,7 +379,7 @@ describe('Group Tests', () => { expect(group.set).toHaveBeenCalledWith( ['placeholder', 'dummyItem1Key', 'placeholder', 'dummyItem3Key'], - {background: true}, + { background: true }, ); }); }); @@ -424,7 +425,7 @@ describe('Group Tests', () => { }); it('should persist Group with GroupKey (specific config)', () => { - group.persist({instantiate: false, storageKeys: ['test1', 'test2']}); + group.persist({ instantiate: false, storageKeys: ['test1', 'test2'] }); expect(State.prototype.persist).toHaveBeenCalledWith(group._key, { instantiate: false, @@ -454,7 +455,7 @@ describe('Group Tests', () => { }); it('should persist Group with formatted GroupKey (config.followCollectionPersistKeyPattern)', () => { - group.persist({followCollectionPersistKeyPattern: true}); + group.persist({ followCollectionPersistKeyPattern: true }); expect(State.prototype.persist).toHaveBeenCalledWith( CollectionPersistent.getGroupStorageKey( @@ -469,7 +470,7 @@ describe('Group Tests', () => { }); it('should persist Group with formatted passed Key (config.followCollectionPersistKeyPattern)', () => { - group.persist('dummyKey', {followCollectionPersistKeyPattern: true}); + group.persist('dummyKey', { followCollectionPersistKeyPattern: true }); expect(State.prototype.persist).toHaveBeenCalledWith( CollectionPersistent.getGroupStorageKey( diff --git a/packages/core/tests/unit/collection/item.test.ts b/packages/core/tests/unit/collection/item.test.ts index 975132ee..6492da19 100644 --- a/packages/core/tests/unit/collection/item.test.ts +++ b/packages/core/tests/unit/collection/item.test.ts @@ -1,11 +1,11 @@ -import {Item, Collection, Agile, StateObserver, State} from '../../../src'; +import { Item, Collection, Agile, StateObserver, State } from '../../../src'; describe('Item Tests', () => { let dummyAgile: Agile; let dummyCollection: Collection; beforeEach(() => { - dummyAgile = new Agile({localStorage: false}); + dummyAgile = new Agile({ localStorage: false }); dummyCollection = new Collection(dummyAgile); jest.spyOn(State.prototype, 'setKey'); @@ -16,13 +16,13 @@ describe('Item Tests', () => { // Overwrite setKey once to not call it jest.spyOn(Item.prototype, 'setKey').mockReturnValueOnce(undefined); - const dummyData = {id: 'dummyId', name: 'dummyName'}; + const dummyData = { id: 'dummyId', name: 'dummyName' }; const item = new Item(dummyCollection, dummyData); expect(item.collection()).toBe(dummyCollection); expect(item.setKey).toHaveBeenCalledWith( dummyData[dummyCollection.config.primaryKey], - {updateItemValuePrimaryKey: false}, + { updateItemValuePrimaryKey: false }, ); expect(item._key).toBe(dummyData[dummyCollection.config.primaryKey]); @@ -50,7 +50,7 @@ describe('Item Tests', () => { // Overwrite setKey once to not call it jest.spyOn(Item.prototype, 'setKey').mockReturnValueOnce(undefined); - const dummyData = {id: 'dummyId', name: 'dummyName'}; + const dummyData = { id: 'dummyId', name: 'dummyName' }; const item = new Item(dummyCollection, dummyData, { isPlaceholder: true, }); @@ -58,7 +58,7 @@ describe('Item Tests', () => { expect(item.collection()).toBe(dummyCollection); expect(item.setKey).toHaveBeenCalledWith( dummyData[dummyCollection.config.primaryKey], - {updateItemValuePrimaryKey: false}, + { updateItemValuePrimaryKey: false }, ); expect(item._key).toBe(dummyData[dummyCollection.config.primaryKey]); @@ -86,7 +86,7 @@ describe('Item Tests', () => { let item: Item; beforeEach(() => { - item = new Item(dummyCollection, {id: 'dummyId', name: 'dummyName'}); + item = new Item(dummyCollection, { id: 'dummyId', name: 'dummyName' }); item.removeSideEffect = jest.fn(); item.patch = jest.fn(); @@ -195,7 +195,7 @@ describe('Item Tests', () => { expect( dummyCollection.rebuildGroupsThatIncludeItemKey, - ).toHaveBeenCalledWith('myNewKey', {dummy: 'property'}); + ).toHaveBeenCalledWith('myNewKey', { dummy: 'property' }); }); }); }); diff --git a/packages/core/tests/unit/collection/selector.test.ts b/packages/core/tests/unit/collection/selector.test.ts index 0a2d78bb..38f8552d 100644 --- a/packages/core/tests/unit/collection/selector.test.ts +++ b/packages/core/tests/unit/collection/selector.test.ts @@ -1,4 +1,4 @@ -import {Selector, Agile, Collection, StateObserver, Item} from '../../../src'; +import { Selector, Agile, Collection, StateObserver, Item } from '../../../src'; describe('Selector Tests', () => { interface ItemInterface { @@ -11,7 +11,7 @@ describe('Selector Tests', () => { beforeEach(() => { jest.clearAllMocks(); - dummyAgile = new Agile({localStorage: false}); + dummyAgile = new Agile({ localStorage: false }); dummyCollection = new Collection(dummyAgile); jest.spyOn(Selector.prototype, 'select'); @@ -174,7 +174,7 @@ describe('Selector Tests', () => { expect(selector._itemKey).toBe('dummyItem2'); expect(selector.item).toBe(dummyItem2); - expect(selector.unselect).toHaveBeenCalledWith({background: true}); + expect(selector.unselect).toHaveBeenCalledWith({ background: true }); expect(selector.rebuildSelector).toHaveBeenCalledWith({ background: false, sideEffects: true, @@ -206,7 +206,7 @@ describe('Selector Tests', () => { expect(selector._itemKey).toBe('dummyItem2'); expect(selector.item).toBe(dummyItem2); - expect(selector.unselect).toHaveBeenCalledWith({background: true}); + expect(selector.unselect).toHaveBeenCalledWith({ background: true }); expect(selector.rebuildSelector).toHaveBeenCalledWith({ background: true, sideEffects: false, @@ -246,7 +246,7 @@ describe('Selector Tests', () => { it('should be able to select selected Item again (config.force = true)', () => { dummyCollection.getItemWithReference = jest.fn(() => dummyItem1); - selector.select('dummyItem1', {force: true}); + selector.select('dummyItem1', { force: true }); expect(console.warn).not.toHaveBeenCalled(); @@ -256,7 +256,7 @@ describe('Selector Tests', () => { expect(selector._itemKey).toBe('dummyItem1'); expect(selector.item).toBe(dummyItem1); - expect(selector.unselect).toHaveBeenCalledWith({background: true}); + expect(selector.unselect).toHaveBeenCalledWith({ background: true }); expect(selector.rebuildSelector).toHaveBeenCalledWith({ background: false, sideEffects: true, @@ -283,7 +283,7 @@ describe('Selector Tests', () => { ); expect(selector._itemKey).toBe('dummyItem2'); expect(selector.item).toBe(dummyItem2); - expect(selector.unselect).toHaveBeenCalledWith({background: true}); + expect(selector.unselect).toHaveBeenCalledWith({ background: true }); expect(selector.rebuildSelector).toHaveBeenCalledWith({ background: false, sideEffects: true, @@ -303,14 +303,14 @@ describe('Selector Tests', () => { dummyCollection.getItemWithReference = jest.fn(() => dummyItem2); dummyItem1.isPlaceholder = true; - selector.select('dummyItem2', {overwrite: false}); + selector.select('dummyItem2', { overwrite: false }); expect(dummyCollection.getItemWithReference).toHaveBeenCalledWith( 'dummyItem2', ); expect(selector._itemKey).toBe('dummyItem2'); expect(selector.item).toBe(dummyItem2); - expect(selector.unselect).toHaveBeenCalledWith({background: true}); + expect(selector.unselect).toHaveBeenCalledWith({ background: true }); expect(selector.rebuildSelector).toHaveBeenCalledWith({ background: false, sideEffects: true, diff --git a/packages/core/tests/unit/computed/computed.test.ts b/packages/core/tests/unit/computed/computed.test.ts index 5ed07f19..ba0c083a 100644 --- a/packages/core/tests/unit/computed/computed.test.ts +++ b/packages/core/tests/unit/computed/computed.test.ts @@ -11,7 +11,7 @@ describe('Computed Tests', () => { let dummyAgile: Agile; beforeEach(() => { - dummyAgile = new Agile({localStorage: false}); + dummyAgile = new Agile({ localStorage: false }); jest.spyOn(Computed.prototype, 'recompute'); console.error = jest.fn(); @@ -177,7 +177,7 @@ describe('Computed Tests', () => { computed.updateComputeFunction( newComputeFunction, [dummyState, dummyObserver], - {overwriteDeps: false}, + { overwriteDeps: false }, ); expect(computed.hardCodedDeps).toStrictEqual([ @@ -260,7 +260,7 @@ describe('Computed Tests', () => { dummyState, undefined, {}, - {observer: 'fake'}, + { observer: 'fake' }, ]); expect(response).toStrictEqual([dummyObserver, dummyStateObserver]); diff --git a/packages/core/tests/unit/computed/computed.tracker.test.ts b/packages/core/tests/unit/computed/computed.tracker.test.ts index f3320884..c5cad424 100644 --- a/packages/core/tests/unit/computed/computed.tracker.test.ts +++ b/packages/core/tests/unit/computed/computed.tracker.test.ts @@ -1,10 +1,10 @@ -import {ComputedTracker, Observer, Agile} from '../../../src'; +import { ComputedTracker, Observer, Agile } from '../../../src'; describe('ComputedTracker Tests', () => { let dummyAgile: Agile; beforeEach(() => { - dummyAgile = new Agile({localStorage: false}); + dummyAgile = new Agile({ localStorage: false }); // Reset ComputedTracker (because it works static) ComputedTracker.isTracking = false; diff --git a/packages/core/tests/unit/event/event.job.test.ts b/packages/core/tests/unit/event/event.job.test.ts index 9d3ba8e6..829304c2 100644 --- a/packages/core/tests/unit/event/event.job.test.ts +++ b/packages/core/tests/unit/event/event.job.test.ts @@ -1,4 +1,4 @@ -import {EventJob} from '../../../src'; +import { EventJob } from '../../../src'; describe('EventJob Tests', () => { it('should create EventJob (without keys)', () => { diff --git a/packages/core/tests/unit/event/event.observer.test.ts b/packages/core/tests/unit/event/event.observer.test.ts index 67e40dde..d9b9c039 100644 --- a/packages/core/tests/unit/event/event.observer.test.ts +++ b/packages/core/tests/unit/event/event.observer.test.ts @@ -12,7 +12,7 @@ describe('EventObserver Tests', () => { let dummyEvent: Event; beforeEach(() => { - dummyAgile = new Agile({localStorage: false}); + dummyAgile = new Agile({ localStorage: false }); dummyEvent = new Event(dummyAgile); }); @@ -28,8 +28,8 @@ describe('EventObserver Tests', () => { }); it('should create EventObserver (specific config)', () => { - const dummyObserver1 = new Observer(dummyAgile, {key: 'dummyObserver1'}); - const dummyObserver2 = new Observer(dummyAgile, {key: 'dummyObserver2'}); + const dummyObserver1 = new Observer(dummyAgile, { key: 'dummyObserver1' }); + const dummyObserver2 = new Observer(dummyAgile, { key: 'dummyObserver2' }); const dummySubscription1 = new SubscriptionContainer(); const dummySubscription2 = new SubscriptionContainer(); diff --git a/packages/core/tests/unit/event/event.test.ts b/packages/core/tests/unit/event/event.test.ts index 31e29f95..0152c6fb 100644 --- a/packages/core/tests/unit/event/event.test.ts +++ b/packages/core/tests/unit/event/event.test.ts @@ -1,11 +1,11 @@ -import {Event, Agile, Observer, EventObserver} from '../../../src'; +import { Event, Agile, Observer, EventObserver } from '../../../src'; import * as Utils from '../../../src/utils'; describe('Event Tests', () => { let dummyAgile: Agile; beforeEach(() => { - dummyAgile = new Agile({localStorage: false}); + dummyAgile = new Agile({ localStorage: false }); console.error = jest.fn(); }); @@ -97,8 +97,12 @@ describe('Event Tests', () => { }); describe('on function tests', () => { - const dummyCallbackFunction1 = () => {}; - const dummyCallbackFunction2 = () => {}; + const dummyCallbackFunction1 = () => { + /* empty function */ + }; + const dummyCallbackFunction2 = () => { + /* empty function */ + }; it('should add passed callbackFunction to callbacks at passed key', () => { const response = event.on('dummyKey', dummyCallbackFunction1); @@ -216,8 +220,11 @@ describe('Event Tests', () => { describe('reset function tests', () => { it('should reset enabled, uses and the currentTimeout', () => { - const timeout = setTimeout(() => {}, 1000); + const timeout = setTimeout(() => { + /* empty function */ + }, 1000); // @ts-ignore + // eslint-disable-next-line no-global-assign clearTimeout = jest.fn(); event.enabled = undefined; event.uses = 100; @@ -234,7 +241,9 @@ describe('Event Tests', () => { describe('removeCallback function tests', () => { beforeEach(() => { - event.callbacks['dummyKey'] = () => {}; + event.callbacks['dummyKey'] = () => { + /* empty function */ + }; }); it('should remove callback at key from Event', () => { diff --git a/packages/core/tests/unit/integrations/integration.test.ts b/packages/core/tests/unit/integrations/integration.test.ts index ef1cbbf2..1391a724 100644 --- a/packages/core/tests/unit/integrations/integration.test.ts +++ b/packages/core/tests/unit/integrations/integration.test.ts @@ -1,13 +1,15 @@ -import {Integration} from '../../../src'; +import { Integration } from '../../../src'; describe('Integration Tests', () => { it('should create Integration', () => { const methods = { bind: () => Promise.resolve(true), - updateMethod: () => {}, + updateMethod: () => { + /* empty function */ + }, }; const integrationConfig = { - frameworkInstance: {react: 'native'}, + frameworkInstance: { react: 'native' }, key: 'test', ...methods, }; @@ -15,7 +17,7 @@ describe('Integration Tests', () => { const integration = new Integration(integrationConfig); expect(integration._key).toBe('test'); - expect(integration.frameworkInstance).toStrictEqual({react: 'native'}); + expect(integration.frameworkInstance).toStrictEqual({ react: 'native' }); expect(integration.ready).toBeFalsy(); expect(integration.integrated).toBeFalsy(); expect(integration.methods).toStrictEqual(methods); @@ -25,7 +27,7 @@ describe('Integration Tests', () => { let integration: Integration; beforeEach(() => { - integration = new Integration({key: 'dummyIntegration'}); + integration = new Integration({ key: 'dummyIntegration' }); }); describe('key set function tests', () => { diff --git a/packages/core/tests/unit/integrations/integrations.test.ts b/packages/core/tests/unit/integrations/integrations.test.ts index d4249c84..e1bdbd34 100644 --- a/packages/core/tests/unit/integrations/integrations.test.ts +++ b/packages/core/tests/unit/integrations/integrations.test.ts @@ -1,10 +1,10 @@ -import {Agile, Integration, Integrations} from '../../../src'; +import { Agile, Integration, Integrations } from '../../../src'; describe('Integrations Tests', () => { let dummyAgile: Agile; beforeEach(() => { - dummyAgile = new Agile({localStorage: false}); + dummyAgile = new Agile({ localStorage: false }); Agile.initialIntegrations = []; console.error = jest.fn(); @@ -105,8 +105,8 @@ describe('Integrations Tests', () => { }); describe('update function tests', () => { - const dummyComponentInstance = {my: 'component'}; - const dummyUpdatedData = {my: 'updatedData'}; + const dummyComponentInstance = { my: 'component' }; + const dummyUpdatedData = { my: 'updatedData' }; beforeEach(() => { integrations.integrate(dummyIntegration1); diff --git a/packages/core/tests/unit/runtime/observer.test.ts b/packages/core/tests/unit/runtime/observer.test.ts index 9f020c5d..6017b324 100644 --- a/packages/core/tests/unit/runtime/observer.test.ts +++ b/packages/core/tests/unit/runtime/observer.test.ts @@ -1,4 +1,9 @@ -import {Observer, Agile, SubscriptionContainer, RuntimeJob} from '../../../src'; +import { + Observer, + Agile, + SubscriptionContainer, + RuntimeJob, +} from '../../../src'; describe('Observer Tests', () => { let dummyAgile: Agile; @@ -9,8 +14,8 @@ describe('Observer Tests', () => { beforeEach(() => { dummyAgile = new Agile(); - dummyObserver1 = new Observer(dummyAgile, {key: 'dummyObserver1'}); - dummyObserver2 = new Observer(dummyAgile, {key: 'dummyObserver2'}); + dummyObserver1 = new Observer(dummyAgile, { key: 'dummyObserver1' }); + dummyObserver2 = new Observer(dummyAgile, { key: 'dummyObserver2' }); dummySubscription1 = new SubscriptionContainer(); dummySubscription2 = new SubscriptionContainer(); @@ -52,7 +57,7 @@ describe('Observer Tests', () => { let observer: Observer; beforeEach(() => { - observer = new Observer(dummyAgile, {key: 'observer'}); + observer = new Observer(dummyAgile, { key: 'observer' }); }); describe('key set function tests', () => { @@ -88,8 +93,8 @@ describe('Observer Tests', () => { let dummyObserver2: Observer; beforeEach(() => { - dummyObserver1 = new Observer(dummyAgile, {key: 'dummyObserver1'}); - dummyObserver2 = new Observer(dummyAgile, {key: 'dummyObserver2'}); + dummyObserver1 = new Observer(dummyAgile, { key: 'dummyObserver1' }); + dummyObserver2 = new Observer(dummyAgile, { key: 'dummyObserver2' }); }); it('should add passed Observer to deps', () => { @@ -111,11 +116,9 @@ describe('Observer Tests', () => { describe('subscribe function tests', () => { let dummySubscriptionContainer1: SubscriptionContainer; - let dummySubscriptionContainer2: SubscriptionContainer; beforeEach(() => { dummySubscriptionContainer1 = new SubscriptionContainer(); - dummySubscriptionContainer2 = new SubscriptionContainer(); }); it('should add subscriptionContainer to subs and this(Observer) to SubscriptionContainer subs', () => { diff --git a/packages/core/tests/unit/runtime/runtime.job.test.ts b/packages/core/tests/unit/runtime/runtime.job.test.ts index 4ec0e2fb..34665af3 100644 --- a/packages/core/tests/unit/runtime/runtime.job.test.ts +++ b/packages/core/tests/unit/runtime/runtime.job.test.ts @@ -1,4 +1,4 @@ -import {Agile, Integration, RuntimeJob, Observer} from '../../../src'; +import { Agile, Integration, RuntimeJob, Observer } from '../../../src'; describe('RuntimeJob Tests', () => { let dummyAgile: Agile; @@ -6,7 +6,7 @@ describe('RuntimeJob Tests', () => { let dummyObserver: Observer; beforeEach(() => { - dummyAgile = new Agile({localStorage: false}); + dummyAgile = new Agile({ localStorage: false }); dummyIntegration = new Integration({ key: 'myIntegration', }); @@ -69,7 +69,7 @@ describe('RuntimeJob Tests', () => { it('should create RuntimeJob and Agile that has integrations (config.background = true)', () => { dummyAgile.integrate(dummyIntegration); - const job = new RuntimeJob(dummyObserver, {background: true}); + const job = new RuntimeJob(dummyObserver, { background: true }); expect(job._key).toBeUndefined(); expect(job.observer).toBe(dummyObserver); diff --git a/packages/core/tests/unit/runtime/runtime.test.ts b/packages/core/tests/unit/runtime/runtime.test.ts index 37296f76..b0fc561c 100644 --- a/packages/core/tests/unit/runtime/runtime.test.ts +++ b/packages/core/tests/unit/runtime/runtime.test.ts @@ -13,7 +13,7 @@ describe('Runtime Tests', () => { let dummyAgile: Agile; beforeEach(() => { - dummyAgile = new Agile({localStorage: false}); + dummyAgile = new Agile({ localStorage: false }); console.warn = jest.fn(); }); @@ -35,9 +35,9 @@ describe('Runtime Tests', () => { beforeEach(() => { runtime = new Runtime(dummyAgile); - dummyObserver1 = new Observer(dummyAgile, {key: 'dummyObserver1'}); - dummyObserver2 = new Observer(dummyAgile, {key: 'dummyObserver2'}); - dummyObserver3 = new Observer(dummyAgile, {key: 'dummyObserver3'}); + dummyObserver1 = new Observer(dummyAgile, { key: 'dummyObserver1' }); + dummyObserver2 = new Observer(dummyAgile, { key: 'dummyObserver2' }); + dummyObserver3 = new Observer(dummyAgile, { key: 'dummyObserver3' }); }); describe('ingest function tests', () => { @@ -57,7 +57,7 @@ describe('Runtime Tests', () => { }); it("shouldn't perform passed Job (config.perform = false)", () => { - runtime.ingest(dummyJob, {perform: false}); + runtime.ingest(dummyJob, { perform: false }); expect(runtime.jobQueue.length).toBe(1); expect(runtime.jobQueue[0]).toBe(dummyJob); @@ -71,9 +71,9 @@ describe('Runtime Tests', () => { let dummyJob3: RuntimeJob; beforeEach(() => { - dummyJob1 = new RuntimeJob(dummyObserver1, {key: 'dummyJob1'}); - dummyJob2 = new RuntimeJob(dummyObserver2, {key: 'dummyJob2'}); - dummyJob3 = new RuntimeJob(dummyObserver1, {key: 'dummyJob3'}); + dummyJob1 = new RuntimeJob(dummyObserver1, { key: 'dummyJob1' }); + dummyJob2 = new RuntimeJob(dummyObserver2, { key: 'dummyJob2' }); + dummyJob3 = new RuntimeJob(dummyObserver1, { key: 'dummyJob3' }); dummyJob1.rerender = true; dummyJob2.rerender = true; dummyJob3.rerender = false; @@ -136,21 +136,25 @@ describe('Runtime Tests', () => { let rComponentSubJob: RuntimeJob; let nrArComponentSubJob: RuntimeJob; let rCallbackSubContainer: CallbackSubscriptionContainer; - let rCallbackSubContainerCallbackFunction = () => {}; + const rCallbackSubContainerCallbackFunction = () => { + /* empty function */ + }; let nrCallbackSubContainer: CallbackSubscriptionContainer; - let nrCallbackSubContainerCallbackFunction = () => {}; + const nrCallbackSubContainerCallbackFunction = () => { + /* empty function */ + }; let rComponentSubContainer: ComponentSubscriptionContainer; - let rComponentSubContainerComponent = { + const rComponentSubContainerComponent = { my: 'cool component', }; let nrComponentSubContainer: ComponentSubscriptionContainer; - let nrComponentSubContainerComponent = { + const nrComponentSubContainerComponent = { my: 'second cool component', }; beforeEach(() => { dummyAgile.integrate(testIntegration); - dummyObserver4 = new Observer(dummyAgile, {key: 'dummyObserver4'}); + dummyObserver4 = new Observer(dummyAgile, { key: 'dummyObserver4' }); dummyObserver1.value = 'dummyObserverValue1'; dummyObserver2.value = 'dummyObserverValue2'; @@ -190,8 +194,8 @@ describe('Runtime Tests', () => { ).subscriptionContainer as ComponentSubscriptionContainer; nrComponentSubContainer.ready = false; - rComponentSubJob = new RuntimeJob(dummyObserver3, {key: 'dummyJob3'}); // Job with ready Component Subscription - rCallbackSubJob = new RuntimeJob(dummyObserver1, {key: 'dummyJob1'}); // Job with ready CallbackSubscription + rComponentSubJob = new RuntimeJob(dummyObserver3, { key: 'dummyJob3' }); // Job with ready Component Subscription + rCallbackSubJob = new RuntimeJob(dummyObserver1, { key: 'dummyJob1' }); // Job with ready CallbackSubscription nrArComponentSubJob = new RuntimeJob(dummyObserver4, { key: 'dummyJob4', }); // Job with not ready and ready Component Subscription @@ -351,11 +355,11 @@ describe('Runtime Tests', () => { describe('handleObjectBasedSubscription function tests', () => { let arraySubscriptionContainer: SubscriptionContainer; - let dummyComponent = { + const dummyComponent = { my: 'cool component', }; let objectSubscriptionContainer: SubscriptionContainer; - let dummyComponent2 = { + const dummyComponent2 = { my: 'second cool component', }; let arrayJob: RuntimeJob; @@ -367,7 +371,7 @@ describe('Runtime Tests', () => { dummyComponent, [dummyObserver1, dummyObserver2, dummyObserver3], ); - arrayJob = new RuntimeJob(dummyObserver1, {key: 'dummyArrayJob'}); + arrayJob = new RuntimeJob(dummyObserver1, { key: 'dummyArrayJob' }); objectSubscriptionContainer = dummyAgile.subController.subscribeWithSubsObject( dummyComponent2, @@ -377,8 +381,8 @@ describe('Runtime Tests', () => { observer3: dummyObserver3, }, ).subscriptionContainer; - objectJob1 = new RuntimeJob(dummyObserver1, {key: 'dummyObjectJob1'}); - objectJob2 = new RuntimeJob(dummyObserver3, {key: 'dummyObjectJob2'}); + objectJob1 = new RuntimeJob(dummyObserver1, { key: 'dummyObjectJob1' }); + objectJob2 = new RuntimeJob(dummyObserver3, { key: 'dummyObjectJob2' }); }); it('should ignore not object based SubscriptionContainer', () => { @@ -406,7 +410,9 @@ describe('Runtime Tests', () => { describe('getObjectBasedProps function tests', () => { let subscriptionContainer: SubscriptionContainer; - let dummyFunction = () => {}; + const dummyFunction = () => { + /* empty function */ + }; beforeEach(() => { subscriptionContainer = dummyAgile.subController.subscribeWithSubsObject( diff --git a/packages/core/tests/unit/runtime/subscription/container/CallbackSubscriptionContainer.test.ts b/packages/core/tests/unit/runtime/subscription/container/CallbackSubscriptionContainer.test.ts index 271e087d..43f604af 100644 --- a/packages/core/tests/unit/runtime/subscription/container/CallbackSubscriptionContainer.test.ts +++ b/packages/core/tests/unit/runtime/subscription/container/CallbackSubscriptionContainer.test.ts @@ -11,12 +11,14 @@ describe('CallbackSubscriptionContainer Tests', () => { beforeEach(() => { dummyAgile = new Agile(); - dummyObserver1 = new Observer(dummyAgile, {key: 'dummyObserver1'}); - dummyObserver2 = new Observer(dummyAgile, {key: 'dummyObserver2'}); + dummyObserver1 = new Observer(dummyAgile, { key: 'dummyObserver1' }); + dummyObserver2 = new Observer(dummyAgile, { key: 'dummyObserver2' }); }); it('should create CallbackSubscriptionContainer', () => { - const dummyIntegration = () => {}; + const dummyIntegration = () => { + /* empty function */ + }; const subscriptionContainer = new CallbackSubscriptionContainer( dummyIntegration, diff --git a/packages/core/tests/unit/runtime/subscription/container/ComponentSubscriptionContainer.test.ts b/packages/core/tests/unit/runtime/subscription/container/ComponentSubscriptionContainer.test.ts index 40e4438f..8d2046cd 100644 --- a/packages/core/tests/unit/runtime/subscription/container/ComponentSubscriptionContainer.test.ts +++ b/packages/core/tests/unit/runtime/subscription/container/ComponentSubscriptionContainer.test.ts @@ -11,12 +11,12 @@ describe('ComponentSubscriptionContainer Tests', () => { beforeEach(() => { dummyAgile = new Agile(); - dummyObserver1 = new Observer(dummyAgile, {key: 'dummyObserver1'}); - dummyObserver2 = new Observer(dummyAgile, {key: 'dummyObserver2'}); + dummyObserver1 = new Observer(dummyAgile, { key: 'dummyObserver1' }); + dummyObserver2 = new Observer(dummyAgile, { key: 'dummyObserver2' }); }); it('should create ComponentSubscriptionContainer', () => { - const dummyIntegration = {dummy: 'integration'}; + const dummyIntegration = { dummy: 'integration' }; const subscriptionContainer = new ComponentSubscriptionContainer( dummyIntegration, diff --git a/packages/core/tests/unit/runtime/subscription/container/SubscriptionContainer.test.ts b/packages/core/tests/unit/runtime/subscription/container/SubscriptionContainer.test.ts index fadf9c6a..2ced8802 100644 --- a/packages/core/tests/unit/runtime/subscription/container/SubscriptionContainer.test.ts +++ b/packages/core/tests/unit/runtime/subscription/container/SubscriptionContainer.test.ts @@ -1,4 +1,4 @@ -import {Agile, Observer, SubscriptionContainer} from '../../../../../src'; +import { Agile, Observer, SubscriptionContainer } from '../../../../../src'; describe('SubscriptionContainer Tests', () => { let dummyAgile: Agile; @@ -7,8 +7,8 @@ describe('SubscriptionContainer Tests', () => { beforeEach(() => { dummyAgile = new Agile(); - dummyObserver1 = new Observer(dummyAgile, {key: 'dummyObserver1'}); - dummyObserver2 = new Observer(dummyAgile, {key: 'dummyObserver2'}); + dummyObserver1 = new Observer(dummyAgile, { key: 'dummyObserver1' }); + dummyObserver2 = new Observer(dummyAgile, { key: 'dummyObserver2' }); }); it('should create SubscriptionContainer', () => { diff --git a/packages/core/tests/unit/runtime/subscription/sub.controller.test.ts b/packages/core/tests/unit/runtime/subscription/sub.controller.test.ts index 2349ca93..76693efc 100644 --- a/packages/core/tests/unit/runtime/subscription/sub.controller.test.ts +++ b/packages/core/tests/unit/runtime/subscription/sub.controller.test.ts @@ -11,7 +11,7 @@ describe('SubController Tests', () => { let dummyAgile: Agile; beforeEach(() => { - dummyAgile = new Agile({localStorage: false}); + dummyAgile = new Agile({ localStorage: false }); }); it('should create SubController', () => { @@ -27,8 +27,8 @@ describe('SubController Tests', () => { let dummyObserver2: Observer; beforeEach(() => { - dummyObserver1 = new Observer(dummyAgile, {key: 'dummyObserver1'}); - dummyObserver2 = new Observer(dummyAgile, {key: 'dummyObserver2'}); + dummyObserver1 = new Observer(dummyAgile, { key: 'dummyObserver1' }); + dummyObserver2 = new Observer(dummyAgile, { key: 'dummyObserver2' }); subController = new SubController(dummyAgile); }); @@ -149,7 +149,9 @@ describe('SubController Tests', () => { }); it('should unsubscribe callbackSubscriptionContainer', () => { - const dummyIntegration = () => {}; + const dummyIntegration = () => { + /* empty function */ + }; const callbackSubscriptionContainer = subController.registerCallbackSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], @@ -228,7 +230,9 @@ describe('SubController Tests', () => { }); it('should call registerCallbackSubscription if passed integrationInstance is a Function', () => { - const dummyIntegration = () => {}; + const dummyIntegration = () => { + /* empty function */ + }; const subscriptionContainer = subController.registerSubscription( dummyIntegration, @@ -248,7 +252,7 @@ describe('SubController Tests', () => { }); it('should call registerComponentSubscription if passed integrationInstance is not a Function', () => { - const dummyIntegration = {dummy: 'integration'}; + const dummyIntegration = { dummy: 'integration' }; const subscriptionContainer = subController.registerSubscription( dummyIntegration, @@ -272,7 +276,7 @@ describe('SubController Tests', () => { describe('registerComponentSubscription function tests', () => { it('should return ready componentSubscriptionContainer and add it to dummyIntegration (agileInstance.config.mount = false)', () => { - const dummyIntegration: any = {dummy: 'integration'}; + const dummyIntegration: any = { dummy: 'integration' }; const componentSubscriptionContainer = subController.registerComponentSubscription( dummyIntegration, @@ -347,7 +351,9 @@ describe('SubController Tests', () => { describe('registerCallbackSubscription function tests', () => { it('should return callbackSubscriptionContainer', () => { - const dummyIntegration = () => {}; + const dummyIntegration = () => { + /* empty function */ + }; const callbackSubscriptionContainer = subController.registerCallbackSubscription( dummyIntegration, diff --git a/packages/core/tests/unit/state/state.observer.test.ts b/packages/core/tests/unit/state/state.observer.test.ts index 27f71459..7286f4fa 100644 --- a/packages/core/tests/unit/state/state.observer.test.ts +++ b/packages/core/tests/unit/state/state.observer.test.ts @@ -14,8 +14,8 @@ describe('StateObserver Tests', () => { let dummyState: State; beforeEach(() => { - dummyAgile = new Agile({localStorage: false}); - dummyState = new State(dummyAgile, 'dummyValue', {key: 'dummyState'}); + dummyAgile = new Agile({ localStorage: false }); + dummyState = new State(dummyAgile, 'dummyValue', { key: 'dummyState' }); }); it('should create StateObserver (default config)', () => { @@ -31,8 +31,8 @@ describe('StateObserver Tests', () => { }); it('should create StateObserver (specific config)', () => { - const dummyObserver1 = new Observer(dummyAgile, {key: 'dummyObserver1'}); - const dummyObserver2 = new Observer(dummyAgile, {key: 'dummyObserver2'}); + const dummyObserver1 = new Observer(dummyAgile, { key: 'dummyObserver1' }); + const dummyObserver2 = new Observer(dummyAgile, { key: 'dummyObserver2' }); const dummySubscription1 = new SubscriptionContainer(); const dummySubscription2 = new SubscriptionContainer(); @@ -69,9 +69,15 @@ describe('StateObserver Tests', () => { let dummyComputed: Computed; beforeEach(() => { - dummyComputed = new Computed(dummyAgile, () => {}, { - key: 'dummyComputed', - }); + dummyComputed = new Computed( + dummyAgile, + () => { + /* empty function */ + }, + { + key: 'dummyComputed', + }, + ); computedObserver = new StateObserver(dummyComputed, { key: 'computedObserverKey', }); @@ -205,7 +211,7 @@ describe('StateObserver Tests', () => { }); }); - stateObserver.ingestValue('updatedDummyValue', {force: true}); + stateObserver.ingestValue('updatedDummyValue', { force: true }); expect(stateObserver.nextStateValue).toBe('updatedDummyValue'); expect(dummyAgile.runtime.ingest).toHaveBeenCalledWith( diff --git a/packages/core/tests/unit/state/state.persistent.test.ts b/packages/core/tests/unit/state/state.persistent.test.ts index 056cb244..ee965e54 100644 --- a/packages/core/tests/unit/state/state.persistent.test.ts +++ b/packages/core/tests/unit/state/state.persistent.test.ts @@ -1,4 +1,10 @@ -import {Agile, State, StatePersistent, Storage, Persistent} from '../../../src'; +import { + Agile, + State, + StatePersistent, + Storage, + Persistent, +} from '../../../src'; describe('StatePersistent Tests', () => { let dummyAgile: Agile; @@ -7,7 +13,7 @@ describe('StatePersistent Tests', () => { beforeEach(() => { jest.clearAllMocks(); - dummyAgile = new Agile({localStorage: false}); + dummyAgile = new Agile({ localStorage: false }); dummyState = new State(dummyAgile, 'dummyValue'); jest.spyOn(StatePersistent.prototype, 'instantiatePersistent'); diff --git a/packages/core/tests/unit/state/state.runtime.job.test.ts b/packages/core/tests/unit/state/state.runtime.job.test.ts index 05c29cbd..69746d4f 100644 --- a/packages/core/tests/unit/state/state.runtime.job.test.ts +++ b/packages/core/tests/unit/state/state.runtime.job.test.ts @@ -1,6 +1,5 @@ import { Agile, - RuntimeJob, StateObserver, StateRuntimeJob, State, @@ -16,7 +15,7 @@ describe('RuntimeJob Tests', () => { let dummyObserver: StateObserver; beforeEach(() => { - dummyAgile = new Agile({localStorage: false}); + dummyAgile = new Agile({ localStorage: false }); dummyIntegration = new Integration({ key: 'myIntegration', }); @@ -86,7 +85,7 @@ describe('RuntimeJob Tests', () => { it('should create RuntimeJob and Agile that has integrations (config.background = true)', () => { dummyAgile.integrate(dummyIntegration); - const job = new StateRuntimeJob(dummyObserver, {background: true}); + const job = new StateRuntimeJob(dummyObserver, { background: true }); expect(job._key).toBeUndefined(); expect(job.observer).toBe(dummyObserver); diff --git a/packages/core/tests/unit/state/state.test.ts b/packages/core/tests/unit/state/state.test.ts index 5481b53b..1d7fbf56 100644 --- a/packages/core/tests/unit/state/state.test.ts +++ b/packages/core/tests/unit/state/state.test.ts @@ -16,7 +16,7 @@ describe('State Tests', () => { beforeEach(() => { jest.clearAllMocks(); - dummyAgile = new Agile({localStorage: false}); + dummyAgile = new Agile({ localStorage: false }); jest.spyOn(State.prototype, 'set'); console.error = jest.fn(); @@ -29,7 +29,7 @@ describe('State Tests', () => { const state = new State(dummyAgile, 'coolValue'); - expect(state.set).toHaveBeenCalledWith('coolValue', {overwrite: true}); + expect(state.set).toHaveBeenCalledWith('coolValue', { overwrite: true }); expect(state._key).toBeUndefined(); expect(state.valueType).toBeUndefined(); expect(state.isSet).toBeFalsy(); @@ -59,7 +59,7 @@ describe('State Tests', () => { deps: [dummyObserver], }); - expect(state.set).toHaveBeenCalledWith('coolValue', {overwrite: true}); + expect(state.set).toHaveBeenCalledWith('coolValue', { overwrite: true }); expect(state._key).toBe('coolState'); expect(state.valueType).toBeUndefined(); expect(state.isSet).toBeFalsy(); @@ -83,7 +83,7 @@ describe('State Tests', () => { // Overwrite select once to not call it jest.spyOn(State.prototype, 'set').mockReturnValueOnce(undefined); - const state = new State(dummyAgile, 'coolValue', {isPlaceholder: true}); + const state = new State(dummyAgile, 'coolValue', { isPlaceholder: true }); expect(state.set).not.toHaveBeenCalled(); expect(state._key).toBeUndefined(); @@ -106,7 +106,7 @@ describe('State Tests', () => { describe('State Function Tests', () => { let numberState: State; - let objectState: State<{name: string; age: number}>; + let objectState: State<{ name: string; age: number }>; let arrayState: State; let booleanState: State; @@ -114,9 +114,9 @@ describe('State Tests', () => { numberState = new State(dummyAgile, 10, { key: 'numberStateKey', }); - objectState = new State<{name: string; age: number}>( + objectState = new State<{ name: string; age: number }>( dummyAgile, - {name: 'jeff', age: 10}, + { name: 'jeff', age: 10 }, { key: 'objectStateKey', }, @@ -261,7 +261,7 @@ describe('State Tests', () => { it("should ingestValue if value hasn't correct type (config.force = true)", () => { numberState.type(Number); - numberState.set('coolValue' as any, {force: true}); + numberState.set('coolValue' as any, { force: true }); expect(console.warn).toHaveBeenCalledWith( 'Agile Warn: Incorrect type (string) was provided.', @@ -414,7 +414,7 @@ describe('State Tests', () => { }); it("shouldn't patch and ingest passed object based value into a not object based State (default config)", () => { - numberState.patch({changed: 'object'}); + numberState.patch({ changed: 'object' }); expect(console.error).toHaveBeenCalledWith( "Agile Error: You can't use the patch method on a non object based States!", @@ -432,11 +432,11 @@ describe('State Tests', () => { }); it('should patch and ingest passed object based value into a object based State (default config)', () => { - objectState.patch({name: 'frank'}); + objectState.patch({ name: 'frank' }); expect(Utils.flatMerge).toHaveBeenCalledWith( - {age: 10, name: 'jeff'}, - {name: 'frank'}, + { age: 10, name: 'jeff' }, + { name: 'frank' }, { addNewProperties: true, }, @@ -456,7 +456,7 @@ describe('State Tests', () => { it('should patch and ingest passed object based value into a object based State (specific config)', () => { objectState.patch( - {name: 'frank'}, + { name: 'frank' }, { addNewProperties: false, background: true, @@ -467,8 +467,8 @@ describe('State Tests', () => { ); expect(Utils.flatMerge).toHaveBeenCalledWith( - {age: 10, name: 'jeff'}, - {name: 'frank'}, + { age: 10, name: 'jeff' }, + { name: 'frank' }, { addNewProperties: false, }, diff --git a/packages/core/tests/unit/storages/persistent.test.ts b/packages/core/tests/unit/storages/persistent.test.ts index 29ccb681..7f018dcc 100644 --- a/packages/core/tests/unit/storages/persistent.test.ts +++ b/packages/core/tests/unit/storages/persistent.test.ts @@ -1,4 +1,4 @@ -import {Agile, Persistent, Storage} from '../../../src'; +import { Agile, Persistent, Storage } from '../../../src'; describe('Persistent Tests', () => { let dummyAgile: Agile; @@ -6,7 +6,7 @@ describe('Persistent Tests', () => { beforeEach(() => { jest.clearAllMocks(); - dummyAgile = new Agile({localStorage: false}); + dummyAgile = new Agile({ localStorage: false }); jest.spyOn(Persistent.prototype, 'instantiatePersistent'); console.error = jest.fn(); @@ -71,7 +71,7 @@ describe('Persistent Tests', () => { .spyOn(Persistent.prototype, 'instantiatePersistent') .mockReturnValueOnce(undefined); - const persistent = new Persistent(dummyAgile, {instantiate: false}); + const persistent = new Persistent(dummyAgile, { instantiate: false }); expect(persistent).toBeInstanceOf(Persistent); expect(persistent.instantiatePersistent).not.toHaveBeenCalled(); @@ -209,12 +209,18 @@ describe('Persistent Tests', () => { new Storage({ key: 'storage1', methods: { - get: (key) => {}, - set: (key, value) => {}, - remove: (key) => {}, + get: () => { + /* empty function */ + }, + set: () => { + /* empty function */ + }, + remove: () => { + /* empty function */ + }, }, }), - {default: true}, + { default: true }, ); persistent.assignStorageKeys(); diff --git a/packages/core/tests/unit/storages/storage.test.ts b/packages/core/tests/unit/storages/storage.test.ts index ad4f5dc6..62f663f3 100644 --- a/packages/core/tests/unit/storages/storage.test.ts +++ b/packages/core/tests/unit/storages/storage.test.ts @@ -1,4 +1,4 @@ -import {Storage} from '../../../src'; +import { Storage } from '../../../src'; describe('Storage Tests', () => { let dummyStorageMethods; @@ -185,7 +185,7 @@ describe('Storage Tests', () => { const response = storage.normalGet('myTestKey'); - expect(response).toStrictEqual([{dummy: 'json'}]); + expect(response).toStrictEqual([{ dummy: 'json' }]); expect(storage.methods.get).toHaveBeenCalledWith( storage.getStorageKey('myTestKey'), ); @@ -253,7 +253,7 @@ describe('Storage Tests', () => { const response = await storage.get('myTestKey'); - expect(response).toStrictEqual([{dummy: 'json'}]); + expect(response).toStrictEqual([{ dummy: 'json' }]); // Couldn't figure out how to create an async mock function // expect(storage.methods.get).toHaveBeenCalledWith( // storage.getStorageKey("myTestKey") diff --git a/packages/core/tests/unit/storages/storages.test.ts b/packages/core/tests/unit/storages/storages.test.ts index 1ba2759d..ac80267a 100644 --- a/packages/core/tests/unit/storages/storages.test.ts +++ b/packages/core/tests/unit/storages/storages.test.ts @@ -1,10 +1,10 @@ -import {Storages, Agile, Storage, Persistent} from '../../../src'; +import { Storages, Agile, Storage, Persistent } from '../../../src'; describe('Storages Tests', () => { let dummyAgile; beforeEach(() => { - dummyAgile = new Agile({localStorage: false}); + dummyAgile = new Agile({ localStorage: false }); jest.spyOn(Storages.prototype, 'instantiateLocalStorage'); console.error = jest.fn(); @@ -21,7 +21,7 @@ describe('Storages Tests', () => { }); it('should create Storages and should get a warning (config.localStorage = true)', () => { - const storages = new Storages(dummyAgile, {localStorage: true}); + const storages = new Storages(dummyAgile, { localStorage: true }); expect(storages.defaultStorage).toBeUndefined(); expect(storages.storages).toStrictEqual({}); @@ -104,7 +104,7 @@ describe('Storages Tests', () => { }); it('should register Storage and assign it as default Storage with a warning (config.default = false)', () => { - const response = storages.register(dummyStorage1, {default: false}); + const response = storages.register(dummyStorage1, { default: false }); expect(console.warn).toHaveBeenCalledWith( 'Agile Warn: Be aware that Agile has to assign the first added Storage as default Storage!', @@ -130,7 +130,7 @@ describe('Storages Tests', () => { it('should register second Storage and should assign it as default Storage (config.default = true)', () => { storages.register(dummyStorage1); - const response = storages.register(dummyStorage2, {default: true}); + const response = storages.register(dummyStorage2, { default: true }); expect(storages.storages).toHaveProperty('storage2'); expect(storages.storages['storage2']).toBe(dummyStorage2); diff --git a/packages/core/tests/unit/utils.test.ts b/packages/core/tests/unit/utils.test.ts index 04afdf36..8a877ff5 100644 --- a/packages/core/tests/unit/utils.test.ts +++ b/packages/core/tests/unit/utils.test.ts @@ -26,7 +26,7 @@ describe('Utils Tests', () => { let dummyAgile: Agile; beforeEach(() => { - dummyAgile = new Agile({localStorage: false}); + dummyAgile = new Agile({ localStorage: false }); // @ts-ignore | Reset globalThis globalThis = {}; @@ -49,35 +49,35 @@ describe('Utils Tests', () => { }); it('should copy Object without any reference', () => { - const myObject = {id: 1, name: 'jeff'}; + const myObject = { id: 1, name: 'jeff' }; const myCopiedObject = copy(myObject); - expect(myCopiedObject).toStrictEqual({id: 1, name: 'jeff'}); - expect(myObject).toStrictEqual({id: 1, name: 'jeff'}); + expect(myCopiedObject).toStrictEqual({ id: 1, name: 'jeff' }); + expect(myObject).toStrictEqual({ id: 1, name: 'jeff' }); myObject.name = 'hans'; - expect(myObject).toStrictEqual({id: 1, name: 'hans'}); - expect(myCopiedObject).toStrictEqual({id: 1, name: 'jeff'}); + expect(myObject).toStrictEqual({ id: 1, name: 'hans' }); + expect(myCopiedObject).toStrictEqual({ id: 1, name: 'jeff' }); }); it('should copy deep Object without any reference', () => { const myObject = { id: 1, name: 'jeff', - location: {country: 'Germany', state: 'Bayern'}, + location: { country: 'Germany', state: 'Bayern' }, }; const myCopiedObject = copy(myObject); expect(myCopiedObject).toStrictEqual({ id: 1, name: 'jeff', - location: {country: 'Germany', state: 'Bayern'}, + location: { country: 'Germany', state: 'Bayern' }, }); expect(myObject).toStrictEqual({ id: 1, name: 'jeff', - location: {country: 'Germany', state: 'Bayern'}, + location: { country: 'Germany', state: 'Bayern' }, }); myObject.name = 'hans'; @@ -86,12 +86,12 @@ describe('Utils Tests', () => { expect(myObject).toStrictEqual({ id: 1, name: 'hans', - location: {country: 'Germany', state: 'Sachsen'}, + location: { country: 'Germany', state: 'Sachsen' }, }); expect(myCopiedObject).toStrictEqual({ id: 1, name: 'jeff', - location: {country: 'Germany', state: 'Bayern'}, + location: { country: 'Germany', state: 'Bayern' }, }); }); @@ -122,8 +122,10 @@ describe('Utils Tests', () => { }); it('should return true if passed instance is valid Object', () => { - expect(isValidObject({hello: 'jeff'})).toBe(true); - expect(isValidObject({hello: 'jeff', deep: {hello: 'franz'}})).toBe(true); + expect(isValidObject({ hello: 'jeff' })).toBe(true); + expect(isValidObject({ hello: 'jeff', deep: { hello: 'franz' } })).toBe( + true, + ); }); }); @@ -166,7 +168,7 @@ describe('Utils Tests', () => { it('should normalize undefined (config.createUndefinedArray = true)', () => { expect( - normalizeArray(undefined, {createUndefinedArray: true}), + normalizeArray(undefined, { createUndefinedArray: true }), ).toStrictEqual([undefined]); }); }); @@ -220,30 +222,50 @@ describe('Utils Tests', () => { describe('isFunction function tests', () => { it('should return true if passed instance is valid Function', () => { - expect(isFunction(() => {})).toBe(true); + expect( + isFunction(() => { + /* empty function */ + }), + ).toBe(true); }); it('should return false if passed instance is invalid Function', () => { expect(isFunction('hello')).toBe(false); expect(isFunction(1)).toBe(false); expect(isFunction([1, 2, 3])).toBe(false); - expect(isFunction({hello: 'jeff'})).toBe(false); + expect(isFunction({ hello: 'jeff' })).toBe(false); }); }); describe('isAsyncFunction function tests', () => { it('should return true if passed instance is valid async Function', () => { - expect(isAsyncFunction(async () => {})).toBe(true); - expect(isAsyncFunction(async function () {})).toBe(true); + expect( + isAsyncFunction(async () => { + /* empty function */ + }), + ).toBe(true); + expect( + isAsyncFunction(async function () { + /* empty function */ + }), + ).toBe(true); }); it('should return false if passed instance is invalid async Function', () => { expect(isAsyncFunction('hello')).toBe(false); expect(isAsyncFunction(1)).toBe(false); expect(isAsyncFunction([1, 2, 3])).toBe(false); - expect(isAsyncFunction({hello: 'jeff'})).toBe(false); - expect(isAsyncFunction(() => {})).toBe(false); - expect(isAsyncFunction(function () {})).toBe(false); + expect(isAsyncFunction({ hello: 'jeff' })).toBe(false); + expect( + isAsyncFunction(() => { + /* empty function */ + }), + ).toBe(false); + expect( + isAsyncFunction(function () { + /* empty function */ + }), + ).toBe(false); }); }); @@ -280,7 +302,7 @@ describe('Utils Tests', () => { false, ); expect(isJsonString(10)).toBe(false); - expect(isJsonString({name: 'John', age: 31})).toBe(false); + expect(isJsonString({ name: 'John', age: 31 })).toBe(false); }); }); @@ -388,7 +410,7 @@ describe('Utils Tests', () => { size: 177, location: 'behind you', }, - {addNewProperties: true}, + { addNewProperties: true }, ), ).toStrictEqual({ id: 123, @@ -425,7 +447,7 @@ describe('Utils Tests', () => { describe('equal function tests', () => { it('should return true if value1 and value2 are equal', () => { - expect(equal({id: 123, name: 'jeff'}, {id: 123, name: 'jeff'})).toBe( + expect(equal({ id: 123, name: 'jeff' }, { id: 123, name: 'jeff' })).toBe( true, ); expect(equal([1, 2, 3], [1, 2, 3])).toBe(true); @@ -434,7 +456,7 @@ describe('Utils Tests', () => { }); it("should return false if value1 and value2 aren't equal", () => { - expect(equal({id: 123, name: 'jeff'}, {id: 123, name: 'hans'})).toBe( + expect(equal({ id: 123, name: 'jeff' }, { id: 123, name: 'hans' })).toBe( false, ); expect(equal([1, 2], [3, 5])).toBe(false); @@ -445,18 +467,18 @@ describe('Utils Tests', () => { describe('notEqual function tests', () => { it('should return false if value1 and value2 are equal', () => { - expect(notEqual({id: 123, name: 'jeff'}, {id: 123, name: 'jeff'})).toBe( - false, - ); + expect( + notEqual({ id: 123, name: 'jeff' }, { id: 123, name: 'jeff' }), + ).toBe(false); expect(notEqual([1, 2, 3], [1, 2, 3])).toBe(false); expect(notEqual(12, 12)).toBe(false); expect(equal('hi', 'bye')).toBe(false); }); it("should return true if value1 and value2 aren't equal", () => { - expect(notEqual({id: 123, name: 'jeff'}, {id: 123, name: 'hans'})).toBe( - true, - ); + expect( + notEqual({ id: 123, name: 'jeff' }, { id: 123, name: 'hans' }), + ).toBe(true); expect(notEqual([1, 2], [3, 5])).toBe(true); expect(notEqual(12, 13)).toBe(true); expect(notEqual('hi', 'bye')).toBe(true); @@ -482,7 +504,7 @@ describe('Utils Tests', () => { constructor( public id: number, public name: string, - public location: {country: string; state: string}, + public location: { country: string; state: string }, ) {} } const dummyClass = new DummyClass(10, 'jeff', { From 2e31786e95d52105851ffbc8b628e859daf2b9d6 Mon Sep 17 00:00:00 2001 From: Benno Kohrs Date: Wed, 6 Jan 2021 10:32:32 +0100 Subject: [PATCH 09/15] reformat whole api and fixed eslint issues --- packages/api/src/index.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/api/src/index.ts b/packages/api/src/index.ts index 8337b0d5..7df3e85f 100644 --- a/packages/api/src/index.ts +++ b/packages/api/src/index.ts @@ -1,4 +1,3 @@ -import * as http from 'http'; import { clone, copy, @@ -14,7 +13,7 @@ export default class API { * @public * @param config - Config */ - constructor(config: ApiConfig = {options: {}}) { + constructor(config: ApiConfig = { options: {} }) { this.config = config; } @@ -28,7 +27,7 @@ export default class API { */ public with(config: ApiConfig): API { const modifiedApi = clone(this); - modifiedApi.config = {...this.config, ...config}; + modifiedApi.config = { ...this.config, ...config }; return modifiedApi; } From a96cdcb7830c49c771908a8ad361b14813128ea2 Mon Sep 17 00:00:00 2001 From: Benno Kohrs Date: Wed, 6 Jan 2021 10:38:29 +0100 Subject: [PATCH 10/15] reformat whole multieditor and fixed eslint issues --- packages/multieditor/src/index.ts | 2 +- packages/multieditor/src/item.ts | 4 +-- packages/multieditor/src/multieditor.ts | 34 +++++++++---------- packages/multieditor/src/status/index.ts | 8 ++--- .../multieditor/src/status/status.observer.ts | 2 +- packages/multieditor/src/validator/index.ts | 2 +- .../src/validator/types/string.validator.ts | 13 ++++--- 7 files changed, 32 insertions(+), 33 deletions(-) diff --git a/packages/multieditor/src/index.ts b/packages/multieditor/src/index.ts index b24a3e96..c468643f 100644 --- a/packages/multieditor/src/index.ts +++ b/packages/multieditor/src/index.ts @@ -1,4 +1,4 @@ -import {MultiEditor} from './internal'; +import { MultiEditor } from './internal'; export * from './internal'; export default MultiEditor; diff --git a/packages/multieditor/src/item.ts b/packages/multieditor/src/item.ts index c9077ac0..dd4a455f 100644 --- a/packages/multieditor/src/item.ts +++ b/packages/multieditor/src/item.ts @@ -3,12 +3,12 @@ import { State, StateRuntimeJobConfigInterface, } from '@agile-ts/core'; -import {MultiEditor, Validator, Status, ItemKey} from './internal'; +import { MultiEditor, Validator, Status, ItemKey } from './internal'; export class Item extends State { public editor: () => MultiEditor; - public isValid: boolean = false; + public isValid = false; public config: ItemConfigInterface; public status: Status; diff --git a/packages/multieditor/src/multieditor.ts b/packages/multieditor/src/multieditor.ts index 9030f598..7a407caf 100644 --- a/packages/multieditor/src/multieditor.ts +++ b/packages/multieditor/src/multieditor.ts @@ -22,9 +22,9 @@ export class MultiEditor< public agileInstance: () => Agile; public config: EditorConfigInterface; - public isModified: boolean = false; - public isValid: boolean = false; - public submitted: boolean = false; + public isModified = false; + public isValid = false; + public submitted = false; public fixedProperties: ItemKey[] = []; public editableProperties: ItemKey[] = []; public validateMethods: DataObject< @@ -77,13 +77,13 @@ export class MultiEditor< }; // Add Items to Data Object and validate it for the first Time - for (let key in _config.data) { + for (const key in _config.data) { const item = new Item(this as any, _config.data[key], key, { canBeEdited: this.editableProperties.includes(key), }); this.data[key] = item; item.validate(); - if (this.computeMethods.hasOwnProperty(key)) { + if (Object.prototype.hasOwnProperty.call(this.computeMethods, key)) { const computeMethod = this.computeMethods[key]; item.compute(computeMethod); } @@ -112,7 +112,7 @@ export class MultiEditor< */ public get deps(): Array { const deps: Array = []; - for (let key in this.data) { + for (const key in this.data) { const item = this.data[key]; deps.push(item.observer); deps.push(item.status.observer); @@ -208,7 +208,7 @@ export class MultiEditor< background: config.background, }); } else { - item.ingest({force: true, background: config.background}); + item.ingest({ force: true, background: config.background }); } return this; @@ -233,7 +233,7 @@ export class MultiEditor< }); // Assign Statuses to Items - for (let key in this.data) { + for (const key in this.data) { const item = this.data[key]; if (this.canAssignStatusToItemOnSubmit(item)) { item.status.assign({ @@ -255,7 +255,7 @@ export class MultiEditor< if (!this.isValid) return false; // Add prepared Items to prepared Data - for (let key in this.data) { + for (const key in this.data) { const item = this.data[key]; if (item.isSet && item.config.canBeEdited) { preparedData[key] = item.value; @@ -264,7 +264,7 @@ export class MultiEditor< } // Add fixed Properties(Items) to Prepared Data - for (let key of this.fixedProperties) { + for (const key of this.fixedProperties) { const item = this.getItemById(key); if (!item) continue; preparedData[key] = item.value; @@ -282,7 +282,7 @@ export class MultiEditor< */ public reset(): this { // Reset Items - for (let key in this.data) { + for (const key in this.data) { const item = this.data[key]; item.reset(); } @@ -353,7 +353,7 @@ export class MultiEditor< * @param key - Key/Name of Item */ public getItemById(key: ItemKey): Item | undefined { - if (!this.data.hasOwnProperty(key)) { + if (!Object.prototype.hasOwnProperty.call(this.data, key)) { Agile.logger.error(`Editor Item '${key}' does not exists!`); return undefined; } @@ -382,7 +382,7 @@ export class MultiEditor< */ public areModified(keys: ItemKey[]): boolean { let _isModified = false; - for (let key of keys) { + for (const key of keys) { const item = this.getItemById(key); if (!item) continue; _isModified = _isModified || item?.isSet; @@ -399,7 +399,7 @@ export class MultiEditor< * @param key - Key/Name of Item */ public getValidator(key: ItemKey): Validator { - if (this.validateMethods.hasOwnProperty(key)) { + if (Object.prototype.hasOwnProperty.call(this.validateMethods, key)) { const validation = this.validateMethods[key]; if (validation instanceof Validator) { if (!validation.key) validation.key = key; @@ -410,7 +410,7 @@ export class MultiEditor< }).addValidationMethod(validation); } } - return new Validator({key: key}); + return new Validator({ key: key }); } //========================================================================================================= @@ -436,7 +436,7 @@ export class MultiEditor< let isValid = true; // Check if Items are Valid - for (let key in this.data) { + for (const key in this.data) { const item = this.data[key]; if (!item.config.canBeEdited && this.config.validate === 'editable') continue; @@ -487,7 +487,7 @@ export class MultiEditor< } } -export type DataObject = {[key: string]: T}; +export type DataObject = { [key: string]: T }; export type EditorKey = string | number; export type ItemKey = string | number; diff --git a/packages/multieditor/src/status/index.ts b/packages/multieditor/src/status/index.ts index 095a1e8e..aadabfcc 100644 --- a/packages/multieditor/src/status/index.ts +++ b/packages/multieditor/src/status/index.ts @@ -1,5 +1,5 @@ -import {Agile, copy, RuntimeJobConfigInterface} from '@agile-ts/core'; -import {Item, StatusObserver} from '../internal'; +import { Agile, copy, RuntimeJobConfigInterface } from '@agile-ts/core'; +import { Item, StatusObserver } from '../internal'; export class Status { public agileInstance: () => Agile; @@ -7,13 +7,13 @@ export class Status { public item: Item; public observer: StatusObserver; // Handles deps and subs of Status and is like an interface to the Runtime - public display: boolean = false; + public display = false; public _value: StatusInterface | null; // The last assigned Value public nextValue: StatusInterface | null; // The last set Value public activeValues: Set = new Set(); // All Values that got set during the validation Time of the Validator // Tracking - public track: boolean = false; + public track = false; public foundValues: Set = new Set(); /** diff --git a/packages/multieditor/src/status/status.observer.ts b/packages/multieditor/src/status/status.observer.ts index acc72ea1..d0967129 100644 --- a/packages/multieditor/src/status/status.observer.ts +++ b/packages/multieditor/src/status/status.observer.ts @@ -1,4 +1,4 @@ -import {Status, StatusInterface} from '../internal'; +import { Status, StatusInterface } from '../internal'; import { Agile, copy, diff --git a/packages/multieditor/src/validator/index.ts b/packages/multieditor/src/validator/index.ts index 846be48a..2a5055d0 100644 --- a/packages/multieditor/src/validator/index.ts +++ b/packages/multieditor/src/validator/index.ts @@ -72,7 +72,7 @@ export class Validator { item.status.track = true; // Call validationMethods (Validation Time) - for (let validationMethodKey of validationMethodKeys) + for (const validationMethodKey of validationMethodKeys) isValid = (await this.validationMethods[validationMethodKey]( key, diff --git a/packages/multieditor/src/validator/types/string.validator.ts b/packages/multieditor/src/validator/types/string.validator.ts index 71c8a7fe..9cdb68db 100644 --- a/packages/multieditor/src/validator/types/string.validator.ts +++ b/packages/multieditor/src/validator/types/string.validator.ts @@ -1,5 +1,5 @@ -import {Validator} from '../../internal'; -import {copy} from '@agile-ts/core'; +import { Validator } from '../../internal'; +import { copy } from '@agile-ts/core'; export class StringValidator extends Validator { /** @@ -9,12 +9,11 @@ export class StringValidator extends Validator { * @param errorMessage - Error Message */ constructor(validator: Validator, errorMessage?: string) { - super({key: validator.key, prefix: 'string'}); + super({ key: validator.key, prefix: 'string' }); // Copy ValidationMethods of old Validator into this Validator - for (let key in validator.validationMethods) { + for (const key in validator.validationMethods) this.validationMethods[key] = copy(validator.validationMethods[key]); - } // Add String Validation Method this.addValidationMethod( @@ -102,7 +101,7 @@ export class StringValidator extends Validator { this.getValidationMethodKey('email'), async (key, value, editor) => { if (!value || typeof value !== 'string') return false; - const emailRegex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; + const emailRegex = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; const isValid = emailRegex.test(value.toLowerCase()); if (!isValid) { editor.setStatus( @@ -130,7 +129,7 @@ export class StringValidator extends Validator { this.getValidationMethodKey('email'), async (key, value, editor) => { if (!value || typeof value !== 'string') return false; - const urlRegex = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)?/gi; + const urlRegex = /[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)?/gi; const isValid = urlRegex.test(value.toLowerCase()); if (!isValid) { editor.setStatus( From 16420daa87b326026e738e24110fc8b2592435ec Mon Sep 17 00:00:00 2001 From: Benno Kohrs Date: Wed, 6 Jan 2021 10:39:52 +0100 Subject: [PATCH 11/15] reformat whole react package and fixed eslint issues --- packages/react/src/hooks/AgileHOC.ts | 8 +++----- packages/react/src/hooks/useAgile.ts | 2 +- packages/react/src/hooks/useEvent.ts | 2 +- packages/react/src/hooks/useWatcher.ts | 2 +- packages/react/src/index.ts | 8 ++++---- packages/react/src/react.integration.ts | 6 +++--- packages/react/src/utils/useIsomorphicLayoutEffect.ts | 2 +- 7 files changed, 14 insertions(+), 16 deletions(-) diff --git a/packages/react/src/hooks/AgileHOC.ts b/packages/react/src/hooks/AgileHOC.ts index 5b843385..ea78435b 100644 --- a/packages/react/src/hooks/AgileHOC.ts +++ b/packages/react/src/hooks/AgileHOC.ts @@ -10,11 +10,11 @@ import { export function AgileHOC( ReactComponent: any, - deps?: Array | {[key: string]: State} | State, + deps?: Array | { [key: string]: State } | State, agileInstance?: Agile, ) { let depsArray: Array; - let depsObject: {[key: string]: Observer} = {}; + const depsObject: { [key: string]: Observer } = {}; if (deps instanceof State || Array.isArray(deps)) { // Normalize Dependencies @@ -30,9 +30,7 @@ export function AgileHOC( } } } else if (typeof deps === 'object') { - for (let dep in deps) { - depsObject[dep] = deps[dep].observer; - } + for (const dep in deps) depsObject[dep] = deps[dep].observer; // Get Agile Instance if (!agileInstance) { diff --git a/packages/react/src/hooks/useAgile.ts b/packages/react/src/hooks/useAgile.ts index bd4dd627..eeb91e29 100644 --- a/packages/react/src/hooks/useAgile.ts +++ b/packages/react/src/hooks/useAgile.ts @@ -9,7 +9,7 @@ import { State, SubscriptionContainerKeyType, } from '@agile-ts/core'; -import {useIsomorphicLayoutEffect} from '../utils/useIsomorphicLayoutEffect'; +import { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect'; // Array Type // https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-1.html diff --git a/packages/react/src/hooks/useEvent.ts b/packages/react/src/hooks/useEvent.ts index 4ac211b2..558a85a5 100644 --- a/packages/react/src/hooks/useEvent.ts +++ b/packages/react/src/hooks/useEvent.ts @@ -6,7 +6,7 @@ import { getAgileInstance, SubscriptionContainerKeyType, } from '@agile-ts/core'; -import {useIsomorphicLayoutEffect} from '../utils/useIsomorphicLayoutEffect'; +import { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect'; export function useEvent>( event: E, diff --git a/packages/react/src/hooks/useWatcher.ts b/packages/react/src/hooks/useWatcher.ts index a3b27317..c048c658 100644 --- a/packages/react/src/hooks/useWatcher.ts +++ b/packages/react/src/hooks/useWatcher.ts @@ -1,5 +1,5 @@ import React from 'react'; -import {StateWatcherCallback, State} from '@agile-ts/core'; +import { StateWatcherCallback, State } from '@agile-ts/core'; export function useWatcher( state: State, diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts index d1ed1a20..e64459e5 100644 --- a/packages/react/src/index.ts +++ b/packages/react/src/index.ts @@ -1,8 +1,8 @@ import reactIntegration from './react.integration'; -export {useAgile} from './hooks/useAgile'; -export {AgileHOC} from './hooks/AgileHOC'; -export {useEvent} from './hooks/useEvent'; -export {useWatcher} from './hooks/useWatcher'; +export { useAgile } from './hooks/useAgile'; +export { AgileHOC } from './hooks/AgileHOC'; +export { useEvent } from './hooks/useEvent'; +export { useWatcher } from './hooks/useWatcher'; export default reactIntegration; diff --git a/packages/react/src/react.integration.ts b/packages/react/src/react.integration.ts index a3890e44..f4c82fa2 100644 --- a/packages/react/src/react.integration.ts +++ b/packages/react/src/react.integration.ts @@ -1,11 +1,11 @@ -import {Agile, Integration} from '@agile-ts/core'; -import {AgileReactComponent} from './hooks/AgileHOC'; +import { Agile, Integration } from '@agile-ts/core'; +import { AgileReactComponent } from './hooks/AgileHOC'; import React from 'react'; const reactIntegration = new Integration({ key: 'react', frameworkInstance: React, - bind(agileInstance: Agile) { + bind() { // Nothing to bind ;D return Promise.resolve(true); }, diff --git a/packages/react/src/utils/useIsomorphicLayoutEffect.ts b/packages/react/src/utils/useIsomorphicLayoutEffect.ts index 61e56649..9e397c06 100644 --- a/packages/react/src/utils/useIsomorphicLayoutEffect.ts +++ b/packages/react/src/utils/useIsomorphicLayoutEffect.ts @@ -1,4 +1,4 @@ -import {useEffect, useLayoutEffect} from 'react'; +import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server. // To get around it, we can conditionally useEffect on the server (no-op) and From e682abb160a0a53bacb24c99551e860a5b106bb7 Mon Sep 17 00:00:00 2001 From: Benno Kohrs Date: Wed, 6 Jan 2021 10:46:35 +0100 Subject: [PATCH 12/15] fixed some small issues --- .eslintignore | 3 ++- .github/workflows/test-all-packages.yaml | 4 ++++ examples/AwesomeTSProject/core/index.ts | 2 +- .../tests/unit/collection/collection.test.ts | 8 ++++---- packages/core/tests/unit/state/state.test.ts | 20 ++++++++++++++----- .../src/validator/types/number.validator.ts | 8 ++++---- 6 files changed, 30 insertions(+), 15 deletions(-) diff --git a/.eslintignore b/.eslintignore index 37e51613..9f5293e3 100644 --- a/.eslintignore +++ b/.eslintignore @@ -2,4 +2,5 @@ dist node_modules .eslintrc.js jest.config.js -jest.config.base.js \ No newline at end of file +jest.config.base.js +scripts/ \ No newline at end of file diff --git a/.github/workflows/test-all-packages.yaml b/.github/workflows/test-all-packages.yaml index 9e72eac6..85ae1ec6 100644 --- a/.github/workflows/test-all-packages.yaml +++ b/.github/workflows/test-all-packages.yaml @@ -28,6 +28,10 @@ jobs: - name: 🤔 Test run: yarn test + # Run Linter + - name: 🤖 Lint + run: yarn run lint + # Build Packages for Testing - name: 🔨 Build Packages run: yarn run build diff --git a/examples/AwesomeTSProject/core/index.ts b/examples/AwesomeTSProject/core/index.ts index 108979e8..1b0244e2 100644 --- a/examples/AwesomeTSProject/core/index.ts +++ b/examples/AwesomeTSProject/core/index.ts @@ -1,4 +1,4 @@ -import {Agile, Collection} from '@agile-ts/core'; +import {Agile} from '@agile-ts/core'; import {Alert} from 'react-native'; export const App = new Agile({ diff --git a/packages/core/tests/unit/collection/collection.test.ts b/packages/core/tests/unit/collection/collection.test.ts index 40189198..b3d0f684 100644 --- a/packages/core/tests/unit/collection/collection.test.ts +++ b/packages/core/tests/unit/collection/collection.test.ts @@ -252,8 +252,8 @@ describe('Collection Tests', () => { }); it('should create GroupsObject out of passed Groups Object and add default Group', () => { - let dummyGroup1 = new Group(collection); - let dummyGroup2 = new Group(collection, ['test1', 'test2'], { + const dummyGroup1 = new Group(collection); + const dummyGroup2 = new Group(collection, ['test1', 'test2'], { key: 'overwrittenKey', }); @@ -306,8 +306,8 @@ describe('Collection Tests', () => { }); it('should create SelectorsObject out of passed Selector Object', () => { - let dummySelector1 = new Selector(collection, '1'); - let dummySelector2 = new Selector(collection, '2', { + const dummySelector1 = new Selector(collection, '1'); + const dummySelector2 = new Selector(collection, '2', { key: 'overwrittenKey', }); diff --git a/packages/core/tests/unit/state/state.test.ts b/packages/core/tests/unit/state/state.test.ts index 1d7fbf56..a73eeda0 100644 --- a/packages/core/tests/unit/state/state.test.ts +++ b/packages/core/tests/unit/state/state.test.ts @@ -488,8 +488,12 @@ describe('State Tests', () => { }); describe('watch function tests', () => { - const dummyCallbackFunction1 = () => {}; - const dummyCallbackFunction2 = () => {}; + const dummyCallbackFunction1 = () => { + /* empty function */ + }; + const dummyCallbackFunction2 = () => { + /* empty function */ + }; it('should add passed watcherFunction to watchers at passed key', () => { const response = numberState.watch('dummyKey', dummyCallbackFunction1); @@ -539,7 +543,9 @@ describe('State Tests', () => { describe('removeWatcher function tests', () => { beforeEach(() => { - numberState.watchers['dummyKey'] = () => {}; + numberState.watchers['dummyKey'] = () => { + /* empty function */ + }; }); it('should remove watcher at key from State', () => { @@ -582,7 +588,9 @@ describe('State Tests', () => { describe('hasWatcher function tests', () => { beforeEach(() => { - numberState.watchers['dummyKey'] = () => {}; + numberState.watchers['dummyKey'] = () => { + /* empty function */ + }; }); it('should return true if Watcher at given Key exists', () => { @@ -806,7 +814,9 @@ describe('State Tests', () => { }); describe('addSideEffect function tests', () => { - const sideEffectFunction = () => {}; + const sideEffectFunction = () => { + /* empty function */ + }; it('should add passed function to sideEffects at passed key', () => { numberState.addSideEffect('dummyKey', sideEffectFunction); diff --git a/packages/multieditor/src/validator/types/number.validator.ts b/packages/multieditor/src/validator/types/number.validator.ts index e7ada358..3ea024f9 100644 --- a/packages/multieditor/src/validator/types/number.validator.ts +++ b/packages/multieditor/src/validator/types/number.validator.ts @@ -1,5 +1,5 @@ -import {Validator} from '../../internal'; -import {copy} from '@agile-ts/core'; +import { Validator } from '../../internal'; +import { copy } from '@agile-ts/core'; export class NumberValidator extends Validator { /** @@ -9,10 +9,10 @@ export class NumberValidator extends Validator { * @param errorMessage - Error Message */ constructor(validator: Validator, errorMessage?: string) { - super({key: validator.key, prefix: 'number'}); + super({ key: validator.key, prefix: 'number' }); // Copy ValidationMethods of old Validator into this Validator - for (let key in validator.validationMethods) { + for (const key in validator.validationMethods) { this.validationMethods[key] = copy(validator.validationMethods[key]); } From 83545e648e3664861f041a6428cd434033d25567 Mon Sep 17 00:00:00 2001 From: Benno Kohrs Date: Wed, 6 Jan 2021 10:54:19 +0100 Subject: [PATCH 13/15] updated prettier config and rerund prettier --- .prettierrc | 2 +- examples/AwesomeTSProject/core/index.ts | 20 +- examples/AwesomeTSProject/index.js | 4 +- .../multieditor-with-react/src/core/agile.ts | 2 +- .../src/core/signUpEditor.ts | 8 +- .../multieditor-with-react/src/core/utils.ts | 2 +- examples/react-typescript/src/core/index.ts | 16 +- packages/api/src/index.ts | 2 +- packages/core/src/agile.ts | 12 +- .../src/collection/collection.persistent.ts | 28 +-- packages/core/src/collection/group.ts | 16 +- packages/core/src/collection/index.ts | 64 ++--- packages/core/src/collection/item.ts | 8 +- packages/core/src/collection/selector.ts | 6 +- packages/core/src/computed/index.ts | 4 +- packages/core/src/event/event.observer.ts | 2 +- packages/core/src/event/index.ts | 8 +- packages/core/src/integrations/index.ts | 4 +- packages/core/src/logger/index.ts | 22 +- packages/core/src/runtime/index.ts | 10 +- packages/core/src/runtime/observer.ts | 6 +- packages/core/src/runtime/runtime.job.ts | 2 +- .../CallbackSubscriptionContainer.ts | 2 +- .../ComponentSubscriptionContainer.ts | 2 +- .../runtime/subscription/sub.controller.ts | 32 +-- packages/core/src/state/index.ts | 28 +-- packages/core/src/state/state.observer.ts | 7 +- packages/core/src/state/state.persistent.ts | 10 +- packages/core/src/state/state.runtime.job.ts | 2 +- packages/core/src/storages/index.ts | 18 +- packages/core/src/storages/persistent.ts | 12 +- packages/core/src/storages/storage.ts | 2 +- packages/core/src/utils.ts | 12 +- .../collection.persistent.integration.test.ts | 2 +- packages/core/tests/unit/agile.test.ts | 2 +- .../collection/collection.persistent.test.ts | 221 ++++++++---------- .../tests/unit/collection/collection.test.ts | 164 ++++++------- .../core/tests/unit/collection/group.test.ts | 40 ++-- .../core/tests/unit/collection/item.test.ts | 32 +-- .../tests/unit/collection/selector.test.ts | 30 +-- .../core/tests/unit/computed/computed.test.ts | 8 +- .../unit/computed/computed.tracker.test.ts | 2 +- .../tests/unit/event/event.observer.test.ts | 4 +- packages/core/tests/unit/event/event.test.ts | 4 +- .../unit/integrations/integrations.test.ts | 6 +- .../core/tests/unit/runtime/observer.test.ts | 2 +- .../core/tests/unit/runtime/runtime.test.ts | 48 ++-- .../CallbackSubscriptionContainer.test.ts | 2 +- .../ComponentSubscriptionContainer.test.ts | 2 +- .../container/SubscriptionContainer.test.ts | 2 +- .../subscription/sub.controller.test.ts | 102 ++++---- .../tests/unit/state/state.observer.test.ts | 24 +- .../tests/unit/state/state.persistent.test.ts | 42 ++-- packages/core/tests/unit/state/state.test.ts | 52 ++--- .../tests/unit/storages/persistent.test.ts | 20 +- .../core/tests/unit/storages/storage.test.ts | 16 +- .../core/tests/unit/storages/storages.test.ts | 16 +- packages/core/tests/unit/utils.test.ts | 48 ++-- packages/multieditor/src/item.ts | 4 +- packages/multieditor/src/multieditor.ts | 16 +- .../multieditor/src/status/status.observer.ts | 2 +- packages/multieditor/src/validator/index.ts | 16 +- .../src/validator/types/number.validator.ts | 20 +- .../src/validator/types/string.validator.ts | 22 +- packages/react/src/hooks/AgileHOC.ts | 6 +- packages/react/src/hooks/useAgile.ts | 12 +- packages/react/src/hooks/useEvent.ts | 4 +- packages/react/src/hooks/useWatcher.ts | 2 +- 68 files changed, 677 insertions(+), 693 deletions(-) diff --git a/.prettierrc b/.prettierrc index 45d5eab8..d2d80488 100644 --- a/.prettierrc +++ b/.prettierrc @@ -7,6 +7,6 @@ "tabWidth": 2, "proseWrap": "never", "singleQuote": true, - "trailingComma": "all", + "trailingComma": "es5", "endOfLine": "lf" } \ No newline at end of file diff --git a/examples/AwesomeTSProject/core/index.ts b/examples/AwesomeTSProject/core/index.ts index 1b0244e2..595e2baf 100644 --- a/examples/AwesomeTSProject/core/index.ts +++ b/examples/AwesomeTSProject/core/index.ts @@ -1,5 +1,5 @@ -import {Agile} from '@agile-ts/core'; -import {Alert} from 'react-native'; +import { Agile } from '@agile-ts/core'; +import { Alert } from 'react-native'; export const App = new Agile({ logJobs: true, @@ -31,16 +31,16 @@ export const MY_COLLECTION = App.Collection( selectors: { mySelector: collection.Selector('id3'), }, - }), + }) ).persist(); -MY_COLLECTION.collect({id: 'id1', name: 'test'}); -MY_COLLECTION.collect({id: 'id2', name: 'test2'}, 'myGroup'); -MY_COLLECTION.update('id1', {id: 'id1Updated', name: 'testUpdated'}); -MY_COLLECTION.getGroup('myGroup')?.persist({followCollectionPattern: true}); +MY_COLLECTION.collect({ id: 'id1', name: 'test' }); +MY_COLLECTION.collect({ id: 'id2', name: 'test2' }, 'myGroup'); +MY_COLLECTION.update('id1', { id: 'id1Updated', name: 'testUpdated' }); +MY_COLLECTION.getGroup('myGroup')?.persist({ followCollectionPattern: true }); console.log('Initial: myCollection ', MY_COLLECTION); -export const MY_EVENT = App.Event<{name: string}>(); +export const MY_EVENT = App.Event<{ name: string }>(); MY_EVENT.on('Test', (payload) => { Alert.alert( @@ -52,8 +52,8 @@ MY_EVENT.on('Test', (payload) => { onPress: () => console.log('Cancel Pressed'), style: 'cancel', }, - {text: 'OK', onPress: () => console.log('OK Pressed')}, + { text: 'OK', onPress: () => console.log('OK Pressed') }, ], - {cancelable: false}, + { cancelable: false } ); }); diff --git a/examples/AwesomeTSProject/index.js b/examples/AwesomeTSProject/index.js index a850d031..9b739329 100644 --- a/examples/AwesomeTSProject/index.js +++ b/examples/AwesomeTSProject/index.js @@ -2,8 +2,8 @@ * @format */ -import {AppRegistry} from 'react-native'; +import { AppRegistry } from 'react-native'; import App from './App'; -import {name as appName} from './app.json'; +import { name as appName } from './app.json'; AppRegistry.registerComponent(appName, () => App); diff --git a/examples/multieditor-with-react/src/core/agile.ts b/examples/multieditor-with-react/src/core/agile.ts index e2143ceb..e212a41d 100644 --- a/examples/multieditor-with-react/src/core/agile.ts +++ b/examples/multieditor-with-react/src/core/agile.ts @@ -1,4 +1,4 @@ -import {Agile, globalBind} from '@agile-ts/core'; +import { Agile, globalBind } from '@agile-ts/core'; const App = new Agile({ logConfig: { diff --git a/examples/multieditor-with-react/src/core/signUpEditor.ts b/examples/multieditor-with-react/src/core/signUpEditor.ts index b37cc235..ca63e210 100644 --- a/examples/multieditor-with-react/src/core/signUpEditor.ts +++ b/examples/multieditor-with-react/src/core/signUpEditor.ts @@ -1,6 +1,6 @@ -import MultiEditor, {Validator} from '@agile-ts/multieditor'; +import MultiEditor, { Validator } from '@agile-ts/multieditor'; import App from './agile'; -import {generateColor, generateId, isLight} from './utils'; +import { generateColor, generateId, isLight } from './utils'; export const isValidNameValidator = new Validator() .required() @@ -39,7 +39,7 @@ export const signUpEditor = new MultiEditor( editor.setStatus( key, 'error', - 'Sry only the name Jeff is allowed!', + 'Sry only the name Jeff is allowed!' ); return isValid; }), @@ -77,5 +77,5 @@ export const signUpEditor = new MultiEditor( fixedProperties: ['id'], reValidateMode: 'afterFirstSubmit', }), - App, + App ); diff --git a/examples/multieditor-with-react/src/core/utils.ts b/examples/multieditor-with-react/src/core/utils.ts index 2d0dbf6d..6a2724de 100644 --- a/examples/multieditor-with-react/src/core/utils.ts +++ b/examples/multieditor-with-react/src/core/utils.ts @@ -5,7 +5,7 @@ export const generateColor = (): string => { export const generateId = () => { const dateIntString = new Date(new Date().toString()).getTime().toString(); const randomIntString = Math.floor( - Math.random() * Math.floor(10000000), + Math.random() * Math.floor(10000000) ).toString(); return dateIntString + randomIntString; diff --git a/examples/react-typescript/src/core/index.ts b/examples/react-typescript/src/core/index.ts index a5c30290..7bda8ece 100644 --- a/examples/react-typescript/src/core/index.ts +++ b/examples/react-typescript/src/core/index.ts @@ -1,10 +1,10 @@ -import {Agile, clone, Logger} from '@agile-ts/core'; +import { Agile, clone, Logger } from '@agile-ts/core'; export const App = new Agile({ - logConfig: {level: Logger.level.DEBUG}, + logConfig: { level: Logger.level.DEBUG }, }); -export const MY_STATE = App.State('MyState', {key: 'my-state'}); //.persist(); +export const MY_STATE = App.State('MyState', { key: 'my-state' }); //.persist(); export const MY_STATE_2 = App.State('MyState2', { key: 'my-state2', }).persist(); @@ -35,18 +35,18 @@ export const MY_COLLECTION = App.Collection( selectors: { mySelector: collection.Selector('id3'), }, - }), + }) ).persist(); -MY_COLLECTION.collect({id: 'id1', name: 'test'}); -MY_COLLECTION.collect({id: 'id2', name: 'test2'}, 'myGroup'); -MY_COLLECTION.update('id1', {id: 'id1Updated', name: 'testUpdated'}); +MY_COLLECTION.collect({ id: 'id1', name: 'test' }); +MY_COLLECTION.collect({ id: 'id2', name: 'test2' }, 'myGroup'); +MY_COLLECTION.update('id1', { id: 'id1Updated', name: 'testUpdated' }); MY_COLLECTION.getGroup('myGroup')?.persist({ followCollectionPersistKeyPattern: true, }); console.log('Initial: myCollection ', clone(MY_COLLECTION)); -export const MY_EVENT = App.Event<{name: string}>({ +export const MY_EVENT = App.Event<{ name: string }>({ delay: 3000, key: 'myEvent', }); diff --git a/packages/api/src/index.ts b/packages/api/src/index.ts index 7df3e85f..0604d633 100644 --- a/packages/api/src/index.ts +++ b/packages/api/src/index.ts @@ -111,7 +111,7 @@ export default class API { method: string, endpoint: string, payload?: any, - options: RequestInit = {}, + options: RequestInit = {} ): Promise { let fullUrl: string; let response: Response | undefined; diff --git a/packages/core/src/agile.ts b/packages/core/src/agile.ts index ce22c52c..9efbd1be 100644 --- a/packages/core/src/agile.ts +++ b/packages/core/src/agile.ts @@ -75,7 +75,7 @@ export class Agile { // Create global instance of Agile if (!globalBind('__agile__', this)) Agile.logger.warn( - 'Be careful with multiple Agile Instances in one Application!', + 'Be careful with multiple Agile Instances in one Application!' ); } @@ -101,7 +101,7 @@ export class Agile { */ public State = ( initialValue: ValueType, - config: StateConfigInterface = {}, + config: StateConfigInterface = {} ) => new State(this, initialValue, config); //========================================================================================================= @@ -113,7 +113,7 @@ export class Agile { * @param config - Config */ public Collection = ( - config?: CollectionConfig, + config?: CollectionConfig ) => new Collection(this, config); //========================================================================================================= @@ -127,7 +127,7 @@ export class Agile { */ public Computed = ( computeFunction: () => ComputedValueType, - deps?: Array, + deps?: Array ) => new Computed(this, computeFunction, { computedDeps: deps, @@ -142,7 +142,7 @@ export class Agile { * @param config - Config */ public Event = ( - config?: CreateEventConfigInterface, + config?: CreateEventConfigInterface ) => new Event(this, config); //========================================================================================================= @@ -169,7 +169,7 @@ export class Agile { */ public registerStorage( storage: Storage, - config: RegisterConfigInterface = {}, + config: RegisterConfigInterface = {} ): this { this.storages.register(storage, config); return this; diff --git a/packages/core/src/collection/collection.persistent.ts b/packages/core/src/collection/collection.persistent.ts index 17c28b4c..cde2feff 100644 --- a/packages/core/src/collection/collection.persistent.ts +++ b/packages/core/src/collection/collection.persistent.ts @@ -27,7 +27,7 @@ export class CollectionPersistent extends Persistent { */ constructor( collection: Collection, - config: CreatePersistentConfigInterface = {}, + config: CreatePersistentConfigInterface = {} ) { super(collection.agileInstance(), { instantiate: false, @@ -106,14 +106,14 @@ export class CollectionPersistent extends Persistent { // Check if Collection is Persisted const isPersisted = await this.agileInstance().storages.get( _key, - this.defaultStorageKey, + this.defaultStorageKey ); if (!isPersisted) return false; // Loads Values into Collection const loadValuesIntoCollection = async () => { const defaultGroup = this.collection().getGroup( - this.collection().config.defaultGroupKey, + this.collection().config.defaultGroupKey ); if (!defaultGroup) return false; @@ -131,13 +131,13 @@ export class CollectionPersistent extends Persistent { for (const itemKey of defaultGroup._value) { const itemStorageKey = CollectionPersistent.getItemStorageKey( itemKey, - _key, + _key ); // Get Storage Value const storageValue = await this.agileInstance().storages.get( itemStorageKey, - this.defaultStorageKey, + this.defaultStorageKey ); if (!storageValue) continue; @@ -167,7 +167,7 @@ export class CollectionPersistent extends Persistent { if (!this.ready) return false; const _key = key || this._key; const defaultGroup = this.collection().getGroup( - this.collection().config.defaultGroupKey, + this.collection().config.defaultGroupKey ); if (!defaultGroup) return false; @@ -181,7 +181,7 @@ export class CollectionPersistent extends Persistent { // Add sideEffect to default Group which adds and removes Items from the Storage depending on the Group Value defaultGroup.addSideEffect( CollectionPersistent.defaultGroupSideEffectKey, - () => this.rebuildStorageSideEffect(defaultGroup, _key), + () => this.rebuildStorageSideEffect(defaultGroup, _key) ); // Persist Collection Items @@ -189,7 +189,7 @@ export class CollectionPersistent extends Persistent { const item = this.collection().getItem(itemKey); const itemStorageKey = CollectionPersistent.getItemStorageKey( itemKey, - _key, + _key ); item?.persist(itemStorageKey); } @@ -211,7 +211,7 @@ export class CollectionPersistent extends Persistent { if (!this.ready) return false; const _key = key || this._key; const defaultGroup = this.collection().getGroup( - this.collection().config.defaultGroupKey, + this.collection().config.defaultGroupKey ); if (!defaultGroup) return false; @@ -223,7 +223,7 @@ export class CollectionPersistent extends Persistent { // Remove Rebuild Storage sideEffect from default Group defaultGroup.removeSideEffect( - CollectionPersistent.defaultGroupSideEffectKey, + CollectionPersistent.defaultGroupSideEffectKey ); // Remove Collection Items from Storage @@ -275,10 +275,10 @@ export class CollectionPersistent extends Persistent { if (group.previousStateValue.length === group._value.length) return; const addedKeys = group._value.filter( - (key) => !group.previousStateValue.includes(key), + (key) => !group.previousStateValue.includes(key) ); const removedKeys = group.previousStateValue.filter( - (key) => !group._value.includes(key), + (key) => !group._value.includes(key) ); // Persist Added Keys @@ -310,7 +310,7 @@ export class CollectionPersistent extends Persistent { */ public static getItemStorageKey( itemKey?: ItemKey, - collectionKey?: CollectionKey, + collectionKey?: CollectionKey ): string { if (!itemKey || !collectionKey) Agile.logger.warn('Failed to build unique Item StorageKey!'); @@ -332,7 +332,7 @@ export class CollectionPersistent extends Persistent { */ public static getGroupStorageKey( groupKey?: GroupKey, - collectionKey?: CollectionKey, + collectionKey?: CollectionKey ): string { if (!groupKey || !collectionKey) Agile.logger.warn('Failed to build unique Group StorageKey!'); diff --git a/packages/core/src/collection/group.ts b/packages/core/src/collection/group.ts index df1f0c62..27ef35eb 100644 --- a/packages/core/src/collection/group.ts +++ b/packages/core/src/collection/group.ts @@ -34,7 +34,7 @@ export class Group extends State> { constructor( collection: Collection, initialItems?: Array, - config: GroupConfigInterface = {}, + config: GroupConfigInterface = {} ) { super(collection.agileInstance(), initialItems || [], config); this.collection = () => collection; @@ -114,7 +114,7 @@ export class Group extends State> { */ public remove( itemKeys: ItemKey | ItemKey[], - config: GroupRemoveConfig = {}, + config: GroupRemoveConfig = {} ): this { const _itemKeys = normalizeArray(itemKeys); const notExistingItemKeysInCollection: Array = []; @@ -129,7 +129,7 @@ export class Group extends State> { // Check if itemKey exists in Group if (!newGroupValue.includes(itemKey)) { Agile.logger.error( - `Couldn't find ItemKey '${itemKey}' in Group '${this._key}'!`, + `Couldn't find ItemKey '${itemKey}' in Group '${this._key}'!` ); notExistingItemKeys.push(itemKey); notExistingItemKeysInCollection.push(itemKey); @@ -226,7 +226,7 @@ export class Group extends State> { public replace( oldItemKey: ItemKey, newItemKey: ItemKey, - config: StateRuntimeJobConfigInterface = {}, + config: StateRuntimeJobConfigInterface = {} ): this { const newGroupValue = copy(this._value); newGroupValue.splice(newGroupValue.indexOf(oldItemKey), 1, newItemKey); @@ -251,11 +251,11 @@ export class Group extends State> { */ public persist( key?: PersistentKey, - config?: GroupPersistConfigInterface, + config?: GroupPersistConfigInterface ): this; public persist( keyOrConfig: PersistentKey | GroupPersistConfigInterface = {}, - config: GroupPersistConfigInterface = {}, + config: GroupPersistConfigInterface = {} ): this { let _config: GroupPersistConfigInterface; let key: PersistentKey | undefined; @@ -277,7 +277,7 @@ export class Group extends State> { if (_config.followCollectionPersistKeyPattern) { key = CollectionPersistent.getGroupStorageKey( key || this._key, - this.collection()._key, + this.collection()._key ); } @@ -318,7 +318,7 @@ export class Group extends State> { `Couldn't find some Items in Collection '${this.collection()._key}' (${ this._key })`, - notFoundItemKeys, + notFoundItemKeys ); } diff --git a/packages/core/src/collection/index.ts b/packages/core/src/collection/index.ts index f88ee8e0..05fb449b 100644 --- a/packages/core/src/collection/index.ts +++ b/packages/core/src/collection/index.ts @@ -113,7 +113,7 @@ export class Collection { */ public Group( initialItems?: Array, - config?: GroupConfigInterface, + config?: GroupConfigInterface ): Group { return new Group(this, initialItems, config); } @@ -129,7 +129,7 @@ export class Collection { */ public Selector( initialKey: ItemKey, - config?: { key?: SelectorKey }, + config?: { key?: SelectorKey } ): Selector { return new Selector(this, initialKey, config); } @@ -185,7 +185,7 @@ export class Collection { selectorKey, { key: selectorKey, - }, + } ); }); } else selectorsObject = selectors; @@ -210,7 +210,7 @@ export class Collection { public collect( data: DataType | Array, groupKeys?: GroupKey | Array, - config: CollectConfigInterface = {}, + config: CollectConfigInterface = {} ): this { const _data = normalizeArray(data); const _groupKeys = normalizeArray(groupKeys); @@ -267,7 +267,7 @@ export class Collection { public update( itemKey: ItemKey, changes: DefaultItem | DataType, - config: UpdateConfigInterface = {}, + config: UpdateConfigInterface = {} ): Item | undefined { const item = this.getItem(itemKey, { notExisting: true }); const primaryKey = this.config.primaryKey; @@ -278,13 +278,13 @@ export class Collection { if (!item) { Agile.logger.error( - `Item with key/name '${itemKey}' doesn't exist in Collection '${this._key}'!`, + `Item with key/name '${itemKey}' doesn't exist in Collection '${this._key}'!` ); return undefined; } if (!isValidObject(changes)) { Agile.logger.error( - `You have to pass an valid Changes Object to update '${itemKey}' in '${this._key}'!`, + `You have to pass an valid Changes Object to update '${itemKey}' in '${this._key}'!` ); return undefined; } @@ -322,7 +322,7 @@ export class Collection { */ public createGroup( groupKey: GroupKey, - initialItems: Array = [], + initialItems: Array = [] ): Group { let group = this.getGroup(groupKey, { notExisting: true }); @@ -354,7 +354,7 @@ export class Collection { */ public hasGroup( groupKey: GroupKey | undefined, - config: HasConfigInterface = {}, + config: HasConfigInterface = {} ): boolean { return !!this.getGroup(groupKey, config); } @@ -370,7 +370,7 @@ export class Collection { */ public getGroup( groupKey: GroupKey | undefined, - config: HasConfigInterface = {}, + config: HasConfigInterface = {} ): Group | undefined { config = defineConfig(config, { notExisting: false, @@ -439,7 +439,7 @@ export class Collection { */ public createSelector( selectorKey: SelectorKey, - itemKey: ItemKey, + itemKey: ItemKey ): Selector { let selector = this.getSelector(selectorKey, { notExisting: true }); @@ -447,7 +447,7 @@ export class Collection { if (selector) { if (!selector.isPlaceholder) { Agile.logger.warn( - `Selector with the name '${selectorKey}' already exists!`, + `Selector with the name '${selectorKey}' already exists!` ); return selector; } @@ -475,7 +475,7 @@ export class Collection { */ public hasSelector( selectorKey: SelectorKey | undefined, - config: HasConfigInterface = {}, + config: HasConfigInterface = {} ): boolean { return !!this.getSelector(selectorKey, config); } @@ -491,7 +491,7 @@ export class Collection { */ public getSelector( selectorKey: SelectorKey | undefined, - config: HasConfigInterface = {}, + config: HasConfigInterface = {} ): Selector | undefined { config = defineConfig(config, { notExisting: false, @@ -517,7 +517,7 @@ export class Collection { * @param selectorKey - Name/Key of Selector */ public getSelectorWithReference( - selectorKey: SelectorKey, + selectorKey: SelectorKey ): Selector { let selector = this.getSelector(selectorKey, { notExisting: true }); @@ -545,7 +545,7 @@ export class Collection { public removeSelector(selectorKey: SelectorKey): this { if (!this.selectors[selectorKey]) { Agile.logger.warn( - `Selector with the key/name '${selectorKey}' doesn't exist!`, + `Selector with the key/name '${selectorKey}' doesn't exist!` ); return this; } @@ -565,7 +565,7 @@ export class Collection { */ public hasItem( itemKey: ItemKey | undefined, - config: HasConfigInterface = {}, + config: HasConfigInterface = {} ): boolean { return !!this.getItem(itemKey, config); } @@ -581,7 +581,7 @@ export class Collection { */ public getItem( itemKey: ItemKey | undefined, - config: HasConfigInterface = {}, + config: HasConfigInterface = {} ): Item | undefined { config = defineConfig(config, { notExisting: false, @@ -615,7 +615,7 @@ export class Collection { } as any, { isPlaceholder: true, - }, + } ); this.data[itemKey] = item; } @@ -635,7 +635,7 @@ export class Collection { */ public getItemValue( itemKey: ItemKey | undefined, - config: HasConfigInterface = {}, + config: HasConfigInterface = {} ): DataType | undefined { const item = this.getItem(itemKey, config); if (!item) return undefined; @@ -659,11 +659,11 @@ export class Collection { */ public persist( key?: StorageKey, - config?: CollectionPersistentConfigInterface, + config?: CollectionPersistentConfigInterface ): this; public persist( keyOrConfig: StorageKey | CollectionPersistentConfigInterface = {}, - config: CollectionPersistentConfigInterface = {}, + config: CollectionPersistentConfigInterface = {} ): this { let _config: CollectionPersistentConfigInterface; let key: StorageKey | undefined; @@ -683,7 +683,7 @@ export class Collection { if (this.persistent) Agile.logger.warn( - `By persisting the Collection '${this._key}' twice you overwrite the old Persistent Instance!`, + `By persisting the Collection '${this._key}' twice you overwrite the old Persistent Instance!` ); // Create persistent -> Persist Value @@ -713,7 +713,7 @@ export class Collection { if (this.isPersisted) callback(true); } else { Agile.logger.error( - `Please make sure you persist the Collection '${this._key}' before using the 'onLoad' function!`, + `Please make sure you persist the Collection '${this._key}' before using the 'onLoad' function!` ); } return this; @@ -777,7 +777,7 @@ export class Collection { public put( itemKeys: ItemKey | Array, groupKeys: GroupKey | Array, - config: GroupAddConfig = {}, + config: GroupAddConfig = {} ) { const _itemKeys = normalizeArray(itemKeys); const _groupKeys = normalizeArray(groupKeys); @@ -801,7 +801,7 @@ export class Collection { public updateItemKey( oldItemKey: ItemKey, newItemKey: ItemKey, - config: UpdateItemKeyConfigInterface = {}, + config: UpdateItemKeyConfigInterface = {} ): boolean { const item = this.getItem(oldItemKey, { notExisting: true }); config = defineConfig(config, { @@ -813,7 +813,7 @@ export class Collection { // Check if Item with newItemKey already exists if (this.hasItem(newItemKey)) { Agile.logger.warn( - `Couldn't update ItemKey from '${oldItemKey}' to '${newItemKey}' because an Item with the key/name '${newItemKey}' already exists!`, + `Couldn't update ItemKey from '${oldItemKey}' to '${newItemKey}' because an Item with the key/name '${newItemKey}' already exists!` ); return false; } @@ -829,7 +829,7 @@ export class Collection { // Update persist Key of Item (Doesn't get updated by updating key of Item because PersistKey is special formatted) item.persistent?.setKey( - CollectionPersistent.getItemStorageKey(newItemKey, this._key), + CollectionPersistent.getItemStorageKey(newItemKey, this._key) ); // Update ItemKey in Groups @@ -906,7 +906,7 @@ export class Collection { */ public removeFromGroups( itemKeys: ItemKey | Array, - groupKeys: GroupKey | Array, + groupKeys: GroupKey | Array ): void { const _itemKeys = normalizeArray(itemKeys); const _groupKeys = normalizeArray(groupKeys); @@ -988,14 +988,14 @@ export class Collection { if (!isValidObject(_data)) { Agile.logger.error( - `Item Data of Collection '${this._key}' has to be an valid Object!`, + `Item Data of Collection '${this._key}' has to be an valid Object!` ); return false; } if (!Object.prototype.hasOwnProperty.call(_data, primaryKey)) { Agile.logger.error( - `Collection '${this._key}' Item Data has to contain a primaryKey property called '${this.config.primaryKey}'!`, + `Collection '${this._key}' Item Data has to contain a primaryKey property called '${this.config.primaryKey}'!` ); return false; } @@ -1032,7 +1032,7 @@ export class Collection { */ public rebuildGroupsThatIncludeItemKey( itemKey: ItemKey, - config: RebuildGroupsThatIncludeItemKeyConfigInterface = {}, + config: RebuildGroupsThatIncludeItemKeyConfigInterface = {} ): void { config = defineConfig(config, { background: false, diff --git a/packages/core/src/collection/item.ts b/packages/core/src/collection/item.ts index 14c0e01e..ebdd0484 100644 --- a/packages/core/src/collection/item.ts +++ b/packages/core/src/collection/item.ts @@ -22,7 +22,7 @@ export class Item extends State { constructor( collection: Collection, data: DataType, - config: ItemConfigInterface = {}, + config: ItemConfigInterface = {} ) { super(collection.agileInstance(), data, { isPlaceholder: config.isPlaceholder, @@ -47,7 +47,7 @@ export class Item extends State { */ public setKey( value: StateKey | undefined, - config: SetItemKeyConfig = {}, + config: SetItemKeyConfig = {} ): this { super.setKey(value); config = defineConfig(config, { @@ -65,7 +65,7 @@ export class Item extends State { // Add rebuildGroupsThatIncludeItemKey to sideEffects to rebuild Groups that include this Item if it changes this.addSideEffect(Item.updateGroupSideEffectKey, (config) => - this.collection().rebuildGroupsThatIncludeItemKey(value, config), + this.collection().rebuildGroupsThatIncludeItemKey(value, config) ); // Update ItemKey in ItemValue (After updating the sideEffect because otherwise it calls the old sideEffect) @@ -78,7 +78,7 @@ export class Item extends State { force: config.force, storage: config.storage, overwrite: config.overwrite, - }, + } ); // Initial Rebuild (not necessary if updating primaryKey in ItemValue because a sideEffect of the patch method is to rebuild the Group) diff --git a/packages/core/src/collection/selector.ts b/packages/core/src/collection/selector.ts index 797f4d58..0f04691a 100644 --- a/packages/core/src/collection/selector.ts +++ b/packages/core/src/collection/selector.ts @@ -28,7 +28,7 @@ export class Selector extends State< constructor( collection: Collection, itemKey: ItemKey, - config: SelectorConfigInterface = {}, + config: SelectorConfigInterface = {} ) { super(collection.agileInstance(), undefined, config); config = defineConfig(config, { @@ -72,7 +72,7 @@ export class Selector extends State< */ public select( itemKey: ItemKey, - config: StateRuntimeJobConfigInterface = {}, + config: StateRuntimeJobConfigInterface = {} ): this { const oldItem = this.collection().getItem(this._itemKey, { notExisting: true, @@ -100,7 +100,7 @@ export class Selector extends State< // Add SideEffect to newItem, that rebuild this Selector depending on the current Item Value newItem.addSideEffect(Selector.rebuildSelectorSideEffectKey, (config) => - this.rebuildSelector(config), + this.rebuildSelector(config) ); // Rebuild Selector for instantiating new 'selected' ItemKey properly diff --git a/packages/core/src/computed/index.ts b/packages/core/src/computed/index.ts index 7c1dcc80..73f42c01 100644 --- a/packages/core/src/computed/index.ts +++ b/packages/core/src/computed/index.ts @@ -27,7 +27,7 @@ export class Computed extends State< constructor( agileInstance: Agile, computeFunction: () => ComputedValueType, - config: ComputedConfigInterface = {}, + config: ComputedConfigInterface = {} ) { super(agileInstance, computeFunction(), { key: config.key, @@ -76,7 +76,7 @@ export class Computed extends State< public updateComputeFunction( computeFunction: () => ComputedValueType, deps: Array = [], - config: UpdateComputeFunctionInterface = {}, + config: UpdateComputeFunctionInterface = {} ) { config = defineConfig(config, { background: false, diff --git a/packages/core/src/event/event.observer.ts b/packages/core/src/event/event.observer.ts index 72dc5542..607c754b 100644 --- a/packages/core/src/event/event.observer.ts +++ b/packages/core/src/event/event.observer.ts @@ -21,7 +21,7 @@ export class EventObserver extends Observer { */ constructor( event: Event, - config: CreateEventObserverConfigInterface = {}, + config: CreateEventObserverConfigInterface = {} ) { super(event.agileInstance(), { deps: config.deps, diff --git a/packages/core/src/event/index.ts b/packages/core/src/event/index.ts index f3cc3eea..ea411069 100644 --- a/packages/core/src/event/index.ts +++ b/packages/core/src/event/index.ts @@ -107,7 +107,7 @@ export class Event { public on(key: string, callback: EventCallbackFunction): this; public on( keyOrCallback: string | EventCallbackFunction, - callback?: EventCallbackFunction, + callback?: EventCallbackFunction ): this | string { const generateKey = isFunction(keyOrCallback); let _callback: EventCallbackFunction; @@ -124,7 +124,7 @@ export class Event { // Check if Callback is a Function if (!isFunction(_callback)) { Agile.logger.error( - 'A Event Callback Function has to be typeof Function!', + 'A Event Callback Function has to be typeof Function!' ); return this; } @@ -132,7 +132,7 @@ export class Event { // Check if Callback Function already exists if (this.callbacks[key]) { Agile.logger.error( - `Event Callback Function with the key/name '${key}' already exists!`, + `Event Callback Function with the key/name '${key}' already exists!` ); return this; } @@ -287,7 +287,7 @@ export class Event { export type EventKey = string | number; export type DefaultEventPayload = { [key: string]: any }; export type EventCallbackFunction = ( - payload: PayloadType, + payload: PayloadType ) => void; /** diff --git a/packages/core/src/integrations/index.ts b/packages/core/src/integrations/index.ts index 0b162049..7df5861d 100644 --- a/packages/core/src/integrations/index.ts +++ b/packages/core/src/integrations/index.ts @@ -15,7 +15,7 @@ export class Integrations { // Integrate initial Integrations which are static and got set external Agile.initialIntegrations.forEach((integration) => - this.integrate(integration), + this.integrate(integration) ); } @@ -32,7 +32,7 @@ export class Integrations { if (!integration._key) { Agile.logger.error( 'Failed to integrate framework! Invalid Integration!', - integration._key, + integration._key ); return false; } diff --git a/packages/core/src/logger/index.ts b/packages/core/src/logger/index.ts index 94edb091..927e91f7 100644 --- a/packages/core/src/logger/index.ts +++ b/packages/core/src/logger/index.ts @@ -164,7 +164,7 @@ export class Logger { this.invokeConsole( data, 'debug', - typeof console.debug !== 'undefined' ? 'debug' : 'log', + typeof console.debug !== 'undefined' ? 'debug' : 'log' ); } @@ -172,7 +172,7 @@ export class Logger { this.invokeConsole( data, 'info', - typeof console.info !== 'undefined' ? 'info' : 'log', + typeof console.info !== 'undefined' ? 'info' : 'log' ); } @@ -180,7 +180,7 @@ export class Logger { this.invokeConsole( data, 'warn', - typeof console.warn !== 'undefined' ? 'warn' : 'log', + typeof console.warn !== 'undefined' ? 'warn' : 'log' ); } @@ -188,7 +188,7 @@ export class Logger { this.invokeConsole( data, 'error', - typeof console.error !== 'undefined' ? 'error' : 'log', + typeof console.error !== 'undefined' ? 'error' : 'log' ); } @@ -196,7 +196,7 @@ export class Logger { this.invokeConsole( data, 'trace', - typeof console.trace !== 'undefined' ? 'trace' : 'log', + typeof console.trace !== 'undefined' ? 'trace' : 'log' ); } @@ -204,7 +204,7 @@ export class Logger { this.invokeConsole( data, 'table', - typeof console.table !== 'undefined' ? 'table' : 'log', + typeof console.table !== 'undefined' ? 'table' : 'log' ); } @@ -225,7 +225,7 @@ export class Logger { private invokeConsole( data: any[], loggerCategoryKey: LoggerCategoryKey, - consoleLogType: ConsoleLogType, + consoleLogType: ConsoleLogType ) { const loggerCategory = this.getLoggerCategory(loggerCategoryKey); @@ -332,7 +332,7 @@ export class Logger { public watch(key: string, config: LoggerWatcherConfigInterface): this; public watch( keyOrConfig: string | LoggerWatcherConfigInterface, - config?: LoggerWatcherConfigInterface, + config?: LoggerWatcherConfigInterface ): this | string { const generateKey = isValidObject(keyOrConfig); let _config: LoggerWatcherConfigInterface; @@ -353,7 +353,7 @@ export class Logger { // Check if Callback is a Function if (!isFunction(_config.callback)) { console.error( - 'Agile: A Watcher Callback Function has to be an function!', + 'Agile: A Watcher Callback Function has to be an function!' ); return this; } @@ -361,7 +361,7 @@ export class Logger { // Check if Callback Function already exists if (this.watchers[key]) { console.error( - `Agile: Watcher Callback Function with the key/name ${key} already exists!`, + `Agile: Watcher Callback Function with the key/name ${key} already exists!` ); return this; } @@ -455,7 +455,7 @@ export type ConsoleLogType = export type LoggerWatcherCallback = ( loggerCategory: LoggerCategoryInterface, - data: any[], + data: any[] ) => void; /** diff --git a/packages/core/src/runtime/index.ts b/packages/core/src/runtime/index.ts index 5f73a8e1..0801d422 100644 --- a/packages/core/src/runtime/index.ts +++ b/packages/core/src/runtime/index.ts @@ -110,7 +110,7 @@ export class Runtime { // Build final jobsToRerender and reset jobsToRerender Instances const jobsToRerender = this.jobsToRerender.concat( - Array.from(this.notReadyJobsToRerender), + Array.from(this.notReadyJobsToRerender) ); this.notReadyJobsToRerender = new Set(); this.jobsToRerender = []; @@ -124,7 +124,7 @@ export class Runtime { // Logging Agile.logger.warn( "SubscriptionContainer/Component isn't ready to rerender!", - subscriptionContainer, + subscriptionContainer ); return; } @@ -147,7 +147,7 @@ export class Runtime { if (subscriptionContainer instanceof ComponentSubscriptionContainer) this.agileInstance().integrations.update( subscriptionContainer.component, - this.getObjectBasedProps(subscriptionContainer), + this.getObjectBasedProps(subscriptionContainer) ); }); @@ -170,7 +170,7 @@ export class Runtime { */ public handleObjectBasedSubscription( subscriptionContainer: SubscriptionContainer, - job: RuntimeJob, + job: RuntimeJob ): void { let foundKey: string | null = null; @@ -194,7 +194,7 @@ export class Runtime { * @param subscriptionContainer - Object based SubscriptionContainer */ public getObjectBasedProps( - subscriptionContainer: SubscriptionContainer, + subscriptionContainer: SubscriptionContainer ): { [key: string]: any } { const props: { [key: string]: any } = {}; diff --git a/packages/core/src/runtime/observer.ts b/packages/core/src/runtime/observer.ts index b26bcb94..ad1bb0e2 100644 --- a/packages/core/src/runtime/observer.ts +++ b/packages/core/src/runtime/observer.ts @@ -25,7 +25,7 @@ export class Observer { */ constructor( agileInstance: Agile, - config: CreateObserverConfigInterface = {}, + config: CreateObserverConfigInterface = {} ) { config = defineConfig(config, { deps: [], @@ -36,7 +36,7 @@ export class Observer { this.value = config.value; config.deps?.forEach((observer) => this.depend(observer)); config.subs?.forEach((subscriptionContainer) => - this.subscribe(subscriptionContainer), + this.subscribe(subscriptionContainer) ); } @@ -66,7 +66,7 @@ export class Observer { */ public perform(job: RuntimeJob) { Agile.logger.warn( - "Perform function isn't Set in Observer! Be aware that Observer is no stand alone class!", + "Perform function isn't Set in Observer! Be aware that Observer is no stand alone class!" ); } diff --git a/packages/core/src/runtime/runtime.job.ts b/packages/core/src/runtime/runtime.job.ts index 2e6506a8..3634f8df 100644 --- a/packages/core/src/runtime/runtime.job.ts +++ b/packages/core/src/runtime/runtime.job.ts @@ -16,7 +16,7 @@ export class RuntimeJob { */ constructor( observer: ObserverType, - config: CreateRuntimeJobConfigInterface = {}, + config: CreateRuntimeJobConfigInterface = {} ) { config = defineConfig(config, { background: false, diff --git a/packages/core/src/runtime/subscription/container/CallbackSubscriptionContainer.ts b/packages/core/src/runtime/subscription/container/CallbackSubscriptionContainer.ts index eca14df6..a2fc0ef0 100644 --- a/packages/core/src/runtime/subscription/container/CallbackSubscriptionContainer.ts +++ b/packages/core/src/runtime/subscription/container/CallbackSubscriptionContainer.ts @@ -17,7 +17,7 @@ export class CallbackSubscriptionContainer extends SubscriptionContainer { constructor( callback: Function, subs: Array = [], - key?: SubscriptionContainerKeyType, + key?: SubscriptionContainerKeyType ) { super(subs, key); this.callback = callback; diff --git a/packages/core/src/runtime/subscription/container/ComponentSubscriptionContainer.ts b/packages/core/src/runtime/subscription/container/ComponentSubscriptionContainer.ts index cbd7bc22..65eca82c 100644 --- a/packages/core/src/runtime/subscription/container/ComponentSubscriptionContainer.ts +++ b/packages/core/src/runtime/subscription/container/ComponentSubscriptionContainer.ts @@ -17,7 +17,7 @@ export class ComponentSubscriptionContainer extends SubscriptionContainer { constructor( component: any, subs: Array = [], - key?: SubscriptionContainerKeyType, + key?: SubscriptionContainerKeyType ) { super(subs, key); this.component = component; diff --git a/packages/core/src/runtime/subscription/sub.controller.ts b/packages/core/src/runtime/subscription/sub.controller.ts index 6f7383f0..6dc71ddb 100644 --- a/packages/core/src/runtime/subscription/sub.controller.ts +++ b/packages/core/src/runtime/subscription/sub.controller.ts @@ -38,7 +38,7 @@ export class SubController { public subscribeWithSubsObject( integrationInstance: any, subs: { [key: string]: Observer } = {}, - key?: SubscriptionContainerKeyType, + key?: SubscriptionContainerKeyType ): { subscriptionContainer: SubscriptionContainer; props: { [key: string]: Observer['value'] }; @@ -53,7 +53,7 @@ export class SubController { const subscriptionContainer = this.registerSubscription( integrationInstance, subsArray, - key, + key ); // Set SubscriptionContainer to Object based @@ -86,13 +86,13 @@ export class SubController { public subscribeWithSubsArray( integrationInstance: any, subs: Array = [], - key?: SubscriptionContainerKeyType, + key?: SubscriptionContainerKeyType ): SubscriptionContainer { // Register Subscription -> decide weather subscriptionInstance is callback or component based const subscriptionContainer = this.registerSubscription( integrationInstance, subs, - key, + key ); // Register subs @@ -130,7 +130,7 @@ export class SubController { .tag(['core', 'subscription']) .info( 'Unregistered Callback based Subscription ', - subscriptionInstance, + subscriptionInstance ); return; } @@ -145,7 +145,7 @@ export class SubController { .tag(['core', 'subscription']) .info( 'Unregistered Component based Subscription ', - subscriptionInstance, + subscriptionInstance ); return; } @@ -153,10 +153,10 @@ export class SubController { // Unsubscribe component based Subscription with subscriptionInstance that holds a componentSubscriptionContainer if (subscriptionInstance.componentSubscriptionContainer) { unsub( - subscriptionInstance.componentSubscriptionContainer as ComponentSubscriptionContainer, + subscriptionInstance.componentSubscriptionContainer as ComponentSubscriptionContainer ); this.componentSubs.delete( - subscriptionInstance.componentSubscriptionContainer, + subscriptionInstance.componentSubscriptionContainer ); // Logging @@ -164,7 +164,7 @@ export class SubController { .tag(['core', 'subscription']) .info( 'Unregistered Component based Subscription ', - subscriptionInstance, + subscriptionInstance ); return; } @@ -183,7 +183,7 @@ export class SubController { public registerSubscription( integrationInstance: any, subs: Array = [], - key?: SubscriptionContainerKeyType, + key?: SubscriptionContainerKeyType ): SubscriptionContainer { if (isFunction(integrationInstance)) return this.registerCallbackSubscription(integrationInstance, subs, key); @@ -203,12 +203,12 @@ export class SubController { public registerComponentSubscription( componentInstance: any, subs: Array = [], - key?: SubscriptionContainerKeyType, + key?: SubscriptionContainerKeyType ): ComponentSubscriptionContainer { const componentSubscriptionContainer = new ComponentSubscriptionContainer( componentInstance, subs, - key, + key ); this.componentSubs.add(componentSubscriptionContainer); @@ -226,7 +226,7 @@ export class SubController { .tag(['core', 'subscription']) .info( 'Registered Component based Subscription ', - componentSubscriptionContainer, + componentSubscriptionContainer ); return componentSubscriptionContainer; @@ -245,12 +245,12 @@ export class SubController { public registerCallbackSubscription( callbackFunction: () => void, subs: Array = [], - key?: SubscriptionContainerKeyType, + key?: SubscriptionContainerKeyType ): CallbackSubscriptionContainer { const callbackSubscriptionContainer = new CallbackSubscriptionContainer( callbackFunction, subs, - key, + key ); this.callbackSubs.add(callbackSubscriptionContainer); callbackSubscriptionContainer.ready = true; @@ -260,7 +260,7 @@ export class SubController { .tag(['core', 'subscription']) .info( 'Registered Callback based Subscription ', - callbackSubscriptionContainer, + callbackSubscriptionContainer ); return callbackSubscriptionContainer; diff --git a/packages/core/src/state/index.ts b/packages/core/src/state/index.ts index e7fb7d84..2a3033f1 100644 --- a/packages/core/src/state/index.ts +++ b/packages/core/src/state/index.ts @@ -51,7 +51,7 @@ export class State { constructor( agileInstance: Agile, initialValue: ValueType, - config: StateConfigInterface = {}, + config: StateConfigInterface = {} ) { config = defineConfig(config, { deps: [], @@ -141,7 +141,7 @@ export class State { */ public set( value: ValueType, - config: StateRuntimeJobConfigInterface = {}, + config: StateRuntimeJobConfigInterface = {} ): this { config = defineConfig(config, { sideEffects: true, @@ -195,7 +195,7 @@ export class State { // Check if type is a supported Type if (!supportedTypes.includes(type.name)) { Agile.logger.warn( - `'${type}' is not supported! Supported types: String, Boolean, Array, Object, Number`, + `'${type}' is not supported! Supported types: String, Boolean, Array, Object, Number` ); return this; } @@ -242,7 +242,7 @@ export class State { */ public patch( targetWithChanges: object, - config: PatchConfigInterface = {}, + config: PatchConfigInterface = {} ): this { config = defineConfig(config, { addNewProperties: true, @@ -255,7 +255,7 @@ export class State { if (!isValidObject(this.nextStateValue)) { Agile.logger.error( - "You can't use the patch method on a non object based States!", + "You can't use the patch method on a non object based States!" ); return this; } @@ -269,7 +269,7 @@ export class State { this.nextStateValue = flatMerge( copy(this.nextStateValue), targetWithChanges, - { addNewProperties: config.addNewProperties }, + { addNewProperties: config.addNewProperties } ); // Ingest updated nextStateValue into Runtime @@ -303,7 +303,7 @@ export class State { public watch(key: string, callback: StateWatcherCallback): this; public watch( keyOrCallback: string | StateWatcherCallback, - callback?: StateWatcherCallback, + callback?: StateWatcherCallback ): this | string { const generateKey = isFunction(keyOrCallback); let _callback: StateWatcherCallback; @@ -320,7 +320,7 @@ export class State { // Check if Callback is valid Function if (!isFunction(_callback)) { Agile.logger.error( - 'A Watcher Callback Function has to be typeof Function!', + 'A Watcher Callback Function has to be typeof Function!' ); return this; } @@ -328,7 +328,7 @@ export class State { // Check if watcherKey is already occupied if (this.watchers[key]) { Agile.logger.error( - `Watcher Callback Function with the key/name '${key}' already exists!`, + `Watcher Callback Function with the key/name '${key}' already exists!` ); return this; } @@ -392,11 +392,11 @@ export class State { */ public persist( key?: PersistentKey, - config?: StatePersistentConfigInterface, + config?: StatePersistentConfigInterface ): this; public persist( keyOrConfig: PersistentKey | StatePersistentConfigInterface = {}, - config: StatePersistentConfigInterface = {}, + config: StatePersistentConfigInterface = {} ): this { let _config: StatePersistentConfigInterface; let key: PersistentKey | undefined; @@ -416,7 +416,7 @@ export class State { if (this.persistent) Agile.logger.warn( - `By persisting the State '${this._key}' twice you overwrite the old Persistent Instance!`, + `By persisting the State '${this._key}' twice you overwrite the old Persistent Instance!` ); // Create persistent -> Persist Value @@ -446,7 +446,7 @@ export class State { if (this.isPersisted) callback(true); } else { Agile.logger.error( - `Please make sure you persist the State '${this._key}' before using the 'onLoad' function!`, + `Please make sure you persist the State '${this._key}' before using the 'onLoad' function!` ); } return this; @@ -543,7 +543,7 @@ export class State { */ public addSideEffect( key: string, - sideEffect: (properties?: { [key: string]: any }) => void, + sideEffect: (properties?: { [key: string]: any }) => void ): this { if (!isFunction(sideEffect)) { Agile.logger.error('A sideEffect function has to be a function!'); diff --git a/packages/core/src/state/state.observer.ts b/packages/core/src/state/state.observer.ts index b62a1a46..292f6a90 100644 --- a/packages/core/src/state/state.observer.ts +++ b/packages/core/src/state/state.observer.ts @@ -27,7 +27,7 @@ export class StateObserver extends Observer { */ constructor( state: State, - config: CreateStateObserverConfigInterface = {}, + config: CreateStateObserverConfigInterface = {} ) { super(state.agileInstance(), { ...config, ...{ value: state._value } }); this.state = () => state; @@ -63,7 +63,7 @@ export class StateObserver extends Observer { */ public ingestValue( newStateValue: ValueType, - config: StateIngestConfigInterface = {}, + config: StateIngestConfigInterface = {} ): void { const state = this.state(); config = defineConfig(config, { @@ -158,8 +158,7 @@ export class StateObserver extends Observer { // Ingest Dependencies of Observer into Runtime state.observer.deps.forEach( (observer) => - observer instanceof StateObserver && - observer.ingest({ perform: false }), + observer instanceof StateObserver && observer.ingest({ perform: false }) ); } } diff --git a/packages/core/src/state/state.persistent.ts b/packages/core/src/state/state.persistent.ts index be7d749e..4297b828 100644 --- a/packages/core/src/state/state.persistent.ts +++ b/packages/core/src/state/state.persistent.ts @@ -19,7 +19,7 @@ export class StatePersistent extends Persistent { */ constructor( state: State, - config: CreatePersistentConfigInterface = {}, + config: CreatePersistentConfigInterface = {} ) { super(state.agileInstance(), { instantiate: false, @@ -97,7 +97,7 @@ export class StatePersistent extends Persistent { // Load Value from default Storage const loadedValue = await this.agileInstance().storages.get( _key, - this.defaultStorageKey, + this.defaultStorageKey ); if (!loadedValue) return false; @@ -127,7 +127,7 @@ export class StatePersistent extends Persistent { StatePersistent.storeValueSideEffectKey, (config) => { this.rebuildStorageSideEffect(this.state(), _key, config); - }, + } ); // Rebuild Storage for saving State Value in the Storage @@ -194,14 +194,14 @@ export class StatePersistent extends Persistent { public rebuildStorageSideEffect( state: State, key: PersistentKey, - config: any = {}, + config: any = {} ) { if (config.storage !== undefined && !config.storage) return; this.agileInstance().storages.set( key, this.state().getPersistableValue(), - this.storageKeys, + this.storageKeys ); } } diff --git a/packages/core/src/state/state.runtime.job.ts b/packages/core/src/state/state.runtime.job.ts index 505e282a..d73a3da8 100644 --- a/packages/core/src/state/state.runtime.job.ts +++ b/packages/core/src/state/state.runtime.job.ts @@ -11,7 +11,7 @@ export class StateRuntimeJob extends RuntimeJob { constructor( observer: StateObserver, - config: CreateStateRuntimeJobConfigInterface = {}, + config: CreateStateRuntimeJobConfigInterface = {} ) { super(observer, config); config = defineConfig(config, { diff --git a/packages/core/src/storages/index.ts b/packages/core/src/storages/index.ts index 0fc20aab..4d372c2c 100644 --- a/packages/core/src/storages/index.ts +++ b/packages/core/src/storages/index.ts @@ -40,7 +40,7 @@ export class Storages { // Check if Local Storage is Available if (!Storages.localStorageAvailable()) { Agile.logger.warn( - 'Local Storage is here not available, to use Storage functionalities like persist please provide a custom Storage!', + 'Local Storage is here not available, to use Storage functionalities like persist please provide a custom Storage!' ); return false; } @@ -69,14 +69,14 @@ export class Storages { */ public register( storage: Storage, - config: RegisterConfigInterface = {}, + config: RegisterConfigInterface = {} ): boolean { const hasRegisteredAnyStorage = notEqual(this.storages, {}); // Check if Storage already exists if (Object.prototype.hasOwnProperty.call(this.storages, storage.key)) { Agile.logger.error( - `Storage with the key/name '${storage.key}' already exists`, + `Storage with the key/name '${storage.key}' already exists` ); return false; } @@ -84,7 +84,7 @@ export class Storages { // Set first added Storage as default Storage if (!hasRegisteredAnyStorage && config.default === false) { Agile.logger.warn( - 'Be aware that Agile has to assign the first added Storage as default Storage!', + 'Be aware that Agile has to assign the first added Storage as default Storage!' ); } if (!hasRegisteredAnyStorage) config.default = true; @@ -147,11 +147,11 @@ export class Storages { */ public get( key: StorageItemKey, - storageKey?: StorageKey, + storageKey?: StorageKey ): Promise { if (!this.hasStorage()) { Agile.logger.error( - 'No Storage found! Please provide at least one Storage.', + 'No Storage found! Please provide at least one Storage.' ); return Promise.resolve(undefined); } @@ -179,11 +179,11 @@ export class Storages { public set( key: StorageItemKey, value: any, - storageKeys?: StorageKey[], + storageKeys?: StorageKey[] ): void { if (!this.hasStorage()) { Agile.logger.error( - 'No Storage found! Please provide at least one Storage.', + 'No Storage found! Please provide at least one Storage.' ); return; } @@ -211,7 +211,7 @@ export class Storages { public remove(key: StorageItemKey, storageKeys?: StorageKey[]): void { if (!this.hasStorage()) { Agile.logger.error( - 'No Storage found! Please provide at least one Storage.', + 'No Storage found! Please provide at least one Storage.' ); return; } diff --git a/packages/core/src/storages/persistent.ts b/packages/core/src/storages/persistent.ts index 898c2724..c3702f70 100644 --- a/packages/core/src/storages/persistent.ts +++ b/packages/core/src/storages/persistent.ts @@ -23,7 +23,7 @@ export class Persistent { */ constructor( agileInstance: Agile, - config: CreatePersistentConfigInterface = {}, + config: CreatePersistentConfigInterface = {} ) { this.agileInstance = () => agileInstance; this._key = Persistent.placeHolderKey; @@ -96,7 +96,7 @@ export class Persistent { // Validate Key if (this._key === Persistent.placeHolderKey) { Agile.logger.error( - 'No valid persist Key found! Please provide a Key or assign one to the parent instance.', + 'No valid persist Key found! Please provide a Key or assign one to the parent instance.' ); isValid = false; } @@ -104,7 +104,7 @@ export class Persistent { // Validate StorageKeys if (!this.defaultStorageKey || this.storageKeys.length <= 0) { Agile.logger.error( - 'No persist Storage Key found! Please provide at least one Storage Key.', + 'No persist Storage Key found! Please provide at least one Storage Key.' ); isValid = false; } @@ -162,7 +162,7 @@ export class Persistent { */ public async loadPersistedValue(): Promise { Agile.logger.error( - `'loadPersistedValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!`, + `'loadPersistedValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!` ); return false; } @@ -177,7 +177,7 @@ export class Persistent { */ public async persistValue(): Promise { Agile.logger.error( - `'persistValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!`, + `'persistValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!` ); return false; } @@ -192,7 +192,7 @@ export class Persistent { */ public async removePersistedValue(): Promise { Agile.logger.error( - `'removePersistedValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!`, + `'removePersistedValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!` ); return false; } diff --git a/packages/core/src/storages/storage.ts b/packages/core/src/storages/storage.ts index 1630f5e1..2fce3664 100644 --- a/packages/core/src/storages/storage.ts +++ b/packages/core/src/storages/storage.ts @@ -76,7 +76,7 @@ export class Storage { if (!this.ready || !this.methods.get) return; if (isAsyncFunction(this.methods.get)) Agile.logger.warn( - "Be aware that 'normalGet' returns a Promise with a stringified Value if using it in an async Storage!", + "Be aware that 'normalGet' returns a Promise with a stringified Value if using it in an async Storage!" ); // Get Value diff --git a/packages/core/src/utils.ts b/packages/core/src/utils.ts index 6dc24cc5..c36532b3 100644 --- a/packages/core/src/utils.ts +++ b/packages/core/src/utils.ts @@ -63,7 +63,7 @@ export function isValidObject(value: any): boolean { */ export function includesArray( array1: Array, - array2: Array, + array2: Array ): boolean { return array2.every((element) => array1.includes(element)); } @@ -79,7 +79,7 @@ export function includesArray( */ export function normalizeArray( items?: DataType | Array, - config: { createUndefinedArray?: boolean } = {}, + config: { createUndefinedArray?: boolean } = {} ): Array { config = defineConfig(config, { createUndefinedArray: false, // If it should return [] or [undefined] if the passed Item is undefined @@ -162,7 +162,7 @@ export function isValidUrl(url: string): boolean { '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path '(\\?[;&a-z\\d%_.~+=-]*)?' + // query string '(\\#[-a-z\\d_]*)?$', - 'i', + 'i' ); return pattern.test(url); } @@ -198,7 +198,7 @@ export function isJsonString(value: any): boolean { export function defineConfig( config: ConfigInterface, defaults: Object, - overwriteUndefinedProperties?: boolean, + overwriteUndefinedProperties?: boolean ): ConfigInterface { if (overwriteUndefinedProperties === undefined) overwriteUndefinedProperties = true; @@ -234,7 +234,7 @@ export interface FlatMergeConfigInterface { export function flatMerge( source: DataType, changes: Object, - config: FlatMergeConfigInterface = {}, + config: FlatMergeConfigInterface = {} ): DataType { // Copy Source to avoid references const _source = copy(source); @@ -330,7 +330,7 @@ export function clone(instance: T): T { export function globalBind( key: string, instance: any, - overwrite = false, + overwrite = false ): boolean { try { if (overwrite) { diff --git a/packages/core/tests/integration/collection.persistent.integration.test.ts b/packages/core/tests/integration/collection.persistent.integration.test.ts index 2de8a891..af3b3d5e 100644 --- a/packages/core/tests/integration/collection.persistent.integration.test.ts +++ b/packages/core/tests/integration/collection.persistent.integration.test.ts @@ -27,7 +27,7 @@ describe('Collection Persist Function Tests', () => { key: 'testStorage', prefix: 'test', methods: storageMethods, - }), + }) ); interface User { diff --git a/packages/core/tests/unit/agile.test.ts b/packages/core/tests/unit/agile.test.ts index 58959710..c2a5dbdd 100644 --- a/packages/core/tests/unit/agile.test.ts +++ b/packages/core/tests/unit/agile.test.ts @@ -258,7 +258,7 @@ describe('Agile Tests', () => { expect(returnedAgile).toBe(agile); expect(agile.integrations.integrate).toHaveBeenCalledWith( - testIntegration, + testIntegration ); }); }); diff --git a/packages/core/tests/unit/collection/collection.persistent.test.ts b/packages/core/tests/unit/collection/collection.persistent.test.ts index 6a6e0c29..119a3835 100644 --- a/packages/core/tests/unit/collection/collection.persistent.test.ts +++ b/packages/core/tests/unit/collection/collection.persistent.test.ts @@ -134,7 +134,7 @@ describe('CollectionPersistent Tests', () => { remove: jest.fn(), set: jest.fn(), }, - }), + }) ); dummyItem1 = new Item(dummyCollection, { id: '1', @@ -179,10 +179,10 @@ describe('CollectionPersistent Tests', () => { expect(collectionPersistent.validatePersistent).toHaveBeenCalled(); expect(collectionPersistent.initialLoading).not.toHaveBeenCalled(); expect(collectionPersistent.persistValue).toHaveBeenCalledWith( - 'newKey', + 'newKey' ); expect(collectionPersistent.removePersistedValue).toHaveBeenCalledWith( - 'dummyKey', + 'dummyKey' ); }); @@ -193,14 +193,14 @@ describe('CollectionPersistent Tests', () => { await collectionPersistent.setKey(); expect(collectionPersistent._key).toBe( - CollectionPersistent.placeHolderKey, + CollectionPersistent.placeHolderKey ); expect(collectionPersistent.ready).toBeFalsy(); expect(collectionPersistent.validatePersistent).toHaveBeenCalled(); expect(collectionPersistent.initialLoading).not.toHaveBeenCalled(); expect(collectionPersistent.persistValue).not.toHaveBeenCalled(); expect(collectionPersistent.removePersistedValue).toHaveBeenCalledWith( - 'dummyKey', + 'dummyKey' ); }); @@ -215,7 +215,7 @@ describe('CollectionPersistent Tests', () => { expect(collectionPersistent.initialLoading).toHaveBeenCalled(); expect(collectionPersistent.persistValue).not.toHaveBeenCalled(); expect( - collectionPersistent.removePersistedValue, + collectionPersistent.removePersistedValue ).not.toHaveBeenCalled(); }); @@ -225,14 +225,14 @@ describe('CollectionPersistent Tests', () => { await collectionPersistent.setKey(); expect(collectionPersistent._key).toBe( - CollectionPersistent.placeHolderKey, + CollectionPersistent.placeHolderKey ); expect(collectionPersistent.ready).toBeFalsy(); expect(collectionPersistent.validatePersistent).toHaveBeenCalled(); expect(collectionPersistent.initialLoading).not.toHaveBeenCalled(); expect(collectionPersistent.persistValue).not.toHaveBeenCalled(); expect( - collectionPersistent.removePersistedValue, + collectionPersistent.removePersistedValue ).not.toHaveBeenCalled(); }); }); @@ -283,33 +283,33 @@ describe('CollectionPersistent Tests', () => { expect(response).toBeTruthy(); expect(dummyCollection.getGroup).toHaveBeenCalledWith( - dummyCollection.config.defaultGroupKey, + dummyCollection.config.defaultGroupKey ); expect(dummyAgile.storages.get).toHaveBeenCalledWith( collectionPersistent._key, - collectionPersistent.defaultStorageKey, + collectionPersistent.defaultStorageKey ); expect(dummyAgile.storages.get).toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( '1', - collectionPersistent._key, + collectionPersistent._key ), - collectionPersistent.defaultStorageKey, + collectionPersistent.defaultStorageKey ); expect(dummyAgile.storages.get).toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( '2', - collectionPersistent._key, + collectionPersistent._key ), - collectionPersistent.defaultStorageKey, + collectionPersistent.defaultStorageKey ); expect(dummyAgile.storages.get).toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( '3', - collectionPersistent._key, + collectionPersistent._key ), - collectionPersistent.defaultStorageKey, + collectionPersistent.defaultStorageKey ); expect(dummyDefaultGroup.persist).toHaveBeenCalledWith({ @@ -330,7 +330,7 @@ describe('CollectionPersistent Tests', () => { }); expect(collectionPersistent.persistValue).toHaveBeenCalledWith( - collectionPersistent._key, + collectionPersistent._key ); }); @@ -349,33 +349,33 @@ describe('CollectionPersistent Tests', () => { expect(dummyAgile.storages.get).toHaveBeenCalledWith( collectionPersistent._key, - collectionPersistent.defaultStorageKey, + collectionPersistent.defaultStorageKey ); expect(dummyAgile.storages.get).not.toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( '1', - collectionPersistent._key, + collectionPersistent._key ), - collectionPersistent.defaultStorageKey, + collectionPersistent.defaultStorageKey ); expect(dummyAgile.storages.get).not.toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( '2', - collectionPersistent._key, + collectionPersistent._key ), - collectionPersistent.defaultStorageKey, + collectionPersistent.defaultStorageKey ); expect(dummyAgile.storages.get).not.toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( '3', - collectionPersistent._key, + collectionPersistent._key ), - collectionPersistent.defaultStorageKey, + collectionPersistent.defaultStorageKey ); expect(dummyDefaultGroup.persist).not.toHaveBeenCalled(); expect( - dummyDefaultGroup.persistent.initialLoading, + dummyDefaultGroup.persistent.initialLoading ).not.toHaveBeenCalled(); expect(dummyDefaultGroup.isPersisted).toBeFalsy(); @@ -395,30 +395,30 @@ describe('CollectionPersistent Tests', () => { dummyCollection.getGroup = jest.fn(() => dummyDefaultGroup as any); const response = await collectionPersistent.loadPersistedValue( - 'dummyKey', + 'dummyKey' ); expect(response).toBeTruthy(); expect(dummyCollection.getGroup).toHaveBeenCalledWith( - dummyCollection.config.defaultGroupKey, + dummyCollection.config.defaultGroupKey ); expect(dummyAgile.storages.get).toHaveBeenCalledWith( 'dummyKey', - collectionPersistent.defaultStorageKey, + collectionPersistent.defaultStorageKey ); expect(dummyAgile.storages.get).toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey('1', 'dummyKey'), - collectionPersistent.defaultStorageKey, + collectionPersistent.defaultStorageKey ); expect(dummyAgile.storages.get).toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey('2', 'dummyKey'), - collectionPersistent.defaultStorageKey, + collectionPersistent.defaultStorageKey ); expect(dummyAgile.storages.get).toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey('3', 'dummyKey'), - collectionPersistent.defaultStorageKey, + collectionPersistent.defaultStorageKey ); expect(dummyDefaultGroup.persist).toHaveBeenCalledWith({ @@ -439,14 +439,14 @@ describe('CollectionPersistent Tests', () => { }); expect(collectionPersistent.persistValue).toHaveBeenCalledWith( - 'dummyKey', + 'dummyKey' ); }); it("shouldn't load default Group and its Items if Persistent isn't ready", async () => { collectionPersistent.ready = false; dummyAgile.storages.get = jest.fn(() => - Promise.resolve(undefined as any), + Promise.resolve(undefined as any) ); dummyCollection.getGroup = jest.fn(() => dummyDefaultGroup as any); @@ -460,7 +460,7 @@ describe('CollectionPersistent Tests', () => { expect(dummyDefaultGroup.persist).not.toHaveBeenCalled(); expect( - dummyDefaultGroup.persistent.initialLoading, + dummyDefaultGroup.persistent.initialLoading ).not.toHaveBeenCalled(); expect(dummyDefaultGroup.isPersisted).toBeFalsy(); @@ -482,38 +482,38 @@ describe('CollectionPersistent Tests', () => { expect(response).toBeFalsy(); expect(dummyCollection.getGroup).toHaveBeenCalledWith( - dummyCollection.config.defaultGroupKey, + dummyCollection.config.defaultGroupKey ); expect(dummyAgile.storages.get).toHaveBeenCalledWith( collectionPersistent._key, - collectionPersistent.defaultStorageKey, + collectionPersistent.defaultStorageKey ); expect(dummyAgile.storages.get).not.toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( '1', - collectionPersistent._key, + collectionPersistent._key ), - collectionPersistent.defaultStorageKey, + collectionPersistent.defaultStorageKey ); expect(dummyAgile.storages.get).not.toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( '2', - collectionPersistent._key, + collectionPersistent._key ), - collectionPersistent.defaultStorageKey, + collectionPersistent.defaultStorageKey ); expect(dummyAgile.storages.get).not.toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( '3', - collectionPersistent._key, + collectionPersistent._key ), - collectionPersistent.defaultStorageKey, + collectionPersistent.defaultStorageKey ); expect(dummyDefaultGroup.persist).not.toHaveBeenCalled(); expect( - dummyDefaultGroup.persistent.initialLoading, + dummyDefaultGroup.persistent.initialLoading ).not.toHaveBeenCalled(); expect(dummyDefaultGroup.isPersisted).toBeFalsy(); @@ -558,31 +558,31 @@ describe('CollectionPersistent Tests', () => { expect(dummyAgile.storages.set).toHaveBeenCalledWith( collectionPersistent._key, true, - collectionPersistent.storageKeys, + collectionPersistent.storageKeys ); expect(dummyCollection.getGroup).toHaveBeenCalledWith( - dummyCollection.config.defaultGroupKey, + dummyCollection.config.defaultGroupKey ); expect(dummyDefaultGroup.persist).toHaveBeenCalledWith({ followCollectionPersistKeyPattern: true, }); expect(dummyDefaultGroup.addSideEffect).toHaveBeenCalledWith( CollectionPersistent.defaultGroupSideEffectKey, - expect.any(Function), + expect.any(Function) ); expect(dummyItem1.persist).toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( dummyItem1._key, - collectionPersistent._key, - ), + collectionPersistent._key + ) ); expect(dummyItem3.persist).toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( dummyItem3._key, - collectionPersistent._key, - ), + collectionPersistent._key + ) ); expect(collectionPersistent.isPersisted).toBeTruthy(); @@ -599,25 +599,25 @@ describe('CollectionPersistent Tests', () => { expect(dummyAgile.storages.set).toHaveBeenCalledWith( 'dummyKey', true, - collectionPersistent.storageKeys, + collectionPersistent.storageKeys ); expect(dummyCollection.getGroup).toHaveBeenCalledWith( - dummyCollection.config.defaultGroupKey, + dummyCollection.config.defaultGroupKey ); expect(dummyDefaultGroup.persist).toHaveBeenCalledWith({ followCollectionPersistKeyPattern: true, }); expect(dummyDefaultGroup.addSideEffect).toHaveBeenCalledWith( CollectionPersistent.defaultGroupSideEffectKey, - expect.any(Function), + expect.any(Function) ); expect(dummyItem1.persist).toHaveBeenCalledWith( - CollectionPersistent.getItemStorageKey(dummyItem1._key, 'dummyKey'), + CollectionPersistent.getItemStorageKey(dummyItem1._key, 'dummyKey') ); expect(dummyItem3.persist).toHaveBeenCalledWith( - CollectionPersistent.getItemStorageKey(dummyItem3._key, 'dummyKey'), + CollectionPersistent.getItemStorageKey(dummyItem3._key, 'dummyKey') ); expect(collectionPersistent.isPersisted).toBeTruthy(); @@ -654,7 +654,7 @@ describe('CollectionPersistent Tests', () => { expect(dummyAgile.storages.set).not.toHaveBeenCalled(); expect(dummyCollection.getGroup).toHaveBeenCalledWith( - dummyCollection.config.defaultGroupKey, + dummyCollection.config.defaultGroupKey ); expect(dummyDefaultGroup.persist).not.toHaveBeenCalled(); expect(dummyDefaultGroup.addSideEffect).not.toHaveBeenCalled(); @@ -681,7 +681,7 @@ describe('CollectionPersistent Tests', () => { ](); expect( - collectionPersistent.rebuildStorageSideEffect, + collectionPersistent.rebuildStorageSideEffect ).toHaveBeenCalledWith(dummyDefaultGroup, collectionPersistent._key); }); @@ -696,7 +696,7 @@ describe('CollectionPersistent Tests', () => { ](); expect( - collectionPersistent.rebuildStorageSideEffect, + collectionPersistent.rebuildStorageSideEffect ).toHaveBeenCalledWith(dummyDefaultGroup, 'dummyKey'); }); }); @@ -735,17 +735,17 @@ describe('CollectionPersistent Tests', () => { expect(dummyAgile.storages.remove).toHaveBeenCalledWith( collectionPersistent._key, - collectionPersistent.storageKeys, + collectionPersistent.storageKeys ); expect(dummyCollection.getGroup).toHaveBeenCalledWith( - dummyCollection.config.defaultGroupKey, + dummyCollection.config.defaultGroupKey ); expect( - dummyDefaultGroup.persistent.removePersistedValue, + dummyDefaultGroup.persistent.removePersistedValue ).toHaveBeenCalled(); expect(dummyDefaultGroup.removeSideEffect).toHaveBeenCalledWith( - CollectionPersistent.defaultGroupSideEffectKey, + CollectionPersistent.defaultGroupSideEffectKey ); expect(dummyItem1.persistent.removePersistedValue).toHaveBeenCalled(); @@ -759,24 +759,24 @@ describe('CollectionPersistent Tests', () => { dummyCollection.getGroup = jest.fn(() => dummyDefaultGroup as any); const response = await collectionPersistent.removePersistedValue( - 'dummyKey', + 'dummyKey' ); expect(response).toBeTruthy(); expect(dummyAgile.storages.remove).toHaveBeenCalledWith( 'dummyKey', - collectionPersistent.storageKeys, + collectionPersistent.storageKeys ); expect(dummyCollection.getGroup).toHaveBeenCalledWith( - dummyCollection.config.defaultGroupKey, + dummyCollection.config.defaultGroupKey ); expect( - dummyDefaultGroup.persistent.removePersistedValue, + dummyDefaultGroup.persistent.removePersistedValue ).toHaveBeenCalled(); expect(dummyDefaultGroup.removeSideEffect).toHaveBeenCalledWith( - CollectionPersistent.defaultGroupSideEffectKey, + CollectionPersistent.defaultGroupSideEffectKey ); expect(dummyItem1.persistent.removePersistedValue).toHaveBeenCalled(); @@ -797,15 +797,15 @@ describe('CollectionPersistent Tests', () => { expect(dummyCollection.getGroup).not.toHaveBeenCalled(); expect( - dummyDefaultGroup.persistent.removePersistedValue, + dummyDefaultGroup.persistent.removePersistedValue ).not.toHaveBeenCalled(); expect(dummyDefaultGroup.removeSideEffect).not.toHaveBeenCalled(); expect( - dummyItem1.persistent.removePersistedValue, + dummyItem1.persistent.removePersistedValue ).not.toHaveBeenCalled(); expect( - dummyItem3.persistent.removePersistedValue, + dummyItem3.persistent.removePersistedValue ).not.toHaveBeenCalled(); expect(collectionPersistent.isPersisted).toBeUndefined(); @@ -822,18 +822,18 @@ describe('CollectionPersistent Tests', () => { expect(dummyAgile.storages.remove).not.toHaveBeenCalled(); expect(dummyCollection.getGroup).toHaveBeenCalledWith( - dummyCollection.config.defaultGroupKey, + dummyCollection.config.defaultGroupKey ); expect( - dummyDefaultGroup.persistent.removePersistedValue, + dummyDefaultGroup.persistent.removePersistedValue ).not.toHaveBeenCalled(); expect(dummyDefaultGroup.removeSideEffect).not.toHaveBeenCalled(); expect( - dummyItem1.persistent.removePersistedValue, + dummyItem1.persistent.removePersistedValue ).not.toHaveBeenCalled(); expect( - dummyItem3.persistent.removePersistedValue, + dummyItem3.persistent.removePersistedValue ).not.toHaveBeenCalled(); expect(collectionPersistent.isPersisted).toBeUndefined(); @@ -914,13 +914,13 @@ describe('CollectionPersistent Tests', () => { expect(dummyItem4WithoutPersistent.persist).not.toHaveBeenCalled(); expect( - dummyItem1.persistent.removePersistedValue, + dummyItem1.persistent.removePersistedValue ).not.toHaveBeenCalled(); expect( - dummyItem2.persistent.removePersistedValue, + dummyItem2.persistent.removePersistedValue ).not.toHaveBeenCalled(); expect( - dummyItem3.persistent.removePersistedValue, + dummyItem3.persistent.removePersistedValue ).not.toHaveBeenCalled(); expect(dummyItem1.persistent.persistValue).not.toHaveBeenCalled(); @@ -940,19 +940,13 @@ describe('CollectionPersistent Tests', () => { expect(dummyItem4WithoutPersistent.persist).not.toHaveBeenCalled(); expect(dummyItem1.persistent.removePersistedValue).toHaveBeenCalledWith( - CollectionPersistent.getItemStorageKey( - '1', - collectionPersistent._key, - ), + CollectionPersistent.getItemStorageKey('1', collectionPersistent._key) ); expect( - dummyItem2.persistent.removePersistedValue, + dummyItem2.persistent.removePersistedValue ).not.toHaveBeenCalled(); expect(dummyItem3.persistent.removePersistedValue).toHaveBeenCalledWith( - CollectionPersistent.getItemStorageKey( - '3', - collectionPersistent._key, - ), + CollectionPersistent.getItemStorageKey('3', collectionPersistent._key) ); expect(dummyItem1.persistent.persistValue).not.toHaveBeenCalled(); @@ -972,27 +966,21 @@ describe('CollectionPersistent Tests', () => { expect(dummyItem4WithoutPersistent.persist).not.toHaveBeenCalled(); expect( - dummyItem1.persistent.removePersistedValue, + dummyItem1.persistent.removePersistedValue ).not.toHaveBeenCalled(); expect( - dummyItem2.persistent.removePersistedValue, + dummyItem2.persistent.removePersistedValue ).not.toHaveBeenCalled(); expect( - dummyItem3.persistent.removePersistedValue, + dummyItem3.persistent.removePersistedValue ).not.toHaveBeenCalled(); expect(dummyItem1.persistent.persistValue).not.toHaveBeenCalled(); expect(dummyItem2.persistent.persistValue).toHaveBeenCalledWith( - CollectionPersistent.getItemStorageKey( - '2', - collectionPersistent._key, - ), + CollectionPersistent.getItemStorageKey('2', collectionPersistent._key) ); expect(dummyItem3.persistent.persistValue).toHaveBeenCalledWith( - CollectionPersistent.getItemStorageKey( - '3', - collectionPersistent._key, - ), + CollectionPersistent.getItemStorageKey('3', collectionPersistent._key) ); }); @@ -1006,20 +994,17 @@ describe('CollectionPersistent Tests', () => { expect(dummyItem2.persist).not.toHaveBeenCalled(); expect(dummyItem3.persist).not.toHaveBeenCalled(); expect(dummyItem4WithoutPersistent.persist).toHaveBeenCalledWith( - CollectionPersistent.getItemStorageKey( - '4', - collectionPersistent._key, - ), + CollectionPersistent.getItemStorageKey('4', collectionPersistent._key) ); expect( - dummyItem1.persistent.removePersistedValue, + dummyItem1.persistent.removePersistedValue ).not.toHaveBeenCalled(); expect( - dummyItem2.persistent.removePersistedValue, + dummyItem2.persistent.removePersistedValue ).not.toHaveBeenCalled(); expect( - dummyItem3.persistent.removePersistedValue, + dummyItem3.persistent.removePersistedValue ).not.toHaveBeenCalled(); expect(dummyItem1.persistent.persistValue).not.toHaveBeenCalled(); @@ -1036,7 +1021,7 @@ describe('CollectionPersistent Tests', () => { it('should build ItemStorageKey out of itemKey and collectionKey', () => { const response = CollectionPersistent.getItemStorageKey( 'itemKey', - 'collectionKey', + 'collectionKey' ); expect(response).toBe('_collectionKey_item_itemKey'); @@ -1046,36 +1031,36 @@ describe('CollectionPersistent Tests', () => { it('should build ItemStorageKey out of collectionKey with warning', () => { const response = CollectionPersistent.getItemStorageKey( undefined, - 'collectionKey', + 'collectionKey' ); expect(response).toBe('_collectionKey_item_unknown'); expect(console.warn).toHaveBeenCalledWith( - 'Agile Warn: Failed to build unique Item StorageKey!', + 'Agile Warn: Failed to build unique Item StorageKey!' ); }); it('should build ItemStorageKey out of itemKey with warning', () => { const response = CollectionPersistent.getItemStorageKey( 'itemKey', - undefined, + undefined ); expect(response).toBe('_unknown_item_itemKey'); expect(console.warn).toHaveBeenCalledWith( - 'Agile Warn: Failed to build unique Item StorageKey!', + 'Agile Warn: Failed to build unique Item StorageKey!' ); }); it('should build ItemStorageKey out of nothing with warning', () => { const response = CollectionPersistent.getItemStorageKey( undefined, - undefined, + undefined ); expect(response).toBe('_unknown_item_unknown'); expect(console.warn).toHaveBeenCalledWith( - 'Agile Warn: Failed to build unique Item StorageKey!', + 'Agile Warn: Failed to build unique Item StorageKey!' ); }); }); @@ -1088,7 +1073,7 @@ describe('CollectionPersistent Tests', () => { it('should build GroupStorageKey out of groupKey and collectionKey', () => { const response = CollectionPersistent.getGroupStorageKey( 'groupKey', - 'collectionKey', + 'collectionKey' ); expect(response).toBe('_collectionKey_group_groupKey'); @@ -1098,36 +1083,36 @@ describe('CollectionPersistent Tests', () => { it('should build GroupStorageKey out of collectionKey with warning', () => { const response = CollectionPersistent.getGroupStorageKey( undefined, - 'collectionKey', + 'collectionKey' ); expect(response).toBe('_collectionKey_group_unknown'); expect(console.warn).toHaveBeenCalledWith( - 'Agile Warn: Failed to build unique Group StorageKey!', + 'Agile Warn: Failed to build unique Group StorageKey!' ); }); it('should build GroupStorageKey out of groupKey with warning', () => { const response = CollectionPersistent.getGroupStorageKey( 'groupKey', - undefined, + undefined ); expect(response).toBe('_unknown_group_groupKey'); expect(console.warn).toHaveBeenCalledWith( - 'Agile Warn: Failed to build unique Group StorageKey!', + 'Agile Warn: Failed to build unique Group StorageKey!' ); }); it('should build GroupStorageKey out of nothing with warning', () => { const response = CollectionPersistent.getGroupStorageKey( undefined, - undefined, + undefined ); expect(response).toBe('_unknown_group_unknown'); expect(console.warn).toHaveBeenCalledWith( - 'Agile Warn: Failed to build unique Group StorageKey!', + 'Agile Warn: Failed to build unique Group StorageKey!' ); }); }); diff --git a/packages/core/tests/unit/collection/collection.test.ts b/packages/core/tests/unit/collection/collection.test.ts index b3d0f684..f1e8fff3 100644 --- a/packages/core/tests/unit/collection/collection.test.ts +++ b/packages/core/tests/unit/collection/collection.test.ts @@ -116,7 +116,7 @@ describe('Collection Tests', () => { }, key: 'dummyCollectionKey', primaryKey: 'key', - }), + }) ); expect(collection.config).toStrictEqual({ @@ -238,16 +238,16 @@ describe('Collection Tests', () => { expect(collection.groups['group2'].collection()).toBe(collection); expect(collection.groups).toHaveProperty( - collection.config.defaultGroupKey as any, + collection.config.defaultGroupKey as any ); expect(collection.groups[collection.config.defaultGroupKey]._key).toBe( - 'default', + 'default' ); expect( - collection.groups[collection.config.defaultGroupKey]._value, + collection.groups[collection.config.defaultGroupKey]._value ).toStrictEqual([]); expect( - collection.groups[collection.config.defaultGroupKey].collection(), + collection.groups[collection.config.defaultGroupKey].collection() ).toBe(collection); }); @@ -276,16 +276,16 @@ describe('Collection Tests', () => { expect(collection.groups['dummyGroup2'].collection()).toBe(collection); expect(collection.groups).toHaveProperty( - collection.config.defaultGroupKey as any, + collection.config.defaultGroupKey as any ); expect(collection.groups[collection.config.defaultGroupKey]._key).toBe( - 'default', + 'default' ); expect( - collection.groups[collection.config.defaultGroupKey]._value, + collection.groups[collection.config.defaultGroupKey]._value ).toStrictEqual([]); expect( - collection.groups[collection.config.defaultGroupKey].collection(), + collection.groups[collection.config.defaultGroupKey].collection() ).toBe(collection); }); }); @@ -318,20 +318,20 @@ describe('Collection Tests', () => { expect(collection.selectors).toHaveProperty('dummySelector1'); expect(collection.selectors['dummySelector1']._key).toBe( - 'dummySelector1', + 'dummySelector1' ); expect(collection.selectors['dummySelector1']._itemKey).toBe('1'); expect(collection.selectors['dummySelector1'].collection()).toBe( - collection, + collection ); expect(collection.selectors).toHaveProperty('dummySelector2'); expect(collection.selectors['dummySelector2']._key).toBe( - 'overwrittenKey', + 'overwrittenKey' ); expect(collection.selectors['dummySelector2']._itemKey).toBe('2'); expect(collection.selectors['dummySelector2'].collection()).toBe( - collection, + collection ); }); }); @@ -374,7 +374,7 @@ describe('Collection Tests', () => { { patch: false, background: false, - }, + } ); expect(collection.createGroup).not.toHaveBeenCalled(); @@ -405,7 +405,7 @@ describe('Collection Tests', () => { { patch: true, background: true, - }, + } ); expect(collection.createGroup).not.toHaveBeenCalled(); @@ -427,7 +427,7 @@ describe('Collection Tests', () => { { id: '1', name: 'frank' }, { id: '2', name: 'hans' }, ], - ['dummyGroup1', 'dummyGroup2'], + ['dummyGroup1', 'dummyGroup2'] ); expect(collection.setData).toHaveBeenCalledWith( @@ -438,7 +438,7 @@ describe('Collection Tests', () => { { patch: false, background: false, - }, + } ); expect(collection.setData).toHaveBeenCalledWith( { @@ -448,7 +448,7 @@ describe('Collection Tests', () => { { patch: false, background: false, - }, + } ); expect(collection.createGroup).not.toHaveBeenCalled(); @@ -496,7 +496,7 @@ describe('Collection Tests', () => { { patch: false, background: false, - }, + } ); expect(collection.createGroup).not.toHaveBeenCalled(); @@ -526,7 +526,7 @@ describe('Collection Tests', () => { { patch: false, background: false, - }, + } ); expect(collection.createGroup).toHaveBeenCalledWith('notExistingGroup'); @@ -553,7 +553,7 @@ describe('Collection Tests', () => { { id: '2', name: 'hans' }, ], [], - { select: true }, + { select: true } ); expect(collection.createSelector).toHaveBeenCalledWith('1', '1'); @@ -570,18 +570,18 @@ describe('Collection Tests', () => { { id: '2', name: 'hans' }, ], [], - { forEachItem: forEachItemMock }, + { forEachItem: forEachItemMock } ); expect(forEachItemMock).toHaveBeenCalledWith( { id: '1', name: 'frank' }, '1', - 0, + 0 ); expect(forEachItemMock).toHaveBeenCalledWith( { id: '2', name: 'hans' }, '2', - 1, + 1 ); }); }); @@ -611,7 +611,7 @@ describe('Collection Tests', () => { { background: false, addNewProperties: false, - }, + } ); expect(collection.updateItemKey).not.toHaveBeenCalled(); }); @@ -623,7 +623,7 @@ describe('Collection Tests', () => { { addNewProperties: true, background: true, - }, + } ); expect(response).toBe(dummyItem); @@ -635,7 +635,7 @@ describe('Collection Tests', () => { { background: true, addNewProperties: true, - }, + } ); expect(collection.updateItemKey).not.toHaveBeenCalled(); }); @@ -654,7 +654,7 @@ describe('Collection Tests', () => { { background: false, addNewProperties: false, - }, + } ); expect(collection.updateItemKey).not.toHaveBeenCalled(); }); @@ -664,7 +664,7 @@ describe('Collection Tests', () => { expect(response).toBeUndefined(); expect(console.error).toHaveBeenCalledWith( - `Agile Error: Item with key/name 'notExisting' doesn't exist in Collection '${collection._key}'!`, + `Agile Error: Item with key/name 'notExisting' doesn't exist in Collection '${collection._key}'!` ); expect(dummyItem.patch).not.toHaveBeenCalled(); expect(collection.updateItemKey).not.toHaveBeenCalled(); @@ -673,12 +673,12 @@ describe('Collection Tests', () => { it("shouldn't update existing Item with invalid changes Object and should print error", () => { const response = collection.update( 'dummyItem', - 'notValidChanges' as any, + 'notValidChanges' as any ); expect(response).toBeUndefined(); expect(console.error).toHaveBeenCalledWith( - `Agile Error: You have to pass an valid Changes Object to update 'dummyItem' in '${collection._key}'!`, + `Agile Error: You have to pass an valid Changes Object to update 'dummyItem' in '${collection._key}'!` ); expect(dummyItem.patch).not.toHaveBeenCalled(); expect(collection.updateItemKey).not.toHaveBeenCalled(); @@ -699,14 +699,14 @@ describe('Collection Tests', () => { { background: false, addNewProperties: false, - }, + } ); expect(collection.updateItemKey).toHaveBeenCalledWith( 'dummyItem', 'newDummyItemKey', { background: false, - }, + } ); }); }); @@ -744,7 +744,7 @@ describe('Collection Tests', () => { const response = collection.createGroup('dummyGroup', ['dummyItem']); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Group with the name 'dummyGroup' already exists!", + "Agile Warn: Group with the name 'dummyGroup' already exists!" ); expect(response).toBe(dummyGroup); expect(collection.groups['dummyGroup']).toBe(dummyGroup); @@ -821,7 +821,7 @@ describe('Collection Tests', () => { expect(response).toBe(dummyGroup); expect(ComputedTracker.tracked).toHaveBeenCalledWith( - dummyGroup.observer, + dummyGroup.observer ); }); @@ -850,7 +850,7 @@ describe('Collection Tests', () => { expect(response).toBe(dummyGroup); expect(ComputedTracker.tracked).toHaveBeenCalledWith( - dummyGroup.observer, + dummyGroup.observer ); }); }); @@ -872,7 +872,7 @@ describe('Collection Tests', () => { expect(response).toBe(dummyGroup); expect(ComputedTracker.tracked).toHaveBeenCalledWith( - dummyGroup.observer, + dummyGroup.observer ); }); @@ -908,7 +908,7 @@ describe('Collection Tests', () => { collection.removeGroup('notExistingGroup'); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Group with the key/name 'notExistingGroup' doesn't exist!", + "Agile Warn: Group with the key/name 'notExistingGroup' doesn't exist!" ); }); }); @@ -947,11 +947,11 @@ describe('Collection Tests', () => { it("shouldn't create and add existing Selector to Collection", () => { const response = collection.createSelector( 'dummySelector', - 'dummyItem', + 'dummyItem' ); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Selector with the name 'dummySelector' already exists!", + "Agile Warn: Selector with the name 'dummySelector' already exists!" ); expect(response).toBe(dummySelector); expect(collection.selectors['dummySelector']).toBe(dummySelector); @@ -963,7 +963,7 @@ describe('Collection Tests', () => { const response = collection.createSelector( 'dummySelector', - 'dummyItem', + 'dummyItem' ); expect(console.warn).not.toHaveBeenCalled(); @@ -1033,7 +1033,7 @@ describe('Collection Tests', () => { expect(response).toBe(dummySelector); expect(ComputedTracker.tracked).toHaveBeenCalledWith( - dummySelector.observer, + dummySelector.observer ); }); @@ -1062,7 +1062,7 @@ describe('Collection Tests', () => { expect(response).toBe(dummySelector); expect(ComputedTracker.tracked).toHaveBeenCalledWith( - dummySelector.observer, + dummySelector.observer ); }); }); @@ -1086,13 +1086,13 @@ describe('Collection Tests', () => { expect(response).toBe(dummySelector); expect(ComputedTracker.tracked).toHaveBeenCalledWith( - dummySelector.observer, + dummySelector.observer ); }); it("should return and track created reference Selector if Selector doesn't exist yet", () => { const response = collection.getSelectorWithReference( - 'notExistingSelector', + 'notExistingSelector' ); expect(response).toBeInstanceOf(Selector); @@ -1129,7 +1129,7 @@ describe('Collection Tests', () => { collection.removeSelector('notExistingSelector'); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Selector with the key/name 'notExistingSelector' doesn't exist!", + "Agile Warn: Selector with the key/name 'notExistingSelector' doesn't exist!" ); expect(collection.selectors).toHaveProperty('dummySelector'); expect(dummySelector.unselect).not.toHaveBeenCalled(); @@ -1192,7 +1192,7 @@ describe('Collection Tests', () => { expect(response).toBe(dummyItem); expect(ComputedTracker.tracked).toHaveBeenCalledWith( - dummyItem.observer, + dummyItem.observer ); }); @@ -1221,7 +1221,7 @@ describe('Collection Tests', () => { expect(response).toBe(dummyItem); expect(ComputedTracker.tracked).toHaveBeenCalledWith( - dummyItem.observer, + dummyItem.observer ); }); }); @@ -1243,7 +1243,7 @@ describe('Collection Tests', () => { expect(response).toBe(dummyItem); expect(ComputedTracker.tracked).toHaveBeenCalledWith( - dummyItem.observer, + dummyItem.observer ); }); @@ -1371,7 +1371,7 @@ describe('Collection Tests', () => { key: 'newPersistentKey', }); expect(console.warn).toHaveBeenCalledWith( - `Agile Warn: By persisting the Collection '${collection._key}' twice you overwrite the old Persistent Instance!`, + `Agile Warn: By persisting the Collection '${collection._key}' twice you overwrite the old Persistent Instance!` ); }); }); @@ -1404,7 +1404,7 @@ describe('Collection Tests', () => { expect(dummyCallbackFunction).not.toHaveBeenCalled(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Please make sure you persist the Collection 'collectionKey' before using the 'onLoad' function!", + "Agile Error: Please make sure you persist the Collection 'collectionKey' before using the 'onLoad' function!" ); }); }); @@ -1511,7 +1511,7 @@ describe('Collection Tests', () => { it('should add passed itemKeys to passed Groups (default config)', () => { collection.put( ['1', '2', '3'], - ['dummyGroup1', 'notExistingGroup', 'dummyGroup2'], + ['dummyGroup1', 'notExistingGroup', 'dummyGroup2'] ); expect(dummyGroup1.add).toHaveBeenCalledWith(['1', '2', '3'], {}); @@ -1589,8 +1589,8 @@ describe('Collection Tests', () => { expect(dummyItem1.persistent.setKey).toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( 'newDummyItem', - collection._key, - ), + collection._key + ) ); expect(dummyItem2.persistent.setKey).not.toHaveBeenCalled(); @@ -1599,7 +1599,7 @@ describe('Collection Tests', () => { 'newDummyItem', { background: false, - }, + } ); expect(dummyGroup2.replace).not.toHaveBeenCalled(); @@ -1619,7 +1619,7 @@ describe('Collection Tests', () => { 'newDummyItem', { background: true, - }, + } ); expect(response).toBeTruthy(); @@ -1630,8 +1630,8 @@ describe('Collection Tests', () => { expect(dummyItem1.persistent.setKey).toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( 'newDummyItem', - collection._key, - ), + collection._key + ) ); expect(dummyGroup1.replace).toHaveBeenCalledWith( @@ -1639,7 +1639,7 @@ describe('Collection Tests', () => { 'newDummyItem', { background: true, - }, + } ); expect(dummySelector1.select).toHaveBeenCalledWith('newDummyItem', { @@ -1665,8 +1665,8 @@ describe('Collection Tests', () => { expect(dummyItem1.persistent.setKey).toHaveBeenCalledWith( CollectionPersistent.getItemStorageKey( 'newDummyItem', - collection._key, - ), + collection._key + ) ); expect(dummyGroup1.replace).toHaveBeenCalledWith( @@ -1674,7 +1674,7 @@ describe('Collection Tests', () => { 'newDummyItem', { background: false, - }, + } ); expect(dummySelector1.select).toHaveBeenCalledWith('newDummyItem', { @@ -1689,7 +1689,7 @@ describe('Collection Tests', () => { it("shouldn't update ItemKey of Item that doesn't exist (default config)", () => { const response = collection.updateItemKey( 'notExistingItem', - 'newDummyItem', + 'newDummyItem' ); expect(response).toBeFalsy(); @@ -1706,7 +1706,7 @@ describe('Collection Tests', () => { expect(response).toBeFalsy(); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Couldn't update ItemKey from 'dummyItem1' to 'dummyItem2' because an Item with the key/name 'dummyItem2' already exists!", + "Agile Warn: Couldn't update ItemKey from 'dummyItem1' to 'dummyItem2' because an Item with the key/name 'dummyItem2' already exists!" ); }); }); @@ -1722,7 +1722,7 @@ describe('Collection Tests', () => { ['dummyItem1', 'dummyItem2', 'dummyItem3'], { key: 'dummyGroup1', - }, + } ); dummyGroup2 = new Group(collection, ['dummyItem2', 'dummyItem3'], { key: 'dummyGroup2', @@ -1739,16 +1739,16 @@ describe('Collection Tests', () => { it('should return groupKeys that contain ItemKey', () => { expect( - collection.getGroupKeysThatHaveItemKey('unknownItem'), + collection.getGroupKeysThatHaveItemKey('unknownItem') ).toStrictEqual([]); expect( - collection.getGroupKeysThatHaveItemKey('dummyItem1'), + collection.getGroupKeysThatHaveItemKey('dummyItem1') ).toStrictEqual(['dummyGroup1']); expect( - collection.getGroupKeysThatHaveItemKey('dummyItem2'), + collection.getGroupKeysThatHaveItemKey('dummyItem2') ).toStrictEqual(['dummyGroup1', 'dummyGroup2']); expect( - collection.getGroupKeysThatHaveItemKey('dummyItem3'), + collection.getGroupKeysThatHaveItemKey('dummyItem3') ).toStrictEqual(['dummyGroup1', 'dummyGroup2', 'dummyGroup3']); }); }); @@ -1766,7 +1766,7 @@ describe('Collection Tests', () => { expect(collection.removeFromGroups).toHaveBeenCalledWith( ['test1', 'test2'], - ['testGroup1', 'testGroup2'], + ['testGroup1', 'testGroup2'] ); expect(collection.removeItems).not.toHaveBeenCalled(); }); @@ -1790,14 +1790,14 @@ describe('Collection Tests', () => { ['dummyItem1', 'dummyItem2', 'dummyItem3', 'unknownItem'], { key: 'dummyGroup1', - }, + } ); dummyGroup2 = new Group( collection, ['dummyItem2', 'dummyItem3', 'unknownItem'], { key: 'dummyGroup2', - }, + } ); dummyGroup3 = new Group(collection, ['dummyItem3', 'unknownItem'], { key: 'dummyGroup3', @@ -1826,7 +1826,7 @@ describe('Collection Tests', () => { it('should remove ItemKeys from Groups', () => { collection.removeFromGroups( ['dummyItem2', 'dummyItem3'], - ['dummyGroup2', 'dummyGroup3'], + ['dummyGroup2', 'dummyGroup3'] ); expect(collection.removeItems).not.toHaveBeenCalled(); @@ -1909,7 +1909,7 @@ describe('Collection Tests', () => { expect(dummyItem1.persistent.removePersistedValue).toHaveBeenCalled(); expect( - dummyItem2.persistent.removePersistedValue, + dummyItem2.persistent.removePersistedValue ).not.toHaveBeenCalled(); expect(dummyGroup1.remove).toHaveBeenCalledWith('dummyItem1'); @@ -1977,7 +1977,7 @@ describe('Collection Tests', () => { const response = collection.setData('noObject' as any); expect(console.error).toHaveBeenCalledWith( - `Agile Error: Item Data of Collection '${collection._key}' has to be an valid Object!`, + `Agile Error: Item Data of Collection '${collection._key}' has to be an valid Object!` ); expect(response).toBeFalsy(); @@ -1988,7 +1988,7 @@ describe('Collection Tests', () => { const response = collection.setData({ name: 'Frank' } as any); expect(console.error).toHaveBeenCalledWith( - `Agile Error: Collection '${collection._key}' Item Data has to contain a primaryKey property called '${collection.config.primaryKey}'!`, + `Agile Error: Collection '${collection._key}' Item Data has to contain a primaryKey property called '${collection.config.primaryKey}'!` ); expect(response).toBeFalsy(); @@ -2009,7 +2009,7 @@ describe('Collection Tests', () => { expect(dummyItem1.set).toHaveBeenCalledWith( { id: 'dummyItem1', name: 'Dieter' }, - { background: false }, + { background: false } ); expect(dummyItem1.patch).not.toHaveBeenCalled(); }); @@ -2020,7 +2020,7 @@ describe('Collection Tests', () => { id: 'dummyItem1', name: 'Dieter', }, - { background: true }, + { background: true } ); expect(response).toBeTruthy(); @@ -2031,7 +2031,7 @@ describe('Collection Tests', () => { expect(dummyItem1.set).toHaveBeenCalledWith( { id: 'dummyItem1', name: 'Dieter' }, - { background: true }, + { background: true } ); expect(dummyItem1.patch).not.toHaveBeenCalled(); }); @@ -2042,7 +2042,7 @@ describe('Collection Tests', () => { id: 'dummyItem1', name: 'Dieter', }, - { patch: true, background: true }, + { patch: true, background: true } ); expect(response).toBeTruthy(); @@ -2054,7 +2054,7 @@ describe('Collection Tests', () => { expect(dummyItem1.set).not.toHaveBeenCalled(); expect(dummyItem1.patch).toHaveBeenCalledWith( { id: 'dummyItem1', name: 'Dieter' }, - { background: true }, + { background: true } ); }); @@ -2075,7 +2075,7 @@ describe('Collection Tests', () => { expect(dummyItem1.set).toHaveBeenCalledWith( { id: 'dummyItem1', name: 'Dieter' }, - { background: false }, + { background: false } ); }); }); diff --git a/packages/core/tests/unit/collection/group.test.ts b/packages/core/tests/unit/collection/group.test.ts index a7468099..c019614e 100644 --- a/packages/core/tests/unit/collection/group.test.ts +++ b/packages/core/tests/unit/collection/group.test.ts @@ -243,7 +243,7 @@ describe('Group Tests', () => { expect(console.error).not.toHaveBeenCalled(); expect(group.set).toHaveBeenCalledWith( ['dummyItem2Key', 'dummyItem3Key'], - { background: false }, + { background: false } ); }); @@ -253,7 +253,7 @@ describe('Group Tests', () => { expect(console.error).not.toHaveBeenCalled(); expect(group.set).toHaveBeenCalledWith( ['dummyItem2Key', 'dummyItem3Key'], - { background: true }, + { background: true } ); }); @@ -261,7 +261,7 @@ describe('Group Tests', () => { group.remove('notExistingKey'); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Couldn't find ItemKey 'notExistingKey' in Group 'groupKey'!", + "Agile Error: Couldn't find ItemKey 'notExistingKey' in Group 'groupKey'!" ); expect(group.set).not.toHaveBeenCalled(); }); @@ -272,7 +272,7 @@ describe('Group Tests', () => { expect(console.error).not.toHaveBeenCalled(); expect(group.set).toHaveBeenCalledWith( ['dummyItem1Key', 'dummyItem2Key'], - { background: true }, + { background: true } ); }); @@ -280,7 +280,7 @@ describe('Group Tests', () => { group.remove(['dummyItem1Key', 'notExistingItemKey', 'dummyItem3Key']); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Couldn't find ItemKey 'notExistingItemKey' in Group 'groupKey'!", + "Agile Error: Couldn't find ItemKey 'notExistingItemKey' in Group 'groupKey'!" ); expect(group.set).toHaveBeenCalledWith(['dummyItem2Key'], { background: false, @@ -291,13 +291,13 @@ describe('Group Tests', () => { group.remove(['notExistingItemKey', 'dummyItem3Key']); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Couldn't find ItemKey 'notExistingItemKey' in Group 'groupKey'!", + "Agile Error: Couldn't find ItemKey 'notExistingItemKey' in Group 'groupKey'!" ); expect(group.set).toHaveBeenCalledWith( ['dummyItem1Key', 'dummyItem2Key'], { background: true, - }, + } ); }); }); @@ -313,7 +313,7 @@ describe('Group Tests', () => { expect(group.set).toHaveBeenCalledWith( ['placeholder', 'dummyItem1Key', 'placeholder', 'dummyItem2Key'], - { background: false }, + { background: false } ); }); @@ -322,7 +322,7 @@ describe('Group Tests', () => { expect(group.set).toHaveBeenCalledWith( ['dummyItem2Key', 'placeholder', 'dummyItem1Key', 'placeholder'], - { background: false }, + { background: false } ); }); @@ -331,7 +331,7 @@ describe('Group Tests', () => { expect(group.set).toHaveBeenCalledWith( ['placeholder', 'dummyItem1Key', 'placeholder', 'dummyItem2Key'], - { background: true }, + { background: true } ); }); @@ -340,7 +340,7 @@ describe('Group Tests', () => { expect(group.set).toHaveBeenCalledWith( ['placeholder', 'dummyItem1Key', 'placeholder', 'dummyItem3Key'], - { background: true }, + { background: true } ); }); @@ -355,7 +355,7 @@ describe('Group Tests', () => { expect(group.set).toHaveBeenCalledWith( ['placeholder', 'placeholder', 'dummyItem1Key'], - { background: false }, + { background: false } ); }); @@ -370,7 +370,7 @@ describe('Group Tests', () => { 'dummyItem2Key', 'dummyItem3Key', ], - { background: false }, + { background: false } ); }); @@ -379,7 +379,7 @@ describe('Group Tests', () => { expect(group.set).toHaveBeenCalledWith( ['placeholder', 'dummyItem1Key', 'placeholder', 'dummyItem3Key'], - { background: true }, + { background: true } ); }); }); @@ -460,12 +460,12 @@ describe('Group Tests', () => { expect(State.prototype.persist).toHaveBeenCalledWith( CollectionPersistent.getGroupStorageKey( group._key, - dummyCollection._key, + dummyCollection._key ), { instantiate: true, storageKeys: [], - }, + } ); }); @@ -475,12 +475,12 @@ describe('Group Tests', () => { expect(State.prototype.persist).toHaveBeenCalledWith( CollectionPersistent.getGroupStorageKey( 'dummyKey', - dummyCollection._key, + dummyCollection._key ), { instantiate: true, storageKeys: [], - }, + } ); }); }); @@ -494,10 +494,10 @@ describe('Group Tests', () => { group.rebuild(); expect( - console.warn, + console.warn ).toHaveBeenCalledWith( `Agile Warn: Couldn't find some Items in Collection '${dummyCollection._key}' (${group._key})`, - ['dummyItem3Key'], + ['dummyItem3Key'] ); expect(group.notFoundItemKeys).toStrictEqual(['dummyItem3Key']); expect(group.items).toStrictEqual([dummyItem1, dummyItem2]); diff --git a/packages/core/tests/unit/collection/item.test.ts b/packages/core/tests/unit/collection/item.test.ts index 6492da19..c80b4604 100644 --- a/packages/core/tests/unit/collection/item.test.ts +++ b/packages/core/tests/unit/collection/item.test.ts @@ -22,7 +22,7 @@ describe('Item Tests', () => { expect(item.collection()).toBe(dummyCollection); expect(item.setKey).toHaveBeenCalledWith( dummyData[dummyCollection.config.primaryKey], - { updateItemValuePrimaryKey: false }, + { updateItemValuePrimaryKey: false } ); expect(item._key).toBe(dummyData[dummyCollection.config.primaryKey]); @@ -36,7 +36,7 @@ describe('Item Tests', () => { expect(item.observer).toBeInstanceOf(StateObserver); expect(item.observer.deps.size).toBe(0); expect(item.observer._key).toBe( - dummyData[dummyCollection.config.primaryKey], + dummyData[dummyCollection.config.primaryKey] ); expect(item.sideEffects).toStrictEqual({}); expect(item.computeMethod).toBeUndefined(); @@ -58,7 +58,7 @@ describe('Item Tests', () => { expect(item.collection()).toBe(dummyCollection); expect(item.setKey).toHaveBeenCalledWith( dummyData[dummyCollection.config.primaryKey], - { updateItemValuePrimaryKey: false }, + { updateItemValuePrimaryKey: false } ); expect(item._key).toBe(dummyData[dummyCollection.config.primaryKey]); @@ -72,7 +72,7 @@ describe('Item Tests', () => { expect(item.observer).toBeInstanceOf(StateObserver); expect(item.observer.deps.size).toBe(0); expect(item.observer._key).toBe( - dummyData[dummyCollection.config.primaryKey], + dummyData[dummyCollection.config.primaryKey] ); expect(item.sideEffects).toStrictEqual({}); expect(item.computeMethod).toBeUndefined(); @@ -100,11 +100,11 @@ describe('Item Tests', () => { expect(State.prototype.setKey).toHaveBeenCalledWith('myNewKey'); expect(item.removeSideEffect).toHaveBeenCalledWith( - Item.updateGroupSideEffectKey, + Item.updateGroupSideEffectKey ); expect(item.addSideEffect).toHaveBeenCalledWith( Item.updateGroupSideEffectKey, - expect.any(Function), + expect.any(Function) ); expect(item.patch).toHaveBeenCalledWith( { @@ -116,11 +116,11 @@ describe('Item Tests', () => { force: false, storage: true, overwrite: false, - }, + } ); expect( - dummyCollection.rebuildGroupsThatIncludeItemKey, + dummyCollection.rebuildGroupsThatIncludeItemKey ).not.toHaveBeenCalled(); }); @@ -133,11 +133,11 @@ describe('Item Tests', () => { expect(State.prototype.setKey).toHaveBeenCalledWith('myNewKey'); expect(item.removeSideEffect).toHaveBeenCalledWith( - Item.updateGroupSideEffectKey, + Item.updateGroupSideEffectKey ); expect(item.addSideEffect).toHaveBeenCalledWith( Item.updateGroupSideEffectKey, - expect.any(Function), + expect.any(Function) ); expect(item.patch).toHaveBeenCalledWith( { @@ -149,11 +149,11 @@ describe('Item Tests', () => { force: true, storage: true, overwrite: false, - }, + } ); expect( - dummyCollection.rebuildGroupsThatIncludeItemKey, + dummyCollection.rebuildGroupsThatIncludeItemKey ).not.toHaveBeenCalled(); }); @@ -164,16 +164,16 @@ describe('Item Tests', () => { expect(State.prototype.setKey).toHaveBeenCalledWith('myNewKey'); expect(item.removeSideEffect).toHaveBeenCalledWith( - Item.updateGroupSideEffectKey, + Item.updateGroupSideEffectKey ); expect(item.addSideEffect).toHaveBeenCalledWith( Item.updateGroupSideEffectKey, - expect.any(Function), + expect.any(Function) ); expect(item.patch).not.toHaveBeenCalled(); expect( - dummyCollection.rebuildGroupsThatIncludeItemKey, + dummyCollection.rebuildGroupsThatIncludeItemKey ).toHaveBeenCalledWith('myNewKey', { background: false, force: false, @@ -194,7 +194,7 @@ describe('Item Tests', () => { }); expect( - dummyCollection.rebuildGroupsThatIncludeItemKey, + dummyCollection.rebuildGroupsThatIncludeItemKey ).toHaveBeenCalledWith('myNewKey', { dummy: 'property' }); }); }); diff --git a/packages/core/tests/unit/collection/selector.test.ts b/packages/core/tests/unit/collection/selector.test.ts index 38f8552d..8650ca99 100644 --- a/packages/core/tests/unit/collection/selector.test.ts +++ b/packages/core/tests/unit/collection/selector.test.ts @@ -169,7 +169,7 @@ describe('Selector Tests', () => { selector.select('dummyItem2'); expect(dummyCollection.getItemWithReference).toHaveBeenCalledWith( - 'dummyItem2', + 'dummyItem2' ); expect(selector._itemKey).toBe('dummyItem2'); @@ -185,7 +185,7 @@ describe('Selector Tests', () => { expect(dummyItem2.addSideEffect).toHaveBeenCalledWith( Selector.rebuildSelectorSideEffectKey, - expect.any(Function), + expect.any(Function) ); expect(dummyItem2.isSelected).toBeTruthy(); }); @@ -201,7 +201,7 @@ describe('Selector Tests', () => { }); expect(dummyCollection.getItemWithReference).toHaveBeenCalledWith( - 'dummyItem2', + 'dummyItem2' ); expect(selector._itemKey).toBe('dummyItem2'); @@ -217,7 +217,7 @@ describe('Selector Tests', () => { expect(dummyItem2.addSideEffect).toHaveBeenCalledWith( Selector.rebuildSelectorSideEffectKey, - expect.any(Function), + expect.any(Function) ); expect(dummyItem2.isSelected).toBeTruthy(); }); @@ -228,11 +228,11 @@ describe('Selector Tests', () => { selector.select('dummyItem1'); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Selector has already selected 'dummyItem1'!", + "Agile Warn: Selector has already selected 'dummyItem1'!" ); expect(dummyCollection.getItemWithReference).toHaveBeenCalledWith( - 'dummyItem1', + 'dummyItem1' ); expect(selector._itemKey).toBe('dummyItem1'); expect(selector.item).toBe(dummyItem1); @@ -251,7 +251,7 @@ describe('Selector Tests', () => { expect(console.warn).not.toHaveBeenCalled(); expect(dummyCollection.getItemWithReference).toHaveBeenCalledWith( - 'dummyItem1', + 'dummyItem1' ); expect(selector._itemKey).toBe('dummyItem1'); @@ -267,7 +267,7 @@ describe('Selector Tests', () => { expect(dummyItem1.addSideEffect).toHaveBeenCalledWith( Selector.rebuildSelectorSideEffectKey, - expect.any(Function), + expect.any(Function) ); expect(dummyItem1.isSelected).toBeTruthy(); }); @@ -279,7 +279,7 @@ describe('Selector Tests', () => { selector.select('dummyItem2'); expect(dummyCollection.getItemWithReference).toHaveBeenCalledWith( - 'dummyItem2', + 'dummyItem2' ); expect(selector._itemKey).toBe('dummyItem2'); expect(selector.item).toBe(dummyItem2); @@ -294,7 +294,7 @@ describe('Selector Tests', () => { expect(dummyItem2.addSideEffect).toHaveBeenCalledWith( Selector.rebuildSelectorSideEffectKey, - expect.any(Function), + expect.any(Function) ); expect(dummyItem2.isSelected).toBeTruthy(); }); @@ -306,7 +306,7 @@ describe('Selector Tests', () => { selector.select('dummyItem2', { overwrite: false }); expect(dummyCollection.getItemWithReference).toHaveBeenCalledWith( - 'dummyItem2', + 'dummyItem2' ); expect(selector._itemKey).toBe('dummyItem2'); expect(selector.item).toBe(dummyItem2); @@ -321,7 +321,7 @@ describe('Selector Tests', () => { expect(dummyItem2.addSideEffect).toHaveBeenCalledWith( Selector.rebuildSelectorSideEffectKey, - expect.any(Function), + expect.any(Function) ); expect(dummyItem2.isSelected).toBeTruthy(); }); @@ -356,7 +356,7 @@ describe('Selector Tests', () => { expect(dummyItem1.isSelected).toBeFalsy(); expect(dummyItem1.removeSideEffect).toHaveBeenCalledWith( - Selector.rebuildSelectorSideEffectKey, + Selector.rebuildSelectorSideEffectKey ); expect(selector.item).toBeUndefined(); @@ -376,7 +376,7 @@ describe('Selector Tests', () => { expect(dummyItem1.isSelected).toBeFalsy(); expect(dummyItem1.removeSideEffect).toHaveBeenCalledWith( - Selector.rebuildSelectorSideEffectKey, + Selector.rebuildSelectorSideEffectKey ); expect(selector.item).toBeUndefined(); @@ -398,7 +398,7 @@ describe('Selector Tests', () => { expect(dummyItem1.isSelected).toBeFalsy(); expect(dummyItem1.removeSideEffect).toHaveBeenCalledWith( - Selector.rebuildSelectorSideEffectKey, + Selector.rebuildSelectorSideEffectKey ); expect(selector.item).toBeUndefined(); diff --git a/packages/core/tests/unit/computed/computed.test.ts b/packages/core/tests/unit/computed/computed.test.ts index ba0c083a..2d1546c3 100644 --- a/packages/core/tests/unit/computed/computed.test.ts +++ b/packages/core/tests/unit/computed/computed.test.ts @@ -177,7 +177,7 @@ describe('Computed Tests', () => { computed.updateComputeFunction( newComputeFunction, [dummyState, dummyObserver], - { overwriteDeps: false }, + { overwriteDeps: false } ); expect(computed.hardCodedDeps).toStrictEqual([ @@ -272,7 +272,7 @@ describe('Computed Tests', () => { computed.patch(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: You can't use patch method on ComputedState!", + "Agile Error: You can't use patch method on ComputedState!" ); }); }); @@ -282,7 +282,7 @@ describe('Computed Tests', () => { computed.persist(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: You can't use persist method on ComputedState!", + "Agile Error: You can't use persist method on ComputedState!" ); }); }); @@ -292,7 +292,7 @@ describe('Computed Tests', () => { computed.invert(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: You can't use invert method on ComputedState!", + "Agile Error: You can't use invert method on ComputedState!" ); }); }); diff --git a/packages/core/tests/unit/computed/computed.tracker.test.ts b/packages/core/tests/unit/computed/computed.tracker.test.ts index c5cad424..04a8d48c 100644 --- a/packages/core/tests/unit/computed/computed.tracker.test.ts +++ b/packages/core/tests/unit/computed/computed.tracker.test.ts @@ -36,7 +36,7 @@ describe('ComputedTracker Tests', () => { expect(ComputedTracker.trackedObservers.size).toBe(1); expect( - ComputedTracker.trackedObservers.has(dummyObserver), + ComputedTracker.trackedObservers.has(dummyObserver) ).toBeTruthy(); }); diff --git a/packages/core/tests/unit/event/event.observer.test.ts b/packages/core/tests/unit/event/event.observer.test.ts index d9b9c039..9e6f453e 100644 --- a/packages/core/tests/unit/event/event.observer.test.ts +++ b/packages/core/tests/unit/event/event.observer.test.ts @@ -78,7 +78,7 @@ describe('EventObserver Tests', () => { expect.any(RuntimeJob), { perform: true, - }, + } ); }); @@ -104,7 +104,7 @@ describe('EventObserver Tests', () => { expect.any(RuntimeJob), { perform: false, - }, + } ); }); }); diff --git a/packages/core/tests/unit/event/event.test.ts b/packages/core/tests/unit/event/event.test.ts index 0152c6fb..f6fc4f88 100644 --- a/packages/core/tests/unit/event/event.test.ts +++ b/packages/core/tests/unit/event/event.test.ts @@ -129,7 +129,7 @@ describe('Event Tests', () => { expect(response).toBe(event); expect(event.callbacks).not.toHaveProperty('dummyKey'); expect(console.error).toHaveBeenCalledWith( - 'Agile Error: A Event Callback Function has to be typeof Function!', + 'Agile Error: A Event Callback Function has to be typeof Function!' ); }); @@ -142,7 +142,7 @@ describe('Event Tests', () => { expect(event.callbacks).toHaveProperty('dummyKey'); expect(event.callbacks['dummyKey']).toBe(dummyCallbackFunction2); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Event Callback Function with the key/name 'dummyKey' already exists!", + "Agile Error: Event Callback Function with the key/name 'dummyKey' already exists!" ); }); }); diff --git a/packages/core/tests/unit/integrations/integrations.test.ts b/packages/core/tests/unit/integrations/integrations.test.ts index e1bdbd34..a22ee088 100644 --- a/packages/core/tests/unit/integrations/integrations.test.ts +++ b/packages/core/tests/unit/integrations/integrations.test.ts @@ -99,7 +99,7 @@ describe('Integrations Tests', () => { expect(console.error).toHaveBeenCalledWith( 'Agile Error: Failed to integrate framework! Invalid Integration!', - dummyIntegration1._key, + dummyIntegration1._key ); }); }); @@ -123,11 +123,11 @@ describe('Integrations Tests', () => { expect(dummyIntegration1.methods.updateMethod).not.toHaveBeenCalled(); expect(dummyIntegration2.methods.updateMethod).toHaveBeenCalledWith( dummyComponentInstance, - dummyUpdatedData, + dummyUpdatedData ); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Integration 'dummyIntegration1' isn't ready yet!", + "Agile Warn: Integration 'dummyIntegration1' isn't ready yet!" ); }); }); diff --git a/packages/core/tests/unit/runtime/observer.test.ts b/packages/core/tests/unit/runtime/observer.test.ts index 6017b324..01040cbc 100644 --- a/packages/core/tests/unit/runtime/observer.test.ts +++ b/packages/core/tests/unit/runtime/observer.test.ts @@ -83,7 +83,7 @@ describe('Observer Tests', () => { observer.perform(dummyJob); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Perform function isn't Set in Observer! Be aware that Observer is no stand alone class!", + "Agile Warn: Perform function isn't Set in Observer! Be aware that Observer is no stand alone class!" ); }); }); diff --git a/packages/core/tests/unit/runtime/runtime.test.ts b/packages/core/tests/unit/runtime/runtime.test.ts index b0fc561c..550e77c1 100644 --- a/packages/core/tests/unit/runtime/runtime.test.ts +++ b/packages/core/tests/unit/runtime/runtime.test.ts @@ -164,14 +164,14 @@ describe('Runtime Tests', () => { // Create Ready Callback Subscription rCallbackSubContainer = dummyAgile.subController.subscribeWithSubsArray( rCallbackSubContainerCallbackFunction, - [dummyObserver1, dummyObserver2], + [dummyObserver1, dummyObserver2] ) as CallbackSubscriptionContainer; rCallbackSubContainer.callback = jest.fn(); // Create Not Ready Callback Subscription nrCallbackSubContainer = dummyAgile.subController.subscribeWithSubsArray( nrCallbackSubContainerCallbackFunction, - [dummyObserver2], + [dummyObserver2] ) as CallbackSubscriptionContainer; nrCallbackSubContainer.callback = jest.fn(); nrCallbackSubContainer.ready = false; @@ -182,7 +182,7 @@ describe('Runtime Tests', () => { { observer3: dummyObserver3, observer4: dummyObserver4, - }, + } ).subscriptionContainer as ComponentSubscriptionContainer; // Create Not Ready Component Subscription @@ -190,7 +190,7 @@ describe('Runtime Tests', () => { nrComponentSubContainerComponent, { observer4: dummyObserver4, - }, + } ).subscriptionContainer as ComponentSubscriptionContainer; nrComponentSubContainer.ready = false; @@ -246,11 +246,11 @@ describe('Runtime Tests', () => { rComponentSubContainerComponent, { observer3: 'dummyObserverValue3', - }, + } ); expect(runtime.handleObjectBasedSubscription).toHaveBeenCalledWith( rComponentSubContainer, - rComponentSubJob, + rComponentSubJob ); expect(rComponentSubJob.subscriptionContainersToUpdate.size).toBe(0); expect(dummyObserver3.subs.size).toBe(1); @@ -280,23 +280,23 @@ describe('Runtime Tests', () => { expect(runtime.jobsToRerender).toStrictEqual([]); expect(runtime.notReadyJobsToRerender.size).toBe(2); expect( - runtime.notReadyJobsToRerender.has(nrArCallbackSubJob), + runtime.notReadyJobsToRerender.has(nrArCallbackSubJob) ).toBeTruthy(); expect( - runtime.notReadyJobsToRerender.has(nrArComponentSubJob), + runtime.notReadyJobsToRerender.has(nrArComponentSubJob) ).toBeTruthy(); expect(nrArCallbackSubJob.subscriptionContainersToUpdate.size).toBe(1); expect( nrArCallbackSubJob.subscriptionContainersToUpdate.has( - nrCallbackSubContainer, - ), + nrCallbackSubContainer + ) ).toBeTruthy(); expect(nrArComponentSubJob.subscriptionContainersToUpdate.size).toBe(1); expect( nrArComponentSubJob.subscriptionContainersToUpdate.has( - nrComponentSubContainer, - ), + nrComponentSubContainer + ) ).toBeTruthy(); expect(rCallbackSubContainer.callback).toHaveBeenCalledTimes(1); @@ -307,13 +307,13 @@ describe('Runtime Tests', () => { rComponentSubContainerComponent, { observer4: 'dummyObserverValue4', - }, + } ); expect(dummyAgile.integrations.update).not.toHaveBeenCalledWith( nrComponentSubContainerComponent, { observer4: 'dummyObserverValue4', - }, + } ); expect(dummyObserver2.subs.size).toBe(2); @@ -321,20 +321,20 @@ describe('Runtime Tests', () => { expect(runtime.handleObjectBasedSubscription).toHaveBeenCalledWith( rComponentSubContainer, - nrArComponentSubJob, + nrArComponentSubJob ); expect(runtime.handleObjectBasedSubscription).not.toHaveBeenCalledWith( nrComponentSubContainer, - nrArComponentSubJob, + nrArComponentSubJob ); expect(console.warn).toHaveBeenCalledWith( "Agile Warn: SubscriptionContainer/Component isn't ready to rerender!", - nrCallbackSubContainer, + nrCallbackSubContainer ); expect(console.warn).toHaveBeenCalledWith( "Agile Warn: SubscriptionContainer/Component isn't ready to rerender!", - nrComponentSubContainer, + nrComponentSubContainer ); }); @@ -369,7 +369,7 @@ describe('Runtime Tests', () => { beforeEach(() => { arraySubscriptionContainer = dummyAgile.subController.subscribeWithSubsArray( dummyComponent, - [dummyObserver1, dummyObserver2, dummyObserver3], + [dummyObserver1, dummyObserver2, dummyObserver3] ); arrayJob = new RuntimeJob(dummyObserver1, { key: 'dummyArrayJob' }); @@ -379,7 +379,7 @@ describe('Runtime Tests', () => { observer1: dummyObserver1, observer2: dummyObserver2, observer3: dummyObserver3, - }, + } ).subscriptionContainer; objectJob1 = new RuntimeJob(dummyObserver1, { key: 'dummyObjectJob1' }); objectJob2 = new RuntimeJob(dummyObserver3, { key: 'dummyObjectJob2' }); @@ -388,18 +388,18 @@ describe('Runtime Tests', () => { it('should ignore not object based SubscriptionContainer', () => { runtime.handleObjectBasedSubscription( arraySubscriptionContainer, - arrayJob, + arrayJob ); expect(arraySubscriptionContainer.observerKeysToUpdate).toStrictEqual( - [], + [] ); }); it('should add Job Observer to changedObjectKeys in SubscriptionContainer', () => { runtime.handleObjectBasedSubscription( objectSubscriptionContainer, - objectJob1, + objectJob1 ); expect(objectSubscriptionContainer.observerKeysToUpdate).toStrictEqual([ @@ -421,7 +421,7 @@ describe('Runtime Tests', () => { observer1: dummyObserver1, observer2: dummyObserver2, observer3: dummyObserver3, - }, + } ).subscriptionContainer; dummyObserver1.value = 'dummyObserverValue1'; dummyObserver3.value = 'dummyObserverValue3'; diff --git a/packages/core/tests/unit/runtime/subscription/container/CallbackSubscriptionContainer.test.ts b/packages/core/tests/unit/runtime/subscription/container/CallbackSubscriptionContainer.test.ts index 43f604af..30278f4a 100644 --- a/packages/core/tests/unit/runtime/subscription/container/CallbackSubscriptionContainer.test.ts +++ b/packages/core/tests/unit/runtime/subscription/container/CallbackSubscriptionContainer.test.ts @@ -23,7 +23,7 @@ describe('CallbackSubscriptionContainer Tests', () => { const subscriptionContainer = new CallbackSubscriptionContainer( dummyIntegration, [dummyObserver1, dummyObserver2], - 'dummyKey', + 'dummyKey' ); expect(subscriptionContainer.callback).toBe(dummyIntegration); diff --git a/packages/core/tests/unit/runtime/subscription/container/ComponentSubscriptionContainer.test.ts b/packages/core/tests/unit/runtime/subscription/container/ComponentSubscriptionContainer.test.ts index 8d2046cd..12336b37 100644 --- a/packages/core/tests/unit/runtime/subscription/container/ComponentSubscriptionContainer.test.ts +++ b/packages/core/tests/unit/runtime/subscription/container/ComponentSubscriptionContainer.test.ts @@ -21,7 +21,7 @@ describe('ComponentSubscriptionContainer Tests', () => { const subscriptionContainer = new ComponentSubscriptionContainer( dummyIntegration, [dummyObserver1, dummyObserver2], - 'dummyKey', + 'dummyKey' ); expect(subscriptionContainer.component).toStrictEqual(dummyIntegration); diff --git a/packages/core/tests/unit/runtime/subscription/container/SubscriptionContainer.test.ts b/packages/core/tests/unit/runtime/subscription/container/SubscriptionContainer.test.ts index 2ced8802..36eb25c6 100644 --- a/packages/core/tests/unit/runtime/subscription/container/SubscriptionContainer.test.ts +++ b/packages/core/tests/unit/runtime/subscription/container/SubscriptionContainer.test.ts @@ -14,7 +14,7 @@ describe('SubscriptionContainer Tests', () => { it('should create SubscriptionContainer', () => { const subscriptionContainer = new SubscriptionContainer( [dummyObserver1, dummyObserver2], - 'dummyKey', + 'dummyKey' ); expect(subscriptionContainer.key).toBe('dummyKey'); diff --git a/packages/core/tests/unit/runtime/subscription/sub.controller.test.ts b/packages/core/tests/unit/runtime/subscription/sub.controller.test.ts index 76693efc..86ef822f 100644 --- a/packages/core/tests/unit/runtime/subscription/sub.controller.test.ts +++ b/packages/core/tests/unit/runtime/subscription/sub.controller.test.ts @@ -41,7 +41,7 @@ describe('SubController Tests', () => { dummyObserver1.value = 'myCoolValue'; subController.registerSubscription = jest.fn( - () => dummySubscriptionContainer, + () => dummySubscriptionContainer ); jest.spyOn(dummyObserver1, 'subscribe'); jest.spyOn(dummyObserver2, 'subscribe'); @@ -54,7 +54,7 @@ describe('SubController Tests', () => { dummyObserver1: dummyObserver1, dummyObserver2: dummyObserver2, }, - 'subscribeWithSubsObjectKey', + 'subscribeWithSubsObjectKey' ); expect(subscribeWithSubsResponse).toStrictEqual({ @@ -67,7 +67,7 @@ describe('SubController Tests', () => { expect(subController.registerSubscription).toHaveBeenCalledWith( dummyIntegration, [dummyObserver1, dummyObserver2], - 'subscribeWithSubsObjectKey', + 'subscribeWithSubsObjectKey' ); expect(dummySubscriptionContainer.isObjectBased).toBeTruthy(); @@ -78,17 +78,17 @@ describe('SubController Tests', () => { expect(dummySubscriptionContainer.subs.size).toBe(2); expect( - dummySubscriptionContainer.subs.has(dummyObserver1), + dummySubscriptionContainer.subs.has(dummyObserver1) ).toBeTruthy(); expect( - dummySubscriptionContainer.subs.has(dummyObserver2), + dummySubscriptionContainer.subs.has(dummyObserver2) ).toBeTruthy(); expect(dummyObserver1.subscribe).toHaveBeenCalledWith( - dummySubscriptionContainer, + dummySubscriptionContainer ); expect(dummyObserver2.subscribe).toHaveBeenCalledWith( - dummySubscriptionContainer, + dummySubscriptionContainer ); }); }); @@ -101,7 +101,7 @@ describe('SubController Tests', () => { dummySubscriptionContainer = new SubscriptionContainer(); subController.registerSubscription = jest.fn( - () => dummySubscriptionContainer, + () => dummySubscriptionContainer ); jest.spyOn(dummyObserver1, 'subscribe'); jest.spyOn(dummyObserver2, 'subscribe'); @@ -111,7 +111,7 @@ describe('SubController Tests', () => { const subscribeWithSubsArrayResponse = subController.subscribeWithSubsArray( dummyIntegration, [dummyObserver1, dummyObserver2], - 'subscribeWithSubsArrayKey', + 'subscribeWithSubsArrayKey' ); expect(subscribeWithSubsArrayResponse).toBe(dummySubscriptionContainer); @@ -119,7 +119,7 @@ describe('SubController Tests', () => { expect(subController.registerSubscription).toHaveBeenCalledWith( dummyIntegration, [dummyObserver1, dummyObserver2], - 'subscribeWithSubsArrayKey', + 'subscribeWithSubsArrayKey' ); expect(dummySubscriptionContainer.isObjectBased).toBeFalsy(); @@ -127,17 +127,17 @@ describe('SubController Tests', () => { expect(dummySubscriptionContainer.subs.size).toBe(2); expect( - dummySubscriptionContainer.subs.has(dummyObserver1), + dummySubscriptionContainer.subs.has(dummyObserver1) ).toBeTruthy(); expect( - dummySubscriptionContainer.subs.has(dummyObserver2), + dummySubscriptionContainer.subs.has(dummyObserver2) ).toBeTruthy(); expect(dummyObserver1.subscribe).toHaveBeenCalledWith( - dummySubscriptionContainer, + dummySubscriptionContainer ); expect(dummyObserver2.subscribe).toHaveBeenCalledWith( - dummySubscriptionContainer, + dummySubscriptionContainer ); }); }); @@ -155,7 +155,7 @@ describe('SubController Tests', () => { const callbackSubscriptionContainer = subController.registerCallbackSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - 'myKey', + 'myKey' ); subController.unsubscribe(callbackSubscriptionContainer); @@ -163,10 +163,10 @@ describe('SubController Tests', () => { expect(subController.callbackSubs.size).toBe(0); expect(callbackSubscriptionContainer.ready).toBeFalsy(); expect(dummyObserver1.unsubscribe).toHaveBeenCalledWith( - callbackSubscriptionContainer, + callbackSubscriptionContainer ); expect(dummyObserver2.unsubscribe).toHaveBeenCalledWith( - callbackSubscriptionContainer, + callbackSubscriptionContainer ); }); @@ -177,7 +177,7 @@ describe('SubController Tests', () => { const componentSubscriptionContainer = subController.registerComponentSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - 'myKey', + 'myKey' ); subController.unsubscribe(componentSubscriptionContainer); @@ -185,10 +185,10 @@ describe('SubController Tests', () => { expect(subController.componentSubs.size).toBe(0); expect(componentSubscriptionContainer.ready).toBeFalsy(); expect(dummyObserver1.unsubscribe).toHaveBeenCalledWith( - componentSubscriptionContainer, + componentSubscriptionContainer ); expect(dummyObserver2.unsubscribe).toHaveBeenCalledWith( - componentSubscriptionContainer, + componentSubscriptionContainer ); }); @@ -199,7 +199,7 @@ describe('SubController Tests', () => { const componentSubscriptionContainer = subController.registerComponentSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - 'myKey', + 'myKey' ); subController.unsubscribe(dummyIntegration); @@ -207,10 +207,10 @@ describe('SubController Tests', () => { expect(subController.componentSubs.size).toBe(0); expect(componentSubscriptionContainer.ready).toBeFalsy(); expect(dummyObserver1.unsubscribe).toHaveBeenCalledWith( - componentSubscriptionContainer, + componentSubscriptionContainer ); expect(dummyObserver2.unsubscribe).toHaveBeenCalledWith( - componentSubscriptionContainer, + componentSubscriptionContainer ); }); }); @@ -222,10 +222,10 @@ describe('SubController Tests', () => { dummySubscriptionContainer = new SubscriptionContainer(); subController.registerCallbackSubscription = jest.fn( - () => dummySubscriptionContainer as CallbackSubscriptionContainer, + () => dummySubscriptionContainer as CallbackSubscriptionContainer ); subController.registerComponentSubscription = jest.fn( - () => dummySubscriptionContainer as ComponentSubscriptionContainer, + () => dummySubscriptionContainer as ComponentSubscriptionContainer ); }); @@ -237,17 +237,17 @@ describe('SubController Tests', () => { const subscriptionContainer = subController.registerSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - 'niceKey', + 'niceKey' ); expect(subscriptionContainer).toBe(dummySubscriptionContainer); expect(subController.registerCallbackSubscription).toHaveBeenCalledWith( dummyIntegration, [dummyObserver1, dummyObserver2], - 'niceKey', + 'niceKey' ); expect( - subController.registerComponentSubscription, + subController.registerComponentSubscription ).not.toHaveBeenCalled(); }); @@ -257,19 +257,19 @@ describe('SubController Tests', () => { const subscriptionContainer = subController.registerSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - 'niceKey', + 'niceKey' ); expect(subscriptionContainer).toBe(dummySubscriptionContainer); expect( - subController.registerComponentSubscription, + subController.registerComponentSubscription ).toHaveBeenCalledWith( dummyIntegration, [dummyObserver1, dummyObserver2], - 'niceKey', + 'niceKey' ); expect( - subController.registerCallbackSubscription, + subController.registerCallbackSubscription ).not.toHaveBeenCalled(); }); }); @@ -281,33 +281,33 @@ describe('SubController Tests', () => { const componentSubscriptionContainer = subController.registerComponentSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - 'myKey', + 'myKey' ); expect(componentSubscriptionContainer).toBeInstanceOf( - ComponentSubscriptionContainer, + ComponentSubscriptionContainer ); expect(componentSubscriptionContainer.key).toBe('myKey'); expect(componentSubscriptionContainer.component).toStrictEqual( - dummyIntegration, + dummyIntegration ); expect(componentSubscriptionContainer.ready).toBeTruthy(); expect(componentSubscriptionContainer.subs.size).toBe(2); expect( - componentSubscriptionContainer.subs.has(dummyObserver1), + componentSubscriptionContainer.subs.has(dummyObserver1) ).toBeTruthy(); expect( - componentSubscriptionContainer.subs.has(dummyObserver2), + componentSubscriptionContainer.subs.has(dummyObserver2) ).toBeTruthy(); expect(subController.componentSubs.size).toBe(1); expect( - subController.componentSubs.has(componentSubscriptionContainer), + subController.componentSubs.has(componentSubscriptionContainer) ).toBeTruthy(); expect(dummyIntegration.componentSubscriptionContainer).toBe( - componentSubscriptionContainer, + componentSubscriptionContainer ); }); @@ -320,11 +320,11 @@ describe('SubController Tests', () => { const componentSubscriptionContainer = subController.registerComponentSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - 'myKey', + 'myKey' ); expect(componentSubscriptionContainer).toBeInstanceOf( - ComponentSubscriptionContainer, + ComponentSubscriptionContainer ); expect(componentSubscriptionContainer.ready).toBeFalsy(); }); @@ -339,11 +339,11 @@ describe('SubController Tests', () => { const componentSubscriptionContainer = subController.registerComponentSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - 'myKey', + 'myKey' ); expect(componentSubscriptionContainer).toBeInstanceOf( - ComponentSubscriptionContainer, + ComponentSubscriptionContainer ); expect(componentSubscriptionContainer.ready).toBeTruthy(); }); @@ -358,11 +358,11 @@ describe('SubController Tests', () => { const callbackSubscriptionContainer = subController.registerCallbackSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - 'myKey', + 'myKey' ); expect(callbackSubscriptionContainer).toBeInstanceOf( - CallbackSubscriptionContainer, + CallbackSubscriptionContainer ); expect(callbackSubscriptionContainer.key).toBe('myKey'); expect(callbackSubscriptionContainer.callback).toBe(dummyIntegration); @@ -370,15 +370,15 @@ describe('SubController Tests', () => { expect(callbackSubscriptionContainer.subs.size).toBe(2); expect( - callbackSubscriptionContainer.subs.has(dummyObserver1), + callbackSubscriptionContainer.subs.has(dummyObserver1) ).toBeTruthy(); expect( - callbackSubscriptionContainer.subs.has(dummyObserver2), + callbackSubscriptionContainer.subs.has(dummyObserver2) ).toBeTruthy(); expect(subController.callbackSubs.size).toBe(1); expect( - subController.callbackSubs.has(callbackSubscriptionContainer), + subController.callbackSubs.has(callbackSubscriptionContainer) ).toBeTruthy(); }); }); @@ -394,7 +394,7 @@ describe('SubController Tests', () => { componentSubscriptionContainer = subController.registerComponentSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - 'myKey', + 'myKey' ); }); @@ -404,7 +404,7 @@ describe('SubController Tests', () => { expect(componentSubscriptionContainer.ready).toBeTruthy(); expect(subController.mountedComponents.size).toBe(1); expect( - subController.mountedComponents.has(dummyIntegration), + subController.mountedComponents.has(dummyIntegration) ).toBeTruthy(); }); }); @@ -420,7 +420,7 @@ describe('SubController Tests', () => { componentSubscriptionContainer = subController.registerComponentSubscription( dummyIntegration, [dummyObserver1, dummyObserver2], - 'myKey', + 'myKey' ); subController.mount(dummyIntegration); }); diff --git a/packages/core/tests/unit/state/state.observer.test.ts b/packages/core/tests/unit/state/state.observer.test.ts index 7286f4fa..3d0cbc55 100644 --- a/packages/core/tests/unit/state/state.observer.test.ts +++ b/packages/core/tests/unit/state/state.observer.test.ts @@ -76,7 +76,7 @@ describe('StateObserver Tests', () => { }, { key: 'dummyComputed', - }, + } ); computedObserver = new StateObserver(dummyComputed, { key: 'computedObserverKey', @@ -123,7 +123,7 @@ describe('StateObserver Tests', () => { expect(computedObserver.ingestValue).toHaveBeenCalledWith( 'computedValue', - {}, + {} ); expect(dummyComputed.computeValue).toHaveBeenCalled(); }); @@ -154,7 +154,7 @@ describe('StateObserver Tests', () => { expect.any(StateRuntimeJob), { perform: true, - }, + } ); }); @@ -184,7 +184,7 @@ describe('StateObserver Tests', () => { expect.any(StateRuntimeJob), { perform: false, - }, + } ); }); @@ -218,7 +218,7 @@ describe('StateObserver Tests', () => { expect.any(StateRuntimeJob), { perform: true, - }, + } ); }); @@ -243,7 +243,7 @@ describe('StateObserver Tests', () => { expect.any(StateRuntimeJob), { perform: true, - }, + } ); }); @@ -253,13 +253,13 @@ describe('StateObserver Tests', () => { stateObserver.ingestValue('updatedDummyValue'); expect(stateObserver.nextStateValue).toBe( - "cool value 'updatedDummyValue'", + "cool value 'updatedDummyValue'" ); expect(dummyAgile.runtime.ingest).toHaveBeenCalledWith( expect.any(StateRuntimeJob), { perform: true, - }, + } ); }); }); @@ -351,10 +351,10 @@ describe('StateObserver Tests', () => { stateObserver.sideEffects(dummyJob); expect(dummyState.watchers['dummyWatcher']).toHaveBeenCalledWith( - 'dummyValue', + 'dummyValue' ); expect(dummyState.sideEffects['dummySideEffect']).toHaveBeenCalledWith( - dummyJob.config, + dummyJob.config ); expect(dummyStateObserver.ingest).toHaveBeenCalledWith({ perform: false, @@ -367,10 +367,10 @@ describe('StateObserver Tests', () => { stateObserver.sideEffects(dummyJob); expect(dummyState.watchers['dummyWatcher']).toHaveBeenCalledWith( - 'dummyValue', + 'dummyValue' ); expect( - dummyState.sideEffects['dummySideEffect'], + dummyState.sideEffects['dummySideEffect'] ).not.toHaveBeenCalled(); expect(dummyStateObserver.ingest).toHaveBeenCalledWith({ perform: false, diff --git a/packages/core/tests/unit/state/state.persistent.test.ts b/packages/core/tests/unit/state/state.persistent.test.ts index ee965e54..7714ef0a 100644 --- a/packages/core/tests/unit/state/state.persistent.test.ts +++ b/packages/core/tests/unit/state/state.persistent.test.ts @@ -119,7 +119,7 @@ describe('StatePersistent Tests', () => { remove: jest.fn(), set: jest.fn(), }, - }), + }) ); }); @@ -143,7 +143,7 @@ describe('StatePersistent Tests', () => { expect(statePersistent.initialLoading).not.toHaveBeenCalled(); expect(statePersistent.persistValue).toHaveBeenCalledWith('newKey'); expect(statePersistent.removePersistedValue).toHaveBeenCalledWith( - 'dummyKey', + 'dummyKey' ); }); @@ -159,7 +159,7 @@ describe('StatePersistent Tests', () => { expect(statePersistent.initialLoading).not.toHaveBeenCalled(); expect(statePersistent.persistValue).not.toHaveBeenCalled(); expect(statePersistent.removePersistedValue).toHaveBeenCalledWith( - 'dummyKey', + 'dummyKey' ); }); @@ -212,7 +212,7 @@ describe('StatePersistent Tests', () => { it('should load State Value with persistentKey and apply it to the State if loading was successful', async () => { statePersistent.ready = true; dummyAgile.storages.get = jest.fn(() => - Promise.resolve('dummyValue' as any), + Promise.resolve('dummyValue' as any) ); const response = await statePersistent.loadPersistedValue(); @@ -220,20 +220,20 @@ describe('StatePersistent Tests', () => { expect(response).toBeTruthy(); expect(dummyAgile.storages.get).toHaveBeenCalledWith( statePersistent._key, - statePersistent.defaultStorageKey, + statePersistent.defaultStorageKey ); expect(dummyState.set).toHaveBeenCalledWith('dummyValue', { storage: false, }); expect(statePersistent.persistValue).toHaveBeenCalledWith( - statePersistent._key, + statePersistent._key ); }); it("should load State Value with persistentKey and shouldn't apply it to the State if loading wasn't successful", async () => { statePersistent.ready = true; dummyAgile.storages.get = jest.fn(() => - Promise.resolve(undefined as any), + Promise.resolve(undefined as any) ); const response = await statePersistent.loadPersistedValue(); @@ -241,7 +241,7 @@ describe('StatePersistent Tests', () => { expect(response).toBeFalsy(); expect(dummyAgile.storages.get).toHaveBeenCalledWith( statePersistent._key, - statePersistent.defaultStorageKey, + statePersistent.defaultStorageKey ); expect(dummyState.set).not.toHaveBeenCalled(); expect(statePersistent.persistValue).not.toHaveBeenCalled(); @@ -250,7 +250,7 @@ describe('StatePersistent Tests', () => { it('should load State Value with specific Key and apply it to the State if loading was successful', async () => { statePersistent.ready = true; dummyAgile.storages.get = jest.fn(() => - Promise.resolve('dummyValue' as any), + Promise.resolve('dummyValue' as any) ); const response = await statePersistent.loadPersistedValue('coolKey'); @@ -258,7 +258,7 @@ describe('StatePersistent Tests', () => { expect(response).toBeTruthy(); expect(dummyAgile.storages.get).toHaveBeenCalledWith( 'coolKey', - statePersistent.defaultStorageKey, + statePersistent.defaultStorageKey ); expect(dummyState.set).toHaveBeenCalledWith('dummyValue', { storage: false, @@ -269,7 +269,7 @@ describe('StatePersistent Tests', () => { it("shouldn't load State Value if Persistent isn't ready", async () => { statePersistent.ready = false; dummyAgile.storages.get = jest.fn(() => - Promise.resolve(undefined as any), + Promise.resolve(undefined as any) ); const response = await statePersistent.loadPersistedValue(); @@ -297,11 +297,11 @@ describe('StatePersistent Tests', () => { expect(response).toBeTruthy(); expect(dummyState.addSideEffect).toHaveBeenCalledWith( StatePersistent.storeValueSideEffectKey, - expect.any(Function), + expect.any(Function) ); expect(statePersistent.rebuildStorageSideEffect).toHaveBeenCalledWith( dummyState, - statePersistent._key, + statePersistent._key ); expect(statePersistent.isPersisted).toBeTruthy(); }); @@ -314,11 +314,11 @@ describe('StatePersistent Tests', () => { expect(response).toBeTruthy(); expect(dummyState.addSideEffect).toHaveBeenCalledWith( StatePersistent.storeValueSideEffectKey, - expect.any(Function), + expect.any(Function) ); expect(statePersistent.rebuildStorageSideEffect).toHaveBeenCalledWith( dummyState, - 'coolKey', + 'coolKey' ); expect(statePersistent.isPersisted).toBeTruthy(); }); @@ -351,7 +351,7 @@ describe('StatePersistent Tests', () => { statePersistent._key, { dummy: 'property', - }, + } ); }); }); @@ -372,11 +372,11 @@ describe('StatePersistent Tests', () => { expect(response).toBeTruthy(); expect(dummyState.removeSideEffect).toHaveBeenCalledWith( - StatePersistent.storeValueSideEffectKey, + StatePersistent.storeValueSideEffectKey ); expect(dummyAgile.storages.remove).toHaveBeenCalledWith( statePersistent._key, - statePersistent.storageKeys, + statePersistent.storageKeys ); expect(statePersistent.isPersisted).toBeFalsy(); }); @@ -388,11 +388,11 @@ describe('StatePersistent Tests', () => { expect(response).toBeTruthy(); expect(dummyState.removeSideEffect).toHaveBeenCalledWith( - StatePersistent.storeValueSideEffectKey, + StatePersistent.storeValueSideEffectKey ); expect(dummyAgile.storages.remove).toHaveBeenCalledWith( 'coolKey', - statePersistent.storageKeys, + statePersistent.storageKeys ); expect(statePersistent.isPersisted).toBeFalsy(); }); @@ -455,7 +455,7 @@ describe('StatePersistent Tests', () => { expect(dummyAgile.storages.set).toHaveBeenCalledWith( 'coolKey', dummyState.getPersistableValue(), - statePersistent.storageKeys, + statePersistent.storageKeys ); }); diff --git a/packages/core/tests/unit/state/state.test.ts b/packages/core/tests/unit/state/state.test.ts index a73eeda0..8fc80bd8 100644 --- a/packages/core/tests/unit/state/state.test.ts +++ b/packages/core/tests/unit/state/state.test.ts @@ -119,7 +119,7 @@ describe('State Tests', () => { { name: 'jeff', age: 10 }, { key: 'objectStateKey', - }, + } ); arrayState = new State(dummyAgile, ['jeff'], { key: 'arrayStateKey', @@ -150,7 +150,7 @@ describe('State Tests', () => { expect(value).toBe(10); expect(ComputedTracker.tracked).toHaveBeenCalledWith( - numberState.observer, + numberState.observer ); }); }); @@ -253,7 +253,7 @@ describe('State Tests', () => { expect(console.warn).not.toHaveBeenCalled(); expect(console.error).toHaveBeenCalledWith( - 'Agile Error: Incorrect type (string) was provided.', + 'Agile Error: Incorrect type (string) was provided.' ); expect(numberState.observer.ingestValue).not.toHaveBeenCalled(); }); @@ -264,7 +264,7 @@ describe('State Tests', () => { numberState.set('coolValue' as any, { force: true }); expect(console.warn).toHaveBeenCalledWith( - 'Agile Warn: Incorrect type (string) was provided.', + 'Agile Warn: Incorrect type (string) was provided.' ); expect(console.error).not.toHaveBeenCalled(); expect(numberState.observer.ingestValue).toHaveBeenCalledWith( @@ -275,7 +275,7 @@ describe('State Tests', () => { force: true, storage: true, overwrite: false, - }, + } ); }); @@ -292,7 +292,7 @@ describe('State Tests', () => { force: false, storage: true, overwrite: false, - }, + } ); }); }); @@ -333,7 +333,7 @@ describe('State Tests', () => { expect(numberState.valueType).toBeUndefined(); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: 'fuckingType' is not supported! Supported types: String, Boolean, Array, Object, Number", + "Agile Warn: 'fuckingType' is not supported! Supported types: String, Boolean, Array, Object, Number" ); }); }); @@ -350,7 +350,7 @@ describe('State Tests', () => { expect(numberState.set).toHaveBeenCalledWith( numberState.previousStateValue, - {}, + {} ); }); @@ -367,7 +367,7 @@ describe('State Tests', () => { { force: true, storage: false, - }, + } ); }); }); @@ -384,7 +384,7 @@ describe('State Tests', () => { expect(numberState.set).toHaveBeenCalledWith( numberState.initialStateValue, - {}, + {} ); }); @@ -401,7 +401,7 @@ describe('State Tests', () => { { force: true, storage: false, - }, + } ); }); }); @@ -417,7 +417,7 @@ describe('State Tests', () => { numberState.patch({ changed: 'object' }); expect(console.error).toHaveBeenCalledWith( - "Agile Error: You can't use the patch method on a non object based States!", + "Agile Error: You can't use the patch method on a non object based States!" ); expect(objectState.ingest).not.toHaveBeenCalled(); }); @@ -426,7 +426,7 @@ describe('State Tests', () => { objectState.patch('number' as any); expect(console.error).toHaveBeenCalledWith( - 'Agile Error: TargetWithChanges has to be an Object!', + 'Agile Error: TargetWithChanges has to be an Object!' ); expect(objectState.ingest).not.toHaveBeenCalled(); }); @@ -439,7 +439,7 @@ describe('State Tests', () => { { name: 'frank' }, { addNewProperties: true, - }, + } ); expect(objectState.nextStateValue).toStrictEqual({ age: 10, @@ -463,7 +463,7 @@ describe('State Tests', () => { force: true, overwrite: true, sideEffects: false, - }, + } ); expect(Utils.flatMerge).toHaveBeenCalledWith( @@ -471,7 +471,7 @@ describe('State Tests', () => { { name: 'frank' }, { addNewProperties: false, - }, + } ); expect(objectState.nextStateValue).toStrictEqual({ age: 10, @@ -517,13 +517,13 @@ describe('State Tests', () => { it("shouldn't add passed invalid watcherFunction to watchers at passed key", () => { const response = numberState.watch( 'dummyKey', - 'noFunction hehe' as any, + 'noFunction hehe' as any ); expect(response).toBe(numberState); expect(numberState.watchers).not.toHaveProperty('dummyKey'); expect(console.error).toHaveBeenCalledWith( - 'Agile Error: A Watcher Callback Function has to be typeof Function!', + 'Agile Error: A Watcher Callback Function has to be typeof Function!' ); }); @@ -536,7 +536,7 @@ describe('State Tests', () => { expect(numberState.watchers).toHaveProperty('dummyKey'); expect(numberState.watchers['dummyKey']).toBe(dummyCallbackFunction2); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Watcher Callback Function with the key/name 'dummyKey' already exists!", + "Agile Error: Watcher Callback Function with the key/name 'dummyKey' already exists!" ); }); }); @@ -568,7 +568,7 @@ describe('State Tests', () => { expect(numberState.watch).toHaveBeenCalledWith( 'InauguratedWatcherKey', - expect.any(Function), + expect.any(Function) ); expect(numberState.watchers).toHaveProperty('InauguratedWatcherKey'); }); @@ -581,7 +581,7 @@ describe('State Tests', () => { expect(dummyCallbackFunction).toHaveBeenCalledWith(10); expect(numberState.watchers).not.toHaveProperty( - 'InauguratedWatcherKey', + 'InauguratedWatcherKey' ); }); }); @@ -666,7 +666,7 @@ describe('State Tests', () => { key: 'newPersistentKey', }); expect(console.warn).toHaveBeenCalledWith( - `Agile Warn: By persisting the State '${numberState._key}' twice you overwrite the old Persistent Instance!`, + `Agile Warn: By persisting the State '${numberState._key}' twice you overwrite the old Persistent Instance!` ); }); }); @@ -699,7 +699,7 @@ describe('State Tests', () => { expect(dummyCallbackFunction).not.toHaveBeenCalled(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Please make sure you persist the State 'numberStateKey' before using the 'onLoad' function!", + "Agile Error: Please make sure you persist the State 'numberStateKey' before using the 'onLoad' function!" ); }); }); @@ -789,7 +789,7 @@ describe('State Tests', () => { expect(numberState.set).not.toHaveBeenCalled(); expect(console.error).toHaveBeenCalledWith( - 'Agile Error: You can only invert boolean based States!', + 'Agile Error: You can only invert boolean based States!' ); }); }); @@ -808,7 +808,7 @@ describe('State Tests', () => { expect(numberState.computeMethod).toBeUndefined(); expect(console.error).toHaveBeenCalledWith( - 'Agile Error: A computeMethod has to be a function!', + 'Agile Error: A computeMethod has to be a function!' ); }); }); @@ -830,7 +830,7 @@ describe('State Tests', () => { expect(numberState.sideEffects).not.toHaveProperty('dummyKey'); expect(console.error).toHaveBeenCalledWith( - 'Agile Error: A sideEffect function has to be a function!', + 'Agile Error: A sideEffect function has to be a function!' ); }); }); diff --git a/packages/core/tests/unit/storages/persistent.test.ts b/packages/core/tests/unit/storages/persistent.test.ts index 7f018dcc..39a11a4d 100644 --- a/packages/core/tests/unit/storages/persistent.test.ts +++ b/packages/core/tests/unit/storages/persistent.test.ts @@ -26,7 +26,7 @@ describe('Persistent Tests', () => { key: undefined, }); expect( - dummyAgile.storages.persistentInstances.has(persistent), + dummyAgile.storages.persistentInstances.has(persistent) ).toBeTruthy(); expect(persistent._key).toBe(Persistent.placeHolderKey); @@ -54,7 +54,7 @@ describe('Persistent Tests', () => { key: 'persistentKey', }); expect( - dummyAgile.storages.persistentInstances.has(persistent), + dummyAgile.storages.persistentInstances.has(persistent) ).toBeTruthy(); expect(persistent._key).toBe(Persistent.placeHolderKey); @@ -76,7 +76,7 @@ describe('Persistent Tests', () => { expect(persistent).toBeInstanceOf(Persistent); expect(persistent.instantiatePersistent).not.toHaveBeenCalled(); expect( - dummyAgile.storages.persistentInstances.has(persistent), + dummyAgile.storages.persistentInstances.has(persistent) ).toBeTruthy(); expect(persistent._key).toBe(Persistent.placeHolderKey); @@ -149,7 +149,7 @@ describe('Persistent Tests', () => { expect(persistent.ready).toBeFalsy(); expect(console.error).toHaveBeenCalledWith( - 'Agile Error: No valid persist Key found! Please provide a Key or assign one to the parent instance.', + 'Agile Error: No valid persist Key found! Please provide a Key or assign one to the parent instance.' ); }); @@ -162,7 +162,7 @@ describe('Persistent Tests', () => { expect(persistent.ready).toBeFalsy(); expect(console.error).toHaveBeenCalledWith( - 'Agile Error: No persist Storage Key found! Please provide at least one Storage Key.', + 'Agile Error: No persist Storage Key found! Please provide at least one Storage Key.' ); }); @@ -176,7 +176,7 @@ describe('Persistent Tests', () => { expect(persistent.ready).toBeFalsy(); expect(console.error).toHaveBeenCalledWith( - 'Agile Error: No valid persist Key found! Please provide a Key or assign one to the parent instance.', + 'Agile Error: No valid persist Key found! Please provide a Key or assign one to the parent instance.' ); }); @@ -220,7 +220,7 @@ describe('Persistent Tests', () => { }, }, }), - { default: true }, + { default: true } ); persistent.assignStorageKeys(); @@ -263,7 +263,7 @@ describe('Persistent Tests', () => { persistent.loadPersistedValue(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: 'loadPersistedValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!", + "Agile Error: 'loadPersistedValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!" ); }); }); @@ -273,7 +273,7 @@ describe('Persistent Tests', () => { persistent.persistValue(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: 'persistValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!", + "Agile Error: 'persistValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!" ); }); }); @@ -283,7 +283,7 @@ describe('Persistent Tests', () => { persistent.removePersistedValue(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: 'removePersistedValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!", + "Agile Error: 'removePersistedValue' function isn't Set in Persistent! Be aware that Persistent is no stand alone class!" ); }); diff --git a/packages/core/tests/unit/storages/storage.test.ts b/packages/core/tests/unit/storages/storage.test.ts index 62f663f3..9cf1d7af 100644 --- a/packages/core/tests/unit/storages/storage.test.ts +++ b/packages/core/tests/unit/storages/storage.test.ts @@ -135,7 +135,7 @@ describe('Storage Tests', () => { expect(response).toBeFalsy(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Your GET StorageMethod isn't valid!", + "Agile Error: Your GET StorageMethod isn't valid!" ); }); @@ -146,7 +146,7 @@ describe('Storage Tests', () => { expect(response).toBeFalsy(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Your SET StorageMethod isn't valid!", + "Agile Error: Your SET StorageMethod isn't valid!" ); }); @@ -157,7 +157,7 @@ describe('Storage Tests', () => { expect(response).toBeFalsy(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Your REMOVE StorageMethod isn't valid!", + "Agile Error: Your REMOVE StorageMethod isn't valid!" ); }); }); @@ -171,7 +171,7 @@ describe('Storage Tests', () => { expect(response).toBe('dummyResponse'); expect(storage.methods.get).toHaveBeenCalledWith( - storage.getStorageKey('myTestKey'), + storage.getStorageKey('myTestKey') ); }); @@ -187,7 +187,7 @@ describe('Storage Tests', () => { expect(response).toStrictEqual([{ dummy: 'json' }]); expect(storage.methods.get).toHaveBeenCalledWith( - storage.getStorageKey('myTestKey'), + storage.getStorageKey('myTestKey') ); }); @@ -214,7 +214,7 @@ describe('Storage Tests', () => { // storage.getStorageKey("myTestKey") // ); expect(console.warn).toHaveBeenCalledWith( - "Agile Warn: Be aware that 'normalGet' returns a Promise with a stringified Value if using it in an async Storage!", + "Agile Warn: Be aware that 'normalGet' returns a Promise with a stringified Value if using it in an async Storage!" ); return response.then((value) => { @@ -288,7 +288,7 @@ describe('Storage Tests', () => { expect(storage.methods.set).toHaveBeenCalledWith( storage.getStorageKey('myTestKey'), - JSON.stringify('hello there'), + JSON.stringify('hello there') ); }); @@ -308,7 +308,7 @@ describe('Storage Tests', () => { storage.remove('myTestKey'); expect(storage.methods.remove).toHaveBeenCalledWith( - storage.getStorageKey('myTestKey'), + storage.getStorageKey('myTestKey') ); }); diff --git a/packages/core/tests/unit/storages/storages.test.ts b/packages/core/tests/unit/storages/storages.test.ts index ac80267a..b6adc84a 100644 --- a/packages/core/tests/unit/storages/storages.test.ts +++ b/packages/core/tests/unit/storages/storages.test.ts @@ -107,7 +107,7 @@ describe('Storages Tests', () => { const response = storages.register(dummyStorage1, { default: false }); expect(console.warn).toHaveBeenCalledWith( - 'Agile Warn: Be aware that Agile has to assign the first added Storage as default Storage!', + 'Agile Warn: Be aware that Agile has to assign the first added Storage as default Storage!' ); expect(storages.storages).toHaveProperty('storage1'); @@ -148,7 +148,7 @@ describe('Storages Tests', () => { const response = storages.register(dummyStorage1); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Storage with the key/name 'storage1' already exists", + "Agile Error: Storage with the key/name 'storage1' already exists" ); expect(storages.storages).toHaveProperty('storage1'); @@ -217,7 +217,7 @@ describe('Storages Tests', () => { expect(response).toBeUndefined(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Storage with the key/name 'notExistingStorage' doesn't exist", + "Agile Error: Storage with the key/name 'notExistingStorage' doesn't exist" ); }); @@ -228,7 +228,7 @@ describe('Storages Tests', () => { expect(response).toBeUndefined(); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Storage with the key/name 'storage1' isn't ready", + "Agile Error: Storage with the key/name 'storage1' isn't ready" ); }); }); @@ -264,7 +264,7 @@ describe('Storages Tests', () => { expect(response).toBe('dummyStorage1Response'); expect(dummyStorage1.get).toHaveBeenCalledWith('value1'); expect(console.error).toHaveBeenCalledWith( - "Agile Error: Storage with the key/name 'notExistingStorage' doesn't exist", + "Agile Error: Storage with the key/name 'notExistingStorage' doesn't exist" ); }); @@ -275,7 +275,7 @@ describe('Storages Tests', () => { expect(response).toBeUndefined(); expect(console.error).toHaveBeenCalledWith( - 'Agile Error: No Storage found! Please provide at least one Storage.', + 'Agile Error: No Storage found! Please provide at least one Storage.' ); }); }); @@ -314,7 +314,7 @@ describe('Storages Tests', () => { expect(response).toBeUndefined(); expect(console.error).toHaveBeenCalledWith( - 'Agile Error: No Storage found! Please provide at least one Storage.', + 'Agile Error: No Storage found! Please provide at least one Storage.' ); }); }); @@ -353,7 +353,7 @@ describe('Storages Tests', () => { expect(response).toBeUndefined(); expect(console.error).toHaveBeenCalledWith( - 'Agile Error: No Storage found! Please provide at least one Storage.', + 'Agile Error: No Storage found! Please provide at least one Storage.' ); }); }); diff --git a/packages/core/tests/unit/utils.test.ts b/packages/core/tests/unit/utils.test.ts index 8a877ff5..dbab0ba9 100644 --- a/packages/core/tests/unit/utils.test.ts +++ b/packages/core/tests/unit/utils.test.ts @@ -124,7 +124,7 @@ describe('Utils Tests', () => { it('should return true if passed instance is valid Object', () => { expect(isValidObject({ hello: 'jeff' })).toBe(true); expect(isValidObject({ hello: 'jeff', deep: { hello: 'franz' } })).toBe( - true, + true ); }); }); @@ -168,7 +168,7 @@ describe('Utils Tests', () => { it('should normalize undefined (config.createUndefinedArray = true)', () => { expect( - normalizeArray(undefined, { createUndefinedArray: true }), + normalizeArray(undefined, { createUndefinedArray: true }) ).toStrictEqual([undefined]); }); }); @@ -215,7 +215,7 @@ describe('Utils Tests', () => { expect(response).toBeUndefined(); expect(console.error).toHaveBeenCalledWith( 'Agile Error: Failed to get Agile Instance from ', - 'weiredInstance', + 'weiredInstance' ); }); }); @@ -225,7 +225,7 @@ describe('Utils Tests', () => { expect( isFunction(() => { /* empty function */ - }), + }) ).toBe(true); }); @@ -242,12 +242,12 @@ describe('Utils Tests', () => { expect( isAsyncFunction(async () => { /* empty function */ - }), + }) ).toBe(true); expect( isAsyncFunction(async function () { /* empty function */ - }), + }) ).toBe(true); }); @@ -259,12 +259,12 @@ describe('Utils Tests', () => { expect( isAsyncFunction(() => { /* empty function */ - }), + }) ).toBe(false); expect( isAsyncFunction(function () { /* empty function */ - }), + }) ).toBe(false); }); }); @@ -292,14 +292,14 @@ describe('Utils Tests', () => { describe('isJsonString function tests', () => { it('should return true if passed instance is valid Json String', () => { expect(isJsonString('{"name":"John", "age":31, "city":"New York"}')).toBe( - true, + true ); }); it('should return false if passed instance is invalid Json String', () => { expect(isJsonString('frank')).toBe(false); expect(isJsonString('{name":"John", "age":31, "city":"New York"}')).toBe( - false, + false ); expect(isJsonString(10)).toBe(false); expect(isJsonString({ name: 'John', age: 31 })).toBe(false); @@ -320,7 +320,7 @@ describe('Utils Tests', () => { isHuman: true, isRobot: false, name: 'jeff', - }), + }) ).toStrictEqual({ allowLogging: true, loops: 10, @@ -346,8 +346,8 @@ describe('Utils Tests', () => { isRobot: false, name: 'jeff', }, - false, - ), + false + ) ).toStrictEqual({ allowLogging: true, loops: 10, @@ -369,7 +369,7 @@ describe('Utils Tests', () => { flatMerge(source, { name: 'hans', size: 177, - }), + }) ).toStrictEqual({ id: 123, name: 'hans', @@ -388,7 +388,7 @@ describe('Utils Tests', () => { name: 'hans', size: 177, location: 'behind you', - }), + }) ).toStrictEqual({ id: 123, name: 'hans', @@ -410,8 +410,8 @@ describe('Utils Tests', () => { size: 177, location: 'behind you', }, - { addNewProperties: true }, - ), + { addNewProperties: true } + ) ).toStrictEqual({ id: 123, name: 'hans', @@ -433,7 +433,7 @@ describe('Utils Tests', () => { expect( flatMerge(source, { place: 'JeffsNewHome', - }), + }) ).toStrictEqual({ id: 123, name: 'jeff', @@ -448,7 +448,7 @@ describe('Utils Tests', () => { describe('equal function tests', () => { it('should return true if value1 and value2 are equal', () => { expect(equal({ id: 123, name: 'jeff' }, { id: 123, name: 'jeff' })).toBe( - true, + true ); expect(equal([1, 2, 3], [1, 2, 3])).toBe(true); expect(equal(12, 12)).toBe(true); @@ -457,7 +457,7 @@ describe('Utils Tests', () => { it("should return false if value1 and value2 aren't equal", () => { expect(equal({ id: 123, name: 'jeff' }, { id: 123, name: 'hans' })).toBe( - false, + false ); expect(equal([1, 2], [3, 5])).toBe(false); expect(equal(12, 13)).toBe(false); @@ -468,7 +468,7 @@ describe('Utils Tests', () => { describe('notEqual function tests', () => { it('should return false if value1 and value2 are equal', () => { expect( - notEqual({ id: 123, name: 'jeff' }, { id: 123, name: 'jeff' }), + notEqual({ id: 123, name: 'jeff' }, { id: 123, name: 'jeff' }) ).toBe(false); expect(notEqual([1, 2, 3], [1, 2, 3])).toBe(false); expect(notEqual(12, 12)).toBe(false); @@ -477,7 +477,7 @@ describe('Utils Tests', () => { it("should return true if value1 and value2 aren't equal", () => { expect( - notEqual({ id: 123, name: 'jeff' }, { id: 123, name: 'hans' }), + notEqual({ id: 123, name: 'jeff' }, { id: 123, name: 'hans' }) ).toBe(true); expect(notEqual([1, 2], [3, 5])).toBe(true); expect(notEqual(12, 13)).toBe(true); @@ -504,7 +504,7 @@ describe('Utils Tests', () => { constructor( public id: number, public name: string, - public location: { country: string; state: string }, + public location: { country: string; state: string } ) {} } const dummyClass = new DummyClass(10, 'jeff', { @@ -582,7 +582,7 @@ describe('Utils Tests', () => { globalBind(dummyKey, 'dummyInstance'); expect(console.error).toHaveBeenCalledWith( - `Agile Error: Failed to create global Instance called '${dummyKey}'`, + `Agile Error: Failed to create global Instance called '${dummyKey}'` ); }); }); diff --git a/packages/multieditor/src/item.ts b/packages/multieditor/src/item.ts index dd4a455f..738eece2 100644 --- a/packages/multieditor/src/item.ts +++ b/packages/multieditor/src/item.ts @@ -26,7 +26,7 @@ export class Item extends State { editor: MultiEditor, data: DataType, key: ItemKey, - config: ItemConfigInterface = {}, + config: ItemConfigInterface = {} ) { super(editor.agileInstance(), data, { key: key, @@ -44,7 +44,7 @@ export class Item extends State { this.isValid = await this.validator.validate( key, this.value, - this.editor(), + this.editor() ); if (this.editor().canAssignStatusToItemOnChange(this)) this.status.display = true; diff --git a/packages/multieditor/src/multieditor.ts b/packages/multieditor/src/multieditor.ts index 7a407caf..15c69268 100644 --- a/packages/multieditor/src/multieditor.ts +++ b/packages/multieditor/src/multieditor.ts @@ -33,7 +33,7 @@ export class MultiEditor< public computeMethods: DataObject> = {}; public onSubmit: ( preparedData: DataObject, - config?: OnSubmitConfigType, + config?: OnSubmitConfigType ) => Promise; public _key?: EditorKey; @@ -48,12 +48,12 @@ export class MultiEditor< */ constructor( config: EditorConfig, - agileInstance?: Agile, + agileInstance?: Agile ) { if (!agileInstance) agileInstance = getAgileInstance(null); if (!agileInstance) Agile.logger.error( - 'No Global agileInstance found! Please pass an agileInstance into the MultiEditor!', + 'No Global agileInstance found! Please pass an agileInstance into the MultiEditor!' ); this.agileInstance = () => agileInstance as any; let _config = typeof config === 'function' ? config(this) : config; @@ -162,7 +162,7 @@ export class MultiEditor< public setValue( key: ItemKey, value: DataType, - config: SetValueConfigInterface = {}, + config: SetValueConfigInterface = {} ): this { const item = this.getItemById(key); if (!item) return this; @@ -189,7 +189,7 @@ export class MultiEditor< public updateInitialValue( key: ItemKey, value: DataType, - config: UpdateInitialValueConfigInterface = {}, + config: UpdateInitialValueConfigInterface = {} ): this { const item = this.getItemById(key); if (!item) return this; @@ -224,7 +224,7 @@ export class MultiEditor< * @return false if MultiEditor is not valid */ public async submit( - config: SubmitConfigInterface = {}, + config: SubmitConfigInterface = {} ): Promise { const preparedData: DataObject = {}; config = defineConfig(config, { @@ -517,7 +517,7 @@ export interface CreateEditorConfigInterface< computeMethods?: DataObject>; onSubmit: ( preparedData: DataObject, - config?: onSubmitConfig, + config?: onSubmitConfig ) => Promise; reValidateMode?: RevalidationModeType; validate?: ValidateType; @@ -539,7 +539,7 @@ export type EditorConfig< > = | CreateEditorConfigInterface | (( - editor: MultiEditor, + editor: MultiEditor ) => CreateEditorConfigInterface< DataType, SubmitReturnType, diff --git a/packages/multieditor/src/status/status.observer.ts b/packages/multieditor/src/status/status.observer.ts index d0967129..dce2ae58 100644 --- a/packages/multieditor/src/status/status.observer.ts +++ b/packages/multieditor/src/status/status.observer.ts @@ -25,7 +25,7 @@ export class StatusObserver extends Observer { constructor( agileInstance: Agile, status: Status, - config: StatusObserverConfigInterface = {}, + config: StatusObserverConfigInterface = {} ) { super(agileInstance, { key: config.key, diff --git a/packages/multieditor/src/validator/index.ts b/packages/multieditor/src/validator/index.ts index 2a5055d0..0e3625f9 100644 --- a/packages/multieditor/src/validator/index.ts +++ b/packages/multieditor/src/validator/index.ts @@ -59,7 +59,7 @@ export class Validator { public async validate( key: ItemKey, value: DataType, - editor: MultiEditor, + editor: MultiEditor ): Promise { let isValid = true; const item = editor.getItemById(key); @@ -77,7 +77,7 @@ export class Validator { (await this.validationMethods[validationMethodKey]( key, value, - editor, + editor )) && isValid; // Handle tracked Statuses @@ -105,11 +105,11 @@ export class Validator { */ public addValidationMethod( key: ItemKey, - method: ValidationMethodInterface, + method: ValidationMethodInterface ): this; public addValidationMethod( keyOrMethod: ItemKey | ValidationMethodInterface, - method?: ValidationMethodInterface, + method?: ValidationMethodInterface ): this { const generateKey = isFunction(keyOrMethod); let _method: ValidationMethodInterface; @@ -132,7 +132,7 @@ export class Validator { // Check if Validation Method already exists if (this.validationMethods[key]) { Agile.logger.error( - `Validation Method with the key/name '${key}' already exists!`, + `Validation Method with the key/name '${key}' already exists!` ); return this; } @@ -195,11 +195,11 @@ export class Validator { editor.setStatus( key, 'error', - errorMessage || `${key} is a required field`, + errorMessage || `${key} is a required field` ); } return isValid; - }, + } ); return this; } @@ -221,7 +221,7 @@ export type ValidatorKey = string | number; export type ValidationMethodInterface = ( key: ItemKey, value: DataType, - editor: MultiEditor, + editor: MultiEditor ) => Promise; /** diff --git a/packages/multieditor/src/validator/types/number.validator.ts b/packages/multieditor/src/validator/types/number.validator.ts index 3ea024f9..f965c4e2 100644 --- a/packages/multieditor/src/validator/types/number.validator.ts +++ b/packages/multieditor/src/validator/types/number.validator.ts @@ -25,11 +25,11 @@ export class NumberValidator extends Validator { editor.setStatus( key, 'error', - errorMessage || `${key} is no valid Number!`, + errorMessage || `${key} is no valid Number!` ); } return isValid; - }, + } ); } @@ -52,11 +52,11 @@ export class NumberValidator extends Validator { editor.setStatus( key, 'error', - errorMessage || `${key} has to be smaller than ${number}`, + errorMessage || `${key} has to be smaller than ${number}` ); } return isValid; - }, + } ); return this; } @@ -80,11 +80,11 @@ export class NumberValidator extends Validator { editor.setStatus( key, 'error', - errorMessage || `${key} has to be larger than ${number}`, + errorMessage || `${key} has to be larger than ${number}` ); } return isValid; - }, + } ); return this; } @@ -107,11 +107,11 @@ export class NumberValidator extends Validator { editor.setStatus( key, 'error', - errorMessage || `${key} has to be positive`, + errorMessage || `${key} has to be positive` ); } return isValid; - }, + } ); return this; } @@ -134,11 +134,11 @@ export class NumberValidator extends Validator { editor.setStatus( key, 'error', - errorMessage || `${key} has to be negative`, + errorMessage || `${key} has to be negative` ); } return isValid; - }, + } ); return this; } diff --git a/packages/multieditor/src/validator/types/string.validator.ts b/packages/multieditor/src/validator/types/string.validator.ts index 9cdb68db..b619f9ad 100644 --- a/packages/multieditor/src/validator/types/string.validator.ts +++ b/packages/multieditor/src/validator/types/string.validator.ts @@ -24,11 +24,11 @@ export class StringValidator extends Validator { editor.setStatus( key, 'error', - errorMessage || `${key} is no valid String!`, + errorMessage || `${key} is no valid String!` ); } return isValid; - }, + } ); } @@ -51,11 +51,11 @@ export class StringValidator extends Validator { editor.setStatus( key, 'error', - errorMessage || `${key} has more than ${length} characters`, + errorMessage || `${key} has more than ${length} characters` ); } return isValid; - }, + } ); return this; } @@ -79,11 +79,11 @@ export class StringValidator extends Validator { editor.setStatus( key, 'error', - errorMessage || `${key} needs at least ${length} characters`, + errorMessage || `${key} needs at least ${length} characters` ); } return isValid; - }, + } ); return this; } @@ -107,11 +107,11 @@ export class StringValidator extends Validator { editor.setStatus( key, 'error', - errorMessage || `${key} is no valid email`, + errorMessage || `${key} is no valid email` ); } return isValid; - }, + } ); return this; } @@ -135,11 +135,11 @@ export class StringValidator extends Validator { editor.setStatus( key, 'error', - errorMessage || `${key} is no valid url`, + errorMessage || `${key} is no valid url` ); } return isValid; - }, + } ); return this; } @@ -161,7 +161,7 @@ export class StringValidator extends Validator { editor.setStatus( key, 'error', - errorMessage || `${key} doesn't follow defined regex`, + errorMessage || `${key} doesn't follow defined regex` ); } return isValid; diff --git a/packages/react/src/hooks/AgileHOC.ts b/packages/react/src/hooks/AgileHOC.ts index ea78435b..402e3532 100644 --- a/packages/react/src/hooks/AgileHOC.ts +++ b/packages/react/src/hooks/AgileHOC.ts @@ -11,7 +11,7 @@ import { export function AgileHOC( ReactComponent: any, deps?: Array | { [key: string]: State } | State, - agileInstance?: Agile, + agileInstance?: Agile ) { let depsArray: Array; const depsObject: { [key: string]: Observer } = {}; @@ -67,14 +67,14 @@ export function AgileHOC( if (depsArray) this.agileInstance().subController.subscribeWithSubsArray( this, - depsArray, + depsArray ); // Create HOC based Subscription with Object if (depsObject) { const response = this.agileInstance().subController.subscribeWithSubsObject( this, - depsObject, + depsObject ); this.updatedProps = { ...props, diff --git a/packages/react/src/hooks/useAgile.ts b/packages/react/src/hooks/useAgile.ts index eeb91e29..46a51473 100644 --- a/packages/react/src/hooks/useAgile.ts +++ b/packages/react/src/hooks/useAgile.ts @@ -67,7 +67,7 @@ export function useAgile< >( deps: X | [], key?: SubscriptionContainerKeyType, - agileInstance?: Agile, + agileInstance?: Agile ): AgileHookArrayType; /** @@ -79,7 +79,7 @@ export function useAgile< export function useAgile( dep: X, key?: SubscriptionContainerKeyType, - agileInstance?: Agile, + agileInstance?: Agile ): AgileHookType; export function useAgile< @@ -88,7 +88,7 @@ export function useAgile< >( deps: X | Y, key?: SubscriptionContainerKeyType, - agileInstance?: Agile, + agileInstance?: Agile ): AgileHookArrayType | AgileHookType { // Normalize Dependencies and special Agile Instance Types like Collection const depsArray = normalizeArray(deps, { @@ -96,12 +96,12 @@ export function useAgile< }).map((item) => item instanceof Collection ? item.getGroupWithReference(item.config.defaultGroupKey) - : item, + : item ); // Creates Return Value of Hook, depending if deps are in Array shape or not const getReturnValue = ( - depsArray: (State | Observer | undefined)[], + depsArray: (State | Observer | undefined)[] ): AgileHookArrayType | AgileHookType => { if (depsArray.length === 1 && !Array.isArray(deps)) return depsArray[0] instanceof Observer @@ -134,7 +134,7 @@ export function useAgile< forceRender(); }, observers, - key, + key ); // Unsubscribe Callback based Subscription on Unmount diff --git a/packages/react/src/hooks/useEvent.ts b/packages/react/src/hooks/useEvent.ts index 558a85a5..b2080dee 100644 --- a/packages/react/src/hooks/useEvent.ts +++ b/packages/react/src/hooks/useEvent.ts @@ -12,7 +12,7 @@ export function useEvent>( event: E, callback: EventCallbackFunction, key?: SubscriptionContainerKeyType, - agileInstance?: Agile, + agileInstance?: Agile ) { // Trigger State used to force the component to rerender const [, forceRender] = React.useReducer((s) => s + 1, 0); @@ -33,7 +33,7 @@ export function useEvent>( forceRender(); }, [event.observer], - key, + key ); // Unsubscribe Callback based Subscription and Event on Unmount diff --git a/packages/react/src/hooks/useWatcher.ts b/packages/react/src/hooks/useWatcher.ts index c048c658..628c0843 100644 --- a/packages/react/src/hooks/useWatcher.ts +++ b/packages/react/src/hooks/useWatcher.ts @@ -3,7 +3,7 @@ import { StateWatcherCallback, State } from '@agile-ts/core'; export function useWatcher( state: State, - callback: StateWatcherCallback, + callback: StateWatcherCallback ) { React.useEffect(() => { const generatedKey = state.watch(callback); From 097ac65b841193f40517feb760681558b2cc26fa Mon Sep 17 00:00:00 2001 From: Benno Kohrs Date: Wed, 6 Jan 2021 11:05:01 +0100 Subject: [PATCH 14/15] ignored examples because they are not that important to get linted in the github workflow and currently the react-native applications couldn't find the eslint react-native-community because there are not packages installed --- .eslintignore | 3 ++- examples/AwesomeTSProject/.prettierrc.js | 6 ------ examples/AwesomeTSProject/App.tsx | 10 +++++----- 3 files changed, 7 insertions(+), 12 deletions(-) delete mode 100644 examples/AwesomeTSProject/.prettierrc.js diff --git a/.eslintignore b/.eslintignore index 9f5293e3..3fd326b0 100644 --- a/.eslintignore +++ b/.eslintignore @@ -3,4 +3,5 @@ node_modules .eslintrc.js jest.config.js jest.config.base.js -scripts/ \ No newline at end of file +scripts/ +examples/ \ No newline at end of file diff --git a/examples/AwesomeTSProject/.prettierrc.js b/examples/AwesomeTSProject/.prettierrc.js deleted file mode 100644 index 5c4de1a4..00000000 --- a/examples/AwesomeTSProject/.prettierrc.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - bracketSpacing: false, - jsxBracketSameLine: true, - singleQuote: true, - trailingComma: 'all', -}; diff --git a/examples/AwesomeTSProject/App.tsx b/examples/AwesomeTSProject/App.tsx index dba58558..3ff359e4 100644 --- a/examples/AwesomeTSProject/App.tsx +++ b/examples/AwesomeTSProject/App.tsx @@ -1,7 +1,7 @@ import React from 'react'; -import {SafeAreaView, Text, StatusBar, Button} from 'react-native'; -import {useAgile} from '@agile-ts/react'; -import {MY_EVENT, MY_STATE} from './core'; +import { SafeAreaView, Text, StatusBar, Button } from 'react-native'; +import { useAgile } from '@agile-ts/react'; +import { MY_EVENT, MY_STATE } from './core'; const App = () => { const myState = useAgile(MY_STATE); @@ -10,7 +10,7 @@ const App = () => { <> - {myState} + {myState}