ui testing

This commit is contained in:
Sebastian 2022-06-08 15:18:41 -03:00
parent b00635c140
commit b419db505b
No known key found for this signature in database
GPG Key ID: BE4FF68352439FC1
21 changed files with 657 additions and 136 deletions

View File

@ -10,16 +10,51 @@ cp \
src/scss/fonts/materialdesignicons-webfont-4.9.95.woff2 \
dist/fonts
echo css
pnpm exec sass -I . ./src/scss/main.scss dist/main.css &
echo js
pnpm exec esbuild --log-level=error --bundle src/main.ts --outdir=dist --target=es6 --loader:.svg=dataurl --format=iife --sourcemap --jsx-factory=h --jsx-fragment=Fragment --platform=browser &
function build_css() {
pnpm exec sass -I . ./src/scss/main.scss dist/main.css
}
function build_js() {
pnpm exec esbuild --log-level=error --bundle $1 --outdir=dist --target=es6 --loader:.svg=dataurl --format=iife --sourcemap --jsx-factory=h --jsx-fragment=Fragment --platform=browser
}
function bundle() {
cat html/$1.html \
| sed -e '/ANASTASIS_SCRIPT_CONTENT/ {' -e 'r dist/main.js' -e 'd' -e '}' \
| sed -e '/ANASTASIS_STYLE_CONTENT/ {' -e 'r dist/main.css' -e 'd' -e '}' \
>dist/$1.html
}
function cleanup {
trap - SIGHUP SIGINT SIGTERM SIGQUIT
echo -n "Cleaning up... "
kill -- -$$
exit 1
}
trap cleanup SIGHUP SIGINT SIGTERM SIGQUIT
echo compile
build_css &
build_js src/main.ts &
build_js src/main.test.ts &
wait -n
wait -n
wait -n
pnpm run --silent test -- -R dot
echo html
cat ui.html \
| sed -e '/ANASTASIS_SCRIPT_CONTENT/ {' -e 'r dist/main.js' -e 'd' -e '}' \
| sed -e '/ANASTASIS_STYLE_CONTENT/ {' -e 'r dist/main.css' -e 'd' -e '}' \
>dist/index.html
echo done
bundle ui
bundle ui-dev
if [ "WATCH" == "$1" ]; then
echo watch mode
inotifywait -e close_write -r src -q -m | while read line; do
DATE=$(date)
echo $DATE $line
build_js src/main.ts
bundle ui-dev
./watch/send_reload.sh
done;
fi

View File

@ -1,4 +1,19 @@
#!/usr/bin/env node
/*
This file is part of GNU Anastasis
(C) 2021-2022 Anastasis SARL
GNU Anastasis is free software; you can redistribute it and/or modify it under the
terms of the GNU Affero General Public License as published by the Free Software
Foundation; either version 3, or (at your option) any later version.
GNU Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with
GNU Anastasis; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
/* eslint-disable no-undef */
import esbuild from 'esbuild'
import fs from 'fs';
@ -41,14 +56,17 @@ const watcher = chokidar
broadcast(file, { type: "RELOAD" });
});
fs.writeFileSync("dist/stories.html", fs.readFileSync("stories.html"))
/**
* Just bundling UI Stories.
* FIXME: add linaria CSS after implementing Material so CSS will be bundled
*/
fs.writeFileSync("dist/index.html", fs.readFileSync("html/stories.html"))
fs.writeFileSync("dist/mocha.css", fs.readFileSync("node_modules/mocha/mocha.css"))
fs.writeFileSync("dist/mocha.js", fs.readFileSync("node_modules/mocha/mocha.js"))
fs.writeFileSync("dist/mocha.js.map", fs.readFileSync("node_modules/mocha/mocha.js.map"))
export const buildConfig = {
entryPoints: ['src/stories.tsx'],
entryPoints: ['src/main.ts', 'src/stories.tsx'],
bundle: true,
outdir: 'dist',
minify: false,
@ -75,7 +93,6 @@ const server = await esbuild
});
console.log(`Dev server is ready at http://localhost:${server.port}/.
http://localhost:${server.port}/stories.html for the components stories.
The server is running a using websocket at ${devServerPort} to notify code change and live reload.
`);

View File

