From 6e5810f71441d03d881a0b5dc2b757b643d956cb Mon Sep 17 00:00:00 2001 From: micziz Date: Wed, 26 Apr 2023 21:51:45 +0200 Subject: [PATCH 01/31] Add sort of impl for recursive scanning --- src/utils/recursiveScan.ts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/utils/recursiveScan.ts diff --git a/src/utils/recursiveScan.ts b/src/utils/recursiveScan.ts new file mode 100644 index 0000000..516cfc8 --- /dev/null +++ b/src/utils/recursiveScan.ts @@ -0,0 +1,25 @@ +// Build a recursive directory scanner + +import { readdir, lstat } from "fs/promises"; + +export async function* recursiveDirectoryScanner(directory: string): AsyncIterable { + const files = await readdir(directory); + for (const file of files) { + const path = `${directory}/${file}`; + const stat = await lstat(path); + if (stat.isDirectory()) { + yield* recursiveDirectoryScanner(path); + } else { + yield path; + } + } +} + +async function getArr(directory: string){ + const arr = [] + const iterab = await recursiveDirectoryScanner(directory) + for await(const el of iterab) arr.push(el.replace(directory, "")) + return arr; +} + +console.log(await getArr("./test")) From 8cf5f15a8bddc776eb6ac75889d608ddabc18dbe Mon Sep 17 00:00:00 2001 From: micziz Date: Wed, 26 Apr 2023 22:37:46 +0200 Subject: [PATCH 02/31] More simple functions --- package.json | 1 + pnpm-lock.yaml | 7 ++++ src/commands/compile.ts | 82 +++++++++++++------------------------ src/utils/handleCss.ts | 14 +++++++ src/utils/readInitialDir.ts | 62 ++++++++++++---------------- src/utils/recursiveScan.ts | 25 ----------- src/utils/toWrite.ts | 11 +++++ 7 files changed, 89 insertions(+), 113 deletions(-) delete mode 100644 src/utils/recursiveScan.ts create mode 100644 src/utils/toWrite.ts diff --git a/package.json b/package.json index fc35eb4..f6e8a9f 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "author": "micziz", "dependencies": { "@mdx-js/mdx": "^2.3.0", + "dir-exists-safe": "^1.1.0", "fs-extra": "^11.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9595dc3..2a2692e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,9 @@ dependencies: '@mdx-js/mdx': specifier: ^2.3.0 version: 2.3.0 + dir-exists-safe: + specifier: ^1.1.0 + version: 1.1.0 fs-extra: specifier: ^11.1.1 version: 11.1.1 @@ -686,6 +689,10 @@ packages: engines: {node: '>=0.3.1'} dev: false + /dir-exists-safe@1.1.0: + resolution: {integrity: sha512-QbUvIJVIRN3zUdJlD+p4d8v2i8J5ISImhjWA7rcKc69XY5T1u850AVQqnvtiIQOJwGK+fBYGP8Tdw1d8cvXPvw==} + dev: false + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} diff --git a/src/commands/compile.ts b/src/commands/compile.ts index 35c66ba..0f4a919 100644 --- a/src/commands/compile.ts +++ b/src/commands/compile.ts @@ -1,27 +1,27 @@ // Imports + // Local imports -// Import check to check if a directory exists -import { check } from "../utils/check.js"; + // Import start and end to get the markdown import { start, end } from "../utils/startAndEnd.js"; // Import handleCss to handle the css if it's needed -import { handleCss } from "../utils/handleCss.js"; +import { fullCssHandle } from "../utils/handleCss.js"; // Import readIntialDir to read the directory to then compile from -import { readInitialDir } from "../utils/readInitialDir.js"; +import { getArr } from "../utils/readInitialDir.js"; // Import handleTitle to get the right title import { handleTitle } from "../utils/handleTitle.js"; // Import handleMd to handle markdown import { handleMd } from "../utils/handleMd.js"; +// Import finalWrite to write to the html files +import { finalWrite } from "../utils/toWrite.js"; // External imports -// Import writeFile, mkdir and readFile from fs/promises (i'm not writing why) -import { writeFile, mkdir, readFile } from "fs/promises"; + +// readFile from fs/promises to read the markdown files. +import { readFile } from "fs/promises"; // Import parse from path to parse the paths and get the names and extensions import { parse } from "path"; -// The css string. Just if something goes wrong. -let cssString: string; - // Exported async function witch takes an object with the required properties. /** * Compiles everything @@ -50,60 +50,36 @@ export async function compile(configObj: { verbose: boolean; }): Promise { // Declare an empty array for the files in the markdown directory - const dirContentsArr: string[] = await readInitialDir(configObj.input); + const dirContentsArr: string[] = await getArr(configObj.input); + console.log(dirContentsArr) // If the verbose options is active if (configObj.verbose) { // Log what we are doing console.log(`Reading ${configObj.input}`); } - // We use foreach on the previous array - dirContentsArr.forEach(async (htmlFileName) => { - // If the verbose options is active + for (const file in dirContentsArr){ + const pathInQuestion = dirContentsArr[file].replace("/", "") if (configObj.verbose) { // Log what we are doing - console.log(`Compiling ${htmlFileName}`); + console.log(`Compiling ${pathInQuestion}`); } - let contentToWrite: Buffer; try { - // We read the md file - contentToWrite = await readFile( - `${configObj.input}/${htmlFileName}.md` - ); - } catch { - contentToWrite = await readFile( - `${configObj.input}/${htmlFileName}.mdx` + const contentToWrite = await readFile( + `${configObj.input}/${pathInQuestion}` ); - } - // If css is enabled - if (configObj.css === true) { - // If the verbose options is active - if (configObj.verbose) { - // Log what we are doing - console.log(`Getting css from ${configObj.cssDir}`); + if (configObj.css) { + const cssString = await fullCssHandle(configObj.verbose, configObj.cssDir, pathInQuestion) + const toWrite = ` + ${start(handleTitle(configObj.title, pathInQuestion))} + ${cssString} + ${handleMd(contentToWrite.toString("utf8"))} + ${end()} + `; + await finalWrite(`${configObj.out}/${parse(pathInQuestion).name}.html`, toWrite) } - // Get css to inject later - cssString = await handleCss( - configObj.cssDir, - parse(htmlFileName).name - ); - } - const toWrite = ` -${start(handleTitle(configObj.title, htmlFileName))} - ${cssString} - ${handleMd(contentToWrite.toString("utf8"))} -${end()} - `; - // Prepare the markup to inject - // If the output directory exists - if (await check(configObj.out)) { - // We just write the file - await writeFile(`${configObj.out}/${htmlFileName}.html`, toWrite); - // Else - } else { - // We create the directory - await mkdir(configObj.out); - // We then write out the file - await writeFile(`${configObj.out}/${htmlFileName}.html`, toWrite); + } catch { + throw new Error("Path in question does not exist!") } - }); + } + } diff --git a/src/utils/handleCss.ts b/src/utils/handleCss.ts index dcb75f7..65f7ca8 100644 --- a/src/utils/handleCss.ts +++ b/src/utils/handleCss.ts @@ -130,3 +130,17 @@ export async function handleCss( // If all else fails, return an empty string return toReturn; } + +export async function fullCssHandle(isVerbose: boolean, cssDir: string, pathInQuestion: string){ + if (isVerbose) { + // Log what we are doing + console.log(`Getting css from ${cssDir}`); + } + // Get css to inject later + const cssString = await handleCss( + cssDir, + parse(pathInQuestion).name + ); + return cssString; +} + diff --git a/src/utils/readInitialDir.ts b/src/utils/readInitialDir.ts index 2beff78..4aca503 100644 --- a/src/utils/readInitialDir.ts +++ b/src/utils/readInitialDir.ts @@ -1,40 +1,32 @@ -import { readdir } from "fs/promises"; +import { readdir, lstat } from "fs/promises"; import { parse } from "path"; -import type { PathLike } from "fs"; -/** - * Returns an array with the filenames of the markdown directory - * - * For example: - * - * ```js - * import { readInitialDir } from './utils/readInitialDir.ts' - * - * const initialDir = await readInitialDir('./directory') - * ``` - * - * @param dirToRead - The directory to read - * - * @returns Promise: string[] - */ -export async function readInitialDir(dirToRead: PathLike): Promise { - // Declare initial array - const dirContentsArr: string[] = []; - try { - // We read the directory (ignore variable names) - const toCompileDirRead = await readdir(dirToRead); - // we use foreach (not a performance bottleneck, please do not change :) ); - toCompileDirRead.forEach((file) => { - // If the file ends with .md - if (parse(file).ext == ".md" || parse(file).ext == ".mdx") { - // Push it to the filenames array - dirContentsArr.push(parse(file).name); +async function* recursiveDirectoryScanner(directory: string): AsyncIterable { + const files = await readdir(directory); + for (const file of files) { + const path = `${directory}/${file}`; + const stat = await lstat(path); + if (stat.isDirectory()) { + yield* recursiveDirectoryScanner(path); + } else { + // check if file is markdown or mdx + if (parse(path).ext === ".md" || parse(path).ext === ".mdx"){ + yield path; + } else { + continue; } - }); - } catch { - // Throw an error - throw `${dirToRead} does not exist!`; + } } - // Return the parsed file names for later use - return dirContentsArr; } + +export async function getArr(directory: string): Promise { + const arr = [] + const iterab = await recursiveDirectoryScanner(directory) + for await(const el of iterab) arr.push(el.replace(directory, "")) + console.log(arr) + + return arr; +} + +console.log(await getArr("./test")) + diff --git a/src/utils/recursiveScan.ts b/src/utils/recursiveScan.ts deleted file mode 100644 index 516cfc8..0000000 --- a/src/utils/recursiveScan.ts +++ /dev/null @@ -1,25 +0,0 @@ -// Build a recursive directory scanner - -import { readdir, lstat } from "fs/promises"; - -export async function* recursiveDirectoryScanner(directory: string): AsyncIterable { - const files = await readdir(directory); - for (const file of files) { - const path = `${directory}/${file}`; - const stat = await lstat(path); - if (stat.isDirectory()) { - yield* recursiveDirectoryScanner(path); - } else { - yield path; - } - } -} - -async function getArr(directory: string){ - const arr = [] - const iterab = await recursiveDirectoryScanner(directory) - for await(const el of iterab) arr.push(el.replace(directory, "")) - return arr; -} - -console.log(await getArr("./test")) diff --git a/src/utils/toWrite.ts b/src/utils/toWrite.ts new file mode 100644 index 0000000..e6117db --- /dev/null +++ b/src/utils/toWrite.ts @@ -0,0 +1,11 @@ +import { dirExists } from "dir-exists-safe"; +import { mkdir, writeFile } from "fs/promises"; + +export async function finalWrite(toWriteDir: string, toWrite: string){ + if (!(await dirExists(toWriteDir))){ + await mkdir(toWriteDir) + await writeFile(toWriteDir, toWrite) + } else { + await writeFile(toWriteDir, toWrite) + } +} \ No newline at end of file From 1ae1895b5a93162e8a1407860139eca2ee226108 Mon Sep 17 00:00:00 2001 From: micziz Date: Wed, 26 Apr 2023 22:39:26 +0200 Subject: [PATCH 03/31] Remove check.ts, use external function instead --- src/utils/check.ts | 35 ----------------------------------- 1 file changed, 35 deletions(-) delete mode 100644 src/utils/check.ts diff --git a/src/utils/check.ts b/src/utils/check.ts deleted file mode 100644 index 686212c..0000000 --- a/src/utils/check.ts +++ /dev/null @@ -1,35 +0,0 @@ -// Imports -// Import fs-extra -import fse from "fs-extra"; - -// Export an async function witch takes a string as an argument and returns a promise with a boolean -/** - * Checks if a directory exists - * - * For example: - * - * ```js - * import { check } from './utils/check.ts' - * - * if (check('./dirToCheck')){ - * // Do stuff - * } - * ``` - * - * @param dir - The directory to check. - * - * @returns Promise: boolean - */ -export async function check(dir: string): Promise { - // Try - try { - // To read the directory - await fse.ensureDir(dir); - // If it exists, return true to indicate that it's present. - return true; - // Otherwise - } catch (err) { - // Return false to indicate that it's not present and we need to create it - return false; - } -} From a43d2f190f7dd1cd747abd5aa5b4c97e0c0e5fa4 Mon Sep 17 00:00:00 2001 From: micziz Date: Wed, 26 Apr 2023 22:39:53 +0200 Subject: [PATCH 04/31] rm fs-extra --- package.json | 1 - pnpm-lock.yaml | 29 ----------------------------- 2 files changed, 30 deletions(-) diff --git a/package.json b/package.json index f6e8a9f..c9bdc02 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,6 @@ "dependencies": { "@mdx-js/mdx": "^2.3.0", "dir-exists-safe": "^1.1.0", - "fs-extra": "^11.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", "remark-gfm": "^3.0.1" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2a2692e..3c4e030 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,9 +7,6 @@ dependencies: dir-exists-safe: specifier: ^1.1.0 version: 1.1.0 - fs-extra: - specifier: ^11.1.1 - version: 11.1.1 react: specifier: ^18.2.0 version: 18.2.0 @@ -945,15 +942,6 @@ packages: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true - /fs-extra@11.1.1: - resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} - engines: {node: '>=14.14'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.0 - dev: false - /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true @@ -1020,10 +1008,6 @@ packages: slash: 3.0.0 dev: true - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: false - /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true @@ -1191,14 +1175,6 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - dependencies: - universalify: 2.0.0 - optionalDependencies: - graceful-fs: 4.2.11 - dev: false - /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} @@ -2281,11 +2257,6 @@ packages: unist-util-visit-parents: 5.1.3 dev: false - /universalify@2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} - engines: {node: '>= 10.0.0'} - dev: false - /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: From 0e2c1122c11c356b966a8e5dac5f792619eb604f Mon Sep 17 00:00:00 2001 From: micziz Date: Wed, 26 Apr 2023 22:41:04 +0200 Subject: [PATCH 05/31] add commments --- src/utils/handleCss.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/utils/handleCss.ts b/src/utils/handleCss.ts index 65f7ca8..95772c6 100644 --- a/src/utils/handleCss.ts +++ b/src/utils/handleCss.ts @@ -133,14 +133,15 @@ export async function handleCss( export async function fullCssHandle(isVerbose: boolean, cssDir: string, pathInQuestion: string){ if (isVerbose) { - // Log what we are doing + // Log what we are doing console.log(`Getting css from ${cssDir}`); } - // Get css to inject later + // Read css to inject later const cssString = await handleCss( cssDir, parse(pathInQuestion).name ); + // Return the cssString return cssString; } From 4c8f9fab278583be07e6e61f0b2abb9d89ecbc64 Mon Sep 17 00:00:00 2001 From: micziz Date: Wed, 26 Apr 2023 22:42:36 +0200 Subject: [PATCH 06/31] Rm usless console.log --- src/utils/handleTitle.ts | 2 +- src/utils/readInitialDir.ts | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/utils/handleTitle.ts b/src/utils/handleTitle.ts index ceeb495..cb0e45b 100644 --- a/src/utils/handleTitle.ts +++ b/src/utils/handleTitle.ts @@ -16,7 +16,7 @@ import { parse } from "path"; * * @returns string */ -export function handleTitle(titleGiven: any, htmlFileName: string): string { +export function handleTitle(titleGiven: string, htmlFileName: string): string { if (typeof titleGiven == "object") { if (parse(htmlFileName).name in titleGiven) { return titleGiven[parse(htmlFileName).name]; diff --git a/src/utils/readInitialDir.ts b/src/utils/readInitialDir.ts index 4aca503..321db8f 100644 --- a/src/utils/readInitialDir.ts +++ b/src/utils/readInitialDir.ts @@ -23,10 +23,8 @@ export async function getArr(directory: string): Promise { const arr = [] const iterab = await recursiveDirectoryScanner(directory) for await(const el of iterab) arr.push(el.replace(directory, "")) - console.log(arr) - return arr; } -console.log(await getArr("./test")) + From 140d435c0c612a9262c4458ae6b5d7fc610baacf Mon Sep 17 00:00:00 2001 From: micziz Date: Sat, 29 Apr 2023 21:28:59 +0200 Subject: [PATCH 07/31] Add basic impl --- package.json | 5 +- pnpm-lock.yaml | 103 +++++++++++++++++++++++++ src/commands/compile.ts | 85 --------------------- src/utils/getConfig.ts | 31 -------- src/utils/handleArgs.ts | 36 --------- src/utils/handleCss.ts | 147 ------------------------------------ src/utils/handleMd.ts | 30 -------- src/utils/handleTitle.ts | 29 ------- src/utils/readInitialDir.ts | 30 -------- src/utils/startAndEnd.ts | 51 ------------- src/utils/toWrite.ts | 11 --- src/utils/types.ts | 45 ----------- src/v1/compile.ts | 21 ++++++ src/v1/getHtml.ts | 21 ++++++ src/v1/readDir.ts | 29 +++++++ src/v1/writeHtml.ts | 19 +++++ 16 files changed, 197 insertions(+), 496 deletions(-) delete mode 100644 src/commands/compile.ts delete mode 100644 src/utils/getConfig.ts delete mode 100644 src/utils/handleArgs.ts delete mode 100644 src/utils/handleCss.ts delete mode 100644 src/utils/handleMd.ts delete mode 100644 src/utils/handleTitle.ts delete mode 100644 src/utils/readInitialDir.ts delete mode 100644 src/utils/startAndEnd.ts delete mode 100644 src/utils/toWrite.ts delete mode 100644 src/utils/types.ts create mode 100644 src/v1/compile.ts create mode 100644 src/v1/getHtml.ts create mode 100644 src/v1/readDir.ts create mode 100644 src/v1/writeHtml.ts diff --git a/package.json b/package.json index c9bdc02..b4c5f70 100644 --- a/package.json +++ b/package.json @@ -31,9 +31,12 @@ "dependencies": { "@mdx-js/mdx": "^2.3.0", "dir-exists-safe": "^1.1.0", + "fs-extra": "^11.1.1", + "gray-matter": "^4.0.3", "react": "^18.2.0", "react-dom": "^18.2.0", - "remark-gfm": "^3.0.1" + "remark-gfm": "^3.0.1", + "zod": "^3.21.4" }, "devDependencies": { "@chiogen/rollup-plugin-terser": "^7.1.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3c4e030..9d56288 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,6 +7,12 @@ dependencies: dir-exists-safe: specifier: ^1.1.0 version: 1.1.0 + fs-extra: + specifier: ^11.1.1 + version: 11.1.1 + gray-matter: + specifier: ^4.0.3 + version: 4.0.3 react: specifier: ^18.2.0 version: 18.2.0 @@ -16,6 +22,9 @@ dependencies: remark-gfm: specifier: ^3.0.1 version: 3.0.1 + zod: + specifier: ^3.21.4 + version: 3.21.4 devDependencies: '@chiogen/rollup-plugin-terser': @@ -501,6 +510,12 @@ packages: picomatch: 2.3.1 dev: true + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: false + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true @@ -807,6 +822,12 @@ packages: eslint-visitor-keys: 3.4.0 dev: true + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: false + /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} @@ -875,6 +896,13 @@ packages: engines: {node: '>=0.10.0'} dev: true + /extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + dependencies: + is-extendable: 0.1.1 + dev: false + /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: false @@ -942,6 +970,15 @@ packages: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true + /fs-extra@11.1.1: + resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: false + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true @@ -1008,10 +1045,24 @@ packages: slash: 3.0.0 dev: true + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: false + /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true + /gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + dependencies: + js-yaml: 3.14.1 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 + dev: false + /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -1112,6 +1163,11 @@ packages: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} dev: false + /is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + dev: false + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -1160,6 +1216,14 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: false + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -1175,6 +1239,19 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.11 + dev: false + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: false + /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} @@ -2043,6 +2120,14 @@ packages: loose-envify: 1.4.0 dev: false + /section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} + dependencies: + extend-shallow: 2.0.1 + kind-of: 6.0.3 + dev: false + /semver@7.3.8: resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} engines: {node: '>=10'} @@ -2094,6 +2179,10 @@ packages: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} dev: false + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: false + /stringify-entities@4.0.3: resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} dependencies: @@ -2108,6 +2197,11 @@ packages: ansi-regex: 5.0.1 dev: true + /strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + dev: false + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -2257,6 +2351,11 @@ packages: unist-util-visit-parents: 5.1.3 dev: false + /universalify@2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + dev: false + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -2323,6 +2422,10 @@ packages: engines: {node: '>=10'} dev: true + /zod@3.21.4: + resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} + dev: false + /zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} dev: false diff --git a/src/commands/compile.ts b/src/commands/compile.ts deleted file mode 100644 index 0f4a919..0000000 --- a/src/commands/compile.ts +++ /dev/null @@ -1,85 +0,0 @@ -// Imports - -// Local imports - -// Import start and end to get the markdown -import { start, end } from "../utils/startAndEnd.js"; -// Import handleCss to handle the css if it's needed -import { fullCssHandle } from "../utils/handleCss.js"; -// Import readIntialDir to read the directory to then compile from -import { getArr } from "../utils/readInitialDir.js"; -// Import handleTitle to get the right title -import { handleTitle } from "../utils/handleTitle.js"; -// Import handleMd to handle markdown -import { handleMd } from "../utils/handleMd.js"; -// Import finalWrite to write to the html files -import { finalWrite } from "../utils/toWrite.js"; - -// External imports - -// readFile from fs/promises to read the markdown files. -import { readFile } from "fs/promises"; -// Import parse from path to parse the paths and get the names and extensions -import { parse } from "path"; - -// Exported async function witch takes an object with the required properties. -/** - * Compiles everything - * - * For example: - * - * ```js - * import { compile } from './utils/check.ts' - * - * await compile({ - * // Config obj. - * }) - * - * ``` - * - * @param configObj - The configuration object. - * - * @returns Promise: boolean - */ -export async function compile(configObj: { - input: string; - out: string; - title: string; - css: boolean; - cssDir: string; - verbose: boolean; -}): Promise { - // Declare an empty array for the files in the markdown directory - const dirContentsArr: string[] = await getArr(configObj.input); - console.log(dirContentsArr) - // If the verbose options is active - if (configObj.verbose) { - // Log what we are doing - console.log(`Reading ${configObj.input}`); - } - for (const file in dirContentsArr){ - const pathInQuestion = dirContentsArr[file].replace("/", "") - if (configObj.verbose) { - // Log what we are doing - console.log(`Compiling ${pathInQuestion}`); - } - try { - const contentToWrite = await readFile( - `${configObj.input}/${pathInQuestion}` - ); - if (configObj.css) { - const cssString = await fullCssHandle(configObj.verbose, configObj.cssDir, pathInQuestion) - const toWrite = ` - ${start(handleTitle(configObj.title, pathInQuestion))} - ${cssString} - ${handleMd(contentToWrite.toString("utf8"))} - ${end()} - `; - await finalWrite(`${configObj.out}/${parse(pathInQuestion).name}.html`, toWrite) - } - } catch { - throw new Error("Path in question does not exist!") - } - } - -} diff --git a/src/utils/getConfig.ts b/src/utils/getConfig.ts deleted file mode 100644 index 0cf5c77..0000000 --- a/src/utils/getConfig.ts +++ /dev/null @@ -1,31 +0,0 @@ -// Imports -// Import cwd from process to get the current working directory -import { cwd } from "process"; -// Import type Config to have a type to return -import { Config } from "./types.js"; - -// Export an async functions that return a Promise -/** - * Returns the config in setso.config.js - * - * For example: - * - * ```js - * import { getConfig } from './utils/getConfig.ts' - * - * const config = await getConfig() - * ``` - * - * @returns Promise: Config | undefined - */ -export async function getConfig(): Promise { - // Try - try { - // to import the config, and return the object - const config = await import(`${cwd()}/setso.config.js`); - return config.default; - // If no config is found - } catch { - return undefined; - } -} diff --git a/src/utils/handleArgs.ts b/src/utils/handleArgs.ts deleted file mode 100644 index 6f0f9eb..0000000 --- a/src/utils/handleArgs.ts +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Handles arguments passed in to setso - * - * For example: - * - * ```js - * import { handleArgs } from './utils/handleArgs.ts' - * import { arvg } from 'process' - * - * const args = handleArgs(argv) - * ``` - * - * @param argsArr - An array to loop over and checkout args - * - * @returns Map: - */ -export function handleArgs(argsArr: string[]): Map { - const args = new Map(); - argsArr.forEach((el) => { - if (el == "--input") { - const index = argsArr.indexOf(el); - args.set("input", argsArr[index + 1]); - } else if (el == "--out") { - const index = argsArr.indexOf(el); - args.set("out", argsArr[index + 1]); - } else if (el == "--css") { - args.set("css", true); - } else if (el == "--cssDir") { - const index = argsArr.indexOf(el); - args.set("cssDir", argsArr[index + 1]); - } else if (el == "--verbose") { - args.set("verbose", true); - } - }); - return args; -} diff --git a/src/utils/handleCss.ts b/src/utils/handleCss.ts deleted file mode 100644 index 95772c6..0000000 --- a/src/utils/handleCss.ts +++ /dev/null @@ -1,147 +0,0 @@ -// Imports -// External imports -// Import readdir to read the css directory, and read file to read the cssFiles from fs/promises to use async/await -import { readdir, readFile } from "fs/promises"; -// Import parse from path to parse the paths and get the names and extensions -import { parse } from "path"; - -// Type imports -// Import the 'PathLike' type from fs for the function -import type { PathLike } from "fs"; - -// To return, in case there is an error/no css to write to the html file. -const toReturn = ` - -`; -// The sass object that we will import later -let sass; - -async function readCss(filename: PathLike): Promise { - const toWrite = await readFile(filename, { - encoding: "utf8", - }); - return toWrite; -} - -/** - * Returns the css string to inject into the html - * - * For example: - * - * ```js - * import { handleCss } from './utils/handleCss.ts' - * - * const cssString = await handleCss('./css', 'main') - * ``` - * - * @param cssDir - The css directory to scan - * @param fileNameNoExt - The filename of the html without the extension - * - * @returns Promise: string - */ -// Exported async function that takes a PathLike and a string -export async function handleCss( - cssDir: PathLike, - fileNameNoExt: string -): Promise { - // We read the css directory - const cssDirForEach = await readdir(cssDir); - // We loop over every element - for (const element in cssDirForEach) { - // If the css filename is equal to the corresponding md file and that it ends with .css then - if ( - parse(cssDirForEach[element]).name == fileNameNoExt && - cssDirForEach[element].endsWith(".css") - ) { - // read the corresponding file - const toWrite = await readCss( - `${cssDir}/${cssDirForEach[element]}` - ); - // Return the thing to write - return ` - - `; - // Else if the css filename is equal to the corresponding md file and that it ends with .scss (sass) then - } else if ( - (parse(cssDirForEach[element]).name == fileNameNoExt && - cssDirForEach[element].endsWith(".scss")) || - cssDirForEach[element].endsWith(".sass") - ) { - // Try - try { - // to import sass using the previous declared variable - sass = await import("sass"); - // Catch - } catch (err) { - // the error if sass is not installed. - throw "Due to a bug with sass, you will have to install it using npm install -D sass"; - } - // We then compile the sass into css - const result = await sass.default.compileAsync( - `${cssDir}/${cssDirForEach[element]}` - ); - // and return it - return ` - - `; - } else if ( - cssDirForEach[element] == "*.css" || - cssDirForEach[element] == "global.css" - ) { - const toWrite = await readCss( - `${cssDir}/${cssDirForEach[element]}` - ); - // Return the thing to write - return ` - - `; - } else if ( - cssDirForEach[element] == "*.scss" || - cssDirForEach[element] == "global.scss" - ) { - // Try - try { - // to import sass using the previous declared variable - sass = await import("sass"); - // Catch - } catch (err) { - // the error if sass is not installed. - throw "Due to a bug with sass, you will have to install it using npm install -D sass"; - } - // We then compile the sass into css - const result = await sass.default.compileAsync( - `${cssDir}/${cssDirForEach[element]}` - ); - // Return the thing to write - return ` - - `; - } - } - // If all else fails, return an empty string - return toReturn; -} - -export async function fullCssHandle(isVerbose: boolean, cssDir: string, pathInQuestion: string){ - if (isVerbose) { - // Log what we are doing - console.log(`Getting css from ${cssDir}`); - } - // Read css to inject later - const cssString = await handleCss( - cssDir, - parse(pathInQuestion).name - ); - // Return the cssString - return cssString; -} - diff --git a/src/utils/handleMd.ts b/src/utils/handleMd.ts deleted file mode 100644 index 4387ca3..0000000 --- a/src/utils/handleMd.ts +++ /dev/null @@ -1,30 +0,0 @@ -import remarkGfm from "remark-gfm"; -import { renderToString } from "react-dom/server"; -import * as runtime from "react/jsx-runtime"; -import { evaluateSync } from "@mdx-js/mdx"; -import { createElement } from "react"; - -/** - * Handles and compiles the markdown - * - * For example: - * - * ```js - * import { handleMd } from './utils/handleMd.ts' - * - * const markdown = handleMd('# Hi!') - * ``` - * - * @param body - The body to compile - * - * - * @returns string - */ -export function handleMd(body: string): string { - const mdx = evaluateSync(body, { - ...(runtime as any), - remarkPlugins: [remarkGfm], - }).default; - - return renderToString(createElement(mdx)); -} diff --git a/src/utils/handleTitle.ts b/src/utils/handleTitle.ts deleted file mode 100644 index cb0e45b..0000000 --- a/src/utils/handleTitle.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { parse } from "path"; - -/** - * Handles the title to include in markup - * - * For example: - * - * ```js - * import { handleTitle } from './utils/handleTitle.ts' - * - * const markdown = handleTitle('title', 'hello') - * ``` - * - * @param titleGiven - Title to put in markup - * @param htmlFileName - Filename for searching in an object - * - * @returns string - */ -export function handleTitle(titleGiven: string, htmlFileName: string): string { - if (typeof titleGiven == "object") { - if (parse(htmlFileName).name in titleGiven) { - return titleGiven[parse(htmlFileName).name]; - } else { - return "Setso default title"; - } - } else { - return titleGiven; - } -} diff --git a/src/utils/readInitialDir.ts b/src/utils/readInitialDir.ts deleted file mode 100644 index 321db8f..0000000 --- a/src/utils/readInitialDir.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { readdir, lstat } from "fs/promises"; -import { parse } from "path"; - -async function* recursiveDirectoryScanner(directory: string): AsyncIterable { - const files = await readdir(directory); - for (const file of files) { - const path = `${directory}/${file}`; - const stat = await lstat(path); - if (stat.isDirectory()) { - yield* recursiveDirectoryScanner(path); - } else { - // check if file is markdown or mdx - if (parse(path).ext === ".md" || parse(path).ext === ".mdx"){ - yield path; - } else { - continue; - } - } - } -} - -export async function getArr(directory: string): Promise { - const arr = [] - const iterab = await recursiveDirectoryScanner(directory) - for await(const el of iterab) arr.push(el.replace(directory, "")) - return arr; -} - - - diff --git a/src/utils/startAndEnd.ts b/src/utils/startAndEnd.ts deleted file mode 100644 index d30a4ad..0000000 --- a/src/utils/startAndEnd.ts +++ /dev/null @@ -1,51 +0,0 @@ -// Exported function that takes a string and returns a string -/** - * Returns the initial markup up until the first body tag - * - * For example: - * - * ``` - * import { start } from './utils/startAndEnd.ts' - * - * const start = start('title') - * ``` - * - * @param title - The title to put in the title tag. - * - * @returns string - */ -export function start(title: string): string { - // Return the markup up until the body - return ` - - - - - - ${title} - - - `; -} - -// Exported function that returns a string -/** - * Returns the markup from the closing body tag - * - * For example: - * - * ```js - * import { end } from './utils/startAndEnd.ts' - * - * const start = end() - * ``` - * - * @returns string - */ -export function end(): string { - // Return the markup from the closing body tag down. - return ` - - - `; -} diff --git a/src/utils/toWrite.ts b/src/utils/toWrite.ts deleted file mode 100644 index e6117db..0000000 --- a/src/utils/toWrite.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { dirExists } from "dir-exists-safe"; -import { mkdir, writeFile } from "fs/promises"; - -export async function finalWrite(toWriteDir: string, toWrite: string){ - if (!(await dirExists(toWriteDir))){ - await mkdir(toWriteDir) - await writeFile(toWriteDir, toWrite) - } else { - await writeFile(toWriteDir, toWrite) - } -} \ No newline at end of file diff --git a/src/utils/types.ts b/src/utils/types.ts deleted file mode 100644 index 473fd80..0000000 --- a/src/utils/types.ts +++ /dev/null @@ -1,45 +0,0 @@ -// Some types for better dx - -/** - * Returns a type to use when working with setso.config.js (for better dx) - * - * For example: - * - * ```ts - * import type { Config } from './utils/types.ts' - * - * - * function getConfig(): Promise{ - * // Read and return the config - * } - * ``` - * - * @returns Type: Config - * - */ -export type Config = { - input: string; - out: string | undefined; - title: string | undefined; - css: boolean | undefined; - cssDir: string | undefined; - verbose: boolean | undefined; -}; - -/** - * Returns a union type to use when working with the config variable - * - * For example: - * - * ```ts - * import type { ConfigVar } from './utils/types.ts' - * import { getConfig } from './utils/getConfig.ts' - * - * - * let configObj: ConfigVar = await getConfig() - * - * ``` - * - * @returns Type: Config | undefined - */ -export type ConfigVar = Config | undefined; diff --git a/src/v1/compile.ts b/src/v1/compile.ts new file mode 100644 index 0000000..18cfa34 --- /dev/null +++ b/src/v1/compile.ts @@ -0,0 +1,21 @@ +import { getHtml } from "./getHtml.js"; +import { readInitialDir } from "./readDir.js"; +import { z } from 'zod' +import { writeHtml } from "./writeHtml.js"; + +const optionsSchema = z.object({ + dir: z.string(), + outDir: z.string() +}) + +export async function compile(opts: z.infer){ + + const filesToCompile = await readInitialDir(opts.dir) + for await (const file of filesToCompile){ + console.log(file) + const html = await getHtml(file); + await writeHtml(file, html, opts.outDir) + } +} + +await compile({dir: process.argv[2], outDir: process.argv[3]}) \ No newline at end of file diff --git a/src/v1/getHtml.ts b/src/v1/getHtml.ts new file mode 100644 index 0000000..c48f3d0 --- /dev/null +++ b/src/v1/getHtml.ts @@ -0,0 +1,21 @@ +import { readFile } from "fs/promises"; +import { evaluate } from '@mdx-js/mdx' +import remarkGfm from "remark-gfm"; +import { createElement } from "react"; +import { renderToString } from "react-dom/server"; +import * as runtime from 'react/jsx-runtime' + +async function createEl(body: string) { + const mdx = (await evaluate(body, { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + ...(runtime as any), + remarkPlugins: [remarkGfm], + })).default; + return renderToString(createElement(mdx)); +} + +export async function getHtml(file: string){ + const read = await readFile(file) + const html = await createEl(read.toString()) + return html +} \ No newline at end of file diff --git a/src/v1/readDir.ts b/src/v1/readDir.ts new file mode 100644 index 0000000..4deb0e2 --- /dev/null +++ b/src/v1/readDir.ts @@ -0,0 +1,29 @@ +import { readdir, lstat } from "fs/promises"; +import { parse } from "path"; + + +export async function readInitialDir(dir: string) { + async function* readDir(directory: string): AsyncGenerator { + const files = await readdir(directory); + for (const file of files) { + const path = `${directory}/${file}`; + const stat = await lstat(path); + if (stat.isDirectory()) { + yield* readDir(path); + } else { + // check if file is markdown or mdx + if (parse(path).ext === ".md" || parse(path).ext === ".mdx"){ + yield path; + } else { + continue; + } + } + } + } + const dirArr = new Set([]) + + for await(const el of readDir(dir)) { + dirArr.add(el); + } + return dirArr; +} diff --git a/src/v1/writeHtml.ts b/src/v1/writeHtml.ts new file mode 100644 index 0000000..ac63c12 --- /dev/null +++ b/src/v1/writeHtml.ts @@ -0,0 +1,19 @@ +import { mkdir } from "fs/promises"; +import { join, parse } from "path"; +import { writeFile } from 'fs/promises'; +import { dirExists } from 'dir-exists-safe' + + +export async function writeHtml(filename: string, html: string, outDir: string) { + const filenameNoExt = parse(filename).name + const toWriteToArray = parse(filename).dir.split("/") + toWriteToArray[1] = outDir.replace("./", "") + if (!(await dirExists(join(...toWriteToArray)))) { + await mkdir(join(...toWriteToArray)) + const toWriteTo = "./" + join(...toWriteToArray, filenameNoExt + ".html") + await writeFile(toWriteTo, html) + } else{ + const toWriteTo = "./" + join(...toWriteToArray, filenameNoExt + ".html") + await writeFile(toWriteTo, html) + } +} From 31f6e449c113a9a14779717bf29125aae3f12a5d Mon Sep 17 00:00:00 2001 From: micziz Date: Sat, 29 Apr 2023 22:28:09 +0200 Subject: [PATCH 08/31] Add title and template --- src/index.ts | 105 ------------------------------------------ src/v1/getHtml.ts | 8 +++- src/v1/getTemplate.ts | 16 +++++++ 3 files changed, 22 insertions(+), 107 deletions(-) delete mode 100644 src/index.ts create mode 100644 src/v1/getTemplate.ts diff --git a/src/index.ts b/src/index.ts deleted file mode 100644 index a8d7c41..0000000 --- a/src/index.ts +++ /dev/null @@ -1,105 +0,0 @@ -// Imports - -// Local imports -// Import getConfig to get the config defined in setso.config.js -import { getConfig } from "./utils/getConfig.js"; -// Import compile function to compile the markdown -import { compile } from "./commands/compile.js"; -// Import handleArgs to handle the args -import { handleArgs } from "./utils/handleArgs.js"; -// Import type ConfigVar for working with variables -import type { ConfigVar } from "./utils/types.js"; - -// External imports -// Import cwd to get the current working directory -import { cwd } from "process"; -import { argv } from "process"; - -const config = await getConfig(); - -// Declare the configuration object that we will give to the compile function. -const configToGive = { - // Input, defaults to cwd/content - input: `${cwd()}/content`, - // Output (out), defaults to cwd/html - out: `${cwd()}/html`, - // Title of the html pages, defaults to "setso default title" - title: "setso default title", - // If css is present, defaults to false - css: false, - // Where the css is located defaults to cwd/css - cssDir: `${cwd()}/css`, - // If to be verbose, defaults to false - verbose: false, -}; - -// In a try catch block in case the config is not present -try { - // Gets the .default property - const configObj: ConfigVar = config; - if (configObj === undefined) { - throw new Error(`No config`); - } - - // If input is not undefined - if (configObj?.input !== undefined) { - // Set the variable right - configToGive.input = `${cwd()}${configObj.input}`; - } - - // If out is not undefined - if (configObj?.out !== undefined) { - // Set the variable right - configToGive.out = `${cwd()}${configObj.out}`; - } - - // If title is not undefined - if (configObj?.title !== undefined) { - // Set the variable right - configToGive.title = configObj.title; - } - - // If css is true - if (configObj?.css) { - // Set the variable right - configToGive.css = true; - } - - // If cssDir is not undefined - if (configObj?.cssDir !== undefined) { - // Set the variable right - configToGive.cssDir = `${cwd()}${configObj.cssDir}`; - } - - // If verbose is true - if (configObj?.verbose) { - // Set the variable right - configToGive.verbose = true; - } - // In case the config is not present -} catch { - const args = handleArgs(argv); - if (args.get("input") !== undefined) { - configToGive.input = `${cwd()}${args.get("input")}`; - } - if (args.get("out") !== undefined) { - configToGive.out = `${cwd()}${args.get("out")}`; - } - if (args.get("title") !== undefined) { - configToGive.title = args.get("title"); - } - if (args.get("css") !== undefined) { - configToGive.css = args.get("css"); - } - if (args.get("cssDir") !== undefined) { - configToGive.cssDir = args.get("cssDir"); - } - if (args.get("verbose") !== undefined) { - configToGive.verbose = args.get("verbose"); - } - // Log it out to the user - console.log("No setso.config.js passed. Using default"); -} - -// Compile everything, using the configuration object -await compile(configToGive); diff --git a/src/v1/getHtml.ts b/src/v1/getHtml.ts index c48f3d0..8e90009 100644 --- a/src/v1/getHtml.ts +++ b/src/v1/getHtml.ts @@ -4,6 +4,8 @@ import remarkGfm from "remark-gfm"; import { createElement } from "react"; import { renderToString } from "react-dom/server"; import * as runtime from 'react/jsx-runtime' +import matter from "gray-matter"; +import { getTemplate } from "./getTemplate.js"; async function createEl(body: string) { const mdx = (await evaluate(body, { @@ -16,6 +18,8 @@ async function createEl(body: string) { export async function getHtml(file: string){ const read = await readFile(file) - const html = await createEl(read.toString()) - return html + const body = matter(read.toString()).content + const title = (typeof matter(read.toString()).data.title !== "undefined") ? matter(read.toString()).data.title : 'Setso default title' + const html = getTemplate(await createEl(body), title) + return html } \ No newline at end of file diff --git a/src/v1/getTemplate.ts b/src/v1/getTemplate.ts new file mode 100644 index 0000000..359005d --- /dev/null +++ b/src/v1/getTemplate.ts @@ -0,0 +1,16 @@ +export function getTemplate(body: string, title: string){ + return ` + + + + + + + ${title} + + + ${body} + + +` +} \ No newline at end of file From d840834a4f9343b8759f9da068200594244524b9 Mon Sep 17 00:00:00 2001 From: micziz Date: Mon, 1 May 2023 20:22:49 +0200 Subject: [PATCH 09/31] Add css --- package.json | 1 + pnpm-lock.yaml | 8 ++++++++ src/v1/compile.ts | 8 ++++---- src/v1/getHtml.ts | 8 ++++++-- src/v1/getTemplate.ts | 3 ++- src/v1/readCss.ts | 36 ++++++++++++++++++++++++++++++++++++ 6 files changed, 57 insertions(+), 7 deletions(-) create mode 100644 src/v1/readCss.ts diff --git a/package.json b/package.json index b4c5f70..b652cba 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "dependencies": { "@mdx-js/mdx": "^2.3.0", "dir-exists-safe": "^1.1.0", + "file-exists-safe": "^2.0.0", "fs-extra": "^11.1.1", "gray-matter": "^4.0.3", "react": "^18.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9d56288..2491811 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,6 +7,9 @@ dependencies: dir-exists-safe: specifier: ^1.1.0 version: 1.1.0 + file-exists-safe: + specifier: ^2.0.0 + version: 2.0.0 fs-extra: specifier: ^11.1.1 version: 11.1.1 @@ -943,6 +946,11 @@ packages: flat-cache: 3.0.4 dev: true + /file-exists-safe@2.0.0: + resolution: {integrity: sha512-BirUvVwI63luXYEODAFvFvNi0ZdoJvqDcIYTmNXurFi07sqG8Cpw58lPALWDHhvyAmmt7OJuhzQXJ7ZZHXdbFw==} + engines: {node: ^14.13.1 || >=16.0.0} + dev: false + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} diff --git a/src/v1/compile.ts b/src/v1/compile.ts index 18cfa34..2529dff 100644 --- a/src/v1/compile.ts +++ b/src/v1/compile.ts @@ -5,17 +5,17 @@ import { writeHtml } from "./writeHtml.js"; const optionsSchema = z.object({ dir: z.string(), - outDir: z.string() + outDir: z.string(), + cssDir: z.string() }) export async function compile(opts: z.infer){ const filesToCompile = await readInitialDir(opts.dir) for await (const file of filesToCompile){ - console.log(file) - const html = await getHtml(file); + const html = await getHtml(file, opts.cssDir); await writeHtml(file, html, opts.outDir) } } -await compile({dir: process.argv[2], outDir: process.argv[3]}) \ No newline at end of file +await compile({dir: process.argv[2], outDir: process.argv[3], cssDir: process.argv[4]}) \ No newline at end of file diff --git a/src/v1/getHtml.ts b/src/v1/getHtml.ts index 8e90009..72e3b60 100644 --- a/src/v1/getHtml.ts +++ b/src/v1/getHtml.ts @@ -6,6 +6,7 @@ import { renderToString } from "react-dom/server"; import * as runtime from 'react/jsx-runtime' import matter from "gray-matter"; import { getTemplate } from "./getTemplate.js"; +import { readCss } from "./readCss.js"; async function createEl(body: string) { const mdx = (await evaluate(body, { @@ -16,10 +17,13 @@ async function createEl(body: string) { return renderToString(createElement(mdx)); } -export async function getHtml(file: string){ +export async function getHtml(file: string, cssPath: string){ const read = await readFile(file) const body = matter(read.toString()).content const title = (typeof matter(read.toString()).data.title !== "undefined") ? matter(read.toString()).data.title : 'Setso default title' - const html = getTemplate(await createEl(body), title) + const spliting = file.split("/") + spliting[1] = cssPath.replace("./", "") + const css = await readCss(spliting.join("/"), cssPath) + const html = getTemplate(await createEl(body), title, css) return html } \ No newline at end of file diff --git a/src/v1/getTemplate.ts b/src/v1/getTemplate.ts index 359005d..a67eca1 100644 --- a/src/v1/getTemplate.ts +++ b/src/v1/getTemplate.ts @@ -1,4 +1,4 @@ -export function getTemplate(body: string, title: string){ +export function getTemplate(body: string, title: string, css: string){ return ` @@ -9,6 +9,7 @@ export function getTemplate(body: string, title: string){ ${title} + ${css} ${body} diff --git a/src/v1/readCss.ts b/src/v1/readCss.ts new file mode 100644 index 0000000..fd82647 --- /dev/null +++ b/src/v1/readCss.ts @@ -0,0 +1,36 @@ +import { fileExists } from 'file-exists-safe' +import { readFile } from 'fs/promises' +import { join, parse } from 'path' + +export async function readCss(fileName: string, cssPath: string){ + fileName = fileName.replace(parse(fileName).ext, "") + const pathToCheckCss = await fileExists(fileName + ".css") + const pathToCheckScss = await fileExists(fileName + ".scss") + let cssToReturn = "" + // if *.css exits or *.scss exits + if (await fileExists(join(cssPath, fileName + "*.css"))){ + cssToReturn = cssToReturn + ` + ` + } else if (await fileExists(join(cssPath, fileName + "*.scss"))){ + cssToReturn = cssToReturn + ` + ` + } + if (pathToCheckCss){ + cssToReturn = cssToReturn + ` + ` + } else if (pathToCheckScss){ + cssToReturn = cssToReturn + ` + ` + } else { + cssToReturn = cssToReturn + "" + } + return cssToReturn; +} \ No newline at end of file From 45be495111dda541ce4cdfd30d05006c09e6f314 Mon Sep 17 00:00:00 2001 From: micziz Date: Mon, 1 May 2023 20:23:57 +0200 Subject: [PATCH 10/31] Change foldersg --- src/index.ts | 0 src/{v1 => parts}/compile.ts | 0 src/{v1 => parts}/getHtml.ts | 0 src/{v1 => parts}/getTemplate.ts | 0 src/{v1 => parts}/readCss.ts | 0 src/{v1 => parts}/readDir.ts | 0 src/{v1 => parts}/writeHtml.ts | 0 7 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/index.ts rename src/{v1 => parts}/compile.ts (100%) rename src/{v1 => parts}/getHtml.ts (100%) rename src/{v1 => parts}/getTemplate.ts (100%) rename src/{v1 => parts}/readCss.ts (100%) rename src/{v1 => parts}/readDir.ts (100%) rename src/{v1 => parts}/writeHtml.ts (100%) diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/v1/compile.ts b/src/parts/compile.ts similarity index 100% rename from src/v1/compile.ts rename to src/parts/compile.ts diff --git a/src/v1/getHtml.ts b/src/parts/getHtml.ts similarity index 100% rename from src/v1/getHtml.ts rename to src/parts/getHtml.ts diff --git a/src/v1/getTemplate.ts b/src/parts/getTemplate.ts similarity index 100% rename from src/v1/getTemplate.ts rename to src/parts/getTemplate.ts diff --git a/src/v1/readCss.ts b/src/parts/readCss.ts similarity index 100% rename from src/v1/readCss.ts rename to src/parts/readCss.ts diff --git a/src/v1/readDir.ts b/src/parts/readDir.ts similarity index 100% rename from src/v1/readDir.ts rename to src/parts/readDir.ts diff --git a/src/v1/writeHtml.ts b/src/parts/writeHtml.ts similarity index 100% rename from src/v1/writeHtml.ts rename to src/parts/writeHtml.ts From 2a25ae327675cbcf34b305ae64ad0a7003d7427b Mon Sep 17 00:00:00 2001 From: micziz Date: Wed, 10 May 2023 11:52:48 +0200 Subject: [PATCH 11/31] Update deps --- package.json | 18 +-- pnpm-lock.yaml | 332 ++++++++++++++++++++------------------- src/parts/compile.ts | 21 +-- src/parts/getHtml.ts | 41 ++--- src/parts/getTemplate.ts | 6 +- src/parts/readCss.ts | 52 +++--- src/parts/readDir.ts | 13 +- src/parts/writeHtml.ts | 31 ++-- 8 files changed, 271 insertions(+), 243 deletions(-) diff --git a/package.json b/package.json index b652cba..0869191 100644 --- a/package.json +++ b/package.json @@ -42,17 +42,17 @@ "devDependencies": { "@chiogen/rollup-plugin-terser": "^7.1.3", "@types/fs-extra": "^11.0.1", - "@types/node": "^18.15.11", - "@types/react": "^18.0.33", - "@types/react-dom": "^18.0.11", - "@typescript-eslint/eslint-plugin": "^5.57.1", - "@typescript-eslint/parser": "^5.57.1", - "eslint": "^8.37.0", + "@types/node": "^18.16.7", + "@types/react": "^18.2.6", + "@types/react-dom": "^18.2.4", + "@typescript-eslint/eslint-plugin": "^5.59.5", + "@typescript-eslint/parser": "^5.59.5", + "eslint": "^8.40.0", "eslint-config-prettier": "^8.8.0", - "prettier": "^2.8.7", + "prettier": "^2.8.8", "rimraf": "^4.4.1", - "rollup": "^3.20.2", - "sass": "^1.60.0", + "rollup": "^3.21.6", + "sass": "^1.62.1", "typescript": "^4.9.5" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2491811..1fc12fe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -37,38 +37,38 @@ devDependencies: specifier: ^11.0.1 version: 11.0.1 '@types/node': - specifier: ^18.15.11 - version: 18.15.11 + specifier: ^18.16.7 + version: 18.16.7 '@types/react': - specifier: ^18.0.33 - version: 18.0.33 + specifier: ^18.2.6 + version: 18.2.6 '@types/react-dom': - specifier: ^18.0.11 - version: 18.0.11 + specifier: ^18.2.4 + version: 18.2.4 '@typescript-eslint/eslint-plugin': - specifier: ^5.57.1 - version: 5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@4.9.5) + specifier: ^5.59.5 + version: 5.59.5(@typescript-eslint/parser@5.59.5)(eslint@8.40.0)(typescript@4.9.5) '@typescript-eslint/parser': - specifier: ^5.57.1 - version: 5.57.1(eslint@8.37.0)(typescript@4.9.5) + specifier: ^5.59.5 + version: 5.59.5(eslint@8.40.0)(typescript@4.9.5) eslint: - specifier: ^8.37.0 - version: 8.37.0 + specifier: ^8.40.0 + version: 8.40.0 eslint-config-prettier: specifier: ^8.8.0 - version: 8.8.0(eslint@8.37.0) + version: 8.8.0(eslint@8.40.0) prettier: - specifier: ^2.8.7 - version: 2.8.7 + specifier: ^2.8.8 + version: 2.8.8 rimraf: specifier: ^4.4.1 version: 4.4.1 rollup: - specifier: ^3.20.2 - version: 3.20.2 + specifier: ^3.21.6 + version: 3.21.6 sass: - specifier: ^1.60.0 - version: 1.60.0 + specifier: ^1.62.1 + version: 1.62.1 typescript: specifier: ^4.9.5 version: 4.9.5 @@ -100,31 +100,31 @@ packages: resolution: {integrity: sha512-+AskjdQXzvmpcrvxN1FNr9xCDRcMaDMBGgbpn3EkPW6r4C80Qk4PIs4ox5GNtYjub9XEZUXJRdQg84uDPvxqaQ==} dependencies: '@babel/code-frame': 7.21.4 - terser: 5.16.8 + terser: 5.17.3 dev: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.37.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.40.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.37.0 - eslint-visitor-keys: 3.4.0 + eslint: 8.40.0 + eslint-visitor-keys: 3.4.1 dev: true - /@eslint-community/regexpp@4.5.0: - resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==} + /@eslint-community/regexpp@4.5.1: + resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.0.2: - resolution: {integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==} + /@eslint/eslintrc@2.0.3: + resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.5.1 + espree: 9.5.2 globals: 13.20.0 ignore: 5.2.4 import-fresh: 3.3.0 @@ -135,8 +135,8 @@ packages: - supports-color dev: true - /@eslint/js@8.37.0: - resolution: {integrity: sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==} + /@eslint/js@8.40.0: + resolution: {integrity: sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -160,13 +160,13 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@jridgewell/gen-mapping@0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.18 dev: true /@jridgewell/resolve-uri@3.1.0: @@ -179,19 +179,23 @@ packages: engines: {node: '>=6.0.0'} dev: true - /@jridgewell/source-map@0.3.2: - resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} + /@jridgewell/source-map@0.3.3: + resolution: {integrity: sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==} dependencies: - '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 dev: true /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} dev: true - /@jridgewell/trace-mapping@0.3.17: - resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.18: + resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 @@ -201,7 +205,7 @@ packages: resolution: {integrity: sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==} dependencies: '@types/estree-jsx': 1.0.0 - '@types/mdx': 2.0.4 + '@types/mdx': 2.0.5 estree-util-build-jsx: 2.2.2 estree-util-is-identifier-name: 2.1.0 estree-util-to-js: 1.2.0 @@ -245,7 +249,7 @@ packages: /@types/acorn@4.0.6: resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} dependencies: - '@types/estree': 1.0.0 + '@types/estree': 1.0.1 dev: false /@types/debug@4.1.7: @@ -257,18 +261,18 @@ packages: /@types/estree-jsx@1.0.0: resolution: {integrity: sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==} dependencies: - '@types/estree': 1.0.0 + '@types/estree': 1.0.1 dev: false - /@types/estree@1.0.0: - resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} + /@types/estree@1.0.1: + resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} dev: false /@types/fs-extra@11.0.1: resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} dependencies: '@types/jsonfile': 6.1.1 - '@types/node': 18.15.11 + '@types/node': 18.16.7 dev: true /@types/hast@2.3.4: @@ -284,7 +288,7 @@ packages: /@types/jsonfile@6.1.1: resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} dependencies: - '@types/node': 18.15.11 + '@types/node': 18.16.7 dev: true /@types/mdast@3.0.11: @@ -293,30 +297,30 @@ packages: '@types/unist': 2.0.6 dev: false - /@types/mdx@2.0.4: - resolution: {integrity: sha512-qCYrNdpKwN6YO6FVnx+ulfqifKlE3lQGsNhvDaW9Oxzyob/cRLBJWow8GHBBD4NxQ7BVvtsATgLsX0vZAWmtrg==} + /@types/mdx@2.0.5: + resolution: {integrity: sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg==} dev: false /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: false - /@types/node@18.15.11: - resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} + /@types/node@18.16.7: + resolution: {integrity: sha512-MFg7ua/bRtnA1hYE3pVyWxGd/r7aMqjNOdHvlSsXV3n8iaeGKkOaPzpJh6/ovf4bEXWcojkeMJpTsq3mzXW4IQ==} dev: true /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: true - /@types/react-dom@18.0.11: - resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} + /@types/react-dom@18.2.4: + resolution: {integrity: sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==} dependencies: - '@types/react': 18.0.33 + '@types/react': 18.2.6 dev: true - /@types/react@18.0.33: - resolution: {integrity: sha512-sHxzVxeanvQyQ1lr8NSHaj0kDzcNiGpILEVt69g9S31/7PfMvNCKLKcsHw4lYKjs3cGNJjXSP4mYzX43QlnjNA==} + /@types/react@18.2.6: + resolution: {integrity: sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 @@ -327,16 +331,16 @@ packages: resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} dev: true - /@types/semver@7.3.13: - resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} + /@types/semver@7.5.0: + resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true /@types/unist@2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: false - /@typescript-eslint/eslint-plugin@5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@4.9.5): - resolution: {integrity: sha512-1MeobQkQ9tztuleT3v72XmY0XuKXVXusAhryoLuU5YZ+mXoYKZP9SQ7Flulh1NX4DTjpGTc2b/eMu4u7M7dhnQ==} + /@typescript-eslint/eslint-plugin@5.59.5(@typescript-eslint/parser@5.59.5)(eslint@8.40.0)(typescript@4.9.5): + resolution: {integrity: sha512-feA9xbVRWJZor+AnLNAr7A8JRWeZqHUf4T9tlP+TN04b05pFVhO5eN7/O93Y/1OUlLMHKbnJisgDURs/qvtqdg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -346,25 +350,25 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.5.0 - '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@4.9.5) - '@typescript-eslint/scope-manager': 5.57.1 - '@typescript-eslint/type-utils': 5.57.1(eslint@8.37.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.57.1(eslint@8.37.0)(typescript@4.9.5) + '@eslint-community/regexpp': 4.5.1 + '@typescript-eslint/parser': 5.59.5(eslint@8.40.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.59.5 + '@typescript-eslint/type-utils': 5.59.5(eslint@8.40.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.5(eslint@8.40.0)(typescript@4.9.5) debug: 4.3.4 - eslint: 8.37.0 + eslint: 8.40.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 - semver: 7.3.8 + semver: 7.5.0 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.57.1(eslint@8.37.0)(typescript@4.9.5): - resolution: {integrity: sha512-hlA0BLeVSA/wBPKdPGxoVr9Pp6GutGoY380FEhbVi0Ph4WNe8kLvqIRx76RSQt1lynZKfrXKs0/XeEk4zZycuA==} + /@typescript-eslint/parser@5.59.5(eslint@8.40.0)(typescript@4.9.5): + resolution: {integrity: sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -373,26 +377,26 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.57.1 - '@typescript-eslint/types': 5.57.1 - '@typescript-eslint/typescript-estree': 5.57.1(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.59.5 + '@typescript-eslint/types': 5.59.5 + '@typescript-eslint/typescript-estree': 5.59.5(typescript@4.9.5) debug: 4.3.4 - eslint: 8.37.0 + eslint: 8.40.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@5.57.1: - resolution: {integrity: sha512-N/RrBwEUKMIYxSKl0oDK5sFVHd6VI7p9K5MyUlVYAY6dyNb/wHUqndkTd3XhpGlXgnQsBkRZuu4f9kAHghvgPw==} + /@typescript-eslint/scope-manager@5.59.5: + resolution: {integrity: sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.57.1 - '@typescript-eslint/visitor-keys': 5.57.1 + '@typescript-eslint/types': 5.59.5 + '@typescript-eslint/visitor-keys': 5.59.5 dev: true - /@typescript-eslint/type-utils@5.57.1(eslint@8.37.0)(typescript@4.9.5): - resolution: {integrity: sha512-/RIPQyx60Pt6ga86hKXesXkJ2WOS4UemFrmmq/7eOyiYjYv/MUSHPlkhU6k9T9W1ytnTJueqASW+wOmW4KrViw==} + /@typescript-eslint/type-utils@5.59.5(eslint@8.40.0)(typescript@4.9.5): + resolution: {integrity: sha512-4eyhS7oGym67/pSxA2mmNq7X164oqDYNnZCUayBwJZIRVvKpBCMBzFnFxjeoDeShjtO6RQBHBuwybuX3POnDqg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -401,23 +405,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.57.1(typescript@4.9.5) - '@typescript-eslint/utils': 5.57.1(eslint@8.37.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.5(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.5(eslint@8.40.0)(typescript@4.9.5) debug: 4.3.4 - eslint: 8.37.0 + eslint: 8.40.0 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.57.1: - resolution: {integrity: sha512-bSs4LOgyV3bJ08F5RDqO2KXqg3WAdwHCu06zOqcQ6vqbTJizyBhuh1o1ImC69X4bV2g1OJxbH71PJqiO7Y1RuA==} + /@typescript-eslint/types@5.59.5: + resolution: {integrity: sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.57.1(typescript@4.9.5): - resolution: {integrity: sha512-A2MZqD8gNT0qHKbk2wRspg7cHbCDCk2tcqt6ScCFLr5Ru8cn+TCfM786DjPhqwseiS+PrYwcXht5ztpEQ6TFTw==} + /@typescript-eslint/typescript-estree@5.59.5(typescript@4.9.5): + resolution: {integrity: sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -425,44 +429,44 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.57.1 - '@typescript-eslint/visitor-keys': 5.57.1 + '@typescript-eslint/types': 5.59.5 + '@typescript-eslint/visitor-keys': 5.59.5 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.8 + semver: 7.5.0 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.57.1(eslint@8.37.0)(typescript@4.9.5): - resolution: {integrity: sha512-kN6vzzf9NkEtawECqze6v99LtmDiUJCVpvieTFA1uL7/jDghiJGubGZ5csicYHU1Xoqb3oH/R5cN5df6W41Nfg==} + /@typescript-eslint/utils@5.59.5(eslint@8.40.0)(typescript@4.9.5): + resolution: {integrity: sha512-sCEHOiw+RbyTii9c3/qN74hYDPNORb8yWCoPLmB7BIflhplJ65u2PBpdRla12e3SSTJ2erRkPjz7ngLHhUegxA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.37.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.40.0) '@types/json-schema': 7.0.11 - '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.57.1 - '@typescript-eslint/types': 5.57.1 - '@typescript-eslint/typescript-estree': 5.57.1(typescript@4.9.5) - eslint: 8.37.0 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.59.5 + '@typescript-eslint/types': 5.59.5 + '@typescript-eslint/typescript-estree': 5.59.5(typescript@4.9.5) + eslint: 8.40.0 eslint-scope: 5.1.1 - semver: 7.3.8 + semver: 7.5.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@5.57.1: - resolution: {integrity: sha512-RjQrAniDU0CEk5r7iphkm731zKlFiUjvcBS2yHAg8WWqFMCaCrD0rKEVOMUyMMcbGPZ0bPp56srkGWrgfZqLRA==} + /@typescript-eslint/visitor-keys@5.59.5: + resolution: {integrity: sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.57.1 - eslint-visitor-keys: 3.4.0 + '@typescript-eslint/types': 5.59.5 + eslint-visitor-keys: 3.4.1 dev: true /acorn-jsx@5.3.2(acorn@8.8.2): @@ -737,13 +741,13 @@ packages: engines: {node: '>=12'} dev: false - /eslint-config-prettier@8.8.0(eslint@8.37.0): + /eslint-config-prettier@8.8.0(eslint@8.40.0): resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.37.0 + eslint: 8.40.0 dev: true /eslint-scope@5.1.1: @@ -754,28 +758,28 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope@7.1.1: - resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + /eslint-scope@7.2.0: + resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 dev: true - /eslint-visitor-keys@3.4.0: - resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} + /eslint-visitor-keys@3.4.1: + resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.37.0: - resolution: {integrity: sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==} + /eslint@8.40.0: + resolution: {integrity: sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.37.0) - '@eslint-community/regexpp': 4.5.0 - '@eslint/eslintrc': 2.0.2 - '@eslint/js': 8.37.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.40.0) + '@eslint-community/regexpp': 4.5.1 + '@eslint/eslintrc': 2.0.3 + '@eslint/js': 8.40.0 '@humanwhocodes/config-array': 0.11.8 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -785,9 +789,9 @@ packages: debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.1.1 - eslint-visitor-keys: 3.4.0 - espree: 9.5.1 + eslint-scope: 7.2.0 + eslint-visitor-keys: 3.4.1 + espree: 9.5.2 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -816,13 +820,13 @@ packages: - supports-color dev: true - /espree@9.5.1: - resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} + /espree@9.5.2: + resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.8.2 acorn-jsx: 5.3.2(acorn@8.8.2) - eslint-visitor-keys: 3.4.0 + eslint-visitor-keys: 3.4.1 dev: true /esprima@4.0.1: @@ -858,7 +862,7 @@ packages: /estree-util-attach-comments@2.1.1: resolution: {integrity: sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==} dependencies: - '@types/estree': 1.0.0 + '@types/estree': 1.0.1 dev: false /estree-util-build-jsx@2.2.2: @@ -891,7 +895,7 @@ packages: /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: - '@types/estree': 1.0.0 + '@types/estree': 1.0.1 dev: false /esutils@2.0.3: @@ -1024,14 +1028,14 @@ packages: path-is-absolute: 1.0.1 dev: true - /glob@9.3.4: - resolution: {integrity: sha512-qaSc49hojMOv1EPM4EuyITjDSgSKI0rthoHnvE81tcOi1SCVndHko7auqxdQ14eiQG2NDBJBE86+2xIrbIvrbA==} + /glob@9.3.5: + resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} engines: {node: '>=16 || 14 >=14.17'} dependencies: fs.realpath: 1.0.0 - minimatch: 8.0.3 - minipass: 4.2.5 - path-scurry: 1.6.3 + minimatch: 8.0.4 + minipass: 4.2.8 + path-scurry: 1.7.0 dev: true /globals@13.20.0: @@ -1084,7 +1088,7 @@ packages: /hast-util-to-estree@2.3.2: resolution: {integrity: sha512-YYDwATNdnvZi3Qi84iatPIl1lWpXba1MeNrNbDfJfVzEBZL8uUmtR7mt7bxKBC8kuAuvb0bkojXYZzsNHyHCLg==} dependencies: - '@types/estree': 1.0.0 + '@types/estree': 1.0.1 '@types/estree-jsx': 1.0.0 '@types/hast': 2.3.4 '@types/unist': 2.0.6 @@ -1210,7 +1214,7 @@ packages: /is-reference@3.0.1: resolution: {integrity: sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==} dependencies: - '@types/estree': 1.0.0 + '@types/estree': 1.0.1 dev: false /isexe@2.0.0: @@ -1302,9 +1306,9 @@ packages: yallist: 4.0.0 dev: true - /lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} + /lru-cache@9.1.1: + resolution: {integrity: sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==} + engines: {node: 14 || >=16.14} dev: true /markdown-extensions@1.1.1: @@ -1528,18 +1532,17 @@ packages: uvu: 0.5.6 dev: false - /micromark-extension-gfm-autolink-literal@1.0.3: - resolution: {integrity: sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==} + /micromark-extension-gfm-autolink-literal@1.0.4: + resolution: {integrity: sha512-WCssN+M9rUyfHN5zPBn3/f0mIA7tqArHL/EKbv3CZK+LT2rG77FEikIQEqBkv46fOqXQK4NEW/Pc7Z27gshpeg==} dependencies: micromark-util-character: 1.1.0 micromark-util-sanitize-uri: 1.1.0 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - uvu: 0.5.6 dev: false - /micromark-extension-gfm-footnote@1.0.4: - resolution: {integrity: sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==} + /micromark-extension-gfm-footnote@1.1.0: + resolution: {integrity: sha512-RWYce7j8+c0n7Djzv5NzGEGitNNYO3uj+h/XYMdS/JinH1Go+/Qkomg/rfxExFzYTiydaV6GLeffGO5qcJbMPA==} dependencies: micromark-core-commonmark: 1.0.6 micromark-factory-space: 1.0.0 @@ -1591,8 +1594,8 @@ packages: /micromark-extension-gfm@2.0.1: resolution: {integrity: sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==} dependencies: - micromark-extension-gfm-autolink-literal: 1.0.3 - micromark-extension-gfm-footnote: 1.0.4 + micromark-extension-gfm-autolink-literal: 1.0.4 + micromark-extension-gfm-footnote: 1.1.0 micromark-extension-gfm-strikethrough: 1.0.5 micromark-extension-gfm-table: 1.0.5 micromark-extension-gfm-tagfilter: 1.0.2 @@ -1766,7 +1769,7 @@ packages: resolution: {integrity: sha512-mkg3BaWlw6ZTkQORrKVBW4o9ICXPxLtGz51vml5mQpKFdo9vqIX68CAx5JhTOdjQyAHH7JFmm4rh8toSPQZUmg==} dependencies: '@types/acorn': 4.0.6 - '@types/estree': 1.0.0 + '@types/estree': 1.0.1 estree-util-visit: 1.2.1 micromark-util-types: 1.0.2 uvu: 0.5.6 @@ -1853,15 +1856,20 @@ packages: brace-expansion: 1.1.11 dev: true - /minimatch@8.0.3: - resolution: {integrity: sha512-tEEvU9TkZgnFDCtpnrEYnPsjT7iUx42aXfs4bzmQ5sMA09/6hZY0jeZcGkXyDagiBOvkUjNo8Viom+Me6+2x7g==} + /minimatch@8.0.4: + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 dev: true - /minipass@4.2.5: - resolution: {integrity: sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==} + /minipass@4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + dev: true + + /minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} dev: true @@ -1953,12 +1961,12 @@ packages: engines: {node: '>=8'} dev: true - /path-scurry@1.6.3: - resolution: {integrity: sha512-RAmB+n30SlN+HnNx6EbcpoDy9nwdpcGPnEKrJnu6GZoDWBdIjo1UQMVtW2ybtC7LC2oKLcMq8y5g8WnKLiod9g==} + /path-scurry@1.7.0: + resolution: {integrity: sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==} engines: {node: '>=16 || 14 >=14.17'} dependencies: - lru-cache: 7.18.3 - minipass: 4.2.5 + lru-cache: 9.1.1 + minipass: 5.0.0 dev: true /path-type@4.0.0: @@ -1969,7 +1977,7 @@ packages: /periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} dependencies: - '@types/estree': 1.0.0 + '@types/estree': 1.0.1 estree-walker: 3.0.3 is-reference: 3.0.1 dev: false @@ -1984,8 +1992,8 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier@2.8.7: - resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} hasBin: true dev: true @@ -2088,11 +2096,11 @@ packages: engines: {node: '>=14'} hasBin: true dependencies: - glob: 9.3.4 + glob: 9.3.5 dev: true - /rollup@3.20.2: - resolution: {integrity: sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==} + /rollup@3.21.6: + resolution: {integrity: sha512-SXIICxvxQxR3D4dp/3LDHZIJPC8a4anKMHd4E3Jiz2/JnY+2bEjqrOokAauc5ShGVNFHlEFjBXAXlaxkJqIqSg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -2112,9 +2120,9 @@ packages: mri: 1.2.0 dev: false - /sass@1.60.0: - resolution: {integrity: sha512-updbwW6fNb5gGm8qMXzVO7V4sWf7LMXnMly/JEyfbfERbVH46Fn6q02BX7/eHTdKpE7d+oTkMMQpFWNUMfFbgQ==} - engines: {node: '>=12.0.0'} + /sass@1.62.1: + resolution: {integrity: sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==} + engines: {node: '>=14.0.0'} hasBin: true dependencies: chokidar: 3.5.3 @@ -2136,8 +2144,8 @@ packages: kind-of: 6.0.3 dev: false - /semver@7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} + /semver@7.5.0: + resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} engines: {node: '>=10'} hasBin: true dependencies: @@ -2235,12 +2243,12 @@ packages: has-flag: 4.0.0 dev: true - /terser@5.16.8: - resolution: {integrity: sha512-QI5g1E/ef7d+PsDifb+a6nnVgC4F22Bg6T0xrBrz6iloVB4PUkkunp6V8nzoOOZJIzjWVdAGqCdlKlhLq/TbIA==} + /terser@5.17.3: + resolution: {integrity: sha512-AudpAZKmZHkG9jueayypz4duuCFJMMNGRMwaPvQKWfxKedh8Z2x3OCoDqIIi1xx5+iwx1u6Au8XQcc9Lke65Yg==} engines: {node: '>=10'} hasBin: true dependencies: - '@jridgewell/source-map': 0.3.2 + '@jridgewell/source-map': 0.3.3 acorn: 8.8.2 commander: 2.20.3 source-map-support: 0.5.21 diff --git a/src/parts/compile.ts b/src/parts/compile.ts index 2529dff..4c6a2e5 100644 --- a/src/parts/compile.ts +++ b/src/parts/compile.ts @@ -1,21 +1,24 @@ import { getHtml } from "./getHtml.js"; import { readInitialDir } from "./readDir.js"; -import { z } from 'zod' +import { z } from "zod"; import { writeHtml } from "./writeHtml.js"; const optionsSchema = z.object({ dir: z.string(), outDir: z.string(), - cssDir: z.string() -}) + cssDir: z.string(), +}); -export async function compile(opts: z.infer){ - - const filesToCompile = await readInitialDir(opts.dir) - for await (const file of filesToCompile){ +export async function compile(opts: z.infer) { + const filesToCompile = await readInitialDir(opts.dir); + for await (const file of filesToCompile) { const html = await getHtml(file, opts.cssDir); - await writeHtml(file, html, opts.outDir) + await writeHtml(file, html, opts.outDir); } } -await compile({dir: process.argv[2], outDir: process.argv[3], cssDir: process.argv[4]}) \ No newline at end of file +await compile({ + dir: process.argv[2], + outDir: process.argv[3], + cssDir: process.argv[4], +}); diff --git a/src/parts/getHtml.ts b/src/parts/getHtml.ts index 72e3b60..e6c1fc2 100644 --- a/src/parts/getHtml.ts +++ b/src/parts/getHtml.ts @@ -1,29 +1,34 @@ import { readFile } from "fs/promises"; -import { evaluate } from '@mdx-js/mdx' +import { evaluate } from "@mdx-js/mdx"; import remarkGfm from "remark-gfm"; import { createElement } from "react"; -import { renderToString } from "react-dom/server"; -import * as runtime from 'react/jsx-runtime' +import { renderToString } from "react-dom/server"; +import * as runtime from "react/jsx-runtime"; import matter from "gray-matter"; import { getTemplate } from "./getTemplate.js"; import { readCss } from "./readCss.js"; async function createEl(body: string) { - const mdx = (await evaluate(body, { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - ...(runtime as any), - remarkPlugins: [remarkGfm], - })).default; + const mdx = ( + await evaluate(body, { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + ...(runtime as any), + remarkPlugins: [remarkGfm], + }) + ).default; return renderToString(createElement(mdx)); } -export async function getHtml(file: string, cssPath: string){ - const read = await readFile(file) - const body = matter(read.toString()).content - const title = (typeof matter(read.toString()).data.title !== "undefined") ? matter(read.toString()).data.title : 'Setso default title' - const spliting = file.split("/") - spliting[1] = cssPath.replace("./", "") - const css = await readCss(spliting.join("/"), cssPath) - const html = getTemplate(await createEl(body), title, css) - return html -} \ No newline at end of file +export async function getHtml(file: string, cssPath: string) { + const read = await readFile(file); + const body = matter(read.toString()).content; + const title = + typeof matter(read.toString()).data.title !== "undefined" + ? matter(read.toString()).data.title + : "Setso default title"; + const spliting = file.split("/"); + spliting[1] = cssPath.replace("./", ""); + const css = await readCss(spliting.join("/"), cssPath); + const html = getTemplate(await createEl(body), title, css); + return html; +} diff --git a/src/parts/getTemplate.ts b/src/parts/getTemplate.ts index a67eca1..5188adf 100644 --- a/src/parts/getTemplate.ts +++ b/src/parts/getTemplate.ts @@ -1,4 +1,4 @@ -export function getTemplate(body: string, title: string, css: string){ +export function getTemplate(body: string, title: string, css: string) { return ` @@ -13,5 +13,5 @@ export function getTemplate(body: string, title: string, css: string){ ${body} -` -} \ No newline at end of file +`; +} diff --git a/src/parts/readCss.ts b/src/parts/readCss.ts index fd82647..aad5be9 100644 --- a/src/parts/readCss.ts +++ b/src/parts/readCss.ts @@ -1,36 +1,44 @@ -import { fileExists } from 'file-exists-safe' -import { readFile } from 'fs/promises' -import { join, parse } from 'path' +import { fileExists } from "file-exists-safe"; +import { readFile } from "fs/promises"; +import { join, parse } from "path"; -export async function readCss(fileName: string, cssPath: string){ - fileName = fileName.replace(parse(fileName).ext, "") - const pathToCheckCss = await fileExists(fileName + ".css") - const pathToCheckScss = await fileExists(fileName + ".scss") - let cssToReturn = "" +export async function readCss(fileName: string, cssPath: string) { + fileName = fileName.replace(parse(fileName).ext, ""); + const pathToCheckCss = await fileExists(fileName + ".css"); + const pathToCheckScss = await fileExists(fileName + ".scss"); + let cssToReturn = ""; // if *.css exits or *.scss exits - if (await fileExists(join(cssPath, fileName + "*.css"))){ - cssToReturn = cssToReturn + ` + if (await fileExists(join(cssPath, fileName + "*.css"))) { + cssToReturn = + cssToReturn + + ` ` - } else if (await fileExists(join(cssPath, fileName + "*.scss"))){ - cssToReturn = cssToReturn + ` + `; + } else if (await fileExists(join(cssPath, fileName + "*.scss"))) { + cssToReturn = + cssToReturn + + ` ` + `; } - if (pathToCheckCss){ - cssToReturn = cssToReturn + ` + if (pathToCheckCss) { + cssToReturn = + cssToReturn + + ` ` - } else if (pathToCheckScss){ - cssToReturn = cssToReturn + ` + `; + } else if (pathToCheckScss) { + cssToReturn = + cssToReturn + + ` ` + `; } else { - cssToReturn = cssToReturn + "" + cssToReturn = cssToReturn + ""; } return cssToReturn; -} \ No newline at end of file +} diff --git a/src/parts/readDir.ts b/src/parts/readDir.ts index 4deb0e2..aca5f51 100644 --- a/src/parts/readDir.ts +++ b/src/parts/readDir.ts @@ -1,10 +1,9 @@ import { readdir, lstat } from "fs/promises"; import { parse } from "path"; - export async function readInitialDir(dir: string) { async function* readDir(directory: string): AsyncGenerator { - const files = await readdir(directory); + const files = await readdir(directory); for (const file of files) { const path = `${directory}/${file}`; const stat = await lstat(path); @@ -12,18 +11,18 @@ export async function readInitialDir(dir: string) { yield* readDir(path); } else { // check if file is markdown or mdx - if (parse(path).ext === ".md" || parse(path).ext === ".mdx"){ + if (parse(path).ext === ".md" || parse(path).ext === ".mdx") { yield path; } else { continue; } - } + } } } - const dirArr = new Set([]) + const dirArr = new Set([]); - for await(const el of readDir(dir)) { - dirArr.add(el); + for await (const el of readDir(dir)) { + dirArr.add(el); } return dirArr; } diff --git a/src/parts/writeHtml.ts b/src/parts/writeHtml.ts index ac63c12..1ba6db5 100644 --- a/src/parts/writeHtml.ts +++ b/src/parts/writeHtml.ts @@ -1,19 +1,24 @@ import { mkdir } from "fs/promises"; import { join, parse } from "path"; -import { writeFile } from 'fs/promises'; -import { dirExists } from 'dir-exists-safe' +import { writeFile } from "fs/promises"; +import { dirExists } from "dir-exists-safe"; - -export async function writeHtml(filename: string, html: string, outDir: string) { - const filenameNoExt = parse(filename).name - const toWriteToArray = parse(filename).dir.split("/") - toWriteToArray[1] = outDir.replace("./", "") +export async function writeHtml( + filename: string, + html: string, + outDir: string +) { + const filenameNoExt = parse(filename).name; + const toWriteToArray = parse(filename).dir.split("/"); + toWriteToArray[1] = outDir.replace("./", ""); if (!(await dirExists(join(...toWriteToArray)))) { - await mkdir(join(...toWriteToArray)) - const toWriteTo = "./" + join(...toWriteToArray, filenameNoExt + ".html") - await writeFile(toWriteTo, html) - } else{ - const toWriteTo = "./" + join(...toWriteToArray, filenameNoExt + ".html") - await writeFile(toWriteTo, html) + await mkdir(join(...toWriteToArray)); + const toWriteTo = + "./" + join(...toWriteToArray, filenameNoExt + ".html"); + await writeFile(toWriteTo, html); + } else { + const toWriteTo = + "./" + join(...toWriteToArray, filenameNoExt + ".html"); + await writeFile(toWriteTo, html); } } From faafa0c764d52b1f3e324df65ef2d8166688ec49 Mon Sep 17 00:00:00 2001 From: micziz Date: Fri, 9 Jun 2023 13:48:22 +0200 Subject: [PATCH 12/31] Update deps --- package.json | 14 +- pnpm-lock.yaml | 695 ++++++++++++++++++++++++------------------------- 2 files changed, 352 insertions(+), 357 deletions(-) diff --git a/package.json b/package.json index 0869191..dec88d3 100644 --- a/package.json +++ b/package.json @@ -42,17 +42,17 @@ "devDependencies": { "@chiogen/rollup-plugin-terser": "^7.1.3", "@types/fs-extra": "^11.0.1", - "@types/node": "^18.16.7", - "@types/react": "^18.2.6", + "@types/node": "^18.16.16", + "@types/react": "^18.2.9", "@types/react-dom": "^18.2.4", - "@typescript-eslint/eslint-plugin": "^5.59.5", - "@typescript-eslint/parser": "^5.59.5", - "eslint": "^8.40.0", + "@typescript-eslint/eslint-plugin": "^5.59.9", + "@typescript-eslint/parser": "^5.59.9", + "eslint": "^8.42.0", "eslint-config-prettier": "^8.8.0", "prettier": "^2.8.8", "rimraf": "^4.4.1", - "rollup": "^3.21.6", - "sass": "^1.62.1", + "rollup": "^3.24.0", + "sass": "^1.63.2", "typescript": "^4.9.5" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1fc12fe..7824257 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -37,26 +37,26 @@ devDependencies: specifier: ^11.0.1 version: 11.0.1 '@types/node': - specifier: ^18.16.7 - version: 18.16.7 + specifier: ^18.16.16 + version: 18.16.16 '@types/react': - specifier: ^18.2.6 - version: 18.2.6 + specifier: ^18.2.9 + version: 18.2.9 '@types/react-dom': specifier: ^18.2.4 version: 18.2.4 '@typescript-eslint/eslint-plugin': - specifier: ^5.59.5 - version: 5.59.5(@typescript-eslint/parser@5.59.5)(eslint@8.40.0)(typescript@4.9.5) + specifier: ^5.59.9 + version: 5.59.9(@typescript-eslint/parser@5.59.9)(eslint@8.42.0)(typescript@4.9.5) '@typescript-eslint/parser': - specifier: ^5.59.5 - version: 5.59.5(eslint@8.40.0)(typescript@4.9.5) + specifier: ^5.59.9 + version: 5.59.9(eslint@8.42.0)(typescript@4.9.5) eslint: - specifier: ^8.40.0 - version: 8.40.0 + specifier: ^8.42.0 + version: 8.42.0 eslint-config-prettier: specifier: ^8.8.0 - version: 8.8.0(eslint@8.40.0) + version: 8.8.0(eslint@8.42.0) prettier: specifier: ^2.8.8 version: 2.8.8 @@ -64,34 +64,34 @@ devDependencies: specifier: ^4.4.1 version: 4.4.1 rollup: - specifier: ^3.21.6 - version: 3.21.6 + specifier: ^3.24.0 + version: 3.24.0 sass: - specifier: ^1.62.1 - version: 1.62.1 + specifier: ^1.63.2 + version: 1.63.2 typescript: specifier: ^4.9.5 version: 4.9.5 packages: - /@babel/code-frame@7.21.4: - resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} + /@babel/code-frame@7.22.5: + resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.18.6 + '@babel/highlight': 7.22.5 dev: true - /@babel/helper-validator-identifier@7.19.1: - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + /@babel/helper-validator-identifier@7.22.5: + resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/highlight@7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + /@babel/highlight@7.22.5: + resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.19.1 + '@babel/helper-validator-identifier': 7.22.5 chalk: 2.4.2 js-tokens: 4.0.0 dev: true @@ -99,17 +99,17 @@ packages: /@chiogen/rollup-plugin-terser@7.1.3: resolution: {integrity: sha512-+AskjdQXzvmpcrvxN1FNr9xCDRcMaDMBGgbpn3EkPW6r4C80Qk4PIs4ox5GNtYjub9XEZUXJRdQg84uDPvxqaQ==} dependencies: - '@babel/code-frame': 7.21.4 - terser: 5.17.3 + '@babel/code-frame': 7.22.5 + terser: 5.17.7 dev: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.40.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.42.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.40.0 + eslint: 8.42.0 eslint-visitor-keys: 3.4.1 dev: true @@ -135,13 +135,13 @@ packages: - supports-color dev: true - /@eslint/js@8.40.0: - resolution: {integrity: sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==} + /@eslint/js@8.42.0: + resolution: {integrity: sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@humanwhocodes/config-array@0.11.8: - resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} + /@humanwhocodes/config-array@0.11.10: + resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -210,11 +210,11 @@ packages: estree-util-is-identifier-name: 2.1.0 estree-util-to-js: 1.2.0 estree-walker: 3.0.3 - hast-util-to-estree: 2.3.2 + hast-util-to-estree: 2.3.3 markdown-extensions: 1.1.1 periscopic: 3.1.0 remark-mdx: 2.3.0 - remark-parse: 10.0.1 + remark-parse: 10.0.2 remark-rehype: 10.1.0 unified: 10.1.2 unist-util-position-from-estree: 1.1.2 @@ -252,8 +252,8 @@ packages: '@types/estree': 1.0.1 dev: false - /@types/debug@4.1.7: - resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} + /@types/debug@4.1.8: + resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} dependencies: '@types/ms': 0.7.31 dev: false @@ -272,7 +272,7 @@ packages: resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} dependencies: '@types/jsonfile': 6.1.1 - '@types/node': 18.16.7 + '@types/node': 18.16.16 dev: true /@types/hast@2.3.4: @@ -281,14 +281,14 @@ packages: '@types/unist': 2.0.6 dev: false - /@types/json-schema@7.0.11: - resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + /@types/json-schema@7.0.12: + resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} dev: true /@types/jsonfile@6.1.1: resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} dependencies: - '@types/node': 18.16.7 + '@types/node': 18.16.16 dev: true /@types/mdast@3.0.11: @@ -305,8 +305,8 @@ packages: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: false - /@types/node@18.16.7: - resolution: {integrity: sha512-MFg7ua/bRtnA1hYE3pVyWxGd/r7aMqjNOdHvlSsXV3n8iaeGKkOaPzpJh6/ovf4bEXWcojkeMJpTsq3mzXW4IQ==} + /@types/node@18.16.16: + resolution: {integrity: sha512-NpaM49IGQQAUlBhHMF82QH80J08os4ZmyF9MkpCzWAGuOHqE4gTEbhzd7L3l5LmWuZ6E0OiC1FweQ4tsiW35+g==} dev: true /@types/prop-types@15.7.5: @@ -316,11 +316,11 @@ packages: /@types/react-dom@18.2.4: resolution: {integrity: sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==} dependencies: - '@types/react': 18.2.6 + '@types/react': 18.2.9 dev: true - /@types/react@18.2.6: - resolution: {integrity: sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==} + /@types/react@18.2.9: + resolution: {integrity: sha512-pL3JAesUkF7PEQGxh5XOwdXGV907te6m1/Qe1ERJLgomojS6Ne790QiA7GUl434JEkFA2aAaB6qJ5z4e1zJn/w==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 @@ -339,8 +339,8 @@ packages: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: false - /@typescript-eslint/eslint-plugin@5.59.5(@typescript-eslint/parser@5.59.5)(eslint@8.40.0)(typescript@4.9.5): - resolution: {integrity: sha512-feA9xbVRWJZor+AnLNAr7A8JRWeZqHUf4T9tlP+TN04b05pFVhO5eN7/O93Y/1OUlLMHKbnJisgDURs/qvtqdg==} + /@typescript-eslint/eslint-plugin@5.59.9(@typescript-eslint/parser@5.59.9)(eslint@8.42.0)(typescript@4.9.5): + resolution: {integrity: sha512-4uQIBq1ffXd2YvF7MAvehWKW3zVv/w+mSfRAu+8cKbfj3nwzyqJLNcZJpQ/WZ1HLbJDiowwmQ6NO+63nCA+fqA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -351,24 +351,24 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.59.5(eslint@8.40.0)(typescript@4.9.5) - '@typescript-eslint/scope-manager': 5.59.5 - '@typescript-eslint/type-utils': 5.59.5(eslint@8.40.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.5(eslint@8.40.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.9(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.59.9 + '@typescript-eslint/type-utils': 5.59.9(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.9(eslint@8.42.0)(typescript@4.9.5) debug: 4.3.4 - eslint: 8.40.0 + eslint: 8.42.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 - semver: 7.5.0 + semver: 7.5.1 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.59.5(eslint@8.40.0)(typescript@4.9.5): - resolution: {integrity: sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw==} + /@typescript-eslint/parser@5.59.9(eslint@8.42.0)(typescript@4.9.5): + resolution: {integrity: sha512-FsPkRvBtcLQ/eVK1ivDiNYBjn3TGJdXy2fhXX+rc7czWl4ARwnpArwbihSOHI2Peg9WbtGHrbThfBUkZZGTtvQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -377,26 +377,26 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.59.5 - '@typescript-eslint/types': 5.59.5 - '@typescript-eslint/typescript-estree': 5.59.5(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.59.9 + '@typescript-eslint/types': 5.59.9 + '@typescript-eslint/typescript-estree': 5.59.9(typescript@4.9.5) debug: 4.3.4 - eslint: 8.40.0 + eslint: 8.42.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@5.59.5: - resolution: {integrity: sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A==} + /@typescript-eslint/scope-manager@5.59.9: + resolution: {integrity: sha512-8RA+E+w78z1+2dzvK/tGZ2cpGigBZ58VMEHDZtpE1v+LLjzrYGc8mMaTONSxKyEkz3IuXFM0IqYiGHlCsmlZxQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.59.5 - '@typescript-eslint/visitor-keys': 5.59.5 + '@typescript-eslint/types': 5.59.9 + '@typescript-eslint/visitor-keys': 5.59.9 dev: true - /@typescript-eslint/type-utils@5.59.5(eslint@8.40.0)(typescript@4.9.5): - resolution: {integrity: sha512-4eyhS7oGym67/pSxA2mmNq7X164oqDYNnZCUayBwJZIRVvKpBCMBzFnFxjeoDeShjtO6RQBHBuwybuX3POnDqg==} + /@typescript-eslint/type-utils@5.59.9(eslint@8.42.0)(typescript@4.9.5): + resolution: {integrity: sha512-ksEsT0/mEHg9e3qZu98AlSrONAQtrSTljL3ow9CGej8eRo7pe+yaC/mvTjptp23Xo/xIf2mLZKC6KPv4Sji26Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -405,23 +405,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.5(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.5(eslint@8.40.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.9(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.9(eslint@8.42.0)(typescript@4.9.5) debug: 4.3.4 - eslint: 8.40.0 + eslint: 8.42.0 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.59.5: - resolution: {integrity: sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==} + /@typescript-eslint/types@5.59.9: + resolution: {integrity: sha512-uW8H5NRgTVneSVTfiCVffBb8AbwWSKg7qcA4Ot3JI3MPCJGsB4Db4BhvAODIIYE5mNj7Q+VJkK7JxmRhk2Lyjw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.59.5(typescript@4.9.5): - resolution: {integrity: sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==} + /@typescript-eslint/typescript-estree@5.59.9(typescript@4.9.5): + resolution: {integrity: sha512-pmM0/VQ7kUhd1QyIxgS+aRvMgw+ZljB3eDb+jYyp6d2bC0mQWLzUDF+DLwCTkQ3tlNyVsvZRXjFyV0LkU/aXjA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -429,43 +429,43 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.59.5 - '@typescript-eslint/visitor-keys': 5.59.5 + '@typescript-eslint/types': 5.59.9 + '@typescript-eslint/visitor-keys': 5.59.9 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.0 + semver: 7.5.1 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.59.5(eslint@8.40.0)(typescript@4.9.5): - resolution: {integrity: sha512-sCEHOiw+RbyTii9c3/qN74hYDPNORb8yWCoPLmB7BIflhplJ65u2PBpdRla12e3SSTJ2erRkPjz7ngLHhUegxA==} + /@typescript-eslint/utils@5.59.9(eslint@8.42.0)(typescript@4.9.5): + resolution: {integrity: sha512-1PuMYsju/38I5Ggblaeb98TOoUvjhRvLpLa1DoTOFaLWqaXl/1iQ1eGurTXgBY58NUdtfTXKP5xBq7q9NDaLKg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.40.0) - '@types/json-schema': 7.0.11 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0) + '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.59.5 - '@typescript-eslint/types': 5.59.5 - '@typescript-eslint/typescript-estree': 5.59.5(typescript@4.9.5) - eslint: 8.40.0 + '@typescript-eslint/scope-manager': 5.59.9 + '@typescript-eslint/types': 5.59.9 + '@typescript-eslint/typescript-estree': 5.59.9(typescript@4.9.5) + eslint: 8.42.0 eslint-scope: 5.1.1 - semver: 7.5.0 + semver: 7.5.1 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@5.59.5: - resolution: {integrity: sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==} + /@typescript-eslint/visitor-keys@5.59.9: + resolution: {integrity: sha512-bT7s0td97KMaLwpEBckbzj/YohnvXtqbe2XgqNvTl6RJVakY5mvENOTPvw5u66nljfZxthESpDozs86U+oLY8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.59.5 + '@typescript-eslint/types': 5.59.9 eslint-visitor-keys: 3.4.1 dev: true @@ -532,8 +532,8 @@ packages: engines: {node: '>=8'} dev: true - /astring@1.8.4: - resolution: {integrity: sha512-97a+l2LBU3Op3bBQEff79i/E4jMD2ZLFD8rHx9B6mXyB2uQwhJQYfiDqUwtfjF4QA1F2qs//N6Cw8LetMbQjcw==} + /astring@1.8.6: + resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} hasBin: true dev: false @@ -741,13 +741,13 @@ packages: engines: {node: '>=12'} dev: false - /eslint-config-prettier@8.8.0(eslint@8.40.0): + /eslint-config-prettier@8.8.0(eslint@8.42.0): resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.40.0 + eslint: 8.42.0 dev: true /eslint-scope@5.1.1: @@ -771,16 +771,16 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.40.0: - resolution: {integrity: sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==} + /eslint@8.42.0: + resolution: {integrity: sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.40.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0) '@eslint-community/regexpp': 4.5.1 '@eslint/eslintrc': 2.0.3 - '@eslint/js': 8.40.0 - '@humanwhocodes/config-array': 0.11.8 + '@eslint/js': 8.42.0 + '@humanwhocodes/config-array': 0.11.10 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -799,13 +799,12 @@ packages: find-up: 5.0.0 glob-parent: 6.0.2 globals: 13.20.0 - grapheme-splitter: 1.0.4 + graphemer: 1.4.0 ignore: 5.2.4 import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-sdsl: 4.4.0 js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 @@ -881,7 +880,7 @@ packages: resolution: {integrity: sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==} dependencies: '@types/estree-jsx': 1.0.0 - astring: 1.8.4 + astring: 1.8.6 source-map: 0.7.4 dev: false @@ -1035,7 +1034,7 @@ packages: fs.realpath: 1.0.0 minimatch: 8.0.4 minipass: 4.2.8 - path-scurry: 1.7.0 + path-scurry: 1.9.2 dev: true /globals@13.20.0: @@ -1065,6 +1064,10 @@ packages: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + /gray-matter@4.0.3: resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} engines: {node: '>=6.0'} @@ -1085,8 +1088,8 @@ packages: engines: {node: '>=8'} dev: true - /hast-util-to-estree@2.3.2: - resolution: {integrity: sha512-YYDwATNdnvZi3Qi84iatPIl1lWpXba1MeNrNbDfJfVzEBZL8uUmtR7mt7bxKBC8kuAuvb0bkojXYZzsNHyHCLg==} + /hast-util-to-estree@2.3.3: + resolution: {integrity: sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==} dependencies: '@types/estree': 1.0.1 '@types/estree-jsx': 1.0.0 @@ -1221,10 +1224,6 @@ packages: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /js-sdsl@4.4.0: - resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} - dev: true - /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -1306,8 +1305,8 @@ packages: yallist: 4.0.0 dev: true - /lru-cache@9.1.1: - resolution: {integrity: sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==} + /lru-cache@9.1.2: + resolution: {integrity: sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==} engines: {node: 14 || >=16.14} dev: true @@ -1337,19 +1336,19 @@ packages: unist-util-visit-parents: 5.1.3 dev: false - /mdast-util-from-markdown@1.3.0: - resolution: {integrity: sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g==} + /mdast-util-from-markdown@1.3.1: + resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} dependencies: '@types/mdast': 3.0.11 '@types/unist': 2.0.6 decode-named-character-reference: 1.0.2 mdast-util-to-string: 3.2.0 - micromark: 3.1.0 - micromark-util-decode-numeric-character-reference: 1.0.0 - micromark-util-decode-string: 1.0.2 - micromark-util-normalize-identifier: 1.0.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark: 3.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-decode-string: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 unist-util-stringify-position: 3.0.3 uvu: 0.5.6 transitivePeerDependencies: @@ -1362,7 +1361,7 @@ packages: '@types/mdast': 3.0.11 ccount: 2.0.1 mdast-util-find-and-replace: 2.2.2 - micromark-util-character: 1.1.0 + micromark-util-character: 1.2.0 dev: false /mdast-util-gfm-footnote@1.0.2: @@ -1370,7 +1369,7 @@ packages: dependencies: '@types/mdast': 3.0.11 mdast-util-to-markdown: 1.5.0 - micromark-util-normalize-identifier: 1.0.0 + micromark-util-normalize-identifier: 1.1.0 dev: false /mdast-util-gfm-strikethrough@1.0.3: @@ -1385,7 +1384,7 @@ packages: dependencies: '@types/mdast': 3.0.11 markdown-table: 3.0.3 - mdast-util-from-markdown: 1.3.0 + mdast-util-from-markdown: 1.3.1 mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: - supports-color @@ -1401,7 +1400,7 @@ packages: /mdast-util-gfm@2.0.2: resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==} dependencies: - mdast-util-from-markdown: 1.3.0 + mdast-util-from-markdown: 1.3.1 mdast-util-gfm-autolink-literal: 1.0.3 mdast-util-gfm-footnote: 1.0.2 mdast-util-gfm-strikethrough: 1.0.3 @@ -1418,21 +1417,21 @@ packages: '@types/estree-jsx': 1.0.0 '@types/hast': 2.3.4 '@types/mdast': 3.0.11 - mdast-util-from-markdown: 1.3.0 + mdast-util-from-markdown: 1.3.1 mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: - supports-color dev: false - /mdast-util-mdx-jsx@2.1.2: - resolution: {integrity: sha512-o9vBCYQK5ZLGEj3tCGISJGjvafyHRVJlZmfJzSE7xjiogSzIeph/Z4zMY65q4WGRMezQBeAwPlrdymDYYYx0tA==} + /mdast-util-mdx-jsx@2.1.4: + resolution: {integrity: sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==} dependencies: '@types/estree-jsx': 1.0.0 '@types/hast': 2.3.4 '@types/mdast': 3.0.11 '@types/unist': 2.0.6 ccount: 2.0.1 - mdast-util-from-markdown: 1.3.0 + mdast-util-from-markdown: 1.3.1 mdast-util-to-markdown: 1.5.0 parse-entities: 4.0.1 stringify-entities: 4.0.3 @@ -1446,9 +1445,9 @@ packages: /mdast-util-mdx@2.0.1: resolution: {integrity: sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==} dependencies: - mdast-util-from-markdown: 1.3.0 + mdast-util-from-markdown: 1.3.1 mdast-util-mdx-expression: 1.3.2 - mdast-util-mdx-jsx: 2.1.2 + mdast-util-mdx-jsx: 2.1.4 mdast-util-mdxjs-esm: 1.3.1 mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: @@ -1461,7 +1460,7 @@ packages: '@types/estree-jsx': 1.0.0 '@types/hast': 2.3.4 '@types/mdast': 3.0.11 - mdast-util-from-markdown: 1.3.0 + mdast-util-from-markdown: 1.3.1 mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: - supports-color @@ -1480,7 +1479,7 @@ packages: '@types/hast': 2.3.4 '@types/mdast': 3.0.11 mdast-util-definitions: 5.1.2 - micromark-util-sanitize-uri: 1.1.0 + micromark-util-sanitize-uri: 1.2.0 trim-lines: 3.0.1 unist-util-generated: 2.0.1 unist-util-position: 4.0.4 @@ -1495,7 +1494,7 @@ packages: longest-streak: 3.1.0 mdast-util-phrasing: 3.0.1 mdast-util-to-string: 3.2.0 - micromark-util-decode-string: 1.0.2 + micromark-util-decode-string: 1.1.0 unist-util-visit: 4.1.2 zwitch: 2.0.4 dev: false @@ -1511,332 +1510,335 @@ packages: engines: {node: '>= 8'} dev: true - /micromark-core-commonmark@1.0.6: - resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} + /micromark-core-commonmark@1.1.0: + resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} dependencies: decode-named-character-reference: 1.0.2 - micromark-factory-destination: 1.0.0 - micromark-factory-label: 1.0.2 - micromark-factory-space: 1.0.0 - micromark-factory-title: 1.0.2 - micromark-factory-whitespace: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-chunked: 1.0.0 - micromark-util-classify-character: 1.0.0 - micromark-util-html-tag-name: 1.1.0 - micromark-util-normalize-identifier: 1.0.0 - micromark-util-resolve-all: 1.0.0 - micromark-util-subtokenize: 1.0.2 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-factory-destination: 1.1.0 + micromark-factory-label: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-factory-title: 1.1.0 + micromark-factory-whitespace: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-classify-character: 1.1.0 + micromark-util-html-tag-name: 1.2.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 uvu: 0.5.6 dev: false - /micromark-extension-gfm-autolink-literal@1.0.4: - resolution: {integrity: sha512-WCssN+M9rUyfHN5zPBn3/f0mIA7tqArHL/EKbv3CZK+LT2rG77FEikIQEqBkv46fOqXQK4NEW/Pc7Z27gshpeg==} + /micromark-extension-gfm-autolink-literal@1.0.5: + resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==} dependencies: - micromark-util-character: 1.1.0 - micromark-util-sanitize-uri: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 dev: false - /micromark-extension-gfm-footnote@1.1.0: - resolution: {integrity: sha512-RWYce7j8+c0n7Djzv5NzGEGitNNYO3uj+h/XYMdS/JinH1Go+/Qkomg/rfxExFzYTiydaV6GLeffGO5qcJbMPA==} + /micromark-extension-gfm-footnote@1.1.2: + resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==} dependencies: - micromark-core-commonmark: 1.0.6 - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-normalize-identifier: 1.0.0 - micromark-util-sanitize-uri: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-core-commonmark: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 uvu: 0.5.6 dev: false - /micromark-extension-gfm-strikethrough@1.0.5: - resolution: {integrity: sha512-X0oI5eYYQVARhiNfbETy7BfLSmSilzN1eOuoRnrf9oUNsPRrWOAe9UqSizgw1vNxQBfOwL+n2610S3bYjVNi7w==} + /micromark-extension-gfm-strikethrough@1.0.7: + resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==} dependencies: - micromark-util-chunked: 1.0.0 - micromark-util-classify-character: 1.0.0 - micromark-util-resolve-all: 1.0.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-util-chunked: 1.1.0 + micromark-util-classify-character: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 uvu: 0.5.6 dev: false - /micromark-extension-gfm-table@1.0.5: - resolution: {integrity: sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==} + /micromark-extension-gfm-table@1.0.7: + resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==} dependencies: - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 uvu: 0.5.6 dev: false /micromark-extension-gfm-tagfilter@1.0.2: resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==} dependencies: - micromark-util-types: 1.0.2 + micromark-util-types: 1.1.0 dev: false - /micromark-extension-gfm-task-list-item@1.0.4: - resolution: {integrity: sha512-9XlIUUVnYXHsFF2HZ9jby4h3npfX10S1coXTnV035QGPgrtNYQq3J6IfIvcCIUAJrrqBVi5BqA/LmaOMJqPwMQ==} + /micromark-extension-gfm-task-list-item@1.0.5: + resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==} dependencies: - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 uvu: 0.5.6 dev: false - /micromark-extension-gfm@2.0.1: - resolution: {integrity: sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==} + /micromark-extension-gfm@2.0.3: + resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==} dependencies: - micromark-extension-gfm-autolink-literal: 1.0.4 - micromark-extension-gfm-footnote: 1.1.0 - micromark-extension-gfm-strikethrough: 1.0.5 - micromark-extension-gfm-table: 1.0.5 + micromark-extension-gfm-autolink-literal: 1.0.5 + micromark-extension-gfm-footnote: 1.1.2 + micromark-extension-gfm-strikethrough: 1.0.7 + micromark-extension-gfm-table: 1.0.7 micromark-extension-gfm-tagfilter: 1.0.2 - micromark-extension-gfm-task-list-item: 1.0.4 - micromark-util-combine-extensions: 1.0.0 - micromark-util-types: 1.0.2 + micromark-extension-gfm-task-list-item: 1.0.5 + micromark-util-combine-extensions: 1.1.0 + micromark-util-types: 1.1.0 dev: false - /micromark-extension-mdx-expression@1.0.4: - resolution: {integrity: sha512-TCgLxqW6ReQ3AJgtj1P0P+8ZThBTloLbeb7jNaqr6mCOLDpxUiBFE/9STgooMZttEwOQu5iEcCCa3ZSDhY9FGw==} + /micromark-extension-mdx-expression@1.0.8: + resolution: {integrity: sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==} dependencies: - micromark-factory-mdx-expression: 1.0.7 - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-events-to-acorn: 1.2.1 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + '@types/estree': 1.0.1 + micromark-factory-mdx-expression: 1.0.9 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-events-to-acorn: 1.2.3 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 uvu: 0.5.6 dev: false - /micromark-extension-mdx-jsx@1.0.3: - resolution: {integrity: sha512-VfA369RdqUISF0qGgv2FfV7gGjHDfn9+Qfiv5hEwpyr1xscRj/CiVRkU7rywGFCO7JwJ5L0e7CJz60lY52+qOA==} + /micromark-extension-mdx-jsx@1.0.5: + resolution: {integrity: sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==} dependencies: '@types/acorn': 4.0.6 + '@types/estree': 1.0.1 estree-util-is-identifier-name: 2.1.0 - micromark-factory-mdx-expression: 1.0.7 - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-factory-mdx-expression: 1.0.9 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 uvu: 0.5.6 vfile-message: 3.1.4 dev: false - /micromark-extension-mdx-md@1.0.0: - resolution: {integrity: sha512-xaRAMoSkKdqZXDAoSgp20Azm0aRQKGOl0RrS81yGu8Hr/JhMsBmfs4wR7m9kgVUIO36cMUQjNyiyDKPrsv8gOw==} + /micromark-extension-mdx-md@1.0.1: + resolution: {integrity: sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==} dependencies: - micromark-util-types: 1.0.2 + micromark-util-types: 1.1.0 dev: false - /micromark-extension-mdxjs-esm@1.0.3: - resolution: {integrity: sha512-2N13ol4KMoxb85rdDwTAC6uzs8lMX0zeqpcyx7FhS7PxXomOnLactu8WI8iBNXW8AVyea3KIJd/1CKnUmwrK9A==} + /micromark-extension-mdxjs-esm@1.0.5: + resolution: {integrity: sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==} dependencies: - micromark-core-commonmark: 1.0.6 - micromark-util-character: 1.1.0 - micromark-util-events-to-acorn: 1.2.1 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + '@types/estree': 1.0.1 + micromark-core-commonmark: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-events-to-acorn: 1.2.3 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 unist-util-position-from-estree: 1.1.2 uvu: 0.5.6 vfile-message: 3.1.4 dev: false - /micromark-extension-mdxjs@1.0.0: - resolution: {integrity: sha512-TZZRZgeHvtgm+IhtgC2+uDMR7h8eTKF0QUX9YsgoL9+bADBpBY6SiLvWqnBlLbCEevITmTqmEuY3FoxMKVs1rQ==} + /micromark-extension-mdxjs@1.0.1: + resolution: {integrity: sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==} dependencies: acorn: 8.8.2 acorn-jsx: 5.3.2(acorn@8.8.2) - micromark-extension-mdx-expression: 1.0.4 - micromark-extension-mdx-jsx: 1.0.3 - micromark-extension-mdx-md: 1.0.0 - micromark-extension-mdxjs-esm: 1.0.3 - micromark-util-combine-extensions: 1.0.0 - micromark-util-types: 1.0.2 + micromark-extension-mdx-expression: 1.0.8 + micromark-extension-mdx-jsx: 1.0.5 + micromark-extension-mdx-md: 1.0.1 + micromark-extension-mdxjs-esm: 1.0.5 + micromark-util-combine-extensions: 1.1.0 + micromark-util-types: 1.1.0 dev: false - /micromark-factory-destination@1.0.0: - resolution: {integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==} + /micromark-factory-destination@1.1.0: + resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} dependencies: - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 dev: false - /micromark-factory-label@1.0.2: - resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==} + /micromark-factory-label@1.1.0: + resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} dependencies: - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 uvu: 0.5.6 dev: false - /micromark-factory-mdx-expression@1.0.7: - resolution: {integrity: sha512-QAdFbkQagTZ/eKb8zDGqmjvgevgJH3+aQpvvKrXWxNJp3o8/l2cAbbrBd0E04r0Gx6nssPpqWIjnbHFvZu5qsQ==} + /micromark-factory-mdx-expression@1.0.9: + resolution: {integrity: sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==} dependencies: - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-events-to-acorn: 1.2.1 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + '@types/estree': 1.0.1 + micromark-util-character: 1.2.0 + micromark-util-events-to-acorn: 1.2.3 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 unist-util-position-from-estree: 1.1.2 uvu: 0.5.6 vfile-message: 3.1.4 dev: false - /micromark-factory-space@1.0.0: - resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} + /micromark-factory-space@1.1.0: + resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} dependencies: - micromark-util-character: 1.1.0 - micromark-util-types: 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-types: 1.1.0 dev: false - /micromark-factory-title@1.0.2: - resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==} + /micromark-factory-title@1.1.0: + resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} dependencies: - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 dev: false - /micromark-factory-whitespace@1.0.0: - resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==} + /micromark-factory-whitespace@1.1.0: + resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} dependencies: - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 dev: false - /micromark-util-character@1.1.0: - resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==} + /micromark-util-character@1.2.0: + resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} dependencies: - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 dev: false - /micromark-util-chunked@1.0.0: - resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==} + /micromark-util-chunked@1.1.0: + resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} dependencies: - micromark-util-symbol: 1.0.1 + micromark-util-symbol: 1.1.0 dev: false - /micromark-util-classify-character@1.0.0: - resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==} + /micromark-util-classify-character@1.1.0: + resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} dependencies: - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 dev: false - /micromark-util-combine-extensions@1.0.0: - resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==} + /micromark-util-combine-extensions@1.1.0: + resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} dependencies: - micromark-util-chunked: 1.0.0 - micromark-util-types: 1.0.2 + micromark-util-chunked: 1.1.0 + micromark-util-types: 1.1.0 dev: false - /micromark-util-decode-numeric-character-reference@1.0.0: - resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==} + /micromark-util-decode-numeric-character-reference@1.1.0: + resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} dependencies: - micromark-util-symbol: 1.0.1 + micromark-util-symbol: 1.1.0 dev: false - /micromark-util-decode-string@1.0.2: - resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==} + /micromark-util-decode-string@1.1.0: + resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} dependencies: decode-named-character-reference: 1.0.2 - micromark-util-character: 1.1.0 - micromark-util-decode-numeric-character-reference: 1.0.0 - micromark-util-symbol: 1.0.1 + micromark-util-character: 1.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-symbol: 1.1.0 dev: false - /micromark-util-encode@1.0.1: - resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} + /micromark-util-encode@1.1.0: + resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} dev: false - /micromark-util-events-to-acorn@1.2.1: - resolution: {integrity: sha512-mkg3BaWlw6ZTkQORrKVBW4o9ICXPxLtGz51vml5mQpKFdo9vqIX68CAx5JhTOdjQyAHH7JFmm4rh8toSPQZUmg==} + /micromark-util-events-to-acorn@1.2.3: + resolution: {integrity: sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==} dependencies: '@types/acorn': 4.0.6 '@types/estree': 1.0.1 + '@types/unist': 2.0.6 estree-util-visit: 1.2.1 - micromark-util-types: 1.0.2 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 uvu: 0.5.6 - vfile-location: 4.1.0 vfile-message: 3.1.4 dev: false - /micromark-util-html-tag-name@1.1.0: - resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==} + /micromark-util-html-tag-name@1.2.0: + resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} dev: false - /micromark-util-normalize-identifier@1.0.0: - resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==} + /micromark-util-normalize-identifier@1.1.0: + resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} dependencies: - micromark-util-symbol: 1.0.1 + micromark-util-symbol: 1.1.0 dev: false - /micromark-util-resolve-all@1.0.0: - resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==} + /micromark-util-resolve-all@1.1.0: + resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} dependencies: - micromark-util-types: 1.0.2 + micromark-util-types: 1.1.0 dev: false - /micromark-util-sanitize-uri@1.1.0: - resolution: {integrity: sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==} + /micromark-util-sanitize-uri@1.2.0: + resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} dependencies: - micromark-util-character: 1.1.0 - micromark-util-encode: 1.0.1 - micromark-util-symbol: 1.0.1 + micromark-util-character: 1.2.0 + micromark-util-encode: 1.1.0 + micromark-util-symbol: 1.1.0 dev: false - /micromark-util-subtokenize@1.0.2: - resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==} + /micromark-util-subtokenize@1.1.0: + resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} dependencies: - micromark-util-chunked: 1.0.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-util-chunked: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 uvu: 0.5.6 dev: false - /micromark-util-symbol@1.0.1: - resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==} + /micromark-util-symbol@1.1.0: + resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} dev: false - /micromark-util-types@1.0.2: - resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} + /micromark-util-types@1.1.0: + resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} dev: false - /micromark@3.1.0: - resolution: {integrity: sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==} + /micromark@3.2.0: + resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} dependencies: - '@types/debug': 4.1.7 + '@types/debug': 4.1.8 debug: 4.3.4 decode-named-character-reference: 1.0.2 - micromark-core-commonmark: 1.0.6 - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-chunked: 1.0.0 - micromark-util-combine-extensions: 1.0.0 - micromark-util-decode-numeric-character-reference: 1.0.0 - micromark-util-encode: 1.0.1 - micromark-util-normalize-identifier: 1.0.0 - micromark-util-resolve-all: 1.0.0 - micromark-util-sanitize-uri: 1.1.0 - micromark-util-subtokenize: 1.0.2 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-core-commonmark: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-combine-extensions: 1.1.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-encode: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 uvu: 0.5.6 transitivePeerDependencies: - supports-color @@ -1868,9 +1870,9 @@ packages: engines: {node: '>=8'} dev: true - /minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} + /minipass@6.0.2: + resolution: {integrity: sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==} + engines: {node: '>=16 || 14 >=14.17'} dev: true /mri@1.2.0: @@ -1961,12 +1963,12 @@ packages: engines: {node: '>=8'} dev: true - /path-scurry@1.7.0: - resolution: {integrity: sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==} + /path-scurry@1.9.2: + resolution: {integrity: sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==} engines: {node: '>=16 || 14 >=14.17'} dependencies: - lru-cache: 9.1.1 - minipass: 5.0.0 + lru-cache: 9.1.2 + minipass: 6.0.2 dev: true /path-type@4.0.0: @@ -2040,7 +2042,7 @@ packages: dependencies: '@types/mdast': 3.0.11 mdast-util-gfm: 2.0.2 - micromark-extension-gfm: 2.0.1 + micromark-extension-gfm: 2.0.3 unified: 10.1.2 transitivePeerDependencies: - supports-color @@ -2050,16 +2052,16 @@ packages: resolution: {integrity: sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==} dependencies: mdast-util-mdx: 2.0.1 - micromark-extension-mdxjs: 1.0.0 + micromark-extension-mdxjs: 1.0.1 transitivePeerDependencies: - supports-color dev: false - /remark-parse@10.0.1: - resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==} + /remark-parse@10.0.2: + resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} dependencies: '@types/mdast': 3.0.11 - mdast-util-from-markdown: 1.3.0 + mdast-util-from-markdown: 1.3.1 unified: 10.1.2 transitivePeerDependencies: - supports-color @@ -2099,8 +2101,8 @@ packages: glob: 9.3.5 dev: true - /rollup@3.21.6: - resolution: {integrity: sha512-SXIICxvxQxR3D4dp/3LDHZIJPC8a4anKMHd4E3Jiz2/JnY+2bEjqrOokAauc5ShGVNFHlEFjBXAXlaxkJqIqSg==} + /rollup@3.24.0: + resolution: {integrity: sha512-OgraHOIg2YpHQTjl0/ymWfFNBEyPucB7lmhXrQUh38qNOegxLapSPFs9sNr0qKR75awW41D93XafoR2QfhBdUQ==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -2120,8 +2122,8 @@ packages: mri: 1.2.0 dev: false - /sass@1.62.1: - resolution: {integrity: sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==} + /sass@1.63.2: + resolution: {integrity: sha512-u56TU0AIFqMtauKl/OJ1AeFsXqRHkgO7nCWmHaDwfxDo9GUMSqBA4NEh6GMuh1CYVM7zuROYtZrHzPc2ixK+ww==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -2144,8 +2146,8 @@ packages: kind-of: 6.0.3 dev: false - /semver@7.5.0: - resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} + /semver@7.5.1: + resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} engines: {node: '>=10'} hasBin: true dependencies: @@ -2243,8 +2245,8 @@ packages: has-flag: 4.0.0 dev: true - /terser@5.17.3: - resolution: {integrity: sha512-AudpAZKmZHkG9jueayypz4duuCFJMMNGRMwaPvQKWfxKedh8Z2x3OCoDqIIi1xx5+iwx1u6Au8XQcc9Lke65Yg==} + /terser@5.17.7: + resolution: {integrity: sha512-/bi0Zm2C6VAexlGgLlVxA0P2lru/sdLyfCVaRMfKVo9nWxbmz7f/sD8VPybPeSUJaJcwmCJis9pBIhcVcG1QcQ==} engines: {node: '>=10'} hasBin: true dependencies: @@ -2389,13 +2391,6 @@ packages: sade: 1.8.1 dev: false - /vfile-location@4.1.0: - resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} - dependencies: - '@types/unist': 2.0.6 - vfile: 5.3.7 - dev: false - /vfile-message@3.1.4: resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} dependencies: From 226120cd584255df2aad2a15e8329d8532ba7140 Mon Sep 17 00:00:00 2001 From: micziz Date: Fri, 9 Jun 2023 16:56:30 +0200 Subject: [PATCH 13/31] Switch to tsup --- package.json | 6 +- pnpm-lock.yaml | 875 ++++++++++++++++++++++++++++++++++++++++++- src/index.ts | 34 ++ src/parts/compile.ts | 11 +- src/parts/getHtml.ts | 11 +- 5 files changed, 921 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index dec88d3..68f0346 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "scripts": { "dev": "pnpm build-fast && node .", "build": "pnpm prepare && tsc && rollup -c && rimraf build", - "build-fast": "tsc && rollup -c && rimraf build", + "build-fast": "tsup-node src/index.ts --format esm --minify terser && cpy dist/index.js bundle --flat && rimraf dist", "go": "pnpm build && pnpm publish", "lint": "eslint src --fix", "check": "pnpm check-code && pnpm check-docs", @@ -30,6 +30,7 @@ "author": "micziz", "dependencies": { "@mdx-js/mdx": "^2.3.0", + "arg": "^5.0.2", "dir-exists-safe": "^1.1.0", "file-exists-safe": "^2.0.0", "fs-extra": "^11.1.1", @@ -47,12 +48,15 @@ "@types/react-dom": "^18.2.4", "@typescript-eslint/eslint-plugin": "^5.59.9", "@typescript-eslint/parser": "^5.59.9", + "cpy-cli": "^4.2.0", "eslint": "^8.42.0", "eslint-config-prettier": "^8.8.0", "prettier": "^2.8.8", "rimraf": "^4.4.1", "rollup": "^3.24.0", "sass": "^1.63.2", + "terser": "^5.17.7", + "tsup": "^6.7.0", "typescript": "^4.9.5" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7824257..1f5235e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,9 @@ dependencies: '@mdx-js/mdx': specifier: ^2.3.0 version: 2.3.0 + arg: + specifier: ^5.0.2 + version: 5.0.2 dir-exists-safe: specifier: ^1.1.0 version: 1.1.0 @@ -51,6 +54,9 @@ devDependencies: '@typescript-eslint/parser': specifier: ^5.59.9 version: 5.59.9(eslint@8.42.0)(typescript@4.9.5) + cpy-cli: + specifier: ^4.2.0 + version: 4.2.0 eslint: specifier: ^8.42.0 version: 8.42.0 @@ -69,6 +75,12 @@ devDependencies: sass: specifier: ^1.63.2 version: 1.63.2 + terser: + specifier: ^5.17.7 + version: 5.17.7 + tsup: + specifier: ^6.7.0 + version: 6.7.0(typescript@4.9.5) typescript: specifier: ^4.9.5 version: 4.9.5 @@ -103,6 +115,204 @@ packages: terser: 5.17.7 dev: true + /@esbuild/android-arm64@0.17.19: + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.17.19: + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.17.19: + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.17.19: + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.17.19: + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.17.19: + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.17.19: + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.17.19: + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.17.19: + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.17.19: + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.17.19: + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.17.19: + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.17.19: + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.17.19: + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.17.19: + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.17.19: + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.17.19: + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.17.19: + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.17.19: + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.17.19: + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.17.19: + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.17.19: + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.42.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -301,6 +511,10 @@ packages: resolution: {integrity: sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg==} dev: false + /@types/minimist@1.2.2: + resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + dev: true + /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: false @@ -309,6 +523,10 @@ packages: resolution: {integrity: sha512-NpaM49IGQQAUlBhHMF82QH80J08os4ZmyF9MkpCzWAGuOHqE4gTEbhzd7L3l5LmWuZ6E0OiC1FweQ4tsiW35+g==} dev: true + /@types/normalize-package-data@2.4.1: + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + dev: true + /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: true @@ -481,6 +699,14 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + /aggregate-error@4.0.1: + resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} + engines: {node: '>=12'} + dependencies: + clean-stack: 4.2.0 + indent-string: 5.0.0 + dev: true + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -509,6 +735,10 @@ packages: color-convert: 2.0.1 dev: true + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true + /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -517,6 +747,10 @@ packages: picomatch: 2.3.1 dev: true + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: false + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: @@ -532,6 +766,16 @@ packages: engines: {node: '>=8'} dev: true + /arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + dev: true + + /arrify@3.0.0: + resolution: {integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==} + engines: {node: '>=12'} + dev: true + /astring@1.8.6: resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} hasBin: true @@ -574,11 +818,41 @@ packages: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true + /bundle-require@4.0.1(esbuild@0.17.19): + resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.17' + dependencies: + esbuild: 0.17.19 + load-tsconfig: 0.2.5 + dev: true + + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} dev: true + /camelcase-keys@7.0.2: + resolution: {integrity: sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==} + engines: {node: '>=12'} + dependencies: + camelcase: 6.3.0 + map-obj: 4.3.0 + quick-lru: 5.1.1 + type-fest: 1.4.0 + dev: true + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} dev: false @@ -631,6 +905,13 @@ packages: fsevents: 2.3.2 dev: true + /clean-stack@4.2.0: + resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} + engines: {node: '>=12'} + dependencies: + escape-string-regexp: 5.0.0 + dev: true + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -660,10 +941,48 @@ packages: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: true + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true + /cp-file@9.1.0: + resolution: {integrity: sha512-3scnzFj/94eb7y4wyXRWwvzLFaQp87yyfTnChIjlfYrVqp5lVO3E2hIJMeQIltUT0K2ZAB3An1qXcBmwGyvuwA==} + engines: {node: '>=10'} + dependencies: + graceful-fs: 4.2.11 + make-dir: 3.1.0 + nested-error-stacks: 2.1.1 + p-event: 4.2.0 + dev: true + + /cpy-cli@4.2.0: + resolution: {integrity: sha512-b04b+cbdr29CdpREPKw/itrfjO43Ty0Aj7wRM6M6LoE4GJxZJCk9Xp+Eu1IqztkKh3LxIBt1tDplENsa6KYprg==} + engines: {node: '>=12.20'} + hasBin: true + dependencies: + cpy: 9.0.1 + meow: 10.1.5 + dev: true + + /cpy@9.0.1: + resolution: {integrity: sha512-D9U0DR5FjTCN3oMTcFGktanHnAG5l020yvOCR1zKILmAyPP7I/9pl6NFgRbDcmSENtbK1sQLBz1p9HIOlroiNg==} + engines: {node: ^12.20.0 || ^14.17.0 || >=16.0.0} + dependencies: + arrify: 3.0.0 + cp-file: 9.1.0 + globby: 13.1.4 + junk: 4.0.1 + micromatch: 4.0.5 + nested-error-stacks: 2.1.1 + p-filter: 3.0.0 + p-map: 5.5.0 + dev: true + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -688,6 +1007,24 @@ packages: dependencies: ms: 2.1.2 + /decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + dev: true + + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /decamelize@5.0.1: + resolution: {integrity: sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==} + engines: {node: '>=10'} + dev: true + /decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: @@ -726,6 +1063,42 @@ packages: esutils: 2.0.3 dev: true + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 + dev: true + /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} @@ -739,7 +1112,6 @@ packages: /escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - dev: false /eslint-config-prettier@8.8.0(eslint@8.42.0): resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} @@ -902,6 +1274,21 @@ packages: engines: {node: '>=0.10.0'} dev: true + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + /extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} @@ -1002,6 +1389,15 @@ packages: dev: true optional: true + /function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1016,6 +1412,17 @@ packages: is-glob: 4.0.3 dev: true + /glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -1056,9 +1463,19 @@ packages: slash: 3.0.0 dev: true + /globby@13.1.4: + resolution: {integrity: sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 4.0.0 + dev: true + /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: false /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} @@ -1078,6 +1495,11 @@ packages: strip-bom-string: 1.0.0 dev: false + /hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + dev: true + /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -1088,6 +1510,13 @@ packages: engines: {node: '>=8'} dev: true + /has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + dev: true + /hast-util-to-estree@2.3.3: resolution: {integrity: sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==} dependencies: @@ -1114,6 +1543,18 @@ packages: resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} dev: false + /hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + dependencies: + lru-cache: 6.0.0 + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} @@ -1136,6 +1577,11 @@ packages: engines: {node: '>=0.8.19'} dev: true + /indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} + dev: true + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: @@ -1162,6 +1608,10 @@ packages: is-decimal: 2.0.1 dev: false + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} @@ -1174,6 +1624,12 @@ packages: engines: {node: '>=4'} dev: false + /is-core-module@2.12.1: + resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} + dependencies: + has: 1.0.3 + dev: true + /is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} dev: false @@ -1209,6 +1665,11 @@ packages: engines: {node: '>=8'} dev: true + /is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + dev: true + /is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -1220,10 +1681,20 @@ packages: '@types/estree': 1.0.1 dev: false + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true + /joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + dev: true + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -1242,6 +1713,10 @@ packages: argparse: 2.0.1 dev: true + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true @@ -1258,10 +1733,14 @@ packages: graceful-fs: 4.2.11 dev: false + /junk@4.0.1: + resolution: {integrity: sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==} + engines: {node: '>=12.20'} + dev: true + /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - dev: false /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} @@ -1276,6 +1755,20 @@ packages: type-check: 0.4.0 dev: true + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -1287,6 +1780,10 @@ packages: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true + /lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + dev: true + /longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} dev: false @@ -1310,6 +1807,23 @@ packages: engines: {node: 14 || >=16.14} dev: true + /make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.0 + dev: true + + /map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + dev: true + + /map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + dev: true + /markdown-extensions@1.1.1: resolution: {integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==} engines: {node: '>=0.10.0'} @@ -1505,6 +2019,28 @@ packages: '@types/mdast': 3.0.11 dev: false + /meow@10.1.5: + resolution: {integrity: sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + '@types/minimist': 1.2.2 + camelcase-keys: 7.0.2 + decamelize: 5.0.1 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 8.0.0 + redent: 4.0.0 + trim-newlines: 4.1.1 + type-fest: 1.4.0 + yargs-parser: 20.2.9 + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -1852,6 +2388,16 @@ packages: picomatch: 2.3.1 dev: true + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -1865,6 +2411,15 @@ packages: brace-expansion: 2.0.1 dev: true + /minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + dev: true + /minipass@4.2.8: resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} engines: {node: '>=8'} @@ -1883,6 +2438,14 @@ packages: /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + /natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true @@ -1891,17 +2454,50 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true + /nested-error-stacks@2.1.1: + resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} + dev: true + + /normalize-package-data@3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.12.1 + semver: 7.5.1 + validate-npm-package-license: 3.0.4 + dev: true + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: true + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: true + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: true + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + /optionator@0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} @@ -1914,6 +2510,25 @@ packages: word-wrap: 1.2.3 dev: true + /p-event@4.2.0: + resolution: {integrity: sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==} + engines: {node: '>=8'} + dependencies: + p-timeout: 3.2.0 + dev: true + + /p-filter@3.0.0: + resolution: {integrity: sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-map: 5.5.0 + dev: true + + /p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + dev: true + /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -1928,6 +2543,20 @@ packages: p-limit: 3.1.0 dev: true + /p-map@5.5.0: + resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} + engines: {node: '>=12'} + dependencies: + aggregate-error: 4.0.1 + dev: true + + /p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + dependencies: + p-finally: 1.0.0 + dev: true + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -1948,6 +2577,16 @@ packages: is-hexadecimal: 2.0.1 dev: false + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.22.5 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -1989,6 +2628,27 @@ packages: engines: {node: '>=8.6'} dev: true + /pirates@4.0.5: + resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + engines: {node: '>= 6'} + dev: true + + /postcss-load-config@3.1.4: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.1.0 + yaml: 1.10.2 + dev: true + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -2013,6 +2673,11 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true + /quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + dev: true + /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: @@ -2030,6 +2695,25 @@ packages: loose-envify: 1.4.0 dev: false + /read-pkg-up@8.0.0: + resolution: {integrity: sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==} + engines: {node: '>=12'} + dependencies: + find-up: 5.0.0 + read-pkg: 6.0.0 + type-fest: 1.4.0 + dev: true + + /read-pkg@6.0.0: + resolution: {integrity: sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==} + engines: {node: '>=12'} + dependencies: + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 3.0.3 + parse-json: 5.2.0 + type-fest: 1.4.0 + dev: true + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -2037,6 +2721,14 @@ packages: picomatch: 2.3.1 dev: true + /redent@4.0.0: + resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} + engines: {node: '>=12'} + dependencies: + indent-string: 5.0.0 + strip-indent: 4.0.0 + dev: true + /remark-gfm@3.0.1: resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} dependencies: @@ -2081,6 +2773,11 @@ packages: engines: {node: '>=4'} dev: true + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -2146,6 +2843,11 @@ packages: kind-of: 6.0.3 dev: false + /semver@6.3.0: + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + hasBin: true + dev: true + /semver@7.5.1: resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} engines: {node: '>=10'} @@ -2166,11 +2868,20 @@ packages: engines: {node: '>=8'} dev: true + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} dev: true + /slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: true + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -2193,10 +2904,39 @@ packages: engines: {node: '>= 8'} dev: false + /source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + dependencies: + whatwg-url: 7.1.0 + dev: true + /space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} dev: false + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.13 + dev: true + + /spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: true + + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.13 + dev: true + + /spdx-license-ids@3.0.13: + resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + dev: true + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: false @@ -2220,6 +2960,18 @@ packages: engines: {node: '>=0.10.0'} dev: false + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-indent@4.0.0: + resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} + engines: {node: '>=12'} + dependencies: + min-indent: 1.0.1 + dev: true + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -2231,6 +2983,20 @@ packages: inline-style-parser: 0.1.1 dev: false + /sucrase@3.32.0: + resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} + engines: {node: '>=8'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.5 + ts-interface-checker: 0.1.13 + dev: true + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -2260,6 +3026,19 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: true + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: true + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -2267,18 +3046,74 @@ packages: is-number: 7.0.0 dev: true + /tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + dependencies: + punycode: 2.3.0 + dev: true + + /tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: true + /trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} dev: false + /trim-newlines@4.1.1: + resolution: {integrity: sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==} + engines: {node: '>=12'} + dev: true + /trough@2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: false + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: true + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true + /tsup@6.7.0(typescript@4.9.5): + resolution: {integrity: sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ==} + engines: {node: '>=14.18'} + hasBin: true + peerDependencies: + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.1.0' + peerDependenciesMeta: + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + dependencies: + bundle-require: 4.0.1(esbuild@0.17.19) + cac: 6.7.14 + chokidar: 3.5.3 + debug: 4.3.4 + esbuild: 0.17.19 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 3.1.4 + resolve-from: 5.0.0 + rollup: 3.24.0 + source-map: 0.8.0-beta.0 + sucrase: 3.32.0 + tree-kill: 1.2.2 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + /tsutils@3.21.0(typescript@4.9.5): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -2301,6 +3136,11 @@ packages: engines: {node: '>=10'} dev: true + /type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + dev: true + /typescript@4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} @@ -2391,6 +3231,13 @@ packages: sade: 1.8.1 dev: false + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + dev: true + /vfile-message@3.1.4: resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} dependencies: @@ -2407,6 +3254,18 @@ packages: vfile-message: 3.1.4 dev: false + /webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + dev: true + + /whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + dev: true + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -2428,6 +3287,16 @@ packages: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: true + + /yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + dev: true + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} diff --git a/src/index.ts b/src/index.ts index e69de29..9a6deb2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -0,0 +1,34 @@ +import arg from 'arg' +import { compile } from './parts/compile.js' +import { exit } from 'process' + +const version = "v1.0.0-beta" + +const args = arg({ + "--version": Boolean, + "--css": Boolean +}) + +if (args._.length === 0){ + if (args['--version'] === undefined){ + throw new Error("You need to pass an input") + } else if (args['--version']){ + console.log(version) + exit() + } +} + +const dir = args._[0] +const outDir = (typeof args._[1] !== undefined) ? args._[1] : "./out" +const isThereCss = (args['--css'] !== undefined) ? args['--css'] : false +const cssDir = isThereCss ? (typeof args._[2] !== undefined) ? args._[2] : "./css" : undefined + + +compile({ + dir: dir, + outDir: outDir, + css: isThereCss, + cssDir: cssDir +}) + +console.log(args) \ No newline at end of file diff --git a/src/parts/compile.ts b/src/parts/compile.ts index 4c6a2e5..7143409 100644 --- a/src/parts/compile.ts +++ b/src/parts/compile.ts @@ -3,10 +3,11 @@ import { readInitialDir } from "./readDir.js"; import { z } from "zod"; import { writeHtml } from "./writeHtml.js"; -const optionsSchema = z.object({ +export const optionsSchema = z.object({ dir: z.string(), outDir: z.string(), - cssDir: z.string(), + css: z.boolean(), + cssDir: z.string().optional(), }); export async function compile(opts: z.infer) { @@ -16,9 +17,3 @@ export async function compile(opts: z.infer) { await writeHtml(file, html, opts.outDir); } } - -await compile({ - dir: process.argv[2], - outDir: process.argv[3], - cssDir: process.argv[4], -}); diff --git a/src/parts/getHtml.ts b/src/parts/getHtml.ts index e6c1fc2..98f7beb 100644 --- a/src/parts/getHtml.ts +++ b/src/parts/getHtml.ts @@ -19,16 +19,19 @@ async function createEl(body: string) { return renderToString(createElement(mdx)); } -export async function getHtml(file: string, cssPath: string) { +export async function getHtml(file: string, cssPath: string | undefined) { const read = await readFile(file); const body = matter(read.toString()).content; const title = typeof matter(read.toString()).data.title !== "undefined" ? matter(read.toString()).data.title : "Setso default title"; - const spliting = file.split("/"); - spliting[1] = cssPath.replace("./", ""); - const css = await readCss(spliting.join("/"), cssPath); + let css = "" + if (cssPath !== undefined){ + const spliting = file.split("/"); + spliting[1] = cssPath.replace("./", ""); + css = await readCss(spliting.join("/"), cssPath); + } const html = getTemplate(await createEl(body), title, css); return html; } From 12bd92cc0e136134f9afa1767dc7eded6ee154fd Mon Sep 17 00:00:00 2001 From: micziz Date: Fri, 9 Jun 2023 16:57:25 +0200 Subject: [PATCH 14/31] Change entry point and other scriptsg --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 68f0346..94ed517 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,16 @@ { "name": "setso", "license": "MIT", - "version": "0.6.0", + "version": "1.0.0-beta", "description": "A small library to compile markdown to html in a ordered format.", - "main": "./bundle/bundle.js", + "main": "./bundle/index.js", "type": "module", "bin": { - "setso": "./bundle/bundle.js" + "setso": "./bundle/index.js" }, "scripts": { "dev": "pnpm build-fast && node .", - "build": "pnpm prepare && tsc && rollup -c && rimraf build", + "build": "pnpm prepare && pnpm build-fast", "build-fast": "tsup-node src/index.ts --format esm --minify terser && cpy dist/index.js bundle --flat && rimraf dist", "go": "pnpm build && pnpm publish", "lint": "eslint src --fix", From a5eeeb08d21c1f346505966acccf9f92e9782d35 Mon Sep 17 00:00:00 2001 From: micziz Date: Fri, 9 Jun 2023 16:59:02 +0200 Subject: [PATCH 15/31] Switch off rollup --- package.json | 2 -- pnpm-lock.yaml | 13 ------------- 2 files changed, 15 deletions(-) diff --git a/package.json b/package.json index 94ed517..a595ff7 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,6 @@ "zod": "^3.21.4" }, "devDependencies": { - "@chiogen/rollup-plugin-terser": "^7.1.3", "@types/fs-extra": "^11.0.1", "@types/node": "^18.16.16", "@types/react": "^18.2.9", @@ -53,7 +52,6 @@ "eslint-config-prettier": "^8.8.0", "prettier": "^2.8.8", "rimraf": "^4.4.1", - "rollup": "^3.24.0", "sass": "^1.63.2", "terser": "^5.17.7", "tsup": "^6.7.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1f5235e..0028561 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -33,9 +33,6 @@ dependencies: version: 3.21.4 devDependencies: - '@chiogen/rollup-plugin-terser': - specifier: ^7.1.3 - version: 7.1.3 '@types/fs-extra': specifier: ^11.0.1 version: 11.0.1 @@ -69,9 +66,6 @@ devDependencies: rimraf: specifier: ^4.4.1 version: 4.4.1 - rollup: - specifier: ^3.24.0 - version: 3.24.0 sass: specifier: ^1.63.2 version: 1.63.2 @@ -108,13 +102,6 @@ packages: js-tokens: 4.0.0 dev: true - /@chiogen/rollup-plugin-terser@7.1.3: - resolution: {integrity: sha512-+AskjdQXzvmpcrvxN1FNr9xCDRcMaDMBGgbpn3EkPW6r4C80Qk4PIs4ox5GNtYjub9XEZUXJRdQg84uDPvxqaQ==} - dependencies: - '@babel/code-frame': 7.22.5 - terser: 5.17.7 - dev: true - /@esbuild/android-arm64@0.17.19: resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} engines: {node: '>=12'} From 626fd695ef476a0e84c55f0a50c11708c61428d6 Mon Sep 17 00:00:00 2001 From: micziz Date: Fri, 9 Jun 2023 16:59:47 +0200 Subject: [PATCH 16/31] Format code --- src/index.ts | 43 +++++++++++++++++++++++-------------------- src/parts/getHtml.ts | 4 ++-- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/src/index.ts b/src/index.ts index 9a6deb2..825fd5c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,34 +1,37 @@ -import arg from 'arg' -import { compile } from './parts/compile.js' -import { exit } from 'process' +import arg from "arg"; +import { compile } from "./parts/compile.js"; +import { exit } from "process"; -const version = "v1.0.0-beta" +const version = "v1.0.0-beta"; const args = arg({ "--version": Boolean, - "--css": Boolean -}) + "--css": Boolean, +}); -if (args._.length === 0){ - if (args['--version'] === undefined){ - throw new Error("You need to pass an input") - } else if (args['--version']){ - console.log(version) - exit() +if (args._.length === 0) { + if (args["--version"] === undefined) { + throw new Error("You need to pass an input"); + } else if (args["--version"]) { + console.log(version); + exit(); } } -const dir = args._[0] -const outDir = (typeof args._[1] !== undefined) ? args._[1] : "./out" -const isThereCss = (args['--css'] !== undefined) ? args['--css'] : false -const cssDir = isThereCss ? (typeof args._[2] !== undefined) ? args._[2] : "./css" : undefined - +const dir = args._[0]; +const outDir = typeof args._[1] !== undefined ? args._[1] : "./out"; +const isThereCss = args["--css"] !== undefined ? args["--css"] : false; +const cssDir = isThereCss + ? typeof args._[2] !== undefined + ? args._[2] + : "./css" + : undefined; compile({ dir: dir, outDir: outDir, css: isThereCss, - cssDir: cssDir -}) + cssDir: cssDir, +}); -console.log(args) \ No newline at end of file +console.log(args); diff --git a/src/parts/getHtml.ts b/src/parts/getHtml.ts index 98f7beb..05e0fc4 100644 --- a/src/parts/getHtml.ts +++ b/src/parts/getHtml.ts @@ -26,8 +26,8 @@ export async function getHtml(file: string, cssPath: string | undefined) { typeof matter(read.toString()).data.title !== "undefined" ? matter(read.toString()).data.title : "Setso default title"; - let css = "" - if (cssPath !== undefined){ + let css = ""; + if (cssPath !== undefined) { const spliting = file.split("/"); spliting[1] = cssPath.replace("./", ""); css = await readCss(spliting.join("/"), cssPath); From 1a9be838ba53694991136cfea267e8adc2b65143 Mon Sep 17 00:00:00 2001 From: micziz Date: Fri, 9 Jun 2023 17:07:19 +0200 Subject: [PATCH 17/31] Feature parity --- src/index.ts | 3 +++ src/parts/compile.ts | 7 ++++--- src/parts/getHtml.ts | 16 ++++++++++++++-- src/parts/readDir.ts | 5 ++++- src/parts/writeHtml.ts | 9 ++++++++- 5 files changed, 33 insertions(+), 7 deletions(-) diff --git a/src/index.ts b/src/index.ts index 825fd5c..b5a06d7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,6 +7,7 @@ const version = "v1.0.0-beta"; const args = arg({ "--version": Boolean, "--css": Boolean, + "--verbose": Boolean, }); if (args._.length === 0) { @@ -26,12 +27,14 @@ const cssDir = isThereCss ? args._[2] : "./css" : undefined; +const verbose = args["--verbose"] !== undefined ? args["--verbose"] : false; compile({ dir: dir, outDir: outDir, css: isThereCss, cssDir: cssDir, + verbose: verbose, }); console.log(args); diff --git a/src/parts/compile.ts b/src/parts/compile.ts index 7143409..1efd9d2 100644 --- a/src/parts/compile.ts +++ b/src/parts/compile.ts @@ -8,12 +8,13 @@ export const optionsSchema = z.object({ outDir: z.string(), css: z.boolean(), cssDir: z.string().optional(), + verbose: z.boolean() }); export async function compile(opts: z.infer) { - const filesToCompile = await readInitialDir(opts.dir); + const filesToCompile = await readInitialDir(opts.dir, opts.verbose); for await (const file of filesToCompile) { - const html = await getHtml(file, opts.cssDir); - await writeHtml(file, html, opts.outDir); + const html = await getHtml(file, opts.cssDir, opts.verbose); + await writeHtml(file, html, opts.outDir, opts.verbose); } } diff --git a/src/parts/getHtml.ts b/src/parts/getHtml.ts index 05e0fc4..62d920c 100644 --- a/src/parts/getHtml.ts +++ b/src/parts/getHtml.ts @@ -19,19 +19,31 @@ async function createEl(body: string) { return renderToString(createElement(mdx)); } -export async function getHtml(file: string, cssPath: string | undefined) { +export async function getHtml(file: string, cssPath: string | undefined, verbose: boolean) { + if (verbose){ + console.log("Reading Html") + } const read = await readFile(file); const body = matter(read.toString()).content; + if (verbose){ + console.log("Getting Title...") + } const title = typeof matter(read.toString()).data.title !== "undefined" ? matter(read.toString()).data.title - : "Setso default title"; + : "Setso default title"; let css = ""; if (cssPath !== undefined) { + if (verbose){ + console.log("Getting Css...") + } const spliting = file.split("/"); spliting[1] = cssPath.replace("./", ""); css = await readCss(spliting.join("/"), cssPath); } + if (verbose){ + console.log("Building Template...") + } const html = getTemplate(await createEl(body), title, css); return html; } diff --git a/src/parts/readDir.ts b/src/parts/readDir.ts index aca5f51..8ad6dab 100644 --- a/src/parts/readDir.ts +++ b/src/parts/readDir.ts @@ -1,7 +1,10 @@ import { readdir, lstat } from "fs/promises"; import { parse } from "path"; -export async function readInitialDir(dir: string) { +export async function readInitialDir(dir: string, verbose: boolean) { + if (verbose){ + console.log("Reading Files...") + } async function* readDir(directory: string): AsyncGenerator { const files = await readdir(directory); for (const file of files) { diff --git a/src/parts/writeHtml.ts b/src/parts/writeHtml.ts index 1ba6db5..de3614e 100644 --- a/src/parts/writeHtml.ts +++ b/src/parts/writeHtml.ts @@ -6,7 +6,8 @@ import { dirExists } from "dir-exists-safe"; export async function writeHtml( filename: string, html: string, - outDir: string + outDir: string, + verbose: boolean ) { const filenameNoExt = parse(filename).name; const toWriteToArray = parse(filename).dir.split("/"); @@ -15,10 +16,16 @@ export async function writeHtml( await mkdir(join(...toWriteToArray)); const toWriteTo = "./" + join(...toWriteToArray, filenameNoExt + ".html"); + if (verbose){ + console.log(`Wrting to ${toWriteTo}`) + } await writeFile(toWriteTo, html); } else { const toWriteTo = "./" + join(...toWriteToArray, filenameNoExt + ".html"); + if (verbose){ + console.log(`Wrting to ${toWriteTo}`) + } await writeFile(toWriteTo, html); } } From cba79c9fe653103a00c58e72fe39ab886e841c87 Mon Sep 17 00:00:00 2001 From: micziz Date: Fri, 9 Jun 2023 17:11:50 +0200 Subject: [PATCH 18/31] Order Everything up --- src/index.ts | 9 ++++++++- src/parts/compile.ts | 9 ++++++++- src/parts/getHtml.ts | 15 +++++++++++---- src/parts/readCss.ts | 7 ++++++- src/parts/readDir.ts | 3 +++ src/parts/writeHtml.ts | 8 ++++++-- 6 files changed, 42 insertions(+), 9 deletions(-) diff --git a/src/index.ts b/src/index.ts index b5a06d7..8efcd16 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,14 @@ -import arg from "arg"; +// Imports + +// Local Imports import { compile } from "./parts/compile.js"; + +// Node imports import { exit } from "process"; +// External Imports +import arg from "arg"; + const version = "v1.0.0-beta"; const args = arg({ diff --git a/src/parts/compile.ts b/src/parts/compile.ts index 1efd9d2..6565049 100644 --- a/src/parts/compile.ts +++ b/src/parts/compile.ts @@ -1,8 +1,15 @@ +// Imports +// Local Imports + import { getHtml } from "./getHtml.js"; import { readInitialDir } from "./readDir.js"; -import { z } from "zod"; import { writeHtml } from "./writeHtml.js"; +// External Imports + +import { z } from "zod"; + +// Declare Zod Schema for options export const optionsSchema = z.object({ dir: z.string(), outDir: z.string(), diff --git a/src/parts/getHtml.ts b/src/parts/getHtml.ts index 62d920c..96f7e75 100644 --- a/src/parts/getHtml.ts +++ b/src/parts/getHtml.ts @@ -1,12 +1,19 @@ +// Imports + +// Local Imports +import { getTemplate } from "./getTemplate.js"; +import { readCss } from "./readCss.js"; + +// Node imports import { readFile } from "fs/promises"; -import { evaluate } from "@mdx-js/mdx"; -import remarkGfm from "remark-gfm"; + +// External Imports import { createElement } from "react"; import { renderToString } from "react-dom/server"; import * as runtime from "react/jsx-runtime"; +import { evaluate } from "@mdx-js/mdx"; +import remarkGfm from "remark-gfm"; import matter from "gray-matter"; -import { getTemplate } from "./getTemplate.js"; -import { readCss } from "./readCss.js"; async function createEl(body: string) { const mdx = ( diff --git a/src/parts/readCss.ts b/src/parts/readCss.ts index aad5be9..1c18364 100644 --- a/src/parts/readCss.ts +++ b/src/parts/readCss.ts @@ -1,7 +1,12 @@ -import { fileExists } from "file-exists-safe"; +// Imports + +// Node Imports import { readFile } from "fs/promises"; import { join, parse } from "path"; +// External Imports +import { fileExists } from "file-exists-safe"; + export async function readCss(fileName: string, cssPath: string) { fileName = fileName.replace(parse(fileName).ext, ""); const pathToCheckCss = await fileExists(fileName + ".css"); diff --git a/src/parts/readDir.ts b/src/parts/readDir.ts index 8ad6dab..45d5642 100644 --- a/src/parts/readDir.ts +++ b/src/parts/readDir.ts @@ -1,3 +1,6 @@ +// Imports + +// Node Imports import { readdir, lstat } from "fs/promises"; import { parse } from "path"; diff --git a/src/parts/writeHtml.ts b/src/parts/writeHtml.ts index de3614e..597da86 100644 --- a/src/parts/writeHtml.ts +++ b/src/parts/writeHtml.ts @@ -1,6 +1,10 @@ -import { mkdir } from "fs/promises"; +// Imports + +// Node Imports +import { mkdir, writeFile } from "fs/promises"; import { join, parse } from "path"; -import { writeFile } from "fs/promises"; + +// External Imports import { dirExists } from "dir-exists-safe"; export async function writeHtml( From 36bbbb473aadc7ce686377a06a433a81945f08e4 Mon Sep 17 00:00:00 2001 From: micziz Date: Fri, 9 Jun 2023 17:14:36 +0200 Subject: [PATCH 19/31] Add not in readme --- readme.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/readme.md b/readme.md index 8524e86..f8f6583 100644 --- a/readme.md +++ b/readme.md @@ -1,3 +1,15 @@ +# NOTE + +Setso is currently beaing rebuilt in this branch. + +Here is the progres so far: + +- [x] MVP +- [x] Feature Parity +- [ ] Full Feature Parity +- [ ] Comments +- [ ] Docs + # Setso Setso, a library to automatically convert your markdown to html in an ordered fashion. From 976eb811051d8b3635df8a1792e1a4941c59289d Mon Sep 17 00:00:00 2001 From: micziz Date: Fri, 9 Jun 2023 17:29:57 +0200 Subject: [PATCH 20/31] Add return types and start tsdoc --- src/parts/compile.ts | 9 ++++++++- src/parts/getHtml.ts | 4 ++-- src/parts/getTemplate.ts | 2 +- src/parts/readCss.ts | 2 +- src/parts/readDir.ts | 10 +++++++++- src/parts/writeHtml.ts | 13 ++++++++++++- 6 files changed, 33 insertions(+), 7 deletions(-) diff --git a/src/parts/compile.ts b/src/parts/compile.ts index 6565049..3670eb9 100644 --- a/src/parts/compile.ts +++ b/src/parts/compile.ts @@ -18,7 +18,14 @@ export const optionsSchema = z.object({ verbose: z.boolean() }); -export async function compile(opts: z.infer) { +/** + * Function to compile a directory from Markdown and MDX to markdown. + * + * @param opts Options to pass to functions. Is Inferred from option Schema! + * @async + * @returns Nothing + */ +export async function compile(opts: z.infer): Promise { const filesToCompile = await readInitialDir(opts.dir, opts.verbose); for await (const file of filesToCompile) { const html = await getHtml(file, opts.cssDir, opts.verbose); diff --git a/src/parts/getHtml.ts b/src/parts/getHtml.ts index 96f7e75..00823e3 100644 --- a/src/parts/getHtml.ts +++ b/src/parts/getHtml.ts @@ -15,7 +15,7 @@ import { evaluate } from "@mdx-js/mdx"; import remarkGfm from "remark-gfm"; import matter from "gray-matter"; -async function createEl(body: string) { +async function createEl(body: string): Promise { const mdx = ( await evaluate(body, { // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -26,7 +26,7 @@ async function createEl(body: string) { return renderToString(createElement(mdx)); } -export async function getHtml(file: string, cssPath: string | undefined, verbose: boolean) { +export async function getHtml(file: string, cssPath: string | undefined, verbose: boolean): Promise { if (verbose){ console.log("Reading Html") } diff --git a/src/parts/getTemplate.ts b/src/parts/getTemplate.ts index 5188adf..05f1559 100644 --- a/src/parts/getTemplate.ts +++ b/src/parts/getTemplate.ts @@ -1,4 +1,4 @@ -export function getTemplate(body: string, title: string, css: string) { +export function getTemplate(body: string, title: string, css: string): string { return ` diff --git a/src/parts/readCss.ts b/src/parts/readCss.ts index 1c18364..8488c2c 100644 --- a/src/parts/readCss.ts +++ b/src/parts/readCss.ts @@ -7,7 +7,7 @@ import { join, parse } from "path"; // External Imports import { fileExists } from "file-exists-safe"; -export async function readCss(fileName: string, cssPath: string) { +export async function readCss(fileName: string, cssPath: string): Promise { fileName = fileName.replace(parse(fileName).ext, ""); const pathToCheckCss = await fileExists(fileName + ".css"); const pathToCheckScss = await fileExists(fileName + ".scss"); diff --git a/src/parts/readDir.ts b/src/parts/readDir.ts index 45d5642..a876fc1 100644 --- a/src/parts/readDir.ts +++ b/src/parts/readDir.ts @@ -4,7 +4,15 @@ import { readdir, lstat } from "fs/promises"; import { parse } from "path"; -export async function readInitialDir(dir: string, verbose: boolean) { +/** + * Recursivly scans a directory to chech if there are .md or .mdx extensions + * + * + * @param dir The initial directory to start scanning from + * @param verbose Wheather to Be Verbose Or Not + * @returns A Set strings containig the full paths of every file scanned that ends with .md or .mdx + */ +export async function readInitialDir(dir: string, verbose: boolean): Promise> { if (verbose){ console.log("Reading Files...") } diff --git a/src/parts/writeHtml.ts b/src/parts/writeHtml.ts index 597da86..07727e3 100644 --- a/src/parts/writeHtml.ts +++ b/src/parts/writeHtml.ts @@ -7,12 +7,23 @@ import { join, parse } from "path"; // External Imports import { dirExists } from "dir-exists-safe"; +/** + * + * Writes the html to the corresponding filename + * + * @param filename The Filename of the markdown file + * @param html The Compiled Html + * @param outDir The Directory to output to + * @param verbose If To Be verbose or not + * + * @async + */ export async function writeHtml( filename: string, html: string, outDir: string, verbose: boolean -) { +): Promise { const filenameNoExt = parse(filename).name; const toWriteToArray = parse(filename).dir.split("/"); toWriteToArray[1] = outDir.replace("./", ""); From e03abc015a819d583068446d33b9a5a0803a0e86 Mon Sep 17 00:00:00 2001 From: micziz Date: Sat, 17 Jun 2023 19:57:16 +0200 Subject: [PATCH 21/31] Start documenting everything --- docs/api/check.md | 21 --------------------- docs/api/createEl.md | 26 ++++++++++++++++++++++++++ docs/api/getConfig.md | 17 ----------------- docs/api/getHtml.md | 27 +++++++++++++++++++++++++++ docs/api/getTemplate.md | 27 +++++++++++++++++++++++++++ docs/api/handleArgs.md | 16 ---------------- src/parts/getHtml.ts | 16 ++++++++++++++++ src/parts/getTemplate.ts | 8 ++++++++ src/parts/readCss.ts | 9 +++++++++ src/parts/readDir.ts | 2 ++ src/parts/writeHtml.ts | 1 - 11 files changed, 115 insertions(+), 55 deletions(-) delete mode 100644 docs/api/check.md create mode 100644 docs/api/createEl.md delete mode 100644 docs/api/getConfig.md create mode 100644 docs/api/getHtml.md create mode 100644 docs/api/getTemplate.md delete mode 100644 docs/api/handleArgs.md diff --git a/docs/api/check.md b/docs/api/check.md deleted file mode 100644 index 282b630..0000000 --- a/docs/api/check.md +++ /dev/null @@ -1,21 +0,0 @@ -# src/utils/check.ts - -```ts -function check(dir: string): Promise; -``` - -Checks if a directory exists - -For example: - -```ts -import { check } from "./utils/check.ts"; - -if (check("./dirToCheck")) { - // Do stuff -} -``` - -@param dir — The directory to check. - -@returns — Promise: boolean diff --git a/docs/api/createEl.md b/docs/api/createEl.md new file mode 100644 index 0000000..2b73a29 --- /dev/null +++ b/docs/api/createEl.md @@ -0,0 +1,26 @@ +# createEl + +Located in src/parts/getHtml.ts + +```ts +async function createEl(body: string): Promise; +``` + +Compiles mdx to normal markdown, even if mdx is not used. + +For example: + +```ts +import { createEl } from "./parts/getHtml.ts"; + +await getHtml(/*body*/) +``` + +Parameters: + +body: The body to compile + + +Returns: + +A promise with the compiled markdown diff --git a/docs/api/getConfig.md b/docs/api/getConfig.md deleted file mode 100644 index a6a55bf..0000000 --- a/docs/api/getConfig.md +++ /dev/null @@ -1,17 +0,0 @@ -# src/utils/getConfig.ts - -```ts -function getConfig(): Promise; -``` - -Returns the config in setso.config.js - -For example: - -```ts -import { getConfig } from "./utils/getConfig.ts"; - -const config = await getConfig(); -``` - -@returns — Promise: Config | undefined diff --git a/docs/api/getHtml.md b/docs/api/getHtml.md new file mode 100644 index 0000000..ac9d763 --- /dev/null +++ b/docs/api/getHtml.md @@ -0,0 +1,27 @@ +# getHtml + +Located in src/parts/getHtml.ts + +```ts +async function getHtml(file: string, cssPath: string | undefined, verbose: boolean): Promise; +``` + +Reads a markdown file and compiles it to html. + +For example: + +```ts +import { getHtml } from "./parts/getHtml.ts"; + +await getHtml(/*file*/, /*Css path, can be undefined */, /*verbose*/) +``` + +Parameters: + +file: The file to compile +cssPath: The path to the corresponding css, if css is enebaled +verbose: Whether to be verbose or not. + +Returns: + +A promise with the compiled html diff --git a/docs/api/getTemplate.md b/docs/api/getTemplate.md new file mode 100644 index 0000000..062bcde --- /dev/null +++ b/docs/api/getTemplate.md @@ -0,0 +1,27 @@ +# getTemplate + +Located in src/parts/getTemplate.ts + +```ts +async function getTemplate(body: string, title: string, css: string): string; +``` + +Returns the full template to write to the final html file. + +For example: + +```ts +import { getTemplate } from "./parts/getTemplate.ts"; + +getTemplate(/*body*/, /*title*/, /*css*/) +``` + +Parameters: + +body: The compiled body +title: The title of that page +css: The css to inject + +Returns: + +The full template. diff --git a/docs/api/handleArgs.md b/docs/api/handleArgs.md deleted file mode 100644 index 9c8ad1d..0000000 --- a/docs/api/handleArgs.md +++ /dev/null @@ -1,16 +0,0 @@ -# src/utils/handleArgs.ts - -Handles arguments passed to setso - -For example: - -```ts -import { handleArgs } from "./utils/handleArgs.ts"; -import { arvg } from "process"; - -const args = handleArgs(argv); -``` - -@param argsArr — An array to loop over and checkout args - -@returns — Map: diff --git a/src/parts/getHtml.ts b/src/parts/getHtml.ts index 00823e3..a15a53a 100644 --- a/src/parts/getHtml.ts +++ b/src/parts/getHtml.ts @@ -15,6 +15,12 @@ import { evaluate } from "@mdx-js/mdx"; import remarkGfm from "remark-gfm"; import matter from "gray-matter"; +/** + * Takes a md or mdx component and returns the corresponding html + * + * @param body The body to transform to html + * @returns The html to write + */ async function createEl(body: string): Promise { const mdx = ( await evaluate(body, { @@ -26,6 +32,16 @@ async function createEl(body: string): Promise { return renderToString(createElement(mdx)); } +/** + * Compiles md to html, gets the css, builds it all together and returns it. + * + * @param file The md file to read and corresponding html file + * @param cssPath Where the css is located, or undefined if css is not enabled + * @param verbose Weather to be verbose! + * @returns The html to write + * + * @async + */ export async function getHtml(file: string, cssPath: string | undefined, verbose: boolean): Promise { if (verbose){ console.log("Reading Html") diff --git a/src/parts/getTemplate.ts b/src/parts/getTemplate.ts index 05f1559..42d944c 100644 --- a/src/parts/getTemplate.ts +++ b/src/parts/getTemplate.ts @@ -1,3 +1,11 @@ +/** + * Returns the full template to write to the final html file. + * + * @param body The body of the page + * @param title The title of the html page + * @param css The css to inject + * @returns The full template + */ export function getTemplate(body: string, title: string, css: string): string { return ` diff --git a/src/parts/readCss.ts b/src/parts/readCss.ts index 8488c2c..9a371d5 100644 --- a/src/parts/readCss.ts +++ b/src/parts/readCss.ts @@ -7,6 +7,15 @@ import { join, parse } from "path"; // External Imports import { fileExists } from "file-exists-safe"; +/** + * Gets the css corresponding to a filename and returns the css associated with it. + * + * @param fileName The filename to try to read the css from + * @param cssPath The directory where the css is located + * @returns The style element to insert into the template + * + * @async + */ export async function readCss(fileName: string, cssPath: string): Promise { fileName = fileName.replace(parse(fileName).ext, ""); const pathToCheckCss = await fileExists(fileName + ".css"); diff --git a/src/parts/readDir.ts b/src/parts/readDir.ts index a876fc1..b9b4d57 100644 --- a/src/parts/readDir.ts +++ b/src/parts/readDir.ts @@ -11,6 +11,8 @@ import { parse } from "path"; * @param dir The initial directory to start scanning from * @param verbose Wheather to Be Verbose Or Not * @returns A Set strings containig the full paths of every file scanned that ends with .md or .mdx + * + * @async */ export async function readInitialDir(dir: string, verbose: boolean): Promise> { if (verbose){ diff --git a/src/parts/writeHtml.ts b/src/parts/writeHtml.ts index 07727e3..952edea 100644 --- a/src/parts/writeHtml.ts +++ b/src/parts/writeHtml.ts @@ -8,7 +8,6 @@ import { join, parse } from "path"; import { dirExists } from "dir-exists-safe"; /** - * * Writes the html to the corresponding filename * * @param filename The Filename of the markdown file From eeb76d91717c89786f6f54c6cf8a9e06a3ae4d7e Mon Sep 17 00:00:00 2001 From: micziz Date: Sat, 17 Jun 2023 19:58:51 +0200 Subject: [PATCH 22/31] Fix bug of not awaiting the compile function --- src/index.ts | 2 +- src/parts/compile.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/index.ts b/src/index.ts index 8efcd16..ec3e204 100644 --- a/src/index.ts +++ b/src/index.ts @@ -36,7 +36,7 @@ const cssDir = isThereCss : undefined; const verbose = args["--verbose"] !== undefined ? args["--verbose"] : false; -compile({ +await compile({ dir: dir, outDir: outDir, css: isThereCss, diff --git a/src/parts/compile.ts b/src/parts/compile.ts index 3670eb9..25d32b2 100644 --- a/src/parts/compile.ts +++ b/src/parts/compile.ts @@ -21,7 +21,7 @@ export const optionsSchema = z.object({ /** * Function to compile a directory from Markdown and MDX to markdown. * - * @param opts Options to pass to functions. Is Inferred from option Schema! + * @param opts Options to pass to functions. Is Inferred from option Schema. * @async * @returns Nothing */ From ad974ee01a631d4317a1a286db2fa0cb85a1f64c Mon Sep 17 00:00:00 2001 From: micziz Date: Sat, 17 Jun 2023 20:01:05 +0200 Subject: [PATCH 23/31] RM workflows --- .github/workflows/check.yml | 36 ------------------------------------ 1 file changed, 36 deletions(-) delete mode 100644 .github/workflows/check.yml diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml deleted file mode 100644 index df61abc..0000000 --- a/.github/workflows/check.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Lint - -on: - pull_request: - types: [opened, reopened] - -jobs: - run-linters: - name: Run linters - runs-on: ubuntu-latest - - steps: - - name: Check out Git repository - uses: actions/checkout@v3 - - - name: Set up Node.js - uses: actions/setup-node@v3 - with: - node-version: 18 - - - name: Set Up Pnpm - uses: pnpm/action-setup@v2 - with: - version: 6.0.2 - - # ESLint and Prettier must be in `package.json` - - name: Install Node.js dependencies - run: pnpm install --frozen-lockfile - - - name: Run linters - uses: wearerequired/lint-action@v1 - with: - github_token: ${{ secrets.github_token }} - # Enable linters - eslint: true - prettier: true \ No newline at end of file From 791648185f935ee3851daf8ecc976c6e2f402426 Mon Sep 17 00:00:00 2001 From: micziz Date: Sat, 17 Jun 2023 21:57:02 +0200 Subject: [PATCH 24/31] Add config using setso.config.json or setso.config.json5 --- package.json | 2 ++ pnpm-lock.yaml | 17 +++++++++++++++++ src/index.ts | 43 +++++++++++++++++++++++++++++++++--------- src/parts/getConfig.ts | 25 ++++++++++++++++++++++++ 4 files changed, 78 insertions(+), 9 deletions(-) create mode 100644 src/parts/getConfig.ts diff --git a/package.json b/package.json index a595ff7..30dc789 100644 --- a/package.json +++ b/package.json @@ -35,9 +35,11 @@ "file-exists-safe": "^2.0.0", "fs-extra": "^11.1.1", "gray-matter": "^4.0.3", + "json5": "^2.2.3", "react": "^18.2.0", "react-dom": "^18.2.0", "remark-gfm": "^3.0.1", + "yaml": "^2.3.1", "zod": "^3.21.4" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0028561..f3b3189 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,6 +19,9 @@ dependencies: gray-matter: specifier: ^4.0.3 version: 4.0.3 + json5: + specifier: ^2.2.3 + version: 2.2.3 react: specifier: ^18.2.0 version: 18.2.0 @@ -28,6 +31,9 @@ dependencies: remark-gfm: specifier: ^3.0.1 version: 3.0.1 + yaml: + specifier: ^2.3.1 + version: 2.3.1 zod: specifier: ^3.21.4 version: 3.21.4 @@ -1712,6 +1718,12 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: false + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: @@ -3279,6 +3291,11 @@ packages: engines: {node: '>= 6'} dev: true + /yaml@2.3.1: + resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} + engines: {node: '>= 14'} + dev: false + /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} diff --git a/src/index.ts b/src/index.ts index ec3e204..069b46e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,6 +2,7 @@ // Local Imports import { compile } from "./parts/compile.js"; +import { getConfigFromFiles } from "./parts/getConfig.js"; // Node imports import { exit } from "process"; @@ -17,8 +18,14 @@ const args = arg({ "--verbose": Boolean, }); +const config = await getConfigFromFiles() + +if (config === undefined){ +console.log("Config File not found. Using args.") +} + if (args._.length === 0) { - if (args["--version"] === undefined) { + if (args["--version"] === undefined && config?.dir !== undefined) { throw new Error("You need to pass an input"); } else if (args["--version"]) { console.log(version); @@ -26,15 +33,35 @@ if (args._.length === 0) { } } -const dir = args._[0]; -const outDir = typeof args._[1] !== undefined ? args._[1] : "./out"; -const isThereCss = args["--css"] !== undefined ? args["--css"] : false; -const cssDir = isThereCss +const dir = (typeof config?.dir === "undefined") ? args._[0] : config.dir; +const outDir = typeof args._[1] !== undefined + ? args._[1] + : ( + (typeof config?.outDir === "undefined") + ? "./out" + : config.outDir + ); +const isThereCss = args["--css"] !== undefined + ? args["--css"] + : ( + (typeof config?.css !== "undefined") + ? config.css + : false + ); +const cssDir = isThereCss ? typeof args._[2] !== undefined ? args._[2] - : "./css" + : ( + (typeof config?.cssDir !== undefined) ? + config?.cssDir + : "./css" + ) : undefined; -const verbose = args["--verbose"] !== undefined ? args["--verbose"] : false; +const verbose = args["--verbose"] !== undefined + ? args["--verbose"] + : (typeof config?.verbose !== "undefined") + ? config.verbose + : false; await compile({ dir: dir, @@ -43,5 +70,3 @@ await compile({ cssDir: cssDir, verbose: verbose, }); - -console.log(args); diff --git a/src/parts/getConfig.ts b/src/parts/getConfig.ts new file mode 100644 index 0000000..98ccbfe --- /dev/null +++ b/src/parts/getConfig.ts @@ -0,0 +1,25 @@ +import json5 from 'json5' +import { parse } from 'yaml' +import { readFile } from 'fs/promises' +import { fileExists } from 'file-exists-safe' +import { optionsSchema } from './compile.js' +import { z } from 'zod' + +async function getFile() { + if (await fileExists("./setso.config.json")){ + return "./setso.config.json" + } else if (await fileExists("./setso.config.json5")){ + return "./setso.config.json5" + } else { + return undefined + } +} + +export async function getConfigFromFiles(): Promise | undefined> { + const configFile = await getFile() + if (configFile === undefined){ + return undefined; + } + const config: z.infer = await json5.parse((await readFile(configFile)).toString()) + return config; +} From 88c0b1a0bd2ee3708e505634299283ccfa4be5b9 Mon Sep 17 00:00:00 2001 From: micziz Date: Sat, 17 Jun 2023 21:57:34 +0200 Subject: [PATCH 25/31] Fix readme --- readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index f8f6583..5315a88 100644 --- a/readme.md +++ b/readme.md @@ -2,11 +2,11 @@ Setso is currently beaing rebuilt in this branch. -Here is the progres so far: +Here is the progress so far: - [x] MVP - [x] Feature Parity -- [ ] Full Feature Parity +- [x] Full Feature Parity - [ ] Comments - [ ] Docs From 585bdd3b0ec58b5c71d1d5cf19405b068a648a6d Mon Sep 17 00:00:00 2001 From: micziz Date: Sat, 17 Jun 2023 23:06:57 +0200 Subject: [PATCH 26/31] Ready for prerelease --- readme.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/readme.md b/readme.md index 5315a88..2bd5b67 100644 --- a/readme.md +++ b/readme.md @@ -12,13 +12,14 @@ Here is the progress so far: # Setso -Setso, a library to automatically convert your markdown to html in an ordered fashion. +Setso, is a powerful command line tool to automatically convert your markdown to html in an ordered fashion. -## Documentation +## Features -Documentation can be found [here](docs/guides/) - -[More info here](docs/guides/setso.config.js.md) +- Fast, some say Blazingly Fast +- Simple, only provide some simple options and Setso will handle the rest. +- Injects css automatically. +- Supports Markdown and MDX (with react only) ## Contributing @@ -26,4 +27,4 @@ Check out [contributing.md](docs/contributing.md) for more info. ## License -Licensed Under The "MIT License". More info in the [LICENSE file](LICENSE) +Licensed Under The MIT License. More info in the [LICENSE file](LICENSE) From 8adc851609a90b35217f28e51e40422d9c0c0c8d Mon Sep 17 00:00:00 2001 From: micziz Date: Sat, 17 Jun 2023 23:08:53 +0200 Subject: [PATCH 27/31] First beta release --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 30dc789..3dab592 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "setso", "license": "MIT", - "version": "1.0.0-beta", + "version": "1.0.0-beta.1", "description": "A small library to compile markdown to html in a ordered format.", "main": "./bundle/index.js", "type": "module", @@ -13,6 +13,7 @@ "build": "pnpm prepare && pnpm build-fast", "build-fast": "tsup-node src/index.ts --format esm --minify terser && cpy dist/index.js bundle --flat && rimraf dist", "go": "pnpm build && pnpm publish", + "go-beta": "pnpm build && pnpm publish --tag beta", "lint": "eslint src --fix", "check": "pnpm check-code && pnpm check-docs", "check-code": "prettier src --check", From 4c843b2250f55057bf68c2ab52959b760f68f329 Mon Sep 17 00:00:00 2001 From: micziz Date: Sat, 17 Jun 2023 23:10:06 +0200 Subject: [PATCH 28/31] Fix for beta --- docs/api/createEl.md | 3 +-- docs/api/getHtml.md | 8 +++++-- docs/api/getTemplate.md | 2 +- package.json | 1 - pnpm-lock.yaml | 12 ++++------ src/index.ts | 49 +++++++++++++++++++--------------------- src/parts/compile.ts | 8 ++++--- src/parts/getConfig.ts | 35 +++++++++++++++------------- src/parts/getHtml.ts | 34 ++++++++++++++++------------ src/parts/getTemplate.ts | 2 +- src/parts/readCss.ts | 9 +++++--- src/parts/readDir.ts | 15 +++++++----- src/parts/writeHtml.ts | 12 +++++----- 13 files changed, 100 insertions(+), 90 deletions(-) diff --git a/docs/api/createEl.md b/docs/api/createEl.md index 2b73a29..a1bde06 100644 --- a/docs/api/createEl.md +++ b/docs/api/createEl.md @@ -13,14 +13,13 @@ For example: ```ts import { createEl } from "./parts/getHtml.ts"; -await getHtml(/*body*/) +await getHtml(/*body*/); ``` Parameters: body: The body to compile - Returns: A promise with the compiled markdown diff --git a/docs/api/getHtml.md b/docs/api/getHtml.md index ac9d763..add16ed 100644 --- a/docs/api/getHtml.md +++ b/docs/api/getHtml.md @@ -3,7 +3,11 @@ Located in src/parts/getHtml.ts ```ts -async function getHtml(file: string, cssPath: string | undefined, verbose: boolean): Promise; +async function getHtml( + file: string, + cssPath: string | undefined, + verbose: boolean +): Promise; ``` Reads a markdown file and compiles it to html. @@ -20,7 +24,7 @@ Parameters: file: The file to compile cssPath: The path to the corresponding css, if css is enebaled -verbose: Whether to be verbose or not. +verbose: Whether to be verbose or not. Returns: diff --git a/docs/api/getTemplate.md b/docs/api/getTemplate.md index 062bcde..8e01192 100644 --- a/docs/api/getTemplate.md +++ b/docs/api/getTemplate.md @@ -1,4 +1,4 @@ -# getTemplate +# getTemplate Located in src/parts/getTemplate.ts diff --git a/package.json b/package.json index 3dab592..fc5f18e 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,6 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "remark-gfm": "^3.0.1", - "yaml": "^2.3.1", "zod": "^3.21.4" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f3b3189..ff7f48f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,5 +1,9 @@ lockfileVersion: '6.0' +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + dependencies: '@mdx-js/mdx': specifier: ^2.3.0 @@ -31,9 +35,6 @@ dependencies: remark-gfm: specifier: ^3.0.1 version: 3.0.1 - yaml: - specifier: ^2.3.1 - version: 2.3.1 zod: specifier: ^3.21.4 version: 3.21.4 @@ -3291,11 +3292,6 @@ packages: engines: {node: '>= 6'} dev: true - /yaml@2.3.1: - resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} - engines: {node: '>= 14'} - dev: false - /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} diff --git a/src/index.ts b/src/index.ts index 069b46e..57b454e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -18,10 +18,10 @@ const args = arg({ "--verbose": Boolean, }); -const config = await getConfigFromFiles() +const config = await getConfigFromFiles(); -if (config === undefined){ -console.log("Config File not found. Using args.") +if (config === undefined) { + console.log("Config File not found. Using args."); } if (args._.length === 0) { @@ -33,33 +33,30 @@ if (args._.length === 0) { } } -const dir = (typeof config?.dir === "undefined") ? args._[0] : config.dir; -const outDir = typeof args._[1] !== undefined - ? args._[1] - : ( - (typeof config?.outDir === "undefined") - ? "./out" - : config.outDir - ); -const isThereCss = args["--css"] !== undefined - ? args["--css"] - : ( - (typeof config?.css !== "undefined") +const dir = typeof config?.dir === "undefined" ? args._[0] : config.dir; +const outDir = + typeof args._[1] !== undefined + ? args._[1] + : typeof config?.outDir === "undefined" + ? "./out" + : config.outDir; +const isThereCss = + args["--css"] !== undefined + ? args["--css"] + : typeof config?.css !== "undefined" ? config.css - : false - ); -const cssDir = isThereCss + : false; +const cssDir = isThereCss ? typeof args._[2] !== undefined ? args._[2] - : ( - (typeof config?.cssDir !== undefined) ? - config?.cssDir - : "./css" - ) + : typeof config?.cssDir !== undefined + ? config?.cssDir + : "./css" : undefined; -const verbose = args["--verbose"] !== undefined - ? args["--verbose"] - : (typeof config?.verbose !== "undefined") +const verbose = + args["--verbose"] !== undefined + ? args["--verbose"] + : typeof config?.verbose !== "undefined" ? config.verbose : false; diff --git a/src/parts/compile.ts b/src/parts/compile.ts index 25d32b2..1a1c592 100644 --- a/src/parts/compile.ts +++ b/src/parts/compile.ts @@ -15,17 +15,19 @@ export const optionsSchema = z.object({ outDir: z.string(), css: z.boolean(), cssDir: z.string().optional(), - verbose: z.boolean() + verbose: z.boolean(), }); /** * Function to compile a directory from Markdown and MDX to markdown. - * + * * @param opts Options to pass to functions. Is Inferred from option Schema. * @async * @returns Nothing */ -export async function compile(opts: z.infer): Promise { +export async function compile( + opts: z.infer +): Promise { const filesToCompile = await readInitialDir(opts.dir, opts.verbose); for await (const file of filesToCompile) { const html = await getHtml(file, opts.cssDir, opts.verbose); diff --git a/src/parts/getConfig.ts b/src/parts/getConfig.ts index 98ccbfe..ea262ab 100644 --- a/src/parts/getConfig.ts +++ b/src/parts/getConfig.ts @@ -1,25 +1,28 @@ -import json5 from 'json5' -import { parse } from 'yaml' -import { readFile } from 'fs/promises' -import { fileExists } from 'file-exists-safe' -import { optionsSchema } from './compile.js' -import { z } from 'zod' +import json5 from "json5"; +import { readFile } from "fs/promises"; +import { fileExists } from "file-exists-safe"; +import { optionsSchema } from "./compile.js"; +import { z } from "zod"; async function getFile() { - if (await fileExists("./setso.config.json")){ - return "./setso.config.json" - } else if (await fileExists("./setso.config.json5")){ - return "./setso.config.json5" + if (await fileExists("./setso.config.json")) { + return "./setso.config.json"; + } else if (await fileExists("./setso.config.json5")) { + return "./setso.config.json5"; } else { - return undefined + return undefined; } } -export async function getConfigFromFiles(): Promise | undefined> { - const configFile = await getFile() - if (configFile === undefined){ +export async function getConfigFromFiles(): Promise< + z.infer | undefined +> { + const configFile = await getFile(); + if (configFile === undefined) { return undefined; } - const config: z.infer = await json5.parse((await readFile(configFile)).toString()) + const config: z.infer = await json5.parse( + (await readFile(configFile)).toString() + ); return config; -} +} diff --git a/src/parts/getHtml.ts b/src/parts/getHtml.ts index a15a53a..8d90d67 100644 --- a/src/parts/getHtml.ts +++ b/src/parts/getHtml.ts @@ -1,6 +1,6 @@ // Imports -// Local Imports +// Local Imports import { getTemplate } from "./getTemplate.js"; import { readCss } from "./readCss.js"; @@ -17,7 +17,7 @@ import matter from "gray-matter"; /** * Takes a md or mdx component and returns the corresponding html - * + * * @param body The body to transform to html * @returns The html to write */ @@ -33,39 +33,43 @@ async function createEl(body: string): Promise { } /** - * Compiles md to html, gets the css, builds it all together and returns it. - * + * Compiles md to html, gets the css, builds it all together and returns it. + * * @param file The md file to read and corresponding html file * @param cssPath Where the css is located, or undefined if css is not enabled * @param verbose Weather to be verbose! * @returns The html to write - * + * * @async */ -export async function getHtml(file: string, cssPath: string | undefined, verbose: boolean): Promise { - if (verbose){ - console.log("Reading Html") +export async function getHtml( + file: string, + cssPath: string | undefined, + verbose: boolean +): Promise { + if (verbose) { + console.log("Reading Html"); } const read = await readFile(file); const body = matter(read.toString()).content; - if (verbose){ - console.log("Getting Title...") + if (verbose) { + console.log("Getting Title..."); } const title = typeof matter(read.toString()).data.title !== "undefined" ? matter(read.toString()).data.title - : "Setso default title"; + : "Setso default title"; let css = ""; if (cssPath !== undefined) { - if (verbose){ - console.log("Getting Css...") + if (verbose) { + console.log("Getting Css..."); } const spliting = file.split("/"); spliting[1] = cssPath.replace("./", ""); css = await readCss(spliting.join("/"), cssPath); } - if (verbose){ - console.log("Building Template...") + if (verbose) { + console.log("Building Template..."); } const html = getTemplate(await createEl(body), title, css); return html; diff --git a/src/parts/getTemplate.ts b/src/parts/getTemplate.ts index 42d944c..ec89a35 100644 --- a/src/parts/getTemplate.ts +++ b/src/parts/getTemplate.ts @@ -1,6 +1,6 @@ /** * Returns the full template to write to the final html file. - * + * * @param body The body of the page * @param title The title of the html page * @param css The css to inject diff --git a/src/parts/readCss.ts b/src/parts/readCss.ts index 9a371d5..256d2be 100644 --- a/src/parts/readCss.ts +++ b/src/parts/readCss.ts @@ -9,14 +9,17 @@ import { fileExists } from "file-exists-safe"; /** * Gets the css corresponding to a filename and returns the css associated with it. - * + * * @param fileName The filename to try to read the css from * @param cssPath The directory where the css is located * @returns The style element to insert into the template - * + * * @async */ -export async function readCss(fileName: string, cssPath: string): Promise { +export async function readCss( + fileName: string, + cssPath: string +): Promise { fileName = fileName.replace(parse(fileName).ext, ""); const pathToCheckCss = await fileExists(fileName + ".css"); const pathToCheckScss = await fileExists(fileName + ".scss"); diff --git a/src/parts/readDir.ts b/src/parts/readDir.ts index b9b4d57..8fd4ec8 100644 --- a/src/parts/readDir.ts +++ b/src/parts/readDir.ts @@ -6,17 +6,20 @@ import { parse } from "path"; /** * Recursivly scans a directory to chech if there are .md or .mdx extensions - * - * + * + * * @param dir The initial directory to start scanning from * @param verbose Wheather to Be Verbose Or Not * @returns A Set strings containig the full paths of every file scanned that ends with .md or .mdx - * + * * @async */ -export async function readInitialDir(dir: string, verbose: boolean): Promise> { - if (verbose){ - console.log("Reading Files...") +export async function readInitialDir( + dir: string, + verbose: boolean +): Promise> { + if (verbose) { + console.log("Reading Files..."); } async function* readDir(directory: string): AsyncGenerator { const files = await readdir(directory); diff --git a/src/parts/writeHtml.ts b/src/parts/writeHtml.ts index 952edea..77cf90f 100644 --- a/src/parts/writeHtml.ts +++ b/src/parts/writeHtml.ts @@ -9,12 +9,12 @@ import { dirExists } from "dir-exists-safe"; /** * Writes the html to the corresponding filename - * + * * @param filename The Filename of the markdown file * @param html The Compiled Html * @param outDir The Directory to output to * @param verbose If To Be verbose or not - * + * * @async */ export async function writeHtml( @@ -30,15 +30,15 @@ export async function writeHtml( await mkdir(join(...toWriteToArray)); const toWriteTo = "./" + join(...toWriteToArray, filenameNoExt + ".html"); - if (verbose){ - console.log(`Wrting to ${toWriteTo}`) + if (verbose) { + console.log(`Wrting to ${toWriteTo}`); } await writeFile(toWriteTo, html); } else { const toWriteTo = "./" + join(...toWriteToArray, filenameNoExt + ".html"); - if (verbose){ - console.log(`Wrting to ${toWriteTo}`) + if (verbose) { + console.log(`Wrting to ${toWriteTo}`); } await writeFile(toWriteTo, html); } From ea7e3eb2967e264b7ddbc846fc9cb9eac4f06844 Mon Sep 17 00:00:00 2001 From: micziz Date: Sat, 17 Jun 2023 23:18:28 +0200 Subject: [PATCH 29/31] Order Everything up --- src/parts/getConfig.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/parts/getConfig.ts b/src/parts/getConfig.ts index ea262ab..75fafd9 100644 --- a/src/parts/getConfig.ts +++ b/src/parts/getConfig.ts @@ -1,10 +1,17 @@ -import json5 from "json5"; +// Imports + +// Local Imports +import { optionsSchema } from "./compile.js"; + +// Node Imports import { readFile } from "fs/promises"; + +// External imports +import json5 from "json5"; import { fileExists } from "file-exists-safe"; -import { optionsSchema } from "./compile.js"; import { z } from "zod"; -async function getFile() { +async function getFile(): Promise<"./setso.config.json" | "./setso.config.json5" | undefined> { if (await fileExists("./setso.config.json")) { return "./setso.config.json"; } else if (await fileExists("./setso.config.json5")) { From e63861a880ff94a9db53d2344725fa012d4818d3 Mon Sep 17 00:00:00 2001 From: micziz Date: Sun, 18 Jun 2023 18:49:32 +0200 Subject: [PATCH 30/31] Add ts doc comments --- src/parts/getConfig.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/parts/getConfig.ts b/src/parts/getConfig.ts index 75fafd9..e67fc4a 100644 --- a/src/parts/getConfig.ts +++ b/src/parts/getConfig.ts @@ -11,6 +11,11 @@ import json5 from "json5"; import { fileExists } from "file-exists-safe"; import { z } from "zod"; +/** + * Finds the config file to read, or else returns undefined. + * + * @returns Either setso.config.json, setso.config.json5 or undefined if there is no file + */ async function getFile(): Promise<"./setso.config.json" | "./setso.config.json5" | undefined> { if (await fileExists("./setso.config.json")) { return "./setso.config.json"; @@ -21,6 +26,10 @@ async function getFile(): Promise<"./setso.config.json" | "./setso.config.json5" } } +/** + * Reads the config file and returns the options + * @returns The option schema to have everything typed or undefined if it does not find it. + */ export async function getConfigFromFiles(): Promise< z.infer | undefined > { From 0e5723940ca47c40e26fa03e5e904d9f2618d1b8 Mon Sep 17 00:00:00 2001 From: micziz Date: Sun, 18 Jun 2023 18:49:50 +0200 Subject: [PATCH 31/31] Add ts doc comments --- src/parts/getConfig.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/parts/getConfig.ts b/src/parts/getConfig.ts index e67fc4a..7a60bc5 100644 --- a/src/parts/getConfig.ts +++ b/src/parts/getConfig.ts @@ -27,7 +27,7 @@ async function getFile(): Promise<"./setso.config.json" | "./setso.config.json5" } /** - * Reads the config file and returns the options + * Reads the config file and returns the corresponding options * @returns The option schema to have everything typed or undefined if it does not find it. */ export async function getConfigFromFiles(): Promise<