begin cli v2

This commit is contained in:
mbecker20
2022-03-18 23:02:51 -07:00
parent 2db166ddb3
commit d64da60d4e
44 changed files with 472 additions and 391 deletions

28
cli-legacy/package.json Normal file
View File

@@ -0,0 +1,28 @@
{
"name": "@mbecker20/monitor-cli",
"version": "0.0.3",
"author": "mbecker20",
"license": "MIT",
"bin": "build/monitor-cli.js",
"engines": {
"node": ">=10"
},
"scripts": {
"start": "yarn build && build/monitor-cli.js",
"build": "vite build && node post-build.mjs && chmod +x build/monitor-cli.js",
"publish-cli": "yarn build && cd build && npm publish --access=public && node update-version.mjs"
},
"devDependencies": {
"@sindresorhus/tsconfig": "^2.0.0",
"@types/node": "^17.0.21",
"@types/react": "^17.0.40",
"typescript": "^4.6.2",
"vite": "^2.8.6"
},
"dependencies": {
"ink": "^3.2.0",
"meow": "^10.1.2",
"mongoose": "^6.2.7",
"react": "^17.0.2"
}
}

14
cli-legacy/post-build.mjs Normal file
View File

@@ -0,0 +1,14 @@
import { readFileSync, writeFileSync } from "fs";
const contents = readFileSync("build/monitor-cli.js").toString();
writeFileSync("build/monitor-cli.js", "#!/usr/bin/env node\n" + contents);
const rawpkg = readFileSync("package.json");
const pkgjson = JSON.parse(rawpkg);
delete pkgjson.devDependencies;
delete pkgjson.scripts;
// delete pkgjson.dependencies["@monitor/util"];
pkgjson.bin = "monitor-cli.js";
writeFileSync("build/package.json", JSON.stringify(pkgjson, undefined, 2));

View File

