From e1d754ef79e8c04d6fe0f9031ce74baf48d3bb10 Mon Sep 17 00:00:00 2001 From: plyght Date: Fri, 22 Nov 2024 14:44:40 -0500 Subject: [PATCH 01/45] Update showcase.md (#1611) --- docs/showcase.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/showcase.md b/docs/showcase.md index 67bb755ff..bb95accab 100644 --- a/docs/showcase.md +++ b/docs/showcase.md @@ -30,5 +30,6 @@ Want to see what Quartz can do? Here are some cool community gardens: - [🥷🏻🌳🍃 Computer Science & Thinkering Garden](https://notes.yxy.ninja) - [Eledah's Crystalline](https://blog.eledah.ir/) - [🌓 Projects & Privacy - FOSS, tech, law](https://be-far.com) +- [Zen Browser Docs](https://docs.zen-browser.app) If you want to see your own on here, submit a [Pull Request adding yourself to this file](https://github.com/jackyzha0/quartz/blob/v4/docs/showcase.md)! From 7ac94e1d840b58e1400e5dd08533eed9e7418d70 Mon Sep 17 00:00:00 2001 From: Emile Bangma Date: Sun, 1 Dec 2024 03:03:20 +0100 Subject: [PATCH 02/45] fix(comments): properly check if comments is in frontmatter (#1627) --- quartz/components/Comments.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/quartz/components/Comments.tsx b/quartz/components/Comments.tsx index 5f29860c2..0bfd82d2d 100644 --- a/quartz/components/Comments.tsx +++ b/quartz/components/Comments.tsx @@ -28,7 +28,8 @@ export default ((opts: Options) => { const Comments: QuartzComponent = ({ displayClass, fileData, cfg }: QuartzComponentProps) => { // check if comments should be displayed according to frontmatter const disableComment: boolean = - !fileData.frontmatter?.comments || fileData.frontmatter?.comments === "false" + typeof fileData.frontmatter?.comments !== "undefined" && + (!fileData.frontmatter?.comments || fileData.frontmatter?.comments === "false") if (disableComment) { return <> } From 0c4281eb537d1d7675bcf8f84316a5d7ed0b3bcb Mon Sep 17 00:00:00 2001 From: Bao <6306455+baodrate@users.noreply.github.com> Date: Tue, 3 Dec 2024 00:41:55 -0600 Subject: [PATCH 03/45] fix: use time HTML element for date strings (#1622) --- quartz/components/ContentMeta.tsx | 10 ++++------ quartz/components/Date.tsx | 2 +- quartz/components/PageList.tsx | 10 +++------- quartz/components/styles/contentMeta.scss | 2 +- 4 files changed, 9 insertions(+), 15 deletions(-) diff --git a/quartz/components/ContentMeta.tsx b/quartz/components/ContentMeta.tsx index 5dfec1448..e378bccee 100644 --- a/quartz/components/ContentMeta.tsx +++ b/quartz/components/ContentMeta.tsx @@ -1,4 +1,4 @@ -import { formatDate, getDate } from "./Date" +import { Date, getDate } from "./Date" import { QuartzComponentConstructor, QuartzComponentProps } from "./types" import readingTime from "reading-time" import { classNames } from "../util/lang" @@ -30,7 +30,7 @@ export default ((opts?: Partial) => { const segments: (string | JSX.Element)[] = [] if (fileData.dates) { - segments.push(formatDate(getDate(cfg, fileData)!, cfg.locale)) + segments.push() } // Display reading time if enabled @@ -39,14 +39,12 @@ export default ((opts?: Partial) => { const displayedTime = i18n(cfg.locale).components.contentMeta.readingTime({ minutes: Math.ceil(minutes), }) - segments.push(displayedTime) + segments.push({displayedTime}) } - const segmentsElements = segments.map((segment) => {segment}) - return (

- {segmentsElements} + {segments}

) } else { diff --git a/quartz/components/Date.tsx b/quartz/components/Date.tsx index 26b59647c..0a92cc4c3 100644 --- a/quartz/components/Date.tsx +++ b/quartz/components/Date.tsx @@ -27,5 +27,5 @@ export function formatDate(d: Date, locale: ValidLocale = "en-US"): string { } export function Date({ date, locale }: Props) { - return <>{formatDate(date, locale)} + return } diff --git a/quartz/components/PageList.tsx b/quartz/components/PageList.tsx index cc0124a8f..c0538f5fa 100644 --- a/quartz/components/PageList.tsx +++ b/quartz/components/PageList.tsx @@ -46,13 +46,9 @@ export const PageList: QuartzComponent = ({ cfg, fileData, allFiles, limit, sort return (
  • -
    - {page.dates && ( -

    - -

    - )} -
    +

    + {page.dates && } +

    diff --git a/quartz/components/styles/contentMeta.scss b/quartz/components/styles/contentMeta.scss index 4d89f65d5..7874f9eba 100644 --- a/quartz/components/styles/contentMeta.scss +++ b/quartz/components/styles/contentMeta.scss @@ -3,7 +3,7 @@ color: var(--gray); &[show-comma="true"] { - > span:not(:last-child) { + > *:not(:last-child) { margin-right: 8px; &::after { From adb326c933426bb350bbde8580ef7ddc0fee59c3 Mon Sep 17 00:00:00 2001 From: Aaron Bull Schaefer Date: Mon, 2 Dec 2024 22:43:22 -0800 Subject: [PATCH 04/45] fix(style): ensure images have no background color when linked (#1623) --- quartz/styles/base.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quartz/styles/base.scss b/quartz/styles/base.scss index 34d7e40fa..512af0dd0 100644 --- a/quartz/styles/base.scss +++ b/quartz/styles/base.scss @@ -85,7 +85,7 @@ a { line-height: 1.4rem; &:has(> img) { - background-color: none; + background-color: transparent; border-radius: 0; padding: 0; } From 285c0e9768db8db79a7262cbd5aafb186ab8ca8c Mon Sep 17 00:00:00 2001 From: catcodeme <1020082805@qq.com> Date: Tue, 3 Dec 2024 14:50:50 +0800 Subject: [PATCH 05/45] docs(showcase): 8cat.life (#1617) --- docs/showcase.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/showcase.md b/docs/showcase.md index bb95accab..95e434983 100644 --- a/docs/showcase.md +++ b/docs/showcase.md @@ -31,5 +31,6 @@ Want to see what Quartz can do? Here are some cool community gardens: - [Eledah's Crystalline](https://blog.eledah.ir/) - [🌓 Projects & Privacy - FOSS, tech, law](https://be-far.com) - [Zen Browser Docs](https://docs.zen-browser.app) +- [🪴8cat life](https://8cat.life) If you want to see your own on here, submit a [Pull Request adding yourself to this file](https://github.com/jackyzha0/quartz/blob/v4/docs/showcase.md)! From 5a5ef670fee5f5f65981801a7ec9c2e563fe99ad Mon Sep 17 00:00:00 2001 From: "Francisco Gama T. R." Date: Tue, 3 Dec 2024 06:56:59 +0000 Subject: [PATCH 06/45] fix(darkmode): check for null (#1531) --- quartz/components/scripts/darkmode.inline.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/quartz/components/scripts/darkmode.inline.ts b/quartz/components/scripts/darkmode.inline.ts index 038ae0fe5..56009a39a 100644 --- a/quartz/components/scripts/darkmode.inline.ts +++ b/quartz/components/scripts/darkmode.inline.ts @@ -27,9 +27,10 @@ document.addEventListener("nav", () => { // Darkmode toggle const themeButton = document.querySelector("#darkmode") as HTMLButtonElement - themeButton.addEventListener("click", switchTheme) - window.addCleanup(() => themeButton.removeEventListener("click", switchTheme)) - + if (themeButton) { + themeButton.addEventListener("click", switchTheme) + window.addCleanup(() => themeButton.removeEventListener("click", switchTheme)) + } // Listen for changes in prefers-color-scheme const colorSchemeMediaQuery = window.matchMedia("(prefers-color-scheme: dark)") colorSchemeMediaQuery.addEventListener("change", themeChange) From 11c98f56008969430436bc58b088a91c4cbe12a4 Mon Sep 17 00:00:00 2001 From: hill Date: Tue, 3 Dec 2024 10:52:36 +0100 Subject: [PATCH 07/45] feat(i18n): add zh-TW (#1621) --- quartz/i18n/index.ts | 2 + quartz/i18n/locales/zh-TW.ts | 82 ++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 quartz/i18n/locales/zh-TW.ts diff --git a/quartz/i18n/index.ts b/quartz/i18n/index.ts index f328ada8d..97b0323b8 100644 --- a/quartz/i18n/index.ts +++ b/quartz/i18n/index.ts @@ -14,6 +14,7 @@ import uk from "./locales/uk-UA" import ru from "./locales/ru-RU" import ko from "./locales/ko-KR" import zh from "./locales/zh-CN" +import zhTw from "./locales/zh-TW" import vi from "./locales/vi-VN" import pt from "./locales/pt-BR" import hu from "./locales/hu-HU" @@ -59,6 +60,7 @@ export const TRANSLATIONS = { "ru-RU": ru, "ko-KR": ko, "zh-CN": zh, + "zh-TW": zhTw, "vi-VN": vi, "pt-BR": pt, "hu-HU": hu, diff --git a/quartz/i18n/locales/zh-TW.ts b/quartz/i18n/locales/zh-TW.ts new file mode 100644 index 000000000..f0db0bf0c --- /dev/null +++ b/quartz/i18n/locales/zh-TW.ts @@ -0,0 +1,82 @@ +import { Translation } from "./definition" + +export default { + propertyDefaults: { + title: "無題", + description: "無描述", + }, + components: { + callout: { + note: "筆記", + abstract: "摘要", + info: "提示", + todo: "待辦", + tip: "提示", + success: "成功", + question: "問題", + warning: "警告", + failure: "失敗", + danger: "危險", + bug: "錯誤", + example: "範例", + quote: "引用", + }, + backlinks: { + title: "反向連結", + noBacklinksFound: "無法找到反向連結", + }, + themeToggle: { + lightMode: "亮色模式", + darkMode: "暗色模式", + }, + explorer: { + title: "探索", + }, + footer: { + createdWith: "Created with", + }, + graph: { + title: "關係圖譜", + }, + recentNotes: { + title: "最近的筆記", + seeRemainingMore: ({ remaining }) => `查看更多 ${remaining} 篇筆記 →`, + }, + transcludes: { + transcludeOf: ({ targetSlug }) => `包含 ${targetSlug}`, + linkToOriginal: "指向原始筆記的連結", + }, + search: { + title: "搜尋", + searchBarPlaceholder: "搜尋些什麼", + }, + tableOfContents: { + title: "目錄", + }, + contentMeta: { + readingTime: ({ minutes }) => `閱讀時間約 ${minutes} 分鐘`, + }, + }, + pages: { + rss: { + recentNotes: "最近的筆記", + lastFewNotes: ({ count }) => `最近的 ${count} 條筆記`, + }, + error: { + title: "無法找到", + notFound: "私人筆記或筆記不存在。", + home: "返回首頁", + }, + folderContent: { + folder: "資料夾", + itemsUnderFolder: ({ count }) => `此資料夾下有 ${count} 條筆記。`, + }, + tagContent: { + tag: "標籤", + tagIndex: "標籤索引", + itemsUnderTag: ({ count }) => `此標籤下有 ${count} 條筆記。`, + showingFirst: ({ count }) => `顯示前 ${count} 個標籤。`, + totalTags: ({ count }) => `總共有 ${count} 個標籤。`, + }, + }, +} as const satisfies Translation From 5ccc2dcbba3bfeca2d9edc39209d43d217eb2a80 Mon Sep 17 00:00:00 2001 From: Sohum <31165513+ssmendon@users.noreply.github.com> Date: Tue, 3 Dec 2024 02:52:51 -0700 Subject: [PATCH 08/45] fix(head): update open-graph width and height protocol per ogp (#1512) Co-authored-by: Aaron Pham --- quartz/components/Head.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/quartz/components/Head.tsx b/quartz/components/Head.tsx index f4c9d490e..a8e4974d1 100644 --- a/quartz/components/Head.tsx +++ b/quartz/components/Head.tsx @@ -181,8 +181,6 @@ export default (() => { <> - - )} From 8141cb1587295b05277a5d380e8006deca6e88c6 Mon Sep 17 00:00:00 2001 From: Emile Bangma Date: Wed, 11 Dec 2024 00:43:27 +0100 Subject: [PATCH 09/45] fix(cssclasses): apply frontmatter classes uniformly between page types (#1645) --- quartz/components/pages/FolderContent.tsx | 6 +++--- quartz/components/pages/TagContent.tsx | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/quartz/components/pages/FolderContent.tsx b/quartz/components/pages/FolderContent.tsx index 7a49d494f..593073b96 100644 --- a/quartz/components/pages/FolderContent.tsx +++ b/quartz/components/pages/FolderContent.tsx @@ -71,7 +71,7 @@ export default ((opts?: Partial) => { }) const cssClasses: string[] = fileData.frontmatter?.cssclasses ?? [] - const classes = ["popover-hint", ...cssClasses].join(" ") + const classes = cssClasses.join(" ") const listProps = { ...props, sort: options.sort, @@ -84,8 +84,8 @@ export default ((opts?: Partial) => { : htmlToJsx(fileData.filePath!, tree) return ( -
    -
    {content}
    +
    +
    {content}
    {options.showFolderCount && (

    diff --git a/quartz/components/pages/TagContent.tsx b/quartz/components/pages/TagContent.tsx index e41ab4644..5b9fbe282 100644 --- a/quartz/components/pages/TagContent.tsx +++ b/quartz/components/pages/TagContent.tsx @@ -38,7 +38,7 @@ export default ((opts?: Partial) => { ? fileData.description : htmlToJsx(fileData.filePath!, tree) const cssClasses: string[] = fileData.frontmatter?.cssclasses ?? [] - const classes = ["popover-hint", ...cssClasses].join(" ") + const classes = cssClasses.join(" ") if (tag === "/") { const tags = [ ...new Set( @@ -50,8 +50,8 @@ export default ((opts?: Partial) => { tagItemMap.set(tag, allPagesWithTag(tag)) } return ( -

    -
    +
    +

    {content}

    {i18n(cfg.locale).pages.tagContent.totalTags({ count: tags.length })}

    From 367bb0e6ce89219ea94980a7ff127aa474c54b1d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 03:53:51 -0500 Subject: [PATCH 10/45] chore(deps): bump the production-dependencies group across 1 directory with 14 updates (#1655) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Aaron Pham --- package-lock.json | 423 +++++++++++++---------------- package.json | 28 +- quartz/build.ts | 6 +- quartz/plugins/transformers/ofm.ts | 8 +- 4 files changed, 214 insertions(+), 251 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1933fa5b8..524803acc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,14 +9,14 @@ "version": "4.4.0", "license": "MIT", "dependencies": { - "@clack/prompts": "^0.8.1", + "@clack/prompts": "^0.8.2", "@floating-ui/dom": "^1.6.12", - "@myriaddreamin/rehype-typst": "^0.5.0-rc7", + "@myriaddreamin/rehype-typst": "^0.5.0-rc9", "@napi-rs/simple-git": "0.1.19", "@tweenjs/tween.js": "^25.0.0", "async-mutex": "^0.5.0", "chalk": "^5.3.0", - "chokidar": "^4.0.1", + "chokidar": "^4.0.2", "cli-spinner": "^0.2.10", "d3": "^7.9.0", "esbuild-sass-plugin": "^3.3.1", @@ -24,20 +24,20 @@ "github-slugger": "^2.0.0", "globby": "^14.0.2", "gray-matter": "^4.0.3", - "hast-util-to-html": "^9.0.3", + "hast-util-to-html": "^9.0.4", "hast-util-to-jsx-runtime": "^2.3.2", "hast-util-to-string": "^3.0.1", "is-absolute-url": "^4.0.1", "js-yaml": "^4.1.0", - "lightningcss": "^1.28.1", + "lightningcss": "^1.28.2", "mdast-util-find-and-replace": "^3.0.1", "mdast-util-to-hast": "^13.2.0", "mdast-util-to-string": "^4.0.0", - "mermaid": "^11.4.0", + "mermaid": "^11.4.1", "micromorph": "^0.4.5", - "pixi.js": "^8.5.2", - "preact": "^10.24.3", - "preact-render-to-string": "^6.5.11", + "pixi.js": "^8.6.5", + "preact": "^10.25.2", + "preact-render-to-string": "^6.5.12", "pretty-bytes": "^6.1.1", "pretty-time": "^1.1.0", "reading-time": "^1.5.0", @@ -58,10 +58,10 @@ "remark-smartypants": "^3.0.2", "rfdc": "^1.4.1", "rimraf": "^6.0.1", - "satori": "^0.11.3", + "satori": "^0.12.0", "serve-handler": "^6.1.6", "sharp": "^0.33.5", - "shiki": "^1.23.1", + "shiki": "^1.24.2", "source-map-support": "^0.5.21", "to-vfile": "^8.0.0", "toml": "^3.0.0", @@ -80,15 +80,15 @@ "@types/d3": "^7.4.3", "@types/hast": "^3.0.4", "@types/js-yaml": "^4.0.9", - "@types/node": "^22.9.0", + "@types/node": "^22.10.2", "@types/pretty-time": "^1.1.5", "@types/source-map-support": "^0.5.10", "@types/ws": "^8.5.13", "@types/yargs": "^17.0.33", "esbuild": "^0.24.0", - "prettier": "^3.3.3", + "prettier": "^3.4.2", "tsx": "^4.19.2", - "typescript": "^5.6.3" + "typescript": "^5.7.2" }, "engines": { "node": "20 || >=22", @@ -255,39 +255,24 @@ } }, "node_modules/@clack/core": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.3.4.tgz", - "integrity": "sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.3.5.tgz", + "integrity": "sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ==", "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "node_modules/@clack/prompts": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-0.8.1.tgz", - "integrity": "sha512-I263nEUNbX4lPTX93trl1fkIvGrGlz6nUYkqOddF0ZmjqcxUgUlXmpUIUqfapirRKJrFddvwF+qdZgg8cSqF7g==", - "bundleDependencies": [ - "is-unicode-supported" - ], + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-0.8.2.tgz", + "integrity": "sha512-6b9Ab2UiZwJYA9iMyboYyW9yJvAO9V753ZhS+DHKEjZRKAxPPOb7MXXu84lsPFG+vZt6FRFniZ8rXi+zCIw4yQ==", "dependencies": { - "@clack/core": "0.3.4", - "is-unicode-supported": "*", + "@clack/core": "0.3.5", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, - "node_modules/@clack/prompts/node_modules/is-unicode-supported": { - "version": "1.3.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@emnapi/runtime": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", @@ -1089,12 +1074,11 @@ } }, "node_modules/@myriaddreamin/rehype-typst": { - "version": "0.5.0-rc7", - "resolved": "https://registry.npmjs.org/@myriaddreamin/rehype-typst/-/rehype-typst-0.5.0-rc7.tgz", - "integrity": "sha512-oIUmJzV8c+PZoV4TZwSupN9e06EaC2i0DpjU6NPe6y0HE7MoPOd35s6i+RjdSNPDguqBdP2MO4VaqnGahQW/ig==", - "license": "MIT", + "version": "0.5.0-rc9", + "resolved": "https://registry.npmjs.org/@myriaddreamin/rehype-typst/-/rehype-typst-0.5.0-rc9.tgz", + "integrity": "sha512-6YZ7KkoWch/5bOBUHAbHX3lpYV0KfS7Cwa6/AdU70YoQCLxU2nut9D+vNMH0iWujFU8545nMngh2D0vZRKOofA==", "dependencies": { - "@myriaddreamin/typst-ts-node-compiler": "^0.5.0-rc7", + "@myriaddreamin/typst-ts-node-compiler": "^0.5.0-rc9", "@types/hast": "^3.0.0", "@types/katex": "^0.16.0", "hast-util-from-html-isomorphic": "^2.0.0", @@ -1105,35 +1089,33 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler": { - "version": "0.5.0-rc8", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler/-/typst-ts-node-compiler-0.5.0-rc8.tgz", - "integrity": "sha512-RpMkKYyH7DDJwfX4hMhCkCbby5+rU7UMqRbCe6jmkvrW+FhW5YDxATYnRVEQLgRjbLwGDV5bECLr2/9no+Tn7A==", - "license": "Apache-2.0", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler/-/typst-ts-node-compiler-0.5.1.tgz", + "integrity": "sha512-VR/0U7GHPeynFYEtBFo2NOrG8wxMYd2KYeTOALBKu+Bvt8xSjcrdrAOI/c1QYWP1ZwLzrngHGj+4zMBBxVw5hw==", "engines": { "node": ">= 10" }, "optionalDependencies": { - "@myriaddreamin/typst-ts-node-compiler-android-arm-eabi": "0.5.0-rc8", - "@myriaddreamin/typst-ts-node-compiler-android-arm64": "0.5.0-rc8", - "@myriaddreamin/typst-ts-node-compiler-darwin-arm64": "0.5.0-rc8", - "@myriaddreamin/typst-ts-node-compiler-darwin-x64": "0.5.0-rc8", - "@myriaddreamin/typst-ts-node-compiler-linux-arm-gnueabihf": "0.5.0-rc8", - "@myriaddreamin/typst-ts-node-compiler-linux-arm64-gnu": "0.5.0-rc8", - "@myriaddreamin/typst-ts-node-compiler-linux-arm64-musl": "0.5.0-rc8", - "@myriaddreamin/typst-ts-node-compiler-linux-x64-gnu": "0.5.0-rc8", - "@myriaddreamin/typst-ts-node-compiler-linux-x64-musl": "0.5.0-rc8", - "@myriaddreamin/typst-ts-node-compiler-win32-arm64-msvc": "0.5.0-rc8", - "@myriaddreamin/typst-ts-node-compiler-win32-x64-msvc": "0.5.0-rc8" + "@myriaddreamin/typst-ts-node-compiler-android-arm-eabi": "0.5.1", + "@myriaddreamin/typst-ts-node-compiler-android-arm64": "0.5.1", + "@myriaddreamin/typst-ts-node-compiler-darwin-arm64": "0.5.1", + "@myriaddreamin/typst-ts-node-compiler-darwin-x64": "0.5.1", + "@myriaddreamin/typst-ts-node-compiler-linux-arm-gnueabihf": "0.5.1", + "@myriaddreamin/typst-ts-node-compiler-linux-arm64-gnu": "0.5.1", + "@myriaddreamin/typst-ts-node-compiler-linux-arm64-musl": "0.5.1", + "@myriaddreamin/typst-ts-node-compiler-linux-x64-gnu": "0.5.1", + "@myriaddreamin/typst-ts-node-compiler-linux-x64-musl": "0.5.1", + "@myriaddreamin/typst-ts-node-compiler-win32-arm64-msvc": "0.5.1", + "@myriaddreamin/typst-ts-node-compiler-win32-x64-msvc": "0.5.1" } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-android-arm-eabi": { - "version": "0.5.0-rc8", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-android-arm-eabi/-/typst-ts-node-compiler-android-arm-eabi-0.5.0-rc8.tgz", - "integrity": "sha512-gSd1Nw4FNGixQTRo4isntK2Utupu4yfKRMTgmB6aLn57GVf6Z6NDA4YLw0lQ8dNB4OYceX1wMXmjnoLZGiTk6Q==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-android-arm-eabi/-/typst-ts-node-compiler-android-arm-eabi-0.5.1.tgz", + "integrity": "sha512-lKGEuFshXocY5c6S/gTGtih1j3Re5Ll3yKglsGIi0NRwgkWf1Br+NAsokFwp6FB8v3IxatxGZU6nhderhGDDpA==", "cpu": [ "arm" ], - "license": "Apache-2.0", "optional": true, "os": [ "android" @@ -1143,13 +1125,12 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-android-arm64": { - "version": "0.5.0-rc8", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-android-arm64/-/typst-ts-node-compiler-android-arm64-0.5.0-rc8.tgz", - "integrity": "sha512-1eSqCcLASxbdcicxFtYoXrBz4Rm7uhhWu/0DQ8Qo7bvNkzHuRtc4KkyuCZ6NCb/WzWuR4He20ySJZJRZurpgOQ==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-android-arm64/-/typst-ts-node-compiler-android-arm64-0.5.1.tgz", + "integrity": "sha512-PuvsutqJNM/dWNd0O3jX03wGZqlLd15lxfrH2JSLApKED3HzOp4k/bG6NrMxzQsMfPT+OVLEQCmwotGxqVrFJg==", "cpu": [ "arm64" ], - "license": "Apache-2.0", "optional": true, "os": [ "android" @@ -1159,13 +1140,12 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-darwin-arm64": { - "version": "0.5.0-rc8", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-darwin-arm64/-/typst-ts-node-compiler-darwin-arm64-0.5.0-rc8.tgz", - "integrity": "sha512-KKty+9lpfzogptuQs78JaFLijucrIdUxnYrCqWR2wHTgc0rnQaqHyec0HQ0oApNDc6u59xURebglQ/nHAVa+WQ==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-darwin-arm64/-/typst-ts-node-compiler-darwin-arm64-0.5.1.tgz", + "integrity": "sha512-6zHTIEXcM73dQWzeLJ3ojGk7prf9TYvcfxyCkCX5He3BdPx0lRFLCccXzvkdnTf/bpXLKXd+OKd7re/waf3Klg==", "cpu": [ "arm64" ], - "license": "Apache-2.0", "optional": true, "os": [ "darwin" @@ -1175,13 +1155,12 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-darwin-x64": { - "version": "0.5.0-rc8", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-darwin-x64/-/typst-ts-node-compiler-darwin-x64-0.5.0-rc8.tgz", - "integrity": "sha512-e1P7GkyBV34h9eTDceZDC3qC0stDSN30R1gbZyniHOWu+qIKp0+RgQOLbkMj1Bk+vsOYGtb3zlqRJGEOCImz8w==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-darwin-x64/-/typst-ts-node-compiler-darwin-x64-0.5.1.tgz", + "integrity": "sha512-c2LmL9Dc74Y4DdCNDq+fDckTzYSpozNrjbfPn3hwwK/CbiP+/3iVD5vGKRAvwoWSOLveCdI0PlnO3XeGA+xdqQ==", "cpu": [ "x64" ], - "license": "Apache-2.0", "optional": true, "os": [ "darwin" @@ -1191,13 +1170,12 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-linux-arm-gnueabihf": { - "version": "0.5.0-rc8", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-arm-gnueabihf/-/typst-ts-node-compiler-linux-arm-gnueabihf-0.5.0-rc8.tgz", - "integrity": "sha512-HX19C6kWO8aeg+Ki4pQm2TTmYYLZEW653QwZEoCluAlX7O5HoGxCbsFLnE7v3+ag1dwBcoI2oH5czuKLI7GRvA==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-arm-gnueabihf/-/typst-ts-node-compiler-linux-arm-gnueabihf-0.5.1.tgz", + "integrity": "sha512-xBX0H66MUbpTekqa1WGDZRWQaXb9i6VqXgfjFk5ZUG8dyU2VZsmi5s7ibdburCWdOhu6LTl2B5OoaPL5YArdew==", "cpu": [ "arm" ], - "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -1207,13 +1185,12 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-linux-arm64-gnu": { - "version": "0.5.0-rc8", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-arm64-gnu/-/typst-ts-node-compiler-linux-arm64-gnu-0.5.0-rc8.tgz", - "integrity": "sha512-ElCka7rGGnB5nmY/Ei6fhS8JWNFRJDTagW1NM2feGvEazpMxDOQDWPg/bUXnUp7RS68L67gyXJSNFlHNWJM6/w==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-arm64-gnu/-/typst-ts-node-compiler-linux-arm64-gnu-0.5.1.tgz", + "integrity": "sha512-LYSOj99sQoBdmZKiPq+/Ap4HjNZC5W1wyO3FknmaIUASdtAMYp6VqLMl1uS+YjvdZ5roao51encu11XrfYPNew==", "cpu": [ "arm64" ], - "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -1223,13 +1200,12 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-linux-arm64-musl": { - "version": "0.5.0-rc8", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-arm64-musl/-/typst-ts-node-compiler-linux-arm64-musl-0.5.0-rc8.tgz", - "integrity": "sha512-RbaI/i0rVzu2fyCcUPj89Zt/kmpHqJvxS/VRtbXR6xjXBUBisheRLvmWJrDdMMLf2mS0cwRPxQHGKCOSmB6U5A==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-arm64-musl/-/typst-ts-node-compiler-linux-arm64-musl-0.5.1.tgz", + "integrity": "sha512-PFeTuei5EwKTA85kqTIt066Uc7ojGxQErRbPYJhPraRaPXXfO7FXQAmpsPdXNiSeWiC87IwPDrd4RIp7XcjlsA==", "cpu": [ "arm64" ], - "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -1239,13 +1215,12 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-linux-x64-gnu": { - "version": "0.5.0-rc8", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-x64-gnu/-/typst-ts-node-compiler-linux-x64-gnu-0.5.0-rc8.tgz", - "integrity": "sha512-Mi2TruUZ97ZP920fMdvebRVYfMBxQZXnt14f0CqCy4tmg9sI7/ymBaGhT0vIo7A01cWr1DeTtoE4qUrOzXcDyA==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-x64-gnu/-/typst-ts-node-compiler-linux-x64-gnu-0.5.1.tgz", + "integrity": "sha512-zz1XeL0hPvGOpbcgTXVKguFWALoLZ1cM8rhkE9X0+ZJWpeObjq9AirRR9vG7YYW43FthTNZ6EjYcFlAODoegbA==", "cpu": [ "x64" ], - "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -1255,13 +1230,12 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-linux-x64-musl": { - "version": "0.5.0-rc8", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-x64-musl/-/typst-ts-node-compiler-linux-x64-musl-0.5.0-rc8.tgz", - "integrity": "sha512-I/GTNDl3Pb9/TyBRPtJqXuykkZ3d07PrSxnUKo1CelpJCk6S3h1BY0vl/3OwpENWGzy0FJehzkF0F8//3XzCgg==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-x64-musl/-/typst-ts-node-compiler-linux-x64-musl-0.5.1.tgz", + "integrity": "sha512-5ox7W+9z0xgQNkDGwRIUqNL4jSdigKVcVv3iePs8Qlh8FeKTqDgNye48vvUJo/VYWk0rkz2HjW+zxfWZfIOptw==", "cpu": [ "x64" ], - "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -1271,13 +1245,12 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-win32-arm64-msvc": { - "version": "0.5.0-rc8", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-win32-arm64-msvc/-/typst-ts-node-compiler-win32-arm64-msvc-0.5.0-rc8.tgz", - "integrity": "sha512-G0c+IqUDPdUDnTKyFl1ajf47oGgV1asc3aYtl23U71RK4R0ILnyycgGjE/5E8hD0CLodq5xMV+zW+17TZ4VX0A==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-win32-arm64-msvc/-/typst-ts-node-compiler-win32-arm64-msvc-0.5.1.tgz", + "integrity": "sha512-j/W25eaSYJtNyMIRSKFwlpTcwxnwcfABWMq542gVUNwVCrJhjfto1iQ6OToG/qBpD02CJEUydetT1C2H7GFtpA==", "cpu": [ "arm64" ], - "license": "Apache-2.0", "optional": true, "os": [ "win32" @@ -1287,13 +1260,12 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-win32-x64-msvc": { - "version": "0.5.0-rc8", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-win32-x64-msvc/-/typst-ts-node-compiler-win32-x64-msvc-0.5.0-rc8.tgz", - "integrity": "sha512-qlZXCfLDUm1btpESBa4onU2ky7ALwdj369dAmgslNKyOl5JN8RYcyf9Hm7fp8WeVlxVjH2/2zJgPysAHf+SSRw==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-win32-x64-msvc/-/typst-ts-node-compiler-win32-x64-msvc-0.5.1.tgz", + "integrity": "sha512-z1DvhykbCAkJPLZw7WKFMHvnb0vT7dBaQpfa7kLvjSkX44wVP45k3T4jegP4+RAWtmzMBN5bSpjYCiMawPLBXQ==", "cpu": [ "x64" ], - "license": "Apache-2.0", "optional": true, "os": [ "win32" @@ -1584,50 +1556,50 @@ } }, "node_modules/@shikijs/core": { - "version": "1.23.1", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.23.1.tgz", - "integrity": "sha512-NuOVgwcHgVC6jBVH5V7iblziw6iQbWWHrj5IlZI3Fqu2yx9awH7OIQkXIcsHsUmY19ckwSgUMgrqExEyP5A0TA==", + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.24.2.tgz", + "integrity": "sha512-BpbNUSKIwbKrRRA+BQj0BEWSw+8kOPKDJevWeSE/xIqGX7K0xrCZQ9kK0nnEQyrzsUoka1l81ZtJ2mGaCA32HQ==", "dependencies": { - "@shikijs/engine-javascript": "1.23.1", - "@shikijs/engine-oniguruma": "1.23.1", - "@shikijs/types": "1.23.1", + "@shikijs/engine-javascript": "1.24.2", + "@shikijs/engine-oniguruma": "1.24.2", + "@shikijs/types": "1.24.2", "@shikijs/vscode-textmate": "^9.3.0", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.3" } }, "node_modules/@shikijs/engine-javascript": { - "version": "1.23.1", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.23.1.tgz", - "integrity": "sha512-i/LdEwT5k3FVu07SiApRFwRcSJs5QM9+tod5vYCPig1Ywi8GR30zcujbxGQFJHwYD7A5BUqagi8o5KS+LEVgBg==", + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.24.2.tgz", + "integrity": "sha512-EqsmYBJdLEwEiO4H+oExz34a5GhhnVp+jH9Q/XjPjmBPc6TE/x4/gD0X3i0EbkKKNqXYHHJTJUpOLRQNkEzS9Q==", "dependencies": { - "@shikijs/types": "1.23.1", + "@shikijs/types": "1.24.2", "@shikijs/vscode-textmate": "^9.3.0", - "oniguruma-to-es": "0.4.1" + "oniguruma-to-es": "0.7.0" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "1.23.1", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.23.1.tgz", - "integrity": "sha512-KQ+lgeJJ5m2ISbUZudLR1qHeH3MnSs2mjFg7bnencgs5jDVPeJ2NVDJ3N5ZHbcTsOIh0qIueyAJnwg7lg7kwXQ==", + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.2.tgz", + "integrity": "sha512-ZN6k//aDNWRJs1uKB12pturKHh7GejKugowOFGAuG7TxDRLod1Bd5JhpOikOiFqPmKjKEPtEA6mRCf7q3ulDyQ==", "dependencies": { - "@shikijs/types": "1.23.1", + "@shikijs/types": "1.24.2", "@shikijs/vscode-textmate": "^9.3.0" } }, "node_modules/@shikijs/types": { - "version": "1.23.1", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.23.1.tgz", - "integrity": "sha512-98A5hGyEhzzAgQh2dAeHKrWW4HfCMeoFER2z16p5eJ+vmPeF6lZ/elEne6/UCU551F/WqkopqRsr1l2Yu6+A0g==", + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.24.2.tgz", + "integrity": "sha512-bdeWZiDtajGLG9BudI0AHet0b6e7FbR0EsE4jpGaI0YwHm/XJunI9+3uZnzFtX65gsyJ6ngCIWUfA4NWRPnBkQ==", "dependencies": { "@shikijs/vscode-textmate": "^9.3.0", "@types/hast": "^3.0.4" } }, "node_modules/@shikijs/vscode-textmate": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.0.tgz", - "integrity": "sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==" + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.1.tgz", + "integrity": "sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==" }, "node_modules/@shuding/opentype.js": { "version": "1.4.0-beta.0", @@ -1907,15 +1879,6 @@ "@types/ms": "*" } }, - "node_modules/@types/dompurify": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz", - "integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==", - "license": "MIT", - "dependencies": { - "@types/trusted-types": "*" - } - }, "node_modules/@types/earcut": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@types/earcut/-/earcut-2.1.4.tgz", @@ -1986,12 +1949,12 @@ } }, "node_modules/@types/node": { - "version": "22.9.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", - "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", + "version": "22.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", + "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", "dev": true, "dependencies": { - "undici-types": "~6.19.8" + "undici-types": "~6.20.0" } }, "node_modules/@types/pretty-time": { @@ -2013,7 +1976,7 @@ "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "license": "MIT" + "optional": true }, "node_modules/@types/unist": { "version": "2.0.6", @@ -2333,9 +2296,9 @@ } }, "node_modules/chokidar": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", - "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.2.tgz", + "integrity": "sha512-/b57FK+bblSU+dfewfFe0rT1YjVDfOmeLQwCAuC+vwvgLkXboATqqmy+Ipux6JrF6L5joe5CBnFOw+gLWH6yKg==", "dependencies": { "readdirp": "^4.0.1" }, @@ -3178,10 +3141,12 @@ } }, "node_modules/dompurify": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz", - "integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==", - "license": "(MPL-2.0 OR Apache-2.0)" + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.3.tgz", + "integrity": "sha512-U1U5Hzc2MO0oW3DF+G9qYN0aT7atAou4AgI0XjWz061nyBPbdxkfdhfy5uMgGn6+oLFCfn44ZGbdDqCzVmlOWA==", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } }, "node_modules/earcut": { "version": "2.2.4", @@ -3822,9 +3787,9 @@ "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" }, "node_modules/hast-util-to-html": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.3.tgz", - "integrity": "sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.4.tgz", + "integrity": "sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", @@ -4365,9 +4330,9 @@ "license": "MIT" }, "node_modules/lightningcss": { - "version": "1.28.1", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.28.1.tgz", - "integrity": "sha512-KRDkHlLlNj3DWh79CDt93fPlRJh2W1AuHV0ZSZAMMuN7lqlsZTV5842idfS1urWG8q9tc17velp1gCXhY7sLnQ==", + "version": "1.28.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.28.2.tgz", + "integrity": "sha512-ePLRrbt3fgjXI5VFZOLbvkLD5ZRuxGKm+wJ3ujCqBtL3NanDHPo/5zicR5uEKAPiIjBYF99BM4K4okvMznjkVA==", "dependencies": { "detect-libc": "^1.0.3" }, @@ -4379,22 +4344,22 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-darwin-arm64": "1.28.1", - "lightningcss-darwin-x64": "1.28.1", - "lightningcss-freebsd-x64": "1.28.1", - "lightningcss-linux-arm-gnueabihf": "1.28.1", - "lightningcss-linux-arm64-gnu": "1.28.1", - "lightningcss-linux-arm64-musl": "1.28.1", - "lightningcss-linux-x64-gnu": "1.28.1", - "lightningcss-linux-x64-musl": "1.28.1", - "lightningcss-win32-arm64-msvc": "1.28.1", - "lightningcss-win32-x64-msvc": "1.28.1" + "lightningcss-darwin-arm64": "1.28.2", + "lightningcss-darwin-x64": "1.28.2", + "lightningcss-freebsd-x64": "1.28.2", + "lightningcss-linux-arm-gnueabihf": "1.28.2", + "lightningcss-linux-arm64-gnu": "1.28.2", + "lightningcss-linux-arm64-musl": "1.28.2", + "lightningcss-linux-x64-gnu": "1.28.2", + "lightningcss-linux-x64-musl": "1.28.2", + "lightningcss-win32-arm64-msvc": "1.28.2", + "lightningcss-win32-x64-msvc": "1.28.2" } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.28.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.28.1.tgz", - "integrity": "sha512-VG3vvzM0m/rguCdm76DdobNeNJnHK+jWcdkNLFWHLh9YCotRvbRIt45JxwcHlIF8TDqWStVLTdghq5NaigVCBQ==", + "version": "1.28.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.28.2.tgz", + "integrity": "sha512-/8cPSqZiusHSS+WQz0W4NuaqFjquys1x+NsdN/XOHb+idGHJSoJ7SoQTVl3DZuAgtPZwFZgRfb/vd1oi8uX6+g==", "cpu": [ "arm64" ], @@ -4411,9 +4376,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.28.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.28.1.tgz", - "integrity": "sha512-O7ORdislvKfMohFl4Iq7fxKqdJOuuxArcglVI3amuFO5DJ0wfV3Gxgi1JRo49slfr7OVzJQEHLG4muTWYM5cTQ==", + "version": "1.28.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.28.2.tgz", + "integrity": "sha512-R7sFrXlgKjvoEG8umpVt/yutjxOL0z8KWf0bfPT3cYMOW4470xu5qSHpFdIOpRWwl3FKNMUdbKtMUjYt0h2j4g==", "cpu": [ "x64" ], @@ -4430,9 +4395,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.28.1", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.28.1.tgz", - "integrity": "sha512-b7sF89B31kYYijxVcFO7l5u6UNA862YstNu+3YbLl/IQKzveL4a5cwR5cdpG+OOhErg/c2u9WCmzZoX2I5GBvw==", + "version": "1.28.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.28.2.tgz", + "integrity": "sha512-l2qrCT+x7crAY+lMIxtgvV10R8VurzHAoUZJaVFSlHrN8kRLTvEg9ObojIDIexqWJQvJcVVV3vfzsEynpiuvgA==", "cpu": [ "x64" ], @@ -4449,9 +4414,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.28.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.28.1.tgz", - "integrity": "sha512-p61kXwvhUDLLzkWHjzSFfUBW/F0iy3jr3CWi3k8SKULtJEsJXTI9DqRm9EixxMSe2AMBQBt4auTYiQL4B1N51A==", + "version": "1.28.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.28.2.tgz", + "integrity": "sha512-DKMzpICBEKnL53X14rF7hFDu8KKALUJtcKdFUCW5YOlGSiwRSgVoRjM97wUm/E0NMPkzrTi/rxfvt7ruNK8meg==", "cpu": [ "arm" ], @@ -4468,9 +4433,9 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.28.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.28.1.tgz", - "integrity": "sha512-iO+fN9hOMmzfwqcG2/BgUtMKD48H2JO/SXU44fyIwpY2veb65QF5xiRrQ9l1FwIxbGK3231KBYCtAqv+xf+NsQ==", + "version": "1.28.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.28.2.tgz", + "integrity": "sha512-nhfjYkfymWZSxdtTNMWyhFk2ImUm0X7NAgJWFwnsYPOfmtWQEapzG/DXZTfEfMjSzERNUNJoQjPAbdqgB+sjiw==", "cpu": [ "arm64" ], @@ -4487,9 +4452,9 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.28.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.28.1.tgz", - "integrity": "sha512-dnMHeXEmCUzHHZjaDpQBYuBKcN9nPC3nPFKl70bcj5Bkn5EmkcgEqm5p035LKOgvAwk1XwLpQCML6pXmCwz0NQ==", + "version": "1.28.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.28.2.tgz", + "integrity": "sha512-1SPG1ZTNnphWvAv8RVOymlZ8BDtAg69Hbo7n4QxARvkFVCJAt0cgjAw1Fox0WEhf4PwnyoOBaVH0Z5YNgzt4dA==", "cpu": [ "arm64" ], @@ -4506,9 +4471,9 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.28.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.28.1.tgz", - "integrity": "sha512-7vWDISaMUn+oo2TwRdf2hl/BLdPxvywv9JKEqNZB/0K7bXwV4XE9wN/C2sAp1gGuh6QBA8lpjF4JIPt3HNlCHA==", + "version": "1.28.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.28.2.tgz", + "integrity": "sha512-ZhQy0FcO//INWUdo/iEdbefntTdpPVQ0XJwwtdbBuMQe+uxqZoytm9M+iqR9O5noWFaxK+nbS2iR/I80Q2Ofpg==", "cpu": [ "x64" ], @@ -4525,9 +4490,9 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.28.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.28.1.tgz", - "integrity": "sha512-IHCu9tVGP+x5BCpA2rF3D04DBokcBza/a8AuHQU+1AiMKubuMegPwcL7RatBgK4ztFHeYnnD5NdhwhRfYMAtNA==", + "version": "1.28.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.28.2.tgz", + "integrity": "sha512-alb/j1NMrgQmSFyzTbN1/pvMPM+gdDw7YBuQ5VSgcFDypN3Ah0BzC2dTZbzwzaMdUVDszX6zH5MzjfVN1oGuww==", "cpu": [ "x64" ], @@ -4544,9 +4509,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.28.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.28.1.tgz", - "integrity": "sha512-Erm72kHmMg/3h350PTseskz+eEGBM17Fuu79WW2Qqt0BfWSF1jHHc12lkJCWMYl5jcBHPs5yZdgNHtJ7IJS3Uw==", + "version": "1.28.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.28.2.tgz", + "integrity": "sha512-WnwcjcBeAt0jGdjlgbT9ANf30pF0C/QMb1XnLnH272DQU8QXh+kmpi24R55wmWBwaTtNAETZ+m35ohyeMiNt+g==", "cpu": [ "arm64" ], @@ -4563,9 +4528,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.28.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.28.1.tgz", - "integrity": "sha512-ZPQtvx+uQBzrSdHH8p4H3M9Alue+x369TPZAA3b4K3d92FPhpZCuBG04+HQzspam9sVeID9mI6f3VRAs2ezaEA==", + "version": "1.28.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.28.2.tgz", + "integrity": "sha512-3piBifyT3avz22o6mDKywQC/OisH2yDK+caHWkiMsF82i3m5wDBadyCjlCQ5VNgzYkxrWZgiaxHDdd5uxsi0/A==", "cpu": [ "x64" ], @@ -5040,16 +5005,14 @@ } }, "node_modules/mermaid": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.4.0.tgz", - "integrity": "sha512-mxCfEYvADJqOiHfGpJXLs4/fAjHz448rH0pfY5fAoxiz70rQiDSzUUy4dNET2T08i46IVpjohPd6WWbzmRHiPA==", - "license": "MIT", + "version": "11.4.1", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.4.1.tgz", + "integrity": "sha512-Mb01JT/x6CKDWaxigwfZYuYmDZ6xtrNwNlidKZwkSrDaY9n90tdrJTV5Umk+wP1fZscGptmKFXHsXMDEVZ+Q6A==", "dependencies": { "@braintree/sanitize-url": "^7.0.1", "@iconify/utils": "^2.1.32", "@mermaid-js/parser": "^0.3.0", "@types/d3": "^7.4.3", - "@types/dompurify": "^3.0.5", "cytoscape": "^3.29.2", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-fcose": "^2.2.0", @@ -5057,7 +5020,7 @@ "d3-sankey": "^0.12.3", "dagre-d3-es": "7.0.11", "dayjs": "^1.11.10", - "dompurify": "^3.0.11 <3.1.7", + "dompurify": "^3.2.1", "katex": "^0.16.9", "khroma": "^2.1.0", "lodash-es": "^4.17.21", @@ -5778,13 +5741,13 @@ } }, "node_modules/oniguruma-to-es": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-0.4.1.tgz", - "integrity": "sha512-rNcEohFz095QKGRovP/yqPIKc+nP+Sjs4YTHMv33nMePGKrq/r2eu9Yh4646M5XluGJsUnmwoXuiXE69KDs+fQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-0.7.0.tgz", + "integrity": "sha512-HRaRh09cE0gRS3+wi2zxekB+I5L8C/gN60S+vb11eADHUaB/q4u8wGGOX3GvwvitG8ixaeycZfeoyruKQzUgNg==", "dependencies": { "emoji-regex-xs": "^1.0.0", - "regex": "^5.0.0", - "regex-recursion": "^4.2.1" + "regex": "^5.0.2", + "regex-recursion": "^4.3.0" } }, "node_modules/package-json-from-dist": { @@ -5955,9 +5918,9 @@ } }, "node_modules/pixi.js": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-8.5.2.tgz", - "integrity": "sha512-TOt9g8ifOj4R9DN9ST1M8t2nvnuhr5oWL5YW9ywFLbnOVgFMDcEz+Xek5Mo8Xr64D+QU3qre3IFgreBlsHxTNw==", + "version": "8.6.5", + "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-8.6.5.tgz", + "integrity": "sha512-53QeyNbvbojFvCoKT7CgLE/O+6Fuf4KHRjOciwFpRKx5zhyoD7/WR1SYJ75wfo523m5QtJw+tn86n18zsroGaw==", "dependencies": { "@pixi/colord": "^2.9.6", "@types/css-font-loading-module": "^0.0.12", @@ -6004,26 +5967,26 @@ "license": "MIT" }, "node_modules/preact": { - "version": "10.24.3", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.24.3.tgz", - "integrity": "sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA==", + "version": "10.25.2", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.25.2.tgz", + "integrity": "sha512-GEts1EH3oMnqdOIeXhlbBSddZ9nrINd070WBOiPO2ous1orrKGUM4SMDbwyjSWD1iMS2dBvaDjAa5qUhz3TXqw==", "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" } }, "node_modules/preact-render-to-string": { - "version": "6.5.11", - "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-6.5.11.tgz", - "integrity": "sha512-ubnauqoGczeGISiOh6RjX0/cdaF8v/oDXIjO85XALCQjwQP+SB4RDXXtvZ6yTYSjG+PC1QRP2AhPgCEsM2EvUw==", + "version": "6.5.12", + "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-6.5.12.tgz", + "integrity": "sha512-FpU7/cRipZo4diSWQq7gZWVp+Px76CtVduJZNvQwVzynDsAIxKteMrjCCGPbM2oEasReoDffaeMCMlaur9ohIg==", "peerDependencies": { "preact": ">=10" } }, "node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -6126,9 +6089,9 @@ } }, "node_modules/regex-recursion": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-4.2.1.tgz", - "integrity": "sha512-QHNZyZAeKdndD1G3bKAbBEKOSSK4KOHQrAJ01N1LJeb0SoH4DJIeFhp0uUpETgONifS4+P3sOgoA1dhzgrQvhA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-4.3.0.tgz", + "integrity": "sha512-5LcLnizwjcQ2ALfOj95MjcatxyqF5RPySx9yT+PaXu3Gox2vyAtLDjHB8NTJLtMGkvyau6nI3CfpwFCjPUIs/A==", "dependencies": { "regex-utilities": "^2.3.0" } @@ -6994,9 +6957,9 @@ } }, "node_modules/satori": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/satori/-/satori-0.11.3.tgz", - "integrity": "sha512-Wg7sls0iYAEETzi9YYcY16QVIqXjZT06XjkwondC5CGhw1mhmgKBCub8cCmkxdl/naXXQD+m29CFgn8pwtYCnA==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/satori/-/satori-0.12.0.tgz", + "integrity": "sha512-e0e+qQyeFwEszujN7SpWpRtZgww7Nh8lSO3bUn2spHZ5JpqEl3zJ3P14/JlWruxEwdgREs35ZnavrPrWaRVFDg==", "dependencies": { "@shuding/opentype.js": "1.4.0-beta.0", "css-background-parser": "^0.1.0", @@ -7157,14 +7120,14 @@ } }, "node_modules/shiki": { - "version": "1.23.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.23.1.tgz", - "integrity": "sha512-8kxV9TH4pXgdKGxNOkrSMydn1Xf6It8lsle0fiqxf7a1149K1WGtdOu3Zb91T5r1JpvRPxqxU3C2XdZZXQnrig==", + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.24.2.tgz", + "integrity": "sha512-TR1fi6mkRrzW+SKT5G6uKuc32Dj2EEa7Kj0k8kGqiBINb+C1TiflVOiT9ta6GqOJtC4fraxO5SLUaKBcSY38Fg==", "dependencies": { - "@shikijs/core": "1.23.1", - "@shikijs/engine-javascript": "1.23.1", - "@shikijs/engine-oniguruma": "1.23.1", - "@shikijs/types": "1.23.1", + "@shikijs/core": "1.24.2", + "@shikijs/engine-javascript": "1.24.2", + "@shikijs/engine-oniguruma": "1.24.2", + "@shikijs/types": "1.24.2", "@shikijs/vscode-textmate": "^9.3.0", "@types/hast": "^3.0.4" } @@ -7977,9 +7940,9 @@ } }, "node_modules/typescript": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -7996,9 +7959,9 @@ "license": "MIT" }, "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "dev": true }, "node_modules/unicode-trie": { diff --git a/package.json b/package.json index 11c1c91ea..dfda33bf1 100644 --- a/package.json +++ b/package.json @@ -35,14 +35,14 @@ "quartz": "./quartz/bootstrap-cli.mjs" }, "dependencies": { - "@clack/prompts": "^0.8.1", + "@clack/prompts": "^0.8.2", "@floating-ui/dom": "^1.6.12", - "@myriaddreamin/rehype-typst": "^0.5.0-rc7", + "@myriaddreamin/rehype-typst": "^0.5.0-rc9", "@napi-rs/simple-git": "0.1.19", "@tweenjs/tween.js": "^25.0.0", "async-mutex": "^0.5.0", "chalk": "^5.3.0", - "chokidar": "^4.0.1", + "chokidar": "^4.0.2", "cli-spinner": "^0.2.10", "d3": "^7.9.0", "esbuild-sass-plugin": "^3.3.1", @@ -50,20 +50,20 @@ "github-slugger": "^2.0.0", "globby": "^14.0.2", "gray-matter": "^4.0.3", - "hast-util-to-html": "^9.0.3", + "hast-util-to-html": "^9.0.4", "hast-util-to-jsx-runtime": "^2.3.2", "hast-util-to-string": "^3.0.1", "is-absolute-url": "^4.0.1", "js-yaml": "^4.1.0", - "lightningcss": "^1.28.1", + "lightningcss": "^1.28.2", "mdast-util-find-and-replace": "^3.0.1", "mdast-util-to-hast": "^13.2.0", "mdast-util-to-string": "^4.0.0", - "mermaid": "^11.4.0", + "mermaid": "^11.4.1", "micromorph": "^0.4.5", - "pixi.js": "^8.5.2", - "preact": "^10.24.3", - "preact-render-to-string": "^6.5.11", + "pixi.js": "^8.6.5", + "preact": "^10.25.2", + "preact-render-to-string": "^6.5.12", "pretty-bytes": "^6.1.1", "pretty-time": "^1.1.0", "reading-time": "^1.5.0", @@ -84,10 +84,10 @@ "remark-smartypants": "^3.0.2", "rfdc": "^1.4.1", "rimraf": "^6.0.1", - "satori": "^0.11.3", + "satori": "^0.12.0", "serve-handler": "^6.1.6", "sharp": "^0.33.5", - "shiki": "^1.23.1", + "shiki": "^1.24.2", "source-map-support": "^0.5.21", "to-vfile": "^8.0.0", "toml": "^3.0.0", @@ -103,14 +103,14 @@ "@types/d3": "^7.4.3", "@types/hast": "^3.0.4", "@types/js-yaml": "^4.0.9", - "@types/node": "^22.9.0", + "@types/node": "^22.10.2", "@types/pretty-time": "^1.1.5", "@types/source-map-support": "^0.5.10", "@types/ws": "^8.5.13", "@types/yargs": "^17.0.33", "esbuild": "^0.24.0", - "prettier": "^3.3.3", + "prettier": "^3.4.2", "tsx": "^4.19.2", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/quartz/build.ts b/quartz/build.ts index 67ec0da4d..64c462b14 100644 --- a/quartz/build.ts +++ b/quartz/build.ts @@ -139,9 +139,9 @@ async function startServing( const buildFromEntry = argv.fastRebuild ? partialRebuildFromEntrypoint : rebuildFromEntrypoint watcher - .on("add", (fp) => buildFromEntry(fp, "add", clientRefresh, buildData)) - .on("change", (fp) => buildFromEntry(fp, "change", clientRefresh, buildData)) - .on("unlink", (fp) => buildFromEntry(fp, "delete", clientRefresh, buildData)) + .on("add", (fp) => buildFromEntry(fp as string, "add", clientRefresh, buildData)) + .on("change", (fp) => buildFromEntry(fp as string, "change", clientRefresh, buildData)) + .on("unlink", (fp) => buildFromEntry(fp as string, "delete", clientRefresh, buildData)) return async () => { await watcher.close() diff --git a/quartz/plugins/transformers/ofm.ts b/quartz/plugins/transformers/ofm.ts index 624308ca4..94cc7b6ea 100644 --- a/quartz/plugins/transformers/ofm.ts +++ b/quartz/plugins/transformers/ofm.ts @@ -156,7 +156,7 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin> src = src.toString() } - src = src.replace(commentRegex, "") + src = (src as string).replace(commentRegex, "") } // pre-transform blockquotes @@ -165,7 +165,7 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin> src = src.toString() } - src = src.replace(calloutLineRegex, (value) => { + src = (src as string).replace(calloutLineRegex, (value) => { // force newline after title of callout return value + "\n> " }) @@ -178,7 +178,7 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin> } // replace all wikilinks inside a table first - src = src.replace(tableRegex, (value) => { + src = (src as string).replace(tableRegex, (value) => { // escape all aliases and headers in wikilinks inside a table return value.replace(tableWikilinkRegex, (_value, raw) => { // const [raw]: (string | undefined)[] = capture @@ -192,7 +192,7 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin> }) // replace all other wikilinks - src = src.replace(wikilinkRegex, (value, ...capture) => { + src = (src as string).replace(wikilinkRegex, (value, ...capture) => { const [rawFp, rawHeader, rawAlias]: (string | undefined)[] = capture const [fp, anchor] = splitAnchor(`${rawFp ?? ""}${rawHeader ?? ""}`) From ff9e60a7fce0f642dfb8a1ee0042f0d3da848411 Mon Sep 17 00:00:00 2001 From: Emile Bangma Date: Tue, 17 Dec 2024 19:07:00 +0100 Subject: [PATCH 11/45] fix(search): restore mobile search view (#1576) --- quartz/components/styles/search.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quartz/components/styles/search.scss b/quartz/components/styles/search.scss index 080178fbe..fab2c1354 100644 --- a/quartz/components/styles/search.scss +++ b/quartz/components/styles/search.scss @@ -106,7 +106,7 @@ flex: 0 0 min(30%, 450px); } - @media all and not ($tablet) { + @media all and not ($mobile) { &[data-preview] { & .result-card > p.preview { display: none; @@ -132,7 +132,7 @@ border-radius: 5px; } - @media all and ($tablet) { + @media all and ($mobile) { & > #preview-container { display: none !important; } From 965f9e123ca8f6bd5342bf9fe8daaa3e3a58ee2e Mon Sep 17 00:00:00 2001 From: Aaron Pham Date: Mon, 23 Dec 2024 15:00:26 -0500 Subject: [PATCH 12/45] chore(frontmatter): dealias created/modified/updated time (#1664) --- quartz/plugins/transformers/frontmatter.ts | 15 +++++++++++++++ quartz/plugins/transformers/lastmod.ts | 8 +++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/quartz/plugins/transformers/frontmatter.ts b/quartz/plugins/transformers/frontmatter.ts index 417b21853..e00c700e0 100644 --- a/quartz/plugins/transformers/frontmatter.ts +++ b/quartz/plugins/transformers/frontmatter.ts @@ -73,6 +73,18 @@ export const FrontMatter: QuartzTransformerPlugin> = (userOpts) const socialImage = coalesceAliases(data, ["socialImage", "image", "cover"]) + const created = coalesceAliases(data, ["created", "date"]) + if (created) data.created = created + const modified = coalesceAliases(data, [ + "modified", + "lastmod", + "updated", + "last-modified", + ]) + if (modified) data.modified = modified + const published = coalesceAliases(data, ["published", "publishDate", "date"]) + if (published) data.published = published + if (socialImage) data.socialImage = socialImage // fill in frontmatter @@ -91,6 +103,9 @@ declare module "vfile" { } & Partial<{ tags: string[] aliases: string[] + modified: string + created: string + published: string description: string publish: boolean | string draft: boolean | string diff --git a/quartz/plugins/transformers/lastmod.ts b/quartz/plugins/transformers/lastmod.ts index fe8c01bcf..fd5769263 100644 --- a/quartz/plugins/transformers/lastmod.ts +++ b/quartz/plugins/transformers/lastmod.ts @@ -48,11 +48,9 @@ export const CreatedModifiedDate: QuartzTransformerPlugin> = (u created ||= st.birthtimeMs modified ||= st.mtimeMs } else if (source === "frontmatter" && file.data.frontmatter) { - created ||= file.data.frontmatter.date as MaybeDate - modified ||= file.data.frontmatter.lastmod as MaybeDate - modified ||= file.data.frontmatter.updated as MaybeDate - modified ||= file.data.frontmatter["last-modified"] as MaybeDate - published ||= file.data.frontmatter.publishDate as MaybeDate + created ||= file.data.frontmatter.created as MaybeDate + modified ||= file.data.frontmatter.modified as MaybeDate + published ||= file.data.frontmatter.published as MaybeDate } else if (source === "git") { if (!repo) { // Get a reference to the main git repo. From a582505dafceafb323784e966edcba5cbee636cf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2024 16:35:08 -0500 Subject: [PATCH 13/45] chore(deps): bump the production-dependencies group with 7 updates (#1667) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 342 ++++++++++++++++++++++++---------------------- package.json | 14 +- 2 files changed, 186 insertions(+), 170 deletions(-) diff --git a/package-lock.json b/package-lock.json index 524803acc..03f757d66 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,14 +9,14 @@ "version": "4.4.0", "license": "MIT", "dependencies": { - "@clack/prompts": "^0.8.2", + "@clack/prompts": "^0.9.0", "@floating-ui/dom": "^1.6.12", "@myriaddreamin/rehype-typst": "^0.5.0-rc9", "@napi-rs/simple-git": "0.1.19", "@tweenjs/tween.js": "^25.0.0", "async-mutex": "^0.5.0", - "chalk": "^5.3.0", - "chokidar": "^4.0.2", + "chalk": "^5.4.1", + "chokidar": "^4.0.3", "cli-spinner": "^0.2.10", "d3": "^7.9.0", "esbuild-sass-plugin": "^3.3.1", @@ -35,8 +35,8 @@ "mdast-util-to-string": "^4.0.0", "mermaid": "^11.4.1", "micromorph": "^0.4.5", - "pixi.js": "^8.6.5", - "preact": "^10.25.2", + "pixi.js": "^8.6.6", + "preact": "^10.25.3", "preact-render-to-string": "^6.5.12", "pretty-bytes": "^6.1.1", "pretty-time": "^1.1.0", @@ -61,7 +61,7 @@ "satori": "^0.12.0", "serve-handler": "^6.1.6", "sharp": "^0.33.5", - "shiki": "^1.24.2", + "shiki": "^1.24.4", "source-map-support": "^0.5.21", "to-vfile": "^8.0.0", "toml": "^3.0.0", @@ -85,7 +85,7 @@ "@types/source-map-support": "^0.5.10", "@types/ws": "^8.5.13", "@types/yargs": "^17.0.33", - "esbuild": "^0.24.0", + "esbuild": "^0.24.2", "prettier": "^3.4.2", "tsx": "^4.19.2", "typescript": "^5.7.2" @@ -255,20 +255,20 @@ } }, "node_modules/@clack/core": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.3.5.tgz", - "integrity": "sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.4.0.tgz", + "integrity": "sha512-YJCYBsyJfNDaTbvDUVSJ3SgSuPrcujarRgkJ5NLjexDZKvaOiVVJvAQYx8lIgG0qRT8ff0fPgqyBCVivanIZ+A==", "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "node_modules/@clack/prompts": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-0.8.2.tgz", - "integrity": "sha512-6b9Ab2UiZwJYA9iMyboYyW9yJvAO9V753ZhS+DHKEjZRKAxPPOb7MXXu84lsPFG+vZt6FRFniZ8rXi+zCIw4yQ==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-0.9.0.tgz", + "integrity": "sha512-nGsytiExgUr4FL0pR/LeqxA28nz3E0cW7eLTSh3Iod9TGrbBt8Y7BHbV3mmkNC4G0evdYyQ3ZsbiBkk7ektArA==", "dependencies": { - "@clack/core": "0.3.5", + "@clack/core": "0.4.0", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } @@ -284,9 +284,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", - "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", + "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", "cpu": [ "ppc64" ], @@ -299,9 +299,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", - "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", + "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", "cpu": [ "arm" ], @@ -314,9 +314,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", - "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", + "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", "cpu": [ "arm64" ], @@ -329,9 +329,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", - "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", + "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", "cpu": [ "x64" ], @@ -344,9 +344,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", - "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", + "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", "cpu": [ "arm64" ], @@ -359,9 +359,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", - "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", + "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", "cpu": [ "x64" ], @@ -374,9 +374,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", - "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", + "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", "cpu": [ "arm64" ], @@ -389,9 +389,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", - "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", + "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", "cpu": [ "x64" ], @@ -404,9 +404,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", - "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", + "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", "cpu": [ "arm" ], @@ -419,9 +419,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", - "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", + "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", "cpu": [ "arm64" ], @@ -434,9 +434,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", - "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", + "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", "cpu": [ "ia32" ], @@ -449,9 +449,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", - "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", + "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", "cpu": [ "loong64" ], @@ -464,9 +464,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", - "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", + "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", "cpu": [ "mips64el" ], @@ -479,9 +479,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", - "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", + "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", "cpu": [ "ppc64" ], @@ -494,9 +494,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", - "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", + "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", "cpu": [ "riscv64" ], @@ -509,9 +509,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", - "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", + "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", "cpu": [ "s390x" ], @@ -524,9 +524,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", - "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", + "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", "cpu": [ "x64" ], @@ -538,10 +538,25 @@ "node": ">=18" } }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", + "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", - "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", + "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", "cpu": [ "x64" ], @@ -570,9 +585,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", - "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", + "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", "cpu": [ "x64" ], @@ -585,9 +600,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", - "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", + "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", "cpu": [ "x64" ], @@ -600,9 +615,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", - "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", + "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", "cpu": [ "arm64" ], @@ -615,9 +630,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", - "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", + "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", "cpu": [ "ia32" ], @@ -630,9 +645,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", - "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", + "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", "cpu": [ "x64" ], @@ -1556,43 +1571,43 @@ } }, "node_modules/@shikijs/core": { - "version": "1.24.2", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.24.2.tgz", - "integrity": "sha512-BpbNUSKIwbKrRRA+BQj0BEWSw+8kOPKDJevWeSE/xIqGX7K0xrCZQ9kK0nnEQyrzsUoka1l81ZtJ2mGaCA32HQ==", + "version": "1.24.4", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.24.4.tgz", + "integrity": "sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==", "dependencies": { - "@shikijs/engine-javascript": "1.24.2", - "@shikijs/engine-oniguruma": "1.24.2", - "@shikijs/types": "1.24.2", - "@shikijs/vscode-textmate": "^9.3.0", + "@shikijs/engine-javascript": "1.24.4", + "@shikijs/engine-oniguruma": "1.24.4", + "@shikijs/types": "1.24.4", + "@shikijs/vscode-textmate": "^9.3.1", "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.3" + "hast-util-to-html": "^9.0.4" } }, "node_modules/@shikijs/engine-javascript": { - "version": "1.24.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.24.2.tgz", - "integrity": "sha512-EqsmYBJdLEwEiO4H+oExz34a5GhhnVp+jH9Q/XjPjmBPc6TE/x4/gD0X3i0EbkKKNqXYHHJTJUpOLRQNkEzS9Q==", + "version": "1.24.4", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.24.4.tgz", + "integrity": "sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==", "dependencies": { - "@shikijs/types": "1.24.2", - "@shikijs/vscode-textmate": "^9.3.0", - "oniguruma-to-es": "0.7.0" + "@shikijs/types": "1.24.4", + "@shikijs/vscode-textmate": "^9.3.1", + "oniguruma-to-es": "0.8.1" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "1.24.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.2.tgz", - "integrity": "sha512-ZN6k//aDNWRJs1uKB12pturKHh7GejKugowOFGAuG7TxDRLod1Bd5JhpOikOiFqPmKjKEPtEA6mRCf7q3ulDyQ==", + "version": "1.24.4", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.4.tgz", + "integrity": "sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==", "dependencies": { - "@shikijs/types": "1.24.2", - "@shikijs/vscode-textmate": "^9.3.0" + "@shikijs/types": "1.24.4", + "@shikijs/vscode-textmate": "^9.3.1" } }, "node_modules/@shikijs/types": { - "version": "1.24.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.24.2.tgz", - "integrity": "sha512-bdeWZiDtajGLG9BudI0AHet0b6e7FbR0EsE4jpGaI0YwHm/XJunI9+3uZnzFtX65gsyJ6ngCIWUfA4NWRPnBkQ==", + "version": "1.24.4", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.24.4.tgz", + "integrity": "sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==", "dependencies": { - "@shikijs/vscode-textmate": "^9.3.0", + "@shikijs/vscode-textmate": "^9.3.1", "@types/hast": "^3.0.4" } }, @@ -2223,9 +2238,9 @@ } }, "node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -2296,9 +2311,9 @@ } }, "node_modules/chokidar": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.2.tgz", - "integrity": "sha512-/b57FK+bblSU+dfewfFe0rT1YjVDfOmeLQwCAuC+vwvgLkXboATqqmy+Ipux6JrF6L5joe5CBnFOw+gLWH6yKg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dependencies": { "readdirp": "^4.0.1" }, @@ -3181,9 +3196,9 @@ } }, "node_modules/esbuild": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", - "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", + "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -3192,30 +3207,31 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.0", - "@esbuild/android-arm": "0.24.0", - "@esbuild/android-arm64": "0.24.0", - "@esbuild/android-x64": "0.24.0", - "@esbuild/darwin-arm64": "0.24.0", - "@esbuild/darwin-x64": "0.24.0", - "@esbuild/freebsd-arm64": "0.24.0", - "@esbuild/freebsd-x64": "0.24.0", - "@esbuild/linux-arm": "0.24.0", - "@esbuild/linux-arm64": "0.24.0", - "@esbuild/linux-ia32": "0.24.0", - "@esbuild/linux-loong64": "0.24.0", - "@esbuild/linux-mips64el": "0.24.0", - "@esbuild/linux-ppc64": "0.24.0", - "@esbuild/linux-riscv64": "0.24.0", - "@esbuild/linux-s390x": "0.24.0", - "@esbuild/linux-x64": "0.24.0", - "@esbuild/netbsd-x64": "0.24.0", - "@esbuild/openbsd-arm64": "0.24.0", - "@esbuild/openbsd-x64": "0.24.0", - "@esbuild/sunos-x64": "0.24.0", - "@esbuild/win32-arm64": "0.24.0", - "@esbuild/win32-ia32": "0.24.0", - "@esbuild/win32-x64": "0.24.0" + "@esbuild/aix-ppc64": "0.24.2", + "@esbuild/android-arm": "0.24.2", + "@esbuild/android-arm64": "0.24.2", + "@esbuild/android-x64": "0.24.2", + "@esbuild/darwin-arm64": "0.24.2", + "@esbuild/darwin-x64": "0.24.2", + "@esbuild/freebsd-arm64": "0.24.2", + "@esbuild/freebsd-x64": "0.24.2", + "@esbuild/linux-arm": "0.24.2", + "@esbuild/linux-arm64": "0.24.2", + "@esbuild/linux-ia32": "0.24.2", + "@esbuild/linux-loong64": "0.24.2", + "@esbuild/linux-mips64el": "0.24.2", + "@esbuild/linux-ppc64": "0.24.2", + "@esbuild/linux-riscv64": "0.24.2", + "@esbuild/linux-s390x": "0.24.2", + "@esbuild/linux-x64": "0.24.2", + "@esbuild/netbsd-arm64": "0.24.2", + "@esbuild/netbsd-x64": "0.24.2", + "@esbuild/openbsd-arm64": "0.24.2", + "@esbuild/openbsd-x64": "0.24.2", + "@esbuild/sunos-x64": "0.24.2", + "@esbuild/win32-arm64": "0.24.2", + "@esbuild/win32-ia32": "0.24.2", + "@esbuild/win32-x64": "0.24.2" } }, "node_modules/esbuild-sass-plugin": { @@ -3233,9 +3249,9 @@ } }, "node_modules/esbuild/node_modules/@esbuild/openbsd-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", - "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", + "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", "cpu": [ "arm64" ], @@ -5741,13 +5757,13 @@ } }, "node_modules/oniguruma-to-es": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-0.7.0.tgz", - "integrity": "sha512-HRaRh09cE0gRS3+wi2zxekB+I5L8C/gN60S+vb11eADHUaB/q4u8wGGOX3GvwvitG8ixaeycZfeoyruKQzUgNg==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-0.8.1.tgz", + "integrity": "sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==", "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^5.0.2", - "regex-recursion": "^4.3.0" + "regex-recursion": "^5.0.0" } }, "node_modules/package-json-from-dist": { @@ -5918,9 +5934,9 @@ } }, "node_modules/pixi.js": { - "version": "8.6.5", - "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-8.6.5.tgz", - "integrity": "sha512-53QeyNbvbojFvCoKT7CgLE/O+6Fuf4KHRjOciwFpRKx5zhyoD7/WR1SYJ75wfo523m5QtJw+tn86n18zsroGaw==", + "version": "8.6.6", + "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-8.6.6.tgz", + "integrity": "sha512-o5pw7G2yuIrnBx0G4npBlmFp+XGNcapI/Ufs62rRj/4XKxc1Zo74YJr/BtEXcXTraTKd+pQvYOLvnfxRjxBMvQ==", "dependencies": { "@pixi/colord": "^2.9.6", "@types/css-font-loading-module": "^0.0.12", @@ -5967,9 +5983,9 @@ "license": "MIT" }, "node_modules/preact": { - "version": "10.25.2", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.25.2.tgz", - "integrity": "sha512-GEts1EH3oMnqdOIeXhlbBSddZ9nrINd070WBOiPO2ous1orrKGUM4SMDbwyjSWD1iMS2dBvaDjAa5qUhz3TXqw==", + "version": "10.25.3", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.25.3.tgz", + "integrity": "sha512-dzQmIFtM970z+fP9ziQ3yG4e3ULIbwZzJ734vaMVUTaKQ2+Ru1Ou/gjshOYVHCcd1rpAelC6ngjvjDXph98unQ==", "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" @@ -6089,9 +6105,9 @@ } }, "node_modules/regex-recursion": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-4.3.0.tgz", - "integrity": "sha512-5LcLnizwjcQ2ALfOj95MjcatxyqF5RPySx9yT+PaXu3Gox2vyAtLDjHB8NTJLtMGkvyau6nI3CfpwFCjPUIs/A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.0.0.tgz", + "integrity": "sha512-UwyOqeobrCCqTXPcsSqH4gDhOjD5cI/b8kjngWgSZbxYh5yVjAwTjO5+hAuPRNiuR70+5RlWSs+U9PVcVcW9Lw==", "dependencies": { "regex-utilities": "^2.3.0" } @@ -7120,15 +7136,15 @@ } }, "node_modules/shiki": { - "version": "1.24.2", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.24.2.tgz", - "integrity": "sha512-TR1fi6mkRrzW+SKT5G6uKuc32Dj2EEa7Kj0k8kGqiBINb+C1TiflVOiT9ta6GqOJtC4fraxO5SLUaKBcSY38Fg==", + "version": "1.24.4", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.24.4.tgz", + "integrity": "sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==", "dependencies": { - "@shikijs/core": "1.24.2", - "@shikijs/engine-javascript": "1.24.2", - "@shikijs/engine-oniguruma": "1.24.2", - "@shikijs/types": "1.24.2", - "@shikijs/vscode-textmate": "^9.3.0", + "@shikijs/core": "1.24.4", + "@shikijs/engine-javascript": "1.24.4", + "@shikijs/engine-oniguruma": "1.24.4", + "@shikijs/types": "1.24.4", + "@shikijs/vscode-textmate": "^9.3.1", "@types/hast": "^3.0.4" } }, diff --git a/package.json b/package.json index dfda33bf1..42714c1fa 100644 --- a/package.json +++ b/package.json @@ -35,14 +35,14 @@ "quartz": "./quartz/bootstrap-cli.mjs" }, "dependencies": { - "@clack/prompts": "^0.8.2", + "@clack/prompts": "^0.9.0", "@floating-ui/dom": "^1.6.12", "@myriaddreamin/rehype-typst": "^0.5.0-rc9", "@napi-rs/simple-git": "0.1.19", "@tweenjs/tween.js": "^25.0.0", "async-mutex": "^0.5.0", - "chalk": "^5.3.0", - "chokidar": "^4.0.2", + "chalk": "^5.4.1", + "chokidar": "^4.0.3", "cli-spinner": "^0.2.10", "d3": "^7.9.0", "esbuild-sass-plugin": "^3.3.1", @@ -61,8 +61,8 @@ "mdast-util-to-string": "^4.0.0", "mermaid": "^11.4.1", "micromorph": "^0.4.5", - "pixi.js": "^8.6.5", - "preact": "^10.25.2", + "pixi.js": "^8.6.6", + "preact": "^10.25.3", "preact-render-to-string": "^6.5.12", "pretty-bytes": "^6.1.1", "pretty-time": "^1.1.0", @@ -87,7 +87,7 @@ "satori": "^0.12.0", "serve-handler": "^6.1.6", "sharp": "^0.33.5", - "shiki": "^1.24.2", + "shiki": "^1.24.4", "source-map-support": "^0.5.21", "to-vfile": "^8.0.0", "toml": "^3.0.0", @@ -108,7 +108,7 @@ "@types/source-map-support": "^0.5.10", "@types/ws": "^8.5.13", "@types/yargs": "^17.0.33", - "esbuild": "^0.24.0", + "esbuild": "^0.24.2", "prettier": "^3.4.2", "tsx": "^4.19.2", "typescript": "^5.7.2" From 69a0ddf73396ae7018f67c287bbb0891b5dae191 Mon Sep 17 00:00:00 2001 From: Anton Bulakh Date: Thu, 26 Dec 2024 15:50:54 +0200 Subject: [PATCH 14/45] fix(tags): Show tag descriptions when hovering (#1670) --- quartz/components/pages/TagContent.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quartz/components/pages/TagContent.tsx b/quartz/components/pages/TagContent.tsx index 5b9fbe282..c703b6524 100644 --- a/quartz/components/pages/TagContent.tsx +++ b/quartz/components/pages/TagContent.tsx @@ -110,7 +110,7 @@ export default ((opts?: Partial) => { return (
    -
    {content}
    +
    {content}

    {i18n(cfg.locale).pages.tagContent.itemsUnderTag({ count: pages.length })}

    From 7533d504dcbaf0d0127f1c3ac516ac0f1784816f Mon Sep 17 00:00:00 2001 From: Anton Bulakh Date: Fri, 27 Dec 2024 02:50:06 +0200 Subject: [PATCH 15/45] fix(tags): Set consistent titles for tags with description pages (#1671) --- quartz/plugins/emitters/tagPage.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/quartz/plugins/emitters/tagPage.tsx b/quartz/plugins/emitters/tagPage.tsx index 066d4ec26..d82a537db 100644 --- a/quartz/plugins/emitters/tagPage.tsx +++ b/quartz/plugins/emitters/tagPage.tsx @@ -105,6 +105,9 @@ export const TagPage: QuartzEmitterPlugin> = (userOpts) const tag = slug.slice("tags/".length) if (tags.has(tag)) { tagDescriptions[tag] = [tree, file] + if (file.data.frontmatter?.title === tag) { + file.data.frontmatter.title = `${i18n(cfg.locale).pages.tagContent.tag}: ${tag}` + } } } } From 05e6f05a5067ca1e6f5d5f793353182d8804c860 Mon Sep 17 00:00:00 2001 From: Anton Bulakh Date: Fri, 27 Dec 2024 06:05:35 +0200 Subject: [PATCH 16/45] feat(backlinks): hide by default when empty (#1674) Co-authored-by: Aaron Pham --- docs/features/backlinks.md | 1 + quartz/components/Backlinks.tsx | 72 ++++++++++++++++++++------------- 2 files changed, 45 insertions(+), 28 deletions(-) diff --git a/docs/features/backlinks.md b/docs/features/backlinks.md index f558f4a5d..6862720e1 100644 --- a/docs/features/backlinks.md +++ b/docs/features/backlinks.md @@ -9,6 +9,7 @@ A backlink for a note is a link from another note to that note. Links in the bac ## Customization - Removing backlinks: delete all usages of `Component.Backlinks()` from `quartz.layout.ts`. +- Hide when empty: hide `Backlinks` if given page doesn't contain any backlinks (default to `true`). To disable this, use `Component.Backlinks({ hideWhenEmpty: false })`. - Component: `quartz/components/Backlinks.tsx` - Style: `quartz/components/styles/backlinks.scss` - Script: `quartz/components/scripts/search.inline.ts` diff --git a/quartz/components/Backlinks.tsx b/quartz/components/Backlinks.tsx index aa412a2e0..e99055e31 100644 --- a/quartz/components/Backlinks.tsx +++ b/quartz/components/Backlinks.tsx @@ -4,33 +4,49 @@ import { resolveRelative, simplifySlug } from "../util/path" import { i18n } from "../i18n" import { classNames } from "../util/lang" -const Backlinks: QuartzComponent = ({ - fileData, - allFiles, - displayClass, - cfg, -}: QuartzComponentProps) => { - const slug = simplifySlug(fileData.slug!) - const backlinkFiles = allFiles.filter((file) => file.links?.includes(slug)) - return ( -
    -

    {i18n(cfg.locale).components.backlinks.title}

    -
      - {backlinkFiles.length > 0 ? ( - backlinkFiles.map((f) => ( -
    • - - {f.frontmatter?.title} - -
    • - )) - ) : ( -
    • {i18n(cfg.locale).components.backlinks.noBacklinksFound}
    • - )} -
    -
    - ) +interface BacklinksOptions { + hideWhenEmpty: boolean } -Backlinks.css = style -export default (() => Backlinks) satisfies QuartzComponentConstructor +const defaultOptions: BacklinksOptions = { + hideWhenEmpty: true, +} + +export default ((opts?: Partial) => { + const options: BacklinksOptions = { ...defaultOptions, ...opts } + + const Backlinks: QuartzComponent = ({ + fileData, + allFiles, + displayClass, + cfg, + }: QuartzComponentProps) => { + const slug = simplifySlug(fileData.slug!) + const backlinkFiles = allFiles.filter((file) => file.links?.includes(slug)) + if (options.hideWhenEmpty && backlinkFiles.length == 0) { + return null + } + return ( +
    + ) + } + + Backlinks.css = style + + return Backlinks +}) satisfies QuartzComponentConstructor From c91cf97f99d527264d81560f1d311f7c2889a41d Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Thu, 26 Dec 2024 21:18:17 -0800 Subject: [PATCH 17/45] feat(spa): add loading bar (#1684) --- quartz/components/scripts/spa.inline.ts | 15 +++++++++++++++ quartz/styles/base.scss | 11 +++++++++++ 2 files changed, 26 insertions(+) diff --git a/quartz/components/scripts/spa.inline.ts b/quartz/components/scripts/spa.inline.ts index 1790bcabc..b67dad088 100644 --- a/quartz/components/scripts/spa.inline.ts +++ b/quartz/components/scripts/spa.inline.ts @@ -42,8 +42,22 @@ function notifyNav(url: FullSlug) { const cleanupFns: Set<(...args: any[]) => void> = new Set() window.addCleanup = (fn) => cleanupFns.add(fn) +function startLoading() { + const loadingBar = document.createElement("div") + loadingBar.className = "navigation-progress" + loadingBar.style.width = "0" + if (!document.body.contains(loadingBar)) { + document.body.appendChild(loadingBar) + } + + setTimeout(() => { + loadingBar.style.width = "80%" + }, 100) +} + let p: DOMParser async function navigate(url: URL, isBack: boolean = false) { + startLoading() p = p || new DOMParser() const contents = await fetch(`${url}`) .then((res) => { @@ -104,6 +118,7 @@ async function navigate(url: URL, isBack: boolean = false) { if (!isBack) { history.pushState({}, "", url) } + notifyNav(getFullSlug(window)) delete announcer.dataset.persist } diff --git a/quartz/styles/base.scss b/quartz/styles/base.scss index 512af0dd0..4b79ea053 100644 --- a/quartz/styles/base.scss +++ b/quartz/styles/base.scss @@ -587,3 +587,14 @@ iframe.pdf { width: 100%; border-radius: 5px; } + +.navigation-progress { + position: fixed; + top: 0; + left: 0; + width: 0; + height: 3px; + background: var(--secondary); + transition: width 0.2s ease; + z-index: 9999; +} From 99011cb1b0d20da9cb523729ed0e9ff4e9c27405 Mon Sep 17 00:00:00 2001 From: Anton Bulakh Date: Fri, 27 Dec 2024 16:18:22 +0200 Subject: [PATCH 18/45] fix(spa): handle HTML redirects for aliases (#1680) --- quartz/components/scripts/popover.inline.ts | 3 ++- quartz/components/scripts/spa.inline.ts | 3 ++- quartz/components/scripts/util.ts | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/quartz/components/scripts/popover.inline.ts b/quartz/components/scripts/popover.inline.ts index 49f438205..b01af0e85 100644 --- a/quartz/components/scripts/popover.inline.ts +++ b/quartz/components/scripts/popover.inline.ts @@ -1,5 +1,6 @@ import { computePosition, flip, inline, shift } from "@floating-ui/dom" import { normalizeRelativeURLs } from "../../util/path" +import { fetchCanonical } from "./util" const p = new DOMParser() async function mouseEnterHandler( @@ -37,7 +38,7 @@ async function mouseEnterHandler( targetUrl.hash = "" targetUrl.search = "" - const response = await fetch(`${targetUrl}`).catch((err) => { + const response = await fetchCanonical(targetUrl).catch((err) => { console.error(err) }) diff --git a/quartz/components/scripts/spa.inline.ts b/quartz/components/scripts/spa.inline.ts index b67dad088..df48f0403 100644 --- a/quartz/components/scripts/spa.inline.ts +++ b/quartz/components/scripts/spa.inline.ts @@ -1,5 +1,6 @@ import micromorph from "micromorph" import { FullSlug, RelativeURL, getFullSlug, normalizeRelativeURLs } from "../../util/path" +import { fetchCanonical } from "./util" // adapted from `micromorph` // https://github.com/natemoo-re/micromorph @@ -59,7 +60,7 @@ let p: DOMParser async function navigate(url: URL, isBack: boolean = false) { startLoading() p = p || new DOMParser() - const contents = await fetch(`${url}`) + const contents = await fetchCanonical(url) .then((res) => { const contentType = res.headers.get("content-type") if (contentType?.startsWith("text/html")) { diff --git a/quartz/components/scripts/util.ts b/quartz/components/scripts/util.ts index d0a16c651..c1db8bad5 100644 --- a/quartz/components/scripts/util.ts +++ b/quartz/components/scripts/util.ts @@ -24,3 +24,22 @@ export function removeAllChildren(node: HTMLElement) { node.removeChild(node.firstChild) } } + +// AliasRedirect emits HTML redirects which also have the link[rel="canonical"] +// containing the URL it's redirecting to. +// Extracting it here with regex is _probably_ faster than parsing the entire HTML +// with a DOMParser effectively twice (here and later in the SPA code), even if +// way less robust - we only care about our own generated redirects after all. +const canonicalRegex = // + +export async function fetchCanonical(url: URL): Promise { + const res = await fetch(`${url}`) + if (!res.headers.get("content-type")?.startsWith("text/html")) { + return res + } + // reading the body can only be done once, so we need to clone the response + // to allow the caller to read it if it's was not a redirect + const text = await res.clone().text() + const [_, redirect] = text.match(canonicalRegex) ?? [] + return redirect ? fetch(redirect) : res +} From 7d4bed64a98e0ef982b98e9b755fead7c06855c5 Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Sat, 28 Dec 2024 15:17:58 -0800 Subject: [PATCH 19/45] fix(css): allow proper width on code block title (closes #1683) --- quartz/styles/base.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/quartz/styles/base.scss b/quartz/styles/base.scss index 4b79ea053..78f4ce74c 100644 --- a/quartz/styles/base.scss +++ b/quartz/styles/base.scss @@ -388,7 +388,6 @@ figure[data-rehype-pretty-code-figure] { font-size: 0.9rem; padding: 0.1rem 0.5rem; border: 1px solid var(--lightgray); - width: max-content; border-radius: 5px; margin-bottom: -0.5rem; color: var(--darkgray); From ef72f1bf707dca363cdab84da91e2acfaef8f276 Mon Sep 17 00:00:00 2001 From: Ammar Alakkad Date: Mon, 30 Dec 2024 19:03:57 +0300 Subject: [PATCH 20/45] Fix ObsidianFlavoredMarkdown source link (#1694) --- docs/plugins/ObsidianFlavoredMarkdown.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/plugins/ObsidianFlavoredMarkdown.md b/docs/plugins/ObsidianFlavoredMarkdown.md index 30d1f7179..414f743b8 100644 --- a/docs/plugins/ObsidianFlavoredMarkdown.md +++ b/docs/plugins/ObsidianFlavoredMarkdown.md @@ -31,4 +31,4 @@ This plugin accepts the following configuration options: - Category: Transformer - Function name: `Plugin.ObsidianFlavoredMarkdown()`. -- Source: [`quartz/plugins/transformers/toc.ts`](https://github.com/jackyzha0/quartz/blob/v4/quartz/plugins/transformers/toc.ts). +- Source: [`quartz/plugins/transformers/ofm.ts`](https://github.com/jackyzha0/quartz/blob/v4/quartz/plugins/transformers/ofm.ts) From d88e43010adaac5b842274ab0461a7d76c8f479d Mon Sep 17 00:00:00 2001 From: Anton Bulakh Date: Mon, 30 Dec 2024 19:08:35 +0200 Subject: [PATCH 21/45] fix(tags): Fix TagContent not sorting the page list when opening a tag (#1692) --- quartz/components/pages/TagContent.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quartz/components/pages/TagContent.tsx b/quartz/components/pages/TagContent.tsx index c703b6524..e56c6d609 100644 --- a/quartz/components/pages/TagContent.tsx +++ b/quartz/components/pages/TagContent.tsx @@ -93,7 +93,7 @@ export default ((opts?: Partial) => { )}

    - +
    ) @@ -114,7 +114,7 @@ export default ((opts?: Partial) => {

    {i18n(cfg.locale).pages.tagContent.itemsUnderTag({ count: pages.length })}

    - +
    From e1c9eabef49c4062fe2498b3ec51f7e01968d194 Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Mon, 30 Dec 2024 09:27:43 -0800 Subject: [PATCH 22/45] fix(css): oops fit-content not no width specification for codeblock title --- quartz/styles/base.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/quartz/styles/base.scss b/quartz/styles/base.scss index 78f4ce74c..aaf966efd 100644 --- a/quartz/styles/base.scss +++ b/quartz/styles/base.scss @@ -388,6 +388,7 @@ figure[data-rehype-pretty-code-figure] { font-size: 0.9rem; padding: 0.1rem 0.5rem; border: 1px solid var(--lightgray); + width: fit-content; border-radius: 5px; margin-bottom: -0.5rem; color: var(--darkgray); From 46adb3596669f1d65186768093680d9df05fb2ca Mon Sep 17 00:00:00 2001 From: Anton Bulakh Date: Mon, 30 Dec 2024 19:55:18 +0200 Subject: [PATCH 23/45] fix(spa): Normalize empty hrefs (#1695) A final breadcrumb has an empty href, linking to the current page, but the relative url normalization method missed those, making the link appear broken in search previews and popovers. Fixes #1690 --- quartz/util/path.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quartz/util/path.ts b/quartz/util/path.ts index c02bfb12d..a6a05f932 100644 --- a/quartz/util/path.ts +++ b/quartz/util/path.ts @@ -108,10 +108,10 @@ const _rebaseHtmlElement = (el: Element, attr: string, newBase: string | URL) => el.setAttribute(attr, rebased.pathname + rebased.hash) } export function normalizeRelativeURLs(el: Element | Document, destination: string | URL) { - el.querySelectorAll('[href^="./"], [href^="../"]').forEach((item) => + el.querySelectorAll('[href=""], [href^="./"], [href^="../"]').forEach((item) => _rebaseHtmlElement(item, "href", destination), ) - el.querySelectorAll('[src^="./"], [src^="../"]').forEach((item) => + el.querySelectorAll('[src=""], [src^="./"], [src^="../"]').forEach((item) => _rebaseHtmlElement(item, "src", destination), ) } From d9e36e60d1e7a985f06fdfef152811074e7c0701 Mon Sep 17 00:00:00 2001 From: Anton Bulakh Date: Mon, 30 Dec 2024 19:55:53 +0200 Subject: [PATCH 24/45] fix(search): Fix super-inconsistent preview widths in search previews (#1677) Don't know if this was uncovered by my local setup or just nobody noticed, but page previews were pretty wonky for me --- quartz/components/styles/search.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/quartz/components/styles/search.scss b/quartz/components/styles/search.scss index fab2c1354..4daefee8f 100644 --- a/quartz/components/styles/search.scss +++ b/quartz/components/styles/search.scss @@ -151,6 +151,7 @@ } & > #preview-container { + flex-grow: 1; display: block; overflow: hidden; font-family: inherit; From b2752e726274f06f51a9526bbddb1847d55f2e99 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Dec 2024 18:19:22 -0800 Subject: [PATCH 25/45] chore(deps): bump the production-dependencies group with 2 updates (#1696) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 112 +++++++++++++++++++++++----------------------- package.json | 4 +- 2 files changed, 58 insertions(+), 58 deletions(-) diff --git a/package-lock.json b/package-lock.json index 03f757d66..3e50d0920 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@clack/prompts": "^0.9.0", "@floating-ui/dom": "^1.6.12", - "@myriaddreamin/rehype-typst": "^0.5.0-rc9", + "@myriaddreamin/rehype-typst": "^0.5.4", "@napi-rs/simple-git": "0.1.19", "@tweenjs/tween.js": "^25.0.0", "async-mutex": "^0.5.0", @@ -36,7 +36,7 @@ "mermaid": "^11.4.1", "micromorph": "^0.4.5", "pixi.js": "^8.6.6", - "preact": "^10.25.3", + "preact": "^10.25.4", "preact-render-to-string": "^6.5.12", "pretty-bytes": "^6.1.1", "pretty-time": "^1.1.0", @@ -1089,11 +1089,11 @@ } }, "node_modules/@myriaddreamin/rehype-typst": { - "version": "0.5.0-rc9", - "resolved": "https://registry.npmjs.org/@myriaddreamin/rehype-typst/-/rehype-typst-0.5.0-rc9.tgz", - "integrity": "sha512-6YZ7KkoWch/5bOBUHAbHX3lpYV0KfS7Cwa6/AdU70YoQCLxU2nut9D+vNMH0iWujFU8545nMngh2D0vZRKOofA==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@myriaddreamin/rehype-typst/-/rehype-typst-0.5.4.tgz", + "integrity": "sha512-6NJ0Ddom+X1jTTO1qlwB7ArLuZBg18m+fTqd3HWpkxAUhHAoemd2oF3ATwBIM0uF9gzG9d523D4o7b+jXCaBUQ==", "dependencies": { - "@myriaddreamin/typst-ts-node-compiler": "^0.5.0-rc9", + "@myriaddreamin/typst-ts-node-compiler": "^0.5.4", "@types/hast": "^3.0.0", "@types/katex": "^0.16.0", "hast-util-from-html-isomorphic": "^2.0.0", @@ -1104,30 +1104,30 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler/-/typst-ts-node-compiler-0.5.1.tgz", - "integrity": "sha512-VR/0U7GHPeynFYEtBFo2NOrG8wxMYd2KYeTOALBKu+Bvt8xSjcrdrAOI/c1QYWP1ZwLzrngHGj+4zMBBxVw5hw==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler/-/typst-ts-node-compiler-0.5.4.tgz", + "integrity": "sha512-WAOUjOD+S2S3X/2X33PxDYn0XJ4ydqboxluIdFWU8yOlzn3K8CwoRN/GAbMA13vJTbZQMzjX3VmhMavFWeRtVA==", "engines": { "node": ">= 10" }, "optionalDependencies": { - "@myriaddreamin/typst-ts-node-compiler-android-arm-eabi": "0.5.1", - "@myriaddreamin/typst-ts-node-compiler-android-arm64": "0.5.1", - "@myriaddreamin/typst-ts-node-compiler-darwin-arm64": "0.5.1", - "@myriaddreamin/typst-ts-node-compiler-darwin-x64": "0.5.1", - "@myriaddreamin/typst-ts-node-compiler-linux-arm-gnueabihf": "0.5.1", - "@myriaddreamin/typst-ts-node-compiler-linux-arm64-gnu": "0.5.1", - "@myriaddreamin/typst-ts-node-compiler-linux-arm64-musl": "0.5.1", - "@myriaddreamin/typst-ts-node-compiler-linux-x64-gnu": "0.5.1", - "@myriaddreamin/typst-ts-node-compiler-linux-x64-musl": "0.5.1", - "@myriaddreamin/typst-ts-node-compiler-win32-arm64-msvc": "0.5.1", - "@myriaddreamin/typst-ts-node-compiler-win32-x64-msvc": "0.5.1" + "@myriaddreamin/typst-ts-node-compiler-android-arm-eabi": "0.5.4", + "@myriaddreamin/typst-ts-node-compiler-android-arm64": "0.5.4", + "@myriaddreamin/typst-ts-node-compiler-darwin-arm64": "0.5.4", + "@myriaddreamin/typst-ts-node-compiler-darwin-x64": "0.5.4", + "@myriaddreamin/typst-ts-node-compiler-linux-arm-gnueabihf": "0.5.4", + "@myriaddreamin/typst-ts-node-compiler-linux-arm64-gnu": "0.5.4", + "@myriaddreamin/typst-ts-node-compiler-linux-arm64-musl": "0.5.4", + "@myriaddreamin/typst-ts-node-compiler-linux-x64-gnu": "0.5.4", + "@myriaddreamin/typst-ts-node-compiler-linux-x64-musl": "0.5.4", + "@myriaddreamin/typst-ts-node-compiler-win32-arm64-msvc": "0.5.4", + "@myriaddreamin/typst-ts-node-compiler-win32-x64-msvc": "0.5.4" } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-android-arm-eabi": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-android-arm-eabi/-/typst-ts-node-compiler-android-arm-eabi-0.5.1.tgz", - "integrity": "sha512-lKGEuFshXocY5c6S/gTGtih1j3Re5Ll3yKglsGIi0NRwgkWf1Br+NAsokFwp6FB8v3IxatxGZU6nhderhGDDpA==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-android-arm-eabi/-/typst-ts-node-compiler-android-arm-eabi-0.5.4.tgz", + "integrity": "sha512-jptHQK/GN7RCDI4FkGKrec3x3YKFogIw1kpMFYYscoOEntEF4MGJs2FM3vR3bLXGSAR54WlPI6dXPKCYuzVSOg==", "cpu": [ "arm" ], @@ -1140,9 +1140,9 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-android-arm64": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-android-arm64/-/typst-ts-node-compiler-android-arm64-0.5.1.tgz", - "integrity": "sha512-PuvsutqJNM/dWNd0O3jX03wGZqlLd15lxfrH2JSLApKED3HzOp4k/bG6NrMxzQsMfPT+OVLEQCmwotGxqVrFJg==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-android-arm64/-/typst-ts-node-compiler-android-arm64-0.5.4.tgz", + "integrity": "sha512-xOt+07nYDu3KiOWPnl62es+rThKYRdbOWQPY4hcFqqC5VRTfZZXUBRKdsG+W8qu0gJ513VLmW9HVlkv2PHTW0Q==", "cpu": [ "arm64" ], @@ -1155,9 +1155,9 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-darwin-arm64": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-darwin-arm64/-/typst-ts-node-compiler-darwin-arm64-0.5.1.tgz", - "integrity": "sha512-6zHTIEXcM73dQWzeLJ3ojGk7prf9TYvcfxyCkCX5He3BdPx0lRFLCccXzvkdnTf/bpXLKXd+OKd7re/waf3Klg==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-darwin-arm64/-/typst-ts-node-compiler-darwin-arm64-0.5.4.tgz", + "integrity": "sha512-mtuIjL4KptMhy+rJY0pUv8s8kzFFYKFDyhDQIndsi7P9jYtIUkjJqhg3rXmMUcbVJEEFlaUJ+I+wFQbDuddSlg==", "cpu": [ "arm64" ], @@ -1170,9 +1170,9 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-darwin-x64": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-darwin-x64/-/typst-ts-node-compiler-darwin-x64-0.5.1.tgz", - "integrity": "sha512-c2LmL9Dc74Y4DdCNDq+fDckTzYSpozNrjbfPn3hwwK/CbiP+/3iVD5vGKRAvwoWSOLveCdI0PlnO3XeGA+xdqQ==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-darwin-x64/-/typst-ts-node-compiler-darwin-x64-0.5.4.tgz", + "integrity": "sha512-rP8ghx3+vCE0vVat6POYNEkXsjXQn1iyy3pPfLTFtSgQRoJoPJJnDB+tkToCiTZQwvo9aFyrY0LOyH8mpm+BYQ==", "cpu": [ "x64" ], @@ -1185,9 +1185,9 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-linux-arm-gnueabihf": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-arm-gnueabihf/-/typst-ts-node-compiler-linux-arm-gnueabihf-0.5.1.tgz", - "integrity": "sha512-xBX0H66MUbpTekqa1WGDZRWQaXb9i6VqXgfjFk5ZUG8dyU2VZsmi5s7ibdburCWdOhu6LTl2B5OoaPL5YArdew==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-arm-gnueabihf/-/typst-ts-node-compiler-linux-arm-gnueabihf-0.5.4.tgz", + "integrity": "sha512-boM8bVPRL/Ekff51urc3HiY2oKVdL2x36MnHgurAown3iK4OMa0JPDGkxpnuRKbDQEZDXQB1xljVGLaAqqecCg==", "cpu": [ "arm" ], @@ -1200,9 +1200,9 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-linux-arm64-gnu": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-arm64-gnu/-/typst-ts-node-compiler-linux-arm64-gnu-0.5.1.tgz", - "integrity": "sha512-LYSOj99sQoBdmZKiPq+/Ap4HjNZC5W1wyO3FknmaIUASdtAMYp6VqLMl1uS+YjvdZ5roao51encu11XrfYPNew==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-arm64-gnu/-/typst-ts-node-compiler-linux-arm64-gnu-0.5.4.tgz", + "integrity": "sha512-DIYH2WXyzeh+0sicGXICm8E/0P5ZAmbCIcGt9sgqXNe2YI/JjXoRDLLm1xN0Y5HD3fiCb/pRTRoeXFpp0u/Fjg==", "cpu": [ "arm64" ], @@ -1215,9 +1215,9 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-linux-arm64-musl": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-arm64-musl/-/typst-ts-node-compiler-linux-arm64-musl-0.5.1.tgz", - "integrity": "sha512-PFeTuei5EwKTA85kqTIt066Uc7ojGxQErRbPYJhPraRaPXXfO7FXQAmpsPdXNiSeWiC87IwPDrd4RIp7XcjlsA==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-arm64-musl/-/typst-ts-node-compiler-linux-arm64-musl-0.5.4.tgz", + "integrity": "sha512-KNjhfEgPaVaN+0hJ97UKY72jtpMFTA4dnP4iEoB6VX2dunVrbTJbCpjG8Sfml4HJYt0H4gYKsa4LqQzgqFJ6eQ==", "cpu": [ "arm64" ], @@ -1230,9 +1230,9 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-linux-x64-gnu": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-x64-gnu/-/typst-ts-node-compiler-linux-x64-gnu-0.5.1.tgz", - "integrity": "sha512-zz1XeL0hPvGOpbcgTXVKguFWALoLZ1cM8rhkE9X0+ZJWpeObjq9AirRR9vG7YYW43FthTNZ6EjYcFlAODoegbA==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-x64-gnu/-/typst-ts-node-compiler-linux-x64-gnu-0.5.4.tgz", + "integrity": "sha512-iqYx3UFrrN0E8bg+NuvTptP2FndJNtt7tlU6Dsh6vjaay5IaBLIAtn9Yf9dPzsqWzHE3nwTq0yjoLfLEtY4a3w==", "cpu": [ "x64" ], @@ -1245,9 +1245,9 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-linux-x64-musl": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-x64-musl/-/typst-ts-node-compiler-linux-x64-musl-0.5.1.tgz", - "integrity": "sha512-5ox7W+9z0xgQNkDGwRIUqNL4jSdigKVcVv3iePs8Qlh8FeKTqDgNye48vvUJo/VYWk0rkz2HjW+zxfWZfIOptw==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-x64-musl/-/typst-ts-node-compiler-linux-x64-musl-0.5.4.tgz", + "integrity": "sha512-ROleNG0SD50+FoYJQA/9sai0FzNMh94ZAUVbSJFz474olJHSYQ8xqdIiGlpFA6XXPG6TKBedzbDUVYVXWFI+NQ==", "cpu": [ "x64" ], @@ -1260,9 +1260,9 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-win32-arm64-msvc": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-win32-arm64-msvc/-/typst-ts-node-compiler-win32-arm64-msvc-0.5.1.tgz", - "integrity": "sha512-j/W25eaSYJtNyMIRSKFwlpTcwxnwcfABWMq542gVUNwVCrJhjfto1iQ6OToG/qBpD02CJEUydetT1C2H7GFtpA==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-win32-arm64-msvc/-/typst-ts-node-compiler-win32-arm64-msvc-0.5.4.tgz", + "integrity": "sha512-Ihh40WW2cB0TUUMfJEOoH5MzQXmPSZc0OcAWMHj8A5Rr4pNNAr1gcJTeB6UHazoRQ8uQG5hg3CqCFydAIbXKfQ==", "cpu": [ "arm64" ], @@ -1275,9 +1275,9 @@ } }, "node_modules/@myriaddreamin/typst-ts-node-compiler-win32-x64-msvc": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-win32-x64-msvc/-/typst-ts-node-compiler-win32-x64-msvc-0.5.1.tgz", - "integrity": "sha512-z1DvhykbCAkJPLZw7WKFMHvnb0vT7dBaQpfa7kLvjSkX44wVP45k3T4jegP4+RAWtmzMBN5bSpjYCiMawPLBXQ==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-win32-x64-msvc/-/typst-ts-node-compiler-win32-x64-msvc-0.5.4.tgz", + "integrity": "sha512-umEuUW6mn68JTueWr4LHsIUN8Bxs1aGyJdHVMy4br1g7MPqkoR0e8rVreTNulKaDx1+4lFdceWa1Uu7Yu0g9Ag==", "cpu": [ "x64" ], @@ -5983,9 +5983,9 @@ "license": "MIT" }, "node_modules/preact": { - "version": "10.25.3", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.25.3.tgz", - "integrity": "sha512-dzQmIFtM970z+fP9ziQ3yG4e3ULIbwZzJ734vaMVUTaKQ2+Ru1Ou/gjshOYVHCcd1rpAelC6ngjvjDXph98unQ==", + "version": "10.25.4", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.25.4.tgz", + "integrity": "sha512-jLdZDb+Q+odkHJ+MpW/9U5cODzqnB+fy2EiHSZES7ldV5LK7yjlVzTp7R8Xy6W6y75kfK8iWYtFVH7lvjwrCMA==", "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" diff --git a/package.json b/package.json index 42714c1fa..3ca07145a 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "dependencies": { "@clack/prompts": "^0.9.0", "@floating-ui/dom": "^1.6.12", - "@myriaddreamin/rehype-typst": "^0.5.0-rc9", + "@myriaddreamin/rehype-typst": "^0.5.4", "@napi-rs/simple-git": "0.1.19", "@tweenjs/tween.js": "^25.0.0", "async-mutex": "^0.5.0", @@ -62,7 +62,7 @@ "mermaid": "^11.4.1", "micromorph": "^0.4.5", "pixi.js": "^8.6.6", - "preact": "^10.25.3", + "preact": "^10.25.4", "preact-render-to-string": "^6.5.12", "pretty-bytes": "^6.1.1", "pretty-time": "^1.1.0", From a934397961f15ee0e07a43125e20bd26f7125be6 Mon Sep 17 00:00:00 2001 From: Anton Bulakh Date: Tue, 31 Dec 2024 04:21:07 +0200 Subject: [PATCH 26/45] fix(spa): Fix relative alias redirects (#1688) --- quartz/components/scripts/util.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quartz/components/scripts/util.ts b/quartz/components/scripts/util.ts index c1db8bad5..ff486cf41 100644 --- a/quartz/components/scripts/util.ts +++ b/quartz/components/scripts/util.ts @@ -41,5 +41,5 @@ export async function fetchCanonical(url: URL): Promise { // to allow the caller to read it if it's was not a redirect const text = await res.clone().text() const [_, redirect] = text.match(canonicalRegex) ?? [] - return redirect ? fetch(redirect) : res + return redirect ? fetch(`${new URL(redirect, url)}`) : res } From 9466c145b1b84299be5f865596b3ebdac248b9fa Mon Sep 17 00:00:00 2001 From: moexiami <1927254+Xiami2012@users.noreply.github.com> Date: Thu, 2 Jan 2025 02:07:59 +0800 Subject: [PATCH 27/45] fix(path): correct handle URI schemes in joinSegments (#1693) --- quartz/util/path.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/quartz/util/path.ts b/quartz/util/path.ts index a6a05f932..d2409e1cd 100644 --- a/quartz/util/path.ts +++ b/quartz/util/path.ts @@ -185,8 +185,13 @@ export function slugTag(tag: string) { export function joinSegments(...args: string[]): string { return args .filter((segment) => segment !== "") + .map((segment, index) => + index === 0 + ? // Deduplicate but not remove leading slashes for first segment + segment.replace(/\/+$/g, "").replace(/^\/\/+/g, "/") + : segment.replace(/^\/+|\/+$/g, ""), + ) .join("/") - .replace(/\/\/+/g, "/") } export function getAllSegmentPrefixes(tags: string): string[] { From e3162f7a7e810b74ba417590657a53e00c3b2f76 Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Wed, 1 Jan 2025 12:11:16 -0800 Subject: [PATCH 28/45] chore: joinSegments fix + tests --- quartz/util/path.test.ts | 19 +++++++++++++++++++ quartz/util/path.ts | 25 ++++++++++++++++++------- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/quartz/util/path.test.ts b/quartz/util/path.test.ts index 7e9c4c84a..687e69359 100644 --- a/quartz/util/path.test.ts +++ b/quartz/util/path.test.ts @@ -158,6 +158,25 @@ describe("transforms", () => { path.isRelativeURL, ) }) + + test("joinSegments", () => { + assert.strictEqual(path.joinSegments("a", "b"), "a/b") + assert.strictEqual(path.joinSegments("a/", "b"), "a/b") + assert.strictEqual(path.joinSegments("a", "b/"), "a/b/") + assert.strictEqual(path.joinSegments("a/", "b/"), "a/b/") + + // preserve leading and trailing slashes + assert.strictEqual(path.joinSegments("/a", "b"), "/a/b") + assert.strictEqual(path.joinSegments("/a/", "b"), "/a/b") + assert.strictEqual(path.joinSegments("/a", "b/"), "/a/b/") + assert.strictEqual(path.joinSegments("/a/", "b/"), "/a/b/") + + // works with protocol specifiers + assert.strictEqual(path.joinSegments("https://example.com", "a"), "https://example.com/a") + assert.strictEqual(path.joinSegments("https://example.com/", "a"), "https://example.com/a") + assert.strictEqual(path.joinSegments("https://example.com", "a/"), "https://example.com/a/") + assert.strictEqual(path.joinSegments("https://example.com/", "a/"), "https://example.com/a/") + }) }) describe("link strategies", () => { diff --git a/quartz/util/path.ts b/quartz/util/path.ts index d2409e1cd..580707f2c 100644 --- a/quartz/util/path.ts +++ b/quartz/util/path.ts @@ -183,15 +183,26 @@ export function slugTag(tag: string) { } export function joinSegments(...args: string[]): string { - return args + if (args.length === 0) { + return "" + } + + let joined = args .filter((segment) => segment !== "") - .map((segment, index) => - index === 0 - ? // Deduplicate but not remove leading slashes for first segment - segment.replace(/\/+$/g, "").replace(/^\/\/+/g, "/") - : segment.replace(/^\/+|\/+$/g, ""), - ) + .map((segment) => stripSlashes(segment)) .join("/") + + // if the first segment starts with a slash, add it back + if (args[0].startsWith("/")) { + joined = "/" + joined + } + + // if the last segment is a folder, add a trailing slash + if (args[args.length - 1].endsWith("/")) { + joined = joined + "/" + } + + return joined } export function getAllSegmentPrefixes(tags: string): string[] { From 2e6a675edddd25a71ecfddc73e0e292cb21d5981 Mon Sep 17 00:00:00 2001 From: Aaron Pham Date: Wed, 1 Jan 2025 12:24:32 -0800 Subject: [PATCH 29/45] perf: reduce bundle size (closes #1607) (#1689) --- docs/advanced/making plugins.md | 2 +- package-lock.json | 599 ++------------------ package.json | 1 - quartz/components/Head.tsx | 1 + quartz/components/renderPage.tsx | 33 +- quartz/components/scripts/mermaid.inline.ts | 8 +- quartz/plugins/emitters/404.tsx | 2 +- quartz/plugins/emitters/contentPage.tsx | 2 +- quartz/plugins/emitters/folderPage.tsx | 2 +- quartz/plugins/emitters/tagPage.tsx | 2 +- quartz/plugins/transformers/ofm.ts | 20 +- 11 files changed, 94 insertions(+), 578 deletions(-) diff --git a/docs/advanced/making plugins.md b/docs/advanced/making plugins.md index 9925d16c9..015e1953a 100644 --- a/docs/advanced/making plugins.md +++ b/docs/advanced/making plugins.md @@ -274,7 +274,7 @@ export const ContentPage: QuartzEmitterPlugin = () => { const allFiles = content.map((c) => c[1].data) for (const [tree, file] of content) { const slug = canonicalizeServer(file.data.slug!) - const externalResources = pageResources(slug, resources) + const externalResources = pageResources(slug, file.data, resources) const componentData: QuartzComponentProps = { fileData: file.data, externalResources, diff --git a/package-lock.json b/package-lock.json index 3e50d0920..7ccfef626 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,6 @@ "mdast-util-find-and-replace": "^3.0.1", "mdast-util-to-hast": "^13.2.0", "mdast-util-to-string": "^4.0.0", - "mermaid": "^11.4.1", "micromorph": "^0.4.5", "pixi.js": "^8.6.6", "preact": "^10.25.4", @@ -95,28 +94,6 @@ "npm": ">=9.3.1" } }, - "node_modules/@antfu/install-pkg": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.4.1.tgz", - "integrity": "sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==", - "license": "MIT", - "dependencies": { - "package-manager-detector": "^0.2.0", - "tinyexec": "^0.3.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@antfu/utils": { - "version": "0.7.10", - "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz", - "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, "node_modules/@asamuzakjp/dom-selector": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-2.0.2.tgz", @@ -127,57 +104,12 @@ "is-potential-custom-element-name": "^1.0.1" } }, - "node_modules/@braintree/sanitize-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.0.tgz", - "integrity": "sha512-o+UlMLt49RvtCASlOMW0AkHnabN9wR9rwCCherxO0yG4Npy34GkvrAqdXQvrhNs+jh+gkK8gB8Lf05qL/O7KWg==", - "license": "MIT" - }, "node_modules/@bufbuild/protobuf": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.2.0.tgz", "integrity": "sha512-+imAQkHf7U/Rwvu0wk1XWgsP3WnpCWmK7B48f0XqSNzgk64+grljTKC7pnO/xBiEMUziF7vKRfbBnOQhg126qQ==", "peer": true }, - "node_modules/@chevrotain/cst-dts-gen": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", - "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", - "license": "Apache-2.0", - "dependencies": { - "@chevrotain/gast": "11.0.3", - "@chevrotain/types": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/@chevrotain/gast": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", - "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", - "license": "Apache-2.0", - "dependencies": { - "@chevrotain/types": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/@chevrotain/regexp-to-ast": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", - "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==", - "license": "Apache-2.0" - }, - "node_modules/@chevrotain/types": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", - "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==", - "license": "Apache-2.0" - }, - "node_modules/@chevrotain/utils": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", - "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==", - "license": "Apache-2.0" - }, "node_modules/@citation-js/core": { "version": "0.7.14", "resolved": "https://registry.npmjs.org/@citation-js/core/-/core-0.7.14.tgz", @@ -681,27 +613,6 @@ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" }, - "node_modules/@iconify/types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", - "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", - "license": "MIT" - }, - "node_modules/@iconify/utils": { - "version": "2.1.33", - "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.33.tgz", - "integrity": "sha512-jP9h6v/g0BIZx0p7XGJJVtkVnydtbgTgt9mVNcGDYwaa7UhdHdI9dvoq+gKj9sijMSJKxUPEG2JyjsgXjxL7Kw==", - "license": "MIT", - "dependencies": { - "@antfu/install-pkg": "^0.4.0", - "@antfu/utils": "^0.7.10", - "@iconify/types": "^2.0.0", - "debug": "^4.3.6", - "kolorist": "^1.8.0", - "local-pkg": "^0.5.0", - "mlly": "^1.7.1" - } - }, "node_modules/@img/sharp-darwin-arm64": { "version": "0.33.5", "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", @@ -1079,15 +990,6 @@ "node": ">=12" } }, - "node_modules/@mermaid-js/parser": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.3.0.tgz", - "integrity": "sha512-HsvL6zgE5sUPGgkIDlmAWR1HTNHz2Iy11BAWPTa4Jjabkpguy4Ze2gzfLrg6pdRuBvFwgUYyxiaNqZwrEEXepA==", - "license": "MIT", - "dependencies": { - "langium": "3.0.0" - } - }, "node_modules/@myriaddreamin/rehype-typst": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/@myriaddreamin/rehype-typst/-/rehype-typst-0.5.4.tgz", @@ -1668,6 +1570,7 @@ "version": "7.4.3", "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "dev": true, "dependencies": { "@types/d3-array": "*", "@types/d3-axis": "*", @@ -1704,12 +1607,14 @@ "node_modules/@types/d3-array": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.5.tgz", - "integrity": "sha512-Qk7fpJ6qFp+26VeQ47WY0mkwXaiq8+76RJcncDEfMc2ocRzXLO67bLFRNI4OX1aGBoPzsM5Y2T+/m1pldOgD+A==" + "integrity": "sha512-Qk7fpJ6qFp+26VeQ47WY0mkwXaiq8+76RJcncDEfMc2ocRzXLO67bLFRNI4OX1aGBoPzsM5Y2T+/m1pldOgD+A==", + "dev": true }, "node_modules/@types/d3-axis": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.2.tgz", "integrity": "sha512-uGC7DBh0TZrU/LY43Fd8Qr+2ja1FKmH07q2FoZFHo1eYl8aj87GhfVoY1saJVJiq24rp1+wpI6BvQJMKgQm8oA==", + "dev": true, "dependencies": { "@types/d3-selection": "*" } @@ -1718,6 +1623,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.2.tgz", "integrity": "sha512-2TEm8KzUG3N7z0TrSKPmbxByBx54M+S9lHoP2J55QuLU0VSQ9mE96EJSAOVNEqd1bbynMjeTS9VHmz8/bSw8rA==", + "dev": true, "dependencies": { "@types/d3-selection": "*" } @@ -1725,17 +1631,20 @@ "node_modules/@types/d3-chord": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.2.tgz", - "integrity": "sha512-abT/iLHD3sGZwqMTX1TYCMEulr+wBd0SzyOQnjYNLp7sngdOHYtNkMRI5v3w5thoN+BWtlHVDx2Osvq6fxhZWw==" + "integrity": "sha512-abT/iLHD3sGZwqMTX1TYCMEulr+wBd0SzyOQnjYNLp7sngdOHYtNkMRI5v3w5thoN+BWtlHVDx2Osvq6fxhZWw==", + "dev": true }, "node_modules/@types/d3-color": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==" + "integrity": "sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==", + "dev": true }, "node_modules/@types/d3-contour": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.2.tgz", "integrity": "sha512-k6/bGDoAGJZnZWaKzeB+9glgXCYGvh6YlluxzBREiVo8f/X2vpTEdgPy9DN7Z2i42PZOZ4JDhVdlTSTSkLDPlQ==", + "dev": true, "dependencies": { "@types/d3-array": "*", "@types/geojson": "*" @@ -1744,17 +1653,20 @@ "node_modules/@types/d3-delaunay": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.1.tgz", - "integrity": "sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ==" + "integrity": "sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ==", + "dev": true }, "node_modules/@types/d3-dispatch": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.2.tgz", - "integrity": "sha512-rxN6sHUXEZYCKV05MEh4z4WpPSqIw+aP7n9ZN6WYAAvZoEAghEK1WeVZMZcHRBwyaKflU43PCUAJNjFxCzPDjg==" + "integrity": "sha512-rxN6sHUXEZYCKV05MEh4z4WpPSqIw+aP7n9ZN6WYAAvZoEAghEK1WeVZMZcHRBwyaKflU43PCUAJNjFxCzPDjg==", + "dev": true }, "node_modules/@types/d3-drag": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.2.tgz", "integrity": "sha512-qmODKEDvyKWVHcWWCOVcuVcOwikLVsyc4q4EBJMREsoQnR2Qoc2cZQUyFUPgO9q4S3qdSqJKBsuefv+h0Qy+tw==", + "dev": true, "dependencies": { "@types/d3-selection": "*" } @@ -1762,17 +1674,20 @@ "node_modules/@types/d3-dsv": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-76pBHCMTvPLt44wFOieouXcGXWOF0AJCceUvaFkxSZEu4VDUdv93JfpMa6VGNFs01FHfuP4a5Ou68eRG1KBfTw==" + "integrity": "sha512-76pBHCMTvPLt44wFOieouXcGXWOF0AJCceUvaFkxSZEu4VDUdv93JfpMa6VGNFs01FHfuP4a5Ou68eRG1KBfTw==", + "dev": true }, "node_modules/@types/d3-ease": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz", - "integrity": "sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==" + "integrity": "sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==", + "dev": true }, "node_modules/@types/d3-fetch": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.2.tgz", "integrity": "sha512-gllwYWozWfbep16N9fByNBDTkJW/SyhH6SGRlXloR7WdtAaBui4plTP+gbUgiEot7vGw/ZZop1yDZlgXXSuzjA==", + "dev": true, "dependencies": { "@types/d3-dsv": "*" } @@ -1780,17 +1695,20 @@ "node_modules/@types/d3-force": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.4.tgz", - "integrity": "sha512-q7xbVLrWcXvSBBEoadowIUJ7sRpS1yvgMWnzHJggFy5cUZBq2HZL5k/pBSm0GdYWS1vs5/EDwMjSKF55PDY4Aw==" + "integrity": "sha512-q7xbVLrWcXvSBBEoadowIUJ7sRpS1yvgMWnzHJggFy5cUZBq2HZL5k/pBSm0GdYWS1vs5/EDwMjSKF55PDY4Aw==", + "dev": true }, "node_modules/@types/d3-format": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.1.tgz", - "integrity": "sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg==" + "integrity": "sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg==", + "dev": true }, "node_modules/@types/d3-geo": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.0.3.tgz", "integrity": "sha512-bK9uZJS3vuDCNeeXQ4z3u0E7OeJZXjUgzFdSOtNtMCJCLvDtWDwfpRVWlyt3y8EvRzI0ccOu9xlMVirawolSCw==", + "dev": true, "dependencies": { "@types/geojson": "*" } @@ -1798,12 +1716,14 @@ "node_modules/@types/d3-hierarchy": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-9hjRTVoZjRFR6xo8igAJyNXQyPX6Aq++Nhb5ebrUF414dv4jr2MitM2fWiOY475wa3Za7TOS2Gh9fmqEhLTt0A==" + "integrity": "sha512-9hjRTVoZjRFR6xo8igAJyNXQyPX6Aq++Nhb5ebrUF414dv4jr2MitM2fWiOY475wa3Za7TOS2Gh9fmqEhLTt0A==", + "dev": true }, "node_modules/@types/d3-interpolate": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz", "integrity": "sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==", + "dev": true, "dependencies": { "@types/d3-color": "*" } @@ -1811,27 +1731,32 @@ "node_modules/@types/d3-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.0.tgz", - "integrity": "sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==" + "integrity": "sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==", + "dev": true }, "node_modules/@types/d3-polygon": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.0.tgz", - "integrity": "sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw==" + "integrity": "sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw==", + "dev": true }, "node_modules/@types/d3-quadtree": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.2.tgz", - "integrity": "sha512-QNcK8Jguvc8lU+4OfeNx+qnVy7c0VrDJ+CCVFS9srBo2GL9Y18CnIxBdTF3v38flrGy5s1YggcoAiu6s4fLQIw==" + "integrity": "sha512-QNcK8Jguvc8lU+4OfeNx+qnVy7c0VrDJ+CCVFS9srBo2GL9Y18CnIxBdTF3v38flrGy5s1YggcoAiu6s4fLQIw==", + "dev": true }, "node_modules/@types/d3-random": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ==" + "integrity": "sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ==", + "dev": true }, "node_modules/@types/d3-scale": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.3.tgz", "integrity": "sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ==", + "dev": true, "dependencies": { "@types/d3-time": "*" } @@ -1839,17 +1764,20 @@ "node_modules/@types/d3-scale-chromatic": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==" + "integrity": "sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==", + "dev": true }, "node_modules/@types/d3-selection": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.5.tgz", - "integrity": "sha512-xCB0z3Hi8eFIqyja3vW8iV01+OHGYR2di/+e+AiOcXIOrY82lcvWW8Ke1DYE/EUVMsBl4Db9RppSBS3X1U6J0w==" + "integrity": "sha512-xCB0z3Hi8eFIqyja3vW8iV01+OHGYR2di/+e+AiOcXIOrY82lcvWW8Ke1DYE/EUVMsBl4Db9RppSBS3X1U6J0w==", + "dev": true }, "node_modules/@types/d3-shape": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.1.tgz", "integrity": "sha512-6Uh86YFF7LGg4PQkuO2oG6EMBRLuW9cbavUW46zkIO5kuS2PfTqo2o9SkgtQzguBHbLgNnU90UNsITpsX1My+A==", + "dev": true, "dependencies": { "@types/d3-path": "*" } @@ -1857,22 +1785,26 @@ "node_modules/@types/d3-time": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz", - "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==" + "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==", + "dev": true }, "node_modules/@types/d3-time-format": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.0.tgz", - "integrity": "sha512-yjfBUe6DJBsDin2BMIulhSHmr5qNR5Pxs17+oW4DoVPyVIXZ+m6bs7j1UVKP08Emv6jRmYrYqxYzO63mQxy1rw==" + "integrity": "sha512-yjfBUe6DJBsDin2BMIulhSHmr5qNR5Pxs17+oW4DoVPyVIXZ+m6bs7j1UVKP08Emv6jRmYrYqxYzO63mQxy1rw==", + "dev": true }, "node_modules/@types/d3-timer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.0.tgz", - "integrity": "sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==" + "integrity": "sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==", + "dev": true }, "node_modules/@types/d3-transition": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.3.tgz", "integrity": "sha512-/S90Od8Id1wgQNvIA8iFv9jRhCiZcGhPd2qX0bKF/PS+y0W5CrXKgIiELd2CvG1mlQrWK/qlYh3VxicqG1ZvgA==", + "dev": true, "dependencies": { "@types/d3-selection": "*" } @@ -1881,6 +1813,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.3.tgz", "integrity": "sha512-OWk1yYIIWcZ07+igN6BeoG6rqhnJ/pYe+R1qWFM2DtW49zsoSjgb9G5xB0ZXA8hh2jAzey1XuRmMSoXdKw8MDA==", + "dev": true, "dependencies": { "@types/d3-interpolate": "*", "@types/d3-selection": "*" @@ -1916,7 +1849,8 @@ "node_modules/@types/geojson": { "version": "7946.0.10", "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz", - "integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==" + "integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==", + "dev": true }, "node_modules/@types/hast": { "version": "3.0.4", @@ -1987,12 +1921,6 @@ "source-map": "^0.6.0" } }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "optional": true - }, "node_modules/@types/unist": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", @@ -2042,18 +1970,6 @@ "node": ">=10.0.0" } }, - "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/agent-base": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", @@ -2284,32 +2200,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/chevrotain": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", - "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", - "license": "Apache-2.0", - "dependencies": { - "@chevrotain/cst-dts-gen": "11.0.3", - "@chevrotain/gast": "11.0.3", - "@chevrotain/regexp-to-ast": "11.0.3", - "@chevrotain/types": "11.0.3", - "@chevrotain/utils": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/chevrotain-allstar": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", - "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", - "license": "MIT", - "dependencies": { - "lodash-es": "^4.17.21" - }, - "peerDependencies": { - "chevrotain": "^11.0.0" - } - }, "node_modules/chokidar": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", @@ -2481,12 +2371,6 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, - "node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", - "license": "MIT" - }, "node_modules/content-disposition": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", @@ -2495,15 +2379,6 @@ "node": ">= 0.6" } }, - "node_modules/cose-base": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", - "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", - "license": "MIT", - "dependencies": { - "layout-base": "^1.0.0" - } - }, "node_modules/cross-fetch": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", @@ -2588,54 +2463,6 @@ "node": ">=18" } }, - "node_modules/cytoscape": { - "version": "3.30.3", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.30.3.tgz", - "integrity": "sha512-HncJ9gGJbVtw7YXtIs3+6YAFSSiKsom0amWc33Z7QbylbY2JGMrA0yz4EwrdTScZxnwclXeEZHzO5pxoy0ZE4g==", - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/cytoscape-cose-bilkent": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", - "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", - "license": "MIT", - "dependencies": { - "cose-base": "^1.0.0" - }, - "peerDependencies": { - "cytoscape": "^3.2.0" - } - }, - "node_modules/cytoscape-fcose": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", - "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", - "license": "MIT", - "dependencies": { - "cose-base": "^2.2.0" - }, - "peerDependencies": { - "cytoscape": "^3.2.0" - } - }, - "node_modules/cytoscape-fcose/node_modules/cose-base": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", - "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", - "license": "MIT", - "dependencies": { - "layout-base": "^2.0.0" - } - }, - "node_modules/cytoscape-fcose/node_modules/layout-base": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", - "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", - "license": "MIT" - }, "node_modules/d3": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", @@ -2897,46 +2724,6 @@ "node": ">=12" } }, - "node_modules/d3-sankey": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", - "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", - "license": "BSD-3-Clause", - "dependencies": { - "d3-array": "1 - 2", - "d3-shape": "^1.2.0" - } - }, - "node_modules/d3-sankey/node_modules/d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", - "license": "BSD-3-Clause", - "dependencies": { - "internmap": "^1.0.0" - } - }, - "node_modules/d3-sankey/node_modules/d3-path": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", - "license": "BSD-3-Clause" - }, - "node_modules/d3-sankey/node_modules/d3-shape": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", - "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", - "license": "BSD-3-Clause", - "dependencies": { - "d3-path": "1" - } - }, - "node_modules/d3-sankey/node_modules/internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", - "license": "ISC" - }, "node_modules/d3-scale": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", @@ -3046,16 +2833,6 @@ "node": ">=12" } }, - "node_modules/dagre-d3-es": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.11.tgz", - "integrity": "sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw==", - "license": "MIT", - "dependencies": { - "d3": "^7.9.0", - "lodash-es": "^4.17.21" - } - }, "node_modules/data-urls": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", @@ -3068,12 +2845,6 @@ "node": ">=18" } }, - "node_modules/dayjs": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", - "license": "MIT" - }, "node_modules/debug": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", @@ -3155,14 +2926,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/dompurify": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.3.tgz", - "integrity": "sha512-U1U5Hzc2MO0oW3DF+G9qYN0aT7atAou4AgI0XjWz061nyBPbdxkfdhfy5uMgGn6+oLFCfn44ZGbdDqCzVmlOWA==", - "optionalDependencies": { - "@types/trusted-types": "^2.0.7" - } - }, "node_modules/earcut": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", @@ -3611,12 +3374,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/hachure-fill": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", - "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", - "license": "MIT" - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4304,11 +4061,6 @@ "node": ">= 12" } }, - "node_modules/khroma": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", - "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" - }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -4317,34 +4069,6 @@ "node": ">=0.10.0" } }, - "node_modules/kolorist": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", - "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", - "license": "MIT" - }, - "node_modules/langium": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/langium/-/langium-3.0.0.tgz", - "integrity": "sha512-+Ez9EoiByeoTu/2BXmEaZ06iPNXM6thWJp02KfBO/raSMyCJ4jw7AkWWa+zBCTm0+Tw1Fj9FOxdqSskyN5nAwg==", - "license": "MIT", - "dependencies": { - "chevrotain": "~11.0.3", - "chevrotain-allstar": "~0.3.0", - "vscode-languageserver": "~9.0.1", - "vscode-languageserver-textdocument": "~1.0.11", - "vscode-uri": "~3.0.8" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/layout-base": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", - "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", - "license": "MIT" - }, "node_modules/lightningcss": { "version": "1.28.2", "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.28.2.tgz", @@ -4581,28 +4305,6 @@ "node": ">= 0.4" } }, - "node_modules/local-pkg": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", - "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", - "license": "MIT", - "dependencies": { - "mlly": "^1.4.2", - "pkg-types": "^1.0.3" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "license": "MIT" - }, "node_modules/longest-streak": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", @@ -4629,18 +4331,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/marked": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/marked/-/marked-13.0.3.tgz", - "integrity": "sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA==", - "license": "MIT", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 18" - } - }, "node_modules/mathjax-full": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.2.tgz", @@ -5020,33 +4710,6 @@ "node": ">= 8" } }, - "node_modules/mermaid": { - "version": "11.4.1", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.4.1.tgz", - "integrity": "sha512-Mb01JT/x6CKDWaxigwfZYuYmDZ6xtrNwNlidKZwkSrDaY9n90tdrJTV5Umk+wP1fZscGptmKFXHsXMDEVZ+Q6A==", - "dependencies": { - "@braintree/sanitize-url": "^7.0.1", - "@iconify/utils": "^2.1.32", - "@mermaid-js/parser": "^0.3.0", - "@types/d3": "^7.4.3", - "cytoscape": "^3.29.2", - "cytoscape-cose-bilkent": "^4.1.0", - "cytoscape-fcose": "^2.2.0", - "d3": "^7.9.0", - "d3-sankey": "^0.12.3", - "dagre-d3-es": "7.0.11", - "dayjs": "^1.11.10", - "dompurify": "^3.2.1", - "katex": "^0.16.9", - "khroma": "^2.1.0", - "lodash-es": "^4.17.21", - "marked": "^13.0.2", - "roughjs": "^4.6.6", - "stylis": "^4.3.1", - "ts-dedent": "^2.2.0", - "uuid": "^9.0.1" - } - }, "node_modules/mhchemparser": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz", @@ -5683,18 +5346,6 @@ "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz", "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==" }, - "node_modules/mlly": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.2.tgz", - "integrity": "sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==", - "license": "MIT", - "dependencies": { - "acorn": "^8.12.1", - "pathe": "^1.1.2", - "pkg-types": "^1.2.0", - "ufo": "^1.5.4" - } - }, "node_modules/moo": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", @@ -5771,12 +5422,6 @@ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" }, - "node_modules/package-manager-detector": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.2.tgz", - "integrity": "sha512-VgXbyrSNsml4eHWIvxxG/nTL4wgybMTXCV2Un/+yEc3aDKKU6nQBZjbeP3Pl3qm9Qg92X/1ng4ffvCeD/zwHgg==", - "license": "MIT" - }, "node_modules/pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", @@ -5856,12 +5501,6 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/path-data-parser": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", - "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", - "license": "MIT" - }, "node_modules/path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", @@ -5911,12 +5550,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "license": "MIT" - }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -5949,33 +5582,6 @@ "parse-svg-path": "^0.1.2" } }, - "node_modules/pkg-types": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.1.tgz", - "integrity": "sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==", - "license": "MIT", - "dependencies": { - "confbox": "^0.1.8", - "mlly": "^1.7.2", - "pathe": "^1.1.2" - } - }, - "node_modules/points-on-curve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", - "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", - "license": "MIT" - }, - "node_modules/points-on-path": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", - "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", - "license": "MIT", - "dependencies": { - "path-data-parser": "0.1.0", - "points-on-curve": "0.2.0" - } - }, "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", @@ -6530,18 +6136,6 @@ "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" }, - "node_modules/roughjs": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", - "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", - "license": "MIT", - "dependencies": { - "hachure-fill": "^0.5.2", - "path-data-parser": "^0.1.0", - "points-on-curve": "^0.2.0", - "points-on-path": "^0.2.1" - } - }, "node_modules/rrweb-cssom": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", @@ -7367,12 +6961,6 @@ "inline-style-parser": "0.2.2" } }, - "node_modules/stylis": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz", - "integrity": "sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==", - "license": "MIT" - }, "node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -7422,12 +7010,6 @@ "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", "license": "MIT" }, - "node_modules/tinyexec": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.1.tgz", - "integrity": "sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==", - "license": "MIT" - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -7515,15 +7097,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/ts-dedent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", - "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", - "license": "MIT", - "engines": { - "node": ">=6.10" - } - }, "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -7968,12 +7541,6 @@ "node": ">=14.17" } }, - "node_modules/ufo": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", - "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", - "license": "MIT" - }, "node_modules/undici-types": { "version": "6.20.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", @@ -8187,19 +7754,6 @@ "requires-port": "^1.0.0" } }, - "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/varint": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", @@ -8267,55 +7821,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vscode-jsonrpc": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", - "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/vscode-languageserver": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", - "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", - "license": "MIT", - "dependencies": { - "vscode-languageserver-protocol": "3.17.5" - }, - "bin": { - "installServerIntoExtension": "bin/installServerIntoExtension" - } - }, - "node_modules/vscode-languageserver-protocol": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", - "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", - "license": "MIT", - "dependencies": { - "vscode-jsonrpc": "8.2.0", - "vscode-languageserver-types": "3.17.5" - } - }, - "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", - "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", - "license": "MIT" - }, - "node_modules/vscode-languageserver-types": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", - "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", - "license": "MIT" - }, - "node_modules/vscode-uri": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", - "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", - "license": "MIT" - }, "node_modules/w3c-xmlserializer": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", diff --git a/package.json b/package.json index 3ca07145a..e99b82835 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,6 @@ "mdast-util-find-and-replace": "^3.0.1", "mdast-util-to-hast": "^13.2.0", "mdast-util-to-string": "^4.0.0", - "mermaid": "^11.4.1", "micromorph": "^0.4.5", "pixi.js": "^8.6.6", "preact": "^10.25.4", diff --git a/quartz/components/Head.tsx b/quartz/components/Head.tsx index a8e4974d1..3a4db10de 100644 --- a/quartz/components/Head.tsx +++ b/quartz/components/Head.tsx @@ -165,6 +165,7 @@ export default (() => { )} + {/* OG/Twitter meta tags */} diff --git a/quartz/components/renderPage.tsx b/quartz/components/renderPage.tsx index 9c530967b..3914411ac 100644 --- a/quartz/components/renderPage.tsx +++ b/quartz/components/renderPage.tsx @@ -8,6 +8,10 @@ import { visit } from "unist-util-visit" import { Root, Element, ElementContent } from "hast" import { GlobalConfiguration } from "../cfg" import { i18n } from "../i18n" +// @ts-ignore +import mermaidScript from "./scripts/mermaid.inline" +import mermaidStyle from "./styles/mermaid.inline.scss" +import { QuartzPluginData } from "../plugins/vfile" interface RenderComponents { head: QuartzComponent @@ -23,12 +27,13 @@ interface RenderComponents { const headerRegex = new RegExp(/h[1-6]/) export function pageResources( baseDir: FullSlug | RelativeURL, + fileData: QuartzPluginData, staticResources: StaticResources, ): StaticResources { const contentIndexPath = joinSegments(baseDir, "static/contentIndex.json") const contentIndexScript = `const fetchData = fetch("${contentIndexPath}").then(data => data.json())` - return { + const resources: StaticResources = { css: [ { content: joinSegments(baseDir, "index.css"), @@ -48,14 +53,28 @@ export function pageResources( script: contentIndexScript, }, ...staticResources.js, - { - src: joinSegments(baseDir, "postscript.js"), - loadTime: "afterDOMReady", - moduleType: "module", - contentType: "external", - }, ], } + + if (fileData.hasMermaidDiagram) { + resources.js.push({ + script: mermaidScript, + loadTime: "afterDOMReady", + moduleType: "module", + contentType: "inline", + }) + resources.css.push({ content: mermaidStyle, inline: true }) + } + + // NOTE: we have to put this last to make sure spa.inline.ts is the last item. + resources.js.push({ + src: joinSegments(baseDir, "postscript.js"), + loadTime: "afterDOMReady", + moduleType: "module", + contentType: "external", + }) + + return resources } export function renderPage( diff --git a/quartz/components/scripts/mermaid.inline.ts b/quartz/components/scripts/mermaid.inline.ts index 77a3ebe75..6dd254d87 100644 --- a/quartz/components/scripts/mermaid.inline.ts +++ b/quartz/components/scripts/mermaid.inline.ts @@ -1,5 +1,4 @@ import { removeAllChildren } from "./util" -import mermaid from "mermaid" interface Position { x: number @@ -144,6 +143,7 @@ const cssVars = [ "--codeFont", ] as const +let mermaidImport = undefined document.addEventListener("nav", async () => { const center = document.querySelector(".center") as HTMLElement const nodes = center.querySelectorAll("code.mermaid") as NodeListOf @@ -157,6 +157,12 @@ document.addEventListener("nav", async () => { {} as Record<(typeof cssVars)[number], string>, ) + mermaidImport ||= await import( + //@ts-ignore + "https://cdnjs.cloudflare.com/ajax/libs/mermaid/11.4.0/mermaid.esm.min.mjs" + ) + const mermaid = mermaidImport.default + const darkMode = document.documentElement.getAttribute("saved-theme") === "dark" mermaid.initialize({ startOnLoad: false, diff --git a/quartz/plugins/emitters/404.tsx b/quartz/plugins/emitters/404.tsx index e4605cfcd..2d518b675 100644 --- a/quartz/plugins/emitters/404.tsx +++ b/quartz/plugins/emitters/404.tsx @@ -37,7 +37,6 @@ export const NotFoundPage: QuartzEmitterPlugin = () => { const url = new URL(`https://${cfg.baseUrl ?? "example.com"}`) const path = url.pathname as FullSlug - const externalResources = pageResources(path, resources) const notFound = i18n(cfg.locale).pages.error.title const [tree, vfile] = defaultProcessedContent({ slug, @@ -45,6 +44,7 @@ export const NotFoundPage: QuartzEmitterPlugin = () => { description: notFound, frontmatter: { title: notFound, tags: [] }, }) + const externalResources = pageResources(path, vfile.data, resources) const componentData: QuartzComponentProps = { ctx, fileData: vfile.data, diff --git a/quartz/plugins/emitters/contentPage.tsx b/quartz/plugins/emitters/contentPage.tsx index 2ac132147..8788f331d 100644 --- a/quartz/plugins/emitters/contentPage.tsx +++ b/quartz/plugins/emitters/contentPage.tsx @@ -106,7 +106,7 @@ export const ContentPage: QuartzEmitterPlugin> = (userOp containsIndex = true } - const externalResources = pageResources(pathToRoot(slug), resources) + const externalResources = pageResources(pathToRoot(slug), file.data, resources) const componentData: QuartzComponentProps = { ctx, fileData: file.data, diff --git a/quartz/plugins/emitters/folderPage.tsx b/quartz/plugins/emitters/folderPage.tsx index b6d860272..bafaec916 100644 --- a/quartz/plugins/emitters/folderPage.tsx +++ b/quartz/plugins/emitters/folderPage.tsx @@ -106,8 +106,8 @@ export const FolderPage: QuartzEmitterPlugin> = (user for (const folder of folders) { const slug = joinSegments(folder, "index") as FullSlug - const externalResources = pageResources(pathToRoot(slug), resources) const [tree, file] = folderDescriptions[folder] + const externalResources = pageResources(pathToRoot(slug), file.data, resources) const componentData: QuartzComponentProps = { ctx, fileData: file.data, diff --git a/quartz/plugins/emitters/tagPage.tsx b/quartz/plugins/emitters/tagPage.tsx index d82a537db..9913e7d82 100644 --- a/quartz/plugins/emitters/tagPage.tsx +++ b/quartz/plugins/emitters/tagPage.tsx @@ -114,8 +114,8 @@ export const TagPage: QuartzEmitterPlugin> = (userOpts) for (const tag of tags) { const slug = joinSegments("tags", tag) as FullSlug - const externalResources = pageResources(pathToRoot(slug), resources) const [tree, file] = tagDescriptions[tag] + const externalResources = pageResources(pathToRoot(slug), file.data, resources) const componentData: QuartzComponentProps = { ctx, fileData: file.data, diff --git a/quartz/plugins/transformers/ofm.ts b/quartz/plugins/transformers/ofm.ts index 94cc7b6ea..d49b8e670 100644 --- a/quartz/plugins/transformers/ofm.ts +++ b/quartz/plugins/transformers/ofm.ts @@ -11,9 +11,6 @@ import { JSResource, CSSResource } from "../../util/resources" import calloutScript from "../../components/scripts/callout.inline.ts" // @ts-ignore import checkboxScript from "../../components/scripts/checkbox.inline.ts" -// @ts-ignore -import mermaidExtensionScript from "../../components/scripts/mermaid.inline.ts" -import mermaidStyle from "../../components/styles/mermaid.inline.scss" import { FilePath, pathToRoot, slugTag, slugifyFilePath } from "../../util/path" import { toHast } from "mdast-util-to-hast" import { toHtml } from "hast-util-to-html" @@ -513,9 +510,10 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin> if (opts.mermaid) { plugins.push(() => { - return (tree: Root, _file) => { + return (tree: Root, file) => { visit(tree, "code", (node: Code) => { if (node.lang === "mermaid") { + file.data.hasMermaidDiagram = true node.data = { hProperties: { className: ["mermaid"], @@ -813,19 +811,6 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin> }) } - if (opts.mermaid) { - js.push({ - script: mermaidExtensionScript, - loadTime: "afterDOMReady", - moduleType: "module", - contentType: "inline", - }) - css.push({ - content: mermaidStyle, - inline: true, - }) - } - return { js, css } }, } @@ -835,5 +820,6 @@ declare module "vfile" { interface DataMap { blocks: Record htmlAst: HtmlRoot + hasMermaidDiagram: boolean | undefined } } From c98ef7e89f2c63d417d2c9ae364c56308f8501fc Mon Sep 17 00:00:00 2001 From: Aaron Pham Date: Fri, 3 Jan 2025 11:27:43 -0800 Subject: [PATCH 30/45] perf(img): lazy load chunks (#1700) --- quartz/styles/base.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/quartz/styles/base.scss b/quartz/styles/base.scss index aaf966efd..29ddc5aa5 100644 --- a/quartz/styles/base.scss +++ b/quartz/styles/base.scss @@ -512,6 +512,7 @@ img { max-width: 100%; border-radius: 5px; margin: 1rem 0; + content-visibility: auto; } p > img + em { From dc3323b5741845ac6109781da32d34f16e925815 Mon Sep 17 00:00:00 2001 From: Akihiro Saiki Date: Sun, 5 Jan 2025 02:45:53 +0900 Subject: [PATCH 31/45] chore: use Google Fonts API v2 to get fonts for ogp (#1705) --- quartz/util/og.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/quartz/util/og.tsx b/quartz/util/og.tsx index 0430a265d..42b9b27be 100644 --- a/quartz/util/og.tsx +++ b/quartz/util/og.tsx @@ -35,7 +35,9 @@ export async function getSatoriFont(headerFontName: string, bodyFontName: string async function fetchTtf(fontName: string, weight: FontWeight): Promise { try { // Get css file from google fonts - const cssResponse = await fetch(`https://fonts.googleapis.com/css?family=${fontName}:${weight}`) + const cssResponse = await fetch( + `https://fonts.googleapis.com/css2?family=${fontName}:wght@${weight}`, + ) const css = await cssResponse.text() // Extract .ttf url from css file From b7a945e034cd34798eed8806a9e0957716e5c598 Mon Sep 17 00:00:00 2001 From: Anton Bulakh Date: Sun, 5 Jan 2025 08:11:15 +0200 Subject: [PATCH 32/45] fix(tags): Dont consume a space before content tags (#1706) --- quartz/plugins/transformers/ofm.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quartz/plugins/transformers/ofm.ts b/quartz/plugins/transformers/ofm.ts index d49b8e670..87c22e69a 100644 --- a/quartz/plugins/transformers/ofm.ts +++ b/quartz/plugins/transformers/ofm.ts @@ -121,12 +121,12 @@ const commentRegex = new RegExp(/%%[\s\S]*?%%/g) // from https://github.com/escwxyz/remark-obsidian-callout/blob/main/src/index.ts const calloutRegex = new RegExp(/^\[\!([\w-]+)\|?(.+?)?\]([+-]?)/) const calloutLineRegex = new RegExp(/^> *\[\!\w+\|?.*?\][+-]?.*$/gm) -// (?:^| ) -> non-capturing group, tag should start be separated by a space or be the start of the line +// (?<=^| ) -> a lookbehind assertion, tag should start be separated by a space or be the start of the line // #(...) -> capturing group, tag itself must start with # // (?:[-_\p{L}\d\p{Z}])+ -> non-capturing group, non-empty string of (Unicode-aware) alpha-numeric characters and symbols, hyphens and/or underscores // (?:\/[-_\p{L}\d\p{Z}]+)*) -> non-capturing group, matches an arbitrary number of tag strings separated by "/" const tagRegex = new RegExp( - /(?:^| )#((?:[-_\p{L}\p{Emoji}\p{M}\d])+(?:\/[-_\p{L}\p{Emoji}\p{M}\d]+)*)/gu, + /(?<=^| )#((?:[-_\p{L}\p{Emoji}\p{M}\d])+(?:\/[-_\p{L}\p{Emoji}\p{M}\d]+)*)/gu, ) const blockReferenceRegex = new RegExp(/\^([-_A-Za-z0-9]+)$/g) const ytLinkRegex = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/ From c90dbacab05d2ceab84b53c66c7be77b4dda47ef Mon Sep 17 00:00:00 2001 From: Anton Bulakh Date: Tue, 7 Jan 2025 22:33:34 +0200 Subject: [PATCH 33/45] chore(build): separate markdown and html handling into two separate stages (#1675) --- quartz/bootstrap-worker.mjs | 5 ++- quartz/plugins/vfile.ts | 8 ++-- quartz/processors/parse.ts | 90 ++++++++++++++++++++++++++----------- quartz/worker.ts | 37 ++++++++++++--- 4 files changed, 103 insertions(+), 37 deletions(-) diff --git a/quartz/bootstrap-worker.mjs b/quartz/bootstrap-worker.mjs index b08689c3c..c4c4949b9 100644 --- a/quartz/bootstrap-worker.mjs +++ b/quartz/bootstrap-worker.mjs @@ -1,7 +1,8 @@ #!/usr/bin/env node import workerpool from "workerpool" const cacheFile = "./.quartz-cache/transpiled-worker.mjs" -const { parseFiles } = await import(cacheFile) +const { parseMarkdown, processHtml } = await import(cacheFile) workerpool.worker({ - parseFiles, + parseMarkdown, + processHtml, }) diff --git a/quartz/plugins/vfile.ts b/quartz/plugins/vfile.ts index 5be210584..8c5cf6aa6 100644 --- a/quartz/plugins/vfile.ts +++ b/quartz/plugins/vfile.ts @@ -1,11 +1,13 @@ -import { Node, Parent } from "hast" +import { Root as HtmlRoot } from "hast" +import { Root as MdRoot } from "mdast" import { Data, VFile } from "vfile" export type QuartzPluginData = Data -export type ProcessedContent = [Node, VFile] +export type MarkdownContent = [MdRoot, VFile] +export type ProcessedContent = [HtmlRoot, VFile] export function defaultProcessedContent(vfileData: Partial): ProcessedContent { - const root: Parent = { type: "root", children: [] } + const root: HtmlRoot = { type: "root", children: [] } const vfile = new VFile("") vfile.data = vfileData return [root, vfile] diff --git a/quartz/processors/parse.ts b/quartz/processors/parse.ts index 2bd530c64..479313f49 100644 --- a/quartz/processors/parse.ts +++ b/quartz/processors/parse.ts @@ -4,18 +4,20 @@ import remarkRehype from "remark-rehype" import { Processor, unified } from "unified" import { Root as MDRoot } from "remark-parse/lib" import { Root as HTMLRoot } from "hast" -import { ProcessedContent } from "../plugins/vfile" +import { MarkdownContent, ProcessedContent } from "../plugins/vfile" import { PerfTimer } from "../util/perf" import { read } from "to-vfile" -import { FilePath, QUARTZ, slugifyFilePath } from "../util/path" +import { FilePath, FullSlug, QUARTZ, slugifyFilePath } from "../util/path" import path from "path" import workerpool, { Promise as WorkerPromise } from "workerpool" import { QuartzLogger } from "../util/log" import { trace } from "../util/trace" import { BuildCtx } from "../util/ctx" -export type QuartzProcessor = Processor -export function createProcessor(ctx: BuildCtx): QuartzProcessor { +export type QuartzMdProcessor = Processor +export type QuartzHtmlProcessor = Processor + +export function createMdProcessor(ctx: BuildCtx): QuartzMdProcessor { const transformers = ctx.cfg.plugins.transformers return ( @@ -24,14 +26,20 @@ export function createProcessor(ctx: BuildCtx): QuartzProcessor { .use(remarkParse) // MD AST -> MD AST transforms .use( - transformers - .filter((p) => p.markdownPlugins) - .flatMap((plugin) => plugin.markdownPlugins!(ctx)), - ) + transformers.flatMap((plugin) => plugin.markdownPlugins?.(ctx) ?? []), + ) as unknown as QuartzMdProcessor + // ^ sadly the typing of `use` is not smart enough to infer the correct type from our plugin list + ) +} + +export function createHtmlProcessor(ctx: BuildCtx): QuartzHtmlProcessor { + const transformers = ctx.cfg.plugins.transformers + return ( + unified() // MD AST -> HTML AST .use(remarkRehype, { allowDangerousHtml: true }) // HTML AST -> HTML AST transforms - .use(transformers.filter((p) => p.htmlPlugins).flatMap((plugin) => plugin.htmlPlugins!(ctx))) + .use(transformers.flatMap((plugin) => plugin.htmlPlugins?.(ctx) ?? [])) ) } @@ -75,8 +83,8 @@ async function transpileWorkerScript() { export function createFileParser(ctx: BuildCtx, fps: FilePath[]) { const { argv, cfg } = ctx - return async (processor: QuartzProcessor) => { - const res: ProcessedContent[] = [] + return async (processor: QuartzMdProcessor) => { + const res: MarkdownContent[] = [] for (const fp of fps) { try { const perf = new PerfTimer() @@ -100,10 +108,32 @@ export function createFileParser(ctx: BuildCtx, fps: FilePath[]) { res.push([newAst, file]) if (argv.verbose) { - console.log(`[process] ${fp} -> ${file.data.slug} (${perf.timeSince()})`) + console.log(`[markdown] ${fp} -> ${file.data.slug} (${perf.timeSince()})`) } } catch (err) { - trace(`\nFailed to process \`${fp}\``, err as Error) + trace(`\nFailed to process markdown \`${fp}\``, err as Error) + } + } + + return res + } +} + +export function createMarkdownParser(ctx: BuildCtx, mdContent: MarkdownContent[]) { + return async (processor: QuartzHtmlProcessor) => { + const res: ProcessedContent[] = [] + for (const [ast, file] of mdContent) { + try { + const perf = new PerfTimer() + + const newAst = await processor.run(ast as MDRoot, file) + res.push([newAst, file]) + + if (ctx.argv.verbose) { + console.log(`[html] ${file.data.slug} (${perf.timeSince()})`) + } + } catch (err) { + trace(`\nFailed to process html \`${file.data.filePath}\``, err as Error) } } @@ -113,6 +143,7 @@ export function createFileParser(ctx: BuildCtx, fps: FilePath[]) { const clamp = (num: number, min: number, max: number) => Math.min(Math.max(Math.round(num), min), max) + export async function parseMarkdown(ctx: BuildCtx, fps: FilePath[]): Promise { const { argv } = ctx const perf = new PerfTimer() @@ -126,9 +157,8 @@ export async function parseMarkdown(ctx: BuildCtx, fps: FilePath[]): Promise[] = [] - for (const chunk of chunks(fps, CHUNK_SIZE)) { - childPromises.push(pool.exec("parseFiles", [ctx.buildId, argv, chunk, ctx.allSlugs])) + const errorHandler = (err: any) => { + console.error(`${err}`.replace(/^error:\s*/i, "")) + process.exit(1) } - const results: ProcessedContent[][] = await WorkerPromise.all(childPromises).catch((err) => { - const errString = err.toString().slice("Error:".length) - console.error(errString) - process.exit(1) - }) + const mdPromises: WorkerPromise<[MarkdownContent[], FullSlug[]]>[] = [] + for (const chunk of chunks(fps, CHUNK_SIZE)) { + mdPromises.push(pool.exec("parseMarkdown", [ctx.buildId, argv, chunk])) + } + const mdResults: [MarkdownContent[], FullSlug[]][] = + await WorkerPromise.all(mdPromises).catch(errorHandler) + + const childPromises: WorkerPromise[] = [] + for (const [_, extraSlugs] of mdResults) { + ctx.allSlugs.push(...extraSlugs) + } + for (const [mdChunk, _] of mdResults) { + childPromises.push(pool.exec("processHtml", [ctx.buildId, argv, mdChunk, ctx.allSlugs])) + } + const results: ProcessedContent[][] = await WorkerPromise.all(childPromises).catch(errorHandler) + res = results.flat() await pool.terminate() } diff --git a/quartz/worker.ts b/quartz/worker.ts index a209df9a0..c9cd98055 100644 --- a/quartz/worker.ts +++ b/quartz/worker.ts @@ -3,23 +3,46 @@ sourceMapSupport.install(options) import cfg from "../quartz.config" import { Argv, BuildCtx } from "./util/ctx" import { FilePath, FullSlug } from "./util/path" -import { createFileParser, createProcessor } from "./processors/parse" +import { + createFileParser, + createHtmlProcessor, + createMarkdownParser, + createMdProcessor, +} from "./processors/parse" import { options } from "./util/sourcemap" +import { MarkdownContent, ProcessedContent } from "./plugins/vfile" // only called from worker thread -export async function parseFiles( +export async function parseMarkdown( buildId: string, argv: Argv, fps: FilePath[], - allSlugs: FullSlug[], -) { +): Promise<[MarkdownContent[], FullSlug[]]> { + // this is a hack + // we assume markdown parsers can add to `allSlugs`, + // but don't actually use them + const allSlugs: FullSlug[] = [] const ctx: BuildCtx = { buildId, cfg, argv, allSlugs, } - const processor = createProcessor(ctx) - const parse = createFileParser(ctx, fps) - return parse(processor) + return [await createFileParser(ctx, fps)(createMdProcessor(ctx)), allSlugs] +} + +// only called from worker thread +export function processHtml( + buildId: string, + argv: Argv, + mds: MarkdownContent[], + allSlugs: FullSlug[], +): Promise { + const ctx: BuildCtx = { + buildId, + cfg, + argv, + allSlugs, + } + return createMarkdownParser(ctx, mds)(createHtmlProcessor(ctx)) } From 7e828252bbf37d967db3feed820409625f38b5ab Mon Sep 17 00:00:00 2001 From: Aaron Pham Date: Tue, 7 Jan 2025 16:00:09 -0500 Subject: [PATCH 34/45] fix(path): handle lone slash (#1713) --- quartz/util/path.test.ts | 4 ++++ quartz/util/path.ts | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/quartz/util/path.test.ts b/quartz/util/path.test.ts index 687e69359..29d845d95 100644 --- a/quartz/util/path.test.ts +++ b/quartz/util/path.test.ts @@ -171,6 +171,10 @@ describe("transforms", () => { assert.strictEqual(path.joinSegments("/a", "b/"), "/a/b/") assert.strictEqual(path.joinSegments("/a/", "b/"), "/a/b/") + // lone slash + assert.strictEqual(path.joinSegments("/a/", "b", "/"), "/a/b/") + assert.strictEqual(path.joinSegments("a/", "b" + "/"), "a/b/") + // works with protocol specifiers assert.strictEqual(path.joinSegments("https://example.com", "a"), "https://example.com/a") assert.strictEqual(path.joinSegments("https://example.com/", "a"), "https://example.com/a") diff --git a/quartz/util/path.ts b/quartz/util/path.ts index 580707f2c..5835f15cc 100644 --- a/quartz/util/path.ts +++ b/quartz/util/path.ts @@ -188,7 +188,7 @@ export function joinSegments(...args: string[]): string { } let joined = args - .filter((segment) => segment !== "") + .filter((segment) => segment !== "" && segment !== "/") .map((segment) => stripSlashes(segment)) .join("/") From 09f8670db7424e6b366ec8779df941969fbd58e8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2025 20:32:02 -0500 Subject: [PATCH 35/45] chore(deps): bump the production-dependencies group with 4 updates (#1711) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Aaron Pham --- package-lock.json | 133 ++++++++++++++++------------- package.json | 8 +- quartz/plugins/transformers/ofm.ts | 11 ++- 3 files changed, 89 insertions(+), 63 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7ccfef626..247f1e0a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,7 +30,7 @@ "is-absolute-url": "^4.0.1", "js-yaml": "^4.1.0", "lightningcss": "^1.28.2", - "mdast-util-find-and-replace": "^3.0.1", + "mdast-util-find-and-replace": "^3.0.2", "mdast-util-to-hast": "^13.2.0", "mdast-util-to-string": "^4.0.0", "micromorph": "^0.4.5", @@ -57,10 +57,10 @@ "remark-smartypants": "^3.0.2", "rfdc": "^1.4.1", "rimraf": "^6.0.1", - "satori": "^0.12.0", + "satori": "^0.12.1", "serve-handler": "^6.1.6", "sharp": "^0.33.5", - "shiki": "^1.24.4", + "shiki": "^1.26.1", "source-map-support": "^0.5.21", "to-vfile": "^8.0.0", "toml": "^3.0.0", @@ -79,7 +79,7 @@ "@types/d3": "^7.4.3", "@types/hast": "^3.0.4", "@types/js-yaml": "^4.0.9", - "@types/node": "^22.10.2", + "@types/node": "^22.10.5", "@types/pretty-time": "^1.1.5", "@types/source-map-support": "^0.5.10", "@types/ws": "^8.5.13", @@ -1473,50 +1473,66 @@ } }, "node_modules/@shikijs/core": { - "version": "1.24.4", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.24.4.tgz", - "integrity": "sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==", + "version": "1.26.1", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.26.1.tgz", + "integrity": "sha512-yeo7sG+WZQblKPclUOKRPwkv1PyoHYkJ4gP9DzhFJbTdueKR7wYTI1vfF/bFi1NTgc545yG/DzvVhZgueVOXMA==", "dependencies": { - "@shikijs/engine-javascript": "1.24.4", - "@shikijs/engine-oniguruma": "1.24.4", - "@shikijs/types": "1.24.4", - "@shikijs/vscode-textmate": "^9.3.1", + "@shikijs/engine-javascript": "1.26.1", + "@shikijs/engine-oniguruma": "1.26.1", + "@shikijs/types": "1.26.1", + "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.4" } }, "node_modules/@shikijs/engine-javascript": { - "version": "1.24.4", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.24.4.tgz", - "integrity": "sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==", + "version": "1.26.1", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.26.1.tgz", + "integrity": "sha512-CRhA0b8CaSLxS0E9A4Bzcb3LKBNpykfo9F85ozlNyArxjo2NkijtiwrJZ6eHa+NT5I9Kox2IXVdjUsP4dilsmw==", "dependencies": { - "@shikijs/types": "1.24.4", - "@shikijs/vscode-textmate": "^9.3.1", - "oniguruma-to-es": "0.8.1" + "@shikijs/types": "1.26.1", + "@shikijs/vscode-textmate": "^10.0.1", + "oniguruma-to-es": "0.10.0" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "1.24.4", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.4.tgz", - "integrity": "sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==", + "version": "1.26.1", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.26.1.tgz", + "integrity": "sha512-F5XuxN1HljLuvfXv7d+mlTkV7XukC1cawdtOo+7pKgPD83CAB1Sf8uHqP3PK0u7njFH0ZhoXE1r+0JzEgAQ+kg==", "dependencies": { - "@shikijs/types": "1.24.4", - "@shikijs/vscode-textmate": "^9.3.1" + "@shikijs/types": "1.26.1", + "@shikijs/vscode-textmate": "^10.0.1" + } + }, + "node_modules/@shikijs/langs": { + "version": "1.26.1", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.26.1.tgz", + "integrity": "sha512-oz/TQiIqZejEIZbGtn68hbJijAOTtYH4TMMSWkWYozwqdpKR3EXgILneQy26WItmJjp3xVspHdiUxUCws4gtuw==", + "dependencies": { + "@shikijs/types": "1.26.1" + } + }, + "node_modules/@shikijs/themes": { + "version": "1.26.1", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.26.1.tgz", + "integrity": "sha512-JDxVn+z+wgLCiUhBGx2OQrLCkKZQGzNH3nAxFir4PjUcYiyD8Jdms9izyxIogYmSwmoPTatFTdzyrRKbKlSfPA==", + "dependencies": { + "@shikijs/types": "1.26.1" } }, "node_modules/@shikijs/types": { - "version": "1.24.4", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.24.4.tgz", - "integrity": "sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==", + "version": "1.26.1", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.26.1.tgz", + "integrity": "sha512-d4B00TKKAMaHuFYgRf3L0gwtvqpW4hVdVwKcZYbBfAAQXspgkbWqnFfuFl3MDH6gLbsubOcr+prcnsqah3ny7Q==", "dependencies": { - "@shikijs/vscode-textmate": "^9.3.1", + "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "node_modules/@shikijs/vscode-textmate": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.1.tgz", - "integrity": "sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==" + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.1.tgz", + "integrity": "sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==" }, "node_modules/@shuding/opentype.js": { "version": "1.4.0-beta.0", @@ -1898,9 +1914,9 @@ } }, "node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "version": "22.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.5.tgz", + "integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==", "dev": true, "dependencies": { "undici-types": "~6.20.0" @@ -4343,9 +4359,9 @@ } }, "node_modules/mdast-util-find-and-replace": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", - "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", @@ -5408,13 +5424,13 @@ } }, "node_modules/oniguruma-to-es": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-0.8.1.tgz", - "integrity": "sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-0.10.0.tgz", + "integrity": "sha512-zapyOUOCJxt+xhiNRPPMtfJkHGsZ98HHB9qJEkdT8BGytO/+kpe4m1Ngf0MzbzTmhacn11w9yGeDP6tzDhnCdg==", "dependencies": { "emoji-regex-xs": "^1.0.0", - "regex": "^5.0.2", - "regex-recursion": "^5.0.0" + "regex": "^5.1.1", + "regex-recursion": "^5.1.1" } }, "node_modules/package-json-from-dist": { @@ -5703,18 +5719,19 @@ "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==" }, "node_modules/regex": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/regex/-/regex-5.0.2.tgz", - "integrity": "sha512-/pczGbKIQgfTMRV0XjABvc5RzLqQmwqxLHdQao2RTXPk+pmTXB2P0IaUHYdYyk412YLwUIkaeMd5T+RzVgTqnQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", + "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", "dependencies": { "regex-utilities": "^2.3.0" } }, "node_modules/regex-recursion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.0.0.tgz", - "integrity": "sha512-UwyOqeobrCCqTXPcsSqH4gDhOjD5cI/b8kjngWgSZbxYh5yVjAwTjO5+hAuPRNiuR70+5RlWSs+U9PVcVcW9Lw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", + "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", "dependencies": { + "regex": "^5.1.1", "regex-utilities": "^2.3.0" } }, @@ -6567,9 +6584,9 @@ } }, "node_modules/satori": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/satori/-/satori-0.12.0.tgz", - "integrity": "sha512-e0e+qQyeFwEszujN7SpWpRtZgww7Nh8lSO3bUn2spHZ5JpqEl3zJ3P14/JlWruxEwdgREs35ZnavrPrWaRVFDg==", + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/satori/-/satori-0.12.1.tgz", + "integrity": "sha512-0SbjchvDrDbeXeQgxWVtSWxww7qcFgk3DtSE2/blHOSlLsSHwIqO2fCrtVa/EudJ7Eqno8A33QNx56rUyGbLuw==", "dependencies": { "@shuding/opentype.js": "1.4.0-beta.0", "css-background-parser": "^0.1.0", @@ -6730,15 +6747,17 @@ } }, "node_modules/shiki": { - "version": "1.24.4", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.24.4.tgz", - "integrity": "sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==", + "version": "1.26.1", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.26.1.tgz", + "integrity": "sha512-Gqg6DSTk3wYqaZ5OaYtzjcdxcBvX5kCy24yvRJEgjT5U+WHlmqCThLuBUx0juyxQBi+6ug53IGeuQS07DWwpcw==", "dependencies": { - "@shikijs/core": "1.24.4", - "@shikijs/engine-javascript": "1.24.4", - "@shikijs/engine-oniguruma": "1.24.4", - "@shikijs/types": "1.24.4", - "@shikijs/vscode-textmate": "^9.3.1", + "@shikijs/core": "1.26.1", + "@shikijs/engine-javascript": "1.26.1", + "@shikijs/engine-oniguruma": "1.26.1", + "@shikijs/langs": "1.26.1", + "@shikijs/themes": "1.26.1", + "@shikijs/types": "1.26.1", + "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, diff --git a/package.json b/package.json index e99b82835..5e2b21f2c 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "is-absolute-url": "^4.0.1", "js-yaml": "^4.1.0", "lightningcss": "^1.28.2", - "mdast-util-find-and-replace": "^3.0.1", + "mdast-util-find-and-replace": "^3.0.2", "mdast-util-to-hast": "^13.2.0", "mdast-util-to-string": "^4.0.0", "micromorph": "^0.4.5", @@ -83,10 +83,10 @@ "remark-smartypants": "^3.0.2", "rfdc": "^1.4.1", "rimraf": "^6.0.1", - "satori": "^0.12.0", + "satori": "^0.12.1", "serve-handler": "^6.1.6", "sharp": "^0.33.5", - "shiki": "^1.24.4", + "shiki": "^1.26.1", "source-map-support": "^0.5.21", "to-vfile": "^8.0.0", "toml": "^3.0.0", @@ -102,7 +102,7 @@ "@types/d3": "^7.4.3", "@types/hast": "^3.0.4", "@types/js-yaml": "^4.0.9", - "@types/node": "^22.10.2", + "@types/node": "^22.10.5", "@types/pretty-time": "^1.1.5", "@types/source-map-support": "^0.5.10", "@types/ws": "^8.5.13", diff --git a/quartz/plugins/transformers/ofm.ts b/quartz/plugins/transformers/ofm.ts index 87c22e69a..b0b0a42ef 100644 --- a/quartz/plugins/transformers/ofm.ts +++ b/quartz/plugins/transformers/ofm.ts @@ -1,5 +1,13 @@ import { QuartzTransformerPlugin } from "../types" -import { Root, Html, BlockContent, DefinitionContent, Paragraph, Code } from "mdast" +import { + Root, + Html, + BlockContent, + PhrasingContent, + DefinitionContent, + Paragraph, + Code, +} from "mdast" import { Element, Literal, Root as HtmlRoot } from "hast" import { ReplaceFunction, findAndReplace as mdastFindReplace } from "mdast-util-find-and-replace" import rehypeRaw from "rehype-raw" @@ -14,7 +22,6 @@ import checkboxScript from "../../components/scripts/checkbox.inline.ts" import { FilePath, pathToRoot, slugTag, slugifyFilePath } from "../../util/path" import { toHast } from "mdast-util-to-hast" import { toHtml } from "hast-util-to-html" -import { PhrasingContent } from "mdast-util-find-and-replace/lib" import { capitalize } from "../../util/lang" import { PluggableList } from "unified" From 992ac00f7c59232a468d8f5435554fcc23008013 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 00:02:49 -0500 Subject: [PATCH 36/45] chore(deps): bump the production-dependencies group with 7 updates (#1719) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 222 +++++++++++++++++++++++----------------------- package.json | 14 +-- 2 files changed, 118 insertions(+), 118 deletions(-) diff --git a/package-lock.json b/package-lock.json index 247f1e0a0..30d740c21 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "version": "4.4.0", "license": "MIT", "dependencies": { - "@clack/prompts": "^0.9.0", - "@floating-ui/dom": "^1.6.12", + "@clack/prompts": "^0.9.1", + "@floating-ui/dom": "^1.6.13", "@myriaddreamin/rehype-typst": "^0.5.4", "@napi-rs/simple-git": "0.1.19", "@tweenjs/tween.js": "^25.0.0", @@ -29,14 +29,14 @@ "hast-util-to-string": "^3.0.1", "is-absolute-url": "^4.0.1", "js-yaml": "^4.1.0", - "lightningcss": "^1.28.2", + "lightningcss": "^1.29.1", "mdast-util-find-and-replace": "^3.0.2", "mdast-util-to-hast": "^13.2.0", "mdast-util-to-string": "^4.0.0", "micromorph": "^0.4.5", "pixi.js": "^8.6.6", "preact": "^10.25.4", - "preact-render-to-string": "^6.5.12", + "preact-render-to-string": "^6.5.13", "pretty-bytes": "^6.1.1", "pretty-time": "^1.1.0", "reading-time": "^1.5.0", @@ -60,7 +60,7 @@ "satori": "^0.12.1", "serve-handler": "^6.1.6", "sharp": "^0.33.5", - "shiki": "^1.26.1", + "shiki": "^1.26.2", "source-map-support": "^0.5.21", "to-vfile": "^8.0.0", "toml": "^3.0.0", @@ -79,7 +79,7 @@ "@types/d3": "^7.4.3", "@types/hast": "^3.0.4", "@types/js-yaml": "^4.0.9", - "@types/node": "^22.10.5", + "@types/node": "^22.10.6", "@types/pretty-time": "^1.1.5", "@types/source-map-support": "^0.5.10", "@types/ws": "^8.5.13", @@ -87,7 +87,7 @@ "esbuild": "^0.24.2", "prettier": "^3.4.2", "tsx": "^4.19.2", - "typescript": "^5.7.2" + "typescript": "^5.7.3" }, "engines": { "node": "20 || >=22", @@ -187,20 +187,20 @@ } }, "node_modules/@clack/core": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.4.0.tgz", - "integrity": "sha512-YJCYBsyJfNDaTbvDUVSJ3SgSuPrcujarRgkJ5NLjexDZKvaOiVVJvAQYx8lIgG0qRT8ff0fPgqyBCVivanIZ+A==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.4.1.tgz", + "integrity": "sha512-Pxhij4UXg8KSr7rPek6Zowm+5M22rbd2g1nfojHJkxp5YkFqiZ2+YLEM/XGVIzvGOcM0nqjIFxrpDwWRZYWYjA==", "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "node_modules/@clack/prompts": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-0.9.0.tgz", - "integrity": "sha512-nGsytiExgUr4FL0pR/LeqxA28nz3E0cW7eLTSh3Iod9TGrbBt8Y7BHbV3mmkNC4G0evdYyQ3ZsbiBkk7ektArA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-0.9.1.tgz", + "integrity": "sha512-JIpyaboYZeWYlyP0H+OoPPxd6nqueG/CmN6ixBiNFsIDHREevjIf0n0Ohh5gr5C8pEDknzgvz+pIJ8dMhzWIeg==", "dependencies": { - "@clack/core": "0.4.0", + "@clack/core": "0.4.1", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } @@ -600,18 +600,18 @@ } }, "node_modules/@floating-ui/dom": { - "version": "1.6.12", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz", - "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", + "version": "1.6.13", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz", + "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", "dependencies": { "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.8" + "@floating-ui/utils": "^0.2.9" } }, "node_modules/@floating-ui/utils": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", - "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==" }, "node_modules/@img/sharp-darwin-arm64": { "version": "0.33.5", @@ -1473,57 +1473,57 @@ } }, "node_modules/@shikijs/core": { - "version": "1.26.1", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.26.1.tgz", - "integrity": "sha512-yeo7sG+WZQblKPclUOKRPwkv1PyoHYkJ4gP9DzhFJbTdueKR7wYTI1vfF/bFi1NTgc545yG/DzvVhZgueVOXMA==", + "version": "1.26.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.26.2.tgz", + "integrity": "sha512-ORyu3MrY7dCC7FDLDsFSkBM9b/AT9/Y8rH+UQ07Rtek48pp0ZhQOMPTKolqszP4bBCas6FqTZQYt18BBamVl/g==", "dependencies": { - "@shikijs/engine-javascript": "1.26.1", - "@shikijs/engine-oniguruma": "1.26.1", - "@shikijs/types": "1.26.1", + "@shikijs/engine-javascript": "1.26.2", + "@shikijs/engine-oniguruma": "1.26.2", + "@shikijs/types": "1.26.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.4" } }, "node_modules/@shikijs/engine-javascript": { - "version": "1.26.1", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.26.1.tgz", - "integrity": "sha512-CRhA0b8CaSLxS0E9A4Bzcb3LKBNpykfo9F85ozlNyArxjo2NkijtiwrJZ6eHa+NT5I9Kox2IXVdjUsP4dilsmw==", + "version": "1.26.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.26.2.tgz", + "integrity": "sha512-ngkIu9swLVo9Zt5QBtz5Sk08vmPcwuj01r7pPK/Zjmo2U2WyKMK4WMUMmkdQiUacdcLth0zt8u1onp4zhkFXKQ==", "dependencies": { - "@shikijs/types": "1.26.1", + "@shikijs/types": "1.26.2", "@shikijs/vscode-textmate": "^10.0.1", - "oniguruma-to-es": "0.10.0" + "oniguruma-to-es": "^1.0.0" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "1.26.1", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.26.1.tgz", - "integrity": "sha512-F5XuxN1HljLuvfXv7d+mlTkV7XukC1cawdtOo+7pKgPD83CAB1Sf8uHqP3PK0u7njFH0ZhoXE1r+0JzEgAQ+kg==", + "version": "1.26.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.26.2.tgz", + "integrity": "sha512-mlN7Qrs+w60nKrd7at7XkXSwz6728Pe34taDmHrG6LRHjzCqQ+ysg+/AT6/D2LMk0s2lsr71DjpI73430QP4/w==", "dependencies": { - "@shikijs/types": "1.26.1", + "@shikijs/types": "1.26.2", "@shikijs/vscode-textmate": "^10.0.1" } }, "node_modules/@shikijs/langs": { - "version": "1.26.1", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.26.1.tgz", - "integrity": "sha512-oz/TQiIqZejEIZbGtn68hbJijAOTtYH4TMMSWkWYozwqdpKR3EXgILneQy26WItmJjp3xVspHdiUxUCws4gtuw==", + "version": "1.26.2", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.26.2.tgz", + "integrity": "sha512-o5cdPycB2Kw3IgncHxWopWPiTkjAj7dG01fLkkUyj3glb5ftxL/Opecq9F54opMlrgXy7ZIqDERvFLlUzsCOuA==", "dependencies": { - "@shikijs/types": "1.26.1" + "@shikijs/types": "1.26.2" } }, "node_modules/@shikijs/themes": { - "version": "1.26.1", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.26.1.tgz", - "integrity": "sha512-JDxVn+z+wgLCiUhBGx2OQrLCkKZQGzNH3nAxFir4PjUcYiyD8Jdms9izyxIogYmSwmoPTatFTdzyrRKbKlSfPA==", + "version": "1.26.2", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.26.2.tgz", + "integrity": "sha512-y4Pn6PM5mODz/e3yF6jAUG7WLKJzqL2tJ5qMJCUkMUB1VRgtQVvoa1cHh7NScryGXyrYGJ8nPnRDhdv2rw0xpA==", "dependencies": { - "@shikijs/types": "1.26.1" + "@shikijs/types": "1.26.2" } }, "node_modules/@shikijs/types": { - "version": "1.26.1", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.26.1.tgz", - "integrity": "sha512-d4B00TKKAMaHuFYgRf3L0gwtvqpW4hVdVwKcZYbBfAAQXspgkbWqnFfuFl3MDH6gLbsubOcr+prcnsqah3ny7Q==", + "version": "1.26.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.26.2.tgz", + "integrity": "sha512-PO2jucx2FIdlLBPYbIUlMtWSLs5ulcRcuV93cR3T65lkK5SJP4MGBRt9kmWGXiQc0f7+FHj/0BEawditZcI/fQ==", "dependencies": { "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" @@ -1914,9 +1914,9 @@ } }, "node_modules/@types/node": { - "version": "22.10.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.5.tgz", - "integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==", + "version": "22.10.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.6.tgz", + "integrity": "sha512-qNiuwC4ZDAUNcY47xgaSuS92cjf8JbSUoaKS77bmLG1rU7MlATVSiw/IlrjtIyyskXBZ8KkNfjK/P5na7rgXbQ==", "dev": true, "dependencies": { "undici-types": "~6.20.0" @@ -4086,9 +4086,9 @@ } }, "node_modules/lightningcss": { - "version": "1.28.2", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.28.2.tgz", - "integrity": "sha512-ePLRrbt3fgjXI5VFZOLbvkLD5ZRuxGKm+wJ3ujCqBtL3NanDHPo/5zicR5uEKAPiIjBYF99BM4K4okvMznjkVA==", + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.1.tgz", + "integrity": "sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q==", "dependencies": { "detect-libc": "^1.0.3" }, @@ -4100,22 +4100,22 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-darwin-arm64": "1.28.2", - "lightningcss-darwin-x64": "1.28.2", - "lightningcss-freebsd-x64": "1.28.2", - "lightningcss-linux-arm-gnueabihf": "1.28.2", - "lightningcss-linux-arm64-gnu": "1.28.2", - "lightningcss-linux-arm64-musl": "1.28.2", - "lightningcss-linux-x64-gnu": "1.28.2", - "lightningcss-linux-x64-musl": "1.28.2", - "lightningcss-win32-arm64-msvc": "1.28.2", - "lightningcss-win32-x64-msvc": "1.28.2" + "lightningcss-darwin-arm64": "1.29.1", + "lightningcss-darwin-x64": "1.29.1", + "lightningcss-freebsd-x64": "1.29.1", + "lightningcss-linux-arm-gnueabihf": "1.29.1", + "lightningcss-linux-arm64-gnu": "1.29.1", + "lightningcss-linux-arm64-musl": "1.29.1", + "lightningcss-linux-x64-gnu": "1.29.1", + "lightningcss-linux-x64-musl": "1.29.1", + "lightningcss-win32-arm64-msvc": "1.29.1", + "lightningcss-win32-x64-msvc": "1.29.1" } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.28.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.28.2.tgz", - "integrity": "sha512-/8cPSqZiusHSS+WQz0W4NuaqFjquys1x+NsdN/XOHb+idGHJSoJ7SoQTVl3DZuAgtPZwFZgRfb/vd1oi8uX6+g==", + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.1.tgz", + "integrity": "sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw==", "cpu": [ "arm64" ], @@ -4132,9 +4132,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.28.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.28.2.tgz", - "integrity": "sha512-R7sFrXlgKjvoEG8umpVt/yutjxOL0z8KWf0bfPT3cYMOW4470xu5qSHpFdIOpRWwl3FKNMUdbKtMUjYt0h2j4g==", + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.1.tgz", + "integrity": "sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA==", "cpu": [ "x64" ], @@ -4151,9 +4151,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.28.2", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.28.2.tgz", - "integrity": "sha512-l2qrCT+x7crAY+lMIxtgvV10R8VurzHAoUZJaVFSlHrN8kRLTvEg9ObojIDIexqWJQvJcVVV3vfzsEynpiuvgA==", + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.1.tgz", + "integrity": "sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ==", "cpu": [ "x64" ], @@ -4170,9 +4170,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.28.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.28.2.tgz", - "integrity": "sha512-DKMzpICBEKnL53X14rF7hFDu8KKALUJtcKdFUCW5YOlGSiwRSgVoRjM97wUm/E0NMPkzrTi/rxfvt7ruNK8meg==", + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.1.tgz", + "integrity": "sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg==", "cpu": [ "arm" ], @@ -4189,9 +4189,9 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.28.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.28.2.tgz", - "integrity": "sha512-nhfjYkfymWZSxdtTNMWyhFk2ImUm0X7NAgJWFwnsYPOfmtWQEapzG/DXZTfEfMjSzERNUNJoQjPAbdqgB+sjiw==", + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.1.tgz", + "integrity": "sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ==", "cpu": [ "arm64" ], @@ -4208,9 +4208,9 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.28.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.28.2.tgz", - "integrity": "sha512-1SPG1ZTNnphWvAv8RVOymlZ8BDtAg69Hbo7n4QxARvkFVCJAt0cgjAw1Fox0WEhf4PwnyoOBaVH0Z5YNgzt4dA==", + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.1.tgz", + "integrity": "sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==", "cpu": [ "arm64" ], @@ -4227,9 +4227,9 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.28.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.28.2.tgz", - "integrity": "sha512-ZhQy0FcO//INWUdo/iEdbefntTdpPVQ0XJwwtdbBuMQe+uxqZoytm9M+iqR9O5noWFaxK+nbS2iR/I80Q2Ofpg==", + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.1.tgz", + "integrity": "sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==", "cpu": [ "x64" ], @@ -4246,9 +4246,9 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.28.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.28.2.tgz", - "integrity": "sha512-alb/j1NMrgQmSFyzTbN1/pvMPM+gdDw7YBuQ5VSgcFDypN3Ah0BzC2dTZbzwzaMdUVDszX6zH5MzjfVN1oGuww==", + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.1.tgz", + "integrity": "sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==", "cpu": [ "x64" ], @@ -4265,9 +4265,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.28.2", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.28.2.tgz", - "integrity": "sha512-WnwcjcBeAt0jGdjlgbT9ANf30pF0C/QMb1XnLnH272DQU8QXh+kmpi24R55wmWBwaTtNAETZ+m35ohyeMiNt+g==", + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.1.tgz", + "integrity": "sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==", "cpu": [ "arm64" ], @@ -4284,9 +4284,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.28.2", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.28.2.tgz", - "integrity": "sha512-3piBifyT3avz22o6mDKywQC/OisH2yDK+caHWkiMsF82i3m5wDBadyCjlCQ5VNgzYkxrWZgiaxHDdd5uxsi0/A==", + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.1.tgz", + "integrity": "sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q==", "cpu": [ "x64" ], @@ -5424,9 +5424,9 @@ } }, "node_modules/oniguruma-to-es": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-0.10.0.tgz", - "integrity": "sha512-zapyOUOCJxt+xhiNRPPMtfJkHGsZ98HHB9qJEkdT8BGytO/+kpe4m1Ngf0MzbzTmhacn11w9yGeDP6tzDhnCdg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-1.0.0.tgz", + "integrity": "sha512-kihvp0O4lFwf5tZMkfanwQLIZ9ORe9OeOFgZonH0BQeThgwfJiaZFeOfvvJVnJIM9TiVmx0RDD35hUJDR0++rQ==", "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^5.1.1", @@ -5614,9 +5614,9 @@ } }, "node_modules/preact-render-to-string": { - "version": "6.5.12", - "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-6.5.12.tgz", - "integrity": "sha512-FpU7/cRipZo4diSWQq7gZWVp+Px76CtVduJZNvQwVzynDsAIxKteMrjCCGPbM2oEasReoDffaeMCMlaur9ohIg==", + "version": "6.5.13", + "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-6.5.13.tgz", + "integrity": "sha512-iGPd+hKPMFKsfpR2vL4kJ6ZPcFIoWZEcBf0Dpm3zOpdVvj77aY8RlLiQji5OMrngEyaxGogeakTb54uS2FvA6w==", "peerDependencies": { "preact": ">=10" } @@ -6747,16 +6747,16 @@ } }, "node_modules/shiki": { - "version": "1.26.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.26.1.tgz", - "integrity": "sha512-Gqg6DSTk3wYqaZ5OaYtzjcdxcBvX5kCy24yvRJEgjT5U+WHlmqCThLuBUx0juyxQBi+6ug53IGeuQS07DWwpcw==", + "version": "1.26.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.26.2.tgz", + "integrity": "sha512-iP7u2NA9A6JwRRCkIUREEX2cMhlYV5EBmbbSlfSRvPThwca8HBRbVkWuNWW+kw9+i6BSUZqqG6YeUs5dC2SjZw==", "dependencies": { - "@shikijs/core": "1.26.1", - "@shikijs/engine-javascript": "1.26.1", - "@shikijs/engine-oniguruma": "1.26.1", - "@shikijs/langs": "1.26.1", - "@shikijs/themes": "1.26.1", - "@shikijs/types": "1.26.1", + "@shikijs/core": "1.26.2", + "@shikijs/engine-javascript": "1.26.2", + "@shikijs/engine-oniguruma": "1.26.2", + "@shikijs/langs": "1.26.2", + "@shikijs/themes": "1.26.2", + "@shikijs/types": "1.26.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } @@ -7548,9 +7548,9 @@ } }, "node_modules/typescript": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", - "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", "dev": true, "bin": { "tsc": "bin/tsc", diff --git a/package.json b/package.json index 5e2b21f2c..726350b3b 100644 --- a/package.json +++ b/package.json @@ -35,8 +35,8 @@ "quartz": "./quartz/bootstrap-cli.mjs" }, "dependencies": { - "@clack/prompts": "^0.9.0", - "@floating-ui/dom": "^1.6.12", + "@clack/prompts": "^0.9.1", + "@floating-ui/dom": "^1.6.13", "@myriaddreamin/rehype-typst": "^0.5.4", "@napi-rs/simple-git": "0.1.19", "@tweenjs/tween.js": "^25.0.0", @@ -55,14 +55,14 @@ "hast-util-to-string": "^3.0.1", "is-absolute-url": "^4.0.1", "js-yaml": "^4.1.0", - "lightningcss": "^1.28.2", + "lightningcss": "^1.29.1", "mdast-util-find-and-replace": "^3.0.2", "mdast-util-to-hast": "^13.2.0", "mdast-util-to-string": "^4.0.0", "micromorph": "^0.4.5", "pixi.js": "^8.6.6", "preact": "^10.25.4", - "preact-render-to-string": "^6.5.12", + "preact-render-to-string": "^6.5.13", "pretty-bytes": "^6.1.1", "pretty-time": "^1.1.0", "reading-time": "^1.5.0", @@ -86,7 +86,7 @@ "satori": "^0.12.1", "serve-handler": "^6.1.6", "sharp": "^0.33.5", - "shiki": "^1.26.1", + "shiki": "^1.26.2", "source-map-support": "^0.5.21", "to-vfile": "^8.0.0", "toml": "^3.0.0", @@ -102,7 +102,7 @@ "@types/d3": "^7.4.3", "@types/hast": "^3.0.4", "@types/js-yaml": "^4.0.9", - "@types/node": "^22.10.5", + "@types/node": "^22.10.6", "@types/pretty-time": "^1.1.5", "@types/source-map-support": "^0.5.10", "@types/ws": "^8.5.13", @@ -110,6 +110,6 @@ "esbuild": "^0.24.2", "prettier": "^3.4.2", "tsx": "^4.19.2", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } From 8cf3e3001f2cbd18da73fcc92ae5f4b76d3ecf21 Mon Sep 17 00:00:00 2001 From: "Patsagorn Y." <49602385+ptsgrn@users.noreply.github.com> Date: Fri, 17 Jan 2025 03:44:33 +0700 Subject: [PATCH 37/45] feat(i18n): Thai translations (#1722) --- quartz/i18n/index.ts | 2 + quartz/i18n/locales/th-TH.ts | 82 ++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 quartz/i18n/locales/th-TH.ts diff --git a/quartz/i18n/index.ts b/quartz/i18n/index.ts index 97b0323b8..66200ae07 100644 --- a/quartz/i18n/index.ts +++ b/quartz/i18n/index.ts @@ -22,6 +22,7 @@ import fa from "./locales/fa-IR" import pl from "./locales/pl-PL" import cs from "./locales/cs-CZ" import tr from "./locales/tr-TR" +import th from "./locales/th-TH" export const TRANSLATIONS = { "en-US": enUs, @@ -68,6 +69,7 @@ export const TRANSLATIONS = { "pl-PL": pl, "cs-CZ": cs, "tr-TR": tr, + "th-TH": th, } as const export const defaultTranslation = "en-US" diff --git a/quartz/i18n/locales/th-TH.ts b/quartz/i18n/locales/th-TH.ts new file mode 100644 index 000000000..4ea84868c --- /dev/null +++ b/quartz/i18n/locales/th-TH.ts @@ -0,0 +1,82 @@ +import { Translation } from "./definition" + +export default { + propertyDefaults: { + title: "ไม่มีชื่อ", + description: "ไม่ได้ระบุคำอธิบายย่อ", + }, + components: { + callout: { + note: "หมายเหตุ", + abstract: "บทคัดย่อ", + info: "ข้อมูล", + todo: "ต้องทำเพิ่มเติม", + tip: "คำแนะนำ", + success: "เรียบร้อย", + question: "คำถาม", + warning: "คำเตือน", + failure: "ข้อผิดพลาด", + danger: "อันตราย", + bug: "บั๊ก", + example: "ตัวอย่าง", + quote: "คำพูกยกมา", + }, + backlinks: { + title: "หน้าที่กล่าวถึง", + noBacklinksFound: "ไม่มีหน้าที่โยงมาหน้านี้", + }, + themeToggle: { + lightMode: "โหมดสว่าง", + darkMode: "โหมดมืด", + }, + explorer: { + title: "รายการหน้า", + }, + footer: { + createdWith: "สร้างด้วย", + }, + graph: { + title: "มุมมองกราฟ", + }, + recentNotes: { + title: "บันทึกล่าสุด", + seeRemainingMore: ({ remaining }) => `ดูเพิ่มอีก ${remaining} รายการ →`, + }, + transcludes: { + transcludeOf: ({ targetSlug }) => `รวมข้ามเนื้อหาจาก ${targetSlug}`, + linkToOriginal: "ดูหน้าต้นทาง", + }, + search: { + title: "ค้นหา", + searchBarPlaceholder: "ค้นหาบางอย่าง", + }, + tableOfContents: { + title: "สารบัญ", + }, + contentMeta: { + readingTime: ({ minutes }) => `อ่านราว ${minutes} นาที`, + }, + }, + pages: { + rss: { + recentNotes: "บันทึกล่าสุด", + lastFewNotes: ({ count }) => `${count} บันทึกล่าสุด`, + }, + error: { + title: "ไม่มีหน้านี้", + notFound: "หน้านี้อาจตั้งค่าเป็นส่วนตัวหรือยังไม่ถูกสร้าง", + home: "กลับหน้าหลัก", + }, + folderContent: { + folder: "โฟลเดอร์", + itemsUnderFolder: ({ count }) => `มี ${count} รายการในโฟลเดอร์นี้`, + }, + tagContent: { + tag: "แท็ก", + tagIndex: "แท็กทั้งหมด", + itemsUnderTag: ({ count }) => `มี ${count} รายการในแท็กนี้`, + showingFirst: ({ count }) => `แสดง ${count} แท็กแรก`, + totalTags: ({ count }) => `มีทั้งหมด ${count} แท็ก`, + }, + }, +} as const satisfies Translation From 01943ff5a0f546003ed4b3677d8a3a3ba6c7814c Mon Sep 17 00:00:00 2001 From: Mantvydas Deltuva Date: Tue, 21 Jan 2025 07:20:02 +0200 Subject: [PATCH 38/45] feat(i18n): Lithuanian (#1733) --- quartz/i18n/index.ts | 2 + quartz/i18n/locales/lt-LT.ts | 104 +++++++++++++++++++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 quartz/i18n/locales/lt-LT.ts diff --git a/quartz/i18n/index.ts b/quartz/i18n/index.ts index 66200ae07..7c8996b50 100644 --- a/quartz/i18n/index.ts +++ b/quartz/i18n/index.ts @@ -23,6 +23,7 @@ import pl from "./locales/pl-PL" import cs from "./locales/cs-CZ" import tr from "./locales/tr-TR" import th from "./locales/th-TH" +import lt from "./locales/lt-LT" export const TRANSLATIONS = { "en-US": enUs, @@ -70,6 +71,7 @@ export const TRANSLATIONS = { "cs-CZ": cs, "tr-TR": tr, "th-TH": th, + "lt-LT": lt, } as const export const defaultTranslation = "en-US" diff --git a/quartz/i18n/locales/lt-LT.ts b/quartz/i18n/locales/lt-LT.ts new file mode 100644 index 000000000..d48e593c9 --- /dev/null +++ b/quartz/i18n/locales/lt-LT.ts @@ -0,0 +1,104 @@ +import { Translation } from "./definition" + +export default { + propertyDefaults: { + title: "Be Pavadinimo", + description: "Aprašymas Nepateiktas", + }, + components: { + callout: { + note: "Pastaba", + abstract: "Santrauka", + info: "Informacija", + todo: "Darbų sąrašas", + tip: "Patarimas", + success: "Sėkmingas", + question: "Klausimas", + warning: "Įspėjimas", + failure: "Nesėkmingas", + danger: "Pavojus", + bug: "Klaida", + example: "Pavyzdys", + quote: "Citata", + }, + backlinks: { + title: "Atgalinės Nuorodos", + noBacklinksFound: "Atgalinių Nuorodų Nerasta", + }, + themeToggle: { + lightMode: "Šviesus Režimas", + darkMode: "Tamsus Režimas", + }, + explorer: { + title: "Naršyklė", + }, + footer: { + createdWith: "Sukurta Su", + }, + graph: { + title: "Grafiko Vaizdas", + }, + recentNotes: { + title: "Naujausi Užrašai", + seeRemainingMore: ({ remaining }) => `Peržiūrėti dar ${remaining} →`, + }, + transcludes: { + transcludeOf: ({ targetSlug }) => `Įterpimas iš ${targetSlug}`, + linkToOriginal: "Nuoroda į originalą", + }, + search: { + title: "Paieška", + searchBarPlaceholder: "Ieškoti", + }, + tableOfContents: { + title: "Turinys", + }, + contentMeta: { + readingTime: ({ minutes }) => `${minutes} min skaitymo`, + }, + }, + pages: { + rss: { + recentNotes: "Naujausi užrašai", + lastFewNotes: ({ count }) => + count === 1 + ? "Paskutinis 1 užrašas" + : count < 10 + ? `Paskutiniai ${count} užrašai` + : `Paskutiniai ${count} užrašų`, + }, + error: { + title: "Nerasta", + notFound: + "Arba šis puslapis yra pasiekiamas tik tam tikriems vartotojams, arba tokio puslapio nėra.", + home: "Grįžti į pagrindinį puslapį", + }, + folderContent: { + folder: "Aplankas", + itemsUnderFolder: ({ count }) => + count === 1 + ? "1 elementas šiame aplanke." + : count < 10 + ? `${count} elementai šiame aplanke.` + : `${count} elementų šiame aplanke.`, + }, + tagContent: { + tag: "Žyma", + tagIndex: "Žymų indeksas", + itemsUnderTag: ({ count }) => + count === 1 + ? "1 elementas su šia žyma." + : count < 10 + ? `${count} elementai su šia žyma.` + : `${count} elementų su šia žyma.`, + showingFirst: ({ count }) => + count < 10 ? `Rodomos pirmosios ${count} žymos.` : `Rodomos pirmosios ${count} žymų.`, + totalTags: ({ count }) => + count === 1 + ? "Rasta iš viso 1 žyma." + : count < 10 + ? `Rasta iš viso ${count} žymos.` + : `Rasta iš viso ${count} žymų.`, + }, + }, +} as const satisfies Translation From 4e4930ef9c2e2ddb9bcb1436660d3a3002c19844 Mon Sep 17 00:00:00 2001 From: Anton Bulakh Date: Fri, 24 Jan 2025 05:19:46 +0200 Subject: [PATCH 39/45] chore(styles): omit sass deprecation warnings (#1737) update to newer API --- quartz/styles/base.scss | 35 +++++++++++++++++++---------------- quartz/styles/variables.scss | 10 ++++++---- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/quartz/styles/base.scss b/quartz/styles/base.scss index 29ddc5aa5..438949108 100644 --- a/quartz/styles/base.scss +++ b/quartz/styles/base.scss @@ -1,3 +1,5 @@ +@use "sass:map"; + @use "./variables.scss" as *; @use "./syntax.scss"; @use "./callouts.scss"; @@ -121,7 +123,7 @@ a { } .page { - max-width: calc(#{map-get($breakpoints, desktop)} + 300px); + max-width: calc(#{map.get($breakpoints, desktop)} + 300px); margin: 0 auto; & article { & > h1 { @@ -151,24 +153,25 @@ a { & > #quartz-body { display: grid; - grid-template-columns: #{map-get($desktopGrid, templateColumns)}; - grid-template-rows: #{map-get($desktopGrid, templateRows)}; - column-gap: #{map-get($desktopGrid, columnGap)}; - row-gap: #{map-get($desktopGrid, rowGap)}; - grid-template-areas: #{map-get($desktopGrid, templateAreas)}; + grid-template-columns: #{map.get($desktopGrid, templateColumns)}; + grid-template-rows: #{map.get($desktopGrid, templateRows)}; + column-gap: #{map.get($desktopGrid, columnGap)}; + row-gap: #{map.get($desktopGrid, rowGap)}; + grid-template-areas: #{map.get($desktopGrid, templateAreas)}; + @media all and ($tablet) { - grid-template-columns: #{map-get($tabletGrid, templateColumns)}; - grid-template-rows: #{map-get($tabletGrid, templateRows)}; - column-gap: #{map-get($tabletGrid, columnGap)}; - row-gap: #{map-get($tabletGrid, rowGap)}; - grid-template-areas: #{map-get($tabletGrid, templateAreas)}; + grid-template-columns: #{map.get($tabletGrid, templateColumns)}; + grid-template-rows: #{map.get($tabletGrid, templateRows)}; + column-gap: #{map.get($tabletGrid, columnGap)}; + row-gap: #{map.get($tabletGrid, rowGap)}; + grid-template-areas: #{map.get($tabletGrid, templateAreas)}; } @media all and ($mobile) { - grid-template-columns: #{map-get($mobileGrid, templateColumns)}; - grid-template-rows: #{map-get($mobileGrid, templateRows)}; - column-gap: #{map-get($mobileGrid, columnGap)}; - row-gap: #{map-get($mobileGrid, rowGap)}; - grid-template-areas: #{map-get($mobileGrid, templateAreas)}; + grid-template-columns: #{map.get($mobileGrid, templateColumns)}; + grid-template-rows: #{map.get($mobileGrid, templateRows)}; + column-gap: #{map.get($mobileGrid, columnGap)}; + row-gap: #{map.get($mobileGrid, rowGap)}; + grid-template-areas: #{map.get($mobileGrid, templateAreas)}; } @media all and not ($desktop) { diff --git a/quartz/styles/variables.scss b/quartz/styles/variables.scss index 4a5cea583..f61adfcdd 100644 --- a/quartz/styles/variables.scss +++ b/quartz/styles/variables.scss @@ -1,3 +1,5 @@ +@use "sass:map"; + /** * Layout breakpoints * $mobile: screen width below this value will use mobile styles @@ -10,11 +12,11 @@ $breakpoints: ( desktop: 1200px, ); -$mobile: "(max-width: #{map-get($breakpoints, mobile)})"; -$tablet: "(min-width: #{map-get($breakpoints, mobile)}) and (max-width: #{map-get($breakpoints, desktop)})"; -$desktop: "(min-width: #{map-get($breakpoints, desktop)})"; +$mobile: "(max-width: #{map.get($breakpoints, mobile)})"; +$tablet: "(min-width: #{map.get($breakpoints, mobile)}) and (max-width: #{map.get($breakpoints, desktop)})"; +$desktop: "(min-width: #{map.get($breakpoints, desktop)})"; -$pageWidth: #{map-get($breakpoints, mobile)}; +$pageWidth: #{map.get($breakpoints, mobile)}; $sidePanelWidth: 320px; //380px; $topSpacing: 6rem; $boldWeight: 700; From 7be47742a6dc86f22d148ca9d304f7a9eea318cf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 31 Jan 2025 06:46:45 -0500 Subject: [PATCH 40/45] chore(deps): bump the production-dependencies group across 1 directory with 3 updates (#1744) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 27 +++++++++++++++------------ package.json | 6 +++--- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 30d740c21..d84ab5bc0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,7 +34,7 @@ "mdast-util-to-hast": "^13.2.0", "mdast-util-to-string": "^4.0.0", "micromorph": "^0.4.5", - "pixi.js": "^8.6.6", + "pixi.js": "^8.7.3", "preact": "^10.25.4", "preact-render-to-string": "^6.5.13", "pretty-bytes": "^6.1.1", @@ -79,10 +79,10 @@ "@types/d3": "^7.4.3", "@types/hast": "^3.0.4", "@types/js-yaml": "^4.0.9", - "@types/node": "^22.10.6", + "@types/node": "^22.12.0", "@types/pretty-time": "^1.1.5", "@types/source-map-support": "^0.5.10", - "@types/ws": "^8.5.13", + "@types/ws": "^8.5.14", "@types/yargs": "^17.0.33", "esbuild": "^0.24.2", "prettier": "^3.4.2", @@ -1914,10 +1914,11 @@ } }, "node_modules/@types/node": { - "version": "22.10.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.6.tgz", - "integrity": "sha512-qNiuwC4ZDAUNcY47xgaSuS92cjf8JbSUoaKS77bmLG1rU7MlATVSiw/IlrjtIyyskXBZ8KkNfjK/P5na7rgXbQ==", + "version": "22.12.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.12.0.tgz", + "integrity": "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~6.20.0" } @@ -1943,10 +1944,11 @@ "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" }, "node_modules/@types/ws": { - "version": "8.5.13", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz", - "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.14.tgz", + "integrity": "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -5583,9 +5585,10 @@ } }, "node_modules/pixi.js": { - "version": "8.6.6", - "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-8.6.6.tgz", - "integrity": "sha512-o5pw7G2yuIrnBx0G4npBlmFp+XGNcapI/Ufs62rRj/4XKxc1Zo74YJr/BtEXcXTraTKd+pQvYOLvnfxRjxBMvQ==", + "version": "8.7.3", + "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-8.7.3.tgz", + "integrity": "sha512-wfWlhJYnGx1s4f2yoouevQjaeacbJ12LTkJGa+n9AIYNIjOnmJylBtZ2mARX7iFk3mr2xv0wuo//XPe2hk5OBw==", + "license": "MIT", "dependencies": { "@pixi/colord": "^2.9.6", "@types/css-font-loading-module": "^0.0.12", diff --git a/package.json b/package.json index 726350b3b..192a8abcc 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "mdast-util-to-hast": "^13.2.0", "mdast-util-to-string": "^4.0.0", "micromorph": "^0.4.5", - "pixi.js": "^8.6.6", + "pixi.js": "^8.7.3", "preact": "^10.25.4", "preact-render-to-string": "^6.5.13", "pretty-bytes": "^6.1.1", @@ -102,10 +102,10 @@ "@types/d3": "^7.4.3", "@types/hast": "^3.0.4", "@types/js-yaml": "^4.0.9", - "@types/node": "^22.10.6", + "@types/node": "^22.12.0", "@types/pretty-time": "^1.1.5", "@types/source-map-support": "^0.5.10", - "@types/ws": "^8.5.13", + "@types/ws": "^8.5.14", "@types/yargs": "^17.0.33", "esbuild": "^0.24.2", "prettier": "^3.4.2", From fbc45548f7ee80715ec74d8c249c662a26f7feae Mon Sep 17 00:00:00 2001 From: Aaron Pham Date: Sat, 1 Feb 2025 16:22:29 -0500 Subject: [PATCH 41/45] feat(graph): enable radial mode (#1738) --- docs/features/graph view.md | 2 ++ quartz/components/Graph.tsx | 5 ++++- quartz/components/scripts/graph.inline.ts | 11 +++++++++-- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/docs/features/graph view.md b/docs/features/graph view.md index 4f905c78d..19f086286 100644 --- a/docs/features/graph view.md +++ b/docs/features/graph view.md @@ -36,6 +36,7 @@ Component.Graph({ opacityScale: 1, // how quickly do we fade out the labels when zooming out? removeTags: [], // what tags to remove from the graph showTags: true, // whether to show tags in the graph + enableRadial: false, // whether to constrain the graph, similar to Obsidian }, globalGraph: { drag: true, @@ -49,6 +50,7 @@ Component.Graph({ opacityScale: 1, removeTags: [], // what tags to remove from the graph showTags: true, // whether to show tags in the graph + enableRadial: true, // whether to constrain the graph, similar to Obsidian }, }) ``` diff --git a/quartz/components/Graph.tsx b/quartz/components/Graph.tsx index ec3475d1e..e8b462da0 100644 --- a/quartz/components/Graph.tsx +++ b/quartz/components/Graph.tsx @@ -18,6 +18,7 @@ export interface D3Config { removeTags: string[] showTags: boolean focusOnHover?: boolean + enableRadial?: boolean } interface GraphOptions { @@ -39,6 +40,7 @@ const defaultOptions: GraphOptions = { showTags: true, removeTags: [], focusOnHover: false, + enableRadial: false, }, globalGraph: { drag: true, @@ -53,10 +55,11 @@ const defaultOptions: GraphOptions = { showTags: true, removeTags: [], focusOnHover: true, + enableRadial: true, }, } -export default ((opts?: GraphOptions) => { +export default ((opts?: Partial) => { const Graph: QuartzComponent = ({ displayClass, cfg }: QuartzComponentProps) => { const localGraph = { ...defaultOptions.localGraph, ...opts?.localGraph } const globalGraph = { ...defaultOptions.globalGraph, ...opts?.globalGraph } diff --git a/quartz/components/scripts/graph.inline.ts b/quartz/components/scripts/graph.inline.ts index dbddae91f..16ee33f64 100644 --- a/quartz/components/scripts/graph.inline.ts +++ b/quartz/components/scripts/graph.inline.ts @@ -8,6 +8,7 @@ import { forceCenter, forceLink, forceCollide, + forceRadial, zoomIdentity, select, drag, @@ -87,6 +88,7 @@ async function renderGraph(container: string, fullSlug: FullSlug) { removeTags, showTags, focusOnHover, + enableRadial, } = JSON.parse(graph.dataset["cfg"]!) as D3Config const data: Map = new Map( @@ -161,15 +163,20 @@ async function renderGraph(container: string, fullSlug: FullSlug) { })), } + const width = graph.offsetWidth + const height = Math.max(graph.offsetHeight, 250) + // we virtualize the simulation and use pixi to actually render it + // Calculate the radius of the container circle + const radius = Math.min(width, height) / 2 - 40 // 40px padding const simulation: Simulation = forceSimulation(graphData.nodes) .force("charge", forceManyBody().strength(-100 * repelForce)) .force("center", forceCenter().strength(centerForce)) .force("link", forceLink(graphData.links).distance(linkDistance)) .force("collide", forceCollide((n) => nodeRadius(n)).iterations(3)) - const width = graph.offsetWidth - const height = Math.max(graph.offsetHeight, 250) + if (enableRadial) + simulation.force("radial", forceRadial(radius * 0.8, width / 2, height / 2).strength(0.3)) // precompute style prop strings as pixi doesn't support css variables const cssVars = [ From 91189dfd2f4cb32e205117b327e0ae7a0c2dd716 Mon Sep 17 00:00:00 2001 From: Emile Bangma Date: Mon, 3 Feb 2025 15:25:42 +0100 Subject: [PATCH 42/45] feat(explorer): collapsible mobile explorer (#1471) Co-authored-by: Aaron Pham --- quartz.layout.ts | 4 +- quartz/components/Explorer.tsx | 38 ++++- quartz/components/scripts/explorer.inline.ts | 155 ++++++++++++++----- quartz/components/styles/explorer.scss | 150 +++++++++++++++++- 4 files changed, 296 insertions(+), 51 deletions(-) diff --git a/quartz.layout.ts b/quartz.layout.ts index 4a78256aa..f45da0c92 100644 --- a/quartz.layout.ts +++ b/quartz.layout.ts @@ -27,7 +27,7 @@ export const defaultContentPageLayout: PageLayout = { Component.MobileOnly(Component.Spacer()), Component.Search(), Component.Darkmode(), - Component.DesktopOnly(Component.Explorer()), + Component.Explorer(), ], right: [ Component.Graph(), @@ -44,7 +44,7 @@ export const defaultListPageLayout: PageLayout = { Component.MobileOnly(Component.Spacer()), Component.Search(), Component.Darkmode(), - Component.DesktopOnly(Component.Explorer()), + Component.Explorer(), ], right: [], } diff --git a/quartz/components/Explorer.tsx b/quartz/components/Explorer.tsx index ec7c48ef7..ac276a8bc 100644 --- a/quartz/components/Explorer.tsx +++ b/quartz/components/Explorer.tsx @@ -1,5 +1,5 @@ import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" -import explorerStyle from "./styles/explorer.scss" +import style from "./styles/explorer.scss" // @ts-ignore import script from "./scripts/explorer.inline" @@ -83,18 +83,46 @@ export default ((userOpts?: Partial) => { lastBuildId = ctx.buildId constructFileTree(allFiles) } - return (
    +