@ -0,0 +1,50 @@
<!DOCTYPE html>
<html
lang="en"
class="has-aside-left has-aside-mobile-transition has-navbar-fixed-top has-aside-expanded"
>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<link
rel="icon"
href="data:;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////////////////7//v38//78/P/+/fz//vz7///+/v/+/f3//vz7///+/v/+/fz//v38///////////////////////+/v3///7+/////////////////////////////////////////////////////////v3//v79///////+/v3///////r28v/ct5//06SG/9Gffv/Xqo7/7N/V/9e2nf/bsJb/6uDW/9Sskf/euKH/+/j2///////+/v3//////+3azv+/eE3/2rWd/9Kkhv/Vr5T/48i2/8J+VP/Qn3//3ryn/795Tf/WrpP/2LCW/8B6T//w4Nb///////Pn4P+/d0v/9u3n/+7d0v/EhV7//v///+HDr//fxLD/zph2/+TJt//8/Pv/woBX//Lm3f/y5dz/v3hN//bu6f/JjGn/4sW0///////Df1j/8OLZ//v6+P+/elH/+vj1//jy7f+/elL//////+zYzP/Eg13//////967p//MlHT/wn5X///////v4Nb/yY1s///////jw7H/06KG////////////z5t9/+fNvf//////x4pn//Pp4v/8+vn/w39X/8WEX///////5s/A/9CbfP//////27Oc/9y2n////////////9itlf/gu6f//////86Vdf/r2Mz//////8SCXP/Df1j//////+7d0v/KkG7//////+HBrf/VpYr////////////RnoH/5sq6///////Ii2n/8ubf//39/P/Cf1j/xohk/+bNvv//////wn5W//Tq4//58/D/wHxV//7+/f/59fH/v3xU//39/P/w4Nf/xIFb///////hw7H/yo9t/+/f1f/AeU3/+/n2/+nSxP/FhmD//////9qzm//Upon/4MSx/96+qf//////xINc/+3bz//48e3/v3hN//Pn3///////6M+//752S//gw6//06aK/8J+VP/kzLr/zZd1/8OCWv/q18r/17KZ/9Ooi//fv6r/v3dK/+vWyP///////v39///////27un/1aeK/9Opjv/m1cf/1KCC/9a0nP/n08T/0Jx8/82YdP/QnHz/16yR//jx7P///////v39///////+/f3///7+///////+//7//v7+///////+/v7//v/+/////////////////////////v7//v79///////////////////+/v/+/Pv//v39///+/v/+/Pv///7+//7+/f/+/Pv//v39//79/P/+/Pv///7+////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
/>
<link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon" />
<style type="text/css">
/* <![CDATA[ */
ANASTASIS_STYLE_CONTENT
/* <![CDATA[ */
</style>
</head>
<body>
<div id="container" class="anastasis-container"></div>
<script type="application/javascript">
ANASTASIS_SCRIPT_CONTENT;
</script>
<script type="application/javascript">
function setupLiveReload(port) {
const socketPath = `ws://localhost:${port}/socket`;
const ws = new WebSocket(socketPath);
ws.onmessage = (message) => {
const event = JSON.parse(message.data);
if (event.type === "LOG") {
console.log(event.message);
}
if (event.type === "RELOAD") {
window.location.reload();
}
};
ws.onerror = (error) => {
console.error(error);
};
}
setupLiveReload(8003);
</script>
</body>
</html>

View File

