├── .gitignore
├── .npmignore
├── examples
└── index.tsx
├── package.json
├── readme.md
├── src
├── Client.tsx
├── Command.ts
├── CommonInhibitors.ts
├── Event.ts
├── Shortcuts.ts
├── Token.ts
├── context.ts
├── index.ts
├── start.ts
└── util.ts
├── tsconfig.json
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 | .idea
4 | .vscode
5 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | example
2 | .idea
3 | .vscode
4 | dist
5 |
--------------------------------------------------------------------------------
/examples/index.tsx:
--------------------------------------------------------------------------------
1 | import * as React from "react";
2 |
3 | import {
4 | Client,
5 | Command,
6 | Token,
7 | start,
8 | CommonInhibitors,
9 | author,
10 | channelName,
11 | } from "../src";
12 |
13 | import { TextChannel } from "discord.js";
14 |
15 | function App() {
16 | return (
17 | {
20 | console.log(
21 | `[ERROR][c:${message.channel.id}, m:${message.id}]: ${error.message}`
22 | );
23 | }}
24 | >
25 |
30 | hello {(msg) => msg.author.tag}
31 |
32 |
37 | {(_msg, ...args) => args.join(" ")}
38 | {(message) => (message.channel as TextChannel).name}
39 |
40 | msg.reply("Hello world")}
44 | />
45 |
46 | Hello {{ author }}, I hope you like this {{ channelName }}
47 |
48 | console.log(`Logging in as ${client.user?.tag}`)}
51 | onReady={(client) => console.log(`Ready as ${client.user?.tag}`)}
52 | />
53 |
54 | );
55 | }
56 |
57 | start();
58 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "discord-jsx",
3 | "version": "1.0.17",
4 | "main": "dist/index.js",
5 | "types": "dist/index.d.ts",
6 | "author": "Alistair Smith",
7 | "license": "MIT",
8 | "scripts": {
9 | "build": "rimraf dist&&tsc",
10 | "prepare": "yarn build"
11 | },
12 | "files": [
13 | "dist",
14 | "package.json",
15 | "readme.md"
16 | ],
17 | "devDependencies": {
18 | "@types/node": "^14.14.5",
19 | "@types/react": "^16.9.53",
20 | "eslint": "^7.12.0",
21 | "prettier": "^2.1.2",
22 | "rimraf": "^3.0.2",
23 | "typescript": "^4.0.5"
24 | },
25 | "dependencies": {
26 | "discord.js": "^12.4.1",
27 | "react": "^17.0.1",
28 | "react-nil": "^0.0.3",
29 | "scheduler": "^0.20.1"
30 | },
31 | "repository": {
32 | "url": "https://github.com/alii/discord-jsx",
33 | "type": "git"
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | # `discord-jsx`
2 |
3 | ### Installation
4 |
5 | ```
6 | yarn add discord-jsx
7 | ```
8 |
9 | ### Usage
10 |
11 | ##### View the example in [examples](examples/index.tsx)
12 |
13 | ## API
14 |
15 | ## Components
16 |
17 | ### ``
18 |
19 | | _prop_ | prefix | onError? |
20 | | ----------- | --------------------- | --------------------------- |
21 | | _type_ | string | `(error: Error) => unknown` |
22 | | Description | The prefix of the bot | An error handler |
23 |
24 | This is the most fundamental part of any `discord-jsx` application. It is the internal `Provider` for the discord.js `Client` under the hood, as well as prefix among other things.
25 |
26 | ### ``
27 |
28 | | _prop_ | token | onReady | onLogin? |
29 | | ----------- | ------------- | ----------------------------- | ----------------------------- |
30 | | _type_ | string | `(client: Client) => unknown` | `(client: Client) => unknown` |
31 | | Description | The bot token | Ready event shorthand | Login event shorthand |
32 |
33 | This component will run `client.login()` under the hood, and is the starting point for any `discord-jsx` client.
34 |
35 | ### ``
36 |
37 | | _prop_ | name | description | inhibitors? | handler? | children? |
38 | | ----------- | ----------------------- | ----------------------------------------- | -------------------------------- | -------------------------------------------------- | ------------------------------ |
39 | | _type_ | string | string | `Inhibitor[]` | `(message: Message, ...args: string[]) => unknown` | Read below |
40 | | Description | The name of the command | The description of what this command does | Optional inhibitors (Read below) | Optional handler function (Read below) | Optional children (Read below) |
41 |
42 | The `Command` component is very versatile when not using a `handler` function prop. It supports three main types of children. Text (string or number), a Shortcut (we'll come on to that later), or a custom function that takes 0-2 arguments.
43 |
44 | For instance, we can pass regular text as a simple reply. E.g.
45 |
46 | ```tsx
47 |
48 | This would be the example reply.
49 |
50 | ```
51 |
52 | However, we can do much more with Shortcuts. As the name implies, these are shorter ways to template a message. `discord-jsx` has a few built in. Currently, they are `author` and `channelName`. You can use shortcuts in a handlebars-style syntax. E.g.
53 |
54 | ```tsx
55 |
59 | Hello, {{ author }}. You sent a message in {{ channelName }}.
60 |
61 | ```
62 |
63 | Under the hood, these are actually valid JavaScript objects, and we just call the first property. A shortcut is simply a function that takes a `Message` as the first argument and always returns a string. Because of this, it's easy to build your own and reuse them as you please.
64 |
65 | Secondly, `Command` also accepts a function that takes 0-2 argument. Similar to a `Shortcut` however this time, they can be async. This allows for database calls etc to be executed. E.g.
66 |
67 | ```tsx
68 | // An example function
69 | async function getFavouriteFood(discordId: string): Promise {
70 | const user = await database.getUserByDiscord(discordId);
71 | return user.favouriteFood;
72 | }
73 |
74 |
78 | Hello {{ author }}. Your favourite food is{" "}
79 | {(msg) => getFavouriteFood(msg.author.id)}.
80 | ;
81 | ```
82 |
83 | And an example using the second argument (message args)
84 |
85 | ```tsx
86 |
87 | {(msg, ...args) => arg.join(" ")}
88 |
89 | ```
90 |
91 | ### ``
92 |
93 | | _prop_ | event | handler |
94 | | ----------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------ |
95 | | _type_ | [`keyof ClientEvents`](https://discord.js.org/#/docs/main/stable/class/Client) | Function that accepts the params referenced in the list of client events |
96 | | Description | The event name | The handler for this event |
97 |
98 | This is a component for listening to custom Discord.js Client events. It's fairly self-explanatory. Here's a couple examples:
99 |
100 | ```tsx
101 | console.log(message.content)} />
102 | console.log(`Client joined ${guild.name}`)} />
103 | ```
104 |
105 | ## Hooks
106 |
107 | If you want to use the client in your own hook, you can use `useClientContext` which returns [`ClientContext`](./src/context.ts) – an object containing the `Client` and `prefix`.
108 |
109 | For example:
110 |
111 | ```tsx
112 | // Custom hook to check if a string starts with the current prefix
113 | function useIsCommand(content: string): boolean {
114 | const context = useClientContext();
115 | return content.startsWith(context.prefix);
116 | }
117 | ```
118 |
119 | ## Inhibitors
120 |
121 | Stolen from [cookiecord](https://github.com/cookiecord/cookiecord), inhibitors are a way of preventing a command from executing when a specific condition isn't met.
122 |
123 | They are very easy to make, and we provide a couple from the constant `CommonInhibitors`. You use them in a `` component, documented above.
124 |
125 | For example:
126 |
127 | ```tsx
128 | // A command that will only run in a guild
129 |
130 |
131 | ```
132 |
133 | To build an inhibitor, you can import the `Inhibitor` type. Inhibitors stop execution just by throwing a regular error. The error gets caught, and the message is echoed to the channel where the inhibition rose.
134 |
135 | ##### This project is very experimental, don't use it in production... please.....
136 |
--------------------------------------------------------------------------------
/src/Client.tsx:
--------------------------------------------------------------------------------
1 | import { Client as DiscordClient, ClientOptions } from "discord.js";
2 | import { Provider, ClientContext } from "./context";
3 | import * as React from "react";
4 |
5 | type ClientProps = {
6 | children: React.ReactNode;
7 | prefix: string;
8 | constructorOptions?: ClientOptions;
9 | onError?: ClientContext["onError"];
10 | allowLogging?: boolean;
11 | };
12 |
13 | export function Client(props: ClientProps): JSX.Element {
14 | return (
15 |
24 | {props.children}
25 |
26 | );
27 | }
28 |
--------------------------------------------------------------------------------
/src/Command.ts:
--------------------------------------------------------------------------------
1 | import { useClientContext } from "./context";
2 | import { Message } from "discord.js";
3 | import { useArguments, useCommand } from "./util";
4 | import { Inhibitor } from "./CommonInhibitors";
5 | import { Shortcut } from "./Shortcuts";
6 |
7 | type Child =
8 | | string
9 | | number
10 | | ((message: Message, ...args: string[]) => string | Promise)
11 | | Record;
12 |
13 | type CommandProps = {
14 | name: string;
15 | description: string;
16 | inhibitors?: Inhibitor[];
17 | } & (
18 | | { children: Child | Child[] }
19 | | { handler(message: Message, ...args: string[]): unknown }
20 | );
21 |
22 | export function Command(props: CommandProps): JSX.Element {
23 | const parseArguments = useArguments();
24 | const context = useClientContext();
25 |
26 | useCommand(async (message) => {
27 | const { command: commandName, args } = parseArguments(message);
28 |
29 | if (commandName !== props.name) {
30 | return;
31 | }
32 |
33 | if (message.author.id === context.client.user?.id) return;
34 |
35 | if (props.inhibitors) {
36 | for (const inhibitor of props.inhibitors) {
37 | try {
38 | await inhibitor(message);
39 | } catch (e) {
40 | return message.channel.send(
41 | `⚠️ **Command was inhibited**: ${e.message}`
42 | );
43 | }
44 | }
45 | }
46 |
47 | if ("children" in props) {
48 | try {
49 | const children: Child[] = Array.isArray(props.children)
50 | ? props.children
51 | : [props.children];
52 |
53 | const returnMessage = await children.reduce(async (_msg, child) => {
54 | const msg = await _msg;
55 |
56 | if (typeof child === "function") {
57 | return msg + (await child(message, ...args));
58 | }
59 |
60 | if (typeof child === "object") {
61 | const values = Object.values(child);
62 |
63 | if (values.length !== 1) {
64 | throw new Error(
65 | `Shortcut objects must only have one property. Found ${values.length} on ${child}`
66 | );
67 | }
68 |
69 | const [shortcut] = values;
70 |
71 | return msg + shortcut(message);
72 | }
73 |
74 | return msg + child.toString();
75 | }, Promise.resolve(""));
76 |
77 | await message.channel.send(returnMessage);
78 | } catch (e) {
79 | if ("onError" in context) {
80 | return context.onError(message, e);
81 | } else {
82 | await message.channel.send(`⚠ **An error occurred:** ${e.message}`);
83 | context.allowLogging && console.error(e);
84 | }
85 | } // uwu
86 | } else {
87 | try {
88 | await props.handler(message, ...args);
89 | } catch (e) {
90 | if ("onError" in context) {
91 | return context.onError(message, e);
92 | } else {
93 | await message.channel.send(`⚠ **An error occurred:** ${e.message}`);
94 | context.allowLogging && console.error(e);
95 | }
96 | }
97 | }
98 | });
99 |
100 | return null;
101 | }
102 |
--------------------------------------------------------------------------------
/src/CommonInhibitors.ts:
--------------------------------------------------------------------------------
1 | import { Message, Permissions } from "discord.js";
2 |
3 | /**
4 | * A function that will halt execution if an error is thrown
5 | */
6 | export type Inhibitor = (message: Message) => void | never;
7 |
8 | /**
9 | * Make this command executable by humans only
10 | * @param message
11 | */
12 | export const noBots: Inhibitor = (message) => {
13 | if (message.author.bot) {
14 | throw new Error("This command cannot be used by bots");
15 | }
16 | };
17 |
18 | /**
19 | * Make this command run in a guild only
20 | * @param message
21 | */
22 | export const guildsOnly: Inhibitor = (message) => {
23 | if (!message.guild) {
24 | throw new Error("This command can only be used in a server");
25 | }
26 | };
27 |
28 | /**
29 | * Make this command executable by guild admins only
30 | * @param message
31 | */
32 | export const guildAdminsOnly: Inhibitor = (message) => {
33 | if (!message.guild) {
34 | throw new Error("This command can only be used in a server");
35 | }
36 |
37 | if (!message.member) {
38 | throw new Error("Could not find member of message");
39 | }
40 |
41 | if (!message.member.permissions.has(Permissions.FLAGS.ADMINISTRATOR)) {
42 | throw new Error("You do not have permission to use this command");
43 | }
44 | };
45 |
46 | export const CommonInhibitors = {
47 | noBots,
48 | guildsOnly,
49 | guildAdminsOnly,
50 | } as const;
51 |
--------------------------------------------------------------------------------
/src/Event.ts:
--------------------------------------------------------------------------------
1 | import { ClientEvents } from "discord.js";
2 | import { useClientContext } from "./context";
3 |
4 | type EventProps = {
5 | event: Key;
6 | handler(...args: ClientEvents[Key]): void;
7 | };
8 |
9 | export function Event(
10 | props: EventProps
11 | ): JSX.Element {
12 | const context = useClientContext();
13 | context.client.on(props.event, (...args) => props.handler(...args));
14 | return null;
15 | }
16 |
--------------------------------------------------------------------------------
/src/Shortcuts.ts:
--------------------------------------------------------------------------------
1 | import { Message, TextChannel } from "discord.js";
2 |
3 | /**
4 | * A shortcut is a function that returns a specific bit of data from a message
5 | */
6 | export type Shortcut = (message: Message) => string | Promise;
7 |
8 | /**
9 | * Shortcut that returns the username#discriminator of the author of the message
10 | * @param message
11 | */
12 | export const author: Shortcut = (message) => message.author.tag;
13 |
14 | /**
15 | * Shortcut that returns the current channel name
16 | * @param message
17 | */
18 | export const channelName: Shortcut = (message) =>
19 | (message.channel as TextChannel).name;
20 |
--------------------------------------------------------------------------------
/src/Token.ts:
--------------------------------------------------------------------------------
1 | import { useClientContext } from "./context";
2 | import { useEffect } from "react";
3 | import { Client } from "discord.js";
4 |
5 | type TokenProps = {
6 | token: string;
7 | onReady(client: Client): void;
8 | onLogin?(client: Client): void;
9 | };
10 |
11 | export function Token(props: TokenProps): JSX.Element {
12 | const context = useClientContext();
13 |
14 | useEffect(() => {
15 | context.client.login(props.token).then(() => {
16 | if (props.onLogin) {
17 | props.onLogin(context.client);
18 | }
19 | });
20 |
21 | context.client.on("ready", () => props.onReady(context.client));
22 | }, []);
23 |
24 | return null;
25 | }
26 |
--------------------------------------------------------------------------------
/src/context.ts:
--------------------------------------------------------------------------------
1 | import { Client, Message } from "discord.js";
2 | import { createContext, useContext } from "react";
3 |
4 | export type ClientContext = {
5 | client: Client;
6 | prefix: string;
7 | onError?: (message: Message, error: Error) => unknown;
8 | allowLogging: boolean;
9 | };
10 |
11 | export const context = createContext(null);
12 |
13 | export const Provider = context.Provider;
14 |
15 | export function useClientContext(): ClientContext {
16 | const clientContext = useContext(context);
17 |
18 | if (clientContext === null) {
19 | throw new Error("Client Provider not found.");
20 | }
21 |
22 | return clientContext;
23 | }
24 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./Command";
2 | export * from "./Client";
3 | export * from "./Event";
4 | export * from "./start";
5 | export * from "./Token";
6 | export * from "./util";
7 | export * from "./CommonInhibitors";
8 | export * from "./Shortcuts";
9 | export { useClientContext } from "./context";
10 |
--------------------------------------------------------------------------------
/src/start.ts:
--------------------------------------------------------------------------------
1 | import * as React from "react";
2 | import { render } from "react-nil";
3 |
4 | export function start(node: React.ReactNode) {
5 | render(node);
6 | }
7 |
--------------------------------------------------------------------------------
/src/util.ts:
--------------------------------------------------------------------------------
1 | import { useClientContext } from "./context";
2 | import { Message } from "discord.js";
3 | import { useEffect } from "react";
4 |
5 | export function useArguments() {
6 | const context = useClientContext();
7 |
8 | return function parseArguments(message: Message) {
9 | const [command, ...args] = message.content
10 | .replace(context.prefix, "")
11 | .split(" ");
12 |
13 | return { command, args };
14 | };
15 | }
16 |
17 | export function useCommand(callback: (message: Message) => unknown) {
18 | const { client } = useClientContext();
19 |
20 | useEffect(() => {
21 | client.on("message", callback);
22 | return () => void client.off("message", callback);
23 | }, []);
24 | }
25 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "commonjs",
4 | "target": "ESNext",
5 | "sourceMap": true,
6 | "jsx": "react",
7 | "esModuleInterop": true,
8 | "rootDir": "src",
9 | "outDir": "dist",
10 | "declaration": true
11 | },
12 | "exclude": ["node_modules", "examples"]
13 | }
14 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/code-frame@^7.0.0":
6 | version "7.10.4"
7 | resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a"
8 | integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==
9 | dependencies:
10 | "@babel/highlight" "^7.10.4"
11 |
12 | "@babel/helper-validator-identifier@^7.10.4":
13 | version "7.10.4"
14 | resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2"
15 | integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==
16 |
17 | "@babel/highlight@^7.10.4":
18 | version "7.10.4"
19 | resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143"
20 | integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==
21 | dependencies:
22 | "@babel/helper-validator-identifier" "^7.10.4"
23 | chalk "^2.0.0"
24 | js-tokens "^4.0.0"
25 |
26 | "@discordjs/collection@^0.1.6":
27 | version "0.1.6"
28 | resolved "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.6.tgz#9e9a7637f4e4e0688fd8b2b5c63133c91607682c"
29 | integrity sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ==
30 |
31 | "@discordjs/form-data@^3.0.1":
32 | version "3.0.1"
33 | resolved "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz#5c9e6be992e2e57d0dfa0e39979a850225fb4697"
34 | integrity sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==
35 | dependencies:
36 | asynckit "^0.4.0"
37 | combined-stream "^1.0.8"
38 | mime-types "^2.1.12"
39 |
40 | "@eslint/eslintrc@^0.2.0":
41 | version "0.2.0"
42 | resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.0.tgz#bc7e3c4304d4c8720968ccaee793087dfb5fe6b4"
43 | integrity sha512-+cIGPCBdLCzqxdtwppswP+zTsH9BOIGzAeKfBIbtb4gW/giMlfMwP0HUSFfhzh20f9u8uZ8hOp62+4GPquTbwQ==
44 | dependencies:
45 | ajv "^6.12.4"
46 | debug "^4.1.1"
47 | espree "^7.3.0"
48 | globals "^12.1.0"
49 | ignore "^4.0.6"
50 | import-fresh "^3.2.1"
51 | js-yaml "^3.13.1"
52 | lodash "^4.17.19"
53 | minimatch "^3.0.4"
54 | strip-json-comments "^3.1.1"
55 |
56 | "@types/node@^14.14.5":
57 | version "14.14.5"
58 | resolved "https://registry.npmjs.org/@types/node/-/node-14.14.5.tgz#e92d3b8f76583efa26c1a63a21c9d3c1143daa29"
59 | integrity sha512-H5Wn24s/ZOukBmDn03nnGTp18A60ny9AmCwnEcgJiTgSGsCO7k+NWP7zjCCbhlcnVCoI+co52dUAt9GMhOSULw==
60 |
61 | "@types/prop-types@*":
62 | version "15.7.3"
63 | resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7"
64 | integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==
65 |
66 | "@types/react@^16.9.53":
67 | version "16.9.53"
68 | resolved "https://registry.npmjs.org/@types/react/-/react-16.9.53.tgz#40cd4f8b8d6b9528aedd1fff8fcffe7a112a3d23"
69 | integrity sha512-4nW60Sd4L7+WMXH1D6jCdVftuW7j4Za6zdp6tJ33Rqv0nk1ZAmQKML9ZLD4H0dehA3FZxXR/GM8gXplf82oNGw==
70 | dependencies:
71 | "@types/prop-types" "*"
72 | csstype "^3.0.2"
73 |
74 | abort-controller@^3.0.0:
75 | version "3.0.0"
76 | resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
77 | integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==
78 | dependencies:
79 | event-target-shim "^5.0.0"
80 |
81 | acorn-jsx@^5.2.0:
82 | version "5.3.1"
83 | resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b"
84 | integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==
85 |
86 | acorn@^7.4.0:
87 | version "7.4.1"
88 | resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
89 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
90 |
91 | ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4:
92 | version "6.12.6"
93 | resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
94 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
95 | dependencies:
96 | fast-deep-equal "^3.1.1"
97 | fast-json-stable-stringify "^2.0.0"
98 | json-schema-traverse "^0.4.1"
99 | uri-js "^4.2.2"
100 |
101 | ansi-colors@^4.1.1:
102 | version "4.1.1"
103 | resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
104 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
105 |
106 | ansi-regex@^4.1.0:
107 | version "4.1.0"
108 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
109 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
110 |
111 | ansi-regex@^5.0.0:
112 | version "5.0.0"
113 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
114 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
115 |
116 | ansi-styles@^3.2.0, ansi-styles@^3.2.1:
117 | version "3.2.1"
118 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
119 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
120 | dependencies:
121 | color-convert "^1.9.0"
122 |
123 | ansi-styles@^4.1.0:
124 | version "4.3.0"
125 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
126 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
127 | dependencies:
128 | color-convert "^2.0.1"
129 |
130 | argparse@^1.0.7:
131 | version "1.0.10"
132 | resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
133 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
134 | dependencies:
135 | sprintf-js "~1.0.2"
136 |
137 | astral-regex@^1.0.0:
138 | version "1.0.0"
139 | resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
140 | integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
141 |
142 | asynckit@^0.4.0:
143 | version "0.4.0"
144 | resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
145 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
146 |
147 | balanced-match@^1.0.0:
148 | version "1.0.0"
149 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
150 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
151 |
152 | brace-expansion@^1.1.7:
153 | version "1.1.11"
154 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
155 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
156 | dependencies:
157 | balanced-match "^1.0.0"
158 | concat-map "0.0.1"
159 |
160 | callsites@^3.0.0:
161 | version "3.1.0"
162 | resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
163 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
164 |
165 | chalk@^2.0.0:
166 | version "2.4.2"
167 | resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
168 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
169 | dependencies:
170 | ansi-styles "^3.2.1"
171 | escape-string-regexp "^1.0.5"
172 | supports-color "^5.3.0"
173 |
174 | chalk@^4.0.0:
175 | version "4.1.0"
176 | resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
177 | integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
178 | dependencies:
179 | ansi-styles "^4.1.0"
180 | supports-color "^7.1.0"
181 |
182 | color-convert@^1.9.0:
183 | version "1.9.3"
184 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
185 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
186 | dependencies:
187 | color-name "1.1.3"
188 |
189 | color-convert@^2.0.1:
190 | version "2.0.1"
191 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
192 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
193 | dependencies:
194 | color-name "~1.1.4"
195 |
196 | color-name@1.1.3:
197 | version "1.1.3"
198 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
199 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
200 |
201 | color-name@~1.1.4:
202 | version "1.1.4"
203 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
204 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
205 |
206 | combined-stream@^1.0.8:
207 | version "1.0.8"
208 | resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
209 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
210 | dependencies:
211 | delayed-stream "~1.0.0"
212 |
213 | concat-map@0.0.1:
214 | version "0.0.1"
215 | resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
216 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
217 |
218 | cross-spawn@^7.0.2:
219 | version "7.0.3"
220 | resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
221 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
222 | dependencies:
223 | path-key "^3.1.0"
224 | shebang-command "^2.0.0"
225 | which "^2.0.1"
226 |
227 | csstype@^3.0.2:
228 | version "3.0.4"
229 | resolved "https://registry.npmjs.org/csstype/-/csstype-3.0.4.tgz#b156d7be03b84ff425c9a0a4b1e5f4da9c5ca888"
230 | integrity sha512-xc8DUsCLmjvCfoD7LTGE0ou2MIWLx0K9RCZwSHMOdynqRsP4MtUcLeqh1HcQ2dInwDTqn+3CE0/FZh1et+p4jA==
231 |
232 | debug@^4.0.1, debug@^4.1.1:
233 | version "4.2.0"
234 | resolved "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1"
235 | integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==
236 | dependencies:
237 | ms "2.1.2"
238 |
239 | deep-is@^0.1.3:
240 | version "0.1.3"
241 | resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
242 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
243 |
244 | delayed-stream@~1.0.0:
245 | version "1.0.0"
246 | resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
247 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
248 |
249 | discord.js@^12.4.1:
250 | version "12.4.1"
251 | resolved "https://registry.npmjs.org/discord.js/-/discord.js-12.4.1.tgz#be88bb32caa9e41eae67749a4e2387585745ac3b"
252 | integrity sha512-KxOB8LOAN3GmrvkD6a6Fr1nlfArIFZ+q7Uqg4T/5duB90GZy9a0/Py2E+Y+eHKP6ZUCR2mbNMLCcHGjahiaNqA==
253 | dependencies:
254 | "@discordjs/collection" "^0.1.6"
255 | "@discordjs/form-data" "^3.0.1"
256 | abort-controller "^3.0.0"
257 | node-fetch "^2.6.1"
258 | prism-media "^1.2.2"
259 | setimmediate "^1.0.5"
260 | tweetnacl "^1.0.3"
261 | ws "^7.3.1"
262 |
263 | doctrine@^3.0.0:
264 | version "3.0.0"
265 | resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
266 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
267 | dependencies:
268 | esutils "^2.0.2"
269 |
270 | emoji-regex@^7.0.1:
271 | version "7.0.3"
272 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
273 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
274 |
275 | enquirer@^2.3.5:
276 | version "2.3.6"
277 | resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
278 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
279 | dependencies:
280 | ansi-colors "^4.1.1"
281 |
282 | escape-string-regexp@^1.0.5:
283 | version "1.0.5"
284 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
285 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
286 |
287 | eslint-scope@^5.1.1:
288 | version "5.1.1"
289 | resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
290 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
291 | dependencies:
292 | esrecurse "^4.3.0"
293 | estraverse "^4.1.1"
294 |
295 | eslint-utils@^2.1.0:
296 | version "2.1.0"
297 | resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
298 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
299 | dependencies:
300 | eslint-visitor-keys "^1.1.0"
301 |
302 | eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
303 | version "1.3.0"
304 | resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
305 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
306 |
307 | eslint-visitor-keys@^2.0.0:
308 | version "2.0.0"
309 | resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
310 | integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
311 |
312 | eslint@^7.12.0:
313 | version "7.12.0"
314 | resolved "https://registry.npmjs.org/eslint/-/eslint-7.12.0.tgz#7b6a85f87a9adc239e979bb721cde5ce0dc27da6"
315 | integrity sha512-n5pEU27DRxCSlOhJ2rO57GDLcNsxO0LPpAbpFdh7xmcDmjmlGUfoyrsB3I7yYdQXO5N3gkSTiDrPSPNFiiirXA==
316 | dependencies:
317 | "@babel/code-frame" "^7.0.0"
318 | "@eslint/eslintrc" "^0.2.0"
319 | ajv "^6.10.0"
320 | chalk "^4.0.0"
321 | cross-spawn "^7.0.2"
322 | debug "^4.0.1"
323 | doctrine "^3.0.0"
324 | enquirer "^2.3.5"
325 | eslint-scope "^5.1.1"
326 | eslint-utils "^2.1.0"
327 | eslint-visitor-keys "^2.0.0"
328 | espree "^7.3.0"
329 | esquery "^1.2.0"
330 | esutils "^2.0.2"
331 | file-entry-cache "^5.0.1"
332 | functional-red-black-tree "^1.0.1"
333 | glob-parent "^5.0.0"
334 | globals "^12.1.0"
335 | ignore "^4.0.6"
336 | import-fresh "^3.0.0"
337 | imurmurhash "^0.1.4"
338 | is-glob "^4.0.0"
339 | js-yaml "^3.13.1"
340 | json-stable-stringify-without-jsonify "^1.0.1"
341 | levn "^0.4.1"
342 | lodash "^4.17.19"
343 | minimatch "^3.0.4"
344 | natural-compare "^1.4.0"
345 | optionator "^0.9.1"
346 | progress "^2.0.0"
347 | regexpp "^3.1.0"
348 | semver "^7.2.1"
349 | strip-ansi "^6.0.0"
350 | strip-json-comments "^3.1.0"
351 | table "^5.2.3"
352 | text-table "^0.2.0"
353 | v8-compile-cache "^2.0.3"
354 |
355 | espree@^7.3.0:
356 | version "7.3.0"
357 | resolved "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348"
358 | integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==
359 | dependencies:
360 | acorn "^7.4.0"
361 | acorn-jsx "^5.2.0"
362 | eslint-visitor-keys "^1.3.0"
363 |
364 | esprima@^4.0.0:
365 | version "4.0.1"
366 | resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
367 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
368 |
369 | esquery@^1.2.0:
370 | version "1.3.1"
371 | resolved "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57"
372 | integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==
373 | dependencies:
374 | estraverse "^5.1.0"
375 |
376 | esrecurse@^4.3.0:
377 | version "4.3.0"
378 | resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
379 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
380 | dependencies:
381 | estraverse "^5.2.0"
382 |
383 | estraverse@^4.1.1:
384 | version "4.3.0"
385 | resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
386 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
387 |
388 | estraverse@^5.1.0, estraverse@^5.2.0:
389 | version "5.2.0"
390 | resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
391 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
392 |
393 | esutils@^2.0.2:
394 | version "2.0.3"
395 | resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
396 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
397 |
398 | event-target-shim@^5.0.0:
399 | version "5.0.1"
400 | resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
401 | integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
402 |
403 | fast-deep-equal@^3.1.1:
404 | version "3.1.3"
405 | resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
406 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
407 |
408 | fast-json-stable-stringify@^2.0.0:
409 | version "2.1.0"
410 | resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
411 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
412 |
413 | fast-levenshtein@^2.0.6:
414 | version "2.0.6"
415 | resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
416 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
417 |
418 | file-entry-cache@^5.0.1:
419 | version "5.0.1"
420 | resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c"
421 | integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==
422 | dependencies:
423 | flat-cache "^2.0.1"
424 |
425 | flat-cache@^2.0.1:
426 | version "2.0.1"
427 | resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
428 | integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==
429 | dependencies:
430 | flatted "^2.0.0"
431 | rimraf "2.6.3"
432 | write "1.0.3"
433 |
434 | flatted@^2.0.0:
435 | version "2.0.2"
436 | resolved "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138"
437 | integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==
438 |
439 | fs.realpath@^1.0.0:
440 | version "1.0.0"
441 | resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
442 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
443 |
444 | functional-red-black-tree@^1.0.1:
445 | version "1.0.1"
446 | resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
447 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
448 |
449 | glob-parent@^5.0.0:
450 | version "5.1.1"
451 | resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
452 | integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
453 | dependencies:
454 | is-glob "^4.0.1"
455 |
456 | glob@^7.1.3:
457 | version "7.1.6"
458 | resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
459 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
460 | dependencies:
461 | fs.realpath "^1.0.0"
462 | inflight "^1.0.4"
463 | inherits "2"
464 | minimatch "^3.0.4"
465 | once "^1.3.0"
466 | path-is-absolute "^1.0.0"
467 |
468 | globals@^12.1.0:
469 | version "12.4.0"
470 | resolved "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8"
471 | integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==
472 | dependencies:
473 | type-fest "^0.8.1"
474 |
475 | has-flag@^3.0.0:
476 | version "3.0.0"
477 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
478 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
479 |
480 | has-flag@^4.0.0:
481 | version "4.0.0"
482 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
483 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
484 |
485 | ignore@^4.0.6:
486 | version "4.0.6"
487 | resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
488 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
489 |
490 | import-fresh@^3.0.0, import-fresh@^3.2.1:
491 | version "3.2.1"
492 | resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66"
493 | integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==
494 | dependencies:
495 | parent-module "^1.0.0"
496 | resolve-from "^4.0.0"
497 |
498 | imurmurhash@^0.1.4:
499 | version "0.1.4"
500 | resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
501 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
502 |
503 | inflight@^1.0.4:
504 | version "1.0.6"
505 | resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
506 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
507 | dependencies:
508 | once "^1.3.0"
509 | wrappy "1"
510 |
511 | inherits@2:
512 | version "2.0.4"
513 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
514 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
515 |
516 | is-extglob@^2.1.1:
517 | version "2.1.1"
518 | resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
519 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
520 |
521 | is-fullwidth-code-point@^2.0.0:
522 | version "2.0.0"
523 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
524 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
525 |
526 | is-glob@^4.0.0, is-glob@^4.0.1:
527 | version "4.0.1"
528 | resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
529 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
530 | dependencies:
531 | is-extglob "^2.1.1"
532 |
533 | isexe@^2.0.0:
534 | version "2.0.0"
535 | resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
536 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
537 |
538 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
539 | version "4.0.0"
540 | resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
541 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
542 |
543 | js-yaml@^3.13.1:
544 | version "3.14.0"
545 | resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482"
546 | integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==
547 | dependencies:
548 | argparse "^1.0.7"
549 | esprima "^4.0.0"
550 |
551 | json-schema-traverse@^0.4.1:
552 | version "0.4.1"
553 | resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
554 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
555 |
556 | json-stable-stringify-without-jsonify@^1.0.1:
557 | version "1.0.1"
558 | resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
559 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
560 |
561 | levn@^0.4.1:
562 | version "0.4.1"
563 | resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
564 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
565 | dependencies:
566 | prelude-ls "^1.2.1"
567 | type-check "~0.4.0"
568 |
569 | lodash@^4.17.14, lodash@^4.17.19:
570 | version "4.17.20"
571 | resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
572 | integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
573 |
574 | loose-envify@^1.1.0:
575 | version "1.4.0"
576 | resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
577 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
578 | dependencies:
579 | js-tokens "^3.0.0 || ^4.0.0"
580 |
581 | mime-db@1.44.0:
582 | version "1.44.0"
583 | resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92"
584 | integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==
585 |
586 | mime-types@^2.1.12:
587 | version "2.1.27"
588 | resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f"
589 | integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==
590 | dependencies:
591 | mime-db "1.44.0"
592 |
593 | minimatch@^3.0.4:
594 | version "3.0.4"
595 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
596 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
597 | dependencies:
598 | brace-expansion "^1.1.7"
599 |
600 | minimist@^1.2.5:
601 | version "1.2.5"
602 | resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
603 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
604 |
605 | mkdirp@^0.5.1:
606 | version "0.5.5"
607 | resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
608 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
609 | dependencies:
610 | minimist "^1.2.5"
611 |
612 | ms@2.1.2:
613 | version "2.1.2"
614 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
615 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
616 |
617 | natural-compare@^1.4.0:
618 | version "1.4.0"
619 | resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
620 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
621 |
622 | node-fetch@^2.6.1:
623 | version "2.6.1"
624 | resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
625 | integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
626 |
627 | object-assign@^4.1.1:
628 | version "4.1.1"
629 | resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
630 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
631 |
632 | once@^1.3.0:
633 | version "1.4.0"
634 | resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
635 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
636 | dependencies:
637 | wrappy "1"
638 |
639 | optionator@^0.9.1:
640 | version "0.9.1"
641 | resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
642 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
643 | dependencies:
644 | deep-is "^0.1.3"
645 | fast-levenshtein "^2.0.6"
646 | levn "^0.4.1"
647 | prelude-ls "^1.2.1"
648 | type-check "^0.4.0"
649 | word-wrap "^1.2.3"
650 |
651 | parent-module@^1.0.0:
652 | version "1.0.1"
653 | resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
654 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
655 | dependencies:
656 | callsites "^3.0.0"
657 |
658 | path-is-absolute@^1.0.0:
659 | version "1.0.1"
660 | resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
661 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
662 |
663 | path-key@^3.1.0:
664 | version "3.1.1"
665 | resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
666 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
667 |
668 | prelude-ls@^1.2.1:
669 | version "1.2.1"
670 | resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
671 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
672 |
673 | prettier@^2.1.2:
674 | version "2.1.2"
675 | resolved "https://registry.npmjs.org/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5"
676 | integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==
677 |
678 | prism-media@^1.2.2:
679 | version "1.2.2"
680 | resolved "https://registry.npmjs.org/prism-media/-/prism-media-1.2.2.tgz#4f1c841f248b67d325a24b4e6b1a491b8f50a24f"
681 | integrity sha512-I+nkWY212lJ500jLe4tN9tWO7nRiBAVdMv76P9kffZjYhw20raMlW1HSSvS+MLXC9MmbNZCazMrAr+5jEEgTuw==
682 |
683 | progress@^2.0.0:
684 | version "2.0.3"
685 | resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
686 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
687 |
688 | punycode@^2.1.0:
689 | version "2.1.1"
690 | resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
691 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
692 |
693 | react-nil@^0.0.3:
694 | version "0.0.3"
695 | resolved "https://registry.npmjs.org/react-nil/-/react-nil-0.0.3.tgz#c6242460ce3dbb6d00744444911565cdba3b73b9"
696 | integrity sha512-RDK8yWeWasmGFTRCqnbljvIBpWpHvH0YpGIXk65NeyOaN7SEyxsHCz3DU69G6r4L0HYLBPhMdbX5xynOvTDWuQ==
697 |
698 | react@^17.0.1:
699 | version "17.0.1"
700 | resolved "https://registry.npmjs.org/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127"
701 | integrity sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==
702 | dependencies:
703 | loose-envify "^1.1.0"
704 | object-assign "^4.1.1"
705 |
706 | regexpp@^3.1.0:
707 | version "3.1.0"
708 | resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
709 | integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
710 |
711 | resolve-from@^4.0.0:
712 | version "4.0.0"
713 | resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
714 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
715 |
716 | rimraf@2.6.3:
717 | version "2.6.3"
718 | resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
719 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
720 | dependencies:
721 | glob "^7.1.3"
722 |
723 | rimraf@^3.0.2:
724 | version "3.0.2"
725 | resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
726 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
727 | dependencies:
728 | glob "^7.1.3"
729 |
730 | scheduler@^0.20.1:
731 | version "0.20.1"
732 | resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.20.1.tgz#da0b907e24026b01181ecbc75efdc7f27b5a000c"
733 | integrity sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw==
734 | dependencies:
735 | loose-envify "^1.1.0"
736 | object-assign "^4.1.1"
737 |
738 | semver@^7.2.1:
739 | version "7.3.2"
740 | resolved "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
741 | integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
742 |
743 | setimmediate@^1.0.5:
744 | version "1.0.5"
745 | resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
746 | integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
747 |
748 | shebang-command@^2.0.0:
749 | version "2.0.0"
750 | resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
751 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
752 | dependencies:
753 | shebang-regex "^3.0.0"
754 |
755 | shebang-regex@^3.0.0:
756 | version "3.0.0"
757 | resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
758 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
759 |
760 | slice-ansi@^2.1.0:
761 | version "2.1.0"
762 | resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636"
763 | integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
764 | dependencies:
765 | ansi-styles "^3.2.0"
766 | astral-regex "^1.0.0"
767 | is-fullwidth-code-point "^2.0.0"
768 |
769 | sprintf-js@~1.0.2:
770 | version "1.0.3"
771 | resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
772 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
773 |
774 | string-width@^3.0.0:
775 | version "3.1.0"
776 | resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
777 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
778 | dependencies:
779 | emoji-regex "^7.0.1"
780 | is-fullwidth-code-point "^2.0.0"
781 | strip-ansi "^5.1.0"
782 |
783 | strip-ansi@^5.1.0:
784 | version "5.2.0"
785 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
786 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
787 | dependencies:
788 | ansi-regex "^4.1.0"
789 |
790 | strip-ansi@^6.0.0:
791 | version "6.0.0"
792 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
793 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
794 | dependencies:
795 | ansi-regex "^5.0.0"
796 |
797 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
798 | version "3.1.1"
799 | resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
800 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
801 |
802 | supports-color@^5.3.0:
803 | version "5.5.0"
804 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
805 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
806 | dependencies:
807 | has-flag "^3.0.0"
808 |
809 | supports-color@^7.1.0:
810 | version "7.2.0"
811 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
812 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
813 | dependencies:
814 | has-flag "^4.0.0"
815 |
816 | table@^5.2.3:
817 | version "5.4.6"
818 | resolved "https://registry.npmjs.org/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e"
819 | integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==
820 | dependencies:
821 | ajv "^6.10.2"
822 | lodash "^4.17.14"
823 | slice-ansi "^2.1.0"
824 | string-width "^3.0.0"
825 |
826 | text-table@^0.2.0:
827 | version "0.2.0"
828 | resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
829 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
830 |
831 | tweetnacl@^1.0.3:
832 | version "1.0.3"
833 | resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596"
834 | integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==
835 |
836 | type-check@^0.4.0, type-check@~0.4.0:
837 | version "0.4.0"
838 | resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
839 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
840 | dependencies:
841 | prelude-ls "^1.2.1"
842 |
843 | type-fest@^0.8.1:
844 | version "0.8.1"
845 | resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
846 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
847 |
848 | typescript@^4.0.5:
849 | version "4.0.5"
850 | resolved "https://registry.npmjs.org/typescript/-/typescript-4.0.5.tgz#ae9dddfd1069f1cb5beb3ef3b2170dd7c1332389"
851 | integrity sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ==
852 |
853 | uri-js@^4.2.2:
854 | version "4.4.0"
855 | resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602"
856 | integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==
857 | dependencies:
858 | punycode "^2.1.0"
859 |
860 | v8-compile-cache@^2.0.3:
861 | version "2.1.1"
862 | resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745"
863 | integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==
864 |
865 | which@^2.0.1:
866 | version "2.0.2"
867 | resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
868 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
869 | dependencies:
870 | isexe "^2.0.0"
871 |
872 | word-wrap@^1.2.3:
873 | version "1.2.3"
874 | resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
875 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
876 |
877 | wrappy@1:
878 | version "1.0.2"
879 | resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
880 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
881 |
882 | write@1.0.3:
883 | version "1.0.3"
884 | resolved "https://registry.npmjs.org/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3"
885 | integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==
886 | dependencies:
887 | mkdirp "^0.5.1"
888 |
889 | ws@^7.3.1:
890 | version "7.3.1"
891 | resolved "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8"
892 | integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==
893 |
--------------------------------------------------------------------------------