@@ -15,10 +15,7 @@ const App = () => {
const [current, next, prev] = useSequence();
const [periphery, setPeriphery] = useState<boolean>();
const [installing, setInstalling] = useState(false);
const [config, setConfig] = useConfig<Config>({
mongoURL: "",
registryURL: "",
});
const [config, setConfig] = useConfig<Config>({});
const corePages: ReactNode[] = [
<Mongo setConfig={setConfig} next={next} />,

View File

@@ -14,6 +14,7 @@ const Mongo = ({
}) => {
const [setup, setSetup] = useState<boolean>();
const [mongoURL, setMongoUrl] = useState("mongodb://127.0.0.1:27017/monitor");
const [monitorManaged, setMonitorManaged] = useState(false);
const [confirm, setConfirm] = useState(false);
const blinker = useBlinker();

View File

@@ -0,0 +1,27 @@
import { Box, Newline, Text } from "ink";
import React, { ReactNode } from "react";
import Selector from "./Selector";
const LabelledSelector = ({
label,
items,
onSelect,
direction = "horizontal",
labelColor = "green"
}: {
label: ReactNode;
labelColor?: "green" | "white";
items: string[];
onSelect?: (item: string, index: number) => void;
direction?: "vertical" | "horizontal"
}) => {
return (
<Box flexDirection={direction === "horizontal" ? "row" : "column"}>
{typeof label === "string" ? <Text color={labelColor}>{label} </Text> : label}
{direction === "vertical" && <Newline />}
<Selector items={items} onSelect={onSelect} />
</Box>
);
};
export default LabelledSelector;

View File

@@ -0,0 +1,31 @@
import React, { useState } from "react";
import { Box, Text, useInput } from "ink";
const Selector = (p: {
items: string[];
onSelect?: (item: string, i: number) => void;
}) => {
const [highlighted, setHighlighted] = useState(0);
useInput((_, key) => {
if (key.upArrow) {
setHighlighted(Math.max(highlighted - 1, 0));
} else if (key.downArrow) {
setHighlighted(Math.min(highlighted + 1, p.items.length - 1));
} else if (key.return) {
if (p.onSelect) p.onSelect(p.items[highlighted]!, highlighted);
}
});
return (
<Box flexDirection="column">
{p.items.map((item, i) => {
return (
<Text key={i} color={i === highlighted ? "green" : "white"}>
{i === highlighted ? ">" : " "} {item}
</Text>
);
})}
</Box>
);
};
export default Selector;

View File

@@ -0,0 +1,37 @@
import React, { ReactNode } from "react";
import LabelledSelector from "./LabelledSelector";
const YesNo = ({
label,
onYes,
onNo,
onSelect,
direction,
labelColor
}: {
label: ReactNode;
onYes?: () => void;
onNo?: () => void;
onSelect?: (res: "yes" | "no") => void;
direction?: "vertical" | "horizontal";
labelColor?: "green" | "white"
}) => {
return (
<LabelledSelector
label={label}
items={["yes", "no"]}
onSelect={(item) => {
if (item === "yes") {
onYes && onYes();
} else {
onNo && onNo();
}
onSelect && onSelect(item as "yes" | "no");
}}
direction={direction}
labelColor={labelColor}
/>
);
};
export default YesNo;

View File

@@ -1,11 +1,7 @@
import { StartConfig } from "../../types";
import { execute } from "../execute";
export async function startMongo(
name: string,
port: number,
volume: string | false,
restart: string
) {
export async function startMongo({ name, port, volume, restart }: StartConfig) {
const command = `docker run -d --name ${name} -p ${port}:27017${
volume ? ` -v ${volume}:/data/db` : ""
} --restart ${restart} mongo:latest`;

View File

@@ -0,0 +1,19 @@
import { CORE_IMAGE } from "../../config";
import { Config } from "../../types";
import { execute } from "../execute";
import { toDashedName } from "../general";
export async function startMonitorCore({
monitorCore: { name, secretVolume, hostNetwork, port },
mongo: { url: mongoURL },
registry: { url: registryURL },
}: Config) {
const nameConfig = `--name ${toDashedName(name)}`;
const env = `-e MONGO_URL=${mongoURL}${
registryURL ? ` -e REGISTRY_URL=${registryURL}` : ""
}`;
const volume = `-v ${secretVolume}:/secrets`;
const network = hostNetwork ? `--network=\"host\"${port ? ` -e PORT=${port}` : ""}` : `-p ${port}:9000`;
const command = `docker run -d ${nameConfig} ${volume} ${network} ${env} ${CORE_IMAGE}`;
return await execute(command);
}

View File

@@ -0,0 +1,14 @@
import { StartConfig } from "../../types";
import { execute } from "../execute";
export async function startRegistry({
name,
port,
volume,
restart,
}: StartConfig) {
const command = `docker run -d --name ${name} -p ${port}:5000${
volume ? ` -v ${volume}:/var/lib/registry` : ""
} --restart ${restart} registry:2`;
return await execute(command);
}

View File

@@ -0,0 +1,114 @@
import { CommandLogError } from "@monitor/types";
import { execute } from "./execute";
export type InstallLog = {
stage: string;
log: CommandLogError;
};
export async function installDockerUbuntu(
onCommandEnd: (log: InstallLog) => void,
systemCtlEnable?: boolean
) {
const total = 6 + (systemCtlEnable ? 1 : 0);
const update = await execute("sudo apt-get update");
if (update.isError) return {
stage: "error updating system",
log: update
};
onCommandEnd({
stage: `updated system (1 of ${total})`,
log: update,
});
const installDeps = await execute(`
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
`);
if (installDeps.isError) return {
stage: "error installing dependencies",
log: installDeps
};
onCommandEnd({
stage: `installed dependencies (2 of ${total})`,
log: installDeps,
});
const addKey = await execute(
"curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg"
);
if (addKey.isError) return {
stage: "error adding docker key",
log: addKey,
};
onCommandEnd({
stage: `added docker key (3 of ${total})`,
log: addKey,
});
const setStableRepository = await execute(`
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
`);
if (setStableRepository.isError) return {
stage: "error adding stable repository",
log: setStableRepository,
};
onCommandEnd({
stage: `set docker stable repository (4 of ${total})`,
log: setStableRepository,
});
const installDocker = await execute(
"sudo apt-get udpate && sudo apt-get install docker-ce docker-ce-cli containerd.io"
);
if (installDocker.isError) return {
stage: "error installing docker",
log: installDocker,
};
onCommandEnd({
stage: `installed docker (5 of ${total})`,
log: installDocker,
});
const addUser = await execute(
"sudo groupadd docker && sudo usermod -aG docker $USER && newgrp docker"
);
if (addUser.isError)
return {
stage: "error adding user to docker group",
log: addUser,
};
onCommandEnd({
stage: `added user to docker user group (6 of ${total})`,
log: addUser,
});
if (systemCtlEnable) {
const startOnBoot = await execute(
"sudo systemctl enable docker.service && sudo systemctl enable containerd.service"
);
if (startOnBoot.isError) return {
stage: "error configuring to start on boot",
log: startOnBoot,
};
onCommandEnd({
stage: `configured to start on boot (7 of ${total})`,
log: startOnBoot,
});
}
return;
}
export async function checkDockerNotInstalled() {
const res = await execute("docker ps");
return res.isError
}

View File

@@ -0,0 +1,24 @@
import { exec } from "child_process";
import { promisify } from "util";
import { CommandLogError } from "@monitor/types";
export const pExec = promisify(exec);
export async function execute(
command: string,
commandForLog?: string
): Promise<CommandLogError> {
try {
return {
command,
log: await pExec(command),
isError: false,
};
} catch (err) {
return {
command: commandForLog || command,
log: { stderr: JSON.stringify(err) },
isError: true,
};
}
}

41
cli-legacy/src/types.d.ts vendored Normal file
View File

@@ -0,0 +1,41 @@
export type Config = {
monitorCore?: {
name: string;
secretVolume: string; // to mount secrets.json into the container
hostNetwork?: boolean;
port?: number;
};
monitorPeriphery?: {
name: string;
hostNetwork?: boolean;
port?: number;
};
mongo?: {
url: string;
deploymentConfig?: {
// if mongo container already exists locally running on docker and should be added as a monitor managed deployment
};
startConfig?: StartConfig;
};
registry?: {
exists: boolean; // if this is false, dont use a registry and builds will be disabled
url?: string;
deploymentConfig?: {};
startConfig?: StartConfig;
};
};
export type StartConfig = {
// if this is attached, the cli will start container with this config and add
name: string;
port: number;
volume: string | false;
restart: string;
};
export type SetConfig = (
field: keyof Config,
val: string | number | boolean
) => void;
export type Next = () => void;

View File

@@ -0,0 +1,15 @@
import { readFileSync, writeFileSync } from "fs";
const rawpkg = readFileSync("package.json");
const pkgjson = JSON.parse(rawpkg);
const [major, minor, increment] = pkgjson.version
.split(".")
.map((item) => Number(item));
pkgjson.version = `${major}.${minor}.${increment + 1}`
writeFileSync(
"package.json",
JSON.stringify(pkgjson, undefined, 2)
);

12
cli-legacy/vite.config.ts Normal file
View File

@@ -0,0 +1,12 @@
import { defineConfig } from "vite";
export default defineConfig({
build: {
outDir: "build",
target: "esnext",
ssr: "./src/monitor-cli.tsx",
rollupOptions: {
input: "./src/monitor-cli.tsx",
},
},
});

View File

@@ -1,28 +1,20 @@
{
"name": "@mbecker20/monitor-cli",
"version": "0.0.3",
"description": "A CLI to aid in the setup of monitor",
"bin": "cli.js",
"author": "mbecker20",
"license": "MIT",
"bin": "build/monitor-cli.js",
"engines": {
"node": ">=10"
},
"scripts": {
"start": "yarn build && build/monitor-cli.js",
"build": "vite build && node post-build.mjs && chmod +x build/monitor-cli.js",
"publish-cli": "yarn build && cd build && npm publish --access=public && node update-version.mjs"
"dependencies": {
"ink": "^3.2.0",
"mongoose": "^6.2.7",
"react": "^17.0.2"
},
"devDependencies": {
"@sindresorhus/tsconfig": "^2.0.0",
"@types/node": "^17.0.21",
"@types/react": "^17.0.40",
"typescript": "^4.6.2",
"vite": "^2.8.6"
},
"dependencies": {
"ink": "^3.2.0",
"meow": "^10.1.2",
"mongoose": "^6.2.7",
"react": "^17.0.2"
"vite": "^2.8.6",
"@monitor/types": "1.0.0"
}
}

View File

@@ -1,14 +1,13 @@
import { readFileSync, writeFileSync } from "fs";
const contents = readFileSync("build/monitor-cli.js").toString();
writeFileSync("build/monitor-cli.js", "#!/usr/bin/env node\n" + contents);
const contents = readFileSync("build/cli.js").toString();
writeFileSync("build/cli.js", "#!/usr/bin/env node\n" + contents);
const rawpkg = readFileSync("package.json");
const pkgjson = JSON.parse(rawpkg);
const pkgjson = JSON.parse(readFileSync("package.json"));
delete pkgjson.devDependencies;
delete pkgjson.scripts;
// delete pkgjson.dependencies["@monitor/util"];
pkgjson.bin = "monitor-cli.js";
// pkgjson.bin = "cli.js";
writeFileSync("build/package.json", JSON.stringify(pkgjson, undefined, 2));

14
cli/src/cli.tsx Normal file
View File

@@ -0,0 +1,14 @@
import React from "react";
import { render } from "ink";
import { Box } from "ink";
import { checkDockerNotInstalled } from "./helpers/docker";
const App = () => {
return <Box></Box>;
};
export let dockerNotInstalled = true;
checkDockerNotInstalled().then((res) => {
dockerNotInstalled = res;
render(<App />);
});

View File

@@ -1,16 +0,0 @@
import { CORE_IMAGE } from "../../config";
import { Config } from "../../types";
import { execute } from "../execute";
export async function startMonitorCore({
monitorCore: {
},
mongo: { url: mongoURL },
registry: { url: registryURL },
}: Config) {
const command = `docker run -d --name monitor-core -e MONGO_URL=${mongoURL}${
registryURL ? ` -e REGISTRY_URL=${registryURL}` : ""
} ${CORE_IMAGE}`;
return await execute(command);
}

View File

@@ -1,13 +0,0 @@
import { execute } from "../execute";
export async function startRegistry(
name: string,
port: number,
volume: string | false,
restart: string
) {
const command = `docker run -d --name ${name} -p ${port}:5000${
volume ? ` -v ${volume}:/var/lib/registry` : ""
} --restart ${restart} registry:2`;
return await execute(command);
}

View File

@@ -12,15 +12,15 @@ export async function installDockerUbuntu(
) {
const total = 6 + (systemCtlEnable ? 1 : 0);
const update = await execute("sudo apt-get update");
if (update.isError) return {
stage: "error updating system",
log: update
};
onCommandEnd({
if (update.isError)
return {
stage: "error updating system",
log: update,
};
onCommandEnd({
stage: `updated system (1 of ${total})`,
log: update,
});
const installDeps = await execute(`
sudo apt-get install \
@@ -29,38 +29,39 @@ export async function installDockerUbuntu(
gnupg \
lsb-release
`);
if (installDeps.isError) return {
stage: "error installing dependencies",
log: installDeps
};
onCommandEnd({
if (installDeps.isError)
return {
stage: "error installing dependencies",
log: installDeps,
};
onCommandEnd({
stage: `installed dependencies (2 of ${total})`,
log: installDeps,
});
const addKey = await execute(
"curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg"
);
if (addKey.isError) return {
stage: "error adding docker key",
log: addKey,
};
onCommandEnd({
if (addKey.isError)
return {
stage: "error adding docker key",
log: addKey,
};
onCommandEnd({
stage: `added docker key (3 of ${total})`,
log: addKey,
});
const setStableRepository = await execute(`
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
`);
if (setStableRepository.isError) return {
stage: "error adding stable repository",
log: setStableRepository,
};
if (setStableRepository.isError)
return {
stage: "error adding stable repository",
log: setStableRepository,
};
onCommandEnd({
stage: `set docker stable repository (4 of ${total})`,
log: setStableRepository,
@@ -69,10 +70,11 @@ export async function installDockerUbuntu(
const installDocker = await execute(
"sudo apt-get udpate && sudo apt-get install docker-ce docker-ce-cli containerd.io"
);
if (installDocker.isError) return {
stage: "error installing docker",
log: installDocker,
};
if (installDocker.isError)
return {
stage: "error installing docker",
log: installDocker,
};
onCommandEnd({
stage: `installed docker (5 of ${total})`,
log: installDocker,
@@ -95,10 +97,11 @@ export async function installDockerUbuntu(
const startOnBoot = await execute(
"sudo systemctl enable docker.service && sudo systemctl enable containerd.service"
);
if (startOnBoot.isError) return {
stage: "error configuring to start on boot",
log: startOnBoot,
};
if (startOnBoot.isError)
return {
stage: "error configuring to start on boot",
log: startOnBoot,
};
onCommandEnd({
stage: `configured to start on boot (7 of ${total})`,
log: startOnBoot,
@@ -109,6 +112,6 @@ export async function installDockerUbuntu(
}
export async function checkDockerNotInstalled() {
const res = await execute("docker ps");
return res.isError
const res = await execute("docker ps");
return res.isError;
}

38
cli/src/types.d.ts vendored
View File

@@ -1,29 +1,41 @@
export type Config = {
monitorCore: {
name: string;
};
mongo: {
monitorCore?: {
name: string;
secretVolume: string; // to mount secrets.json into the container
hostNetwork?: boolean;
port?: number;
};
monitorPeriphery?: {
name: string;
hostNetwork?: boolean;
port?: number;
};
mongo?: {
url: string;
deploymentConfig?: {
// if mongo container already exists locally running on docker and should be added as a monitor managed deployment
};
startConfig?: {
// if this is attached, the cli will start container with this config and add
};
startConfig?: StartConfig;
};
registry: {
registry?: {
exists: boolean; // if this is false, dont use a registry and builds will be disabled
url?: string;
deploymentConfig?: {};
startConfig?: {};
startConfig?: StartConfig;
};
};
export type StartConfig = {
// if this is attached, the cli will start container with this config and add
name: string;
port: number;
volume: string | false;
restart: string;
};
export type SetConfig = (
domain: keyof Config,
field: keyof Config[keyof Config],
val: string | number | boolean
field: keyof Config,
val: string | number | boolean
) => void;
export type Next = () => void;

View File

@@ -1,7 +1,6 @@
import { readFileSync, writeFileSync } from "fs";
const rawpkg = readFileSync("package.json");
const pkgjson = JSON.parse(rawpkg);
const pkgjson = JSON.parse(readFileSync("package.json"));
const [major, minor, increment] = pkgjson.version
.split(".")

View File

@@ -8,7 +8,7 @@ import {
export const CORE_SERVER_NAME = getStringFromEnv("CORE_SERVER_NAME", "Monitor Core");
export const SECRETS = readJSONFile("/secrets/secrets.json");
export const LOGGER = getBooleanFromEnv("LOGGER", true);
export const PORT = getNumberFromEnv("PORT", 8000);
export const PORT = getNumberFromEnv("PORT", 9000);
export const HOST = getStringFromEnv("HOST", "http://localhost:" + PORT);
export const MONGO_URL = getStringFromEnv(
"MONGO_URL",

287
yarn.lock
View File

@@ -9,7 +9,7 @@
dependencies:
"@jridgewell/trace-mapping" "^0.3.0"
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7":
"@babel/code-frame@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789"
integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==
@@ -385,11 +385,6 @@
semver "^7.3.5"
tar "^6.1.11"
"@sindresorhus/tsconfig@^2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@sindresorhus/tsconfig/-/tsconfig-2.0.0.tgz#610e1cb8ed4e1cb7ff0cb4cb8712cd607315c152"
integrity sha512-1nsyWtFtPpVjEnNzp2rd03BVz84BYHeW7LNYvmcj3q4jAgJL2hl0XBp3WmDFFPjFLF3w+L0XEYqhjWUTU+TCzw==
"@swc/core-android-arm-eabi@1.2.156":
version "1.2.156"
resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.156.tgz#4d4cc38d5071b74c7f55ddc5e0931a2cd3bcc530"
@@ -504,21 +499,11 @@
dependencies:
"@types/node" "*"
"@types/minimist@^1.2.2":
version "1.2.2"
resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c"
integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==
"@types/node@*", "@types/node@^17.0.21":
version "17.0.21"
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.21.tgz#864b987c0c68d07b4345845c3e63b75edd143644"
integrity sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==
"@types/normalize-package-data@^2.4.0":
version "2.4.1"
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301"
integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==
"@types/prop-types@*":
version "15.7.4"
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11"
@@ -659,11 +644,6 @@ are-we-there-yet@^2.0.0:
delegates "^1.0.0"
readable-stream "^3.6.0"
arrify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
asn1.js@^5.3.0:
version "5.4.1"
resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07"
@@ -803,21 +783,6 @@ buffer@^5.5.0, buffer@^5.6.0:
base64-js "^1.3.1"
ieee754 "^1.1.13"
camelcase-keys@^7.0.0:
version "7.0.2"
resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-7.0.2.tgz#d048d8c69448745bb0de6fc4c1c52a30dfbe7252"
integrity sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==
dependencies:
camelcase "^6.3.0"
map-obj "^4.1.0"
quick-lru "^5.1.1"
type-fest "^1.2.1"
camelcase@^6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
caniuse-lite@^1.0.30001313:
version "1.0.30001315"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001315.tgz#f1b1efd1171ee1170d52709a7252632dacbd7c77"
@@ -976,24 +941,6 @@ debug@4, debug@4.x, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1:
dependencies:
ms "2.1.2"
decamelize-keys@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9"
integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=
dependencies:
decamelize "^1.1.0"
map-obj "^1.0.0"
decamelize@^1.1.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
decamelize@^5.0.0:
version "5.0.1"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-5.0.1.tgz#db11a92e58c741ef339fb0a2868d8a06a9a7b1e9"
integrity sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==
deepmerge@^4.2.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
@@ -1086,13 +1033,6 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1:
dependencies:
once "^1.4.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"
esbuild-android-64@0.14.25:
version "0.14.25"
resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.25.tgz#d532d38cb5fe0ae45167ce35f4bbc784c636be40"
@@ -1415,14 +1355,6 @@ find-my-way@^4.5.0:
safe-regex2 "^2.0.0"
semver-store "^0.3.0"
find-up@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
dependencies:
locate-path "^6.0.0"
path-exists "^4.0.0"
flatstr@^1.0.12:
version "1.0.12"
resolved "https://registry.yarnpkg.com/flatstr/-/flatstr-1.0.12.tgz#c2ba6a08173edbb6c9640e3055b95e287ceb5931"
@@ -1521,11 +1453,6 @@ graceful-fs@^4.1.6, graceful-fs@^4.2.0:
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
hard-rejection@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883"
integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==
has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
@@ -1553,13 +1480,6 @@ helmet@^5.0.1:
resolved "https://registry.yarnpkg.com/helmet/-/helmet-5.0.2.tgz#3264ec6bab96c82deaf65e3403c369424cb2366c"
integrity sha512-QWlwUZZ8BtlvwYVTSDTBChGf8EOcQ2LkGMnQJxSzD1mUu8CCjXJZq/BXP8eWw4kikRnzlhtYo3lCk0ucmYA3Vg==
hosted-git-info@^4.0.1:
version "4.1.0"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224"
integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==
dependencies:
lru-cache "^6.0.0"
html-entities@2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488"
@@ -1605,11 +1525,6 @@ indent-string@^4.0.0:
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
indent-string@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-5.0.0.tgz#4fd2980fccaf8622d14c64d694f4cf33c81951a5"
integrity sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
@@ -1662,11 +1577,6 @@ ipaddr.js@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-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-ci@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
@@ -1674,7 +1584,7 @@ is-ci@^2.0.0:
dependencies:
ci-info "^2.0.0"
is-core-module@^2.5.0, is-core-module@^2.8.1:
is-core-module@^2.8.1:
version "2.8.1"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211"
integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==
@@ -1686,11 +1596,6 @@ is-fullwidth-code-point@^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-plain-obj@^1.1.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-what@^4.1.6:
version "4.1.7"
resolved "https://registry.yarnpkg.com/is-what/-/is-what-4.1.7.tgz#c41dc1d2d2d6a9285c624c2505f61849c8b1f9cc"
@@ -1706,11 +1611,6 @@ jsesc@^2.5.1:
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
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"
@@ -1742,11 +1642,6 @@ kareem@2.3.4:
resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.3.4.tgz#b38c436fb4758775d919b2828b4009db59b52694"
integrity sha512-Vcrt8lcpVl0s8ePx634BxwRqmFo+5DcOhlmNadehxreMTIQi/9hOL/B3hZQQbK5DgMS7Lem3xABXV7/S3jy+7g==
kind-of@^6.0.3:
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==
light-my-request@^4.2.0:
version "4.8.0"
resolved "https://registry.yarnpkg.com/light-my-request/-/light-my-request-4.8.0.tgz#b0bd074902f95814a956819bc2b6c99d8cafcefb"
@@ -1757,18 +1652,6 @@ light-my-request@^4.2.0:
process-warning "^1.0.0"
set-cookie-parser "^2.4.1"
lines-and-columns@^1.1.6:
version "1.2.4"
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
locate-path@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
dependencies:
p-locate "^5.0.0"
lodash@^4.17.20:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
@@ -1795,39 +1678,11 @@ make-dir@^3.1.0:
dependencies:
semver "^6.0.0"
map-obj@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
map-obj@^4.1.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a"
integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==
memory-pager@^1.0.2:
version "1.5.0"
resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5"
integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==
meow@^10.1.2:
version "10.1.2"
resolved "https://registry.yarnpkg.com/meow/-/meow-10.1.2.tgz#62951cb69afa69594142c8250806bc30a3912e4d"
integrity sha512-zbuAlN+V/sXlbGchNS9WTWjUzeamwMt/BApKCJi7B0QyZstZaMx0n4Unll/fg0njGtMdC9UP5SAscvOCLYdM+Q==
dependencies:
"@types/minimist" "^1.2.2"
camelcase-keys "^7.0.0"
decamelize "^5.0.0"
decamelize-keys "^1.1.0"
hard-rejection "^2.1.0"
minimist-options "4.1.0"
normalize-package-data "^3.0.2"
read-pkg-up "^8.0.0"
redent "^4.0.0"
trim-newlines "^4.0.2"
type-fest "^1.2.2"
yargs-parser "^20.2.9"
merge-anything@^5.0.2:
version "5.0.2"
resolved "https://registry.yarnpkg.com/merge-anything/-/merge-anything-5.0.2.tgz#b023af9b8f48e2fc71eb859d4ad834ba667f4150"
@@ -1846,11 +1701,6 @@ mimic-fn@^2.1.0:
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
min-indent@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
minimalistic-assert@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
@@ -1863,15 +1713,6 @@ minimatch@^3.0.4:
dependencies:
brace-expansion "^1.1.7"
minimist-options@4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619"
integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==
dependencies:
arrify "^1.0.1"
is-plain-obj "^1.1.0"
kind-of "^6.0.3"
minimist@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
@@ -2016,16 +1857,6 @@ nopt@^5.0.0:
dependencies:
abbrev "1"
normalize-package-data@^3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e"
integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==
dependencies:
hosted-git-info "^4.0.1"
is-core-module "^2.5.0"
semver "^7.3.4"
validate-npm-package-license "^3.0.1"
npmlog@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0"
@@ -2067,40 +1898,18 @@ onetime@^5.1.0:
dependencies:
mimic-fn "^2.1.0"
p-limit@^3.0.2, p-limit@^3.1.0:
p-limit@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
dependencies:
yocto-queue "^0.1.0"
p-locate@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
dependencies:
p-limit "^3.0.2"
parse-json@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
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"
patch-console@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/patch-console/-/patch-console-1.0.0.tgz#19b9f028713feb8a3c023702a8cc8cb9f7466f9d"
integrity sha512-nxl9nrnLQmh64iTzMfyylSlRozL7kAXIaxw1fVcLYdyhNkJCRUzirRZTikXGJsg+hc4fqpneTK6iU2H1Q8THSA==
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"
@@ -2179,11 +1988,6 @@ quick-format-unescaped@^4.0.3:
resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7"
integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==
quick-lru@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
range-parser@~1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
@@ -2214,25 +2018,6 @@ react@^17.0.2:
loose-envify "^1.1.0"
object-assign "^4.1.1"
read-pkg-up@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-8.0.0.tgz#72f595b65e66110f43b052dd9af4de6b10534670"
integrity sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==
dependencies:
find-up "^5.0.0"
read-pkg "^6.0.0"
type-fest "^1.0.1"
read-pkg@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-6.0.0.tgz#a67a7d6a1c2b0c3cd6aa2ea521f40c458a4a504c"
integrity sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==
dependencies:
"@types/normalize-package-data" "^2.4.0"
normalize-package-data "^3.0.2"
parse-json "^5.2.0"
type-fest "^1.0.1"
readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
@@ -2242,14 +2027,6 @@ readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
redent@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/redent/-/redent-4.0.0.tgz#0c0ba7caabb24257ab3bb7a4fd95dd1d5c5681f9"
integrity sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==
dependencies:
indent-string "^5.0.0"
strip-indent "^4.0.0"
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"
@@ -2353,7 +2130,7 @@ semver@^6.0.0, semver@^6.3.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
semver@^7.3.2, semver@^7.3.4, semver@^7.3.5:
semver@^7.3.2, semver@^7.3.5:
version "7.3.5"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
@@ -2481,32 +2258,6 @@ sparse-bitfield@^3.0.3:
dependencies:
memory-pager "^1.0.2"
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.11"
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95"
integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==
split-ca@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/split-ca/-/split-ca-1.0.1.tgz#6c83aff3692fa61256e0cd197e05e9de157691a6"
@@ -2579,13 +2330,6 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
dependencies:
ansi-regex "^5.0.1"
strip-indent@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-4.0.0.tgz#b41379433dd06f5eae805e21d631e07ee670d853"
integrity sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==
dependencies:
min-indent "^1.0.1"
supports-color@^5.3.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
@@ -2665,11 +2409,6 @@ tr46@~0.0.3:
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
trim-newlines@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-4.0.2.tgz#d6aaaf6a0df1b4b536d183879a6b939489808c7c"
integrity sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew==
ts-toolbelt@^9.6.0:
version "9.6.0"
resolved "https://registry.yarnpkg.com/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz#50a25426cfed500d4a09bd1b3afb6f28879edfd5"
@@ -2690,11 +2429,6 @@ type-fest@^0.21.3:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
type-fest@^1.0.1, type-fest@^1.2.1, type-fest@^1.2.2:
version "1.4.0"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1"
integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==
typescript@^4.6.2:
version "4.6.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.2.tgz#fe12d2727b708f4eef40f51598b3398baa9611d4"
@@ -2717,14 +2451,6 @@ util-deprecate@^1.0.1:
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
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"
vary@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
@@ -2829,11 +2555,6 @@ yallist@^4.0.0:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
yargs-parser@^20.2.9:
version "20.2.9"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
yocto-queue@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"