@ -9,7 +9,7 @@
"dev": "./dev.mjs",
"prepare": "pnpm compile",
"lint": "eslint 'src/**/*.{js,jsx,ts,tsx}'",
"test": "echo no tests",
"test": "mocha --enable-source-maps 'dist/**/*.test.js'",
"pretty": "prettier --write src"
},
"dependencies": {
@ -18,6 +18,7 @@
"date-fns": "2.28.0",
"jed": "1.1.1",
"preact": "^10.5.15",
"preact-render-to-string": "^5.1.19",
"preact-router": "^3.2.1",
"qrcode-generator": "^1.4.4"
},
@ -34,6 +35,7 @@
},
"devDependencies": {
"@creativebulma/bulma-tooltip": "^1.2.0",
"@types/mocha": "^9.0.0",
"bulma": "^0.9.3",
"bulma-checkbox": "^1.1.1",
"bulma-radio": "^1.1.1",

View File

@ -0,0 +1,48 @@
/*
This file is part of GNU Anastasis
(C) 2021-2022 Anastasis SARL
GNU Anastasis is free software; you can redistribute it and/or modify it under the
terms of the GNU Affero General Public License as published by the Free Software
Foundation; either version 3, or (at your option) any later version.
GNU Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with
GNU Anastasis; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
/**
*
* @author Sebastian Javier Marchano (sebasjm)
*/
import { setupI18n } from "@gnu-taler/taler-util";
import { renderNodeOrBrowser } from "./test-utils.js";
import * as pages from "./pages/home/index.storiesNo.js";
setupI18n("en", { en: {} });
function testThisStory(st: any): any {
describe(`render examples for ${(st as any).default.title}`, () => {
Object.keys(st).forEach((k) => {
const Component = (st as any)[k];
if (k === "default" || !Component) return;
it(`example: ${k}`, () => {
renderNodeOrBrowser(Component, Component.args);
});
});
});
}
describe("render every storybook example", () => {
[pages].forEach(function testAll(st: any) {
if (Array.isArray(st.default)) {
st.default.forEach(testAll);
} else {
testThisStory(st);
}
});
});

View File

@ -223,7 +223,7 @@ function TableRow({
onDelete: (s: string) => void;
url: string;
info: AuthenticationProviderStatusOk;
}) {
}): VNode {
const [status, setStatus] = useState("checking");
useEffect(function () {
testProvider(url.endsWith("/") ? url.substring(0, url.length - 1) : url)

View File

@ -125,13 +125,6 @@ export function ContinentSelectionScreen(): VNode {
</div>
</div>
</div>
{/* {theCountry && <div class="field">
<label class="label">Available currencies:</label>
<div class="control">
<input class="input is-small" type="text" readonly value={theCountry.currency} />
</div>
</div>} */}
</div>
<div class="column is-two-third">
<p>
@ -151,18 +144,11 @@ export function ContinentSelectionScreen(): VNode {
}}
>
<p>
If you just want to try out Anastasis, we recomment that you
If you just want to try out Anastasis, we recommend that you
choose <b>Testcontinent</b> with <b>Demoland</b>. For this special
country, you will be asked for a simple number and not real,
personal identifiable information.
</p>
{/*
<p>
Because of the diversity of personally identifying information in
different countries and cultures, we do not support all countries
yet. If you want to improve the supported countries,{" "}
<a href="mailto:contact@anastasis.lu">contact us</a>.
</p> */}
</div>
</div>
</div>

View File

@ -36,6 +36,7 @@ export function AuthMethodTotpSetup({
const [test, setTest] = useState("");
const secretKey = useMemo(() => {
const array = new Uint8Array(32);
if (typeof window === "undefined") return array;
return window.crypto.getRandomValues(array);
}, []);

View File

@ -143,21 +143,24 @@ function ExampleList({
{k.examples.map((r) => {
const e = encodeURIComponent;
const eId = `${e(r.group)}-${e(r.component)}-${e(r.name)}`;
function doSelection(e: any): void {
e.preventDefault();
location.hash = `#${eId}`;
onSelectStory(r, eId);
}
const isSelected =
selected &&
selected.component === r.component &&
selected.group === r.group &&
selected.name === r.name;
return (
<dd id={eId} key={r.name} data-selected={isSelected}>
<a
href={`#${eId}`}
onClick={(e) => {
e.preventDefault();
location.hash = `#${eId}`;
onSelectStory(r, eId);
}}
>
<dd
id={eId}
key={r.name}
data-selected={isSelected}
onClick={doSelection}
>
<a href={`#${eId}`} onClick={doSelection}>
{r.name}
</a>
</dd>

View File

@ -0,0 +1,201 @@
/*
This file is part of GNU Anastasis
(C) 2021-2022 Anastasis SARL
GNU Anastasis is free software; you can redistribute it and/or modify it under the
terms of the GNU Affero General Public License as published by the Free Software
Foundation; either version 3, or (at your option) any later version.
GNU Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with
GNU Anastasis; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
import {
ComponentChildren,
Fragment,
FunctionalComponent,
h as create,
options,
render as renderIntoDom,
VNode,
} from "preact";
import { render as renderToString } from "preact-render-to-string";
// When doing tests we want the requestAnimationFrame to be as fast as possible.
// without this option the RAF will timeout after 100ms making the tests slower
options.requestAnimationFrame = (fn: () => void) => {
// console.log("RAF called")
return fn();
};
export function createExample<Props>(
Component: FunctionalComponent<Props>,
props: Partial<Props> | (() => Partial<Props>),
): ComponentChildren {
//FIXME: props are evaluated on build time
// in some cases we want to evaluated the props on render time so we can get some relative timestamp
// check how we can build evaluatedProps in render time
const evaluatedProps = typeof props === "function" ? props() : props;
const Render = (args: any): VNode => create(Component, args);
Render.args = evaluatedProps;
return Render;
}
export function createExampleWithCustomContext<Props, ContextProps>(
Component: FunctionalComponent<Props>,
props: Partial<Props> | (() => Partial<Props>),
ContextProvider: FunctionalComponent<ContextProps>,
contextProps: Partial<ContextProps>,
): ComponentChildren {
const evaluatedProps = typeof props === "function" ? props() : props;
const Render = (args: any): VNode => create(Component, args);
const WithContext = (args: any): VNode =>
create(ContextProvider, {
...contextProps,
children: [Render(args)],
} as any);
WithContext.args = evaluatedProps;
return WithContext;
}
export function NullLink({
children,
}: {
children?: ComponentChildren;
}): VNode {
return create("a", { children, href: "javascript:void(0);" });
}
export function renderNodeOrBrowser(Component: any, args: any): void {
const vdom = create(Component, args);
if (typeof window === "undefined") {
renderToString(vdom);
} else {
const div = document.createElement("div");
document.body.appendChild(div);
renderIntoDom(vdom, div);
renderIntoDom(null, div);
document.body.removeChild(div);
}
}
interface Mounted<T> {
unmount: () => void;
getLastResultOrThrow: () => T;
assertNoPendingUpdate: () => void;
waitNextUpdate: (s?: string) => Promise<void>;
}
const isNode = typeof window === "undefined";
export function mountHook<T>(
callback: () => T,
Context?: ({ children }: { children: any }) => VNode,
): Mounted<T> {
// const result: { current: T | null } = {
// current: null
// }
let lastResult: T | Error | null = null;
const listener: Array<() => void> = [];
// component that's going to hold the hook
function Component(): VNode {
try {
lastResult = callback();
} catch (e) {
if (e instanceof Error) {
lastResult = e;
} else {
lastResult = new Error(`mounting the hook throw an exception: ${e}`);
}
}
// notify to everyone waiting for an update and clean the queue
listener.splice(0, listener.length).forEach((cb) => cb());
return create(Fragment, {});
}
// create the vdom with context if required
const vdom = !Context
? create(Component, {})
: create(Context, { children: [create(Component, {})] });
// waiter callback
async function waitNextUpdate(_label = ""): Promise<void> {
if (_label) _label = `. label: "${_label}"`;
await new Promise((res, rej) => {
const tid = setTimeout(() => {
rej(
Error(`waiting for an update but the hook didn't make one${_label}`),
);
}, 100);
listener.push(() => {
clearTimeout(tid);
res(undefined);
});
});
}
const customElement = {} as Element;
const parentElement = isNode ? customElement : document.createElement("div");
if (!isNode) {
document.body.appendChild(parentElement);
}
renderIntoDom(vdom, parentElement);
// clean up callback
function unmount(): void {
if (!isNode) {
document.body.removeChild(parentElement);
}
}
function getLastResult(): T | Error | null {
const copy = lastResult;
lastResult = null;
return copy;
}
function getLastResultOrThrow(): T {
const r = getLastResult();
if (r instanceof Error) throw r;
if (!r) throw Error("there was no last result");
return r;
}
async function assertNoPendingUpdate(): Promise<void> {
await new Promise((res, rej) => {
const tid = setTimeout(() => {
res(undefined);
}, 10);
listener.push(() => {
clearTimeout(tid);
rej(
Error(`Expecting no pending result but the hook got updated.
If the update was not intended you need to check the hook dependencies
(or dependencies of the internal state) but otherwise make
sure to consume the result before ending the test.`),
);
});
});
const r = getLastResult();
if (r)
throw Error(`There are still pending results.
This may happen because the hook did a new update but the test didn't consume the result using getLastResult`);
}
return {
unmount,
getLastResultOrThrow,
waitNextUpdate,
assertNoPendingUpdate,
};
}

View File

@ -209,10 +209,12 @@ export const reducerStatesExample = {
initial: undefined,
recoverySelectCountry: {
...base,
reducer_type: "recovery",
recovery_state: RecoveryStates.CountrySelecting,
} as ReducerState,
recoverySelectContinent: {
...base,
reducer_type: "recovery",
recovery_state: RecoveryStates.ContinentSelecting,
} as ReducerState,
secretSelection: {
@ -222,10 +224,12 @@ export const reducerStatesExample = {
} as ReducerState,
recoveryFinished: {
...base,
reducer_type: "recovery",
recovery_state: RecoveryStates.RecoveryFinished,
} as ReducerState,
challengeSelecting: {
...base,
reducer_type: "recovery",
recovery_state: RecoveryStates.ChallengeSelecting,
} as ReducerState,
challengeSolving: {
@ -235,34 +239,42 @@ export const reducerStatesExample = {
} as ReducerStateRecovery,
challengePaying: {
...base,
reducer_type: "recovery",
recovery_state: RecoveryStates.ChallengePaying,
} as ReducerState,
recoveryAttributeEditing: {
...base,
reducer_type: "recovery",
recovery_state: RecoveryStates.UserAttributesCollecting,
} as ReducerState,
backupSelectCountry: {
...base,
reducer_type: "backup",
backup_state: BackupStates.CountrySelecting,
} as ReducerState,
backupSelectContinent: {
...base,
reducer_type: "backup",
backup_state: BackupStates.ContinentSelecting,
} as ReducerState,
secretEdition: {
...base,
reducer_type: "backup",
backup_state: BackupStates.SecretEditing,
} as ReducerState,
policyReview: {
...base,
reducer_type: "backup",
backup_state: BackupStates.PoliciesReviewing,
} as ReducerState,
policyPay: {
...base,
reducer_type: "backup",
backup_state: BackupStates.PoliciesPaying,
} as ReducerState,
backupFinished: {
...base,
reducer_type: "backup",
backup_state: BackupStates.BackupFinished,
} as ReducerState,
authEditing: {
@ -272,10 +284,12 @@ export const reducerStatesExample = {
} as ReducerState,
backupAttributeEditing: {
...base,
reducer_type: "backup",
backup_state: BackupStates.UserAttributesCollecting,
} as ReducerState,
truthsPaying: {
...base,
reducer_type: "backup",
backup_state: BackupStates.TruthsPaying,
} as ReducerState,
};

View File

@ -0,0 +1,17 @@
#!/bin/bash
SERVER_KEY=258EAFA5-E914-47DA-95CA-C5AB0DC85B11
while read line; do
LINE=$(echo $line | tr -d '\r')
case $LINE in
Sec-WebSocket-Key:*)
CLIENT_KEY="${LINE:19}"
export WS_ACCEPT=$( echo -n $CLIENT_KEY$SERVER_KEY | sha1sum | xxd -r -p | base64 )
;;
"") break ;;
esac
done
cat watch/web_socket_server.reply | sed 's/$'"/`echo \\\r`/" | envsubst '$WS_ACCEPT'
socat UNIX-RECV:./send_signal STDOUT

View File

@ -0,0 +1,7 @@
#!/bin/bash
COMMAND='{"type":"RELOAD"}'
LEN=$(printf '%x\n' ${#COMMAND})
OPCODE=81
cat <(echo -n $OPCODE$LEN | xxd -r -p) <(echo -n $COMMAND) | socat - UNIX-SEND:./send_signal

View File

@ -0,0 +1,4 @@
#!/bin/bash
socat TCP-LISTEN:8003,fork EXEC:"./watch/reply.sh"

View File

@ -0,0 +1,6 @@
GET /socket HTTP/1.1
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: aaaaaaaaaaaaaaaaaaaaaa==

View File

@ -0,0 +1,5 @@
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: $WS_ACCEPT

View File

@ -2,7 +2,7 @@
set -e
#rm -rf dist lib tsconfig.tsbuildinfo .linaria-cache
rm -rf dist lib tsconfig.tsbuildinfo .linaria-cache
echo typecheck and bundle...
node build-fast-with-linaria.mjs &

View File

@ -44,6 +44,7 @@
},
"devDependencies": {
"@babel/core": "7.13.16",
"@babel/plugin-transform-modules-commonjs": "^7.18.2",
"@babel/plugin-transform-react-jsx-source": "^7.12.13",
"@babel/preset-typescript": "^7.13.0",
"@babel/runtime": "^7.17.8",

View File

@ -56,6 +56,7 @@ importers:
'@creativebulma/bulma-tooltip': ^1.2.0
'@gnu-taler/anastasis-core': workspace:*
'@gnu-taler/taler-util': workspace:*
'@types/mocha': ^9.0.0
bulma: ^0.9.3
bulma-checkbox: ^1.1.1
bulma-radio: ^1.1.1
@ -66,6 +67,7 @@ importers:
jssha: ^3.2.0
mocha: ^9.2.0
preact: ^10.5.15
preact-render-to-string: ^5.1.19
preact-router: ^3.2.1
qrcode-generator: ^1.4.4
sass: 1.32.13
@ -77,10 +79,12 @@ importers:
date-fns: 2.28.0
jed: 1.1.1
preact: 10.6.5
preact-render-to-string: 5.1.19_preact@10.6.5
preact-router: 3.2.1_preact@10.6.5
qrcode-generator: 1.4.4
devDependencies:
'@creativebulma/bulma-tooltip': 1.2.0
'@types/mocha': 9.0.0
bulma: 0.9.3
bulma-checkbox: 1.2.1
bulma-radio: 1.2.0
@ -316,6 +320,7 @@ importers:
packages/taler-wallet-webextension:
specifiers:
'@babel/core': 7.13.16
'@babel/plugin-transform-modules-commonjs': ^7.18.2
'@babel/plugin-transform-react-jsx-source': ^7.12.13
'@babel/preset-typescript': ^7.13.0
'@babel/runtime': ^7.17.8
@ -363,6 +368,7 @@ importers:
ws: 7.4.5
devDependencies:
'@babel/core': 7.13.16
'@babel/plugin-transform-modules-commonjs': 7.18.2_@babel+core@7.13.16
'@babel/plugin-transform-react-jsx-source': 7.14.5_@babel+core@7.13.16
'@babel/preset-typescript': 7.15.0_@babel+core@7.13.16
'@babel/runtime': 7.17.8
@ -461,7 +467,7 @@ packages:
'@babel/code-frame': 7.16.7
'@babel/generator': 7.17.0
'@babel/helper-compilation-targets': 7.16.7_@babel+core@7.16.7
'@babel/helper-module-transforms': 7.16.7
'@babel/helper-module-transforms': 7.18.0
'@babel/helpers': 7.16.7
'@babel/parser': 7.17.0
'@babel/template': 7.16.7
@ -518,11 +524,20 @@ packages:
source-map: 0.5.7
dev: true
/@babel/generator/7.18.2:
resolution: {integrity: sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.18.4
'@jridgewell/gen-mapping': 0.3.1
jsesc: 2.5.2
dev: true
/@babel/helper-annotate-as-pure/7.14.5:
resolution: {integrity: sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.17.0
'@babel/types': 7.18.4
dev: true
/@babel/helper-annotate-as-pure/7.16.7:
@ -537,7 +552,7 @@ packages:
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-explode-assignable-expression': 7.16.7
'@babel/types': 7.17.0
'@babel/types': 7.18.4
dev: true
/@babel/helper-compilation-targets/7.16.7_@babel+core@7.13.16:
@ -680,7 +695,7 @@ packages:
'@babel/core': 7.17.2
'@babel/helper-compilation-targets': 7.16.7_@babel+core@7.17.2
'@babel/helper-module-imports': 7.16.7
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
'@babel/traverse': 7.17.0
debug: 4.3.3
lodash.debounce: 4.0.8
@ -697,11 +712,16 @@ packages:
'@babel/types': 7.17.0
dev: true
/@babel/helper-environment-visitor/7.18.2:
resolution: {integrity: sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==}
engines: {node: '>=6.9.0'}
dev: true
/@babel/helper-explode-assignable-expression/7.16.7:
resolution: {integrity: sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.17.0
'@babel/types': 7.18.4
dev: true
/@babel/helper-function-name/7.14.5:
@ -710,7 +730,7 @@ packages:
dependencies:
'@babel/helper-get-function-arity': 7.14.5
'@babel/template': 7.16.7
'@babel/types': 7.17.0
'@babel/types': 7.18.4
dev: true
/@babel/helper-function-name/7.16.7:
@ -722,18 +742,26 @@ packages:
'@babel/types': 7.17.0
dev: true
/@babel/helper-function-name/7.17.9:
resolution: {integrity: sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/template': 7.16.7
'@babel/types': 7.18.4
dev: true
/@babel/helper-get-function-arity/7.14.5:
resolution: {integrity: sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.17.0
'@babel/types': 7.18.4
dev: true
/@babel/helper-get-function-arity/7.16.7:
resolution: {integrity: sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.17.0
'@babel/types': 7.18.4
dev: true
/@babel/helper-hoist-variables/7.16.7:
@ -747,14 +775,14 @@ packages:
resolution: {integrity: sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.17.0
'@babel/types': 7.18.4
dev: true
/@babel/helper-member-expression-to-functions/7.16.7:
resolution: {integrity: sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.17.0
'@babel/types': 7.18.4
dev: true
/@babel/helper-module-imports/7.16.7:
@ -780,18 +808,34 @@ packages:
- supports-color
dev: true
/@babel/helper-module-transforms/7.18.0:
resolution: {integrity: sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-environment-visitor': 7.16.7
'@babel/helper-module-imports': 7.16.7
'@babel/helper-simple-access': 7.18.2
'@babel/helper-split-export-declaration': 7.16.7
'@babel/helper-validator-identifier': 7.16.7
'@babel/template': 7.16.7
'@babel/traverse': 7.18.2
'@babel/types': 7.18.4
transitivePeerDependencies:
- supports-color
dev: true
/@babel/helper-optimise-call-expression/7.14.5:
resolution: {integrity: sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.17.0
'@babel/types': 7.18.4
dev: true
/@babel/helper-optimise-call-expression/7.16.7:
resolution: {integrity: sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.17.0
'@babel/types': 7.18.4
dev: true
/@babel/helper-plugin-utils/7.14.5:
@ -804,13 +848,18 @@ packages:
engines: {node: '>=6.9.0'}
dev: true
/@babel/helper-plugin-utils/7.17.12:
resolution: {integrity: sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==}
engines: {node: '>=6.9.0'}
dev: true
/@babel/helper-remap-async-to-generator/7.16.8:
resolution: {integrity: sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-annotate-as-pure': 7.16.7
'@babel/helper-wrap-function': 7.16.8
'@babel/types': 7.17.0
'@babel/types': 7.18.4
transitivePeerDependencies:
- supports-color
dev: true
@ -821,8 +870,8 @@ packages:
dependencies:
'@babel/helper-member-expression-to-functions': 7.15.0
'@babel/helper-optimise-call-expression': 7.14.5
'@babel/traverse': 7.17.0
'@babel/types': 7.17.0
'@babel/traverse': 7.18.2
'@babel/types': 7.18.4
transitivePeerDependencies:
- supports-color
dev: true
@ -847,18 +896,25 @@ packages:
'@babel/types': 7.17.0
dev: true
/@babel/helper-simple-access/7.18.2:
resolution: {integrity: sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.18.4
dev: true
/@babel/helper-skip-transparent-expression-wrappers/7.16.0:
resolution: {integrity: sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.17.0
'@babel/types': 7.18.4
dev: true
/@babel/helper-split-export-declaration/7.14.5:
resolution: {integrity: sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.17.0
'@babel/types': 7.18.4
dev: true
/@babel/helper-split-export-declaration/7.16.7:
@ -894,8 +950,8 @@ packages:
dependencies:
'@babel/helper-function-name': 7.16.7
'@babel/template': 7.16.7
'@babel/traverse': 7.17.0
'@babel/types': 7.17.0
'@babel/traverse': 7.18.2
'@babel/types': 7.18.4
transitivePeerDependencies:
- supports-color
dev: true
@ -906,7 +962,7 @@ packages:
dependencies:
'@babel/template': 7.16.7
'@babel/traverse': 7.17.0
'@babel/types': 7.17.0
'@babel/types': 7.18.4
transitivePeerDependencies:
- supports-color
dev: true
@ -947,6 +1003,14 @@ packages:
'@babel/types': 7.17.0
dev: true
/@babel/parser/7.18.4:
resolution: {integrity: sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==}
engines: {node: '>=6.0.0'}
hasBin: true
dependencies:
'@babel/types': 7.18.4
dev: true
/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.16.7_@babel+core@7.13.16:
resolution: {integrity: sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==}
engines: {node: '>=6.9.0'}
@ -964,7 +1028,7 @@ packages:
'@babel/core': ^7.0.0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.16.7_@babel+core@7.13.16:
@ -986,7 +1050,7 @@ packages:
'@babel/core': ^7.13.0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
'@babel/helper-skip-transparent-expression-wrappers': 7.16.0
'@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.17.2
dev: true
@ -1012,7 +1076,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
'@babel/helper-remap-async-to-generator': 7.16.8
'@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.17.2
transitivePeerDependencies:
@ -1067,7 +1131,7 @@ packages:
dependencies:
'@babel/core': 7.17.2
'@babel/helper-create-class-features-plugin': 7.17.1_@babel+core@7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
'@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.17.2
transitivePeerDependencies:
- supports-color
@ -1107,7 +1171,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
'@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.2
dev: true
@ -1129,7 +1193,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
'@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.17.2
dev: true
@ -1151,7 +1215,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
'@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.17.2
dev: true
@ -1173,7 +1237,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
'@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.17.2
dev: true
@ -1195,7 +1259,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
'@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.17.2
dev: true
@ -1217,7 +1281,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
'@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.17.2
dev: true
@ -1267,7 +1331,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
'@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.17.2
dev: true
@ -1290,7 +1354,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
'@babel/helper-skip-transparent-expression-wrappers': 7.16.0
'@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.2
dev: true
@ -1316,7 +1380,7 @@ packages:
dependencies:
'@babel/core': 7.17.2
'@babel/helper-create-class-features-plugin': 7.17.1_@babel+core@7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
transitivePeerDependencies:
- supports-color
dev: true
@ -1345,7 +1409,7 @@ packages:
'@babel/core': 7.17.2
'@babel/helper-annotate-as-pure': 7.16.7
'@babel/helper-create-class-features-plugin': 7.17.1_@babel+core@7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
'@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.17.2
transitivePeerDependencies:
- supports-color
@ -1370,7 +1434,7 @@ packages:
dependencies:
'@babel/core': 7.17.2
'@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.13.16:
@ -1388,7 +1452,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.13.16:
@ -1406,7 +1470,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.13.16:
@ -1426,7 +1490,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-syntax-decorators/7.17.0_@babel+core@7.17.2:
@ -1436,7 +1500,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.13.16:
@ -1472,7 +1536,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.13.16:
@ -1490,7 +1554,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.17.2:
@ -1500,7 +1564,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.13.16:
@ -1518,7 +1582,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.13.16:
@ -1536,7 +1600,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.13.16:
@ -1554,7 +1618,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.13.16:
@ -1572,7 +1636,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.13.16:
@ -1590,7 +1654,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.13.16:
@ -1608,7 +1672,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.13.16:
@ -1628,7 +1692,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.13.16:
@ -1648,7 +1712,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-syntax-typescript/7.14.5_@babel+core@7.13.16:
@ -1658,7 +1722,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.13.16
'@babel/helper-plugin-utils': 7.14.5
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-syntax-typescript/7.16.7_@babel+core@7.17.2:
@ -1668,7 +1732,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-arrow-functions/7.16.7_@babel+core@7.13.16:
@ -1688,7 +1752,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-async-to-generator/7.16.8_@babel+core@7.13.16:
@ -1713,7 +1777,7 @@ packages:
dependencies:
'@babel/core': 7.17.2
'@babel/helper-module-imports': 7.16.7
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
'@babel/helper-remap-async-to-generator': 7.16.8
transitivePeerDependencies:
- supports-color
@ -1736,7 +1800,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-block-scoping/7.16.7_@babel+core@7.13.16:
@ -1756,7 +1820,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-classes/7.16.7_@babel+core@7.13.16:
@ -1789,7 +1853,7 @@ packages:
'@babel/helper-environment-visitor': 7.16.7
'@babel/helper-function-name': 7.16.7
'@babel/helper-optimise-call-expression': 7.16.7
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
'@babel/helper-replace-supers': 7.16.7
'@babel/helper-split-export-declaration': 7.16.7
globals: 11.12.0
@ -1814,7 +1878,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-destructuring/7.16.7_@babel+core@7.13.16:
@ -1834,7 +1898,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-dotall-regex/7.16.7_@babel+core@7.13.16:
@ -1856,7 +1920,7 @@ packages:
dependencies:
'@babel/core': 7.17.2
'@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-duplicate-keys/7.16.7_@babel+core@7.13.16:
@ -1876,7 +1940,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-exponentiation-operator/7.16.7_@babel+core@7.13.16:
@ -1898,7 +1962,7 @@ packages:
dependencies:
'@babel/core': 7.17.2
'@babel/helper-builder-binary-assignment-operator-visitor': 7.16.7
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-for-of/7.16.7_@babel+core@7.13.16:
@ -1918,7 +1982,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-function-name/7.16.7_@babel+core@7.13.16:
@ -1942,7 +2006,7 @@ packages:
'@babel/core': 7.17.2
'@babel/helper-compilation-targets': 7.16.7_@babel+core@7.17.2
'@babel/helper-function-name': 7.16.7
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-literals/7.16.7_@babel+core@7.13.16:
@ -1962,7 +2026,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-member-expression-literals/7.16.7_@babel+core@7.13.16:
@ -1982,7 +2046,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-modules-amd/7.16.7_@babel+core@7.13.16:
@ -2006,8 +2070,8 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-module-transforms': 7.16.7
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-module-transforms': 7.18.0
'@babel/helper-plugin-utils': 7.17.12
babel-plugin-dynamic-import-node: 2.3.3
transitivePeerDependencies:
- supports-color
@ -2028,16 +2092,31 @@ packages:
- supports-color
dev: true
/@babel/plugin-transform-modules-commonjs/7.16.8_@babel+core@7.17.2:
resolution: {integrity: sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==}
/@babel/plugin-transform-modules-commonjs/7.18.2_@babel+core@7.13.16:
resolution: {integrity: sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.13.16
'@babel/helper-module-transforms': 7.18.0
'@babel/helper-plugin-utils': 7.17.12
'@babel/helper-simple-access': 7.18.2
babel-plugin-dynamic-import-node: 2.3.3
transitivePeerDependencies:
- supports-color
dev: true
/@babel/plugin-transform-modules-commonjs/7.18.2_@babel+core@7.17.2:
resolution: {integrity: sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-module-transforms': 7.16.7
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-simple-access': 7.16.7
'@babel/helper-module-transforms': 7.18.0
'@babel/helper-plugin-utils': 7.17.12
'@babel/helper-simple-access': 7.18.2
babel-plugin-dynamic-import-node: 2.3.3
transitivePeerDependencies:
- supports-color
@ -2067,8 +2146,8 @@ packages:
dependencies:
'@babel/core': 7.17.2
'@babel/helper-hoist-variables': 7.16.7
'@babel/helper-module-transforms': 7.16.7
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-module-transforms': 7.18.0
'@babel/helper-plugin-utils': 7.17.12
'@babel/helper-validator-identifier': 7.16.7
babel-plugin-dynamic-import-node: 2.3.3
transitivePeerDependencies:
@ -2095,8 +2174,8 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-module-transforms': 7.16.7
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-module-transforms': 7.18.0
'@babel/helper-plugin-utils': 7.17.12
transitivePeerDependencies:
- supports-color
dev: true
@ -2138,7 +2217,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-object-assign/7.16.7_@babel+core@7.17.2:
@ -2171,7 +2250,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
'@babel/helper-replace-supers': 7.16.7
transitivePeerDependencies:
- supports-color
@ -2194,7 +2273,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-property-literals/7.16.7_@babel+core@7.13.16:
@ -2214,7 +2293,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-react-jsx-source/7.14.5_@babel+core@7.13.16:
@ -2278,7 +2357,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-runtime/7.17.0_@babel+core@7.13.16:
@ -2315,7 +2394,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-spread/7.16.7_@babel+core@7.13.16:
@ -2336,7 +2415,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
'@babel/helper-skip-transparent-expression-wrappers': 7.16.0
dev: true
@ -2357,7 +2436,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-template-literals/7.16.7_@babel+core@7.13.16:
@ -2377,7 +2456,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-typeof-symbol/7.16.7_@babel+core@7.13.16:
@ -2397,7 +2476,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-typescript/7.15.0_@babel+core@7.13.16:
@ -2422,7 +2501,7 @@ packages:
dependencies:
'@babel/core': 7.17.2
'@babel/helper-create-class-features-plugin': 7.17.1_@babel+core@7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
'@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.17.2
transitivePeerDependencies:
- supports-color
@ -2445,7 +2524,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/plugin-transform-unicode-regex/7.16.7_@babel+core@7.13.16:
@ -2467,7 +2546,7 @@ packages:
dependencies:
'@babel/core': 7.17.2
'@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.17.2
'@babel/helper-plugin-utils': 7.16.7
'@babel/helper-plugin-utils': 7.17.12
dev: true
/@babel/preset-env/7.16.11_@babel+core@7.13.16:
@ -2612,7 +2691,7 @@ packages:
'@babel/plugin-transform-literals': 7.16.7_@babel+core@7.17.2
'@babel/plugin-transform-member-expression-literals': 7.16.7_@babel+core@7.17.2
'@babel/plugin-transform-modules-amd': 7.16.7_@babel+core@7.17.2
'@babel/plugin-transform-modules-commonjs': 7.16.8_@babel+core@7.17.2
'@babel/plugin-transform-modules-commonjs': 7.18.2_@babel+core@7.17.2
'@babel/plugin-transform-modules-systemjs': 7.16.7_@babel+core@7.17.2
'@babel/plugin-transform-modules-umd': 7.16.7_@babel+core@7.17.2
'@babel/plugin-transform-named-capturing-groups-regex': 7.16.8_@babel+core@7.17.2
@ -2659,7 +2738,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.17.2
'@babel/helper-plugin-utils': 7.14.5
'@babel/helper-plugin-utils': 7.17.12
'@babel/plugin-proposal-unicode-property-regex': 7.16.7_@babel+core@7.17.2
'@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.17.2
'@babel/types': 7.17.0
@ -2766,7 +2845,7 @@ packages:
'@babel/helper-hoist-variables': 7.16.7
'@babel/helper-split-export-declaration': 7.16.7
'@babel/parser': 7.17.0
'@babel/types': 7.17.0
'@babel/types': 7.18.4
debug: 4.3.3
globals: 11.12.0
transitivePeerDependencies:
@ -2791,6 +2870,24 @@ packages:
- supports-color
dev: true
/@babel/traverse/7.18.2:
resolution: {integrity: sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/code-frame': 7.16.7
'@babel/generator': 7.18.2
'@babel/helper-environment-visitor': 7.18.2
'@babel/helper-function-name': 7.17.9
'@babel/helper-hoist-variables': 7.16.7
'@babel/helper-split-export-declaration': 7.16.7
'@babel/parser': 7.18.4
'@babel/types': 7.18.4
debug: 4.3.3
globals: 11.12.0
transitivePeerDependencies:
- supports-color
dev: true
/@babel/types/7.15.0:
resolution: {integrity: sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==}
engines: {node: '>=6.9.0'}
@ -2815,6 +2912,14 @@ packages:
to-fast-properties: 2.0.0
dev: true
/@babel/types/7.18.4:
resolution: {integrity: sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-validator-identifier': 7.16.7
to-fast-properties: 2.0.0
dev: true
/@bcoe/v8-coverage/0.2.3:
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
dev: true
@ -2896,15 +3001,36 @@ packages:
chalk: 4.1.2
dev: true
/@jridgewell/gen-mapping/0.3.1:
resolution: {integrity: sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==}
engines: {node: '>=6.0.0'}
dependencies:
'@jridgewell/set-array': 1.1.1
'@jridgewell/sourcemap-codec': 1.4.10
'@jridgewell/trace-mapping': 0.3.13
dev: true
/@jridgewell/resolve-uri/3.0.4:
resolution: {integrity: sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg==}
engines: {node: '>=6.0.0'}
dev: true
/@jridgewell/set-array/1.1.1:
resolution: {integrity: sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==}
engines: {node: '>=6.0.0'}
dev: true
/@jridgewell/sourcemap-codec/1.4.10:
resolution: {integrity: sha512-Ht8wIW5v165atIX1p+JvKR5ONzUyF4Ac8DZIQ5kZs9zrb6M8SJNXpx1zn04rn65VjBMygRoMXcyYwNK0fT7bEg==}
dev: true
/@jridgewell/trace-mapping/0.3.13:
resolution: {integrity: sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==}
dependencies:
'@jridgewell/resolve-uri': 3.0.4
'@jridgewell/sourcemap-codec': 1.4.10
dev: true
/@jridgewell/trace-mapping/0.3.4:
resolution: {integrity: sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==}
dependencies:
@ -11193,7 +11319,6 @@ packages:
dependencies:
preact: 10.6.5
pretty-format: 3.8.0
dev: true
/preact-router/3.2.1_preact@10.6.5:
resolution: {integrity: sha512-KEN2VN1DxUlTwzW5IFkF13YIA2OdQ2OvgJTkQREF+AA2NrHRLaGbB68EjS4IeZOa1shvQ1FvEm3bSLta4sXBhg==}
@ -11255,8 +11380,7 @@ packages:
dev: true
/pretty-format/3.8.0:
resolution: {integrity: sha1-v77VbV6ad2ZF9LH/eqGjrE+jw4U=}
dev: true
resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==}
/pretty-ms/7.0.1:
resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==}