mirror of
https://github.com/ivabus/gui
synced 2025-04-23 14:07:14 +03:00
render rst in markdown component (#513)
* render rst in markdown component * add types * include @tea/ui/types/* in the tsconfig.json of desktop module --------- Co-authored-by: neil molina <neil@neils-MacBook-Pro.local>
This commit is contained in:
parent
8e443f1a66
commit
7088fec009
11 changed files with 432 additions and 25 deletions
|
@ -1,7 +1,6 @@
|
|||
import axios from "axios";
|
||||
import type { Contributor, Package } from "@tea/ui/types";
|
||||
import yaml from "js-yaml";
|
||||
|
||||
export async function getPackageYaml(pkgYamlUrl: string) {
|
||||
const url = pkgYamlUrl.replace("/github.com", "/raw.githubusercontent.com").replace("/blob", "");
|
||||
|
||||
|
@ -12,14 +11,20 @@ export async function getPackageYaml(pkgYamlUrl: string) {
|
|||
return data;
|
||||
}
|
||||
|
||||
export async function getReadme(owner: string, repo: string): Promise<string> {
|
||||
let readme = "";
|
||||
export async function getReadme(
|
||||
owner: string,
|
||||
repo: string
|
||||
): Promise<{ data: string; type: "md" | "rst" }> {
|
||||
let type: "md" | "rst" = "md";
|
||||
let data = "";
|
||||
const req = await axios.get(`https://api.github.com/repos/${owner}/${repo}/readme`);
|
||||
|
||||
if (req.data?.download_url) {
|
||||
type = req.data.name.endsWith(".rst") ? "rst" : "md";
|
||||
const reqDl = await axios.get(req.data.download_url);
|
||||
readme = reqDl.data;
|
||||
data = reqDl.data;
|
||||
}
|
||||
return readme;
|
||||
return { data, type };
|
||||
}
|
||||
|
||||
export async function getContributors(owner: string, repo: string): Promise<Contributor[]> {
|
||||
|
|
|
@ -107,7 +107,10 @@ To read more about this package go to [${guiPkg.homepage}](${guiPkg.homepage}).
|
|||
|
||||
const updatedPackage: Partial<GUIPackage> = {
|
||||
...pkg,
|
||||
readme_md: readmeMd,
|
||||
readme: {
|
||||
data: readmeMd,
|
||||
type: "md"
|
||||
},
|
||||
synced: true,
|
||||
github: pkg.github
|
||||
? trimGithubSlug(pkg.github)
|
||||
|
@ -123,7 +126,7 @@ To read more about this package go to [${guiPkg.homepage}](${guiPkg.homepage}).
|
|||
getRepoAsPackage(owner, repo)
|
||||
]);
|
||||
if (readme) {
|
||||
updatedPackage.readme_md = readme;
|
||||
updatedPackage.readme = readme;
|
||||
}
|
||||
updatedPackage.contributors = contributors;
|
||||
updatedPackage.license = repoData.license;
|
||||
|
|
|
@ -28,10 +28,10 @@
|
|||
// let reviews: Review[];
|
||||
$: bottles = pkg?.bottles || [];
|
||||
$: versions = [...new Set(bottles.map((b) => b.version))];
|
||||
$: readme = pkg?.readme_md || "";
|
||||
$: readme = pkg?.readme || { data: "", type: "md" };
|
||||
|
||||
$: tabs = [
|
||||
readme !== "" && {
|
||||
readme?.data !== "" && {
|
||||
label: $t("common.details"),
|
||||
component: Markdown,
|
||||
props: { pkg, source: readme }
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
"extends": "./.svelte-kit/tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"allowJs": true,
|
||||
"checkJs": true,
|
||||
"esModuleInterop": true,
|
||||
|
@ -18,7 +19,8 @@
|
|||
"$components/*": ["src/components/*"],
|
||||
"@tea/ui/*": ["../ui/src/*"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"include": ["../ui/types/*.d.ts"]
|
||||
// Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias
|
||||
//
|
||||
// If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
"@types/prismjs": "^1.26.0",
|
||||
"prismjs": "^1.29.0",
|
||||
"svelte-markdown": "^0.2.3",
|
||||
"svelte-watch-resize": "^1.0.3"
|
||||
"svelte-watch-resize": "^1.0.3",
|
||||
"restructured": "0.0.11"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,16 +1,23 @@
|
|||
<script lang="ts">
|
||||
import SvelteMarkdown from "svelte-markdown";
|
||||
import Link from "./link.svelte";
|
||||
import rst2html from "./rst2html";
|
||||
|
||||
import "./styles.css";
|
||||
|
||||
export let source: string;
|
||||
export let source: { data: string; type: "md" | "rst" };
|
||||
|
||||
const renderers = {
|
||||
link: Link
|
||||
};
|
||||
|
||||
$: html = source.type === "rst" ? rst2html(source.data) : "";
|
||||
</script>
|
||||
|
||||
<section class="markdown-body py-4">
|
||||
<SvelteMarkdown {source} {renderers} />
|
||||
{#if source.type === "md"}
|
||||
<SvelteMarkdown source={source.data} {renderers} />
|
||||
{:else if source.type === "rst"}
|
||||
{@html html}
|
||||
{/if}
|
||||
</section>
|
||||
|
|
198
modules/ui/src/markdown/rst2html.ts
Normal file
198
modules/ui/src/markdown/rst2html.ts
Normal file
|
@ -0,0 +1,198 @@
|
|||
// this was directly taken from https://github.com/thoward/rst2html
|
||||
// sorry no time to make a pr to the module there
|
||||
// added a render_directive fn
|
||||
import restructured from "restructured";
|
||||
|
||||
type Element = {
|
||||
type: string;
|
||||
role?: string;
|
||||
depth?: number;
|
||||
directive?: string;
|
||||
children: Element[];
|
||||
value?: string;
|
||||
};
|
||||
|
||||
const rst2html = (rstSource: string): string => {
|
||||
const parsedRST = restructured.parse(rstSource);
|
||||
const html = render_any(parsedRST, 0, 2);
|
||||
return html;
|
||||
};
|
||||
|
||||
export default rst2html;
|
||||
|
||||
const render_any = (element: Element, level = 0, indent = 2): string => {
|
||||
switch (element.type) {
|
||||
case "document":
|
||||
return render_document(element, level, indent);
|
||||
case "section":
|
||||
return render_section(element, level, indent);
|
||||
case "transition":
|
||||
return render_transition(element, level, indent);
|
||||
case "paragraph":
|
||||
return render_paragraph(element, level, indent);
|
||||
case "bullet_list":
|
||||
return render_bullet_list(element, level, indent);
|
||||
case "enumerated_list":
|
||||
return render_enumerated_list(element, level, indent);
|
||||
case "definition_list":
|
||||
return render_definition_list(element, level, indent);
|
||||
case "list_item":
|
||||
return render_list_item(element, level, indent);
|
||||
case "line":
|
||||
return render_line(element, level, indent);
|
||||
case "line_block":
|
||||
return render_line_block(element, level, indent);
|
||||
case "literal_block":
|
||||
return render_literal_block(element, level, indent);
|
||||
case "block_quote":
|
||||
return render_block_quote(element, level, indent);
|
||||
case "interpreted_text":
|
||||
return render_interpreted_text(element, level, indent);
|
||||
case "text":
|
||||
return render_text(element);
|
||||
case "emphasis":
|
||||
return render_emphasis(element, level, indent);
|
||||
case "strong":
|
||||
return render_strong(element, level, indent);
|
||||
case "literal":
|
||||
return render_literal(element, level, indent);
|
||||
case "directive":
|
||||
return render_directive(element, level, indent);
|
||||
default:
|
||||
return render_unknown(element, level, indent);
|
||||
}
|
||||
};
|
||||
|
||||
const render_unknown = (element: Element, level = 0, indent = 2): string => {
|
||||
if (element.children) {
|
||||
return render_block_element("div", `rst-unknown rst-${element.type}`, element, level, indent);
|
||||
} else {
|
||||
return render_leaf_element("div", `rst-unknown rst-${element.type}`, element);
|
||||
}
|
||||
};
|
||||
|
||||
const render_document = (element: Element, level = 0, indent = 2): string => {
|
||||
return render_block_element("div", "rst-document", element, level, indent);
|
||||
};
|
||||
|
||||
const render_section = (element: Element, level = 0, indent = 2): string => {
|
||||
const indentString = " ".repeat(level * indent);
|
||||
|
||||
const title = render_title(element.depth, element.children[0], level + 1, indent);
|
||||
|
||||
const children = element.children
|
||||
.slice(1)
|
||||
.map((e) => render_any(e, level + 1, indent))
|
||||
.join("\n");
|
||||
|
||||
return `${indentString}<div class="rst-section">\n${title}${children}${indentString}</div>\n`;
|
||||
};
|
||||
|
||||
const render_title = (depth = 0, element: Element, level = 0, indent = 2): string => {
|
||||
const titleTag = `h${depth}`;
|
||||
const titleClassName = `rst-title-${depth}`;
|
||||
|
||||
return render_block_element(titleTag, titleClassName, element, level, indent);
|
||||
};
|
||||
|
||||
const render_transition = (element: Element, level = 0, indent = 2): string => {
|
||||
// TODO: implement transitions
|
||||
return render_unknown(element, level, indent);
|
||||
};
|
||||
|
||||
const render_paragraph = (element: Element, level = 0, indent = 2): string => {
|
||||
return render_block_element("p", "rst-paragraph", element, level, indent);
|
||||
};
|
||||
|
||||
const render_bullet_list = (element: Element, level = 0, indent = 2): string => {
|
||||
return render_block_element("ul", "rst-bullet-list", element, level, indent);
|
||||
};
|
||||
|
||||
const render_enumerated_list = (element: Element, level = 0, indent = 2): string => {
|
||||
return render_block_element("ol", "rst-enumerated-list", element, level, indent);
|
||||
};
|
||||
|
||||
const render_definition_list = (element: Element, level = 0, indent = 2): string => {
|
||||
// TODO: implement definition lists
|
||||
return render_unknown(element, level, indent);
|
||||
};
|
||||
|
||||
const render_list_item = (element: Element, level = 0, indent = 2): string => {
|
||||
return render_block_element("li", "rst-list-item", element, level, indent);
|
||||
};
|
||||
|
||||
const render_line = (element: Element, level = 0, indent = 2): string => {
|
||||
return render_block_element("div", "rst-line", element, level, indent);
|
||||
};
|
||||
|
||||
const render_line_block = (element: Element, level = 0, indent = 2): string => {
|
||||
return render_block_element("div", "rst-line-block", element, level, indent);
|
||||
};
|
||||
|
||||
const render_literal_block = (element: Element, level = 0, indent = 2): string => {
|
||||
return render_block_element("pre", "rst-literal-block", element, level, indent);
|
||||
};
|
||||
|
||||
const render_block_quote = (element: Element, level = 0, indent = 2): string => {
|
||||
return render_block_element("blockquote", "rst-block-quote", element, level, indent);
|
||||
};
|
||||
|
||||
const render_text = (element: Element): string => {
|
||||
return render_leaf_element("span", "rst-text", element);
|
||||
};
|
||||
|
||||
const render_interpreted_text = (element: Element, level = 0, indent = 2): string => {
|
||||
const className = "rst-interpreted_text" + (element.role ? ` rst-role-${element.role}` : "");
|
||||
return render_inline_element("span", className, element, level, indent);
|
||||
};
|
||||
|
||||
const render_emphasis = (element: Element, level = 0, indent = 2): string => {
|
||||
return render_inline_element("em", "rst-emphasis", element, level, indent);
|
||||
};
|
||||
|
||||
const render_strong = (element: Element, level = 0, indent = 2): string => {
|
||||
return render_inline_element("strong", "rst-strong", element, level, indent);
|
||||
};
|
||||
|
||||
const render_literal = (element: Element, level = 0, indent = 2): string => {
|
||||
return render_inline_element("tt", "rst-literal", element, level, indent);
|
||||
};
|
||||
|
||||
const render_leaf_element = (tag: string, className: string, element: Element): string => {
|
||||
return `<${tag} class="${className}">${element?.value?.replace(/\n$/, "")}</${tag}>`;
|
||||
};
|
||||
|
||||
const render_inline_element = (
|
||||
tag: string,
|
||||
className: string,
|
||||
element: Element,
|
||||
level = 0,
|
||||
indent = 2
|
||||
): string => {
|
||||
const children = element.children.map((e) => render_any(e, level + 1, indent)).join("");
|
||||
return `<${tag} class="${className}">${children}</${tag}>`;
|
||||
};
|
||||
|
||||
const render_block_element = (
|
||||
tag: string,
|
||||
className: string,
|
||||
element: Element,
|
||||
level = 0,
|
||||
indent = 2
|
||||
): string => {
|
||||
const indentString = " ".repeat(level * indent);
|
||||
const children = element.children.map((e) => render_any(e, level + 1, indent)).join("");
|
||||
|
||||
return `${indentString}<${tag} class="${className}">\n${children}\n${indentString}</${tag}>\n`;
|
||||
};
|
||||
|
||||
const render_directive = (element: Element, level = 0, indent = 2): string => {
|
||||
const indentString = " ".repeat(level * indent);
|
||||
const src = element.children[0].value;
|
||||
const alt = element.children[1].value;
|
||||
return element.directive === "image"
|
||||
? `
|
||||
${indentString}<img src="${src}" alt="${alt}" />\n
|
||||
`
|
||||
: "";
|
||||
};
|
|
@ -31,7 +31,10 @@ export interface Package {
|
|||
documentation_url?: string;
|
||||
github?: string;
|
||||
contributors?: Contributor[];
|
||||
readme_md?: string;
|
||||
readme?: {
|
||||
data: string;
|
||||
type: "md" | "rst";
|
||||
};
|
||||
manual_sorting: number;
|
||||
card_layout: "bottom" | "right" | "left";
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
"extends": "./.svelte-kit/tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"baseUrl": "..",
|
||||
"paths": {
|
||||
"$lib": ["src/lib"],
|
||||
|
@ -21,7 +22,8 @@
|
|||
"resolveJsonModule": true,
|
||||
"skipLibCheck": true,
|
||||
"sourceMap": true,
|
||||
"strict": true
|
||||
"strict": true,
|
||||
"typeRoots": ["./node_modules/@types", "./types"]
|
||||
},
|
||||
"include": [
|
||||
"ambient.d.ts",
|
||||
|
|
8
modules/ui/types/restructured.d.ts
vendored
Normal file
8
modules/ui/types/restructured.d.ts
vendored
Normal file
|
@ -0,0 +1,8 @@
|
|||
declare module "restructured" {
|
||||
interface RestructuredElement {
|
||||
children: RestructuredElement[];
|
||||
stringify(): string;
|
||||
}
|
||||
|
||||
export function parse(rst: string): RestructuredElement;
|
||||
}
|
198
pnpm-lock.yaml
198
pnpm-lock.yaml
|
@ -196,6 +196,7 @@ importers:
|
|||
prettier-plugin-svelte: ^2.7.0
|
||||
prettier-plugin-tailwindcss: ^0.2.0
|
||||
prismjs: ^1.29.0
|
||||
restructured: 0.0.11
|
||||
storybook: ^7.0.0-alpha.51
|
||||
svelte: ^3.44.0
|
||||
svelte-check: ^2.7.1
|
||||
|
@ -211,6 +212,7 @@ importers:
|
|||
'@tailwindcss/line-clamp': 0.4.2_tailwindcss@3.2.4
|
||||
'@types/prismjs': 1.26.0
|
||||
prismjs: 1.29.0
|
||||
restructured: 0.0.11
|
||||
svelte-markdown: 0.2.3_svelte@3.55.0
|
||||
svelte-watch-resize: 1.0.3
|
||||
devDependencies:
|
||||
|
@ -2757,7 +2759,7 @@ packages:
|
|||
'@storybook/components': 7.0.0-alpha.51
|
||||
'@storybook/csf-plugin': 7.0.0-alpha.51
|
||||
'@storybook/csf-tools': 7.0.0-alpha.51
|
||||
'@storybook/mdx2-csf': 1.0.0-next.8
|
||||
'@storybook/mdx2-csf': 1.1.0-next.0
|
||||
'@storybook/node-logger': 7.0.0-alpha.51
|
||||
'@storybook/postinstall': 7.0.0-alpha.51
|
||||
'@storybook/preview-web': 7.0.0-alpha.51
|
||||
|
@ -3171,7 +3173,7 @@ packages:
|
|||
'@storybook/client-api': 7.0.0-alpha.51
|
||||
'@storybook/client-logger': 7.0.0-alpha.51
|
||||
'@storybook/core-common': 7.0.0-alpha.51_typescript@4.9.3
|
||||
'@storybook/mdx2-csf': 1.0.0-next.8
|
||||
'@storybook/mdx2-csf': 1.1.0-next.0
|
||||
'@storybook/node-logger': 7.0.0-alpha.51
|
||||
'@storybook/preview-web': 7.0.0-alpha.51
|
||||
'@storybook/source-loader': 7.0.0-alpha.51
|
||||
|
@ -3698,8 +3700,8 @@ packages:
|
|||
resolution: {integrity: sha512-SgjcpweoAWnKvbZ1uINCGcSU1BtNJP2xR0x9obNw+qp6pi0OsOo1iA1DTgB0gJM0vc3BgrKgCMlJ76v/wlRB+Q==}
|
||||
dev: true
|
||||
|
||||
/@storybook/mdx2-csf/1.0.0-next.8:
|
||||
resolution: {integrity: sha512-t2O5s/HHTH5evZVHgVtCWTZgMZ/CaqDu3xVGgjVbKeTvpPAbi0Waab5SSX8T9PG5jNDei/x+jpAVCcNMOHoWzg==}
|
||||
/@storybook/mdx2-csf/1.1.0-next.0:
|
||||
resolution: {integrity: sha512-DeXEULA683XaoNJpAwqJU4lKnpCAACdIiSDqCuAfKzhHYAv11snQ8VjPrtR1I0WcWG4ATi+TawT1dWFnsYhhAQ==}
|
||||
dev: true
|
||||
|
||||
/@storybook/node-logger/7.0.0-alpha.51:
|
||||
|
@ -4039,7 +4041,7 @@ packages:
|
|||
peerDependencies:
|
||||
'@sveltejs/kit': ^1.0.0
|
||||
dependencies:
|
||||
'@sveltejs/kit': 1.0.1_svelte@3.55.1+vite@4.1.1
|
||||
'@sveltejs/kit': 1.0.1_svelte@3.55.0+vite@4.1.1
|
||||
import-meta-resolve: 2.2.0
|
||||
dev: true
|
||||
|
||||
|
@ -4882,6 +4884,10 @@ packages:
|
|||
negotiator: 0.6.3
|
||||
dev: true
|
||||
|
||||
/acorn-es7-plugin/1.1.7:
|
||||
resolution: {integrity: sha512-7D+8kscFMf6F2t+8ZRYmv82CncDZETsaZ4dEl5lh3qQez7FVABk2Vz616SAbnIq1PbNsLVaZjl2oSkk5BWAKng==}
|
||||
dev: false
|
||||
|
||||
/acorn-globals/7.0.1:
|
||||
resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==}
|
||||
dependencies:
|
||||
|
@ -4911,6 +4917,12 @@ packages:
|
|||
resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
|
||||
/acorn/5.7.4:
|
||||
resolution: {integrity: sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
hasBin: true
|
||||
dev: false
|
||||
|
||||
/acorn/7.4.1:
|
||||
resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
|
@ -5099,6 +5111,10 @@ packages:
|
|||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
|
||||
/array-filter/1.0.0:
|
||||
resolution: {integrity: sha512-Ene1hbrinPZ1qPoZp7NSx4jQnh4nr7MtY78pHNb+yr8yHbxmTS7ChGW0a55JKA7TkRDeoQxK4GcJaCvBYplSKA==}
|
||||
dev: false
|
||||
|
||||
/array-flatten/1.1.1:
|
||||
resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
|
||||
dev: true
|
||||
|
@ -5638,6 +5654,11 @@ packages:
|
|||
get-intrinsic: 1.1.3
|
||||
dev: true
|
||||
|
||||
/call-signature/0.0.2:
|
||||
resolution: {integrity: sha512-qvYvkAVcoae0obt8OsZn0VEBHeEpvYIZDy1gGYtZDJG0fHawew+Mi0dBjieFz8F8dzQ2Kr19+nsDm+T5XFVs+Q==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: false
|
||||
|
||||
/callsites/3.1.0:
|
||||
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
|
||||
engines: {node: '>=6'}
|
||||
|
@ -5890,7 +5911,6 @@ packages:
|
|||
engines: {node: '>= 0.6.x'}
|
||||
dependencies:
|
||||
graceful-readlink: 1.0.1
|
||||
dev: true
|
||||
|
||||
/commander/5.1.0:
|
||||
resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==}
|
||||
|
@ -6069,6 +6089,12 @@ packages:
|
|||
browserslist: 4.21.4
|
||||
dev: true
|
||||
|
||||
/core-js/2.6.12:
|
||||
resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==}
|
||||
deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
|
||||
/core-js/3.26.1:
|
||||
resolution: {integrity: sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==}
|
||||
requiresBuild: true
|
||||
|
@ -6385,6 +6411,10 @@ packages:
|
|||
/didyoumean/1.2.2:
|
||||
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
|
||||
|
||||
/diff-match-patch/1.0.5:
|
||||
resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==}
|
||||
dev: false
|
||||
|
||||
/diff-sequences/29.3.1:
|
||||
resolution: {integrity: sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
|
@ -6542,7 +6572,6 @@ packages:
|
|||
|
||||
/eastasianwidth/0.2.0:
|
||||
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
|
||||
dev: true
|
||||
|
||||
/ee-first/1.1.1:
|
||||
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
|
||||
|
@ -6730,6 +6759,20 @@ packages:
|
|||
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
|
||||
dev: true
|
||||
|
||||
/empower-core/1.2.0:
|
||||
resolution: {integrity: sha512-g6+K6Geyc1o6FdXs9HwrXleCFan7d66G5xSCfSF7x1mJDCes6t0om9lFQG3zOrzh3Bkb/45N0cZ5Gqsf7YrzGQ==}
|
||||
dependencies:
|
||||
call-signature: 0.0.2
|
||||
core-js: 2.6.12
|
||||
dev: false
|
||||
|
||||
/empower/1.3.1:
|
||||
resolution: {integrity: sha512-uB6/ViBaawOO/uujFADTK3SqdYlxYNn+N4usK9MRKZ4Hbn/1QSy8k2PezxCA2/+JGbF8vd/eOfghZ90oOSDZCA==}
|
||||
dependencies:
|
||||
core-js: 2.6.12
|
||||
empower-core: 1.2.0
|
||||
dev: false
|
||||
|
||||
/encodeurl/1.0.2:
|
||||
resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
|
||||
engines: {node: '>= 0.8'}
|
||||
|
@ -7515,6 +7558,12 @@ packages:
|
|||
engines: {node: '>=4'}
|
||||
hasBin: true
|
||||
|
||||
/espurify/1.8.1:
|
||||
resolution: {integrity: sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg==}
|
||||
dependencies:
|
||||
core-js: 2.6.12
|
||||
dev: false
|
||||
|
||||
/esquery/1.4.0:
|
||||
resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==}
|
||||
engines: {node: '>=0.10'}
|
||||
|
@ -7532,7 +7581,6 @@ packages:
|
|||
/estraverse/4.3.0:
|
||||
resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
|
||||
engines: {node: '>=4.0'}
|
||||
dev: true
|
||||
|
||||
/estraverse/5.3.0:
|
||||
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
|
||||
|
@ -8277,7 +8325,6 @@ packages:
|
|||
|
||||
/graceful-readlink/1.0.1:
|
||||
resolution: {integrity: sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==}
|
||||
dev: true
|
||||
|
||||
/grapheme-splitter/1.0.4:
|
||||
resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
|
||||
|
@ -8558,6 +8605,10 @@ packages:
|
|||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/indexof/0.0.1:
|
||||
resolution: {integrity: sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==}
|
||||
dev: false
|
||||
|
||||
/inflight/1.0.6:
|
||||
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
|
||||
dependencies:
|
||||
|
@ -10332,7 +10383,6 @@ packages:
|
|||
/object-assign/4.1.1:
|
||||
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
|
||||
/object-copy/0.1.0:
|
||||
resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==}
|
||||
|
@ -10771,6 +10821,94 @@ packages:
|
|||
picocolors: 1.0.0
|
||||
source-map-js: 1.0.2
|
||||
|
||||
/power-assert-context-formatter/1.2.0:
|
||||
resolution: {integrity: sha512-HLNEW8Bin+BFCpk/zbyKwkEu9W8/zThIStxGo7weYcFkKgMuGCHUJhvJeBGXDZf0Qm2xis4pbnnciGZiX0EpSg==}
|
||||
dependencies:
|
||||
core-js: 2.6.12
|
||||
power-assert-context-traversal: 1.2.0
|
||||
dev: false
|
||||
|
||||
/power-assert-context-reducer-ast/1.2.0:
|
||||
resolution: {integrity: sha512-EgOxmZ/Lb7tw4EwSKX7ZnfC0P/qRZFEG28dx/690qvhmOJ6hgThYFm5TUWANDLK5NiNKlPBi5WekVGd2+5wPrw==}
|
||||
dependencies:
|
||||
acorn: 5.7.4
|
||||
acorn-es7-plugin: 1.1.7
|
||||
core-js: 2.6.12
|
||||
espurify: 1.8.1
|
||||
estraverse: 4.3.0
|
||||
dev: false
|
||||
|
||||
/power-assert-context-traversal/1.2.0:
|
||||
resolution: {integrity: sha512-NFoHU6g2umNajiP2l4qb0BRWD773Aw9uWdWYH9EQsVwIZnog5bd2YYLFCVvaxWpwNzWeEfZIon2xtyc63026pQ==}
|
||||
dependencies:
|
||||
core-js: 2.6.12
|
||||
estraverse: 4.3.0
|
||||
dev: false
|
||||
|
||||
/power-assert-formatter/1.4.1:
|
||||
resolution: {integrity: sha512-c2QzTk1a6BUumuzjffFUrsMlx2gqLEoeEMrx6gVaHzQ/zTBTibQGblaQslbv72eq9RJNFQXRryjTHoffIEz+ww==}
|
||||
dependencies:
|
||||
core-js: 2.6.12
|
||||
power-assert-context-formatter: 1.2.0
|
||||
power-assert-context-reducer-ast: 1.2.0
|
||||
power-assert-renderer-assertion: 1.2.0
|
||||
power-assert-renderer-comparison: 1.2.0
|
||||
power-assert-renderer-diagram: 1.2.0
|
||||
power-assert-renderer-file: 1.2.0
|
||||
dev: false
|
||||
|
||||
/power-assert-renderer-assertion/1.2.0:
|
||||
resolution: {integrity: sha512-3F7Q1ZLmV2ZCQv7aV7NJLNK9G7QsostrhOU7U0RhEQS/0vhEqrRg2jEJl1jtUL4ZyL2dXUlaaqrmPv5r9kRvIg==}
|
||||
dependencies:
|
||||
power-assert-renderer-base: 1.1.1
|
||||
power-assert-util-string-width: 1.2.0
|
||||
dev: false
|
||||
|
||||
/power-assert-renderer-base/1.1.1:
|
||||
resolution: {integrity: sha512-aGCUi0NuNd/fVS6KKMLTjRP58cdlHlQKgXV4WKl3YlUhnN0d9QBEYOyvmiumdjk+5GuZmozvEmBIcTAcxEZqnw==}
|
||||
dev: false
|
||||
|
||||
/power-assert-renderer-comparison/1.2.0:
|
||||
resolution: {integrity: sha512-7c3RKPDBKK4E3JqdPtYRE9cM8AyX4LC4yfTvvTYyx8zSqmT5kJnXwzR0yWQLOavACllZfwrAGQzFiXPc5sWa+g==}
|
||||
dependencies:
|
||||
core-js: 2.6.12
|
||||
diff-match-patch: 1.0.5
|
||||
power-assert-renderer-base: 1.1.1
|
||||
stringifier: 1.4.0
|
||||
type-name: 2.0.2
|
||||
dev: false
|
||||
|
||||
/power-assert-renderer-diagram/1.2.0:
|
||||
resolution: {integrity: sha512-JZ6PC+DJPQqfU6dwSmpcoD7gNnb/5U77bU5KgNwPPa+i1Pxiz6UuDeM3EUBlhZ1HvH9tMjI60anqVyi5l2oNdg==}
|
||||
dependencies:
|
||||
core-js: 2.6.12
|
||||
power-assert-renderer-base: 1.1.1
|
||||
power-assert-util-string-width: 1.2.0
|
||||
stringifier: 1.4.0
|
||||
dev: false
|
||||
|
||||
/power-assert-renderer-file/1.2.0:
|
||||
resolution: {integrity: sha512-/oaVrRbeOtGoyyd7e4IdLP/jIIUFJdqJtsYzP9/88R39CMnfF/S/rUc8ZQalENfUfQ/wQHu+XZYRMaCEZmEesg==}
|
||||
dependencies:
|
||||
power-assert-renderer-base: 1.1.1
|
||||
dev: false
|
||||
|
||||
/power-assert-util-string-width/1.2.0:
|
||||
resolution: {integrity: sha512-lX90G0igAW0iyORTILZ/QjZWsa1MZ6VVY3L0K86e2eKun3S4LKPH4xZIl8fdeMYLfOjkaszbNSzf1uugLeAm2A==}
|
||||
dependencies:
|
||||
eastasianwidth: 0.2.0
|
||||
dev: false
|
||||
|
||||
/power-assert/1.6.1:
|
||||
resolution: {integrity: sha512-VWkkZV6Y+W8qLX/PtJu2Ur2jDPIs0a5vbP0TpKeybNcIXmT4vcKoVkyTp5lnQvTpY/DxacAZ4RZisHRHLJcAZQ==}
|
||||
dependencies:
|
||||
define-properties: 1.1.4
|
||||
empower: 1.3.1
|
||||
power-assert-formatter: 1.4.1
|
||||
universal-deep-strict-equal: 1.2.2
|
||||
xtend: 4.0.2
|
||||
dev: false
|
||||
|
||||
/prelude-ls/1.1.2:
|
||||
resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==}
|
||||
engines: {node: '>= 0.8.0'}
|
||||
|
@ -11351,6 +11489,16 @@ packages:
|
|||
lowercase-keys: 3.0.0
|
||||
dev: true
|
||||
|
||||
/restructured/0.0.11:
|
||||
resolution: {integrity: sha512-KqEuVvRfyDcU6bsueovH4QQFiSj72SHRa01Rn1AwEgpYTshVt26Q8aLQUeAg376phU0jkhDxvUeKiQxY2DNYXw==}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
commander: 2.9.0
|
||||
lodash: 4.17.21
|
||||
power-assert: 1.6.1
|
||||
unist-util-map: 1.0.5
|
||||
dev: false
|
||||
|
||||
/ret/0.1.15:
|
||||
resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==}
|
||||
engines: {node: '>=0.12'}
|
||||
|
@ -11938,6 +12086,14 @@ packages:
|
|||
dependencies:
|
||||
safe-buffer: 5.2.1
|
||||
|
||||
/stringifier/1.4.0:
|
||||
resolution: {integrity: sha512-cNsMOqqrcbLcHTXEVmkw9y0fwDwkdgtZwlfyolzpQDoAE1xdNGhQhxBUfiDvvZIKl1hnUEgMv66nHwtMz3OjPw==}
|
||||
dependencies:
|
||||
core-js: 2.6.12
|
||||
traverse: 0.6.7
|
||||
type-name: 2.0.2
|
||||
dev: false
|
||||
|
||||
/stringify-entities/4.0.3:
|
||||
resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==}
|
||||
dependencies:
|
||||
|
@ -12526,6 +12682,10 @@ packages:
|
|||
dependencies:
|
||||
punycode: 2.1.1
|
||||
|
||||
/traverse/0.6.7:
|
||||
resolution: {integrity: sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==}
|
||||
dev: false
|
||||
|
||||
/tree-kill/1.2.2:
|
||||
resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
|
||||
hasBin: true
|
||||
|
@ -12630,6 +12790,10 @@ packages:
|
|||
mime-types: 2.1.35
|
||||
dev: true
|
||||
|
||||
/type-name/2.0.2:
|
||||
resolution: {integrity: sha512-kkgkuqR/jKdKO5oh/I2SMu2dGbLXoJq0zkdgbxaqYK+hr9S9edwVVGf+tMUFTx2gH9TN2+Zu9JZ/Njonb3cjhA==}
|
||||
dev: false
|
||||
|
||||
/typed-emitter/2.1.0:
|
||||
resolution: {integrity: sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==}
|
||||
optionalDependencies:
|
||||
|
@ -12742,6 +12906,12 @@ packages:
|
|||
resolution: {integrity: sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==}
|
||||
dev: true
|
||||
|
||||
/unist-util-map/1.0.5:
|
||||
resolution: {integrity: sha512-dFil/AN6vqhnQWNCZk0GF/G3+Q5YwsB+PqjnzvpO2wzdRtUJ1E8PN+XRE/PRr/G3FzKjRTJU0haqE0Ekl+O3Ag==}
|
||||
dependencies:
|
||||
object-assign: 4.1.1
|
||||
dev: false
|
||||
|
||||
/unist-util-position-from-estree/1.1.1:
|
||||
resolution: {integrity: sha512-xtoY50b5+7IH8tFbkw64gisG9tMSpxDjhX9TmaJJae/XuxQ9R/Kc8Nv1eOsf43Gt4KV/LkriMy9mptDr7XLcaw==}
|
||||
dependencies:
|
||||
|
@ -12797,6 +12967,14 @@ packages:
|
|||
unist-util-visit-parents: 5.1.1
|
||||
dev: true
|
||||
|
||||
/universal-deep-strict-equal/1.2.2:
|
||||
resolution: {integrity: sha512-UpnFi3/IF3jZHIHTdQXTHLCqpBP3805OFFRPHgvCS7k0oob2YVXxMTjS0U0g9qJTzqFRMwEnFFSlFLqt6zwjTQ==}
|
||||
dependencies:
|
||||
array-filter: 1.0.0
|
||||
indexof: 0.0.1
|
||||
object-keys: 1.1.1
|
||||
dev: false
|
||||
|
||||
/universalify/0.1.2:
|
||||
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
|
||||
engines: {node: '>= 4.0.0'}
|
||||
|
|
Loading…
Reference in a new issue