mirror of
https://github.com/run-llama/chat-llamaindex.git
synced 2026-07-01 21:04:08 -04:00
remove: telegram bot support
This commit is contained in:
@@ -1,2 +1 @@
|
||||
public/serviceWorker.js
|
||||
app/client/platforms/telegram.ts
|
||||
|
||||
@@ -1,95 +0,0 @@
|
||||
import telegramifyMarkdown from "telegramify-markdown";
|
||||
|
||||
const timeout: number = 10;
|
||||
|
||||
export enum ParseMode {
|
||||
"MarkdownV2" = "MarkdownV2",
|
||||
"HTML" = "HTML",
|
||||
}
|
||||
|
||||
export interface PollUpdate {
|
||||
update_id: number;
|
||||
my_chat_member: {
|
||||
chat: {
|
||||
id: number;
|
||||
};
|
||||
};
|
||||
message: {
|
||||
chat: {
|
||||
id: number;
|
||||
};
|
||||
text: string;
|
||||
};
|
||||
}
|
||||
|
||||
interface TelegramResponse {
|
||||
ok: boolean;
|
||||
result: PollUpdate[];
|
||||
error_code?: number;
|
||||
}
|
||||
|
||||
export interface PollResponse {
|
||||
ok: boolean;
|
||||
newOffset?: number;
|
||||
description?: string;
|
||||
error_code?: number;
|
||||
}
|
||||
|
||||
export type PollUpdater = (update: PollUpdate) => void;
|
||||
|
||||
export class TelegramAPI {
|
||||
sendMessage(
|
||||
token: string,
|
||||
chatId: number,
|
||||
text: string,
|
||||
parse_mode?: ParseMode,
|
||||
): void {
|
||||
if (parse_mode === ParseMode.MarkdownV2) {
|
||||
// XXX: need to escape > and | symbols as telegramifyMarkdown doesn't do it
|
||||
const clean = (text: string) => text.replace(/([>|])/g, "\\$1");
|
||||
text = clean(telegramifyMarkdown(text));
|
||||
}
|
||||
|
||||
const data = {
|
||||
chat_id: chatId,
|
||||
text: text,
|
||||
parse_mode: parse_mode,
|
||||
};
|
||||
|
||||
console.log("[Request] telegram payload: ", data);
|
||||
|
||||
fetch(`https://api.telegram.org/bot${token}/sendMessage`, {
|
||||
method: "POST",
|
||||
body: JSON.stringify(data),
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
}).catch(console.error);
|
||||
}
|
||||
|
||||
async poll(
|
||||
token: string,
|
||||
updater: PollUpdater,
|
||||
offset?: number,
|
||||
): Promise<PollResponse> {
|
||||
let url: string = `https://api.telegram.org/bot${token}/getUpdates?timeout=${timeout}`;
|
||||
if (offset) url += "&offset=" + offset;
|
||||
|
||||
try {
|
||||
const response = await fetch(url);
|
||||
const data: TelegramResponse = await response.json();
|
||||
if (!data.ok) {
|
||||
return data;
|
||||
}
|
||||
const updates = data.result;
|
||||
let newOffset: number | undefined;
|
||||
if (updates.length > 0) {
|
||||
newOffset = updates[updates.length - 1].update_id + 1;
|
||||
}
|
||||
updates.forEach((data) => updater(data));
|
||||
return { ok: true, newOffset };
|
||||
} catch (err: any) {
|
||||
return { ok: false, description: err.message };
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,166 +0,0 @@
|
||||
import { DEFAULT_DEPLOYMENT, Deployment } from "@/app/store/deployment";
|
||||
import { useWorkerStore } from "@/app/store/workers";
|
||||
import { Ban, Zap } from "lucide-react";
|
||||
import { useEffect, useState } from "react";
|
||||
import Locale from "../../../locales";
|
||||
import { Button } from "../../ui/button";
|
||||
import { Card, CardContent } from "../../ui/card";
|
||||
import {
|
||||
DialogContent,
|
||||
DialogFooter,
|
||||
DialogHeader,
|
||||
DialogTitle,
|
||||
} from "../../ui/dialog";
|
||||
import { Input } from "../../ui/input";
|
||||
import { Separator } from "../../ui/separator";
|
||||
import { useBot } from "../use-bot";
|
||||
import { Loading } from "@/app/components/ui/loading";
|
||||
|
||||
enum Status {
|
||||
Stopped = "STOPPED",
|
||||
Starting = "STARTING",
|
||||
Stopping = "STOPPING",
|
||||
Running = "RUNNING",
|
||||
InvalidToken = "INVALID_TOKEN",
|
||||
Unknown = "UNKNOWN",
|
||||
}
|
||||
|
||||
export default function DeployBotDialogContent() {
|
||||
const { bot, updateBot } = useBot();
|
||||
const workerStore = useWorkerStore();
|
||||
const [status, setStatus] = useState(Status.Stopped);
|
||||
|
||||
const deployment = bot.deployment || DEFAULT_DEPLOYMENT;
|
||||
const worker = deployment.worker_id
|
||||
? workerStore.get(deployment.worker_id)
|
||||
: null;
|
||||
|
||||
const updateConfig = (updater: (config: Deployment) => void) => {
|
||||
const config = { ...deployment };
|
||||
updater(config);
|
||||
updateBot((bot) => {
|
||||
bot.deployment = config;
|
||||
});
|
||||
};
|
||||
|
||||
const onChangeInput = (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
updateConfig((config) => (config.token = e.currentTarget.value));
|
||||
};
|
||||
|
||||
const startBot = () => {
|
||||
const worker = new Worker(
|
||||
new URL("../../../workers/telegram.ts", import.meta.url),
|
||||
);
|
||||
const id = workerStore.create(worker);
|
||||
worker.postMessage({
|
||||
command: "start",
|
||||
data: {
|
||||
token: deployment.token,
|
||||
bot: bot,
|
||||
},
|
||||
});
|
||||
updateConfig((config) => (config.worker_id = id));
|
||||
};
|
||||
|
||||
const stopBot = () => {
|
||||
if (worker) {
|
||||
worker.postMessage({ command: "stop" });
|
||||
workerStore.delete(deployment.worker_id!);
|
||||
updateConfig((config) => (config.worker_id = null));
|
||||
}
|
||||
};
|
||||
|
||||
const renderStatus = (status: Status | string) => {
|
||||
switch (status) {
|
||||
case Status.Stopped:
|
||||
return "Bot not running.";
|
||||
case Status.Starting:
|
||||
case Status.Stopping:
|
||||
return (
|
||||
<div className="text-primary">
|
||||
<Loading />
|
||||
</div>
|
||||
);
|
||||
case Status.Running:
|
||||
return "Bot running.";
|
||||
case Status.InvalidToken:
|
||||
status = "Invalid Telegram bot token. Please check.";
|
||||
default:
|
||||
return <span className="text-destructive">{status}</span>;
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
// set status from worker and setup message callback
|
||||
// from worker
|
||||
if (worker) {
|
||||
worker.onmessage = function (event) {
|
||||
// Handle the received message here
|
||||
const status: Status = event.data.status;
|
||||
if (status === Status.Unknown) {
|
||||
setStatus(event.data.error ?? Status.Unknown);
|
||||
} else {
|
||||
setStatus(status);
|
||||
}
|
||||
};
|
||||
// if worker already exists, ask it of its last status, if we don't receive a message
|
||||
// we assume that the worker is already stopped (which is ok as the default status is 'stopped')
|
||||
worker.postMessage({ command: "get_status" });
|
||||
}
|
||||
}, [worker]);
|
||||
|
||||
return (
|
||||
<DialogContent className="max-w-3xl">
|
||||
<DialogHeader>
|
||||
<DialogTitle>{Locale.Deploy.Config.Title}</DialogTitle>
|
||||
</DialogHeader>
|
||||
<Separator />
|
||||
<Card>
|
||||
<CardContent className="flex items-center justify-between p-6 gap-4">
|
||||
<div className="w-1/2">
|
||||
<div className="font-bold">{Locale.Deploy.Config.Token.Title}</div>
|
||||
<div className="text-sm">
|
||||
{Locale.Deploy.Config.Token.Hint}
|
||||
<a
|
||||
href="https://t.me/BotFather"
|
||||
target="_blank"
|
||||
className="text-primary"
|
||||
>
|
||||
https://t.me/BotFather
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<Input
|
||||
className="flex-1"
|
||||
type="text"
|
||||
value={bot.deployment?.token}
|
||||
placeholder={Locale.Deploy.Config.Token.Placeholder}
|
||||
onInput={onChangeInput}
|
||||
/>
|
||||
</CardContent>
|
||||
</Card>
|
||||
<DialogFooter className="items-center">
|
||||
<div>{renderStatus(status)}</div>
|
||||
<Button
|
||||
disabled={
|
||||
status === Status.Running ||
|
||||
status === Status.Starting ||
|
||||
status === Status.Stopping
|
||||
}
|
||||
onClick={startBot}
|
||||
>
|
||||
<Zap className="mr-2 w-4 h-4" />
|
||||
{Locale.Deploy.Config.Start}
|
||||
</Button>
|
||||
<Button
|
||||
variant="destructive"
|
||||
disabled={status !== Status.Running}
|
||||
onClick={stopBot}
|
||||
>
|
||||
<Ban className="mr-2 w-4 h-4" />
|
||||
{Locale.Deploy.Config.Stop}
|
||||
</Button>
|
||||
</DialogFooter>
|
||||
</DialogContent>
|
||||
);
|
||||
}
|
||||
@@ -4,7 +4,6 @@ import {
|
||||
MoreHorizontal,
|
||||
Share2,
|
||||
XCircle,
|
||||
Zap,
|
||||
} from "lucide-react";
|
||||
import { useState } from "react";
|
||||
import Locale from "../../../locales";
|
||||
@@ -22,7 +21,6 @@ import {
|
||||
import { useBot } from "../use-bot";
|
||||
import DeleteBotDialogContent from "./delete-bot-dialog";
|
||||
import EditBotDialogContent from "./edit-bot-dialog";
|
||||
import DeployBotDialogContent from "./deploy-bot-dialog";
|
||||
import ShareBotDialogContent from "./share-bot-dialog";
|
||||
|
||||
export default function BotOptions() {
|
||||
@@ -64,15 +62,6 @@ export default function BotOptions() {
|
||||
<span>{Locale.Bot.Item.Delete}</span>
|
||||
</DropdownMenuItem>
|
||||
</AlertDialogTrigger>
|
||||
<DialogTrigger asChild>
|
||||
<DropdownMenuItem
|
||||
disabled={isReadOnly && !isShareble}
|
||||
onClick={() => setDialogContent(<DeployBotDialogContent />)}
|
||||
>
|
||||
<Zap className="mr-2 w-4 h-4" />
|
||||
<span>{Locale.Bot.Item.Deploy}</span>
|
||||
</DropdownMenuItem>
|
||||
</DialogTrigger>
|
||||
<DialogTrigger asChild>
|
||||
<DropdownMenuItem
|
||||
disabled={isReadOnly}
|
||||
|
||||
@@ -99,18 +99,6 @@ const en = {
|
||||
Error: "Oops, something went wrong. Please try again later.",
|
||||
},
|
||||
},
|
||||
Deploy: {
|
||||
Config: {
|
||||
Title: "Deploy Bot To Telegram",
|
||||
Start: "Start Bot",
|
||||
Stop: "Stop Bot",
|
||||
Token: {
|
||||
Title: "Telegram Bot token",
|
||||
Hint: "Enter your Telegram Bot token, get it from",
|
||||
Placeholder: "Telegram Bot token",
|
||||
},
|
||||
},
|
||||
},
|
||||
Bot: {
|
||||
Name: "Bot",
|
||||
Page: {
|
||||
@@ -121,7 +109,6 @@ const en = {
|
||||
Edit: "Edit",
|
||||
Delete: "Delete",
|
||||
DeleteConfirm: "Confirm to delete?",
|
||||
Deploy: "Telegram",
|
||||
Share: "Share",
|
||||
},
|
||||
EditModal: {
|
||||
|
||||
@@ -2,7 +2,6 @@ import { nanoid } from "nanoid";
|
||||
import { create } from "zustand";
|
||||
import { persist } from "zustand/middleware";
|
||||
import { LLMConfig } from "../client/platforms/llm";
|
||||
import { Deployment } from "./deployment";
|
||||
import { ChatSession, ChatMessage } from "./session";
|
||||
import { createDemoBots, createEmptyBot } from "@/app/bots/bot.data";
|
||||
|
||||
@@ -20,7 +19,6 @@ export type Bot = {
|
||||
readOnly: boolean;
|
||||
botHello: string | null;
|
||||
datasource?: string;
|
||||
deployment?: Deployment;
|
||||
share?: Share;
|
||||
createdAt?: number;
|
||||
session: ChatSession;
|
||||
@@ -98,7 +96,6 @@ export const useBotStore = create<BotStore>()(
|
||||
};
|
||||
if (options?.reset) {
|
||||
bots[id].share = undefined;
|
||||
bots[id].deployment = undefined;
|
||||
}
|
||||
set(() => ({ bots }));
|
||||
return bots[id];
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
export type Deployment = {
|
||||
worker_id: number | null;
|
||||
token: string;
|
||||
};
|
||||
|
||||
export const DEFAULT_DEPLOYMENT: Deployment = {
|
||||
worker_id: null,
|
||||
token: "",
|
||||
};
|
||||
@@ -105,7 +105,7 @@ export async function callSession(
|
||||
onUpdateMessages: (messages: ChatMessage[]) => void;
|
||||
},
|
||||
uploadedFile?: FileWrap,
|
||||
): Promise<ChatMessage | undefined> {
|
||||
): Promise<void> {
|
||||
const modelConfig = bot.modelConfig;
|
||||
|
||||
let userMessage: ChatMessage;
|
||||
@@ -128,7 +128,7 @@ export async function callSession(
|
||||
// updating the session will trigger a re-render, so it will display the messages
|
||||
session.messages = session.messages.concat([userMessage, botMessage]);
|
||||
callbacks.onUpdateMessages(session.messages);
|
||||
return botMessage;
|
||||
return;
|
||||
}
|
||||
|
||||
const botMessage: ChatMessage = createMessage({
|
||||
@@ -171,7 +171,6 @@ export async function callSession(
|
||||
}
|
||||
|
||||
// make request
|
||||
let result;
|
||||
const controller = new AbortController();
|
||||
ChatControllerPool.addController(bot.id, controller);
|
||||
const api = new LLMApi();
|
||||
@@ -197,8 +196,6 @@ export async function callSession(
|
||||
}
|
||||
callbacks.onUpdateMessages(session.messages.concat());
|
||||
ChatControllerPool.remove(bot.id);
|
||||
// TODO: check send memory message to telegram
|
||||
result = botMessage;
|
||||
},
|
||||
onError(error) {
|
||||
const isAborted = error.message.includes("aborted");
|
||||
@@ -215,8 +212,6 @@ export async function callSession(
|
||||
ChatControllerPool.remove(bot.id);
|
||||
|
||||
console.error("[Chat] failed ", error);
|
||||
result = botMessage;
|
||||
},
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
import { create } from "zustand";
|
||||
|
||||
const DEFAULT_WORKER_STATE = {
|
||||
workers: {} as Record<number, Worker>,
|
||||
globalWorkerId: 0,
|
||||
};
|
||||
|
||||
type WorkerState = typeof DEFAULT_WORKER_STATE;
|
||||
type WorkerStore = WorkerState & {
|
||||
create: (worker: Worker) => number;
|
||||
delete: (id: number) => void;
|
||||
get: (id: number) => Worker | null;
|
||||
};
|
||||
|
||||
export const useWorkerStore = create<WorkerStore>((set, get) => ({
|
||||
...DEFAULT_WORKER_STATE,
|
||||
create(worker: Worker) {
|
||||
set(() => ({ globalWorkerId: get().globalWorkerId + 1 }));
|
||||
const id = get().globalWorkerId;
|
||||
const workers = get().workers;
|
||||
workers[id] = worker;
|
||||
set(() => ({ workers }));
|
||||
return id;
|
||||
},
|
||||
delete(id) {
|
||||
const workers = get().workers;
|
||||
if (workers[id]) {
|
||||
delete workers[id];
|
||||
set(() => ({ workers }));
|
||||
}
|
||||
},
|
||||
get(id) {
|
||||
return get().workers[id] ?? null;
|
||||
},
|
||||
}));
|
||||
@@ -1,170 +0,0 @@
|
||||
import {
|
||||
ParseMode,
|
||||
PollUpdate,
|
||||
TelegramAPI,
|
||||
} from "../client/platforms/telegram";
|
||||
import {
|
||||
ChatMessage,
|
||||
ChatSession,
|
||||
callSession,
|
||||
createEmptySession,
|
||||
} from "../store";
|
||||
import { Bot } from "../store/bot";
|
||||
|
||||
interface State {
|
||||
running: boolean;
|
||||
lastStatus: Status;
|
||||
startData: StartCommandData;
|
||||
chats: Record<number, ChatSession>;
|
||||
}
|
||||
|
||||
interface Status {
|
||||
status: string;
|
||||
error?: string;
|
||||
}
|
||||
|
||||
interface StartCommandData {
|
||||
token: string;
|
||||
openaiToken: string;
|
||||
bot: Bot;
|
||||
}
|
||||
|
||||
interface Command {
|
||||
command: string;
|
||||
data?: StartCommandData;
|
||||
}
|
||||
|
||||
const ctx: State = self as any;
|
||||
ctx.running = false;
|
||||
ctx.chats = {};
|
||||
const telegram = new TelegramAPI();
|
||||
|
||||
function handleBotCommands(
|
||||
chatId: number,
|
||||
message: string,
|
||||
): string | undefined {
|
||||
const commandResponses: any = {
|
||||
"/start": ctx.startData.bot.botHello || "Hello!",
|
||||
"/help":
|
||||
"/clear - clear context\n/start - show welcome message\n/help - show this message",
|
||||
"/clear": () => {
|
||||
resetChat(chatId);
|
||||
return "Context cleared";
|
||||
},
|
||||
};
|
||||
|
||||
if (Object.keys(commandResponses).includes(message)) {
|
||||
let response = commandResponses[message];
|
||||
if (typeof response === "function") {
|
||||
response = response();
|
||||
}
|
||||
return response;
|
||||
}
|
||||
}
|
||||
|
||||
async function handleUpdate(update: PollUpdate): Promise<void> {
|
||||
const message = update.message;
|
||||
if (!message) {
|
||||
if (update.my_chat_member) {
|
||||
telegram.sendMessage(
|
||||
ctx.startData.token,
|
||||
update.my_chat_member.chat.id,
|
||||
"Sorry I can't talk in a group. Please add me to a private chat.",
|
||||
);
|
||||
} else {
|
||||
console.error("Unknown update type", update);
|
||||
}
|
||||
return;
|
||||
}
|
||||
const cmdMessage = handleBotCommands(message.chat.id, message.text);
|
||||
if (cmdMessage) {
|
||||
telegram.sendMessage(ctx.startData.token, message.chat.id, cmdMessage);
|
||||
return;
|
||||
}
|
||||
const aiMessage = await handleAI(message.chat.id, message.text);
|
||||
if (aiMessage) {
|
||||
telegram.sendMessage(
|
||||
ctx.startData.token,
|
||||
message.chat.id,
|
||||
aiMessage.content,
|
||||
ParseMode.MarkdownV2,
|
||||
);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
async function handleAI(
|
||||
chatId: number,
|
||||
text: string,
|
||||
): Promise<ChatMessage | undefined> {
|
||||
const session = getChatSession(chatId);
|
||||
return await callSession(ctx.startData.bot, session, text, {
|
||||
onUpdateMessages: (newMessages) => {
|
||||
session.messages = newMessages;
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
function setStatus(status: Status): void {
|
||||
ctx.lastStatus = status;
|
||||
self.postMessage(status);
|
||||
}
|
||||
|
||||
function getChatSession(chatId: number): ChatSession {
|
||||
if (!ctx.chats[chatId]) {
|
||||
resetChat(chatId);
|
||||
}
|
||||
return ctx.chats[chatId];
|
||||
}
|
||||
|
||||
function resetChat(chatId: number): void {
|
||||
ctx.chats[chatId] = createEmptySession();
|
||||
}
|
||||
|
||||
async function start(data: StartCommandData): Promise<void> {
|
||||
ctx.startData = data;
|
||||
|
||||
let offset: number | undefined;
|
||||
setStatus({ status: "STARTING" });
|
||||
ctx.running = true;
|
||||
for (let i = 0; ; i++) {
|
||||
const result = await telegram.poll(data.token, handleUpdate, offset);
|
||||
if (!ctx.running) {
|
||||
setStatus({ status: "STOPPED" });
|
||||
break;
|
||||
}
|
||||
if (!result.ok) {
|
||||
if (result.error_code === 404) {
|
||||
setStatus({ status: "INVALID_TOKEN" });
|
||||
} else {
|
||||
setStatus({ status: "UNKNOWN", error: result.description });
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (result.ok && i == 0) {
|
||||
setStatus({ status: "RUNNING" });
|
||||
}
|
||||
offset = result.newOffset;
|
||||
}
|
||||
self.close();
|
||||
}
|
||||
|
||||
function stop(): void {
|
||||
setStatus({ status: "STOPPING" });
|
||||
ctx.running = false;
|
||||
}
|
||||
|
||||
self.onmessage = async function (event: MessageEvent): Promise<void> {
|
||||
// get the command from the main thread
|
||||
const command: Command = event.data;
|
||||
|
||||
if (command.command === "start") {
|
||||
start(command.data!);
|
||||
} else if (command.command === "get_status") {
|
||||
self.postMessage(ctx.lastStatus);
|
||||
} else if (command.command === "stop") {
|
||||
stop();
|
||||
} else {
|
||||
console.error("Unknown command: " + command.command);
|
||||
}
|
||||
};
|
||||
@@ -63,7 +63,6 @@
|
||||
"tailwind-merge": "^1.14.0",
|
||||
"tailwindcss": "3.3.3",
|
||||
"tailwindcss-animate": "^1.0.7",
|
||||
"telegramify-markdown": "^1.1.0",
|
||||
"unified": "^10.1.2",
|
||||
"unist-util-remove": "^4.0.0",
|
||||
"use-debounce": "^9.0.4",
|
||||
|
||||
Generated
+1
-324
@@ -155,9 +155,6 @@ dependencies:
|
||||
tailwindcss-animate:
|
||||
specifier: ^1.0.7
|
||||
version: 1.0.7(tailwindcss@3.3.3)
|
||||
telegramify-markdown:
|
||||
specifier: ^1.1.0
|
||||
version: 1.1.0
|
||||
unified:
|
||||
specifier: ^10.1.2
|
||||
version: 10.1.2
|
||||
@@ -1916,10 +1913,6 @@ packages:
|
||||
dequal: 2.0.3
|
||||
dev: true
|
||||
|
||||
/bail@1.0.5:
|
||||
resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==}
|
||||
dev: false
|
||||
|
||||
/bail@2.0.2:
|
||||
resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
|
||||
dev: false
|
||||
@@ -2031,10 +2024,6 @@ packages:
|
||||
resolution: {integrity: sha512-N0ttd6TrFfuqKNi+pMgWJTb9qrdJu4JSpgPFLe/lrD19ugC6fZgF0pUewRowDwzdDnb9V41mFcdlYgl/PyKf4A==}
|
||||
dev: false
|
||||
|
||||
/ccount@1.1.0:
|
||||
resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==}
|
||||
dev: false
|
||||
|
||||
/ccount@2.0.1:
|
||||
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
|
||||
dev: false
|
||||
@@ -2052,22 +2041,10 @@ packages:
|
||||
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
|
||||
dev: true
|
||||
|
||||
/character-entities-legacy@1.1.4:
|
||||
resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==}
|
||||
dev: false
|
||||
|
||||
/character-entities@1.2.4:
|
||||
resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==}
|
||||
dev: false
|
||||
|
||||
/character-entities@2.0.2:
|
||||
resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
|
||||
dev: false
|
||||
|
||||
/character-reference-invalid@1.1.4:
|
||||
resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==}
|
||||
dev: false
|
||||
|
||||
/charenc@0.0.2:
|
||||
resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==}
|
||||
dev: false
|
||||
@@ -2834,6 +2811,7 @@ packages:
|
||||
/escape-string-regexp@4.0.0:
|
||||
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
|
||||
engines: {node: '>=10'}
|
||||
dev: true
|
||||
|
||||
/escape-string-regexp@5.0.0:
|
||||
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
|
||||
@@ -3635,10 +3613,6 @@ packages:
|
||||
engines: {node: '>=12.0.0'}
|
||||
dev: false
|
||||
|
||||
/html-comment-regex@1.1.2:
|
||||
resolution: {integrity: sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==}
|
||||
dev: false
|
||||
|
||||
/human-signals@2.1.0:
|
||||
resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
|
||||
engines: {node: '>=10.17.0'}
|
||||
@@ -3736,17 +3710,6 @@ packages:
|
||||
loose-envify: 1.4.0
|
||||
dev: false
|
||||
|
||||
/is-alphabetical@1.0.4:
|
||||
resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==}
|
||||
dev: false
|
||||
|
||||
/is-alphanumerical@1.0.4:
|
||||
resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==}
|
||||
dependencies:
|
||||
is-alphabetical: 1.0.4
|
||||
is-decimal: 1.0.4
|
||||
dev: false
|
||||
|
||||
/is-array-buffer@3.0.2:
|
||||
resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
|
||||
dependencies:
|
||||
@@ -3809,10 +3772,6 @@ packages:
|
||||
has-tostringtag: 1.0.0
|
||||
dev: true
|
||||
|
||||
/is-decimal@1.0.4:
|
||||
resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==}
|
||||
dev: false
|
||||
|
||||
/is-docker@2.2.1:
|
||||
resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
|
||||
engines: {node: '>=8'}
|
||||
@@ -3858,10 +3817,6 @@ packages:
|
||||
dependencies:
|
||||
is-extglob: 2.1.1
|
||||
|
||||
/is-hexadecimal@1.0.4:
|
||||
resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==}
|
||||
dev: false
|
||||
|
||||
/is-inside-container@1.0.0:
|
||||
resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
|
||||
engines: {node: '>=14.16'}
|
||||
@@ -3895,11 +3850,6 @@ packages:
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/is-plain-obj@2.1.0:
|
||||
resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==}
|
||||
engines: {node: '>=8'}
|
||||
dev: false
|
||||
|
||||
/is-plain-obj@4.1.0:
|
||||
resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -4241,10 +4191,6 @@ packages:
|
||||
wrap-ansi: 6.2.0
|
||||
dev: true
|
||||
|
||||
/longest-streak@2.0.4:
|
||||
resolution: {integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==}
|
||||
dev: false
|
||||
|
||||
/longest-streak@3.1.0:
|
||||
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
|
||||
dev: false
|
||||
@@ -4302,12 +4248,6 @@ packages:
|
||||
xmlbuilder: 10.1.1
|
||||
dev: false
|
||||
|
||||
/markdown-table@2.0.0:
|
||||
resolution: {integrity: sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==}
|
||||
dependencies:
|
||||
repeat-string: 1.6.1
|
||||
dev: false
|
||||
|
||||
/markdown-table@3.0.3:
|
||||
resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==}
|
||||
dev: false
|
||||
@@ -4339,14 +4279,6 @@ packages:
|
||||
unist-util-visit: 4.1.2
|
||||
dev: false
|
||||
|
||||
/mdast-util-find-and-replace@1.1.1:
|
||||
resolution: {integrity: sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==}
|
||||
dependencies:
|
||||
escape-string-regexp: 4.0.0
|
||||
unist-util-is: 4.1.0
|
||||
unist-util-visit-parents: 3.1.1
|
||||
dev: false
|
||||
|
||||
/mdast-util-find-and-replace@2.2.2:
|
||||
resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==}
|
||||
dependencies:
|
||||
@@ -4356,18 +4288,6 @@ packages:
|
||||
unist-util-visit-parents: 5.1.3
|
||||
dev: false
|
||||
|
||||
/mdast-util-from-markdown@0.8.5:
|
||||
resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==}
|
||||
dependencies:
|
||||
'@types/mdast': 3.0.13
|
||||
mdast-util-to-string: 2.0.0
|
||||
micromark: 2.11.4
|
||||
parse-entities: 2.0.0
|
||||
unist-util-stringify-position: 2.0.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/mdast-util-from-markdown@1.3.1:
|
||||
resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==}
|
||||
dependencies:
|
||||
@@ -4387,16 +4307,6 @@ packages:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/mdast-util-gfm-autolink-literal@0.1.3:
|
||||
resolution: {integrity: sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==}
|
||||
dependencies:
|
||||
ccount: 1.1.0
|
||||
mdast-util-find-and-replace: 1.1.1
|
||||
micromark: 2.11.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/mdast-util-gfm-autolink-literal@1.0.3:
|
||||
resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==}
|
||||
dependencies:
|
||||
@@ -4414,12 +4324,6 @@ packages:
|
||||
micromark-util-normalize-identifier: 1.1.0
|
||||
dev: false
|
||||
|
||||
/mdast-util-gfm-strikethrough@0.2.3:
|
||||
resolution: {integrity: sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==}
|
||||
dependencies:
|
||||
mdast-util-to-markdown: 0.6.5
|
||||
dev: false
|
||||
|
||||
/mdast-util-gfm-strikethrough@1.0.3:
|
||||
resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==}
|
||||
dependencies:
|
||||
@@ -4427,13 +4331,6 @@ packages:
|
||||
mdast-util-to-markdown: 1.5.0
|
||||
dev: false
|
||||
|
||||
/mdast-util-gfm-table@0.1.6:
|
||||
resolution: {integrity: sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==}
|
||||
dependencies:
|
||||
markdown-table: 2.0.0
|
||||
mdast-util-to-markdown: 0.6.5
|
||||
dev: false
|
||||
|
||||
/mdast-util-gfm-table@1.0.7:
|
||||
resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==}
|
||||
dependencies:
|
||||
@@ -4445,12 +4342,6 @@ packages:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/mdast-util-gfm-task-list-item@0.1.6:
|
||||
resolution: {integrity: sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==}
|
||||
dependencies:
|
||||
mdast-util-to-markdown: 0.6.5
|
||||
dev: false
|
||||
|
||||
/mdast-util-gfm-task-list-item@1.0.2:
|
||||
resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==}
|
||||
dependencies:
|
||||
@@ -4458,18 +4349,6 @@ packages:
|
||||
mdast-util-to-markdown: 1.5.0
|
||||
dev: false
|
||||
|
||||
/mdast-util-gfm@0.1.2:
|
||||
resolution: {integrity: sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==}
|
||||
dependencies:
|
||||
mdast-util-gfm-autolink-literal: 0.1.3
|
||||
mdast-util-gfm-strikethrough: 0.2.3
|
||||
mdast-util-gfm-table: 0.1.6
|
||||
mdast-util-gfm-task-list-item: 0.1.6
|
||||
mdast-util-to-markdown: 0.6.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/mdast-util-gfm@2.0.2:
|
||||
resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==}
|
||||
dependencies:
|
||||
@@ -4519,17 +4398,6 @@ packages:
|
||||
unist-util-visit: 4.1.2
|
||||
dev: false
|
||||
|
||||
/mdast-util-to-markdown@0.6.5:
|
||||
resolution: {integrity: sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==}
|
||||
dependencies:
|
||||
'@types/unist': 2.0.8
|
||||
longest-streak: 2.0.4
|
||||
mdast-util-to-string: 2.0.0
|
||||
parse-entities: 2.0.0
|
||||
repeat-string: 1.6.1
|
||||
zwitch: 1.0.5
|
||||
dev: false
|
||||
|
||||
/mdast-util-to-markdown@1.5.0:
|
||||
resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==}
|
||||
dependencies:
|
||||
@@ -4543,10 +4411,6 @@ packages:
|
||||
zwitch: 2.0.4
|
||||
dev: false
|
||||
|
||||
/mdast-util-to-string@2.0.0:
|
||||
resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==}
|
||||
dev: false
|
||||
|
||||
/mdast-util-to-string@3.2.0:
|
||||
resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==}
|
||||
dependencies:
|
||||
@@ -4613,14 +4477,6 @@ packages:
|
||||
uvu: 0.5.6
|
||||
dev: false
|
||||
|
||||
/micromark-extension-gfm-autolink-literal@0.5.7:
|
||||
resolution: {integrity: sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==}
|
||||
dependencies:
|
||||
micromark: 2.11.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/micromark-extension-gfm-autolink-literal@1.0.5:
|
||||
resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==}
|
||||
dependencies:
|
||||
@@ -4643,14 +4499,6 @@ packages:
|
||||
uvu: 0.5.6
|
||||
dev: false
|
||||
|
||||
/micromark-extension-gfm-strikethrough@0.6.5:
|
||||
resolution: {integrity: sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==}
|
||||
dependencies:
|
||||
micromark: 2.11.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/micromark-extension-gfm-strikethrough@1.0.7:
|
||||
resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==}
|
||||
dependencies:
|
||||
@@ -4662,14 +4510,6 @@ packages:
|
||||
uvu: 0.5.6
|
||||
dev: false
|
||||
|
||||
/micromark-extension-gfm-table@0.4.3:
|
||||
resolution: {integrity: sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==}
|
||||
dependencies:
|
||||
micromark: 2.11.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/micromark-extension-gfm-table@1.0.7:
|
||||
resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==}
|
||||
dependencies:
|
||||
@@ -4680,24 +4520,12 @@ packages:
|
||||
uvu: 0.5.6
|
||||
dev: false
|
||||
|
||||
/micromark-extension-gfm-tagfilter@0.3.0:
|
||||
resolution: {integrity: sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==}
|
||||
dev: false
|
||||
|
||||
/micromark-extension-gfm-tagfilter@1.0.2:
|
||||
resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==}
|
||||
dependencies:
|
||||
micromark-util-types: 1.1.0
|
||||
dev: false
|
||||
|
||||
/micromark-extension-gfm-task-list-item@0.3.3:
|
||||
resolution: {integrity: sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==}
|
||||
dependencies:
|
||||
micromark: 2.11.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/micromark-extension-gfm-task-list-item@1.0.5:
|
||||
resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==}
|
||||
dependencies:
|
||||
@@ -4708,19 +4536,6 @@ packages:
|
||||
uvu: 0.5.6
|
||||
dev: false
|
||||
|
||||
/micromark-extension-gfm@0.3.3:
|
||||
resolution: {integrity: sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==}
|
||||
dependencies:
|
||||
micromark: 2.11.4
|
||||
micromark-extension-gfm-autolink-literal: 0.5.7
|
||||
micromark-extension-gfm-strikethrough: 0.6.5
|
||||
micromark-extension-gfm-table: 0.4.3
|
||||
micromark-extension-gfm-tagfilter: 0.3.0
|
||||
micromark-extension-gfm-task-list-item: 0.3.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/micromark-extension-gfm@2.0.3:
|
||||
resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==}
|
||||
dependencies:
|
||||
@@ -4876,15 +4691,6 @@ packages:
|
||||
resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==}
|
||||
dev: false
|
||||
|
||||
/micromark@2.11.4:
|
||||
resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==}
|
||||
dependencies:
|
||||
debug: 4.3.4
|
||||
parse-entities: 2.0.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/micromark@3.2.0:
|
||||
resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==}
|
||||
dependencies:
|
||||
@@ -5366,17 +5172,6 @@ packages:
|
||||
callsites: 3.1.0
|
||||
dev: true
|
||||
|
||||
/parse-entities@2.0.0:
|
||||
resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==}
|
||||
dependencies:
|
||||
character-entities: 1.2.4
|
||||
character-entities-legacy: 1.1.4
|
||||
character-reference-invalid: 1.1.4
|
||||
is-alphanumerical: 1.0.4
|
||||
is-decimal: 1.0.4
|
||||
is-hexadecimal: 1.0.4
|
||||
dev: false
|
||||
|
||||
/parse5@6.0.1:
|
||||
resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
|
||||
dev: false
|
||||
@@ -5852,15 +5647,6 @@ packages:
|
||||
unified: 10.1.2
|
||||
dev: false
|
||||
|
||||
/remark-gfm@1.0.0:
|
||||
resolution: {integrity: sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==}
|
||||
dependencies:
|
||||
mdast-util-gfm: 0.1.2
|
||||
micromark-extension-gfm: 0.3.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/remark-gfm@3.0.1:
|
||||
resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==}
|
||||
dependencies:
|
||||
@@ -5891,14 +5677,6 @@ packages:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/remark-parse@9.0.0:
|
||||
resolution: {integrity: sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==}
|
||||
dependencies:
|
||||
mdast-util-from-markdown: 0.8.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/remark-rehype@10.1.0:
|
||||
resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==}
|
||||
dependencies:
|
||||
@@ -5908,13 +5686,6 @@ packages:
|
||||
unified: 10.1.2
|
||||
dev: false
|
||||
|
||||
/remark-remove-comments@0.2.0:
|
||||
resolution: {integrity: sha512-faGaTeqp0bvDgE0uTofa90EBHD4HXeHN+EUaPDR9datgFvaPkYcLxakaJud9LnomFPkOhx0A9NMYFk/lln/etQ==}
|
||||
dependencies:
|
||||
html-comment-regex: 1.1.2
|
||||
unist-util-visit: 2.0.3
|
||||
dev: false
|
||||
|
||||
/remark-stringify@10.0.3:
|
||||
resolution: {integrity: sha512-koyOzCMYoUHudypbj4XpnAKFbkddRMYZHwghnxd7ue5210WzGw6kOBwauJTRUMq16jsovXx8dYNvSSWP89kZ3A==}
|
||||
dependencies:
|
||||
@@ -5923,21 +5694,10 @@ packages:
|
||||
unified: 10.1.2
|
||||
dev: false
|
||||
|
||||
/remark-stringify@9.0.1:
|
||||
resolution: {integrity: sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==}
|
||||
dependencies:
|
||||
mdast-util-to-markdown: 0.6.5
|
||||
dev: false
|
||||
|
||||
/remove-accents@0.4.2:
|
||||
resolution: {integrity: sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==}
|
||||
dev: false
|
||||
|
||||
/repeat-string@1.6.1:
|
||||
resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
|
||||
engines: {node: '>=0.10'}
|
||||
dev: false
|
||||
|
||||
/replicate@0.20.1:
|
||||
resolution: {integrity: sha512-QVyI1rowGsSfNuDrRmumYPdCHa/fN/RkI3NHpcK0i5hSSiWK69URAyheAC/0MIAiS3oUs4kD56PB9zEI4oHENw==}
|
||||
engines: {git: '>=2.11.0', node: '>=18.0.0', npm: '>=7.19.0', yarn: '>=1.7.0'}
|
||||
@@ -6381,22 +6141,6 @@ packages:
|
||||
engines: {node: '>=6'}
|
||||
dev: true
|
||||
|
||||
/telegramify-markdown@1.1.0:
|
||||
resolution: {integrity: sha512-GQKKjGAafuqJC+7Gv87gk3qkQv2EeXk+z173FBL7vP5Z9Zai2JEBlo9xOcRacbXV6zHDfHwoI/rP/GkuPulPAw==}
|
||||
dependencies:
|
||||
mdast-util-gfm-table: 1.0.7
|
||||
mdast-util-to-markdown: 0.6.5
|
||||
remark-gfm: 1.0.0
|
||||
remark-parse: 9.0.0
|
||||
remark-remove-comments: 0.2.0
|
||||
remark-stringify: 9.0.1
|
||||
unified: 9.2.2
|
||||
unist-util-remove: 2.1.0
|
||||
unist-util-visit: 2.0.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/text-table@0.2.0:
|
||||
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
|
||||
dev: true
|
||||
@@ -6452,10 +6196,6 @@ packages:
|
||||
resolution: {integrity: sha512-5UR5Biq4VlVOtzqkm2AZlgvSlDJtME46uV0br0gENbwN4l5+mMKT4b9gJKqWtuL2zAIqajGJGuvbCbcAJUZqBg==}
|
||||
dev: false
|
||||
|
||||
/trough@1.0.5:
|
||||
resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==}
|
||||
dev: false
|
||||
|
||||
/trough@2.1.0:
|
||||
resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==}
|
||||
dev: false
|
||||
@@ -6575,18 +6315,6 @@ packages:
|
||||
vfile: 5.3.7
|
||||
dev: false
|
||||
|
||||
/unified@9.2.2:
|
||||
resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==}
|
||||
dependencies:
|
||||
'@types/unist': 2.0.8
|
||||
bail: 1.0.5
|
||||
extend: 3.0.2
|
||||
is-buffer: 2.0.5
|
||||
is-plain-obj: 2.1.0
|
||||
trough: 1.0.5
|
||||
vfile: 4.2.1
|
||||
dev: false
|
||||
|
||||
/unist-util-find-after@4.0.1:
|
||||
resolution: {integrity: sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw==}
|
||||
dependencies:
|
||||
@@ -6598,10 +6326,6 @@ packages:
|
||||
resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==}
|
||||
dev: false
|
||||
|
||||
/unist-util-is@4.1.0:
|
||||
resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==}
|
||||
dev: false
|
||||
|
||||
/unist-util-is@5.2.1:
|
||||
resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==}
|
||||
dependencies:
|
||||
@@ -6627,12 +6351,6 @@ packages:
|
||||
unist-util-visit: 4.1.2
|
||||
dev: false
|
||||
|
||||
/unist-util-remove@2.1.0:
|
||||
resolution: {integrity: sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==}
|
||||
dependencies:
|
||||
unist-util-is: 4.1.0
|
||||
dev: false
|
||||
|
||||
/unist-util-remove@4.0.0:
|
||||
resolution: {integrity: sha512-b4gokeGId57UVRX/eVKej5gXqGlc9+trkORhFJpu9raqZkZhU0zm8Doi05+HaiBsMEIJowL+2WtQ5ItjsngPXg==}
|
||||
dependencies:
|
||||
@@ -6641,25 +6359,12 @@ packages:
|
||||
unist-util-visit-parents: 6.0.1
|
||||
dev: false
|
||||
|
||||
/unist-util-stringify-position@2.0.3:
|
||||
resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==}
|
||||
dependencies:
|
||||
'@types/unist': 2.0.8
|
||||
dev: false
|
||||
|
||||
/unist-util-stringify-position@3.0.3:
|
||||
resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==}
|
||||
dependencies:
|
||||
'@types/unist': 2.0.8
|
||||
dev: false
|
||||
|
||||
/unist-util-visit-parents@3.1.1:
|
||||
resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==}
|
||||
dependencies:
|
||||
'@types/unist': 2.0.8
|
||||
unist-util-is: 4.1.0
|
||||
dev: false
|
||||
|
||||
/unist-util-visit-parents@5.1.3:
|
||||
resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==}
|
||||
dependencies:
|
||||
@@ -6674,14 +6379,6 @@ packages:
|
||||
unist-util-is: 6.0.0
|
||||
dev: false
|
||||
|
||||
/unist-util-visit@2.0.3:
|
||||
resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==}
|
||||
dependencies:
|
||||
'@types/unist': 2.0.8
|
||||
unist-util-is: 4.1.0
|
||||
unist-util-visit-parents: 3.1.1
|
||||
dev: false
|
||||
|
||||
/unist-util-visit@4.1.2:
|
||||
resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==}
|
||||
dependencies:
|
||||
@@ -6799,13 +6496,6 @@ packages:
|
||||
vfile: 5.3.7
|
||||
dev: false
|
||||
|
||||
/vfile-message@2.0.4:
|
||||
resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==}
|
||||
dependencies:
|
||||
'@types/unist': 2.0.8
|
||||
unist-util-stringify-position: 2.0.3
|
||||
dev: false
|
||||
|
||||
/vfile-message@3.1.4:
|
||||
resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==}
|
||||
dependencies:
|
||||
@@ -6813,15 +6503,6 @@ packages:
|
||||
unist-util-stringify-position: 3.0.3
|
||||
dev: false
|
||||
|
||||
/vfile@4.2.1:
|
||||
resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==}
|
||||
dependencies:
|
||||
'@types/unist': 2.0.8
|
||||
is-buffer: 2.0.5
|
||||
unist-util-stringify-position: 2.0.3
|
||||
vfile-message: 2.0.4
|
||||
dev: false
|
||||
|
||||
/vfile@5.3.7:
|
||||
resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==}
|
||||
dependencies:
|
||||
@@ -7007,10 +6688,6 @@ packages:
|
||||
use-sync-external-store: 1.2.0(react@18.2.0)
|
||||
dev: false
|
||||
|
||||
/zwitch@1.0.5:
|
||||
resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==}
|
||||
dev: false
|
||||
|
||||
/zwitch@2.0.4:
|
||||
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
|
||||
dev: false
|
||||
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
declare module "telegramify-markdown";
|
||||
Reference in New Issue
Block a user