mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-20 20:29:06 +00:00
New summary (#283)
* handover final summary to Zephyr deployment * fix display error * push new summary feature * fix failing test case * Added markdown support for final summary * update UI render issue * retain sentence tokenizer call --------- Co-authored-by: Koper <andreas@monadical.com>
This commit is contained in:
208
server/gpu/modal/reflector_llm_zephyr.py
Normal file
208
server/gpu/modal/reflector_llm_zephyr.py
Normal file
@@ -0,0 +1,208 @@
|
|||||||
|
"""
|
||||||
|
Reflector GPU backend - LLM
|
||||||
|
===========================
|
||||||
|
|
||||||
|
"""
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
import modal
|
||||||
|
from modal import Image, Secret, Stub, asgi_app, method
|
||||||
|
|
||||||
|
# LLM
|
||||||
|
LLM_MODEL: str = "HuggingFaceH4/zephyr-7b-alpha"
|
||||||
|
LLM_LOW_CPU_MEM_USAGE: bool = True
|
||||||
|
LLM_TORCH_DTYPE: str = "bfloat16"
|
||||||
|
LLM_MAX_NEW_TOKENS: int = 300
|
||||||
|
|
||||||
|
IMAGE_MODEL_DIR = "/root/llm_models"
|
||||||
|
|
||||||
|
stub = Stub(name="reflector-llm-zephyr")
|
||||||
|
|
||||||
|
|
||||||
|
def download_llm():
|
||||||
|
from huggingface_hub import snapshot_download
|
||||||
|
|
||||||
|
print("Downloading LLM model")
|
||||||
|
snapshot_download(LLM_MODEL, cache_dir=IMAGE_MODEL_DIR)
|
||||||
|
print("LLM model downloaded")
|
||||||
|
|
||||||
|
|
||||||
|
def migrate_cache_llm():
|
||||||
|
"""
|
||||||
|
XXX The cache for model files in Transformers v4.22.0 has been updated.
|
||||||
|
Migrating your old cache. This is a one-time only operation. You can
|
||||||
|
interrupt this and resume the migration later on by calling
|
||||||
|
`transformers.utils.move_cache()`.
|
||||||
|
"""
|
||||||
|
from transformers.utils.hub import move_cache
|
||||||
|
|
||||||
|
print("Moving LLM cache")
|
||||||
|
move_cache(cache_dir=IMAGE_MODEL_DIR, new_cache_dir=IMAGE_MODEL_DIR)
|
||||||
|
print("LLM cache moved")
|
||||||
|
|
||||||
|
|
||||||
|
llm_image = (
|
||||||
|
Image.debian_slim(python_version="3.10.8")
|
||||||
|
.apt_install("git")
|
||||||
|
.pip_install(
|
||||||
|
"transformers==4.34.0",
|
||||||
|
"torch",
|
||||||
|
"sentencepiece",
|
||||||
|
"protobuf",
|
||||||
|
"jsonformer==0.12.0",
|
||||||
|
"accelerate==0.21.0",
|
||||||
|
"einops==0.6.1",
|
||||||
|
"hf-transfer~=0.1",
|
||||||
|
"huggingface_hub==0.16.4"
|
||||||
|
)
|
||||||
|
.env({"HF_HUB_ENABLE_HF_TRANSFER": "1"})
|
||||||
|
.run_function(download_llm)
|
||||||
|
.run_function(migrate_cache_llm)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@stub.cls(
|
||||||
|
gpu="A10G",
|
||||||
|
timeout=60 * 5,
|
||||||
|
container_idle_timeout=60 * 5,
|
||||||
|
concurrency_limit=2,
|
||||||
|
image=llm_image,
|
||||||
|
)
|
||||||
|
class LLM:
|
||||||
|
def __enter__(self):
|
||||||
|
import torch
|
||||||
|
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
|
||||||
|
|
||||||
|
print("Instance llm model")
|
||||||
|
model = AutoModelForCausalLM.from_pretrained(
|
||||||
|
LLM_MODEL,
|
||||||
|
torch_dtype=getattr(torch, LLM_TORCH_DTYPE),
|
||||||
|
low_cpu_mem_usage=LLM_LOW_CPU_MEM_USAGE,
|
||||||
|
cache_dir=IMAGE_MODEL_DIR
|
||||||
|
)
|
||||||
|
|
||||||
|
# JSONFormer doesn't yet support generation configs
|
||||||
|
print("Instance llm generation config")
|
||||||
|
model.config.max_new_tokens = LLM_MAX_NEW_TOKENS
|
||||||
|
|
||||||
|
# generation configuration
|
||||||
|
gen_cfg = GenerationConfig.from_model_config(model.config)
|
||||||
|
gen_cfg.max_new_tokens = LLM_MAX_NEW_TOKENS
|
||||||
|
|
||||||
|
# load tokenizer
|
||||||
|
print("Instance llm tokenizer")
|
||||||
|
tokenizer = AutoTokenizer.from_pretrained(
|
||||||
|
LLM_MODEL,
|
||||||
|
cache_dir=IMAGE_MODEL_DIR
|
||||||
|
)
|
||||||
|
gen_cfg.pad_token_id = tokenizer.eos_token_id
|
||||||
|
gen_cfg.eos_token_id = tokenizer.eos_token_id
|
||||||
|
tokenizer.pad_token = tokenizer.eos_token
|
||||||
|
model.config.pad_token_id = tokenizer.eos_token_id
|
||||||
|
|
||||||
|
# move model to gpu
|
||||||
|
print("Move llm model to GPU")
|
||||||
|
model = model.cuda()
|
||||||
|
|
||||||
|
print("Warmup llm done")
|
||||||
|
self.model = model
|
||||||
|
self.tokenizer = tokenizer
|
||||||
|
self.gen_cfg = gen_cfg
|
||||||
|
self.GenerationConfig = GenerationConfig
|
||||||
|
|
||||||
|
def __exit__(self, *args):
|
||||||
|
print("Exit llm")
|
||||||
|
|
||||||
|
@method()
|
||||||
|
def generate(self, prompt: str, gen_schema: str | None, gen_cfg: str | None) -> dict:
|
||||||
|
"""
|
||||||
|
Perform a generation action using the LLM
|
||||||
|
"""
|
||||||
|
print(f"Generate {prompt=}")
|
||||||
|
if gen_cfg:
|
||||||
|
gen_cfg = self.GenerationConfig.from_dict(json.loads(gen_cfg))
|
||||||
|
gen_cfg.pad_token_id = self.tokenizer.eos_token_id
|
||||||
|
gen_cfg.eos_token_id = self.tokenizer.eos_token_id
|
||||||
|
else:
|
||||||
|
gen_cfg = self.gen_cfg
|
||||||
|
|
||||||
|
# If a gen_schema is given, conform to gen_schema
|
||||||
|
if gen_schema:
|
||||||
|
import jsonformer
|
||||||
|
|
||||||
|
print(f"Schema {gen_schema=}")
|
||||||
|
jsonformer_llm = jsonformer.Jsonformer(
|
||||||
|
model=self.model,
|
||||||
|
tokenizer=self.tokenizer,
|
||||||
|
json_schema=json.loads(gen_schema),
|
||||||
|
prompt=prompt,
|
||||||
|
max_string_token_length=gen_cfg.max_new_tokens
|
||||||
|
)
|
||||||
|
response = jsonformer_llm()
|
||||||
|
else:
|
||||||
|
# If no gen_schema, perform prompt only generation
|
||||||
|
|
||||||
|
# tokenize prompt
|
||||||
|
input_ids = self.tokenizer.encode(prompt, return_tensors="pt").to(
|
||||||
|
self.model.device
|
||||||
|
)
|
||||||
|
output = self.model.generate(input_ids, generation_config=gen_cfg)
|
||||||
|
|
||||||
|
# decode output
|
||||||
|
response = self.tokenizer.decode(output[0].cpu(), skip_special_tokens=True)
|
||||||
|
response = response[len(prompt):]
|
||||||
|
response = {
|
||||||
|
"long_summary": response
|
||||||
|
}
|
||||||
|
print(f"Generated {response=}")
|
||||||
|
return {"text": response}
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------
|
||||||
|
# Web API
|
||||||
|
# -------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
@stub.function(
|
||||||
|
container_idle_timeout=60 * 10,
|
||||||
|
timeout=60 * 5,
|
||||||
|
secrets=[
|
||||||
|
Secret.from_name("reflector-gpu"),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
@asgi_app()
|
||||||
|
def web():
|
||||||
|
from fastapi import Depends, FastAPI, HTTPException, status
|
||||||
|
from fastapi.security import OAuth2PasswordBearer
|
||||||
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
llmstub = LLM()
|
||||||
|
|
||||||
|
app = FastAPI()
|
||||||
|
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
|
||||||
|
|
||||||
|
def apikey_auth(apikey: str = Depends(oauth2_scheme)):
|
||||||
|
if apikey != os.environ["REFLECTOR_GPU_APIKEY"]:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_401_UNAUTHORIZED,
|
||||||
|
detail="Invalid API key",
|
||||||
|
headers={"WWW-Authenticate": "Bearer"},
|
||||||
|
)
|
||||||
|
|
||||||
|
class LLMRequest(BaseModel):
|
||||||
|
prompt: str
|
||||||
|
gen_schema: Optional[dict] = None
|
||||||
|
gen_cfg: Optional[dict] = None
|
||||||
|
|
||||||
|
@app.post("/llm", dependencies=[Depends(apikey_auth)])
|
||||||
|
async def llm(
|
||||||
|
req: LLMRequest,
|
||||||
|
):
|
||||||
|
gen_schema = json.dumps(req.gen_schema) if req.gen_schema else None
|
||||||
|
gen_cfg = json.dumps(req.gen_cfg) if req.gen_cfg else None
|
||||||
|
func = llmstub.generate.spawn(prompt=req.prompt, gen_schema=gen_schema, gen_cfg=gen_cfg)
|
||||||
|
result = func.get()
|
||||||
|
return result
|
||||||
|
|
||||||
|
return app
|
||||||
@@ -258,7 +258,7 @@ class LLM:
|
|||||||
"""
|
"""
|
||||||
Choose the token size to set as the threshold to pack the LLM calls
|
Choose the token size to set as the threshold to pack the LLM calls
|
||||||
"""
|
"""
|
||||||
buffer_token_size = 25
|
buffer_token_size = 100
|
||||||
default_output_tokens = 1000
|
default_output_tokens = 1000
|
||||||
context_window = self.tokenizer.model_max_length
|
context_window = self.tokenizer.model_max_length
|
||||||
tokens = self.tokenizer.tokenize(
|
tokens = self.tokenizer.tokenize(
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ class ModalLLM(LLM):
|
|||||||
"""
|
"""
|
||||||
# TODO: Query the specific GPU platform
|
# TODO: Query the specific GPU platform
|
||||||
# Replace this with a HTTP call
|
# Replace this with a HTTP call
|
||||||
return ["lmsys/vicuna-13b-v1.5"]
|
return ["lmsys/vicuna-13b-v1.5", "HuggingFaceH4/zephyr-7b-alpha"]
|
||||||
|
|
||||||
async def _generate(
|
async def _generate(
|
||||||
self, prompt: str, gen_schema: dict | None, gen_cfg: dict | None, **kwargs
|
self, prompt: str, gen_schema: dict | None, gen_cfg: dict | None, **kwargs
|
||||||
@@ -33,6 +33,13 @@ class ModalLLM(LLM):
|
|||||||
json_payload["gen_schema"] = gen_schema
|
json_payload["gen_schema"] = gen_schema
|
||||||
if gen_cfg:
|
if gen_cfg:
|
||||||
json_payload["gen_cfg"] = gen_cfg
|
json_payload["gen_cfg"] = gen_cfg
|
||||||
|
|
||||||
|
# Handing over generation of the final summary to Zephyr model
|
||||||
|
# but replacing the Vicuna model will happen after more testing
|
||||||
|
# TODO: Create a mapping of model names and cloud deployments
|
||||||
|
if self.model_name == "HuggingFaceH4/zephyr-7b-alpha":
|
||||||
|
self.llm_url = settings.ZEPHYR_LLM_URL + "/llm"
|
||||||
|
|
||||||
async with httpx.AsyncClient() as client:
|
async with httpx.AsyncClient() as client:
|
||||||
response = await retry(client.post)(
|
response = await retry(client.post)(
|
||||||
self.llm_url,
|
self.llm_url,
|
||||||
|
|||||||
@@ -144,7 +144,76 @@ class TopicParams(LLMTaskParams):
|
|||||||
return self._task_params
|
return self._task_params
|
||||||
|
|
||||||
|
|
||||||
|
class BulletedSummaryParams(LLMTaskParams):
|
||||||
|
def __init__(self, **kwargs):
|
||||||
|
super().__init__(**kwargs)
|
||||||
|
self._gen_cfg = GenerationConfig(
|
||||||
|
max_new_tokens=800,
|
||||||
|
num_beams=1,
|
||||||
|
do_sample=True,
|
||||||
|
temperature=0.2,
|
||||||
|
early_stopping=True,
|
||||||
|
)
|
||||||
|
self._instruct = """
|
||||||
|
Given a meeting transcript, extract the key things discussed in the
|
||||||
|
form of a list.
|
||||||
|
|
||||||
|
While generating the response, follow the constraints mentioned below.
|
||||||
|
|
||||||
|
Summary constraints:
|
||||||
|
i) Do not add new content, except to fix spelling or punctuation.
|
||||||
|
ii) Do not add any prefixes or numbering in the response.
|
||||||
|
iii) The summarization should be as information dense as possible.
|
||||||
|
iv) Do not add any additional sections like Note, Conclusion, etc. in
|
||||||
|
the response.
|
||||||
|
|
||||||
|
Response format:
|
||||||
|
i) The response should be in the form of a bulleted list.
|
||||||
|
ii) Iteratively merge all the relevant paragraphs together to keep the
|
||||||
|
number of paragraphs to a minimum.
|
||||||
|
iii) Remove any unfinished sentences from the final response.
|
||||||
|
iv) Do not include narrative or reporting clauses.
|
||||||
|
v) Use "*" as the bullet icon.
|
||||||
|
"""
|
||||||
|
self._task_params = TaskParams(
|
||||||
|
instruct=self._instruct, gen_schema=None, gen_cfg=self._gen_cfg
|
||||||
|
)
|
||||||
|
|
||||||
|
def _get_task_params(self) -> TaskParams:
|
||||||
|
"""gen_schema
|
||||||
|
Return the parameters associated with a specific LLM task
|
||||||
|
"""
|
||||||
|
return self._task_params
|
||||||
|
|
||||||
|
|
||||||
|
class MergedSummaryParams(LLMTaskParams):
|
||||||
|
def __init__(self, **kwargs):
|
||||||
|
super().__init__(**kwargs)
|
||||||
|
self._gen_cfg = GenerationConfig(
|
||||||
|
max_new_tokens=600,
|
||||||
|
num_beams=1,
|
||||||
|
do_sample=True,
|
||||||
|
temperature=0.2,
|
||||||
|
early_stopping=True,
|
||||||
|
)
|
||||||
|
self._instruct = """
|
||||||
|
Given the key points of a meeting, summarize the points to describe the
|
||||||
|
meeting in the form of paragraphs.
|
||||||
|
"""
|
||||||
|
self._task_params = TaskParams(
|
||||||
|
instruct=self._instruct, gen_schema=None, gen_cfg=self._gen_cfg
|
||||||
|
)
|
||||||
|
|
||||||
|
def _get_task_params(self) -> TaskParams:
|
||||||
|
"""gen_schema
|
||||||
|
Return the parameters associated with a specific LLM task
|
||||||
|
"""
|
||||||
|
return self._task_params
|
||||||
|
|
||||||
|
|
||||||
LLMTaskParams.register("topic", TopicParams)
|
LLMTaskParams.register("topic", TopicParams)
|
||||||
LLMTaskParams.register("final_title", FinalTitleParams)
|
LLMTaskParams.register("final_title", FinalTitleParams)
|
||||||
LLMTaskParams.register("final_short_summary", FinalShortSummaryParams)
|
LLMTaskParams.register("final_short_summary", FinalShortSummaryParams)
|
||||||
LLMTaskParams.register("final_long_summary", FinalLongSummaryParams)
|
LLMTaskParams.register("final_long_summary", FinalLongSummaryParams)
|
||||||
|
LLMTaskParams.register("bullet_summary", BulletedSummaryParams)
|
||||||
|
LLMTaskParams.register("merged_summary", MergedSummaryParams)
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import nltk
|
||||||
from reflector.llm import LLM, LLMTaskParams
|
from reflector.llm import LLM, LLMTaskParams
|
||||||
from reflector.processors.base import Processor
|
from reflector.processors.base import Processor
|
||||||
from reflector.processors.types import FinalLongSummary, TitleSummary
|
from reflector.processors.types import FinalLongSummary, TitleSummary
|
||||||
@@ -10,36 +11,58 @@ class TranscriptFinalLongSummaryProcessor(Processor):
|
|||||||
|
|
||||||
INPUT_TYPE = TitleSummary
|
INPUT_TYPE = TitleSummary
|
||||||
OUTPUT_TYPE = FinalLongSummary
|
OUTPUT_TYPE = FinalLongSummary
|
||||||
TASK = "final_long_summary"
|
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
self.chunks: list[TitleSummary] = []
|
self.chunks: list[TitleSummary] = []
|
||||||
self.llm = LLM.get_instance()
|
self.llm = LLM.get_instance(model_name="HuggingFaceH4/zephyr-7b-alpha")
|
||||||
self.params = LLMTaskParams.get_instance(self.TASK).task_params
|
|
||||||
|
|
||||||
async def _push(self, data: TitleSummary):
|
async def _push(self, data: TitleSummary):
|
||||||
self.chunks.append(data)
|
self.chunks.append(data)
|
||||||
|
|
||||||
|
async def get_bullet_summary(self, text: str) -> str:
|
||||||
|
params = LLMTaskParams.get_instance("bullet_summary").task_params
|
||||||
|
chunks = list(self.llm.split_corpus(corpus=text, task_params=params))
|
||||||
|
|
||||||
|
bullet_summary = ""
|
||||||
|
for chunk in chunks:
|
||||||
|
prompt = self.llm.create_prompt(instruct=params.instruct, text=chunk)
|
||||||
|
summary_result = await self.llm.generate(
|
||||||
|
prompt=prompt,
|
||||||
|
gen_schema=params.gen_schema,
|
||||||
|
gen_cfg=params.gen_cfg,
|
||||||
|
logger=self.logger,
|
||||||
|
)
|
||||||
|
bullet_summary += summary_result["long_summary"]
|
||||||
|
return bullet_summary
|
||||||
|
|
||||||
|
async def get_merged_summary(self, text: str) -> str:
|
||||||
|
params = LLMTaskParams.get_instance("merged_summary").task_params
|
||||||
|
chunks = list(self.llm.split_corpus(corpus=text, task_params=params))
|
||||||
|
|
||||||
|
merged_summary = ""
|
||||||
|
for chunk in chunks:
|
||||||
|
prompt = self.llm.create_prompt(instruct=params.instruct, text=chunk)
|
||||||
|
summary_result = await self.llm.generate(
|
||||||
|
prompt=prompt,
|
||||||
|
gen_schema=params.gen_schema,
|
||||||
|
gen_cfg=params.gen_cfg,
|
||||||
|
logger=self.logger,
|
||||||
|
)
|
||||||
|
merged_summary += summary_result["long_summary"]
|
||||||
|
return merged_summary
|
||||||
|
|
||||||
async def get_long_summary(self, text: str) -> str:
|
async def get_long_summary(self, text: str) -> str:
|
||||||
"""
|
"""
|
||||||
Generate a long version of the final summary
|
Generate a long version of the final summary
|
||||||
"""
|
"""
|
||||||
self.logger.info(f"Smoothing out {len(text)} length summary to a long summary")
|
bullet_summary = await self.get_bullet_summary(text)
|
||||||
chunks = list(self.llm.split_corpus(corpus=text, task_params=self.params))
|
merged_summary = await self.get_merged_summary(bullet_summary)
|
||||||
|
|
||||||
accumulated_summaries = ""
|
return merged_summary
|
||||||
for chunk in chunks:
|
|
||||||
prompt = self.llm.create_prompt(instruct=self.params.instruct, text=chunk)
|
|
||||||
summary_result = await self.llm.generate(
|
|
||||||
prompt=prompt,
|
|
||||||
gen_schema=self.params.gen_schema,
|
|
||||||
gen_cfg=self.params.gen_cfg,
|
|
||||||
logger=self.logger,
|
|
||||||
)
|
|
||||||
accumulated_summaries += summary_result["long_summary"]
|
|
||||||
|
|
||||||
return accumulated_summaries
|
def sentence_tokenize(self, text: str) -> [str]:
|
||||||
|
return nltk.sent_tokenize(text)
|
||||||
|
|
||||||
async def _flush(self):
|
async def _flush(self):
|
||||||
if not self.chunks:
|
if not self.chunks:
|
||||||
@@ -49,11 +72,25 @@ class TranscriptFinalLongSummaryProcessor(Processor):
|
|||||||
accumulated_summaries = " ".join([chunk.summary for chunk in self.chunks])
|
accumulated_summaries = " ".join([chunk.summary for chunk in self.chunks])
|
||||||
long_summary = await self.get_long_summary(accumulated_summaries)
|
long_summary = await self.get_long_summary(accumulated_summaries)
|
||||||
|
|
||||||
|
# Format the output as much as possible to be handled
|
||||||
|
# by front-end for displaying
|
||||||
|
summary_sentences = []
|
||||||
|
for sentence in self.sentence_tokenize(long_summary):
|
||||||
|
sentence = str(sentence).strip()
|
||||||
|
if sentence.startswith("- "):
|
||||||
|
sentence.replace("- ", "* ")
|
||||||
|
else:
|
||||||
|
sentence = "* " + sentence
|
||||||
|
sentence += " \n"
|
||||||
|
summary_sentences.append(sentence)
|
||||||
|
|
||||||
|
formatted_long_summary = "".join(summary_sentences)
|
||||||
|
|
||||||
last_chunk = self.chunks[-1]
|
last_chunk = self.chunks[-1]
|
||||||
duration = last_chunk.timestamp + last_chunk.duration
|
duration = last_chunk.timestamp + last_chunk.duration
|
||||||
|
|
||||||
final_long_summary = FinalLongSummary(
|
final_long_summary = FinalLongSummary(
|
||||||
long_summary=long_summary,
|
long_summary=formatted_long_summary,
|
||||||
duration=duration,
|
duration=duration,
|
||||||
)
|
)
|
||||||
await self.emit(final_long_summary)
|
await self.emit(final_long_summary)
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ class Settings(BaseSettings):
|
|||||||
LLM_TIMEOUT: int = 60 * 5 # take cold start into account
|
LLM_TIMEOUT: int = 60 * 5 # take cold start into account
|
||||||
LLM_MAX_TOKENS: int = 1024
|
LLM_MAX_TOKENS: int = 1024
|
||||||
LLM_TEMPERATURE: float = 0.7
|
LLM_TEMPERATURE: float = 0.7
|
||||||
|
ZEPHYR_LLM_URL: str | None = None
|
||||||
|
|
||||||
# LLM Banana configuration
|
# LLM Banana configuration
|
||||||
LLM_BANANA_API_KEY: str | None = None
|
LLM_BANANA_API_KEY: str | None = None
|
||||||
|
|||||||
@@ -93,3 +93,12 @@ def ensure_casing():
|
|||||||
with patch("reflector.llm.base.LLM.ensure_casing") as mock_casing:
|
with patch("reflector.llm.base.LLM.ensure_casing") as mock_casing:
|
||||||
mock_casing.return_value = "LLM TITLE"
|
mock_casing.return_value = "LLM TITLE"
|
||||||
yield
|
yield
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def sentence_tokenize():
|
||||||
|
with patch(
|
||||||
|
"reflector.processors.TranscriptFinalLongSummaryProcessor" ".sentence_tokenize"
|
||||||
|
) as mock_sent_tokenize:
|
||||||
|
mock_sent_tokenize.return_value = ["LLM LONG SUMMARY"]
|
||||||
|
yield
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ async def test_basic_process(
|
|||||||
dummy_llm,
|
dummy_llm,
|
||||||
dummy_processors,
|
dummy_processors,
|
||||||
ensure_casing,
|
ensure_casing,
|
||||||
|
sentence_tokenize,
|
||||||
):
|
):
|
||||||
# goal is to start the server, and send rtc audio to it
|
# goal is to start the server, and send rtc audio to it
|
||||||
# validate the events received
|
# validate the events received
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ async def test_transcript_rtc_and_websocket(
|
|||||||
dummy_processors,
|
dummy_processors,
|
||||||
ensure_casing,
|
ensure_casing,
|
||||||
appserver,
|
appserver,
|
||||||
|
sentence_tokenize,
|
||||||
):
|
):
|
||||||
# goal: start the server, exchange RTC, receive websocket events
|
# goal: start the server, exchange RTC, receive websocket events
|
||||||
# because of that, we need to start the server in a thread
|
# because of that, we need to start the server in a thread
|
||||||
@@ -156,7 +157,7 @@ async def test_transcript_rtc_and_websocket(
|
|||||||
|
|
||||||
assert "FINAL_LONG_SUMMARY" in eventnames
|
assert "FINAL_LONG_SUMMARY" in eventnames
|
||||||
ev = events[eventnames.index("FINAL_LONG_SUMMARY")]
|
ev = events[eventnames.index("FINAL_LONG_SUMMARY")]
|
||||||
assert ev["data"]["long_summary"] == "LLM LONG SUMMARY"
|
assert ev["data"]["long_summary"] == "* LLM LONG SUMMARY \n"
|
||||||
|
|
||||||
assert "FINAL_SHORT_SUMMARY" in eventnames
|
assert "FINAL_SHORT_SUMMARY" in eventnames
|
||||||
ev = events[eventnames.index("FINAL_SHORT_SUMMARY")]
|
ev = events[eventnames.index("FINAL_SHORT_SUMMARY")]
|
||||||
@@ -193,6 +194,7 @@ async def test_transcript_rtc_and_websocket_and_fr(
|
|||||||
dummy_processors,
|
dummy_processors,
|
||||||
ensure_casing,
|
ensure_casing,
|
||||||
appserver,
|
appserver,
|
||||||
|
sentence_tokenize,
|
||||||
):
|
):
|
||||||
# goal: start the server, exchange RTC, receive websocket events
|
# goal: start the server, exchange RTC, receive websocket events
|
||||||
# because of that, we need to start the server in a thread
|
# because of that, we need to start the server in a thread
|
||||||
@@ -292,7 +294,7 @@ async def test_transcript_rtc_and_websocket_and_fr(
|
|||||||
|
|
||||||
assert "FINAL_LONG_SUMMARY" in eventnames
|
assert "FINAL_LONG_SUMMARY" in eventnames
|
||||||
ev = events[eventnames.index("FINAL_LONG_SUMMARY")]
|
ev = events[eventnames.index("FINAL_LONG_SUMMARY")]
|
||||||
assert ev["data"]["long_summary"] == "LLM LONG SUMMARY"
|
assert ev["data"]["long_summary"] == "* LLM LONG SUMMARY \n"
|
||||||
|
|
||||||
assert "FINAL_SHORT_SUMMARY" in eventnames
|
assert "FINAL_SHORT_SUMMARY" in eventnames
|
||||||
ev = events[eventnames.index("FINAL_SHORT_SUMMARY")]
|
ev = events[eventnames.index("FINAL_SHORT_SUMMARY")]
|
||||||
|
|||||||
91
www/app/styles/markdown.css
Normal file
91
www/app/styles/markdown.css
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
/* Headings */
|
||||||
|
.markdown h1,
|
||||||
|
.markdown h2,
|
||||||
|
.markdown h3,
|
||||||
|
.markdown h4,
|
||||||
|
.markdown h5,
|
||||||
|
.markdown h6 {
|
||||||
|
margin-top: 1em;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Paragraphs */
|
||||||
|
.markdown p {
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Lists */
|
||||||
|
.markdown ul,
|
||||||
|
.markdown ol {
|
||||||
|
margin: 1em;
|
||||||
|
padding-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown li {
|
||||||
|
margin: 0.2em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Bold and italic */
|
||||||
|
.markdown b,
|
||||||
|
.markdown strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown i,
|
||||||
|
.markdown em {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Blockquotes */
|
||||||
|
.markdown blockquote {
|
||||||
|
margin: 1em 0;
|
||||||
|
padding-left: 1em;
|
||||||
|
border-left: 2px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Code blocks and inline code */
|
||||||
|
.markdown code {
|
||||||
|
font-family: "Courier New", monospace;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown pre {
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
padding: 1em;
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Links */
|
||||||
|
.markdown a {
|
||||||
|
color: blue;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Horizontal rule */
|
||||||
|
.markdown hr {
|
||||||
|
border: 0;
|
||||||
|
border-bottom: 1px solid #ccc;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Images */
|
||||||
|
.markdown img {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Lists */
|
||||||
|
.markdown ul {
|
||||||
|
margin: 1em;
|
||||||
|
padding-left: 1em;
|
||||||
|
list-style-type: disc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown ol {
|
||||||
|
margin: 1em;
|
||||||
|
padding-left: 1em;
|
||||||
|
list-style-type: decimal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown li {
|
||||||
|
margin: 0.2em 0;
|
||||||
|
}
|
||||||
@@ -1,4 +1,8 @@
|
|||||||
import { useRef, useState } from "react";
|
import { useRef, useState } from "react";
|
||||||
|
import React from "react";
|
||||||
|
import ReactDom from "react-dom";
|
||||||
|
import Markdown from "react-markdown";
|
||||||
|
import "../styles/markdown.css";
|
||||||
|
|
||||||
type FinalSummaryProps = {
|
type FinalSummaryProps = {
|
||||||
summary: string;
|
summary: string;
|
||||||
@@ -62,7 +66,9 @@ export default function FinalSummary(props: FinalSummaryProps) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p ref={finalSummaryRef}>{props.summary}</p>
|
<p ref={finalSummaryRef} className="markdown">
|
||||||
|
<Markdown>{props.summary}</Markdown>
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
"react-dropdown": "^1.11.0",
|
"react-dropdown": "^1.11.0",
|
||||||
|
"react-markdown": "^9.0.0",
|
||||||
"react-qr-code": "^2.0.12",
|
"react-qr-code": "^2.0.12",
|
||||||
"sass": "^1.63.6",
|
"sass": "^1.63.6",
|
||||||
"simple-peer": "^9.11.1",
|
"simple-peer": "^9.11.1",
|
||||||
|
|||||||
480
www/yarn.lock
480
www/yarn.lock
@@ -400,11 +400,25 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
tslib "^2.4.0"
|
tslib "^2.4.0"
|
||||||
|
|
||||||
|
"@types/debug@^4.0.0":
|
||||||
|
version "4.1.9"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.9.tgz#906996938bc672aaf2fb8c0d3733ae1dda05b005"
|
||||||
|
integrity sha512-8Hz50m2eoS56ldRlepxSBa6PWEVCtzUo/92HgLc2qTMnotJNIm7xP+UZhyWoYsyOdd5dxZ+NZLb24rsKyFs2ow==
|
||||||
|
dependencies:
|
||||||
|
"@types/ms" "*"
|
||||||
|
|
||||||
"@types/estree@*", "@types/estree@^1.0.0":
|
"@types/estree@*", "@types/estree@^1.0.0":
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194"
|
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194"
|
||||||
integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==
|
integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==
|
||||||
|
|
||||||
|
"@types/hast@^3.0.0":
|
||||||
|
version "3.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.1.tgz#e1705ec9258ac4885659c2d50bac06b4fcd16466"
|
||||||
|
integrity sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==
|
||||||
|
dependencies:
|
||||||
|
"@types/unist" "*"
|
||||||
|
|
||||||
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0":
|
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0":
|
||||||
version "2.0.4"
|
version "2.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44"
|
resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44"
|
||||||
@@ -424,6 +438,18 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/istanbul-lib-report" "*"
|
"@types/istanbul-lib-report" "*"
|
||||||
|
|
||||||
|
"@types/mdast@^4.0.0":
|
||||||
|
version "4.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.1.tgz#9c45e60a04e79f160dcefe6545d28ae536a6ed22"
|
||||||
|
integrity sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==
|
||||||
|
dependencies:
|
||||||
|
"@types/unist" "*"
|
||||||
|
|
||||||
|
"@types/ms@*":
|
||||||
|
version "0.7.32"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.32.tgz#f6cd08939ae3ad886fcc92ef7f0109dacddf61ab"
|
||||||
|
integrity sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g==
|
||||||
|
|
||||||
"@types/node@*":
|
"@types/node@*":
|
||||||
version "20.4.5"
|
version "20.4.5"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.5.tgz#9dc0a5cb1ccce4f7a731660935ab70b9c00a5d69"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.5.tgz#9dc0a5cb1ccce4f7a731660935ab70b9c00a5d69"
|
||||||
@@ -448,6 +474,11 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5"
|
resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5"
|
||||||
integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==
|
integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==
|
||||||
|
|
||||||
|
"@types/unist@*", "@types/unist@^3.0.0":
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.0.tgz#988ae8af1e5239e89f9fbb1ade4c935f4eeedf9a"
|
||||||
|
integrity sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==
|
||||||
|
|
||||||
"@types/yargs-parser@*":
|
"@types/yargs-parser@*":
|
||||||
version "21.0.0"
|
version "21.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b"
|
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b"
|
||||||
@@ -460,6 +491,11 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/yargs-parser" "*"
|
"@types/yargs-parser" "*"
|
||||||
|
|
||||||
|
"@ungap/structured-clone@^1.0.0":
|
||||||
|
version "1.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
|
||||||
|
integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
|
||||||
|
|
||||||
agent-base@6:
|
agent-base@6:
|
||||||
version "6.0.2"
|
version "6.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
|
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
|
||||||
@@ -543,6 +579,11 @@ axios@^1.4.0:
|
|||||||
form-data "^4.0.0"
|
form-data "^4.0.0"
|
||||||
proxy-from-env "^1.1.0"
|
proxy-from-env "^1.1.0"
|
||||||
|
|
||||||
|
bail@^2.0.0:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d"
|
||||||
|
integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==
|
||||||
|
|
||||||
balanced-match@^1.0.0:
|
balanced-match@^1.0.0:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
|
resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
|
||||||
@@ -656,6 +697,11 @@ chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1:
|
|||||||
ansi-styles "^4.1.0"
|
ansi-styles "^4.1.0"
|
||||||
supports-color "^7.1.0"
|
supports-color "^7.1.0"
|
||||||
|
|
||||||
|
character-entities@^2.0.0:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22"
|
||||||
|
integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==
|
||||||
|
|
||||||
chardet@^0.7.0:
|
chardet@^0.7.0:
|
||||||
version "0.7.0"
|
version "0.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
|
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
|
||||||
@@ -741,6 +787,11 @@ combined-stream@^1.0.8:
|
|||||||
dependencies:
|
dependencies:
|
||||||
delayed-stream "~1.0.0"
|
delayed-stream "~1.0.0"
|
||||||
|
|
||||||
|
comma-separated-tokens@^2.0.0:
|
||||||
|
version "2.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee"
|
||||||
|
integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==
|
||||||
|
|
||||||
commander@8.3.0:
|
commander@8.3.0:
|
||||||
version "8.3.0"
|
version "8.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66"
|
resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66"
|
||||||
@@ -824,13 +875,20 @@ date-fns@^2.16.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.21.0"
|
"@babel/runtime" "^7.21.0"
|
||||||
|
|
||||||
debug@4, debug@^4.3.2, debug@^4.3.4:
|
debug@4, debug@^4.0.0, debug@^4.3.2, debug@^4.3.4:
|
||||||
version "4.3.4"
|
version "4.3.4"
|
||||||
resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
|
resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
|
||||||
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
|
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
ms "2.1.2"
|
ms "2.1.2"
|
||||||
|
|
||||||
|
decode-named-character-reference@^1.0.0:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e"
|
||||||
|
integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==
|
||||||
|
dependencies:
|
||||||
|
character-entities "^2.0.0"
|
||||||
|
|
||||||
defaults@^1.0.3:
|
defaults@^1.0.3:
|
||||||
version "1.0.4"
|
version "1.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a"
|
resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a"
|
||||||
@@ -843,6 +901,18 @@ delayed-stream@~1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
||||||
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
|
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
|
||||||
|
|
||||||
|
dequal@^2.0.0:
|
||||||
|
version "2.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
|
||||||
|
integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
|
||||||
|
|
||||||
|
devlop@^1.0.0:
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018"
|
||||||
|
integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==
|
||||||
|
dependencies:
|
||||||
|
dequal "^2.0.0"
|
||||||
|
|
||||||
dezalgo@^1.0.4:
|
dezalgo@^1.0.4:
|
||||||
version "1.0.4"
|
version "1.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81"
|
resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81"
|
||||||
@@ -905,6 +975,11 @@ estree-walker@^2.0.2:
|
|||||||
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
|
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
|
||||||
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
|
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
|
||||||
|
|
||||||
|
extend@^3.0.0:
|
||||||
|
version "3.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
|
||||||
|
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
|
||||||
|
|
||||||
external-editor@^3.0.3:
|
external-editor@^3.0.3:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
|
resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
|
||||||
@@ -1098,6 +1173,28 @@ has@^1.0.3:
|
|||||||
dependencies:
|
dependencies:
|
||||||
function-bind "^1.1.1"
|
function-bind "^1.1.1"
|
||||||
|
|
||||||
|
hast-util-to-jsx-runtime@^2.0.0:
|
||||||
|
version "2.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.2.0.tgz#ffd59bfcf0eb8321c6ed511bfc4b399ac3404bc2"
|
||||||
|
integrity sha512-wSlp23N45CMjDg/BPW8zvhEi3R+8eRE1qFbjEyAUzMCzu2l1Wzwakq+Tlia9nkCtEl5mDxa7nKHsvYJ6Gfn21A==
|
||||||
|
dependencies:
|
||||||
|
"@types/hast" "^3.0.0"
|
||||||
|
"@types/unist" "^3.0.0"
|
||||||
|
comma-separated-tokens "^2.0.0"
|
||||||
|
hast-util-whitespace "^3.0.0"
|
||||||
|
property-information "^6.0.0"
|
||||||
|
space-separated-tokens "^2.0.0"
|
||||||
|
style-to-object "^0.4.0"
|
||||||
|
unist-util-position "^5.0.0"
|
||||||
|
vfile-message "^4.0.0"
|
||||||
|
|
||||||
|
hast-util-whitespace@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz#7778ed9d3c92dd9e8c5c8f648a49c21fc51cb621"
|
||||||
|
integrity sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==
|
||||||
|
dependencies:
|
||||||
|
"@types/hast" "^3.0.0"
|
||||||
|
|
||||||
hexoid@^1.0.0:
|
hexoid@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18"
|
resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18"
|
||||||
@@ -1110,6 +1207,11 @@ hoist-non-react-statics@^3.3.2:
|
|||||||
dependencies:
|
dependencies:
|
||||||
react-is "^16.7.0"
|
react-is "^16.7.0"
|
||||||
|
|
||||||
|
html-url-attributes@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/html-url-attributes/-/html-url-attributes-3.0.0.tgz#fc4abf0c3fb437e2329c678b80abb3c62cff6f08"
|
||||||
|
integrity sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==
|
||||||
|
|
||||||
https-proxy-agent@^5.0.0:
|
https-proxy-agent@^5.0.0:
|
||||||
version "5.0.1"
|
version "5.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
|
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
|
||||||
@@ -1160,6 +1262,11 @@ inherits@2, inherits@^2.0.3, inherits@^2.0.4:
|
|||||||
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
|
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
|
||||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||||
|
|
||||||
|
inline-style-parser@0.1.1:
|
||||||
|
version "0.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1"
|
||||||
|
integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==
|
||||||
|
|
||||||
inquirer@8.2.5:
|
inquirer@8.2.5:
|
||||||
version "8.2.5"
|
version "8.2.5"
|
||||||
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.5.tgz#d8654a7542c35a9b9e069d27e2df4858784d54f8"
|
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.5.tgz#d8654a7542c35a9b9e069d27e2df4858784d54f8"
|
||||||
@@ -1222,6 +1329,11 @@ is-number@^7.0.0:
|
|||||||
resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
|
resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
|
||||||
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
|
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
|
||||||
|
|
||||||
|
is-plain-obj@^4.0.0:
|
||||||
|
version "4.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0"
|
||||||
|
integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==
|
||||||
|
|
||||||
is-reference@1.2.1:
|
is-reference@1.2.1:
|
||||||
version "1.2.1"
|
version "1.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7"
|
resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7"
|
||||||
@@ -1353,6 +1465,45 @@ magic-string@^0.27.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@jridgewell/sourcemap-codec" "^1.4.13"
|
"@jridgewell/sourcemap-codec" "^1.4.13"
|
||||||
|
|
||||||
|
mdast-util-from-markdown@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz#52f14815ec291ed061f2922fd14d6689c810cb88"
|
||||||
|
integrity sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==
|
||||||
|
dependencies:
|
||||||
|
"@types/mdast" "^4.0.0"
|
||||||
|
"@types/unist" "^3.0.0"
|
||||||
|
decode-named-character-reference "^1.0.0"
|
||||||
|
devlop "^1.0.0"
|
||||||
|
mdast-util-to-string "^4.0.0"
|
||||||
|
micromark "^4.0.0"
|
||||||
|
micromark-util-decode-numeric-character-reference "^2.0.0"
|
||||||
|
micromark-util-decode-string "^2.0.0"
|
||||||
|
micromark-util-normalize-identifier "^2.0.0"
|
||||||
|
micromark-util-symbol "^2.0.0"
|
||||||
|
micromark-util-types "^2.0.0"
|
||||||
|
unist-util-stringify-position "^4.0.0"
|
||||||
|
|
||||||
|
mdast-util-to-hast@^13.0.0:
|
||||||
|
version "13.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.0.2.tgz#74c0a9f014bb2340cae6118f6fccd75467792be7"
|
||||||
|
integrity sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==
|
||||||
|
dependencies:
|
||||||
|
"@types/hast" "^3.0.0"
|
||||||
|
"@types/mdast" "^4.0.0"
|
||||||
|
"@ungap/structured-clone" "^1.0.0"
|
||||||
|
devlop "^1.0.0"
|
||||||
|
micromark-util-sanitize-uri "^2.0.0"
|
||||||
|
trim-lines "^3.0.0"
|
||||||
|
unist-util-position "^5.0.0"
|
||||||
|
unist-util-visit "^5.0.0"
|
||||||
|
|
||||||
|
mdast-util-to-string@^4.0.0:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz#7a5121475556a04e7eddeb67b264aae79d312814"
|
||||||
|
integrity sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==
|
||||||
|
dependencies:
|
||||||
|
"@types/mdast" "^4.0.0"
|
||||||
|
|
||||||
merge-stream@^2.0.0:
|
merge-stream@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
|
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
|
||||||
@@ -1368,6 +1519,200 @@ methods@^1.1.2:
|
|||||||
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
|
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
|
||||||
integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
|
integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
|
||||||
|
|
||||||
|
micromark-core-commonmark@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz#50740201f0ee78c12a675bf3e68ffebc0bf931a3"
|
||||||
|
integrity sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==
|
||||||
|
dependencies:
|
||||||
|
decode-named-character-reference "^1.0.0"
|
||||||
|
devlop "^1.0.0"
|
||||||
|
micromark-factory-destination "^2.0.0"
|
||||||
|
micromark-factory-label "^2.0.0"
|
||||||
|
micromark-factory-space "^2.0.0"
|
||||||
|
micromark-factory-title "^2.0.0"
|
||||||
|
micromark-factory-whitespace "^2.0.0"
|
||||||
|
micromark-util-character "^2.0.0"
|
||||||
|
micromark-util-chunked "^2.0.0"
|
||||||
|
micromark-util-classify-character "^2.0.0"
|
||||||
|
micromark-util-html-tag-name "^2.0.0"
|
||||||
|
micromark-util-normalize-identifier "^2.0.0"
|
||||||
|
micromark-util-resolve-all "^2.0.0"
|
||||||
|
micromark-util-subtokenize "^2.0.0"
|
||||||
|
micromark-util-symbol "^2.0.0"
|
||||||
|
micromark-util-types "^2.0.0"
|
||||||
|
|
||||||
|
micromark-factory-destination@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz#857c94debd2c873cba34e0445ab26b74f6a6ec07"
|
||||||
|
integrity sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==
|
||||||
|
dependencies:
|
||||||
|
micromark-util-character "^2.0.0"
|
||||||
|
micromark-util-symbol "^2.0.0"
|
||||||
|
micromark-util-types "^2.0.0"
|
||||||
|
|
||||||
|
micromark-factory-label@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz#17c5c2e66ce39ad6f4fc4cbf40d972f9096f726a"
|
||||||
|
integrity sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==
|
||||||
|
dependencies:
|
||||||
|
devlop "^1.0.0"
|
||||||
|
micromark-util-character "^2.0.0"
|
||||||
|
micromark-util-symbol "^2.0.0"
|
||||||
|
micromark-util-types "^2.0.0"
|
||||||
|
|
||||||
|
micromark-factory-space@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz#5e7afd5929c23b96566d0e1ae018ae4fcf81d030"
|
||||||
|
integrity sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==
|
||||||
|
dependencies:
|
||||||
|
micromark-util-character "^2.0.0"
|
||||||
|
micromark-util-types "^2.0.0"
|
||||||
|
|
||||||
|
micromark-factory-title@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz#726140fc77892af524705d689e1cf06c8a83ea95"
|
||||||
|
integrity sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==
|
||||||
|
dependencies:
|
||||||
|
micromark-factory-space "^2.0.0"
|
||||||
|
micromark-util-character "^2.0.0"
|
||||||
|
micromark-util-symbol "^2.0.0"
|
||||||
|
micromark-util-types "^2.0.0"
|
||||||
|
|
||||||
|
micromark-factory-whitespace@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz#9e92eb0f5468083381f923d9653632b3cfb5f763"
|
||||||
|
integrity sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==
|
||||||
|
dependencies:
|
||||||
|
micromark-factory-space "^2.0.0"
|
||||||
|
micromark-util-character "^2.0.0"
|
||||||
|
micromark-util-symbol "^2.0.0"
|
||||||
|
micromark-util-types "^2.0.0"
|
||||||
|
|
||||||
|
micromark-util-character@^2.0.0:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-2.0.1.tgz#52b824c2e2633b6fb33399d2ec78ee2a90d6b298"
|
||||||
|
integrity sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==
|
||||||
|
dependencies:
|
||||||
|
micromark-util-symbol "^2.0.0"
|
||||||
|
micromark-util-types "^2.0.0"
|
||||||
|
|
||||||
|
micromark-util-chunked@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz#e51f4db85fb203a79dbfef23fd41b2f03dc2ef89"
|
||||||
|
integrity sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==
|
||||||
|
dependencies:
|
||||||
|
micromark-util-symbol "^2.0.0"
|
||||||
|
|
||||||
|
micromark-util-classify-character@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz#8c7537c20d0750b12df31f86e976d1d951165f34"
|
||||||
|
integrity sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==
|
||||||
|
dependencies:
|
||||||
|
micromark-util-character "^2.0.0"
|
||||||
|
micromark-util-symbol "^2.0.0"
|
||||||
|
micromark-util-types "^2.0.0"
|
||||||
|
|
||||||
|
micromark-util-combine-extensions@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz#75d6ab65c58b7403616db8d6b31315013bfb7ee5"
|
||||||
|
integrity sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==
|
||||||
|
dependencies:
|
||||||
|
micromark-util-chunked "^2.0.0"
|
||||||
|
micromark-util-types "^2.0.0"
|
||||||
|
|
||||||
|
micromark-util-decode-numeric-character-reference@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.0.tgz#a798808d02cc74113e2c939fc95363096ade7f1d"
|
||||||
|
integrity sha512-pIgcsGxpHEtTG/rPJRz/HOLSqp5VTuIIjXlPI+6JSDlK2oljApusG6KzpS8AF0ENUMCHlC/IBb5B9xdFiVlm5Q==
|
||||||
|
dependencies:
|
||||||
|
micromark-util-symbol "^2.0.0"
|
||||||
|
|
||||||
|
micromark-util-decode-string@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz#7dfa3a63c45aecaa17824e656bcdb01f9737154a"
|
||||||
|
integrity sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==
|
||||||
|
dependencies:
|
||||||
|
decode-named-character-reference "^1.0.0"
|
||||||
|
micromark-util-character "^2.0.0"
|
||||||
|
micromark-util-decode-numeric-character-reference "^2.0.0"
|
||||||
|
micromark-util-symbol "^2.0.0"
|
||||||
|
|
||||||
|
micromark-util-encode@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz#0921ac7953dc3f1fd281e3d1932decfdb9382ab1"
|
||||||
|
integrity sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==
|
||||||
|
|
||||||
|
micromark-util-html-tag-name@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz#ae34b01cbe063363847670284c6255bb12138ec4"
|
||||||
|
integrity sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==
|
||||||
|
|
||||||
|
micromark-util-normalize-identifier@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz#91f9a4e65fe66cc80c53b35b0254ad67aa431d8b"
|
||||||
|
integrity sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==
|
||||||
|
dependencies:
|
||||||
|
micromark-util-symbol "^2.0.0"
|
||||||
|
|
||||||
|
micromark-util-resolve-all@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz#189656e7e1a53d0c86a38a652b284a252389f364"
|
||||||
|
integrity sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==
|
||||||
|
dependencies:
|
||||||
|
micromark-util-types "^2.0.0"
|
||||||
|
|
||||||
|
micromark-util-sanitize-uri@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz#ec8fbf0258e9e6d8f13d9e4770f9be64342673de"
|
||||||
|
integrity sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==
|
||||||
|
dependencies:
|
||||||
|
micromark-util-character "^2.0.0"
|
||||||
|
micromark-util-encode "^2.0.0"
|
||||||
|
micromark-util-symbol "^2.0.0"
|
||||||
|
|
||||||
|
micromark-util-subtokenize@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz#9f412442d77e0c5789ffdf42377fa8a2bcbdf581"
|
||||||
|
integrity sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==
|
||||||
|
dependencies:
|
||||||
|
devlop "^1.0.0"
|
||||||
|
micromark-util-chunked "^2.0.0"
|
||||||
|
micromark-util-symbol "^2.0.0"
|
||||||
|
micromark-util-types "^2.0.0"
|
||||||
|
|
||||||
|
micromark-util-symbol@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz#12225c8f95edf8b17254e47080ce0862d5db8044"
|
||||||
|
integrity sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==
|
||||||
|
|
||||||
|
micromark-util-types@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.0.tgz#63b4b7ffeb35d3ecf50d1ca20e68fc7caa36d95e"
|
||||||
|
integrity sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==
|
||||||
|
|
||||||
|
micromark@^4.0.0:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromark/-/micromark-4.0.0.tgz#84746a249ebd904d9658cfabc1e8e5f32cbc6249"
|
||||||
|
integrity sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==
|
||||||
|
dependencies:
|
||||||
|
"@types/debug" "^4.0.0"
|
||||||
|
debug "^4.0.0"
|
||||||
|
decode-named-character-reference "^1.0.0"
|
||||||
|
devlop "^1.0.0"
|
||||||
|
micromark-core-commonmark "^2.0.0"
|
||||||
|
micromark-factory-space "^2.0.0"
|
||||||
|
micromark-util-character "^2.0.0"
|
||||||
|
micromark-util-chunked "^2.0.0"
|
||||||
|
micromark-util-combine-extensions "^2.0.0"
|
||||||
|
micromark-util-decode-numeric-character-reference "^2.0.0"
|
||||||
|
micromark-util-encode "^2.0.0"
|
||||||
|
micromark-util-normalize-identifier "^2.0.0"
|
||||||
|
micromark-util-resolve-all "^2.0.0"
|
||||||
|
micromark-util-sanitize-uri "^2.0.0"
|
||||||
|
micromark-util-subtokenize "^2.0.0"
|
||||||
|
micromark-util-symbol "^2.0.0"
|
||||||
|
micromark-util-types "^2.0.0"
|
||||||
|
|
||||||
micromatch@^4.0.4, micromatch@^4.0.5:
|
micromatch@^4.0.4, micromatch@^4.0.5:
|
||||||
version "4.0.5"
|
version "4.0.5"
|
||||||
resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz"
|
resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz"
|
||||||
@@ -1664,6 +2009,11 @@ prop-types@^15.8.1:
|
|||||||
object-assign "^4.1.1"
|
object-assign "^4.1.1"
|
||||||
react-is "^16.13.1"
|
react-is "^16.13.1"
|
||||||
|
|
||||||
|
property-information@^6.0.0:
|
||||||
|
version "6.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.3.0.tgz#ba4a06ec6b4e1e90577df9931286953cdf4282c3"
|
||||||
|
integrity sha512-gVNZ74nqhRMiIUYWGQdosYetaKc83x8oT41a0LlV3AAFCAZwCpg4vmGkq8t34+cUhp3cnM4XDiU/7xlgK7HGrg==
|
||||||
|
|
||||||
proxy-from-env@^1.1.0:
|
proxy-from-env@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
|
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
|
||||||
@@ -1713,6 +2063,23 @@ react-is@^16.13.1, react-is@^16.7.0:
|
|||||||
resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
|
resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
|
||||||
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
|
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
|
||||||
|
|
||||||
|
react-markdown@^9.0.0:
|
||||||
|
version "9.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-9.0.0.tgz#7a41bde9e1b0b1d6911f6f9f8c3cdb4a3e9f9328"
|
||||||
|
integrity sha512-v6yNf3AB8GfJ8lCpUvzxAXKxgsHpdmWPlcVRQ6Nocsezp255E/IDrF31kLQsPJeB/cKto/geUwjU36wH784FCA==
|
||||||
|
dependencies:
|
||||||
|
"@types/hast" "^3.0.0"
|
||||||
|
devlop "^1.0.0"
|
||||||
|
hast-util-to-jsx-runtime "^2.0.0"
|
||||||
|
html-url-attributes "^3.0.0"
|
||||||
|
mdast-util-to-hast "^13.0.0"
|
||||||
|
micromark-util-sanitize-uri "^2.0.0"
|
||||||
|
remark-parse "^11.0.0"
|
||||||
|
remark-rehype "^11.0.0"
|
||||||
|
unified "^11.0.0"
|
||||||
|
unist-util-visit "^5.0.0"
|
||||||
|
vfile "^6.0.0"
|
||||||
|
|
||||||
react-qr-code@^2.0.12:
|
react-qr-code@^2.0.12:
|
||||||
version "2.0.12"
|
version "2.0.12"
|
||||||
resolved "https://registry.yarnpkg.com/react-qr-code/-/react-qr-code-2.0.12.tgz#98f99e9ad5ede46d73ab819e2dd9925c5f5d7a2d"
|
resolved "https://registry.yarnpkg.com/react-qr-code/-/react-qr-code-2.0.12.tgz#98f99e9ad5ede46d73ab819e2dd9925c5f5d7a2d"
|
||||||
@@ -1761,6 +2128,27 @@ regenerator-runtime@^0.14.0:
|
|||||||
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45"
|
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45"
|
||||||
integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==
|
integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==
|
||||||
|
|
||||||
|
remark-parse@^11.0.0:
|
||||||
|
version "11.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-11.0.0.tgz#aa60743fcb37ebf6b069204eb4da304e40db45a1"
|
||||||
|
integrity sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==
|
||||||
|
dependencies:
|
||||||
|
"@types/mdast" "^4.0.0"
|
||||||
|
mdast-util-from-markdown "^2.0.0"
|
||||||
|
micromark-util-types "^2.0.0"
|
||||||
|
unified "^11.0.0"
|
||||||
|
|
||||||
|
remark-rehype@^11.0.0:
|
||||||
|
version "11.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-11.0.0.tgz#7f21c08738bde024be5f16e4a8b13e5d7a04cf6b"
|
||||||
|
integrity sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==
|
||||||
|
dependencies:
|
||||||
|
"@types/hast" "^3.0.0"
|
||||||
|
"@types/mdast" "^4.0.0"
|
||||||
|
mdast-util-to-hast "^13.0.0"
|
||||||
|
unified "^11.0.0"
|
||||||
|
vfile "^6.0.0"
|
||||||
|
|
||||||
require-directory@^2.1.1:
|
require-directory@^2.1.1:
|
||||||
version "2.1.1"
|
version "2.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
|
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
|
||||||
@@ -1893,6 +2281,11 @@ simple-peer@^9.11.1:
|
|||||||
resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz"
|
resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz"
|
||||||
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
|
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
|
||||||
|
|
||||||
|
space-separated-tokens@^2.0.0:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f"
|
||||||
|
integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==
|
||||||
|
|
||||||
spawn-command@^0.0.2-1:
|
spawn-command@^0.0.2-1:
|
||||||
version "0.0.2-1"
|
version "0.0.2-1"
|
||||||
resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0"
|
resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0"
|
||||||
@@ -1933,6 +2326,13 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ansi-regex "^5.0.1"
|
ansi-regex "^5.0.1"
|
||||||
|
|
||||||
|
style-to-object@^0.4.0:
|
||||||
|
version "0.4.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.4.2.tgz#a8247057111dea8bd3b8a1a66d2d0c9cf9218a54"
|
||||||
|
integrity sha512-1JGpfPB3lo42ZX8cuPrheZbfQ6kqPPnPHlKMyeRYtfKD+0jG+QsXgXN57O/dvJlzlB2elI6dGmrPnl5VPQFPaA==
|
||||||
|
dependencies:
|
||||||
|
inline-style-parser "0.1.1"
|
||||||
|
|
||||||
styled-jsx@5.1.1:
|
styled-jsx@5.1.1:
|
||||||
version "5.1.1"
|
version "5.1.1"
|
||||||
resolved "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz"
|
resolved "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz"
|
||||||
@@ -2065,6 +2465,16 @@ tree-kill@^1.2.2:
|
|||||||
resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
|
resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
|
||||||
integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
|
integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
|
||||||
|
|
||||||
|
trim-lines@^3.0.0:
|
||||||
|
version "3.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338"
|
||||||
|
integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==
|
||||||
|
|
||||||
|
trough@^2.0.0:
|
||||||
|
version "2.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876"
|
||||||
|
integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==
|
||||||
|
|
||||||
ts-interface-checker@^0.1.9:
|
ts-interface-checker@^0.1.9:
|
||||||
version "0.1.13"
|
version "0.1.13"
|
||||||
resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz"
|
resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz"
|
||||||
@@ -2117,6 +2527,57 @@ uid@2.0.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@lukeed/csprng" "^1.0.0"
|
"@lukeed/csprng" "^1.0.0"
|
||||||
|
|
||||||
|
unified@^11.0.0:
|
||||||
|
version "11.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/unified/-/unified-11.0.3.tgz#e141be0fe466a2d28b2160f62712bc9cbc08fdd4"
|
||||||
|
integrity sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==
|
||||||
|
dependencies:
|
||||||
|
"@types/unist" "^3.0.0"
|
||||||
|
bail "^2.0.0"
|
||||||
|
devlop "^1.0.0"
|
||||||
|
extend "^3.0.0"
|
||||||
|
is-plain-obj "^4.0.0"
|
||||||
|
trough "^2.0.0"
|
||||||
|
vfile "^6.0.0"
|
||||||
|
|
||||||
|
unist-util-is@^6.0.0:
|
||||||
|
version "6.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424"
|
||||||
|
integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==
|
||||||
|
dependencies:
|
||||||
|
"@types/unist" "^3.0.0"
|
||||||
|
|
||||||
|
unist-util-position@^5.0.0:
|
||||||
|
version "5.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-5.0.0.tgz#678f20ab5ca1207a97d7ea8a388373c9cf896be4"
|
||||||
|
integrity sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==
|
||||||
|
dependencies:
|
||||||
|
"@types/unist" "^3.0.0"
|
||||||
|
|
||||||
|
unist-util-stringify-position@^4.0.0:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2"
|
||||||
|
integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==
|
||||||
|
dependencies:
|
||||||
|
"@types/unist" "^3.0.0"
|
||||||
|
|
||||||
|
unist-util-visit-parents@^6.0.0:
|
||||||
|
version "6.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815"
|
||||||
|
integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==
|
||||||
|
dependencies:
|
||||||
|
"@types/unist" "^3.0.0"
|
||||||
|
unist-util-is "^6.0.0"
|
||||||
|
|
||||||
|
unist-util-visit@^5.0.0:
|
||||||
|
version "5.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6"
|
||||||
|
integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==
|
||||||
|
dependencies:
|
||||||
|
"@types/unist" "^3.0.0"
|
||||||
|
unist-util-is "^6.0.0"
|
||||||
|
unist-util-visit-parents "^6.0.0"
|
||||||
|
|
||||||
universalify@^2.0.0:
|
universalify@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
|
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
|
||||||
@@ -2135,6 +2596,23 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2:
|
|||||||
resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
|
resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
|
||||||
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
|
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
|
||||||
|
|
||||||
|
vfile-message@^4.0.0:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181"
|
||||||
|
integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==
|
||||||
|
dependencies:
|
||||||
|
"@types/unist" "^3.0.0"
|
||||||
|
unist-util-stringify-position "^4.0.0"
|
||||||
|
|
||||||
|
vfile@^6.0.0:
|
||||||
|
version "6.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/vfile/-/vfile-6.0.1.tgz#1e8327f41eac91947d4fe9d237a2dd9209762536"
|
||||||
|
integrity sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==
|
||||||
|
dependencies:
|
||||||
|
"@types/unist" "^3.0.0"
|
||||||
|
unist-util-stringify-position "^4.0.0"
|
||||||
|
vfile-message "^4.0.0"
|
||||||
|
|
||||||
watchpack@2.4.0:
|
watchpack@2.4.0:
|
||||||
version "2.4.0"
|
version "2.4.0"
|
||||||
resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz"
|
resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz"
|
||||||
|
|||||||
Reference in New Issue
Block a user