diff --git a/.vscode/settings.json b/.vscode/settings.json index 21279bd6..ec280134 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -15,7 +15,6 @@ "scss.validate": false, "less.validate": false, "typescript.tsdk": "node_modules/typescript/lib", - "eslint.experimental.useFlatConfig": true, "stylelint.packageManager": "pnpm", "eslint.rules.customizations": [ { "rule": "style/*", "severity": "off" }, diff --git a/docs/.vuepress/notes.ts b/docs/.vuepress/notes.ts index fb958cae..46528174 100644 --- a/docs/.vuepress/notes.ts +++ b/docs/.vuepress/notes.ts @@ -50,7 +50,7 @@ export const zhNotes = definePlumeNotesConfig({ icon: 'lucide:box', collapsed: false, dir: '功能', - items: ['代码复制', '内容搜索', '评论', '加密', '组件', '友情链接页', 'seo', 'sitemap'], + items: ['代码复制', '内容搜索', '评论', '加密', '组件', '文章水印', '友情链接页', 'seo', 'sitemap'], }, { text: '自定义', diff --git a/docs/.vuepress/theme.ts b/docs/.vuepress/theme.ts index c784a3da..cb91c0da 100644 --- a/docs/.vuepress/theme.ts +++ b/docs/.vuepress/theme.ts @@ -41,6 +41,11 @@ export const theme: Theme = themePlume({ { icon: 'xbox', link: 'https://pengzhanbo.cn' }, ], + watermark: { + global: false, + content: 'VuePress Plume', + }, + footer: { copyright: 'Copyright © 2021-present pengzhanbo' }, locales: { diff --git a/docs/1.示例/markdown基础.md b/docs/1.示例/markdown基础.md index df046f89..110cf4b0 100644 --- a/docs/1.示例/markdown基础.md +++ b/docs/1.示例/markdown基础.md @@ -16,11 +16,14 @@ Markdown 的目标是实现「易读易写」。 ## 概述 -不过最需要强调的便是它的可读性。一份使用 Markdown 格式撰写的文件应该可以直接以纯文字发佈,并且看起来不会像是由许多标签或是格式指令所构成。Markdown 语法受到一些既有 text-to-HTML 格式的影响,包括 [Setext][1]、[atx][2]、[Textile][3]、[reStructuredText][4]、[Grutatext][5] 和 [EtText][6],然而最大灵感来源其实是纯文字的电子邮件格式。 +不过最需要强调的便是它的可读性。一份使用 Markdown 格式撰写的文件应该可以直接以纯文字发佈,并且看起来不会像是由许多标签或是格式指令所构成。Markdown 语法受到一些既有 text-to-HTML 格式的影响, +包括 [Setext][1]、[atx][2]、[Textile][3]、[reStructuredText][4]、[Grutatext][5] 和 [EtText][6],然而最大灵感来源其实是纯文字的电子邮件格式。 因此 Markdown 的语法全由标点符号所组成,并经过严谨慎选,是为了让它们看起来就像所要表达的意思。像是在文字两旁加上星号,看起来就像\*强调\*。Markdown 的列表看起来,嗯,就是列表。假如你有使用过电子邮件,引言写法看起来就真的像是引用一段文字。 -Markdown 具有一系列衍生版本,用于扩展 Markdown 的功能 (如表格、脚注、内嵌 HTML 等等) ,这些功能原初的 Markdown 尚不具备,它们能让 Markdown 转换成更多的格式,例如 LaTeX,Docbook。Markdown 增强版中比较有名的有 Markdown Extra、MultiMarkdown、 Maruku 等。这些衍生版本要么基于工具,如 Pandoc;要么基于网站,如 GitHub 和 Wikipedia,在语法上基本兼容,但在一些语法和渲染效果上有改动。 +Markdown 具有一系列衍生版本,用于扩展 Markdown 的功能 (如表格、脚注、内嵌 HTML 等等) , +这些功能原初的 Markdown 尚不具备,它们能让 Markdown 转换成更多的格式,例如 LaTeX,Docbook。 +Markdown 增强版中比较有名的有 Markdown Extra、MultiMarkdown、 Maruku 等。这些衍生版本要么基于工具,如 Pandoc;要么基于网站,如 GitHub 和 Wikipedia,在语法上基本兼容,但在一些语法和渲染效果上有改动。 ## 用途 @@ -36,7 +39,8 @@ Markdown 的语法简洁明了、学习容易,而且功能比纯文本更强 不在 Markdown 涵盖范围之外的标签,都可以直接在文件里面用 HTML 撰写。不需要额外标注这是 HTML 或是 Markdown;只要直接加标签就可以了。 -只有块元素 ── 比如 `
`、``、`
`、`

` 等标签,必须在前后加上空行,以利与内容区隔。而且这些 (元素) 的开始与结尾标签,不可以用 tab 或是空白来缩进。Markdown 的解析器有智慧型判断,可以避免在块标签前后加上没有必要的 `

` 标签。 +只有块元素 ── 比如 `

`、`
`、`
`、`

` 等标签,必须在前后加上空行,以利与内容区隔。 +而且这些 (元素) 的开始与结尾标签,不可以用 tab 或是空白来缩进。Markdown 的解析器有智慧型判断,可以避免在块标签前后加上没有必要的 `

` 标签。 举例来说,在 Markdown 文件里加上一段 HTML 表格: @@ -98,7 +102,9 @@ Markdown 将会把它转换为: 4 < 5 ``` -不过需要注意的是,code 范围内,不论是行内还是块, `<` 和 `&` 两个符号都*一定*会被转换成 HTML 实体,这项特性让你可以很容易地用 Markdown 写 HTML code (和 HTML 相对而言, HTML 语法中,你要把所有的 `<` 和 `&` 都转换为 HTML 实体,才能在 HTML 文件里面写出 HTML code。) +不过需要注意的是,code 范围内,不论是行内还是块, `<` 和 `&` 两个符号都*一定*会被转换成 HTML 实体, +这项特性让你可以很容易地用 Markdown 写 HTML code (和 HTML 相对而言, HTML 语法中, +你要把所有的 `<` 和 `&` 都转换为 HTML 实体,才能在 HTML 文件里面写出 HTML code。) --- @@ -108,7 +114,9 @@ Markdown 将会把它转换为: 一个段落是由一个以上相连接的行句组成,而一个以上的空行则会切分出不同的段落 (空行的定义是显示上看起来像是空行,便会被视为空行。比方说,若某一行只包含空白和 tab,则该行也会被视为空行) ,一般的段落不需要用空白或断行缩进。 -「一个以上相连接的行句组成」这句话其实暗示了 Markdown 允许段落内的强迫断行,这个特性和其他大部分的 text-to-HTML 格式不一样 (包括 MovableType 的「Convert Line Breaks」选项) ,其它的格式会把每个断行都转成 `
` 标签。 +「一个以上相连接的行句组成」这句话其实暗示了 Markdown 允许段落内的强迫断行, +这个特性和其他大部分的 text-to-HTML 格式不一样 (包括 MovableType 的「Convert Line Breaks」选项) , +其它的格式会把每个断行都转成 `
` 标签。 diff --git a/docs/1.示例/全屏水印.md b/docs/1.示例/全屏水印.md new file mode 100644 index 00000000..a38b84bd --- /dev/null +++ b/docs/1.示例/全屏水印.md @@ -0,0 +1,108 @@ +--- +title: 全屏水印 +author: Plume Theme +createTime: 2024/04/10 20:28:18 +permalink: /article/97s6ha1e/ +watermark: + fullPage: true + width: 150 +--- + +## 概述 + +不过最需要强调的便是它的可读性。一份使用 Markdown 格式撰写的文件应该可以直接以纯文字发佈,并且看起来不会像是由许多标签或是格式指令所构成。Markdown 语法受到一些既有 text-to-HTML 格式的影响, +包括 [Setext][1]、[atx][2]、[Textile][3]、[reStructuredText][4]、[Grutatext][5] 和 [EtText][6],然而最大灵感来源其实是纯文字的电子邮件格式。 + +因此 Markdown 的语法全由标点符号所组成,并经过严谨慎选,是为了让它们看起来就像所要表达的意思。像是在文字两旁加上星号,看起来就像\*强调\*。Markdown 的列表看起来,嗯,就是列表。假如你有使用过电子邮件,引言写法看起来就真的像是引用一段文字。 + +Markdown 具有一系列衍生版本,用于扩展 Markdown 的功能 (如表格、脚注、内嵌 HTML 等等) , +这些功能原初的 Markdown 尚不具备,它们能让 Markdown 转换成更多的格式,例如 LaTeX,Docbook。 +Markdown 增强版中比较有名的有 Markdown Extra、MultiMarkdown、 Maruku 等。这些衍生版本要么基于工具,如 Pandoc;要么基于网站,如 GitHub 和 Wikipedia,在语法上基本兼容,但在一些语法和渲染效果上有改动。 + +## 用途 + +Markdown 的语法有个主要的目的: 用来作为一种网络内容的*写作*用语言。Markdown 的重点在于,它能让文件更容易阅读、编写。因此,Markdown 的格式语法只涵盖纯文字可以涵盖的范围。 + +Markdown 的语法简洁明了、学习容易,而且功能比纯文本更强,因此有很多人用它写博客。世界上最流行的博客平台 WordPress 能很好的支持 Markdown。 + +用于编写说明文档,并且以 `README.md` 的文件名保存在软件的目录下面。 + +除此之外,我们还可以快速将 Markdown 转化为演讲 PPT、Word 产品文档、LaTex 论文甚至是用非常少量的代码完成最小可用原型。在数据科学领域,Markdown 已经广泛使用,极大地推进了动态可重复性研究的历史进程。 + +### 行内 HTML + +不在 Markdown 涵盖范围之外的标签,都可以直接在文件里面用 HTML 撰写。不需要额外标注这是 HTML 或是 Markdown;只要直接加标签就可以了。 + +只有块元素 ── 比如 `

`、`
`、`
`、`

` 等标签,必须在前后加上空行,以利与内容区隔。 +而且这些 (元素) 的开始与结尾标签,不可以用 tab 或是空白来缩进。Markdown 的解析器有智慧型判断,可以避免在块标签前后加上没有必要的 `

` 标签。 + +举例来说,在 Markdown 文件里加上一段 HTML 表格: + +```md +This is a regular paragraph. + +

+ + + +
Foo
+ +This is another regular paragraph. +``` + +请注意,Markdown 语法在 HTML 块标签中将不会被进行处理。例如,你无法在 HTML 块内使用 Markdown 形式的 `*强调*`。 + +### 特殊字元自动转换 + +在 HTML 文件中,有两个字元需要特殊处理: `<` 和 `&` 。 `<` 符号用于起始标签,`&` 符号则用于标记 HTML 实体,如果你只是想要使用这些符号,你必须要使用实体的形式,像是 `<` 和 `&`。 + +`&` 符号其实很容易让写作网络文件的人感到困扰,如果你要打「AT&T」 ,你必须要写成「`AT&T`」 ,还得转换网址内的 `&` 符号,如果你要链接到 `http://images.google.com/images?num=30&q=larry+bird` + +你必须要把网址转成: + +```html +http://images.google.com/images?num=30&q=larry+bird +``` + +才能放到链接标签的 `href` 属性里。不用说也知道这很容易忘记,这也可能是 HTML 标准检查所检查到的错误中,数量最多的。 + +Markdown 允许你直接使用这些符号,但是你要小心跳脱字元的使用,如果你是在 HTML 实体中使用 `&` 符号的话,它不会被转换,而在其它情形下,它则会被转换成 `&`。所以你如果要在文件中插入一个著作权的符号,你可以这样写: + +```md +© +``` + +Markdown 将不会对这段文字做修改,但是如果你这样写: + +```md +AT&T +``` + +Markdown 就会将它转为: + +```html +AT&T +``` + +类似的状况也会发生在 `<` 符号上,因为 Markdown 支持 [行内 HTML](#行内-html) ,如果你是使用 `<` 符号作为 HTML 标签使用,那 Markdown 也不会对它做任何转换,但是如果你是写: + +```md +4 < 5 +``` + +Markdown 将会把它转换为: + +```html +4 < 5 +``` + +不过需要注意的是,code 范围内,不论是行内还是块, `<` 和 `&` 两个符号都*一定*会被转换成 HTML 实体, +这项特性让你可以很容易地用 Markdown 写 HTML code (和 HTML 相对而言, HTML 语法中, +你要把所有的 `<` 和 `&` 都转换为 HTML 实体,才能在 HTML 文件里面写出 HTML code。) + +[1]: http://docutils.sourceforge.net/mirror/setext.html +[2]: http://www.aaronsw.com/2002/atx/ +[3]: http://textism.com/tools/textile/ +[4]: http://docutils.sourceforge.net/rst.html +[5]: http://www.triptico.com/software/grutatxt.html +[6]: http://ettext.taint.org/doc/ diff --git a/docs/1.示例/内容水印.md b/docs/1.示例/内容水印.md new file mode 100644 index 00000000..87c22623 --- /dev/null +++ b/docs/1.示例/内容水印.md @@ -0,0 +1,108 @@ +--- +title: 内容水印 +author: Plume Theme +createTime: 2024/04/10 20:28:32 +permalink: /article/2z59hh8g/ +watermark: + fullPage: false + width: 150 +--- + +## 概述 + +不过最需要强调的便是它的可读性。一份使用 Markdown 格式撰写的文件应该可以直接以纯文字发佈,并且看起来不会像是由许多标签或是格式指令所构成。Markdown 语法受到一些既有 text-to-HTML 格式的影响, +包括 [Setext][1]、[atx][2]、[Textile][3]、[reStructuredText][4]、[Grutatext][5] 和 [EtText][6],然而最大灵感来源其实是纯文字的电子邮件格式。 + +因此 Markdown 的语法全由标点符号所组成,并经过严谨慎选,是为了让它们看起来就像所要表达的意思。像是在文字两旁加上星号,看起来就像\*强调\*。Markdown 的列表看起来,嗯,就是列表。假如你有使用过电子邮件,引言写法看起来就真的像是引用一段文字。 + +Markdown 具有一系列衍生版本,用于扩展 Markdown 的功能 (如表格、脚注、内嵌 HTML 等等) , +这些功能原初的 Markdown 尚不具备,它们能让 Markdown 转换成更多的格式,例如 LaTeX,Docbook。 +Markdown 增强版中比较有名的有 Markdown Extra、MultiMarkdown、 Maruku 等。这些衍生版本要么基于工具,如 Pandoc;要么基于网站,如 GitHub 和 Wikipedia,在语法上基本兼容,但在一些语法和渲染效果上有改动。 + +## 用途 + +Markdown 的语法有个主要的目的: 用来作为一种网络内容的*写作*用语言。Markdown 的重点在于,它能让文件更容易阅读、编写。因此,Markdown 的格式语法只涵盖纯文字可以涵盖的范围。 + +Markdown 的语法简洁明了、学习容易,而且功能比纯文本更强,因此有很多人用它写博客。世界上最流行的博客平台 WordPress 能很好的支持 Markdown。 + +用于编写说明文档,并且以 `README.md` 的文件名保存在软件的目录下面。 + +除此之外,我们还可以快速将 Markdown 转化为演讲 PPT、Word 产品文档、LaTex 论文甚至是用非常少量的代码完成最小可用原型。在数据科学领域,Markdown 已经广泛使用,极大地推进了动态可重复性研究的历史进程。 + +### 行内 HTML + +不在 Markdown 涵盖范围之外的标签,都可以直接在文件里面用 HTML 撰写。不需要额外标注这是 HTML 或是 Markdown;只要直接加标签就可以了。 + +只有块元素 ── 比如 `
`、``、`
`、`

` 等标签,必须在前后加上空行,以利与内容区隔。 +而且这些 (元素) 的开始与结尾标签,不可以用 tab 或是空白来缩进。Markdown 的解析器有智慧型判断,可以避免在块标签前后加上没有必要的 `

` 标签。 + +举例来说,在 Markdown 文件里加上一段 HTML 表格: + +```md +This is a regular paragraph. + +

+ + + +
Foo
+ +This is another regular paragraph. +``` + +请注意,Markdown 语法在 HTML 块标签中将不会被进行处理。例如,你无法在 HTML 块内使用 Markdown 形式的 `*强调*`。 + +### 特殊字元自动转换 + +在 HTML 文件中,有两个字元需要特殊处理: `<` 和 `&` 。 `<` 符号用于起始标签,`&` 符号则用于标记 HTML 实体,如果你只是想要使用这些符号,你必须要使用实体的形式,像是 `<` 和 `&`。 + +`&` 符号其实很容易让写作网络文件的人感到困扰,如果你要打「AT&T」 ,你必须要写成「`AT&T`」 ,还得转换网址内的 `&` 符号,如果你要链接到 `http://images.google.com/images?num=30&q=larry+bird` + +你必须要把网址转成: + +```html +http://images.google.com/images?num=30&q=larry+bird +``` + +才能放到链接标签的 `href` 属性里。不用说也知道这很容易忘记,这也可能是 HTML 标准检查所检查到的错误中,数量最多的。 + +Markdown 允许你直接使用这些符号,但是你要小心跳脱字元的使用,如果你是在 HTML 实体中使用 `&` 符号的话,它不会被转换,而在其它情形下,它则会被转换成 `&`。所以你如果要在文件中插入一个著作权的符号,你可以这样写: + +```md +© +``` + +Markdown 将不会对这段文字做修改,但是如果你这样写: + +```md +AT&T +``` + +Markdown 就会将它转为: + +```html +AT&T +``` + +类似的状况也会发生在 `<` 符号上,因为 Markdown 支持 [行内 HTML](#行内-html) ,如果你是使用 `<` 符号作为 HTML 标签使用,那 Markdown 也不会对它做任何转换,但是如果你是写: + +```md +4 < 5 +``` + +Markdown 将会把它转换为: + +```html +4 < 5 +``` + +不过需要注意的是,code 范围内,不论是行内还是块, `<` 和 `&` 两个符号都*一定*会被转换成 HTML 实体, +这项特性让你可以很容易地用 Markdown 写 HTML code (和 HTML 相对而言, HTML 语法中, +你要把所有的 `<` 和 `&` 都转换为 HTML 实体,才能在 HTML 文件里面写出 HTML code。) + +[1]: http://docutils.sourceforge.net/mirror/setext.html +[2]: http://www.aaronsw.com/2002/atx/ +[3]: http://textism.com/tools/textile/ +[4]: http://docutils.sourceforge.net/rst.html +[5]: http://www.triptico.com/software/grutatxt.html +[6]: http://ettext.taint.org/doc/ diff --git a/docs/1.示例/图片水印.md b/docs/1.示例/图片水印.md new file mode 100644 index 00000000..98f08667 --- /dev/null +++ b/docs/1.示例/图片水印.md @@ -0,0 +1,108 @@ +--- +title: 图片水印 +author: Plume Theme +createTime: 2024/04/11 06:07:50 +permalink: /article/i4cuuonn/ +watermark: + fullPage: true + image: /plume.png +--- + +## 概述 + +不过最需要强调的便是它的可读性。一份使用 Markdown 格式撰写的文件应该可以直接以纯文字发佈,并且看起来不会像是由许多标签或是格式指令所构成。Markdown 语法受到一些既有 text-to-HTML 格式的影响, +包括 [Setext][1]、[atx][2]、[Textile][3]、[reStructuredText][4]、[Grutatext][5] 和 [EtText][6],然而最大灵感来源其实是纯文字的电子邮件格式。 + +因此 Markdown 的语法全由标点符号所组成,并经过严谨慎选,是为了让它们看起来就像所要表达的意思。像是在文字两旁加上星号,看起来就像\*强调\*。Markdown 的列表看起来,嗯,就是列表。假如你有使用过电子邮件,引言写法看起来就真的像是引用一段文字。 + +Markdown 具有一系列衍生版本,用于扩展 Markdown 的功能 (如表格、脚注、内嵌 HTML 等等) , +这些功能原初的 Markdown 尚不具备,它们能让 Markdown 转换成更多的格式,例如 LaTeX,Docbook。 +Markdown 增强版中比较有名的有 Markdown Extra、MultiMarkdown、 Maruku 等。这些衍生版本要么基于工具,如 Pandoc;要么基于网站,如 GitHub 和 Wikipedia,在语法上基本兼容,但在一些语法和渲染效果上有改动。 + +## 用途 + +Markdown 的语法有个主要的目的: 用来作为一种网络内容的*写作*用语言。Markdown 的重点在于,它能让文件更容易阅读、编写。因此,Markdown 的格式语法只涵盖纯文字可以涵盖的范围。 + +Markdown 的语法简洁明了、学习容易,而且功能比纯文本更强,因此有很多人用它写博客。世界上最流行的博客平台 WordPress 能很好的支持 Markdown。 + +用于编写说明文档,并且以 `README.md` 的文件名保存在软件的目录下面。 + +除此之外,我们还可以快速将 Markdown 转化为演讲 PPT、Word 产品文档、LaTex 论文甚至是用非常少量的代码完成最小可用原型。在数据科学领域,Markdown 已经广泛使用,极大地推进了动态可重复性研究的历史进程。 + +### 行内 HTML + +不在 Markdown 涵盖范围之外的标签,都可以直接在文件里面用 HTML 撰写。不需要额外标注这是 HTML 或是 Markdown;只要直接加标签就可以了。 + +只有块元素 ── 比如 `
`、``、`
`、`

` 等标签,必须在前后加上空行,以利与内容区隔。 +而且这些 (元素) 的开始与结尾标签,不可以用 tab 或是空白来缩进。Markdown 的解析器有智慧型判断,可以避免在块标签前后加上没有必要的 `

` 标签。 + +举例来说,在 Markdown 文件里加上一段 HTML 表格: + +```md +This is a regular paragraph. + +

+ + + +
Foo
+ +This is another regular paragraph. +``` + +请注意,Markdown 语法在 HTML 块标签中将不会被进行处理。例如,你无法在 HTML 块内使用 Markdown 形式的 `*强调*`。 + +### 特殊字元自动转换 + +在 HTML 文件中,有两个字元需要特殊处理: `<` 和 `&` 。 `<` 符号用于起始标签,`&` 符号则用于标记 HTML 实体,如果你只是想要使用这些符号,你必须要使用实体的形式,像是 `<` 和 `&`。 + +`&` 符号其实很容易让写作网络文件的人感到困扰,如果你要打「AT&T」 ,你必须要写成「`AT&T`」 ,还得转换网址内的 `&` 符号,如果你要链接到 `http://images.google.com/images?num=30&q=larry+bird` + +你必须要把网址转成: + +```html +http://images.google.com/images?num=30&q=larry+bird +``` + +才能放到链接标签的 `href` 属性里。不用说也知道这很容易忘记,这也可能是 HTML 标准检查所检查到的错误中,数量最多的。 + +Markdown 允许你直接使用这些符号,但是你要小心跳脱字元的使用,如果你是在 HTML 实体中使用 `&` 符号的话,它不会被转换,而在其它情形下,它则会被转换成 `&`。所以你如果要在文件中插入一个著作权的符号,你可以这样写: + +```md +© +``` + +Markdown 将不会对这段文字做修改,但是如果你这样写: + +```md +AT&T +``` + +Markdown 就会将它转为: + +```html +AT&T +``` + +类似的状况也会发生在 `<` 符号上,因为 Markdown 支持 [行内 HTML](#行内-html) ,如果你是使用 `<` 符号作为 HTML 标签使用,那 Markdown 也不会对它做任何转换,但是如果你是写: + +```md +4 < 5 +``` + +Markdown 将会把它转换为: + +```html +4 < 5 +``` + +不过需要注意的是,code 范围内,不论是行内还是块, `<` 和 `&` 两个符号都*一定*会被转换成 HTML 实体, +这项特性让你可以很容易地用 Markdown 写 HTML code (和 HTML 相对而言, HTML 语法中, +你要把所有的 `<` 和 `&` 都转换为 HTML 实体,才能在 HTML 文件里面写出 HTML code。) + +[1]: http://docutils.sourceforge.net/mirror/setext.html +[2]: http://www.aaronsw.com/2002/atx/ +[3]: http://textism.com/tools/textile/ +[4]: http://docutils.sourceforge.net/rst.html +[5]: http://www.triptico.com/software/grutatxt.html +[6]: http://ettext.taint.org/doc/ diff --git a/docs/README.md b/docs/README.md index ca5ee5e8..577501c4 100644 --- a/docs/README.md +++ b/docs/README.md @@ -8,7 +8,7 @@ config: background: filter-blur hero: name: Theme Plume - tagline: Vuepress Next Theme + tagline: VuePress Next Theme text: 一个简约的,功能丰富的 vuepress 文档&博客 主题 actions: - diff --git a/docs/notes/theme/config/frontmatter/basic.md b/docs/notes/theme/config/frontmatter/basic.md index 19ab31d6..5f16c448 100644 --- a/docs/notes/theme/config/frontmatter/basic.md +++ b/docs/notes/theme/config/frontmatter/basic.md @@ -124,3 +124,26 @@ permalink: /config/frontmatter/basic/ - 默认值: `true` 当前文章是否 显示 文章编辑 按钮。 + +### watermark + +- 类型: `boolean | WatermarkConfig` +- 默认值: `undefined` 主题不启用水印,或不启用全局水印时,默认值为 `false`,启用全局水印则为 `true`。 + +配置当前文章 水印。 + +```ts +interface WatermarkConfig { + content?: string // 水印文字内容,可传入 html 内容 + textColor?: string // 水印文本颜色 + image?: string // 水印图片路径,优先于 content + opacity?: number // 水印透明度 + rotate?: number // 水印旋转角度 + width?: number // 水印宽度 + height?: number // 水印高度 + gapX?: number // 水印横向间距 + gapY?: number // 水印纵向间距 + fullPage?: boolean // 是否全屏 + onlyPrint?: boolean // 是否仅在打印时显示 +} +``` diff --git a/docs/notes/theme/config/主题配置.md b/docs/notes/theme/config/主题配置.md index 5f9f1e71..b09427c1 100644 --- a/docs/notes/theme/config/主题配置.md +++ b/docs/notes/theme/config/主题配置.md @@ -501,3 +501,78 @@ interface NotFound { linkText?: string } ``` + +### watermark + +- 类型: `boolean | WatermarkOptions` +- 默认值: `false` +- 详情: 文章水印配置 + +```ts +interface WatermarkOptions { + /** + * 是否全局启用, 在不全局启用时,可以通过 `frontmatter.watermark` 为当前页面启用 + * @default false + */ + global?: boolean + /** + * 非全局启用时,可以通过该字段根据文件路径或页面链接 进行匹配, 来启用水印。 + * 以 `^` 的将被认为为类似于正则表达式进行匹配。 + */ + matches?: string | string[] + /** + * 水印之间的水平间隔 + * @default 0 + */ + gapX?: number + /** + * 水印之间的垂直间隔 + * @default 0 + */ + gapY?: number + + /** + * 图片水印的内容,如果与 content 同时传入,优先使用图片水印 + */ + image?: PlumeThemeImage + /** + * 水印宽度 + * @default 100 + */ + width?: number + /** + * 水印高度 + * @default 100 + */ + height?: number + /** + * 水印旋转角度 + * @default -22 + */ + rotate?: number + /** + * 水印的内容,如果与 image 同时传入,优先使用图片水印 + */ + content?: string + /** + * 水印是否全屏显示 + */ + fullPage?: boolean + /** + * 水印透明度 + * @default 0.1 + */ + opacity?: number + + /** + * 水印的文本颜色 + */ + textColor?: string | { dark: string, light: string } + + /** + * 是否只在打印时显示 + * @default false + */ + onlyPrint?: boolean +} +``` diff --git a/docs/notes/theme/guide/功能/文章水印.md b/docs/notes/theme/guide/功能/文章水印.md new file mode 100644 index 00000000..c5ad10aa --- /dev/null +++ b/docs/notes/theme/guide/功能/文章水印.md @@ -0,0 +1,173 @@ +--- +title: 文章水印 +author: pengzhanbo +icon: material-symbols-light:branding-watermark-outline +createTime: 2024/04/10 20:14:57 +permalink: /guide/features/watermark/ +--- + +## 概述 + +主题支持在文章中添加水印。支持 全屏水印 和 内容水印,同时还支持 图片水印 和 文字水印 。 + +水印 仅在 文章页面 生效。如首页、博客页等其他页面不会注入水印。 + +## 启用水印 + +主题默认不启用水印功能。你需要在主题配置中开启。 + +::: code-tabs +@tab .vuepress/config.ts + +```ts +import { defineUserConfig } from 'vuepress' +import { plumeTheme } from 'vuepress-theme-plume' + +export default defineUserConfig({ + theme: plumeTheme({ + // watermark: true, // 使用默认配置的水印 + watermark: { + global: true, // 全局开启水印 + image: '/images/watermark.png', // 水印图片 + content: 'vuepress plume', // 水印内容, 如果配置了 image, 则优先使用 image + opacity: 0.1, // 透明度 + rotate: -22, // 旋转角度 + width: 100, // 水印宽度 + height: 100, // 水印高度 + textColor: '#fff', // 文字颜色 + fullPage: true, // 是否全屏, 非全屏时水印仅覆盖文章内容 + gapX: 20, // 水印横向间距 + gapY: 20, // 水印纵向间距 + onlyPrint: true, // 只在打印时生效 + matches: ['/article/xxx', '^/note/', 'notes/guide/xx.md'], // 非全局启用时,匹配页面路径或文件路径来启用水印 + } + }) +}) +``` + +::: + +### 全局启用 + +当 `watermark` 配置为 `true` 时, 主题全局开启水印。还可以通过 `watermark.global` 配置是否开启全局水印。 + +### 部分页面启用 + +当 `watermark.global` 为 `false` 时,主题虽然启用了水印功能,但是需要自行控制哪些页面显示水印。 + +主题提供了两种方式来控制水印的显示: + +#### watermark.matches + +```ts +export default defineUserConfig({ + theme: plumeTheme({ + // watermark: true, // 使用默认配置的水印 + watermark: { + global: false, + matches: [ + // 可以是 md 文件的相对路径 + 'notes/guide/xx.md', + // 可以是 文件夹的路径 + '/notes/vuepress-theme-plume/', + // 可以是 访问地址的请求路径,对该访问路径下所有文章 都生效 + '/vuepress-theme-plume/', + // 可以是 具体的某个页面的请求路径 + '/article/f8dnci3/', + // 如果是 `^` 开头,则匹配该正则表达式的页面 + '^/(a|b)/', + ], + } + }) +}) +``` + +#### frontmatter.watermark + +在 md 文件中添加 `frontmatter.watermark` 为 `true` : + +```md +--- +watermark: true +--- +``` + +还可以个性化配置当前页面的水印: + +```md +--- +watermark: + content: My Custom Content + opacity: 0.2 + rotate: 45 +--- +``` + +## 图片水印 + +主题支持使用 图片 作为水印。 + +```ts +import { defineUserConfig } from 'vuepress' +import { plumeTheme } from 'vuepress-theme-plume' + +export default defineUserConfig({ + theme: plumeTheme({ + watermark: { + image: '/images/watermark.png', // 水印图片 + width: 100, // 水印宽度 + height: 100, // 水印高度 + } + }) +}) +``` + +也可以在 md 文件中添加配置,为当前页面设置水印: + +```md +--- +watermark: + image: /images/watermark.png + width: 100 + height: 100 +--- +``` + +### 示例 + +[图片水印](/article/i4cuuonn/) + +## 文字水印 + +主题支持使用 图片 作为水印。 + +```ts +import { defineUserConfig } from 'vuepress' +import { plumeTheme } from 'vuepress-theme-plume' + +export default defineUserConfig({ + theme: plumeTheme({ + watermark: { + content: '自定义文字', + textColor: '#fff', // 文字颜色 + } + }) +}) +``` + +也可以在 md 文件中添加配置,为当前页面设置水印: + +```md +--- +watermark: + content: 自定义文字 + textColor: #fff +--- +``` + +当同时设置了 `image` 和 `content` 时, `image` 优先于 `content`。 + +## 示例 + +- [内容水印](/article/2z59hh8g/) +- [全屏水印](/article/97s6ha1e/) diff --git a/docs/package.json b/docs/package.json index f87d48b6..e20dc46c 100644 --- a/docs/package.json +++ b/docs/package.json @@ -12,7 +12,7 @@ "vuepress": "2.0.0-rc.9" }, "dependencies": { - "@iconify/json": "^2.2.196", + "@iconify/json": "^2.2.200", "@vuepress/bundler-vite": "2.0.0-rc.9", "anywhere": "^1.6.0", "chart.js": "^4.4.2", diff --git a/package.json b/package.json index 06e45879..b1e83896 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "type": "module", "version": "1.0.0-rc.49", "private": true, - "packageManager": "pnpm@8.15.5", + "packageManager": "pnpm@8.15.7", "author": "pengzhanbo (https://github.com/pengzhanbo/)", "license": "MIT", "keywords": [ @@ -39,10 +39,10 @@ "release:version": "bumpp package.json plugins/*/package.json theme/package.json --execute=\"pnpm release:changelog\" --commit \"build: publish v%s\" --all --tag --push" }, "devDependencies": { - "@commitlint/cli": "^19.2.1", - "@commitlint/config-conventional": "^19.1.0", - "@pengzhanbo/eslint-config-vue": "^1.7.0", - "@pengzhanbo/stylelint-config": "^1.7.0", + "@commitlint/cli": "^19.2.2", + "@commitlint/config-conventional": "^19.2.2", + "@pengzhanbo/eslint-config-vue": "^1.8.1", + "@pengzhanbo/stylelint-config": "^1.8.1", "@types/lodash.merge": "^4.6.9", "@types/node": "20.9.1", "@types/webpack-env": "^1.18.4", @@ -52,14 +52,14 @@ "conventional-changelog-cli": "^4.1.0", "cpx2": "^7.0.1", "cz-conventional-changelog": "^3.3.0", - "eslint": "^8.57.0", + "eslint": "^9.0.0", "husky": "^9.0.11", "lint-staged": "^15.2.2", "rimraf": "^5.0.5", "stylelint": "^16.3.1", "tsconfig-vuepress": "^4.5.0", - "typescript": "^5.4.3", - "vite": "^5.2.7" + "typescript": "^5.4.5", + "vite": "^5.2.8" }, "pnpm": { "patchedDependencies": { diff --git a/plugins/plugin-caniuse/package.json b/plugins/plugin-caniuse/package.json index 95434118..4cbdf241 100644 --- a/plugins/plugin-caniuse/package.json +++ b/plugins/plugin-caniuse/package.json @@ -49,7 +49,7 @@ "markdown-it-container": "^4.0.0" }, "devDependencies": { - "@types/markdown-it": "^13.0.7" + "@types/markdown-it": "^14.0.1" }, "publishConfig": { "access": "public" diff --git a/plugins/plugin-md-power/package.json b/plugins/plugin-md-power/package.json index 12c2d9a3..9d383ff8 100644 --- a/plugins/plugin-md-power/package.json +++ b/plugins/plugin-md-power/package.json @@ -50,12 +50,12 @@ "@vueuse/core": "^10.9.0", "local-pkg": "^0.5.0", "markdown-it-container": "^4.0.0", - "nanoid": "^5.0.6", + "nanoid": "^5.0.7", "vue": "^3.4.21" }, "devDependencies": { - "@iconify/json": "^2.2.196", - "@types/markdown-it": "^13.0.7" + "@iconify/json": "^2.2.200", + "@types/markdown-it": "^14.0.1" }, "publishConfig": { "access": "public" diff --git a/plugins/plugin-netlify-functions/package.json b/plugins/plugin-netlify-functions/package.json index 8759bcda..9ad3533a 100644 --- a/plugins/plugin-netlify-functions/package.json +++ b/plugins/plugin-netlify-functions/package.json @@ -52,11 +52,11 @@ "dotenv": "^16.4.5", "esbuild": "^0.20.2", "execa": "^8.0.1", - "netlify-cli": "^17.21.1", + "netlify-cli": "^17.22.1", "portfinder": "^1.0.32" }, "devDependencies": { - "@types/node": "^20.12.2" + "@types/node": "^20.12.7" }, "publishConfig": { "access": "public" diff --git a/plugins/plugin-search/package.json b/plugins/plugin-search/package.json index 21dbb205..ac003954 100644 --- a/plugins/plugin-search/package.json +++ b/plugins/plugin-search/package.json @@ -40,14 +40,14 @@ "vuepress": "2.0.0-rc.9" }, "dependencies": { - "@vuepress/helper": "2.0.0-rc.21", + "@vuepress/helper": "2.0.0-rc.24", "@vueuse/core": "^10.9.0", "@vueuse/integrations": "^10.9.0", "chokidar": "^3.6.0", "focus-trap": "^7.5.4", "mark.js": "^8.11.1", "minisearch": "^6.3.0", - "p-map": "^7.0.1", + "p-map": "^7.0.2", "vue": "^3.4.21" }, "publishConfig": { diff --git a/plugins/plugin-shikiji/package.json b/plugins/plugin-shikiji/package.json index 30af0d7e..d7b75133 100644 --- a/plugins/plugin-shikiji/package.json +++ b/plugins/plugin-shikiji/package.json @@ -36,15 +36,15 @@ "vuepress": "2.0.0-rc.9" }, "dependencies": { - "@shikijs/transformers": "^1.2.2", - "@shikijs/twoslash": "^1.2.2", + "@shikijs/transformers": "^1.3.0", + "@shikijs/twoslash": "^1.3.0", "@types/hast": "^3.0.4", "floating-vue": "^5.2.2", "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm": "^3.0.0", "mdast-util-to-hast": "^13.1.0", - "nanoid": "^5.0.6", - "shiki": "^1.2.2", + "nanoid": "^5.0.7", + "shiki": "^1.3.0", "twoslash": "^0.2.5", "twoslash-vue": "^0.2.5" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9cb93a6c..315454d0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,17 +14,17 @@ importers: .: devDependencies: '@commitlint/cli': - specifier: ^19.2.1 - version: 19.2.1(@types/node@20.9.1)(typescript@5.4.3) + specifier: ^19.2.2 + version: 19.2.2(@types/node@20.9.1)(typescript@5.4.5) '@commitlint/config-conventional': - specifier: ^19.1.0 - version: 19.1.0 + specifier: ^19.2.2 + version: 19.2.2 '@pengzhanbo/eslint-config-vue': - specifier: ^1.7.0 - version: 1.7.0(@vue/compiler-sfc@3.4.21)(eslint@8.57.0)(typescript@5.4.3) + specifier: ^1.8.1 + version: 1.8.1(@vue/compiler-sfc@3.4.21)(eslint@9.0.0)(typescript@5.4.5) '@pengzhanbo/stylelint-config': - specifier: ^1.7.0 - version: 1.7.0(stylelint@16.3.1) + specifier: ^1.8.1 + version: 1.8.1(stylelint@16.3.1) '@types/lodash.merge': specifier: ^4.6.9 version: 4.6.9 @@ -39,7 +39,7 @@ importers: version: 9.4.0 commitizen: specifier: ^4.3.0 - version: 4.3.0(@types/node@20.9.1)(typescript@5.4.3) + version: 4.3.0(@types/node@20.9.1)(typescript@5.4.5) concurrently: specifier: ^8.2.2 version: 8.2.2 @@ -51,10 +51,10 @@ importers: version: 7.0.1 cz-conventional-changelog: specifier: ^3.3.0 - version: 3.3.0(@types/node@20.9.1)(typescript@5.4.3) + version: 3.3.0(@types/node@20.9.1)(typescript@5.4.5) eslint: - specifier: ^8.57.0 - version: 8.57.0 + specifier: ^9.0.0 + version: 9.0.0 husky: specifier: ^9.0.11 version: 9.0.11 @@ -66,25 +66,25 @@ importers: version: 5.0.5 stylelint: specifier: ^16.3.1 - version: 16.3.1(typescript@5.4.3) + version: 16.3.1(typescript@5.4.5) tsconfig-vuepress: specifier: ^4.5.0 version: 4.5.0 typescript: - specifier: ^5.4.3 - version: 5.4.3 + specifier: ^5.4.5 + version: 5.4.5 vite: - specifier: ^5.2.7 - version: 5.2.7(@types/node@20.9.1) + specifier: ^5.2.8 + version: 5.2.8(@types/node@20.9.1) docs: dependencies: '@iconify/json': - specifier: ^2.2.196 - version: 2.2.196 + specifier: ^2.2.200 + version: 2.2.200 '@vuepress/bundler-vite': specifier: 2.0.0-rc.9 - version: 2.0.0-rc.9(@types/node@20.9.1)(typescript@5.4.3) + version: 2.0.0-rc.9(@types/node@20.9.1)(typescript@5.4.5) anywhere: specifier: ^1.6.0 version: 1.6.0 @@ -102,10 +102,10 @@ importers: version: 10.9.0 vue: specifier: ^3.4.21 - version: 3.4.21(typescript@5.4.3) + version: 3.4.21(typescript@5.4.5) vuepress: specifier: 2.0.0-rc.9 - version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) vuepress-theme-plume: specifier: workspace:* version: link:../theme @@ -133,13 +133,13 @@ importers: version: 1.1.0 vuepress: specifier: 2.0.0-rc.9 - version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) plugins/plugin-baidu-tongji: dependencies: vuepress: specifier: 2.0.0-rc.9 - version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) plugins/plugin-blog-data: dependencies: @@ -154,10 +154,10 @@ importers: version: 1.0.1 vue: specifier: ^3.4.21 - version: 3.4.21(typescript@5.4.3) + version: 3.4.21(typescript@5.4.5) vuepress: specifier: 2.0.0-rc.9 - version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) plugins/plugin-caniuse: dependencies: @@ -166,20 +166,20 @@ importers: version: 4.0.0 vuepress: specifier: 2.0.0-rc.9 - version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) devDependencies: '@types/markdown-it': - specifier: ^13.0.7 - version: 13.0.7 + specifier: ^14.0.1 + version: 14.0.1 plugins/plugin-content-update: dependencies: vue: specifier: ^3.4.21 - version: 3.4.21(typescript@5.4.3) + version: 3.4.21(typescript@5.4.5) vuepress: specifier: 2.0.0-rc.9 - version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) plugins/plugin-copy-code: dependencies: @@ -188,10 +188,10 @@ importers: version: link:../plugin-content-update vue: specifier: ^3.4.21 - version: 3.4.21(typescript@5.4.3) + version: 3.4.21(typescript@5.4.5) vuepress: specifier: 2.0.0-rc.9 - version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) plugins/plugin-iconify: dependencies: @@ -200,10 +200,10 @@ importers: version: 4.1.1(vue@3.4.21) vue: specifier: ^3.4.21 - version: 3.4.21(typescript@5.4.3) + version: 3.4.21(typescript@5.4.5) vuepress: specifier: 2.0.0-rc.9 - version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) plugins/plugin-md-power: dependencies: @@ -220,21 +220,21 @@ importers: specifier: ^4.0.0 version: 4.0.0 nanoid: - specifier: ^5.0.6 - version: 5.0.6 + specifier: ^5.0.7 + version: 5.0.7 vue: specifier: ^3.4.21 - version: 3.4.21(typescript@5.4.3) + version: 3.4.21(typescript@5.4.5) vuepress: specifier: 2.0.0-rc.9 - version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) devDependencies: '@iconify/json': - specifier: ^2.2.196 - version: 2.2.196 + specifier: ^2.2.200 + version: 2.2.200 '@types/markdown-it': - specifier: ^13.0.7 - version: 13.0.7 + specifier: ^14.0.1 + version: 14.0.1 plugins/plugin-netlify-functions: dependencies: @@ -263,18 +263,18 @@ importers: specifier: ^8.0.1 version: 8.0.1 netlify-cli: - specifier: ^17.21.1 - version: 17.21.1(@types/node@20.12.2) + specifier: ^17.22.1 + version: 17.22.1(@types/node@20.12.7) portfinder: specifier: ^1.0.32 version: 1.0.32 vuepress: specifier: 2.0.0-rc.9 - version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) devDependencies: '@types/node': - specifier: ^20.12.2 - version: 20.12.2 + specifier: ^20.12.7 + version: 20.12.7 plugins/plugin-notes-data: dependencies: @@ -289,16 +289,16 @@ importers: version: 1.0.1 vue: specifier: ^3.4.21 - version: 3.4.21(typescript@5.4.3) + version: 3.4.21(typescript@5.4.5) vuepress: specifier: 2.0.0-rc.9 - version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) plugins/plugin-search: dependencies: '@vuepress/helper': - specifier: 2.0.0-rc.21 - version: 2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9) + specifier: 2.0.0-rc.24 + version: 2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9) '@vueuse/core': specifier: ^10.9.0 version: 10.9.0(vue@3.4.21) @@ -318,23 +318,23 @@ importers: specifier: ^6.3.0 version: 6.3.0 p-map: - specifier: ^7.0.1 - version: 7.0.1 + specifier: ^7.0.2 + version: 7.0.2 vue: specifier: ^3.4.21 - version: 3.4.21(typescript@5.4.3) + version: 3.4.21(typescript@5.4.5) vuepress: specifier: 2.0.0-rc.9 - version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) plugins/plugin-shikiji: dependencies: '@shikijs/transformers': - specifier: ^1.2.2 - version: 1.2.2 + specifier: ^1.3.0 + version: 1.3.0 '@shikijs/twoslash': - specifier: ^1.2.2 - version: 1.2.2(typescript@5.4.3) + specifier: ^1.3.0 + version: 1.3.0(typescript@5.4.5) '@types/hast': specifier: ^3.0.4 version: 3.0.4 @@ -351,20 +351,20 @@ importers: specifier: ^13.1.0 version: 13.1.0 nanoid: - specifier: ^5.0.6 - version: 5.0.6 + specifier: ^5.0.7 + version: 5.0.7 shiki: - specifier: ^1.2.2 - version: 1.2.2 + specifier: ^1.3.0 + version: 1.3.0 twoslash: specifier: ^0.2.5 - version: 0.2.5(typescript@5.4.3) + version: 0.2.5(typescript@5.4.5) twoslash-vue: specifier: ^0.2.5 - version: 0.2.5(typescript@5.4.3) + version: 0.2.5(typescript@5.4.5) vuepress: specifier: 2.0.0-rc.9 - version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) theme: dependencies: @@ -398,48 +398,51 @@ importers: '@vuepress-plume/plugin-shikiji': specifier: workspace:* version: link:../plugins/plugin-shikiji + '@vuepress/helper': + specifier: 2.0.0-rc.24 + version: 2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9) '@vuepress/plugin-active-header-links': specifier: 2.0.0-rc.21 - version: 2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9) + version: 2.0.0-rc.21(typescript@5.4.5)(vuepress@2.0.0-rc.9) '@vuepress/plugin-comment': - specifier: 2.0.0-rc.21 - version: 2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9) + specifier: 2.0.0-rc.24 + version: 2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9) '@vuepress/plugin-container': specifier: 2.0.0-rc.21 version: 2.0.0-rc.21(vuepress@2.0.0-rc.9) '@vuepress/plugin-docsearch': - specifier: 2.0.0-rc.21 - version: 2.0.0-rc.21(@algolia/client-search@4.20.0)(search-insights@2.7.0)(typescript@5.4.3)(vuepress@2.0.0-rc.9) + specifier: 2.0.0-rc.24 + version: 2.0.0-rc.24(@algolia/client-search@4.20.0)(search-insights@2.7.0)(typescript@5.4.5)(vuepress@2.0.0-rc.9) '@vuepress/plugin-external-link-icon': - specifier: 2.0.0-rc.21 - version: 2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9) + specifier: 2.0.0-rc.24 + version: 2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9) '@vuepress/plugin-git': - specifier: 2.0.0-rc.21 - version: 2.0.0-rc.21(vuepress@2.0.0-rc.9) + specifier: 2.0.0-rc.22 + version: 2.0.0-rc.22(vuepress@2.0.0-rc.9) '@vuepress/plugin-medium-zoom': - specifier: 2.0.0-rc.21 - version: 2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9) + specifier: 2.0.0-rc.24 + version: 2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9) '@vuepress/plugin-nprogress': specifier: 2.0.0-rc.21 - version: 2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9) + version: 2.0.0-rc.21(typescript@5.4.5)(vuepress@2.0.0-rc.9) '@vuepress/plugin-palette': specifier: 2.0.0-rc.21 version: 2.0.0-rc.21(vuepress@2.0.0-rc.9) '@vuepress/plugin-reading-time': - specifier: 2.0.0-rc.21 - version: 2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9) + specifier: 2.0.0-rc.24 + version: 2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9) '@vuepress/plugin-seo': - specifier: 2.0.0-rc.21 - version: 2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9) + specifier: 2.0.0-rc.24 + version: 2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9) '@vuepress/plugin-sitemap': - specifier: 2.0.0-rc.21 - version: 2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9) + specifier: 2.0.0-rc.24 + version: 2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9) '@vuepress/plugin-theme-data': specifier: 2.0.0-rc.21 - version: 2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9) + version: 2.0.0-rc.21(typescript@5.4.5)(vuepress@2.0.0-rc.9) '@vuepress/plugin-toc': - specifier: 2.0.0-rc.21 - version: 2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9) + specifier: 2.0.0-rc.24 + version: 2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9) '@vueuse/core': specifier: ^10.9.0 version: 10.9.0(vue@3.4.21) @@ -456,20 +459,20 @@ importers: specifier: ^4.6.2 version: 4.6.2 nanoid: - specifier: ^5.0.6 - version: 5.0.6 + specifier: ^5.0.7 + version: 5.0.7 vue: specifier: ^3.4.21 - version: 3.4.21(typescript@5.4.3) + version: 3.4.21(typescript@5.4.5) vue-router: specifier: 4.3.0 version: 4.3.0(vue@3.4.21) vuepress: specifier: 2.0.0-rc.9 - version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + version: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) vuepress-plugin-md-enhance: specifier: 2.0.0-rc.32 - version: 2.0.0-rc.32(katex@0.16.10)(markdown-it@14.1.0)(typescript@5.4.3)(vuepress@2.0.0-rc.9) + version: 2.0.0-rc.32(katex@0.16.10)(markdown-it@14.1.0)(typescript@5.4.5)(vuepress@2.0.0-rc.9) vuepress-plugin-md-power: specifier: workspace:* version: link:../plugins/plugin-md-power @@ -520,6 +523,9 @@ packages: peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' + peerDependenciesMeta: + '@algolia/client-search': + optional: true dependencies: '@algolia/client-search': 4.20.0 algoliasearch: 4.20.0 @@ -615,11 +621,6 @@ packages: '@algolia/requester-common': 4.20.0 dev: false - /@antfu/eslint-define-config@1.23.0-2: - resolution: {integrity: sha512-LvxY21+ZhpuBf/aHeBUtGQhSEfad4PkNKXKvDOSvukaM3XVTfBhwmHX2EKwAsdq5DlfjbT3qqYyMiueBIO5iDQ==} - engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>= 8.6.0'} - dev: true - /@antfu/install-pkg@0.1.1: resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} dependencies: @@ -627,6 +628,12 @@ packages: find-up: 5.0.0 dev: false + /@antfu/install-pkg@0.3.2: + resolution: {integrity: sha512-FFYqME8+UHlPnRlX/vn+8cTD4Wo/nG/lzRxpABs3XANBmdJdNImVz3QvjNAE/W3PSCNbG387FOz8o5WelnWOlg==} + dependencies: + execa: 8.0.1 + dev: true + /@antfu/utils@0.7.7: resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==} dev: false @@ -727,14 +734,14 @@ packages: engines: {node: '>=0.1.90'} dev: false - /@commitlint/cli@19.2.1(@types/node@20.9.1)(typescript@5.4.3): - resolution: {integrity: sha512-cbkYUJsLqRomccNxvoJTyv5yn0bSy05BBizVyIcLACkRbVUqYorC351Diw/XFSWC/GtpwiwT2eOvQgFZa374bg==} + /@commitlint/cli@19.2.2(@types/node@20.9.1)(typescript@5.4.5): + resolution: {integrity: sha512-P8cbOHfg2PQRzfICLSrzUVOCVMqjEZ8Hlth6mtJ4yOEjT47Q5PbIGymgX3rLVylNw+3IAT2Djn9IJ2wHbXFzBg==} engines: {node: '>=v18'} hasBin: true dependencies: '@commitlint/format': 19.0.3 - '@commitlint/lint': 19.1.0 - '@commitlint/load': 19.2.0(@types/node@20.9.1)(typescript@5.4.3) + '@commitlint/lint': 19.2.2 + '@commitlint/load': 19.2.0(@types/node@20.9.1)(typescript@5.4.5) '@commitlint/read': 19.2.1 '@commitlint/types': 19.0.3 execa: 8.0.1 @@ -744,8 +751,8 @@ packages: - typescript dev: true - /@commitlint/config-conventional@19.1.0: - resolution: {integrity: sha512-KIKD2xrp6Uuk+dcZVj3++MlzIr/Su6zLE8crEDQCZNvWHNQSeeGbzOlNtsR32TUy6H3JbP7nWgduAHCaiGQ6EA==} + /@commitlint/config-conventional@19.2.2: + resolution: {integrity: sha512-mLXjsxUVLYEGgzbxbxicGPggDuyWNkf25Ht23owXIH+zV2pv1eJuzLK3t1gDY5Gp6pxdE60jZnWUY5cvgL3ufw==} engines: {node: '>=v18'} dependencies: '@commitlint/types': 19.0.3 @@ -785,25 +792,25 @@ packages: chalk: 5.3.0 dev: true - /@commitlint/is-ignored@19.0.3: - resolution: {integrity: sha512-MqDrxJaRSVSzCbPsV6iOKG/Lt52Y+PVwFVexqImmYYFhe51iVJjK2hRhOG2jUAGiUHk4jpdFr0cZPzcBkSzXDQ==} + /@commitlint/is-ignored@19.2.2: + resolution: {integrity: sha512-eNX54oXMVxncORywF4ZPFtJoBm3Tvp111tg1xf4zWXGfhBPKpfKG6R+G3G4v5CPlRROXpAOpQ3HMhA9n1Tck1g==} engines: {node: '>=v18'} dependencies: '@commitlint/types': 19.0.3 semver: 7.6.0 dev: true - /@commitlint/lint@19.1.0: - resolution: {integrity: sha512-ESjaBmL/9cxm+eePyEr6SFlBUIYlYpI80n+Ltm7IA3MAcrmiP05UMhJdAD66sO8jvo8O4xdGn/1Mt2G5VzfZKw==} + /@commitlint/lint@19.2.2: + resolution: {integrity: sha512-xrzMmz4JqwGyKQKTpFzlN0dx0TAiT7Ran1fqEBgEmEj+PU98crOFtysJgY+QdeSagx6EDRigQIXJVnfrI0ratA==} engines: {node: '>=v18'} dependencies: - '@commitlint/is-ignored': 19.0.3 + '@commitlint/is-ignored': 19.2.2 '@commitlint/parse': 19.0.3 '@commitlint/rules': 19.0.3 '@commitlint/types': 19.0.3 dev: true - /@commitlint/load@19.2.0(@types/node@20.9.1)(typescript@5.4.3): + /@commitlint/load@19.2.0(@types/node@20.9.1)(typescript@5.4.5): resolution: {integrity: sha512-XvxxLJTKqZojCxaBQ7u92qQLFMMZc4+p9qrIq/9kJDy8DOrEa7P1yx7Tjdc2u2JxIalqT4KOGraVgCE7eCYJyQ==} engines: {node: '>=v18'} dependencies: @@ -812,8 +819,8 @@ packages: '@commitlint/resolve-extends': 19.1.0 '@commitlint/types': 19.0.3 chalk: 5.3.0 - cosmiconfig: 9.0.0(typescript@5.4.3) - cosmiconfig-typescript-loader: 5.0.0(@types/node@20.9.1)(cosmiconfig@9.0.0)(typescript@5.4.3) + cosmiconfig: 9.0.0(typescript@5.4.5) + cosmiconfig-typescript-loader: 5.0.0(@types/node@20.9.1)(cosmiconfig@9.0.0)(typescript@5.4.5) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -897,15 +904,6 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: false - /@csstools/css-parser-algorithms@2.5.0(@csstools/css-tokenizer@2.2.3): - resolution: {integrity: sha512-abypo6m9re3clXA00eu5syw+oaPHbJTPapu9C4pzNsJ4hdZDzushT50Zhu+iIYXgEe1CxnRMn7ngsbV+MLrlpQ==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - '@csstools/css-tokenizer': ^2.2.3 - dependencies: - '@csstools/css-tokenizer': 2.2.3 - dev: true - /@csstools/css-parser-algorithms@2.6.1(@csstools/css-tokenizer@2.2.4): resolution: {integrity: sha512-ubEkAaTfVZa+WwGhs5jbo5Xfqpeaybr/RvWzvFxRs4jfq16wH8l8Ty/QEEpINxll4xhuGfdMbipRyz5QZh9+FA==} engines: {node: ^14 || ^16 || >=18} @@ -915,27 +913,11 @@ packages: '@csstools/css-tokenizer': 2.2.4 dev: true - /@csstools/css-tokenizer@2.2.3: - resolution: {integrity: sha512-pp//EvZ9dUmGuGtG1p+n17gTHEOqu9jO+FiCUjNN3BDmyhdA2Jq9QsVeR7K8/2QCK17HSsioPlTW9ZkzoWb3Lg==} - engines: {node: ^14 || ^16 || >=18} - dev: true - /@csstools/css-tokenizer@2.2.4: resolution: {integrity: sha512-PuWRAewQLbDhGeTvFuq2oClaSCKPIBmHyIobCV39JHRYN0byDcUWJl5baPeNUcqrjtdMNqFooE0FGl31I3JOqw==} engines: {node: ^14 || ^16 || >=18} dev: true - /@csstools/media-query-list-parser@2.1.7(@csstools/css-parser-algorithms@2.5.0)(@csstools/css-tokenizer@2.2.3): - resolution: {integrity: sha512-lHPKJDkPUECsyAvD60joYfDmp8UERYxHGkFfyLJFTVK/ERJe0sVlIFLXU5XFxdjNDTerp5L4KeaKG+Z5S94qxQ==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - '@csstools/css-parser-algorithms': ^2.5.0 - '@csstools/css-tokenizer': ^2.2.3 - dependencies: - '@csstools/css-parser-algorithms': 2.5.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 - dev: true - /@csstools/media-query-list-parser@2.1.9(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4): resolution: {integrity: sha512-qqGuFfbn4rUmyOB0u8CVISIp5FfJ5GAR3mBrZ9/TKndHakdnm6pY0L/fbLcpPnrzwCyyTEZl1nUcXAYHEWneTA==} engines: {node: ^14 || ^16 || >=18} @@ -1626,33 +1608,26 @@ packages: requiresBuild: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + /@eslint-community/eslint-utils@4.4.0(eslint@9.0.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.57.0 + eslint: 9.0.0 eslint-visitor-keys: 3.4.3 dev: true + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + /@eslint-community/regexpp@4.6.2: resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint-types/jsdoc@47.0.2: - resolution: {integrity: sha512-sMgWlMHh25ULecVemL1ID3CNrYEaUSmB3W/ZoUBwGz4ktnpIKTAUa9x1e4RHVbJa0SpnVwfJf+ul1Rqx0dh9cA==} - dev: true - - /@eslint-types/typescript-eslint@7.0.2: - resolution: {integrity: sha512-2F67MVKhkJ2rSwoYvNJzJULqZwR5rNYI/eWoIrKDQ14lMzfqzbpzCBvnHrivBYWTN+Az7MVX00TzDTrjOc+YNA==} - dev: true - - /@eslint-types/unicorn@51.0.1: - resolution: {integrity: sha512-RuuEK+dBISEikf7a8lrWOrDCUYv09sZfqLoG/kozH+5UqEvot1xMmGHXomGkTyB68rzjgJe0N4uESVyL62obJw==} - dev: true - /@eslint/eslintrc@2.1.4: resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1660,8 +1635,8 @@ packages: ajv: 6.12.6 debug: 4.3.4(supports-color@9.2.2) espree: 9.6.1 - globals: 13.19.0 - ignore: 5.2.4 + globals: 13.24.0 + ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -1670,9 +1645,26 @@ packages: - supports-color dev: true - /@eslint/js@8.57.0: - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@eslint/eslintrc@3.0.2: + resolution: {integrity: sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4(supports-color@9.2.2) + espree: 10.0.1 + globals: 14.0.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@9.0.0: + resolution: {integrity: sha512-RThY/MnKrhubF6+s1JflwUjPEsnCEmYCWwqa/aRISKWNXGZ9epUwft4bUMM35SdKF9xvBrLydAM1RDHd1Z//ZQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true /@fastify/accept-negotiator@1.1.0: @@ -1740,11 +1732,11 @@ packages: resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} dev: false - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + /@humanwhocodes/config-array@0.12.3: + resolution: {integrity: sha512-jsNnTBlMWuTpDkeE3on7+dWJi0D6fdDfeANj/w7MpS8ztROCoLvIO2nG0CcFj+E4k8j4QrSTh4Oryi3i2G669g==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 2.0.2 + '@humanwhocodes/object-schema': 2.0.3 debug: 4.3.4(supports-color@9.2.2) minimatch: 3.1.2 transitivePeerDependencies: @@ -1761,8 +1753,8 @@ packages: engines: {node: '>=10.10.0'} dev: false - /@humanwhocodes/object-schema@2.0.2: - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} dev: true /@hutson/parse-repository-url@3.0.2: @@ -1779,8 +1771,8 @@ packages: resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} dev: false - /@iconify/json@2.2.196: - resolution: {integrity: sha512-hRZ0pq77N+mkAbZvFi/pfsKcspA8PyGSASc6zQoq6n/RSLxb8xAgORatVHyDl0ow7shcS+dvyiZI8xmr6yI2WA==} + /@iconify/json@2.2.200: + resolution: {integrity: sha512-hnGvv2qeQD+DYhbCZSjnIlSi63dPFNmnMWCqLh0cL0kOqQBYsL61ViMjiusjVHKgBWf+fI4Sp6/bsoFuEWbhQg==} dependencies: '@iconify/types': 2.0.0 pathe: 1.1.2 @@ -1808,7 +1800,7 @@ packages: vue: '>=3' dependencies: '@iconify/types': 2.0.0 - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.5) dev: false /@import-maps/resolve@1.0.1: @@ -1836,7 +1828,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.12.2 + '@types/node': 20.12.7 '@types/yargs': 16.0.4 chalk: 4.1.2 dev: false @@ -2248,13 +2240,8 @@ packages: resolution: {integrity: sha512-4wMPu9iN3/HL97QblBsBay3E1etIciR84izI3U+4iALY+JHCrI+a2jO0qbAZ/nxKoegypYEaiiqWXylm+/zfrw==} dev: false - /@netlify/blobs@6.5.0: - resolution: {integrity: sha512-wRFlNnL/Qv3WNLZd3OT/YYqF1zb6iPSo8T31sl9ccL1ahBxW1fBqKgF4b1XL7Z+6mRIkatvcsVPkWBcO+oJMNA==} - engines: {node: ^14.16.0 || >=16.0.0} - dev: false - - /@netlify/blobs@7.0.1: - resolution: {integrity: sha512-TPx1QzdPcrtBLFXDsv+BOJg5ip/g4trKaot1MZIUV/uI6H0Islg3gU4AGuH5hAMZOr6VlRLWicFhGX7ihLz4eg==} + /@netlify/blobs@7.3.0: + resolution: {integrity: sha512-wN/kNTZo4xjlUM/C0WILOkJbe8p4AFquSGkZEIoIcgnsx5ikp2GyqGiq1WMLee7QdbnqeIV2g2hn/PjT324E5w==} engines: {node: ^14.16.0 || >=16.0.0} dev: false @@ -2267,36 +2254,36 @@ packages: '@iarna/toml': 2.2.5 dot-prop: 7.2.0 find-up: 6.3.0 - minimatch: 9.0.3 + minimatch: 9.0.4 read-pkg: 7.1.0 semver: 7.6.0 yaml: 2.3.4 yargs: 17.7.2 dev: false - /@netlify/build@29.36.6(@opentelemetry/api@1.8.0)(@types/node@20.12.2): - resolution: {integrity: sha512-crNoY5Vr7tAodBfYdz8weM+NTw5q6W6ArkowNw6QhKXa4iRXT5MY6H0c2ztsge9o5gAYs55bDhBpKiPcZlzDlA==} + /@netlify/build@29.39.1(@opentelemetry/api@1.8.0)(@types/node@20.12.7): + resolution: {integrity: sha512-Pl6xb7CecEJEkUszylscT1f7FF+37xaIk+wz5ZL99TIhZ2D/3f0w+wm0knASTB90dvmDaL4IAfPTDMORzgMBIA==} engines: {node: ^14.16.0 || >=16.0.0} hasBin: true peerDependencies: - '@netlify/opentelemetry-sdk-setup': ^1.0.5 - '@opentelemetry/api': ^1.7.0 + '@netlify/opentelemetry-sdk-setup': ^1.1.0 + '@opentelemetry/api': ~1.8.0 peerDependenciesMeta: '@netlify/opentelemetry-sdk-setup': optional: true dependencies: '@bugsnag/js': 7.20.2 - '@netlify/blobs': 6.5.0 + '@netlify/blobs': 7.3.0 '@netlify/cache-utils': 5.1.5 '@netlify/config': 20.12.1 '@netlify/edge-bundler': 11.3.0(supports-color@9.2.2) '@netlify/framework-info': 9.8.11 - '@netlify/functions-utils': 5.2.51(supports-color@9.2.2) + '@netlify/functions-utils': 5.2.54(supports-color@9.2.2) '@netlify/git-utils': 5.1.1 '@netlify/opentelemetry-utils': 1.1.0(@opentelemetry/api@1.8.0) - '@netlify/plugins-list': 6.75.0 + '@netlify/plugins-list': 6.77.0 '@netlify/run-utils': 5.1.1 - '@netlify/zip-it-and-ship-it': 9.29.2(supports-color@9.2.2) + '@netlify/zip-it-and-ship-it': 9.31.3(supports-color@9.2.2) '@opentelemetry/api': 1.8.0 '@sindresorhus/slugify': 2.1.0 ansi-escapes: 6.2.1 @@ -2339,8 +2326,8 @@ packages: strip-ansi: 7.1.0 supports-color: 9.2.2 terminal-link: 3.0.0 - ts-node: 10.9.2(@types/node@20.12.2)(typescript@5.4.3) - typescript: 5.4.3 + ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.4.5) + typescript: 5.4.5 uuid: 9.0.0 yargs: 17.7.2 transitivePeerDependencies: @@ -2428,6 +2415,10 @@ packages: - supports-color dev: false + /@netlify/edge-functions@2.5.1: + resolution: {integrity: sha512-6YGlbzxPaSqc/D2LhP4T4PXrim/vRmqpO1RwQKqVod6WCWlkdtJcAd3mGoI7efrjfND8twh7TqXtL7RRCI23qA==} + dev: false + /@netlify/framework-info@9.8.11: resolution: {integrity: sha512-8NuvzQQVeU36PRilWqijiIWmjy6JZcqbKooGQ4bNgH/26YNdS+tN5gOWGWVYnRHgdmBUCycyYrM5h1Srwnq3hQ==} engines: {node: ^14.14.0 || >=16.0.0} @@ -2444,11 +2435,11 @@ packages: semver: 7.6.0 dev: false - /@netlify/functions-utils@5.2.51(supports-color@9.2.2): - resolution: {integrity: sha512-A4XLQOE2pfcOHcCTs97G6FDVQg20zGoROCAZcpnNd8bMvBDDVgziC/xoFxm4xGC36u0YogSECsLoIbSKSxLloA==} + /@netlify/functions-utils@5.2.54(supports-color@9.2.2): + resolution: {integrity: sha512-QdYmIPC6NBp90MfuHWeNGqf1XdsRUcIIbcWnT2AK1g2By8ur8m28qGM99GlReRmprzC7ZT7YmwcHjUjaq24sRA==} engines: {node: ^14.16.0 || >=16.0.0} dependencies: - '@netlify/zip-it-and-ship-it': 9.29.2(supports-color@9.2.2) + '@netlify/zip-it-and-ship-it': 9.31.3(supports-color@9.2.2) cpy: 9.0.1 path-exists: 5.0.0 transitivePeerDependencies: @@ -2618,8 +2609,8 @@ packages: '@opentelemetry/api': 1.8.0 dev: false - /@netlify/plugins-list@6.75.0: - resolution: {integrity: sha512-xH5UWc6v6oOu53kaNhJI6o0vESVECoGBjD5hW5nmjFaIkEJFDfbtHj/gSQ2hCcwIzTlGYRGIyGVBMY+e7ki6bw==} + /@netlify/plugins-list@6.77.0: + resolution: {integrity: sha512-czL3FH61hFhhVQydRj2xjIwLVYHDNskMhRib7dUfOQrUHifqLlUFKp03NwBD87G9BFKXUYGWZMEUU+JjIpVc9w==} engines: {node: ^14.14.0 || >=16.0.0} dev: false @@ -2638,58 +2629,23 @@ packages: urlpattern-polyfill: 8.0.2 dev: false - /@netlify/zip-it-and-ship-it@9.29.2(supports-color@9.2.2): - resolution: {integrity: sha512-9o/4lsFWuyPpe38Rhk/00JyccKSBRGM9Av3DINnh/QrpTeIC6esfJsaJNQ4JQ+gU4XXAwxPY9Uk+16WMPs/zkg==} + /@netlify/serverless-functions-api@1.16.2: + resolution: {integrity: sha512-v28g91/bnvvFw+LO/ro/n766RhbWqB5UG2H73kwEUuSqlnLuO/tMgPh13vOeeIgjZcXZoulGn13g7eUs4j6Qpg==} engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true dependencies: - '@babel/parser': 7.23.9 - '@babel/types': 7.23.6 - '@netlify/binary-info': 1.0.0 - '@netlify/serverless-functions-api': 1.14.0 - '@vercel/nft': 0.23.0(supports-color@9.2.2) - archiver: 6.0.1 - common-path-prefix: 3.0.0 - cp-file: 10.0.0 - es-module-lexer: 1.2.1 - esbuild: 0.19.11 - execa: 6.1.0 - fast-glob: 3.3.2 - filter-obj: 5.1.0 - find-up: 6.3.0 - glob: 8.0.3 - is-builtin-module: 3.2.1 - is-path-inside: 4.0.0 - junk: 4.0.0 - locate-path: 7.2.0 - merge-options: 3.0.4 - minimatch: 9.0.3 - normalize-path: 3.0.0 - p-map: 5.5.0 - path-exists: 5.0.0 - precinct: 11.0.2(supports-color@9.2.2) - require-package-name: 2.0.1 - resolve: 2.0.0-next.4 - semver: 7.6.0 - tmp-promise: 3.0.3 - toml: 3.0.0 - unixify: 1.0.0 + '@netlify/node-cookies': 0.1.0 urlpattern-polyfill: 8.0.2 - yargs: 17.7.2 - transitivePeerDependencies: - - encoding - - supports-color dev: false - /@netlify/zip-it-and-ship-it@9.30.0: - resolution: {integrity: sha512-R0v1/vDjjizB4em4YvigqIRj4ZAdcp18svajvcDp6OhB6pt76LZ/RlPEEPq4sGfpQRUpdmapNdnQDNHHReyXug==} + /@netlify/zip-it-and-ship-it@9.31.3(supports-color@9.2.2): + resolution: {integrity: sha512-cB8DE0pV90IYShytLcKyxZFy6aolKqSuFDMOKVL/svJ6hMQOVlngz5ZKcNRX4rQ2uHWHTe75tgTn6OqmelQYrw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true dependencies: '@babel/parser': 7.23.9 '@babel/types': 7.23.6 '@netlify/binary-info': 1.0.0 - '@netlify/serverless-functions-api': 1.14.0 + '@netlify/serverless-functions-api': 1.16.2 '@vercel/nft': 0.23.0(supports-color@9.2.2) archiver: 6.0.1 common-path-prefix: 3.0.0 @@ -2706,7 +2662,7 @@ packages: junk: 4.0.0 locate-path: 7.2.0 merge-options: 3.0.4 - minimatch: 9.0.3 + minimatch: 9.0.4 normalize-path: 3.0.0 p-map: 5.5.0 path-exists: 5.0.0 @@ -3019,40 +2975,8 @@ packages: '@parcel/watcher-win32-x64': 2.4.1 dev: false - /@pengzhanbo/eslint-config-vue@1.7.0(@vue/compiler-sfc@3.4.21)(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-vNG5B9YtiDafIcv77G6Usi97DuFOHWVOSxYLQC5TU1KkhloyfkwtZOU+GOh1o1iNqivSMWK9CyqNdCeAi6zsbg==} - peerDependencies: - '@unocss/eslint-plugin': '>=0.50.0' - eslint: '>=8.40.0' - eslint-plugin-tailwindcss: '>=3.10.0' - peerDependenciesMeta: - '@unocss/eslint-plugin': - optional: true - eslint-plugin-tailwindcss: - optional: true - dependencies: - '@pengzhanbo/eslint-config': 1.7.0(eslint@8.57.0)(typescript@5.4.3)(vue-eslint-parser@9.4.2) - '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.4.3) - eslint: 8.57.0 - eslint-merge-processors: 0.1.0(eslint@8.57.0) - eslint-plugin-vue: 9.23.0(eslint@8.57.0) - eslint-processor-vue-blocks: 0.1.1(@vue/compiler-sfc@3.4.21)(eslint@8.57.0) - vue-eslint-parser: 9.4.2(eslint@8.57.0) - transitivePeerDependencies: - - '@vue/compiler-sfc' - - astro-eslint-parser - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - eslint-plugin-format - - supports-color - - svelte - - svelte-eslint-parser - - typescript - - vitest - dev: true - - /@pengzhanbo/eslint-config@1.7.0(eslint@8.57.0)(typescript@5.4.3)(vue-eslint-parser@9.4.2): - resolution: {integrity: sha512-nACTEV6EHue8JHaKKdQp0uCTcwYFWtF/LBqGbsC251MQ64lB2ADuAW0kfi1Hq82bpelrglgyoelcJbj7gETDpA==} + /@pengzhanbo/eslint-config-vue@1.8.1(@vue/compiler-sfc@3.4.21)(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-hf1FstKptCaQWDhimMPjuvC9A8z2amTmCYqiaxi3M5kOcCc0kUzZc6UrOB0qQljIEMwG/j6KER4Q9IVD8Bl10g==} peerDependencies: '@unocss/eslint-plugin': '>=0.50.0' eslint: '>=8.40.0' @@ -3066,66 +2990,143 @@ packages: eslint-plugin-tailwindcss: optional: true dependencies: - '@antfu/eslint-define-config': 1.23.0-2 - '@eslint-types/jsdoc': 47.0.2 - '@eslint-types/typescript-eslint': 7.0.2 - '@eslint-types/unicorn': 51.0.1 - '@stylistic/eslint-plugin': 1.7.0(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/eslint-plugin': 7.2.0(@typescript-eslint/parser@7.2.0)(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.4.3) - eslint: 8.57.0 - eslint-config-flat-gitignore: 0.1.3 - eslint-merge-processors: 0.1.0(eslint@8.57.0) - eslint-plugin-antfu: 2.1.2(eslint@8.57.0) - eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0) - eslint-plugin-i: 2.29.1(@typescript-eslint/parser@7.2.0)(eslint@8.57.0) - eslint-plugin-jsdoc: 48.2.1(eslint@8.57.0) - eslint-plugin-jsonc: 2.13.0(eslint@8.57.0) - eslint-plugin-markdown: 4.0.1(eslint@8.57.0) - eslint-plugin-n: 16.6.2(eslint@8.57.0) - eslint-plugin-no-only-tests: 3.1.0 - eslint-plugin-perfectionist: 2.7.0(eslint@8.57.0)(typescript@5.4.3)(vue-eslint-parser@9.4.2) - eslint-plugin-toml: 0.9.2(eslint@8.57.0) - eslint-plugin-unicorn: 51.0.1(eslint@8.57.0) - eslint-plugin-unused-imports: 3.1.0(@typescript-eslint/eslint-plugin@7.2.0)(eslint@8.57.0) - eslint-plugin-vitest: 0.3.26(@typescript-eslint/eslint-plugin@7.2.0)(eslint@8.57.0)(typescript@5.4.3) - eslint-plugin-yml: 1.12.2(eslint@8.57.0) - globals: 14.0.0 - jsonc-eslint-parser: 2.4.0 - local-pkg: 0.5.0 - parse-gitignore: 2.0.0 - toml-eslint-parser: 0.9.3 - yaml-eslint-parser: 1.2.2 + '@pengzhanbo/eslint-config': 1.8.1(eslint-plugin-vue@9.24.1)(eslint-processor-vue-blocks@0.1.1)(eslint@9.0.0)(typescript@5.4.5)(vue-eslint-parser@9.4.2) + eslint: 9.0.0 + eslint-plugin-vue: 9.24.1(eslint@9.0.0) + eslint-processor-vue-blocks: 0.1.1(@vue/compiler-sfc@3.4.21)(eslint@9.0.0) + vue-eslint-parser: 9.4.2(eslint@9.0.0) transitivePeerDependencies: + - '@next/eslint-plugin-next' + - '@vue/compiler-sfc' - astro-eslint-parser - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack + - eslint-plugin-astro + - eslint-plugin-react + - eslint-plugin-react-hooks + - eslint-plugin-react-refresh + - eslint-plugin-solid + - eslint-plugin-svelte + - prettier-plugin-astro + - prettier-plugin-slidev - supports-color - svelte - svelte-eslint-parser - typescript - vitest - - vue-eslint-parser dev: true - /@pengzhanbo/stylelint-config@1.7.0(stylelint@16.3.1): - resolution: {integrity: sha512-r31R+k7cTAKBoVzeGDAR5nnyIh4VId6zFnzobyoJS/z40o9v6sFNT7OYHFR9APXJwx4rV2L33t0LPCxlaoupEw==} + /@pengzhanbo/eslint-config@1.8.1(eslint-plugin-vue@9.24.1)(eslint-processor-vue-blocks@0.1.1)(eslint@9.0.0)(typescript@5.4.5)(vue-eslint-parser@9.4.2): + resolution: {integrity: sha512-lvntYHiENrZXlnwqAV7Uy05x74sKSmlYnt47Tv3HB+dy7pAaBmxBxFkRKnthQj01cd4hWSrl19Hy3Z1wUVrevg==} + peerDependencies: + '@next/eslint-plugin-next': ^14.1.4 + '@unocss/eslint-plugin': '>=0.50.0' + astro-eslint-parser: ^0.16.3 + eslint: '>=8.40.0' + eslint-plugin-astro: ^0.31.4 + eslint-plugin-format: '>=0.1.0' + eslint-plugin-react: ^7.33.2 + eslint-plugin-react-hooks: ^4.6.0 + eslint-plugin-react-refresh: ^0.4.4 + eslint-plugin-solid: ^0.13.2 + eslint-plugin-svelte: '>=2.35.1' + eslint-plugin-tailwindcss: ^3.15.1 + eslint-plugin-vue: ^9.24.0 + eslint-processor-vue-blocks: ^0.1.1 + prettier-plugin-astro: ^0.13.0 + prettier-plugin-slidev: ^1.0.5 + svelte-eslint-parser: ^0.33.1 + vue-eslint-parser: ^9.4.2 + peerDependenciesMeta: + '@next/eslint-plugin-next': + optional: true + '@unocss/eslint-plugin': + optional: true + astro-eslint-parser: + optional: true + eslint-plugin-astro: + optional: true + eslint-plugin-format: + optional: true + eslint-plugin-react: + optional: true + eslint-plugin-react-hooks: + optional: true + eslint-plugin-react-refresh: + optional: true + eslint-plugin-solid: + optional: true + eslint-plugin-svelte: + optional: true + eslint-plugin-tailwindcss: + optional: true + eslint-plugin-vue: + optional: true + eslint-processor-vue-blocks: + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-slidev: + optional: true + svelte-eslint-parser: + optional: true + vue-eslint-parser: + optional: true + dependencies: + '@antfu/install-pkg': 0.3.2 + '@stylistic/eslint-plugin': 1.7.0(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 7.6.0(@typescript-eslint/parser@7.6.0)(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.6.0(eslint@9.0.0)(typescript@5.4.5) + eslint: 9.0.0 + eslint-config-flat-gitignore: 0.1.5 + eslint-flat-config-utils: 0.2.1 + eslint-merge-processors: 0.1.0(eslint@9.0.0) + eslint-plugin-antfu: 2.1.2(eslint@9.0.0) + eslint-plugin-eslint-comments: 3.2.0(eslint@9.0.0) + eslint-plugin-import-x: 0.5.0(eslint@9.0.0)(typescript@5.4.5) + eslint-plugin-jsdoc: 48.2.3(eslint@9.0.0) + eslint-plugin-jsonc: 2.15.0(eslint@9.0.0) + eslint-plugin-markdown: 4.0.1(eslint@9.0.0) + eslint-plugin-n: 17.1.0(eslint@9.0.0) + eslint-plugin-no-only-tests: 3.1.0 + eslint-plugin-perfectionist: 2.8.0(eslint@9.0.0)(typescript@5.4.5)(vue-eslint-parser@9.4.2) + eslint-plugin-toml: 0.11.0(eslint@9.0.0) + eslint-plugin-unicorn: 52.0.0(eslint@9.0.0) + eslint-plugin-unused-imports: 3.1.0(@typescript-eslint/eslint-plugin@7.6.0)(eslint@9.0.0) + eslint-plugin-vitest: 0.5.1(@typescript-eslint/eslint-plugin@7.6.0)(eslint@9.0.0)(typescript@5.4.5) + eslint-plugin-vue: 9.24.1(eslint@9.0.0) + eslint-plugin-yml: 1.14.0(eslint@9.0.0) + eslint-processor-vue-blocks: 0.1.1(@vue/compiler-sfc@3.4.21)(eslint@9.0.0) + globals: 15.0.0 + jsonc-eslint-parser: 2.4.0 + local-pkg: 0.5.0 + parse-gitignore: 2.0.0 + toml-eslint-parser: 0.9.3 + vue-eslint-parser: 9.4.2(eslint@9.0.0) + yaml-eslint-parser: 1.2.2 + transitivePeerDependencies: + - supports-color + - svelte + - typescript + - vitest + dev: true + + /@pengzhanbo/stylelint-config@1.8.1(stylelint@16.3.1): + resolution: {integrity: sha512-Xgpw+oubW3qSTFavoq7j1JwCXB7dOkVnW6lggzKNhGm0UHiUyvPjXxFfxFOJq5WjyeLBB3ksWC2B/7aKO36GWg==} peerDependencies: stylelint: '>=16.0.0' dependencies: '@pengzhanbo/utils': 1.1.2 - '@stylelint-types/stylelint-order': 6.0.4(stylelint-define-config@1.2.0)(stylelint@16.3.1) - '@stylelint-types/stylelint-scss': 6.1.0(stylelint-define-config@1.2.0)(stylelint@16.3.1) - '@stylelint-types/stylelint-stylistic': 2.1.0(stylelint-define-config@1.2.0)(stylelint@16.3.1) - '@stylistic/stylelint-plugin': 2.1.0(stylelint@16.3.1) + '@stylelint-types/stylelint-order': 6.0.4(stylelint-define-config@1.3.0)(stylelint@16.3.1) + '@stylelint-types/stylelint-scss': 6.1.0(stylelint-define-config@1.3.0)(stylelint@16.3.1) + '@stylelint-types/stylelint-stylistic': 2.1.0(stylelint-define-config@1.3.0)(stylelint@16.3.1) + '@stylistic/stylelint-plugin': 2.1.1(stylelint@16.3.1) local-pkg: 0.5.0 - postcss: 8.4.35 + postcss: 8.4.38 postcss-html: 1.6.0 - stylelint: 16.3.1(typescript@5.4.3) + stylelint: 16.3.1(typescript@5.4.5) stylelint-config-html: 1.1.0(postcss-html@1.6.0)(stylelint@16.3.1) stylelint-config-standard: 36.0.0(stylelint@16.3.1) - stylelint-config-standard-scss: 13.0.0(postcss@8.4.35)(stylelint@16.3.1) - stylelint-define-config: 1.2.0(stylelint@16.3.1) + stylelint-config-standard-scss: 13.1.0(postcss@8.4.38)(stylelint@16.3.1) + stylelint-define-config: 1.3.0(stylelint@16.3.1) stylelint-order: 6.0.4(stylelint@16.3.1) dev: true @@ -3252,21 +3253,21 @@ packages: requiresBuild: true optional: true - /@shikijs/core@1.2.2: - resolution: {integrity: sha512-GXbTyNP6HlxpyWMR4eirW54Cxp84nVuivcV5hGVBgKnIl+UmD4AJgCX1uXuNRcFFAw58lB3HqryuezIc0iCLgw==} + /@shikijs/core@1.3.0: + resolution: {integrity: sha512-7fedsBfuILDTBmrYZNFI8B6ATTxhQAasUHllHmjvSZPnoq4bULWoTpHwmuQvZ8Aq03/tAa2IGo6RXqWtHdWaCA==} dev: false - /@shikijs/transformers@1.2.2: - resolution: {integrity: sha512-GL03TlMh9oBeBLU5pcYBKpZnZZVdXSJ4ec7EQ/uw9+NrVaHs6qTjVN8F/0mvKd+sXLbBga8XZWDdob5F5tx5lw==} + /@shikijs/transformers@1.3.0: + resolution: {integrity: sha512-3mlpg2I9CjhjE96dEWQOGeCWoPcyTov3s4aAsHmgvnTHa8MBknEnCQy8/xivJPSpD+olqOqIEoHnLfbNJK29AA==} dependencies: - shiki: 1.2.2 + shiki: 1.3.0 dev: false - /@shikijs/twoslash@1.2.2(typescript@5.4.3): - resolution: {integrity: sha512-jeKlFxejIj1f8SKNCHqWUyjSmfqsO91iCdiD2aG2fZk49JhesXBwqzEsCoB6DxSnVSNredjYbcnDKzTAjmySmQ==} + /@shikijs/twoslash@1.3.0(typescript@5.4.5): + resolution: {integrity: sha512-XF8Xmotej+cavT6ibKtnsN+TagUJF6eieOV0botcXLhj5aMTPtO+Jdjm9+0vGgloy9JHtuXsik1/JqYMvPIIVw==} dependencies: - '@shikijs/core': 1.2.2 - twoslash: 0.2.5(typescript@5.4.3) + '@shikijs/core': 1.3.0 + twoslash: 0.2.5(typescript@5.4.5) transitivePeerDependencies: - supports-color - typescript @@ -3298,7 +3299,7 @@ packages: lodash.deburr: 4.1.0 dev: false - /@stylelint-types/stylelint-order@6.0.4(stylelint-define-config@1.2.0)(stylelint@16.3.1): + /@stylelint-types/stylelint-order@6.0.4(stylelint-define-config@1.3.0)(stylelint@16.3.1): resolution: {integrity: sha512-KiwDbjvlFYQm9O1onomzZRLaEZjWZusnXvnEDwFGwN4fs2sq7MwbL6VAVt3UtmsAVt0R20xKEGKbxk0ojzdMmA==} engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>=8.6.0'} peerDependencies: @@ -3308,11 +3309,11 @@ packages: stylelint: optional: true dependencies: - stylelint: 16.3.1(typescript@5.4.3) - stylelint-define-config: 1.2.0(stylelint@16.3.1) + stylelint: 16.3.1(typescript@5.4.5) + stylelint-define-config: 1.3.0(stylelint@16.3.1) dev: true - /@stylelint-types/stylelint-scss@6.1.0(stylelint-define-config@1.2.0)(stylelint@16.3.1): + /@stylelint-types/stylelint-scss@6.1.0(stylelint-define-config@1.3.0)(stylelint@16.3.1): resolution: {integrity: sha512-wHNxvoh7nqJOdQpjnq05karRvtaYEm+FKVkBLO1VmOORPwZLWCzXNz0D9COU9sLhMtY3cEbqKiuOWjxYzFTRBw==} engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>=8.6.0'} peerDependencies: @@ -3322,11 +3323,11 @@ packages: stylelint: optional: true dependencies: - stylelint: 16.3.1(typescript@5.4.3) - stylelint-define-config: 1.2.0(stylelint@16.3.1) + stylelint: 16.3.1(typescript@5.4.5) + stylelint-define-config: 1.3.0(stylelint@16.3.1) dev: true - /@stylelint-types/stylelint-stylistic@2.1.0(stylelint-define-config@1.2.0)(stylelint@16.3.1): + /@stylelint-types/stylelint-stylistic@2.1.0(stylelint-define-config@1.3.0)(stylelint@16.3.1): resolution: {integrity: sha512-qCuTESf5N2u6PwPzTVk1SEn63FOeyDJj8a9Ft1t1ojaDzFMOXjjbfL/E1UPUnwJpHdVR/hrU2yhX5i4BSx/8fw==} engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>=8.6.0'} peerDependencies: @@ -3336,96 +3337,96 @@ packages: stylelint: optional: true dependencies: - stylelint: 16.3.1(typescript@5.4.3) - stylelint-define-config: 1.2.0(stylelint@16.3.1) + stylelint: 16.3.1(typescript@5.4.5) + stylelint-define-config: 1.3.0(stylelint@16.3.1) dev: true - /@stylistic/eslint-plugin-js@1.7.0(eslint@8.57.0): + /@stylistic/eslint-plugin-js@1.7.0(eslint@9.0.0): resolution: {integrity: sha512-PN6On/+or63FGnhhMKSQfYcWutRlzOiYlVdLM6yN7lquoBTqUJHYnl4TA4MHwiAt46X5gRxDr1+xPZ1lOLcL+Q==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: '>=8.40.0' dependencies: - '@types/eslint': 8.56.2 + '@types/eslint': 8.56.7 acorn: 8.11.3 escape-string-regexp: 4.0.0 - eslint: 8.57.0 + eslint: 9.0.0 eslint-visitor-keys: 3.4.3 espree: 9.6.1 dev: true - /@stylistic/eslint-plugin-jsx@1.7.0(eslint@8.57.0): + /@stylistic/eslint-plugin-jsx@1.7.0(eslint@9.0.0): resolution: {integrity: sha512-BACdBwXakQvjYIST5N2WWhRbvhRsIxa/F59BiZol+0IH4FSmDXhie7v/yaxDIIA9CbfElzOmIA5nWNYTVXcnwQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: '>=8.40.0' dependencies: - '@stylistic/eslint-plugin-js': 1.7.0(eslint@8.57.0) - '@types/eslint': 8.56.2 - eslint: 8.57.0 + '@stylistic/eslint-plugin-js': 1.7.0(eslint@9.0.0) + '@types/eslint': 8.56.7 + eslint: 9.0.0 estraverse: 5.3.0 picomatch: 4.0.1 dev: true - /@stylistic/eslint-plugin-plus@1.7.0(eslint@8.57.0)(typescript@5.4.3): + /@stylistic/eslint-plugin-plus@1.7.0(eslint@9.0.0)(typescript@5.4.5): resolution: {integrity: sha512-AabDw8sXsc70Ydx3qnbeTlRHZnIwY6UKEenBPURPhY3bfYWX+/pDpZH40HkOu94v8D0DUrocPkeeEUxl4e0JDg==} peerDependencies: eslint: '*' dependencies: - '@types/eslint': 8.56.2 - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.3) - eslint: 8.57.0 + '@types/eslint': 8.56.7 + '@typescript-eslint/utils': 6.21.0(eslint@9.0.0)(typescript@5.4.5) + eslint: 9.0.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@stylistic/eslint-plugin-ts@1.7.0(eslint@8.57.0)(typescript@5.4.3): + /@stylistic/eslint-plugin-ts@1.7.0(eslint@9.0.0)(typescript@5.4.5): resolution: {integrity: sha512-QsHv98mmW1xaucVYQTyLDgEpybPJ/6jPPxVBrIchntWWwj74xCWKUiw79hu+TpYj/Pbhd9rkqJYLNq3pQGYuyA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: '>=8.40.0' dependencies: - '@stylistic/eslint-plugin-js': 1.7.0(eslint@8.57.0) - '@types/eslint': 8.56.2 - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.3) - eslint: 8.57.0 + '@stylistic/eslint-plugin-js': 1.7.0(eslint@9.0.0) + '@types/eslint': 8.56.7 + '@typescript-eslint/utils': 6.21.0(eslint@9.0.0)(typescript@5.4.5) + eslint: 9.0.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@stylistic/eslint-plugin@1.7.0(eslint@8.57.0)(typescript@5.4.3): + /@stylistic/eslint-plugin@1.7.0(eslint@9.0.0)(typescript@5.4.5): resolution: {integrity: sha512-ThMUjGIi/jeWYNvOdjZkoLw1EOVs0tEuKXDgWvTn8uWaEz55HuPlajKxjKLpv19C+qRDbKczJfzUODfCdME53A==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: '>=8.40.0' dependencies: - '@stylistic/eslint-plugin-js': 1.7.0(eslint@8.57.0) - '@stylistic/eslint-plugin-jsx': 1.7.0(eslint@8.57.0) - '@stylistic/eslint-plugin-plus': 1.7.0(eslint@8.57.0)(typescript@5.4.3) - '@stylistic/eslint-plugin-ts': 1.7.0(eslint@8.57.0)(typescript@5.4.3) - '@types/eslint': 8.56.2 - eslint: 8.57.0 + '@stylistic/eslint-plugin-js': 1.7.0(eslint@9.0.0) + '@stylistic/eslint-plugin-jsx': 1.7.0(eslint@9.0.0) + '@stylistic/eslint-plugin-plus': 1.7.0(eslint@9.0.0)(typescript@5.4.5) + '@stylistic/eslint-plugin-ts': 1.7.0(eslint@9.0.0)(typescript@5.4.5) + '@types/eslint': 8.56.7 + eslint: 9.0.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@stylistic/stylelint-plugin@2.1.0(stylelint@16.3.1): - resolution: {integrity: sha512-mUZEW9uImHSbXeyzbFmHb8WPBv56UTaEnWL/3dGdAiJ54C+8GTfDwDVdI6gbqT9wV7zynkPu7tCXc5746H9mZQ==} + /@stylistic/stylelint-plugin@2.1.1(stylelint@16.3.1): + resolution: {integrity: sha512-xqHTmQZN7EbnFDW7jw0rAsdFNO4IRqvXhrh3qhUlIwF/x09Zm7kgs/ADktHxsTJYcw346PpGihsB0t4pZhpeHw==} engines: {node: ^18.12 || >=20.9} peerDependencies: stylelint: ^16.0.2 dependencies: - '@csstools/css-parser-algorithms': 2.5.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 - '@csstools/media-query-list-parser': 2.1.7(@csstools/css-parser-algorithms@2.5.0)(@csstools/css-tokenizer@2.2.3) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/media-query-list-parser': 2.1.9(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) is-plain-object: 5.0.0 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 postcss-value-parser: 4.2.0 style-search: 0.1.0 - stylelint: 16.3.1(typescript@5.4.3) + stylelint: 16.3.1(typescript@5.4.5) dev: true /@szmarczak/http-timer@5.0.1: @@ -3464,19 +3465,19 @@ packages: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/conventional-commits-parser@5.0.0: resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/d3-scale-chromatic@3.0.3: @@ -3499,11 +3500,11 @@ packages: '@types/ms': 0.7.31 dev: false - /@types/eslint@8.56.2: - resolution: {integrity: sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==} + /@types/eslint@8.56.7: + resolution: {integrity: sha512-SjDvI/x3zsZnOkYZ3lCt9lOZWZLB2jIlNKz+LBgCtDurK0JZcwucxYHn1w2BJkD34dgX9Tjnak0txtq4WTggEA==} dependencies: '@types/estree': 1.0.5 - '@types/json-schema': 7.0.12 + '@types/json-schema': 7.0.15 dev: true /@types/estree@1.0.5: @@ -3512,7 +3513,7 @@ packages: /@types/express-serve-static-core@4.17.43: resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 '@types/qs': 6.9.12 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -3531,7 +3532,7 @@ packages: resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} dependencies: '@types/jsonfile': 6.1.1 - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: false /@types/hash-sum@1.0.2: @@ -3555,7 +3556,7 @@ packages: /@types/http-proxy@1.17.9: resolution: {integrity: sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: false /@types/istanbul-lib-coverage@2.0.4: @@ -3574,14 +3575,14 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: false - /@types/json-schema@7.0.12: - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} dev: true /@types/jsonfile@6.1.1: resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: false /@types/katex@0.16.7: @@ -3604,7 +3605,7 @@ packages: /@types/markdown-it-emoji@2.0.4: resolution: {integrity: sha512-H6ulk/ZmbDxOayPwI/leJzrmoW1YKX1Z+MVSCHXuYhvqckV4I/c+hPTf6UiqJyn2avWugfj30XroheEb6/Ekqg==} dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.0.1 dev: false /@types/markdown-it@13.0.7: @@ -3612,6 +3613,13 @@ packages: dependencies: '@types/linkify-it': 3.0.2 '@types/mdurl': 1.0.2 + dev: false + + /@types/markdown-it@14.0.1: + resolution: {integrity: sha512-6WfOG3jXR78DW8L5cTYCVVGAsIFZskRHCDo5tbqa+qtKVt4oDRVH7hyIWu1SpDQJlmIoEivNQZ5h+AGAOrgOtQ==} + dependencies: + '@types/linkify-it': 3.0.2 + '@types/mdurl': 1.0.2 /@types/mdast@3.0.15: resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} @@ -3647,8 +3655,8 @@ packages: resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} dev: false - /@types/node@20.12.2: - resolution: {integrity: sha512-zQ0NYO87hyN6Xrclcqp7f8ZbXNbRfoGWNcMvHTPQp9UUrwI0mI7XBz+cu7/W6/VClYo2g63B0cjull/srU7LgQ==} + /@types/node@20.12.7: + resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} dependencies: undici-types: 5.26.5 @@ -3683,18 +3691,18 @@ packages: /@types/sax@1.2.4: resolution: {integrity: sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: false - /@types/semver@7.5.0: - resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} dev: true /@types/send@0.17.4: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/serve-static@1.15.5: @@ -3702,7 +3710,7 @@ packages: dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/trusted-types@2.0.2: @@ -3738,13 +3746,13 @@ packages: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} requiresBuild: true dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: false optional: true - /@typescript-eslint/eslint-plugin@7.2.0(@typescript-eslint/parser@7.2.0)(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-mdekAHOqS9UjlmyF/LSs6AIEvfceV749GFxoBAjwAv0nkevfKHWQFDMcBZWUiIC5ft6ePWivXoS36aKQ0Cy3sw==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/eslint-plugin@7.6.0(@typescript-eslint/parser@7.6.0)(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-gKmTNwZnblUdnTIJu3e9kmeRRzV2j1a/LUO27KNNAnIC5zjy1aSvXSRp4rVNlmAoHlQ7HzX42NbKpcSr4jF80A==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 eslint: ^8.56.0 @@ -3753,27 +3761,27 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/scope-manager': 7.2.0 - '@typescript-eslint/type-utils': 7.2.0(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/utils': 7.2.0(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/visitor-keys': 7.2.0 + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 7.6.0(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.6.0 + '@typescript-eslint/type-utils': 7.6.0(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.6.0 debug: 4.3.4(supports-color@9.2.2) - eslint: 8.57.0 + eslint: 9.0.0 graphemer: 1.4.0 - ignore: 5.3.0 + ignore: 5.3.1 natural-compare: 1.4.0 semver: 7.6.0 - ts-api-utils: 1.0.1(typescript@5.4.3) - typescript: 5.4.3 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/parser@7.6.0(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-usPMPHcwX3ZoPWnBnhhorc14NJw9J4HpSXQX4urF2TPKG0au0XhJoZyX62fmvdHONUkmyUe74Hzm1//XA+BoYg==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 typescript: '*' @@ -3781,13 +3789,13 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.2.0 - '@typescript-eslint/types': 7.2.0 - '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.4.3) - '@typescript-eslint/visitor-keys': 7.2.0 + '@typescript-eslint/scope-manager': 7.6.0 + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.6.0 debug: 4.3.4(supports-color@9.2.2) - eslint: 8.57.0 - typescript: 5.4.3 + eslint: 9.0.0 + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true @@ -3800,17 +3808,17 @@ packages: '@typescript-eslint/visitor-keys': 6.21.0 dev: true - /@typescript-eslint/scope-manager@7.2.0: - resolution: {integrity: sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/scope-manager@7.6.0: + resolution: {integrity: sha512-ngttyfExA5PsHSx0rdFgnADMYQi+Zkeiv4/ZxGYUWd0nLs63Ha0ksmp8VMxAIC0wtCFxMos7Lt3PszJssG/E6w==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.2.0 - '@typescript-eslint/visitor-keys': 7.2.0 + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/visitor-keys': 7.6.0 dev: true - /@typescript-eslint/type-utils@7.2.0(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-xHi51adBHo9O9330J8GQYQwrKBqbIPJGZZVQTHHmy200hvkLZFWJIFtAG/7IYTWUyun6DE6w5InDReePJYJlJA==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/type-utils@7.6.0(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-NxAfqAPNLG6LTmy7uZgpK8KcuiS2NZD/HlThPXQRGwz6u7MDBWRVliEEl1Gj6U7++kVJTpehkhZzCJLMK66Scw==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 typescript: '*' @@ -3818,12 +3826,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.4.3) - '@typescript-eslint/utils': 7.2.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.4.5) debug: 4.3.4(supports-color@9.2.2) - eslint: 8.57.0 - ts-api-utils: 1.0.1(typescript@5.4.3) - typescript: 5.4.3 + eslint: 9.0.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true @@ -3838,12 +3846,12 @@ packages: engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/types@7.2.0: - resolution: {integrity: sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/types@7.6.0: + resolution: {integrity: sha512-h02rYQn8J+MureCvHVVzhl69/GAfQGPQZmOMjG1KfCl7o3HtMSlPaPUAPu6lLctXI5ySRGIYk94clD/AUMCUgQ==} + engines: {node: ^18.18.0 || >=20.0.0} dev: true - /@typescript-eslint/typescript-estree@5.59.11(supports-color@9.2.2)(typescript@5.4.3): + /@typescript-eslint/typescript-estree@5.59.11(supports-color@9.2.2)(typescript@5.4.5): resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3858,13 +3866,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.0 - tsutils: 3.21.0(typescript@5.4.3) - typescript: 5.4.3 + tsutils: 3.21.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.3): + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.5): resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -3880,66 +3888,66 @@ packages: is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.6.0 - ts-api-utils: 1.0.1(typescript@5.4.3) - typescript: 5.4.3 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@7.2.0(typescript@5.4.3): - resolution: {integrity: sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/typescript-estree@7.6.0(typescript@5.4.5): + resolution: {integrity: sha512-+7Y/GP9VuYibecrCQWSKgl3GvUM5cILRttpWtnAu8GNL9j11e4tbuGZmZjJ8ejnKYyBRb2ddGQ3rEFCq3QjMJw==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.2.0 - '@typescript-eslint/visitor-keys': 7.2.0 + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/visitor-keys': 7.6.0 debug: 4.3.4(supports-color@9.2.2) globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.3 + minimatch: 9.0.4 semver: 7.6.0 - ts-api-utils: 1.0.1(typescript@5.4.3) - typescript: 5.4.3 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.4.3): + /@typescript-eslint/utils@6.21.0(eslint@9.0.0)(typescript@5.4.5): resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.3) - eslint: 8.57.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) + eslint: 9.0.0 semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils@7.2.0(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-YfHpnMAGb1Eekpm3XRK8hcMwGLGsnT6L+7b2XyRv6ouDuJU1tZir1GS2i0+VXRatMwSI1/UfcyPe53ADkU+IuA==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/utils@7.6.0(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 7.2.0 - '@typescript-eslint/types': 7.2.0 - '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.4.3) - eslint: 8.57.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 7.6.0 + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5) + eslint: 9.0.0 semver: 7.6.0 transitivePeerDependencies: - supports-color @@ -3962,11 +3970,11 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@7.2.0: - resolution: {integrity: sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/visitor-keys@7.6.0: + resolution: {integrity: sha512-4eLB7t+LlNUmXzfOu1VAIAdkjbu5xNSerURS9X/S5TUKWFRpXRQZbmtPqgKmYx8bj3J0irtQXSiWAOY82v+cgw==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/types': 7.6.0 eslint-visitor-keys: 3.4.3 dev: true @@ -3980,6 +3988,7 @@ packages: /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: false /@vercel/nft@0.23.0(supports-color@9.2.2): resolution: {integrity: sha512-1iuPjyltiPqyZrvc/bW1CyICRdng8bVhpJT8MsIXV7Wj+mRFyJs9krsHbVy2pZwu7BMAgforQsT5TCY1JoBDxw==} @@ -4032,7 +4041,7 @@ packages: vue: ^3.2.25 dependencies: vite: 5.2.2(@types/node@20.9.1) - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.5) dev: false /@volar/language-core@1.11.1: @@ -4089,7 +4098,7 @@ packages: resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==} dev: false - /@vue/language-core@1.8.27(typescript@5.4.3): + /@vue/language-core@1.8.27(typescript@5.4.5): resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} peerDependencies: typescript: '*' @@ -4105,7 +4114,7 @@ packages: minimatch: 9.0.3 muggle-string: 0.3.1 path-browserify: 1.0.1 - typescript: 5.4.3 + typescript: 5.4.5 vue-template-compiler: 2.7.16 dev: false @@ -4137,18 +4146,18 @@ packages: dependencies: '@vue/compiler-ssr': 3.4.21 '@vue/shared': 3.4.21 - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.5) dev: false /@vue/shared@3.4.21: resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} - /@vuepress/bundler-vite@2.0.0-rc.9(@types/node@20.9.1)(typescript@5.4.3): + /@vuepress/bundler-vite@2.0.0-rc.9(@types/node@20.9.1)(typescript@5.4.5): resolution: {integrity: sha512-GcM2eSqW2mPY5xXX4i5kuZujvwUeiTpsLX5kgau9LzPox+FdA3SMUkppCY3hsou2o2RxXPTfjocE7OlYQrUqvA==} dependencies: '@vitejs/plugin-vue': 5.0.4(vite@5.2.2)(vue@3.4.21) - '@vuepress/client': 2.0.0-rc.9(typescript@5.4.3) - '@vuepress/core': 2.0.0-rc.9(typescript@5.4.3) + '@vuepress/client': 2.0.0-rc.9(typescript@5.4.5) + '@vuepress/core': 2.0.0-rc.9(typescript@5.4.5) '@vuepress/shared': 2.0.0-rc.9 '@vuepress/utils': 2.0.0-rc.9 autoprefixer: 10.4.19(postcss@8.4.38) @@ -4157,7 +4166,7 @@ packages: postcss-load-config: 5.0.3(postcss@8.4.38) rollup: 4.13.0 vite: 5.2.2(@types/node@20.9.1) - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.5) vue-router: 4.3.0(vue@3.4.21) transitivePeerDependencies: - '@types/node' @@ -4172,11 +4181,11 @@ packages: - typescript dev: false - /@vuepress/cli@2.0.0-rc.9(typescript@5.4.3): + /@vuepress/cli@2.0.0-rc.9(typescript@5.4.5): resolution: {integrity: sha512-uv7Xmv3QmPpzCaUAq0oKEwp2tY64AO+7mxamgr7tr+t6FEnCYqr+X0nLlH17UtMkmGWIsbHLIlMjteprxGxIMg==} hasBin: true dependencies: - '@vuepress/core': 2.0.0-rc.9(typescript@5.4.3) + '@vuepress/core': 2.0.0-rc.9(typescript@5.4.5) '@vuepress/shared': 2.0.0-rc.9 '@vuepress/utils': 2.0.0-rc.9 cac: 6.7.14 @@ -4188,31 +4197,31 @@ packages: - typescript dev: false - /@vuepress/client@2.0.0-rc.9(typescript@5.4.3): + /@vuepress/client@2.0.0-rc.9(typescript@5.4.5): resolution: {integrity: sha512-V5jA6L1nHQ8tXBshRHBJKei7HPFonGxFzmVK5yjj2Ho/Xtp/SD9rBS6dyYd5CSkKRGQDgy19Z+BUUPXtdI1qzg==} dependencies: '@vue/devtools-api': 6.6.1 '@vuepress/shared': 2.0.0-rc.9 - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.5) vue-router: 4.3.0(vue@3.4.21) transitivePeerDependencies: - typescript dev: false - /@vuepress/core@2.0.0-rc.9(typescript@5.4.3): + /@vuepress/core@2.0.0-rc.9(typescript@5.4.5): resolution: {integrity: sha512-uvMkIqYJ7vjfYEC91rMmT8YJt8xXnob5YYY3TzlwWUSEv4yoV3nlVu0l6Zfhenx/7FwKaxRJ/ePlUGIgUHBcBw==} dependencies: - '@vuepress/client': 2.0.0-rc.9(typescript@5.4.3) + '@vuepress/client': 2.0.0-rc.9(typescript@5.4.5) '@vuepress/markdown': 2.0.0-rc.9(patch_hash=f3on36z73gmvj4jugj25dg7wje) '@vuepress/shared': 2.0.0-rc.9 '@vuepress/utils': 2.0.0-rc.9 - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.5) transitivePeerDependencies: - supports-color - typescript dev: false - /@vuepress/helper@2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9): + /@vuepress/helper@2.0.0-rc.21(typescript@5.4.5)(vuepress@2.0.0-rc.9): resolution: {integrity: sha512-yKIG8hwsrA63uWo9hx9u7KBc0HvotKe2/0wVZtUdvdsibG3UYNI9enYQNa8MdqbxF92mmlFkPZdosGjUTA+BYw==} peerDependencies: vuepress: 2.0.0-rc.9 @@ -4221,8 +4230,23 @@ packages: cheerio: 1.0.0-rc.12 fflate: 0.8.2 gray-matter: 4.0.3 - vue: 3.4.21(typescript@5.4.3) - vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + vue: 3.4.21(typescript@5.4.5) + vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) + transitivePeerDependencies: + - typescript + dev: false + + /@vuepress/helper@2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-qXC+tXTKfZ7eJ+h3wYC/7Q903Tbqcz9Vqxku63R6pmcpbsRtt3l8XQRdJ/LMT5yX0wZln4Qzx1NY6S4psr0lzw==} + peerDependencies: + vuepress: 2.0.0-rc.9 + dependencies: + '@vue/shared': 3.4.21 + cheerio: 1.0.0-rc.12 + fflate: 0.8.2 + gray-matter: 4.0.3 + vue: 3.4.21(typescript@5.4.5) + vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) transitivePeerDependencies: - typescript dev: false @@ -4251,21 +4275,21 @@ packages: dev: false patched: true - /@vuepress/plugin-active-header-links@2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9): + /@vuepress/plugin-active-header-links@2.0.0-rc.21(typescript@5.4.5)(vuepress@2.0.0-rc.9): resolution: {integrity: sha512-6i9TfGDV1zfszQ5aw6bV+/UvPdBWt3VxN2WB4Dg5o1g8Qn4z5CI6AW6VfLKRyaKUD+Rzj6W+Ikgx4xnF5RZAdA==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: '@vueuse/core': 10.9.0(vue@3.4.21) - vue: 3.4.21(typescript@5.4.3) - vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + vue: 3.4.21(typescript@5.4.5) + vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) transitivePeerDependencies: - '@vue/composition-api' - typescript dev: false - /@vuepress/plugin-comment@2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-17Qpwz/W/B3cVLiCTq0UO18dy1ejf563mURas7XgqIcIibGE3G1k5kTftDbwbpehQ0e/4okdIwnkSxPpeGPOFw==} + /@vuepress/plugin-comment@2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-Kl5LHCbyoTIXFZwMmJa4f8neMbebC4ZhASf8cnfdNTBf6XRVbSH1fGJKGFK1lUm3EcjjBHIAuZIrlMWPmepUGQ==} peerDependencies: '@waline/client': ^3.1.0 artalk: ^2.7.3 @@ -4282,10 +4306,10 @@ packages: twikoo: optional: true dependencies: - '@vuepress/helper': 2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9) + '@vuepress/helper': 2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9) giscus: 1.5.0 - vue: 3.4.21(typescript@5.4.3) - vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + vue: 3.4.21(typescript@5.4.5) + vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) transitivePeerDependencies: - typescript dev: false @@ -4298,21 +4322,22 @@ packages: '@types/markdown-it': 13.0.7 markdown-it: 14.1.0 markdown-it-container: 4.0.0 - vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) dev: false - /@vuepress/plugin-docsearch@2.0.0-rc.21(@algolia/client-search@4.20.0)(search-insights@2.7.0)(typescript@5.4.3)(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-ekbtJyqcnd+J00rb905B8/9KTa4isA+MIsy/r2N+a8Fn0v/GMnGVSseqJs8q74YmHlIx4GawDfKy7F84zxMfjA==} + /@vuepress/plugin-docsearch@2.0.0-rc.24(@algolia/client-search@4.20.0)(search-insights@2.7.0)(typescript@5.4.5)(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-RWJSzRu7+fCO3//rYGO3EBq3+MkrGRyZx0k8nV1CiubpTa0aYftxxYoZdQH4UJslTuKhNShlYsIzxYNMYAf7uw==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: '@docsearch/css': 3.6.0 '@docsearch/js': 3.6.0(@algolia/client-search@4.20.0)(search-insights@2.7.0) '@docsearch/react': 3.6.0(@algolia/client-search@4.20.0)(search-insights@2.7.0) + '@vuepress/helper': 2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9) '@vueuse/core': 10.9.0(vue@3.4.21) ts-debounce: 4.0.0 - vue: 3.4.21(typescript@5.4.3) - vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + vue: 3.4.21(typescript@5.4.5) + vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -4323,46 +4348,46 @@ packages: - typescript dev: false - /@vuepress/plugin-external-link-icon@2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-Wt7hjWpoUccJHj5KHK24Uks+6oWug6y5cw9QzWlNgiCyg+hvII7I+FdORRvibPUG2ndymi6ZOFyJZcR072kbKA==} + /@vuepress/plugin-external-link-icon@2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-kry1EFkv6WaGOCzk9vRGHGcAuQHNVQ/jDEgtagUFaRk5+HtCQB60VzhmFdwM08DC2XAmDieBLm1MMR0T2DdHSw==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: - vue: 3.4.21(typescript@5.4.3) - vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + vue: 3.4.21(typescript@5.4.5) + vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) transitivePeerDependencies: - typescript dev: false - /@vuepress/plugin-git@2.0.0-rc.21(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-Xgrqv86bjrBPFrJr69b1KQlDUhAGhWfBRIGM3GQOI98mOi2VKCX9P4xyWK/lIpn8eVB3s0lY1KewhkXgy7UITg==} + /@vuepress/plugin-git@2.0.0-rc.22(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-+T50AdCZ68Pkld4r8IEHTXLugfNVCxxPp2G1hlI/lpQ6IZcpLbswMI6l9xbbo15RrOBg/V0jkim/B/jaaVIM6A==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: execa: 8.0.1 - vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) dev: false - /@vuepress/plugin-medium-zoom@2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-UZmh5vm/X/czJoVwXxTc+p9lRiAjI/7DrBvj9V7m4DNecPjsMtH/X9oU0Dqn+PeKeTHAEK+EVwy4PUtWc17hIQ==} + /@vuepress/plugin-medium-zoom@2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-ic9C8VVJGb+II+tcGyu2ihCDmyCgH8WJwSsQaLjYsAQPbgoJXbN4tbflmmx9nN3y44o75UHwPkUh/2k9pDMGgA==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: - '@vuepress/helper': 2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9) + '@vuepress/helper': 2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9) medium-zoom: 1.1.0 - vue: 3.4.21(typescript@5.4.3) - vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + vue: 3.4.21(typescript@5.4.5) + vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) transitivePeerDependencies: - typescript dev: false - /@vuepress/plugin-nprogress@2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9): + /@vuepress/plugin-nprogress@2.0.0-rc.21(typescript@5.4.5)(vuepress@2.0.0-rc.9): resolution: {integrity: sha512-qpGA76195SyfpuQC1Pb9LwgCYIp/zg+BBDnexukJMdLjP1KnaU7HLhS5NnRNIWv8E+IC61zLvlh/wRox17QE+w==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: - vue: 3.4.21(typescript@5.4.3) - vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + vue: 3.4.21(typescript@5.4.5) + vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) transitivePeerDependencies: - typescript dev: false @@ -4373,64 +4398,64 @@ packages: vuepress: 2.0.0-rc.9 dependencies: chokidar: 3.6.0 - vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) dev: false - /@vuepress/plugin-reading-time@2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-8ByRTp6z4z0d9W1evfeVyOx55V9OYqxJJeC7KBiJuiA2GP8QkY9b8ajbQ8SWeCjzDLl4H0KudSU1KqH2kqw/zQ==} + /@vuepress/plugin-reading-time@2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-La6dgul551Xp2Iacs1URZnLX5YdakfJWFfE9vIhhX/Q1+slUGRVftFLh/nb0oVUrsXNeRlqCUncTyilg51Q1fA==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: - '@vuepress/helper': 2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9) - vue: 3.4.21(typescript@5.4.3) - vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + '@vuepress/helper': 2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9) + vue: 3.4.21(typescript@5.4.5) + vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) transitivePeerDependencies: - typescript dev: false - /@vuepress/plugin-seo@2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-q8pXhXn5OL0QG6KN9rjyXngj2km5eRDK0VL8ShLrTD9fAwvjhujhjHpI/DRHg6ScWlMDKY7ncEOmslDCBuKLtg==} + /@vuepress/plugin-seo@2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-E0dRCNqV6RLoVV4j8xchmlsnlR7OyPQxWmWrk20mBiyluRI05OXdb20ZQbYJe3PfK8f8DnyETzob943HBg3sVA==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: - '@vuepress/helper': 2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9) - vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + '@vuepress/helper': 2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9) + vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) transitivePeerDependencies: - typescript dev: false - /@vuepress/plugin-sitemap@2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-YbotKptHfifjwmXhj4kX6iA8tCGp7gTZAHm9YiPDr/8dYzBkkQ4oC84JCifkZYt3fWkVqq/Qa0vpJfnKPGOidg==} + /@vuepress/plugin-sitemap@2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-su5ZD8vGuNpbqmb+uCOzWXCZ0eii8wnkdhn4V1xtmmXsrmYDr0FFHp61Ebb6EYAquB3HH1v3hWdfLRMU9DM6VQ==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: - '@vuepress/helper': 2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9) + '@vuepress/helper': 2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9) sitemap: 7.1.1 - vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) transitivePeerDependencies: - typescript dev: false - /@vuepress/plugin-theme-data@2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9): + /@vuepress/plugin-theme-data@2.0.0-rc.21(typescript@5.4.5)(vuepress@2.0.0-rc.9): resolution: {integrity: sha512-vLXvTKx4gWXY6oVaJ9Z2ECnojnKQuXBIe1ZGIAwJdxCYfr6aaqggrVvmphB8BwTURh0XAuis/l6YTcMrs0bX8Q==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: '@vue/devtools-api': 6.6.1 - vue: 3.4.21(typescript@5.4.3) - vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + vue: 3.4.21(typescript@5.4.5) + vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) transitivePeerDependencies: - typescript dev: false - /@vuepress/plugin-toc@2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-dYhud55CAfp++UpxC2Gd1FHKZ9hVLfAMd3LeFr0sf4+Wv3S875J+Ono2bjrua/mAe9oNt8g5Y79g4vu/D3gxHg==} + /@vuepress/plugin-toc@2.0.0-rc.24(typescript@5.4.5)(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-pxlyQGpZZBJ9EHlZAkBCTydcUjazkBc0UbcS3BCKXS0f33aYnVdfK95x/BpUEhkqIkyKqHZ7R3fUO2WNrbmsTA==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.5) vue-router: 4.3.0(vue@3.4.21) - vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) transitivePeerDependencies: - typescript dev: false @@ -4646,12 +4671,12 @@ packages: acorn: 8.11.3 dev: false - /acorn-jsx@5.3.2(acorn@8.10.0): + /acorn-jsx@5.3.2(acorn@8.11.3): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.10.0 + acorn: 8.11.3 dev: true /acorn-walk@8.2.0: @@ -5223,17 +5248,6 @@ packages: dependencies: fill-range: 7.0.1 - /browserslist@4.22.2: - resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001572 - electron-to-chromium: 1.4.616 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.22.2) - dev: true - /browserslist@4.23.0: resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -5243,7 +5257,6 @@ packages: electron-to-chromium: 1.4.715 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) - dev: false /buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} @@ -5278,6 +5291,7 @@ packages: resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} dependencies: semver: 7.6.0 + dev: false /bumpp@8.2.1: resolution: {integrity: sha512-4tHKsWC2mqHQvdjZ4AXgVhS2xMsz8qQ4zYt87vGRXW5tqAjrYa/UJqy7s/dGYI2OIe9ghBdiFhKpyKEX9SXffg==} @@ -5419,13 +5433,8 @@ packages: engines: {node: '>=14.16'} dev: false - /caniuse-lite@1.0.30001572: - resolution: {integrity: sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==} - dev: true - /caniuse-lite@1.0.30001600: resolution: {integrity: sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==} - dev: false /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -5826,13 +5835,13 @@ packages: engines: {node: '>= 12.0.0'} dev: true - /commitizen@4.3.0(@types/node@20.9.1)(typescript@5.4.3): + /commitizen@4.3.0(@types/node@20.9.1)(typescript@5.4.5): resolution: {integrity: sha512-H0iNtClNEhT0fotHvGV3E9tDejDeS04sN1veIebsKYGMuGscFaswRoYJKmT3eW85eIJAs0F28bG2+a/9wCOfPw==} engines: {node: '>= 12'} hasBin: true dependencies: cachedir: 2.3.0 - cz-conventional-changelog: 3.3.0(@types/node@20.9.1)(typescript@5.4.3) + cz-conventional-changelog: 3.3.0(@types/node@20.9.1)(typescript@5.4.5) dedent: 0.7.0 detect-indent: 6.1.0 find-node-modules: 2.1.3 @@ -6308,7 +6317,7 @@ packages: /core-js-compat@3.35.0: resolution: {integrity: sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw==} dependencies: - browserslist: 4.22.2 + browserslist: 4.23.0 dev: true /core-util-is@1.0.3: @@ -6321,22 +6330,21 @@ packages: layout-base: 1.0.2 dev: false - /cosmiconfig-typescript-loader@5.0.0(@types/node@20.9.1)(cosmiconfig@9.0.0)(typescript@5.4.3): + /cosmiconfig-typescript-loader@5.0.0(@types/node@20.9.1)(cosmiconfig@9.0.0)(typescript@5.4.5): resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} engines: {node: '>=v16'} - requiresBuild: true peerDependencies: '@types/node': '*' cosmiconfig: '>=8.2' typescript: '>=4' dependencies: '@types/node': 20.9.1 - cosmiconfig: 9.0.0(typescript@5.4.3) - jiti: 1.20.0 - typescript: 5.4.3 + cosmiconfig: 9.0.0(typescript@5.4.5) + jiti: 1.21.0 + typescript: 5.4.5 dev: true - /cosmiconfig@9.0.0(typescript@5.4.3): + /cosmiconfig@9.0.0(typescript@5.4.5): resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} peerDependencies: @@ -6349,7 +6357,7 @@ packages: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 - typescript: 5.4.3 + typescript: 5.4.5 dev: true /cp-file@10.0.0: @@ -6539,18 +6547,18 @@ packages: lodash: 4.17.21 dev: false - /cz-conventional-changelog@3.3.0(@types/node@20.9.1)(typescript@5.4.3): + /cz-conventional-changelog@3.3.0(@types/node@20.9.1)(typescript@5.4.5): resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} engines: {node: '>= 10'} dependencies: chalk: 2.4.2 - commitizen: 4.3.0(@types/node@20.9.1)(typescript@5.4.3) + commitizen: 4.3.0(@types/node@20.9.1)(typescript@5.4.5) conventional-commit-types: 3.0.0 lodash.map: 4.6.0 longest: 2.0.1 word-wrap: 1.2.3 optionalDependencies: - '@commitlint/load': 19.2.0(@types/node@20.9.1)(typescript@5.4.3) + '@commitlint/load': 19.2.0(@types/node@20.9.1)(typescript@5.4.5) transitivePeerDependencies: - '@types/node' - typescript @@ -7138,10 +7146,10 @@ packages: resolution: {integrity: sha512-pVCuFWdEAyHI16zO3NBWSAULV8pevSkX3gwK8w3y9RrBGUrig6wDvwv6vUpnu+HfOr0MDmjMkmJGNWaTb6+HkA==} engines: {node: ^14.14.0 || >=16.0.0} dependencies: - '@typescript-eslint/typescript-estree': 5.59.11(supports-color@9.2.2)(typescript@5.4.3) + '@typescript-eslint/typescript-estree': 5.59.11(supports-color@9.2.2)(typescript@5.4.5) ast-module-types: 5.0.0 node-source-walk: 6.0.1 - typescript: 5.4.3 + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: false @@ -7254,13 +7262,8 @@ packages: resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} dev: false - /electron-to-chromium@1.4.616: - resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} - dev: true - /electron-to-chromium@1.4.715: resolution: {integrity: sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg==} - dev: false /elkjs@0.9.2: resolution: {integrity: sha512-2Y/RaA1pdgSHpY0YG4TYuYCD2wh97CRvu22eLG3Kz0pgQ/6KbIFTxsTnDc4MH/6hFlg2L/9qXrDMG0nMjP63iw==} @@ -7290,6 +7293,14 @@ packages: once: 1.4.0 dev: false + /enhanced-resolve@5.16.0: + resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + /entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} dev: false @@ -7476,32 +7487,39 @@ packages: source-map: 0.6.1 dev: false - /eslint-compat-utils@0.1.2(eslint@8.57.0): + /eslint-compat-utils@0.1.2(eslint@9.0.0): resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 8.57.0 + eslint: 9.0.0 dev: true - /eslint-compat-utils@0.4.1(eslint@8.57.0): - resolution: {integrity: sha512-5N7ZaJG5pZxUeNNJfUchurLVrunD1xJvyg5kYOIVF8kg1f3ajTikmAu/5fZ9w100omNPOoMjngRszh/Q/uFGMg==} + /eslint-compat-utils@0.5.0(eslint@9.0.0): + resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 8.57.0 + eslint: 9.0.0 semver: 7.6.0 dev: true - /eslint-config-flat-gitignore@0.1.3: - resolution: {integrity: sha512-oQD+dEZv3RThN60tFqGFt+NJcO1DmssUcP+T/nlX+ZzEoEvVUYH0GU9X/VlmDXsbMsS9mONI1HrlxLgtKojw7w==} + /eslint-config-flat-gitignore@0.1.5: + resolution: {integrity: sha512-hEZLwuZjDBGDERA49c2q7vxc8sCGv8EdBp6PQYzGOMcHIgrfG9YOM6s/4jx24zhD+wnK9AI8mgN5RxSss5nClQ==} dependencies: find-up: 7.0.0 parse-gitignore: 2.0.0 dev: true + /eslint-flat-config-utils@0.2.1: + resolution: {integrity: sha512-SKnSr4YdPD7xxynNpaad/IlJYfeDmtWvZ0UEmHEA0+eTOcZFPt1075KO87LIWN30jXGCREG2qcCqdAnRoCiAWQ==} + dependencies: + '@types/eslint': 8.56.7 + pathe: 1.1.2 + dev: true + /eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: @@ -7512,98 +7530,67 @@ packages: - supports-color dev: true - /eslint-merge-processors@0.1.0(eslint@8.57.0): + /eslint-merge-processors@0.1.0(eslint@9.0.0): resolution: {integrity: sha512-IvRXXtEajLeyssvW4wJcZ2etxkR9mUf4zpNwgI+m/Uac9RfXHskuJefkHUcawVzePnd6xp24enp5jfgdHzjRdQ==} peerDependencies: eslint: '*' dependencies: - eslint: 8.57.0 + eslint: 9.0.0 dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.4.3) - debug: 3.2.7 - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-plugin-antfu@2.1.2(eslint@8.57.0): + /eslint-plugin-antfu@2.1.2(eslint@9.0.0): resolution: {integrity: sha512-s7ZTOM3uq0iqpp6gF0UEotnvup7f2PHBUftCytLZX0+6C9j9KadKZQh6bVVngAyFgsmeD9+gcBopOYLClb2oDg==} peerDependencies: eslint: '*' dependencies: - eslint: 8.57.0 + eslint: 9.0.0 dev: true - /eslint-plugin-es-x@7.5.0(eslint@8.57.0): + /eslint-plugin-es-x@7.5.0(eslint@9.0.0): resolution: {integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.6.2 - eslint: 8.57.0 - eslint-compat-utils: 0.1.2(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + '@eslint-community/regexpp': 4.10.0 + eslint: 9.0.0 + eslint-compat-utils: 0.1.2(eslint@9.0.0) dev: true - /eslint-plugin-eslint-comments@3.2.0(eslint@8.57.0): + /eslint-plugin-eslint-comments@3.2.0(eslint@9.0.0): resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} engines: {node: '>=6.5.0'} peerDependencies: eslint: '>=4.19.1' dependencies: escape-string-regexp: 1.0.5 - eslint: 8.57.0 - ignore: 5.3.0 + eslint: 9.0.0 + ignore: 5.3.1 dev: true - /eslint-plugin-i@2.29.1(@typescript-eslint/parser@7.2.0)(eslint@8.57.0): - resolution: {integrity: sha512-ORizX37MelIWLbMyqI7hi8VJMf7A0CskMmYkB+lkCX3aF4pkGV7kwx5bSEb4qx7Yce2rAf9s34HqDRPjGRZPNQ==} - engines: {node: '>=12'} + /eslint-plugin-import-x@0.5.0(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-C7R8Z4IzxmsoOPMtSzwuOBW5FH6iRlxHR6iTks+MzVlrk3r3TUxokkWTx3ypdj9nGOEP+CG/5e6ebZzHbxgbbQ==} + engines: {node: '>=16'} peerDependencies: - eslint: ^7.2.0 || ^8 + eslint: ^8.56.0 || ^9.0.0-0 dependencies: + '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.4.5) debug: 4.3.4(supports-color@9.2.2) doctrine: 3.0.0 - eslint: 8.57.0 + eslint: 9.0.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) - get-tsconfig: 4.7.2 + get-tsconfig: 4.7.3 is-glob: 4.0.3 - minimatch: 3.1.2 + minimatch: 9.0.4 semver: 7.6.0 transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - supports-color + - typescript dev: true - /eslint-plugin-jsdoc@48.2.1(eslint@8.57.0): - resolution: {integrity: sha512-iUvbcyDZSO/9xSuRv2HQBw++8VkV/pt3UWtX9cpPH0l7GKPq78QC/6+PmyQHHvNZaTjAce6QVciEbnc6J/zH5g==} + /eslint-plugin-jsdoc@48.2.3(eslint@9.0.0): + resolution: {integrity: sha512-r9DMAmFs66VNvNqRLLjHejdnJtILrt3xGi+Qx0op0oRfFGVpOR1Hb3BC++MacseHx93d8SKYPhyrC9BS7Os2QA==} engines: {node: '>=18'} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -7613,7 +7600,7 @@ packages: comment-parser: 1.4.1 debug: 4.3.4(supports-color@9.2.2) escape-string-regexp: 4.0.0 - eslint: 8.57.0 + eslint: 9.0.0 esquery: 1.5.0 is-builtin-module: 3.2.1 semver: 7.6.0 @@ -7622,15 +7609,15 @@ packages: - supports-color dev: true - /eslint-plugin-jsonc@2.13.0(eslint@8.57.0): - resolution: {integrity: sha512-2wWdJfpO/UbZzPDABuUVvlUQjfMJa2p2iQfYt/oWxOMpXCcjuiMUSaA02gtY/Dbu82vpaSqc+O7Xq6ECHwtIxA==} + /eslint-plugin-jsonc@2.15.0(eslint@9.0.0): + resolution: {integrity: sha512-wAphMVgTQPAKAYV8d/QEkEYDg8uer9nMQ85N17IUiJcAWLxJs83/Exe59dEH9yKUpvpLf46H+wR7/U7lZ3/NpQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - eslint: 8.57.0 - eslint-compat-utils: 0.4.1(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + eslint: 9.0.0 + eslint-compat-utils: 0.5.0(eslint@9.0.0) espree: 9.6.1 graphemer: 1.4.0 jsonc-eslint-parser: 2.4.0 @@ -7638,35 +7625,32 @@ packages: synckit: 0.6.2 dev: true - /eslint-plugin-markdown@4.0.1(eslint@8.57.0): + /eslint-plugin-markdown@4.0.1(eslint@9.0.0): resolution: {integrity: sha512-5/MnGvYU0i8MbHH5cg8S+Vl3DL+bqRNYshk1xUO86DilNBaxtTkhH+5FD0/yO03AmlI6+lfNFdk2yOw72EPzpA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8' dependencies: - eslint: 8.57.0 + eslint: 9.0.0 mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-n@16.6.2(eslint@8.57.0): - resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} - engines: {node: '>=16.0.0'} + /eslint-plugin-n@17.1.0(eslint@9.0.0): + resolution: {integrity: sha512-+MTiTej3B07+8vS/RfSMD1w4O9VVR9BSJT9kSa9QUsBlXzKi5PZc+lB3w+iu/2eIS3drFU7zCikSrD8Yn8PEBQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: '>=7.0.0' + eslint: '>=8.23.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - builtins: 5.0.1 - eslint: 8.57.0 - eslint-plugin-es-x: 7.5.0(eslint@8.57.0) - get-tsconfig: 4.7.2 - globals: 13.24.0 - ignore: 5.3.0 - is-builtin-module: 3.2.1 - is-core-module: 2.13.1 - minimatch: 3.1.2 - resolve: 1.22.8 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + enhanced-resolve: 5.16.0 + eslint: 9.0.0 + eslint-plugin-es-x: 7.5.0(eslint@9.0.0) + get-tsconfig: 4.7.3 + globals: 14.0.0 + ignore: 5.3.1 + minimatch: 9.0.4 semver: 7.6.0 dev: true @@ -7675,8 +7659,8 @@ packages: engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-perfectionist@2.7.0(eslint@8.57.0)(typescript@5.4.3)(vue-eslint-parser@9.4.2): - resolution: {integrity: sha512-RpSMc0T0DT9DlOj4APzwlAjCqQMxFdsIYlupe73eDkKLn1mMK7fVw2z3nj2y822szKOpvHA7bDa56ySOlr4GXw==} + /eslint-plugin-perfectionist@2.8.0(eslint@9.0.0)(typescript@5.4.5)(vue-eslint-parser@9.4.2): + resolution: {integrity: sha512-XBjQ4ctU1rOzQ4bFJoUowe8XdsIIz42JqNrouFlae1TO78HjoyYBaRP8+gAHDDQCSdHY10pbChyzlJeBA6D51w==} peerDependencies: astro-eslint-parser: ^0.16.0 eslint: '>=8.0.0' @@ -7693,44 +7677,44 @@ packages: vue-eslint-parser: optional: true dependencies: - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.3) - eslint: 8.57.0 - minimatch: 9.0.3 + '@typescript-eslint/utils': 6.21.0(eslint@9.0.0)(typescript@5.4.5) + eslint: 9.0.0 + minimatch: 9.0.4 natural-compare-lite: 1.4.0 - vue-eslint-parser: 9.4.2(eslint@8.57.0) + vue-eslint-parser: 9.4.2(eslint@9.0.0) transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-toml@0.9.2(eslint@8.57.0): - resolution: {integrity: sha512-ri0xf63PYf3pIq/WY9BIwrqxZmGTIwSkAO0bHddI0ajUwN4KGz6W8vOvdXFHOpRdRfzxlmXze/vfsY/aTEXESg==} + /eslint-plugin-toml@0.11.0(eslint@9.0.0): + resolution: {integrity: sha512-sau+YvPU4fWTjB+qtBt3n8WS87aoDCs+BVbSUAemGaIsRNbvR9uEk+Tt892iLHTGvp/DPWYoCX4/8DoyAbB+sQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: debug: 4.3.4(supports-color@9.2.2) - eslint: 8.57.0 - eslint-compat-utils: 0.4.1(eslint@8.57.0) + eslint: 9.0.0 + eslint-compat-utils: 0.5.0(eslint@9.0.0) lodash: 4.17.21 toml-eslint-parser: 0.9.3 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-unicorn@51.0.1(eslint@8.57.0): - resolution: {integrity: sha512-MuR/+9VuB0fydoI0nIn2RDA5WISRn4AsJyNSaNKLVwie9/ONvQhxOBbkfSICBPnzKrB77Fh6CZZXjgTt/4Latw==} + /eslint-plugin-unicorn@52.0.0(eslint@9.0.0): + resolution: {integrity: sha512-1Yzm7/m+0R4djH0tjDjfVei/ju2w3AzUGjG6q8JnuNIL5xIwsflyCooW5sfBvQp2pMYQFSWWCFONsjCax1EHng==} engines: {node: '>=16'} peerDependencies: eslint: '>=8.56.0' dependencies: '@babel/helper-validator-identifier': 7.22.20 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) '@eslint/eslintrc': 2.1.4 ci-info: 4.0.0 clean-regexp: 1.0.0 core-js-compat: 3.35.0 - eslint: 8.57.0 + eslint: 9.0.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -7745,7 +7729,7 @@ packages: - supports-color dev: true - /eslint-plugin-unused-imports@3.1.0(@typescript-eslint/eslint-plugin@7.2.0)(eslint@8.57.0): + /eslint-plugin-unused-imports@3.1.0(@typescript-eslint/eslint-plugin@7.6.0)(eslint@9.0.0): resolution: {integrity: sha512-9l1YFCzXKkw1qtAru1RWUtG2EVDZY0a0eChKXcL+EZ5jitG7qxdctu4RnvhOJHv4xfmUf7h+JJPINlVpGhZMrw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7755,17 +7739,17 @@ packages: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/eslint-plugin': 7.2.0(@typescript-eslint/parser@7.2.0)(eslint@8.57.0)(typescript@5.4.3) - eslint: 8.57.0 + '@typescript-eslint/eslint-plugin': 7.6.0(@typescript-eslint/parser@7.6.0)(eslint@9.0.0)(typescript@5.4.5) + eslint: 9.0.0 eslint-rule-composer: 0.3.0 dev: true - /eslint-plugin-vitest@0.3.26(@typescript-eslint/eslint-plugin@7.2.0)(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-oxe5JSPgRjco8caVLTh7Ti8PxpwJdhSV0hTQAmkFcNcmy/9DnqLB/oNVRA11RmVRP//2+jIIT6JuBEcpW3obYg==} + /eslint-plugin-vitest@0.5.1(@typescript-eslint/eslint-plugin@7.6.0)(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-g137wC+LCq2N+tfqK39Nl6Rs2N9u+zu6lWxaVgpN3wX+Kq6zSyxjPSI/ZBXUjP+qandT3z1DM5wK5IjD4XrAIw==} engines: {node: ^18.0.0 || >= 20.0.0} peerDependencies: '@typescript-eslint/eslint-plugin': '*' - eslint: '>=8.0.0' + eslint: ^8.57.0 || ^9.0.0 vitest: '*' peerDependenciesMeta: '@typescript-eslint/eslint-plugin': @@ -7773,41 +7757,42 @@ packages: vitest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 7.2.0(@typescript-eslint/parser@7.2.0)(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/utils': 7.2.0(eslint@8.57.0)(typescript@5.4.3) - eslint: 8.57.0 + '@typescript-eslint/eslint-plugin': 7.6.0(@typescript-eslint/parser@7.6.0)(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.4.5) + eslint: 9.0.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-vue@9.23.0(eslint@8.57.0): - resolution: {integrity: sha512-Bqd/b7hGYGrlV+wP/g77tjyFmp81lh5TMw0be9093X02SyelxRRfCI6/IsGq/J7Um0YwB9s0Ry0wlFyjPdmtUw==} + /eslint-plugin-vue@9.24.1(eslint@9.0.0): + resolution: {integrity: sha512-wk3SuwmS1pZdcuJlokGYEi/buDOwD6KltvhIZyOnpJ/378dcQ4zchu9PAMbbLAaydCz1iYc5AozszcOOgZIIOg==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - eslint: 8.57.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + eslint: 9.0.0 + globals: 13.24.0 natural-compare: 1.4.0 nth-check: 2.1.1 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 semver: 7.6.0 - vue-eslint-parser: 9.4.2(eslint@8.57.0) + vue-eslint-parser: 9.4.2(eslint@9.0.0) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-yml@1.12.2(eslint@8.57.0): - resolution: {integrity: sha512-hvS9p08FhPT7i/ynwl7/Wt7ke7Rf4P2D6fT8lZlL43peZDTsHtH2A0SIFQ7Kt7+mJ6if6P+FX3iJhMkdnxQwpg==} + /eslint-plugin-yml@1.14.0(eslint@9.0.0): + resolution: {integrity: sha512-ESUpgYPOcAYQO9czugcX5OqRvn/ydDVwGCPXY4YjPqc09rHaUVUA6IE6HLQys4rXk/S+qx3EwTd1wHCwam/OWQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: debug: 4.3.4(supports-color@9.2.2) - eslint: 8.57.0 - eslint-compat-utils: 0.4.1(eslint@8.57.0) + eslint: 9.0.0 + eslint-compat-utils: 0.5.0(eslint@9.0.0) lodash: 4.17.21 natural-compare: 1.4.0 yaml-eslint-parser: 1.2.2 @@ -7815,14 +7800,14 @@ packages: - supports-color dev: true - /eslint-processor-vue-blocks@0.1.1(@vue/compiler-sfc@3.4.21)(eslint@8.57.0): + /eslint-processor-vue-blocks@0.1.1(@vue/compiler-sfc@3.4.21)(eslint@9.0.0): resolution: {integrity: sha512-9+dU5lU881log570oBwpelaJmOfOzSniben7IWEDRYQPPWwlvaV7NhOtsTuUWDqpYT+dtKKWPsgz4OkOi+aZnA==} peerDependencies: '@vue/compiler-sfc': ^3.3.0 eslint: ^8.50.0 dependencies: '@vue/compiler-sfc': 3.4.21 - eslint: 8.57.0 + eslint: 9.0.0 dev: true /eslint-rule-composer@0.3.0: @@ -7838,45 +7823,54 @@ packages: estraverse: 5.3.0 dev: true + /eslint-scope@8.0.1: + resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + /eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-visitor-keys@4.0.0: + resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /eslint@9.0.0: + resolution: {integrity: sha512-IMryZ5SudxzQvuod6rUdIUz29qFItWx281VhtFVc2Psy/ZhlCeD/5DT6lBIJ4H3G+iamGJoTln1v+QSuPw0p7Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) '@eslint-community/regexpp': 4.6.2 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14 + '@eslint/eslintrc': 3.0.2 + '@eslint/js': 9.0.0 + '@humanwhocodes/config-array': 0.12.3 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.4(supports-color@9.2.2) - doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.0.1 + eslint-visitor-keys: 4.0.0 + espree: 10.0.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 graphemer: 1.4.0 - ignore: 5.3.0 + ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 @@ -7889,12 +7883,21 @@ packages: - supports-color dev: true + /espree@10.0.1: + resolution: {integrity: sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 4.0.0 + dev: true + /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.10.0 - acorn-jsx: 5.3.2(acorn@8.10.0) + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.4.3 dev: true @@ -8033,8 +8036,8 @@ packages: on-headers: 1.0.2 dev: false - /express@4.19.1: - resolution: {integrity: sha512-K4w1/Bp7y8iSiVObmCrtq8Cs79XjJc/RU2YYkZQ7wpUu5ZyZ7MtPHkqoMz4pf+mgXfNvo2qft8D9OnrH2ABk9w==} + /express@4.19.2: + resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} engines: {node: '>= 0.10.0'} dependencies: accepts: 1.3.8 @@ -8317,13 +8320,6 @@ packages: is-unicode-supported: 1.3.0 dev: false - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flat-cache: 3.0.4 - dev: true - /file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -8489,14 +8485,6 @@ packages: resolve-dir: 1.0.1 dev: true - /flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flatted: 3.2.9 - rimraf: 3.0.2 - dev: true - /flat-cache@4.0.0: resolution: {integrity: sha512-EryKbCE/wxpxKniQlyas6PY1I9vwtF3uCBweX+N8KYTCn3Y12RTGtQAJ/bd5pl7kxUAc8v/R3Ake/N17OZiFqA==} engines: {node: '>=16'} @@ -8525,7 +8513,7 @@ packages: optional: true dependencies: '@floating-ui/dom': 1.1.1 - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.5) vue-resize: 2.0.0-alpha.1(vue@3.4.21) dev: false @@ -8783,8 +8771,8 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - /get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + /get-tsconfig@4.7.3: + resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} dependencies: resolve-pkg-maps: 1.0.0 dev: true @@ -9002,13 +8990,6 @@ packages: which: 1.3.1 dev: true - /globals@13.19.0: - resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - /globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} @@ -9021,6 +9002,11 @@ packages: engines: {node: '>=18'} dev: true + /globals@15.0.0: + resolution: {integrity: sha512-m/C/yR4mjO6pXDTm9/R/SpYTAIyaUB4EOzcaaMEl7mds7Mshct9GfejiJNQGjHHbdMPey13Kpu4TMbYi9ex1pw==} + engines: {node: '>=18'} + dev: true + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -9038,7 +9024,7 @@ packages: dependencies: dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.3.0 + ignore: 5.3.1 merge2: 1.4.1 slash: 4.0.0 dev: false @@ -9439,7 +9425,6 @@ packages: /ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} - dev: true /image-meta@0.2.0: resolution: {integrity: sha512-ZBGjl0ZMEMeOC3Ns0wUF/5UdUmr3qQhBSCniT0LxOgGGIRHiNFOkMtIHB7EOznRU47V2AxPgiVP+s+0/UCU0Hg==} @@ -9603,7 +9588,7 @@ packages: engines: {node: '>= 0.10'} dev: false - /ipx@2.1.0(@netlify/blobs@7.0.1): + /ipx@2.1.0(@netlify/blobs@7.3.0): resolution: {integrity: sha512-AVnPGXJ8L41vjd11Z4akIF2yd14636Klxul3tBySxHA6PKfCOQPxBDkCFK5zcWh0z/keR6toh1eg8qzdBVUgdA==} hasBin: true dependencies: @@ -9621,7 +9606,7 @@ packages: sharp: 0.32.6 svgo: 3.2.0 ufo: 1.4.0 - unstorage: 1.10.1(@netlify/blobs@7.0.1) + unstorage: 1.10.1(@netlify/blobs@7.3.0) xss: 1.0.14 transitivePeerDependencies: - '@azure/app-configuration' @@ -10018,12 +10003,6 @@ packages: pretty-format: 27.5.1 dev: false - /jiti@1.20.0: - resolution: {integrity: sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==} - hasBin: true - requiresBuild: true - dev: true - /jiti@1.21.0: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true @@ -11544,6 +11523,12 @@ packages: dependencies: brace-expansion: 2.0.1 + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} @@ -11700,8 +11685,8 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /nanoid@5.0.6: - resolution: {integrity: sha512-rRq0eMHoGZxlvaFOUdK1Ev83Bd1IgzzR+WJ3IbDJ7QOSdAxYjlurSPqFs9s4lJg29RT6nPwizFtJhQS6V5xgiA==} + /nanoid@5.0.7: + resolution: {integrity: sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==} engines: {node: ^18 || >=20} hasBin: true dev: false @@ -11749,21 +11734,22 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: false - /netlify-cli@17.21.1(@types/node@20.12.2): - resolution: {integrity: sha512-B8QveV55h2dFCTnk5LInVW1MiXPINTQ61IkEtih15CVYpvVSQy+he8M6hdpucq83VqaF/phaJkb3Si2ligOxxw==} + /netlify-cli@17.22.1(@types/node@20.12.7): + resolution: {integrity: sha512-76ZvarNs85vNW/s6sJnMmwU39tx1rGkozMBUsx3of752gUAgr3T+BzAVB+/2DeDSbqQPlCKXfo2PuqqrhdeKew==} engines: {node: '>=18.14.0'} hasBin: true requiresBuild: true dependencies: '@bugsnag/js': 7.20.2 '@fastify/static': 6.10.2 - '@netlify/blobs': 7.0.1 - '@netlify/build': 29.36.6(@opentelemetry/api@1.8.0)(@types/node@20.12.2) + '@netlify/blobs': 7.3.0 + '@netlify/build': 29.39.1(@opentelemetry/api@1.8.0)(@types/node@20.12.7) '@netlify/build-info': 7.13.2 '@netlify/config': 20.12.1 '@netlify/edge-bundler': 11.3.0(supports-color@9.2.2) + '@netlify/edge-functions': 2.5.1 '@netlify/local-functions-proxy': 1.1.1 - '@netlify/zip-it-and-ship-it': 9.30.0 + '@netlify/zip-it-and-ship-it': 9.31.3(supports-color@9.2.2) '@octokit/rest': 19.0.13 '@opentelemetry/api': 1.8.0 ansi-escapes: 6.2.1 @@ -11793,7 +11779,7 @@ packages: envinfo: 7.8.1 etag: 1.8.1 execa: 5.1.1 - express: 4.19.1 + express: 4.19.2 express-logging: 1.1.1 extract-zip: 2.0.1 fastest-levenshtein: 1.0.16 @@ -11814,7 +11800,7 @@ packages: https-proxy-agent: 5.0.1(supports-color@9.2.2) inquirer: 6.5.2 inquirer-autocomplete-prompt: 1.4.0(inquirer@6.5.2) - ipx: 2.1.0(@netlify/blobs@7.0.1) + ipx: 2.1.0(@netlify/blobs@7.3.0) is-docker: 3.0.0 is-stream: 3.0.0 is-wsl: 2.2.0 @@ -12417,8 +12403,8 @@ packages: resolution: {integrity: sha512-T8BatKGY+k5rU+Q/GTYgrEf2r4xRMevAN5mtXc2aPc4rS1j3s+vWTaO2Wag94neXuCAUAs8cxBL9EeB5EA6diw==} engines: {node: '>=16'} - /p-map@7.0.1: - resolution: {integrity: sha512-2wnaR0XL/FDOj+TgpDuRb2KTjLnu3Fma6b1ZUwGY7LcqenMcvP/YFpjpbPKY6WVGsbuJZRuoUz8iPrt8ORnAFw==} + /p-map@7.0.2: + resolution: {integrity: sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==} engines: {node: '>=18'} dev: false @@ -12766,8 +12752,8 @@ packages: dependencies: htmlparser2: 8.0.1 js-tokens: 8.0.2 - postcss: 8.4.35 - postcss-safe-parser: 6.0.0(postcss@8.4.35) + postcss: 8.4.38 + postcss-safe-parser: 6.0.0(postcss@8.4.38) dev: true /postcss-load-config@5.0.3(postcss@8.4.38): @@ -12795,13 +12781,13 @@ packages: resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==} dev: true - /postcss-safe-parser@6.0.0(postcss@8.4.35): + /postcss-safe-parser@6.0.0(postcss@8.4.38): resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.3.3 dependencies: - postcss: 8.4.35 + postcss: 8.4.38 dev: true /postcss-safe-parser@7.0.0(postcss@8.4.38): @@ -12813,21 +12799,13 @@ packages: postcss: 8.4.38 dev: true - /postcss-scss@4.0.9(postcss@8.4.35): + /postcss-scss@4.0.9(postcss@8.4.38): resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.4.29 dependencies: - postcss: 8.4.35 - dev: true - - /postcss-selector-parser@6.0.15: - resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} - engines: {node: '>=4'} - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 + postcss: 8.4.38 dev: true /postcss-selector-parser@6.0.16: @@ -12838,12 +12816,12 @@ packages: util-deprecate: 1.0.2 dev: true - /postcss-sorting@8.0.2(postcss@8.4.35): + /postcss-sorting@8.0.2(postcss@8.4.38): resolution: {integrity: sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==} peerDependencies: postcss: ^8.4.20 dependencies: - postcss: 8.4.35 + postcss: 8.4.38 dev: true /postcss-value-parser@4.2.0: @@ -12861,15 +12839,6 @@ packages: quote-unquote: 1.0.0 dev: false - /postcss@8.4.35: - resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - /postcss@8.4.38: resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} @@ -13471,6 +13440,7 @@ packages: hasBin: true dependencies: glob: 7.2.3 + dev: false /rimraf@5.0.5: resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} @@ -13747,10 +13717,10 @@ packages: /shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - /shiki@1.2.2: - resolution: {integrity: sha512-nqazfFgrU+DBLqk4+WjmGQz8sVWkcUcGriHqSM2zGk0GhjirVz4FyJ3AABEx91OpjGiKpuKBg2diYfRfQG3Fbg==} + /shiki@1.3.0: + resolution: {integrity: sha512-9aNdQy/etMXctnPzsje1h1XIGm9YfRcSksKOGqZWXA/qP9G18/8fpz5Bjpma8bOgz3tqIpjERAd6/lLjFyzoww==} dependencies: - '@shikijs/core': 1.2.2 + '@shikijs/core': 1.3.0 dev: false /side-channel@1.0.4: @@ -13890,11 +13860,6 @@ packages: is-plain-obj: 1.1.0 dev: false - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - dev: true - /source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} @@ -14201,10 +14166,10 @@ packages: stylelint: '>=14.0.0' dependencies: postcss-html: 1.6.0 - stylelint: 16.3.1(typescript@5.4.3) + stylelint: 16.3.1(typescript@5.4.5) dev: true - /stylelint-config-recommended-scss@14.0.0(postcss@8.4.35)(stylelint@16.3.1): + /stylelint-config-recommended-scss@14.0.0(postcss@8.4.38)(stylelint@16.3.1): resolution: {integrity: sha512-HDvpoOAQ1RpF+sPbDOT2Q2/YrBDEJDnUymmVmZ7mMCeNiFSdhRdyGEimBkz06wsN+HaFwUh249gDR+I9JR7Onw==} engines: {node: '>=18.12.0'} peerDependencies: @@ -14214,9 +14179,9 @@ packages: postcss: optional: true dependencies: - postcss: 8.4.35 - postcss-scss: 4.0.9(postcss@8.4.35) - stylelint: 16.3.1(typescript@5.4.3) + postcss: 8.4.38 + postcss-scss: 4.0.9(postcss@8.4.38) + stylelint: 16.3.1(typescript@5.4.5) stylelint-config-recommended: 14.0.0(stylelint@16.3.1) stylelint-scss: 6.0.0(stylelint@16.3.1) dev: true @@ -14227,22 +14192,22 @@ packages: peerDependencies: stylelint: ^16.0.0 dependencies: - stylelint: 16.3.1(typescript@5.4.3) + stylelint: 16.3.1(typescript@5.4.5) dev: true - /stylelint-config-standard-scss@13.0.0(postcss@8.4.35)(stylelint@16.3.1): - resolution: {integrity: sha512-WaLvkP689qSYUpJQPCo30TFJSSc3VzvvoWnrgp+7PpVby5o8fRUY1cZcP0sePZfjrFl9T8caGhcKg0GO34VDiQ==} + /stylelint-config-standard-scss@13.1.0(postcss@8.4.38)(stylelint@16.3.1): + resolution: {integrity: sha512-Eo5w7/XvwGHWkeGLtdm2FZLOMYoZl1omP2/jgFCXyl2x5yNz7/8vv4Tj6slHvMSSUNTaGoam/GAZ0ZhukvalfA==} engines: {node: '>=18.12.0'} peerDependencies: postcss: ^8.3.3 - stylelint: ^16.1.0 + stylelint: ^16.3.1 peerDependenciesMeta: postcss: optional: true dependencies: - postcss: 8.4.35 - stylelint: 16.3.1(typescript@5.4.3) - stylelint-config-recommended-scss: 14.0.0(postcss@8.4.35)(stylelint@16.3.1) + postcss: 8.4.38 + stylelint: 16.3.1(typescript@5.4.5) + stylelint-config-recommended-scss: 14.0.0(postcss@8.4.38)(stylelint@16.3.1) stylelint-config-standard: 36.0.0(stylelint@16.3.1) dev: true @@ -14252,18 +14217,18 @@ packages: peerDependencies: stylelint: ^16.1.0 dependencies: - stylelint: 16.3.1(typescript@5.4.3) + stylelint: 16.3.1(typescript@5.4.5) stylelint-config-recommended: 14.0.0(stylelint@16.3.1) dev: true - /stylelint-define-config@1.2.0(stylelint@16.3.1): - resolution: {integrity: sha512-/Ful3xCnFaE3jCiWPRcyVHaT0Cpxe7IK/owtosfMs+EqjPqEt/EkCfB1jeMhotrndL/H6mISvArd82cFQZdEGQ==} + /stylelint-define-config@1.3.0(stylelint@16.3.1): + resolution: {integrity: sha512-hBIfm6Fr0KY2XcdA8YWssSPCZZoDfoSpKyd9qUctpU24VsTQLIq6X+xl/gWuk1NVK2Red1YhvvbgL31eoBialQ==} engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>=8.6.0'} peerDependencies: stylelint: '>=16.0.0' dependencies: csstype: 3.1.3 - stylelint: 16.3.1(typescript@5.4.3) + stylelint: 16.3.1(typescript@5.4.5) dev: true /stylelint-order@6.0.4(stylelint@16.3.1): @@ -14271,9 +14236,9 @@ packages: peerDependencies: stylelint: ^14.0.0 || ^15.0.0 || ^16.0.1 dependencies: - postcss: 8.4.35 - postcss-sorting: 8.0.2(postcss@8.4.35) - stylelint: 16.3.1(typescript@5.4.3) + postcss: 8.4.38 + postcss-sorting: 8.0.2(postcss@8.4.38) + stylelint: 16.3.1(typescript@5.4.5) dev: true /stylelint-scss@6.0.0(stylelint@16.3.1): @@ -14285,12 +14250,12 @@ packages: known-css-properties: 0.29.0 postcss-media-query-parser: 0.2.3 postcss-resolve-nested-selector: 0.1.1 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 postcss-value-parser: 4.2.0 - stylelint: 16.3.1(typescript@5.4.3) + stylelint: 16.3.1(typescript@5.4.5) dev: true - /stylelint@16.3.1(typescript@5.4.3): + /stylelint@16.3.1(typescript@5.4.5): resolution: {integrity: sha512-/JOwQnBvxEKOT2RtNgGpBVXnCSMBgKOL2k7w0K52htwCyJls4+cHvc4YZgXlVoAZS9QJd2DgYAiRnja96pTgxw==} engines: {node: '>=18.12.0'} hasBin: true @@ -14302,7 +14267,7 @@ packages: '@dual-bundle/import-meta-resolve': 4.0.0 balanced-match: 2.0.0 colord: 2.9.3 - cosmiconfig: 9.0.0(typescript@5.4.3) + cosmiconfig: 9.0.0(typescript@5.4.5) css-functions-list: 3.2.1 css-tree: 2.3.1 debug: 4.3.4(supports-color@9.2.2) @@ -14413,7 +14378,7 @@ packages: resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==} engines: {node: '>=12.20'} dependencies: - tslib: 2.5.3 + tslib: 2.6.2 dev: true /system-architecture@0.1.0: @@ -14449,6 +14414,11 @@ packages: - supports-color dev: false + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + /tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} dependencies: @@ -14719,13 +14689,13 @@ packages: resolution: {integrity: sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==} dev: false - /ts-api-utils@1.0.1(typescript@5.4.3): - resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} - engines: {node: '>=16.13.0'} + /ts-api-utils@1.3.0(typescript@5.4.5): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.4.3 + typescript: 5.4.5 dev: true /ts-debounce@4.0.0: @@ -14737,7 +14707,7 @@ packages: engines: {node: '>=6.10'} dev: false - /ts-node@10.9.2(@types/node@20.12.2)(typescript@5.4.3): + /ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -14756,14 +14726,14 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 20.12.2 + '@types/node': 20.12.7 acorn: 8.11.3 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.4.3 + typescript: 5.4.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: false @@ -14786,16 +14756,15 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - dev: false - /tsutils@3.21.0(typescript@5.4.3): + /tsutils@3.21.0(typescript@5.4.5): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.4.3 + typescript: 5.4.5 dev: false /tunnel-agent@0.6.0: @@ -14808,27 +14777,27 @@ packages: resolution: {integrity: sha512-oUr5ZAn37CgNa6p1mrCuuR/pINffsnGCee2aS170Uj1IObxCjsHzu6sgdPUdxGLLn6++gd/qjNH1/iR6RrfLeg==} dev: false - /twoslash-vue@0.2.5(typescript@5.4.3): + /twoslash-vue@0.2.5(typescript@5.4.5): resolution: {integrity: sha512-Tai45V/1G/jEJQIbDe/DIkJCgOqtA/ZHxx4TgC5EM/nnyTP6zbZNtvKOlzMjFgXFdk6rebWEl2Mi/RHKs/sbDQ==} peerDependencies: typescript: '*' dependencies: - '@vue/language-core': 1.8.27(typescript@5.4.3) - twoslash: 0.2.5(typescript@5.4.3) + '@vue/language-core': 1.8.27(typescript@5.4.5) + twoslash: 0.2.5(typescript@5.4.5) twoslash-protocol: 0.2.5 - typescript: 5.4.3 + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: false - /twoslash@0.2.5(typescript@5.4.3): + /twoslash@0.2.5(typescript@5.4.5): resolution: {integrity: sha512-U8rqsfVh8jQMO1NJekUtglb52b7xD9+FrzeFrgzpHsRTKl8IQgqnZP6ld4PeKaHXhLfoZPuju9K50NXJ7wom8g==} peerDependencies: typescript: '*' dependencies: '@typescript/vfs': 1.5.0 twoslash-protocol: 0.2.5 - typescript: 5.4.3 + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: false @@ -14912,8 +14881,8 @@ packages: is-typedarray: 1.0.0 dev: false - /typescript@5.4.3: - resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==} + /typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} hasBin: true @@ -15082,7 +15051,7 @@ packages: isobject: 3.0.1 dev: false - /unstorage@1.10.1(@netlify/blobs@7.0.1): + /unstorage@1.10.1(@netlify/blobs@7.3.0): resolution: {integrity: sha512-rWQvLRfZNBpF+x8D3/gda5nUCQL2PgXy2jNG4U7/Rc9BGEv9+CAJd0YyGCROUBKs9v49Hg8huw3aih5Bf5TAVw==} peerDependencies: '@azure/app-configuration': ^1.4.1 @@ -15123,7 +15092,7 @@ packages: idb-keyval: optional: true dependencies: - '@netlify/blobs': 7.0.1 + '@netlify/blobs': 7.3.0 anymatch: 3.1.3 chokidar: 3.6.0 destr: 2.0.3 @@ -15159,17 +15128,6 @@ packages: engines: {node: '>=4'} dev: false - /update-browserslist-db@1.0.13(browserslist@4.22.2): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.22.2 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true - /update-browserslist-db@1.0.13(browserslist@4.23.0): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true @@ -15179,7 +15137,6 @@ packages: browserslist: 4.23.0 escalade: 3.1.1 picocolors: 1.0.0 - dev: false /update-notifier@6.0.2: resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} @@ -15327,8 +15284,8 @@ packages: fsevents: 2.3.3 dev: false - /vite@5.2.7(@types/node@20.9.1): - resolution: {integrity: sha512-k14PWOKLI6pMaSzAuGtT+Cf0YmIx12z9YGon39onaJNy8DLBfBJrzg9FQEmkAM5lpHBZs9wksWAsyF/HkpEwJA==} + /vite@5.2.8(@types/node@20.9.1): + resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -15375,17 +15332,17 @@ packages: '@vue/composition-api': optional: true dependencies: - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.5) dev: false - /vue-eslint-parser@9.4.2(eslint@8.57.0): + /vue-eslint-parser@9.4.2(eslint@9.0.0): resolution: {integrity: sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: debug: 4.3.4(supports-color@9.2.2) - eslint: 8.57.0 + eslint: 9.0.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 @@ -15401,7 +15358,7 @@ packages: peerDependencies: vue: ^3.0.0 dependencies: - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.5) dev: false /vue-router@4.3.0(vue@3.4.21): @@ -15410,7 +15367,7 @@ packages: vue: ^3.2.0 dependencies: '@vue/devtools-api': 6.5.1 - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.5) dev: false /vue-template-compiler@2.7.16: @@ -15420,7 +15377,7 @@ packages: he: 1.2.0 dev: false - /vue@3.4.21(typescript@5.4.3): + /vue@3.4.21(typescript@5.4.5): resolution: {integrity: sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==} peerDependencies: typescript: '*' @@ -15433,10 +15390,10 @@ packages: '@vue/runtime-dom': 3.4.21 '@vue/server-renderer': 3.4.21(vue@3.4.21) '@vue/shared': 3.4.21 - typescript: 5.4.3 + typescript: 5.4.5 dev: false - /vuepress-plugin-md-enhance@2.0.0-rc.32(katex@0.16.10)(markdown-it@14.1.0)(typescript@5.4.3)(vuepress@2.0.0-rc.9): + /vuepress-plugin-md-enhance@2.0.0-rc.32(katex@0.16.10)(markdown-it@14.1.0)(typescript@5.4.5)(vuepress@2.0.0-rc.9): resolution: {integrity: sha512-zZK8aEfbq26J5w8o9xGWXCHHrL3PYk25tloTPcx96nZWYPeD+5fMFAtVpHte0rXBWUf0MBtDQxddSeATteBE7Q==} engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} peerDependencies: @@ -15510,22 +15467,22 @@ packages: '@mdit/plugin-tex': 0.8.0(markdown-it@14.1.0) '@mdit/plugin-uml': 0.8.0(markdown-it@14.1.0) '@types/markdown-it': 13.0.7 - '@vuepress/helper': 2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9) + '@vuepress/helper': 2.0.0-rc.21(typescript@5.4.5)(vuepress@2.0.0-rc.9) '@vueuse/core': 10.9.0(vue@3.4.21) balloon-css: 1.2.0 js-yaml: 4.1.0 katex: 0.16.10 - vue: 3.4.21(typescript@5.4.3) - vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) - vuepress-plugin-sass-palette: 2.0.0-rc.32(typescript@5.4.3)(vuepress@2.0.0-rc.9) - vuepress-shared: 2.0.0-rc.32(typescript@5.4.3)(vuepress@2.0.0-rc.9) + vue: 3.4.21(typescript@5.4.5) + vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) + vuepress-plugin-sass-palette: 2.0.0-rc.32(typescript@5.4.5)(vuepress@2.0.0-rc.9) + vuepress-shared: 2.0.0-rc.32(typescript@5.4.5)(vuepress@2.0.0-rc.9) transitivePeerDependencies: - '@vue/composition-api' - markdown-it - typescript dev: false - /vuepress-plugin-sass-palette@2.0.0-rc.32(typescript@5.4.3)(vuepress@2.0.0-rc.9): + /vuepress-plugin-sass-palette@2.0.0-rc.32(typescript@5.4.5)(vuepress@2.0.0-rc.9): resolution: {integrity: sha512-3tHHQU1E5cCo/udiZ4t0PL6OrWMxuP67+/tj3U5R9Zls6zM1aNE+Dw8I6/Of+HRTzctsQFxGPH0lZa05gS49UQ==} engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} peerDependencies: @@ -15535,23 +15492,23 @@ packages: sass-loader: optional: true dependencies: - '@vuepress/helper': 2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9) + '@vuepress/helper': 2.0.0-rc.21(typescript@5.4.5)(vuepress@2.0.0-rc.9) chokidar: 3.6.0 sass: 1.72.0 - vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) - vuepress-shared: 2.0.0-rc.32(typescript@5.4.3)(vuepress@2.0.0-rc.9) + vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) + vuepress-shared: 2.0.0-rc.32(typescript@5.4.5)(vuepress@2.0.0-rc.9) transitivePeerDependencies: - '@vue/composition-api' - typescript dev: false - /vuepress-shared@2.0.0-rc.32(typescript@5.4.3)(vuepress@2.0.0-rc.9): + /vuepress-shared@2.0.0-rc.32(typescript@5.4.5)(vuepress@2.0.0-rc.9): resolution: {integrity: sha512-wGPPUoP6rxy7QnulD0sNz3r7iEHwp+TJroNmI+AT6FuCo1WCD4ZWfnRnm3dVcAkobc3nuOvSmDTvM9pIDCaxsA==} engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: - '@vuepress/helper': 2.0.0-rc.21(typescript@5.4.3)(vuepress@2.0.0-rc.9) + '@vuepress/helper': 2.0.0-rc.21(typescript@5.4.5)(vuepress@2.0.0-rc.9) '@vueuse/core': 10.9.0(vue@3.4.21) cheerio: 1.0.0-rc.12 dayjs: 1.11.10 @@ -15559,14 +15516,14 @@ packages: fflate: 0.8.2 gray-matter: 4.0.3 semver: 7.6.0 - vue: 3.4.21(typescript@5.4.3) - vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21) + vue: 3.4.21(typescript@5.4.5) + vuepress: 2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21) transitivePeerDependencies: - '@vue/composition-api' - typescript dev: false - /vuepress@2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.3)(vue@3.4.21): + /vuepress@2.0.0-rc.9(@vuepress/bundler-vite@2.0.0-rc.9)(typescript@5.4.5)(vue@3.4.21): resolution: {integrity: sha512-jT1ln2lawdph+vVI6n2JfEUhQIcyc1RQWDdQu9DffhJGywJunFcumnUJudpqd1SNIES2Fz1hVCD6gdrE/rVKOQ==} engines: {node: '>=18.16.0'} hasBin: true @@ -15580,14 +15537,14 @@ packages: '@vuepress/bundler-webpack': optional: true dependencies: - '@vuepress/bundler-vite': 2.0.0-rc.9(@types/node@20.9.1)(typescript@5.4.3) - '@vuepress/cli': 2.0.0-rc.9(typescript@5.4.3) - '@vuepress/client': 2.0.0-rc.9(typescript@5.4.3) - '@vuepress/core': 2.0.0-rc.9(typescript@5.4.3) + '@vuepress/bundler-vite': 2.0.0-rc.9(@types/node@20.9.1)(typescript@5.4.5) + '@vuepress/cli': 2.0.0-rc.9(typescript@5.4.5) + '@vuepress/client': 2.0.0-rc.9(typescript@5.4.5) + '@vuepress/core': 2.0.0-rc.9(typescript@5.4.5) '@vuepress/markdown': 2.0.0-rc.9(patch_hash=f3on36z73gmvj4jugj25dg7wje) '@vuepress/shared': 2.0.0-rc.9 '@vuepress/utils': 2.0.0-rc.9 - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.5) transitivePeerDependencies: - supports-color - typescript diff --git a/theme/package.json b/theme/package.json index 4d7100c2..1edddbd9 100644 --- a/theme/package.json +++ b/theme/package.json @@ -65,26 +65,27 @@ "@vuepress-plume/plugin-notes-data": "workspace:*", "@vuepress-plume/plugin-search": "workspace:*", "@vuepress-plume/plugin-shikiji": "workspace:*", + "@vuepress/helper": "2.0.0-rc.24", "@vuepress/plugin-active-header-links": "2.0.0-rc.21", - "@vuepress/plugin-comment": "2.0.0-rc.21", + "@vuepress/plugin-comment": "2.0.0-rc.24", "@vuepress/plugin-container": "2.0.0-rc.21", - "@vuepress/plugin-docsearch": "2.0.0-rc.21", - "@vuepress/plugin-external-link-icon": "2.0.0-rc.21", - "@vuepress/plugin-git": "2.0.0-rc.21", - "@vuepress/plugin-medium-zoom": "2.0.0-rc.21", + "@vuepress/plugin-docsearch": "2.0.0-rc.24", + "@vuepress/plugin-external-link-icon": "2.0.0-rc.24", + "@vuepress/plugin-git": "2.0.0-rc.22", + "@vuepress/plugin-medium-zoom": "2.0.0-rc.24", "@vuepress/plugin-nprogress": "2.0.0-rc.21", "@vuepress/plugin-palette": "2.0.0-rc.21", - "@vuepress/plugin-reading-time": "2.0.0-rc.21", - "@vuepress/plugin-seo": "2.0.0-rc.21", - "@vuepress/plugin-sitemap": "2.0.0-rc.21", + "@vuepress/plugin-reading-time": "2.0.0-rc.24", + "@vuepress/plugin-seo": "2.0.0-rc.24", + "@vuepress/plugin-sitemap": "2.0.0-rc.24", "@vuepress/plugin-theme-data": "2.0.0-rc.21", - "@vuepress/plugin-toc": "2.0.0-rc.21", + "@vuepress/plugin-toc": "2.0.0-rc.24", "@vueuse/core": "^10.9.0", "bcrypt-ts": "^5.0.2", "date-fns": "^3.6.0", "katex": "^0.16.10", "lodash.merge": "^4.6.2", - "nanoid": "^5.0.6", + "nanoid": "^5.0.7", "vue": "^3.4.21", "vue-router": "4.3.0", "vuepress-plugin-md-enhance": "2.0.0-rc.32", diff --git a/theme/src/client/components/Blog/BlogExtract.vue b/theme/src/client/components/Blog/BlogExtract.vue index 87da7102..7009970f 100644 --- a/theme/src/client/components/Blog/BlogExtract.vue +++ b/theme/src/client/components/Blog/BlogExtract.vue @@ -62,6 +62,16 @@ const showBlogExtract = computed(() => {

{{ avatar.description }}

+
+
+ +

+

+
+ +

+

+
@@ -87,7 +97,7 @@ const showBlogExtract = computed(() => { bottom: 30%; z-index: calc(var(--vp-z-index-nav) - 1); display: block; - padding: 4px 10px; + padding: 6px 10px; cursor: pointer; background-color: var(--vp-c-bg); border: solid 1px var(--vp-c-divider); @@ -212,4 +222,26 @@ const showBlogExtract = computed(() => { height: 1em; margin-right: 4px; } + +.avatar-info { + display: flex; + flex-wrap: wrap; + gap: 0 20px; + align-items: center; +} + +.avatar-location, +.avatar-organization { + display: flex; + align-items: center; + justify-content: center; + font-size: 14px; + color: var(--vp-c-text-3); + transition: color var(--t-color); +} + +.avatar-location p, +.avatar-organization p { + margin: 0 4px; +} diff --git a/theme/src/client/components/Blog/BlogProfile.vue b/theme/src/client/components/Blog/BlogProfile.vue index 079aaf33..4220962b 100644 --- a/theme/src/client/components/Blog/BlogProfile.vue +++ b/theme/src/client/components/Blog/BlogProfile.vue @@ -38,13 +38,11 @@ const avatar = computed(() => theme.value.avatar) border-radius: 8px; box-shadow: var(--vp-shadow-1); transition: var(--t-color); - transition-property: background-color, color, box-shadow, transform; - transform: scale(1); + transition-property: background-color, color, box-shadow; } .avatar-profile:hover { box-shadow: var(--vp-shadow-2); - transform: scale(1.002); } .avatar-profile img { diff --git a/theme/src/client/components/Blog/PostList.vue b/theme/src/client/components/Blog/PostList.vue index 7b4d8722..892818ea 100644 --- a/theme/src/client/components/Blog/PostList.vue +++ b/theme/src/client/components/Blog/PostList.vue @@ -1,5 +1,6 @@ diff --git a/theme/src/client/components/TransitionDrop.vue b/theme/src/client/components/TransitionDrop.vue new file mode 100644 index 00000000..2248c002 --- /dev/null +++ b/theme/src/client/components/TransitionDrop.vue @@ -0,0 +1,38 @@ + + + diff --git a/theme/src/client/components/Watermark.vue b/theme/src/client/components/Watermark.vue new file mode 100644 index 00000000..3c07f80d --- /dev/null +++ b/theme/src/client/components/Watermark.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/theme/src/client/composables/home.ts b/theme/src/client/composables/home.ts new file mode 100644 index 00000000..24132e04 --- /dev/null +++ b/theme/src/client/composables/home.ts @@ -0,0 +1,56 @@ +import type { Ref } from 'vue' +import { computed, onMounted, onUnmounted } from 'vue' +import { useDarkMode } from './darkMode.js' + +export function useHomeHeroFilterBackground( + canvas: Ref, + enable: Ref, +) { + const isDark = useDarkMode() + + let ctx: CanvasRenderingContext2D | null = null + let t = 0 + let timer: number + + const F = computed(() => isDark.value ? 32 : 220) + + onMounted(() => { + if (canvas.value && enable.value) { + ctx = canvas.value.getContext('2d')! + timer && window.cancelAnimationFrame(timer) + run() + } + }) + + onUnmounted(() => { + timer && window.cancelAnimationFrame(timer) + }) + + function run() { + for (let x = 0; x <= 35; x++) { + for (let y = 0; y <= 35; y++) + col(x, y, R(x, y, t), G(x, y, t), B(x, y, t)) + } + t = t + 0.020 + timer = window.requestAnimationFrame(run) + } + + function col(x: number, y: number, r: number, g: number, b: number) { + if (!ctx) + return + ctx.fillStyle = `rgb(${r},${g},${b})` + ctx.fillRect(x, y, 1, 1) + } + + function R(x: number, y: number, t: number) { + return (Math.floor(F.value + 36 * Math.cos((x * x - y * y) / 300 + t))) + } + + function G(x: number, y: number, t: number) { + return (Math.floor(F.value + 36 * Math.sin((x * x * Math.cos(t / 4) + y * y * Math.sin(t / 3)) / 300))) + } + + function B(x: number, y: number, t: number) { + return (Math.floor(F.value + 36 * Math.sin(5 * Math.sin(t / 9) + ((x - 100) * (x - 100) + (y - 100) * (y - 100)) / 1100))) + } +} diff --git a/theme/src/client/composables/index.ts b/theme/src/client/composables/index.ts index 6af2388c..07b9e931 100644 --- a/theme/src/client/composables/index.ts +++ b/theme/src/client/composables/index.ts @@ -5,7 +5,7 @@ export * from './useNavLink.js' export * from './sidebar.js' export * from './aside.js' export * from './page.js' -// export * from './readingTime.js' export * from './blog.js' export * from './locale.js' export * from './useRouteQuery.js' +export * from './waterMark.js' diff --git a/theme/src/client/composables/readingTime.ts b/theme/src/client/composables/readingTime.ts deleted file mode 100644 index 0d917bac..00000000 --- a/theme/src/client/composables/readingTime.ts +++ /dev/null @@ -1,154 +0,0 @@ -import { usePageData } from 'vuepress/client' -import { computed } from 'vue' -import type { - PlumeThemePageData, -} from '../../shared/index.js' - -/** - * Default locale config for `vuepress-plugin-reading-time2` plugin - */ -export const readingTimeLocales = { - 'en': { - word: 'About $word words', - less1Minute: 'Less than 1 minute', - time: 'About $time min', - }, - - 'zh-CN': { - word: '约$word字', - less1Minute: '小于1分钟', - time: '约$time分钟', - }, - - 'zh-TW': { - word: '約$word字', - less1Minute: '小於1分鐘', - time: '约$time分鐘', - }, - - 'de': { - word: 'Ungefähr $word Wörter', - less1Minute: 'Weniger als eine Minute', - time: 'Ungefähr $time min', - }, - - 'de-at': { - word: 'Um die $word Wörter', - less1Minute: 'Weniger als eine Minute', - time: 'Ungefähr $time min', - }, - - 'vi': { - word: 'Khoảng $word từ', - less1Minute: 'Ít hơn 1 phút', - time: 'Khoảng $time phút', - }, - - 'uk': { - word: 'Про $word слова', - less1Minute: 'Менше 1 хвилини', - time: 'Приблизно $time хв', - }, - - 'ru': { - word: 'Около $word слов', - less1Minute: 'Меньше 1 минуты', - time: 'Около $time мин', - }, - - 'br': { - word: 'Por volta de $word palavras', - less1Minute: 'Menos de 1 minuto', - time: 'Por volta de $time min', - }, - - 'pl': { - word: 'Około $word słów', - less1Minute: 'Mniej niż 1 minuta', - time: 'Około $time minut', - }, - - 'sk': { - word: 'Okolo $word slov', - less1Minute: 'Menej ako 1 minúta', - time: 'Okolo $time minút', - }, - - 'fr': { - word: 'Environ $word mots', - less1Minute: 'Moins de 1 minute', - time: 'Environ $time min', - }, - - 'es': { - word: 'Alrededor de $word palabras', - less1Minute: 'Menos de 1 minuto', - time: 'Alrededor de $time min', - }, - - 'ja': { - word: '$word字程度', - less1Minute: '1分以内', - time: '約$time分', - }, - - 'tr': { - word: 'Yaklaşık $word kelime', - less1Minute: '1 dakikadan az', - time: 'Yaklaşık $time dakika', - }, - - 'ko': { - word: '약 $word 단어', - less1Minute: '1분 미만', - time: '약 $time 분', - }, - - 'fi': { - word: 'Noin $word sanaa', - less1Minute: 'Alle minuutti', - time: 'Noin $time minuuttia', - }, - - 'hu': { - word: 'Körülbelül $word szó', - less1Minute: 'Kevesebb, mint 1 perc', - time: 'Körülbelül $time perc', - }, - - 'id': { - word: 'Sekitar $word kata', - less1Minute: 'Kurang dari 1 menit', - time: 'Sekitar $time menit', - }, - - 'nl': { - word: 'Ongeveer $word woorden', - less1Minute: 'Minder dan 1 minuut', - time: 'Ongeveer $time minuten', - }, -} - -export function useReadingTime() { - const page = usePageData() - - return computed<{ times: string, words: string }>(() => { - if (!page.value.readingTime) - return { times: '', words: '' } - - const locale = readingTimeLocales[page.value.lang] ?? readingTimeLocales.en - - const minutes = page.value.readingTime.minutes - const words = page.value.readingTime.words - - const times = (minutes < 1 ? locale.less1Minute : locale.time).replace( - '$time', - Math.round(minutes), - ) - - return { - times, - words: locale.word.replace('$word', words), - } - }) -} diff --git a/theme/src/client/composables/sidebar.ts b/theme/src/client/composables/sidebar.ts index 7d5f18f8..c6dcf26e 100644 --- a/theme/src/client/composables/sidebar.ts +++ b/theme/src/client/composables/sidebar.ts @@ -47,6 +47,13 @@ export function useSidebar() { const isOpen = ref(false) + const sidebarKey = computed(() => { + const link = Object.keys(notesData.value).find(link => + route.path.startsWith(normalizePath(withBase(link))), + ) + return link + }) + const sidebar = computed(() => { return theme.value.notes ? getSidebarList(route.path, notesData.value) : [] }) @@ -88,6 +95,7 @@ export function useSidebar() { hasAside, isSidebarEnabled, sidebarGroups, + sidebarKey, open, close, toggle, diff --git a/theme/src/client/composables/waterMark.ts b/theme/src/client/composables/waterMark.ts new file mode 100644 index 00000000..3a404074 --- /dev/null +++ b/theme/src/client/composables/waterMark.ts @@ -0,0 +1,191 @@ +import { computed, nextTick, onMounted, onUnmounted, ref, watch, watchEffect } from 'vue' +import { isLinkHttp } from 'vuepress/shared' +import { usePageData, usePageFrontmatter, useRoute, useSiteLocaleData, withBase } from 'vuepress/client' +import type { PlumeThemePageData, PlumeThemePageFrontmatter, WatermarkOptions } from '../../shared/index.js' +import { toArray } from '../utils/base.js' +import { useDarkMode } from './darkMode.js' +import { useThemeLocaleData } from './themeData.js' + +const defaultWatermarkOptions: WatermarkOptions = { + global: true, + matches: [], + width: 150, + height: 100, + rotate: -22, + fullPage: true, + gapX: 20, + gapY: 20, + opacity: 0.1, + onlyPrint: false, +} + +export function useWaterMark() { + const isDark = useDarkMode() + const site = useSiteLocaleData() + const theme = useThemeLocaleData() + const page = usePageData() + const frontmatter = usePageFrontmatter() + const route = useRoute() + + const watermark = computed(() => { + if (!theme.value.watermark) + return {} + + const pageWatermark = typeof frontmatter.value.watermark === 'object' ? frontmatter.value.watermark : {} + const content = site.value.title || theme.value.avatar?.name + + return { + content, + ...defaultWatermarkOptions, + ...theme.value.watermark === true ? {} : theme.value.watermark, + ...pageWatermark, + } + }) + + const enableWatermark = computed(() => { + if (!theme.value.watermark) + return false + + const pageWatermark = frontmatter.value.watermark + if (watermark.value.global) + return pageWatermark !== false + + if (pageWatermark) + return true + + const matches = toArray(watermark.value.matches!) + return matches.some(toMatch) + }) + + function toMatch(match: string) { + const relativePath = page.value.filePathRelative || '' + if (match[0] === '^') { + const regex = new RegExp(match) + return regex.test(route.path) || (relativePath && regex.test(relativePath)) + } + if (match.endsWith('.md')) + return !!relativePath && relativePath.endsWith(match) + + return route.path.startsWith(match) || relativePath.startsWith(match) + } + + const isFullPage = computed(() => !!watermark.value.fullPage) + const onlyPrint = computed(() => !!watermark.value.onlyPrint) + + const svgRect = computed(() => ({ + width: watermark.value.width!, + height: watermark.value.height!, + gapX: watermark.value.gapX!, + gapY: watermark.value.gapY!, + svgWidth: watermark.value.width! + watermark.value.gapX!, + svgHeight: watermark.value.height! + watermark.value.gapY!, + opacity: watermark.value.opacity, + })) + + const rotateStyle = computed(() => ({ + transformOrigin: 'center', + transform: `rotate(${watermark.value.rotate}deg)`, + })) + + const imageUrl = computed(() => { + if (!enableWatermark) + return '' + const image = watermark.value.image || '' + const source = typeof image === 'string' ? image : image[isDark.value ? 'dark' : 'light'] + return !source ? '' : isLinkHttp(source) ? source : withBase(source) + }) + + const svgElRef = ref() + const watermarkUrl = ref('') + const imageBase64 = ref('') + const defaultTextColor = ref('') + + const content = computed(() => watermark.value.content) + const textColor = computed(() => { + if (!enableWatermark) + return '' + const textColor = watermark.value.textColor || defaultTextColor.value + return typeof textColor === 'string' ? textColor : textColor[isDark.value ? 'dark' : 'light'] + }) + + const makeImageToBase64 = (url: string) => { + const canvas = document.createElement('canvas') + const image = new Image() + image.crossOrigin = 'anonymous' + image.referrerPolicy = 'no-referrer' + image.onload = () => { + canvas.width = image.naturalWidth + canvas.height = image.naturalHeight + const ctx = canvas.getContext('2d') + ctx?.drawImage(image, 0, 0) + imageBase64.value = canvas.toDataURL() + } + image.src = url + } + + const makeSvgToBlobUrl = (svgStr: string) => { + // svg MIME type: https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types + const svgBlob = new Blob([svgStr], { + type: 'image/svg+xml', + }) + return URL.createObjectURL(svgBlob) + } + + const getDefaultTextColor = () => { + const color = typeof document !== 'undefined' && typeof window !== 'undefined' + ? window.getComputedStyle(document.documentElement).getPropertyValue('--vp-c-text-1') + : '' + defaultTextColor.value = color + } + + watch(() => isDark.value, () => nextTick(getDefaultTextColor)) + + onMounted(getDefaultTextColor) + + watchEffect(() => { + if (imageUrl.value && enableWatermark.value) + makeImageToBase64(imageUrl.value) + }) + + watch( + () => [ + watermark.value, + imageBase64.value, + enableWatermark.value, + textColor.value, + ], + () => { + if (!enableWatermark.value) + return + + nextTick(() => { + if (svgElRef.value) { + if (watermarkUrl.value) + URL.revokeObjectURL(watermarkUrl.value) + + watermarkUrl.value = makeSvgToBlobUrl(svgElRef.value.innerHTML) + } + }) + }, + { immediate: true }, + ) + + onUnmounted(() => { + if (watermarkUrl.value) + URL.revokeObjectURL(watermarkUrl.value) + }) + + return { + enableWatermark, + isFullPage, + imageUrl, + content, + textColor, + svgElRef, + svgRect, + rotateStyle, + imageBase64, + watermarkUrl, + onlyPrint, + } +} diff --git a/theme/src/client/fonts/inter-italic-cyrillic-ext.woff2 b/theme/src/client/fonts/inter-italic-cyrillic-ext.woff2 index 2a687296..b6b603d5 100644 Binary files a/theme/src/client/fonts/inter-italic-cyrillic-ext.woff2 and b/theme/src/client/fonts/inter-italic-cyrillic-ext.woff2 differ diff --git a/theme/src/client/fonts/inter-italic-cyrillic.woff2 b/theme/src/client/fonts/inter-italic-cyrillic.woff2 index f6403515..def40a4f 100644 Binary files a/theme/src/client/fonts/inter-italic-cyrillic.woff2 and b/theme/src/client/fonts/inter-italic-cyrillic.woff2 differ diff --git a/theme/src/client/fonts/inter-italic-greek-ext.woff2 b/theme/src/client/fonts/inter-italic-greek-ext.woff2 index 00218960..e070c3d3 100644 Binary files a/theme/src/client/fonts/inter-italic-greek-ext.woff2 and b/theme/src/client/fonts/inter-italic-greek-ext.woff2 differ diff --git a/theme/src/client/fonts/inter-italic-greek.woff2 b/theme/src/client/fonts/inter-italic-greek.woff2 index 71c265f8..a3c16ca4 100644 Binary files a/theme/src/client/fonts/inter-italic-greek.woff2 and b/theme/src/client/fonts/inter-italic-greek.woff2 differ diff --git a/theme/src/client/fonts/inter-italic-latin-ext.woff2 b/theme/src/client/fonts/inter-italic-latin-ext.woff2 index 9c1b9440..2210a899 100644 Binary files a/theme/src/client/fonts/inter-italic-latin-ext.woff2 and b/theme/src/client/fonts/inter-italic-latin-ext.woff2 differ diff --git a/theme/src/client/fonts/inter-italic-latin.woff2 b/theme/src/client/fonts/inter-italic-latin.woff2 index 01fcf207..790d62dc 100644 Binary files a/theme/src/client/fonts/inter-italic-latin.woff2 and b/theme/src/client/fonts/inter-italic-latin.woff2 differ diff --git a/theme/src/client/fonts/inter-italic-vietnamese.woff2 b/theme/src/client/fonts/inter-italic-vietnamese.woff2 index e4f788ee..1eec0775 100644 Binary files a/theme/src/client/fonts/inter-italic-vietnamese.woff2 and b/theme/src/client/fonts/inter-italic-vietnamese.woff2 differ diff --git a/theme/src/client/fonts/inter-roman-cyrillic-ext.woff2 b/theme/src/client/fonts/inter-roman-cyrillic-ext.woff2 index 28593ccb..2cfe6153 100644 Binary files a/theme/src/client/fonts/inter-roman-cyrillic-ext.woff2 and b/theme/src/client/fonts/inter-roman-cyrillic-ext.woff2 differ diff --git a/theme/src/client/fonts/inter-roman-cyrillic.woff2 b/theme/src/client/fonts/inter-roman-cyrillic.woff2 index a20adc16..e3886dd1 100644 Binary files a/theme/src/client/fonts/inter-roman-cyrillic.woff2 and b/theme/src/client/fonts/inter-roman-cyrillic.woff2 differ diff --git a/theme/src/client/fonts/inter-roman-greek-ext.woff2 b/theme/src/client/fonts/inter-roman-greek-ext.woff2 index e3b0be76..36d67487 100644 Binary files a/theme/src/client/fonts/inter-roman-greek-ext.woff2 and b/theme/src/client/fonts/inter-roman-greek-ext.woff2 differ diff --git a/theme/src/client/fonts/inter-roman-greek.woff2 b/theme/src/client/fonts/inter-roman-greek.woff2 index f790e047..2bed1e85 100644 Binary files a/theme/src/client/fonts/inter-roman-greek.woff2 and b/theme/src/client/fonts/inter-roman-greek.woff2 differ diff --git a/theme/src/client/fonts/inter-roman-latin-ext.woff2 b/theme/src/client/fonts/inter-roman-latin-ext.woff2 index 715bd903..9a8d1e2b 100644 Binary files a/theme/src/client/fonts/inter-roman-latin-ext.woff2 and b/theme/src/client/fonts/inter-roman-latin-ext.woff2 differ diff --git a/theme/src/client/fonts/inter-roman-latin.woff2 b/theme/src/client/fonts/inter-roman-latin.woff2 index a540b7af..07d3c53a 100644 Binary files a/theme/src/client/fonts/inter-roman-latin.woff2 and b/theme/src/client/fonts/inter-roman-latin.woff2 differ diff --git a/theme/src/client/fonts/inter-roman-vietnamese.woff2 b/theme/src/client/fonts/inter-roman-vietnamese.woff2 index 5a9f9cb9..57bdc22a 100644 Binary files a/theme/src/client/fonts/inter-roman-vietnamese.woff2 and b/theme/src/client/fonts/inter-roman-vietnamese.woff2 differ diff --git a/theme/src/client/styles/fonts.scss b/theme/src/client/styles/fonts.scss index a9ac7b04..84a1399d 100644 --- a/theme/src/client/styles/fonts.scss +++ b/theme/src/client/styles/fonts.scss @@ -1,25 +1,5 @@ -/* webfont-marker-begin */ -@import "https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap"; - -html body { - font-synthesis: style; -} - -/* webfont-marker-end */ - @font-face { - font-family: "Inter var"; - font-style: normal; - font-weight: 100 900; - src: url("../fonts/inter-roman-cyrillic.woff2") format("woff2"); - font-display: swap; - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; - - font-named-instance: "Regular"; -} - -@font-face { - font-family: "Inter var"; + font-family: Inter; font-style: normal; font-weight: 100 900; src: url("../fonts/inter-roman-cyrillic-ext.woff2") format("woff2"); @@ -31,34 +11,86 @@ html body { U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; - - font-named-instance: "Regular"; } @font-face { - font-family: "Inter var"; + font-family: Inter; font-style: normal; font-weight: 100 900; - src: url("../fonts/inter-roman-greek.woff2") format("woff2"); + src: url("../fonts/inter-roman-cyrillic.woff2") format("woff2"); font-display: swap; - unicode-range: U+0370-03FF; - - font-named-instance: "Regular"; + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; } @font-face { - font-family: "Inter var"; + font-family: Inter; font-style: normal; font-weight: 100 900; src: url("../fonts/inter-roman-greek-ext.woff2") format("woff2"); font-display: swap; unicode-range: U+1F00-1FFF; - - font-named-instance: "Regular"; } @font-face { - font-family: "Inter var"; + font-family: Inter; + font-style: normal; + font-weight: 100 900; + src: url("../fonts/inter-roman-greek.woff2") format("woff2"); + font-display: swap; + unicode-range: + U+0370-0377, + U+037A-037F, + U+0384-038A, + U+038C, + U+038E-03A1, + U+03A3-03FF; +} + +@font-face { + font-family: Inter; + font-style: normal; + font-weight: 100 900; + src: url("../fonts/inter-roman-vietnamese.woff2") format("woff2"); + font-display: swap; + unicode-range: + U+0102-0103, + U+0110-0111, + U+0128-0129, + U+0168-0169, + U+01A0-01A1, + U+01AF-01B0, + U+0300-0301, + U+0303-0304, + U+0308-0309, + U+0323, + U+0329, + U+1EA0-1EF9, + U+20AB; +} + +@font-face { + font-family: Inter; + font-style: normal; + font-weight: 100 900; + src: url("../fonts/inter-roman-latin-ext.woff2") format("woff2"); + font-display: swap; + unicode-range: + U+0100-02AF, + U+0304, + U+0308, + U+0329, + U+1E00-1E9F, + U+1EF2-1EFF, + U+2020, + U+20A0-20AB, + U+20AD-20C0, + U+2113, + U+2C60-2C7F, + U+A720-A7FF; +} + +@font-face { + font-family: Inter; font-style: normal; font-weight: 100 900; src: url("../fonts/inter-roman-latin.woff2") format("woff2"); @@ -71,6 +103,9 @@ html body { U+02C6, U+02DA, U+02DC, + U+0304, + U+0308, + U+0329, U+2000-206F, U+2074, U+20AC, @@ -81,62 +116,10 @@ html body { U+2215, U+FEFF, U+FFFD; - - font-named-instance: "Regular"; } @font-face { - font-family: "Inter var"; - font-style: normal; - font-weight: 100 900; - src: url("../fonts/inter-roman-latin-ext.woff2") format("woff2"); - font-display: swap; - unicode-range: - U+0100-024F, - U+0259, - U+1E00-1EFF, - U+2020, - U+20A0-20AB, - U+20AD-20CF, - U+2113, - U+2C60-2C7F, - U+A720-A7FF; - - font-named-instance: "Regular"; -} - -@font-face { - font-family: "Inter var"; - font-style: normal; - font-weight: 100 900; - src: url("../fonts/inter-roman-vietnamese.woff2") format("woff2"); - font-display: swap; - unicode-range: - U+0102-0103, - U+0110-0111, - U+0128-0129, - U+0168-0169, - U+01A0-01A1, - U+01AF-01B0, - U+1EA0-1EF9, - U+20AB; - - font-named-instance: "Regular"; -} - -@font-face { - font-family: "Inter var"; - font-style: italic; - font-weight: 100 900; - src: url("../fonts/inter-italic-cyrillic.woff2") format("woff2"); - font-display: swap; - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; - - font-named-instance: "Italic"; -} - -@font-face { - font-family: "Inter var"; + font-family: Inter; font-style: italic; font-weight: 100 900; src: url("../fonts/inter-italic-cyrillic-ext.woff2") format("woff2"); @@ -148,34 +131,86 @@ html body { U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; - - font-named-instance: "Italic"; } @font-face { - font-family: "Inter var"; + font-family: Inter; font-style: italic; font-weight: 100 900; - src: url("../fonts/inter-italic-greek.woff2") format("woff2"); + src: url("../fonts/inter-italic-cyrillic.woff2") format("woff2"); font-display: swap; - unicode-range: U+0370-03FF; - - font-named-instance: "Italic"; + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; } @font-face { - font-family: "Inter var"; + font-family: Inter; font-style: italic; font-weight: 100 900; src: url("../fonts/inter-italic-greek-ext.woff2") format("woff2"); font-display: swap; unicode-range: U+1F00-1FFF; - - font-named-instance: "Italic"; } @font-face { - font-family: "Inter var"; + font-family: Inter; + font-style: italic; + font-weight: 100 900; + src: url("../fonts/inter-italic-greek.woff2") format("woff2"); + font-display: swap; + unicode-range: + U+0370-0377, + U+037A-037F, + U+0384-038A, + U+038C, + U+038E-03A1, + U+03A3-03FF; +} + +@font-face { + font-family: Inter; + font-style: italic; + font-weight: 100 900; + src: url("../fonts/inter-italic-vietnamese.woff2") format("woff2"); + font-display: swap; + unicode-range: + U+0102-0103, + U+0110-0111, + U+0128-0129, + U+0168-0169, + U+01A0-01A1, + U+01AF-01B0, + U+0300-0301, + U+0303-0304, + U+0308-0309, + U+0323, + U+0329, + U+1EA0-1EF9, + U+20AB; +} + +@font-face { + font-family: Inter; + font-style: italic; + font-weight: 100 900; + src: url("../fonts/inter-italic-latin-ext.woff2") format("woff2"); + font-display: swap; + unicode-range: + U+0100-02AF, + U+0304, + U+0308, + U+0329, + U+1E00-1E9F, + U+1EF2-1EFF, + U+2020, + U+20A0-20AB, + U+20AD-20C0, + U+2113, + U+2C60-2C7F, + U+A720-A7FF; +} + +@font-face { + font-family: Inter; font-style: italic; font-weight: 100 900; src: url("../fonts/inter-italic-latin.woff2") format("woff2"); @@ -188,6 +223,9 @@ html body { U+02C6, U+02DA, U+02DC, + U+0304, + U+0308, + U+0329, U+2000-206F, U+2074, U+20AC, @@ -198,47 +236,6 @@ html body { U+2215, U+FEFF, U+FFFD; - - font-named-instance: "Italic"; -} - -@font-face { - font-family: "Inter var"; - font-style: italic; - font-weight: 100 900; - src: url("../fonts/inter-italic-latin-ext.woff2") format("woff2"); - font-display: swap; - unicode-range: - U+0100-024F, - U+0259, - U+1E00-1EFF, - U+2020, - U+20A0-20AB, - U+20AD-20CF, - U+2113, - U+2C60-2C7F, - U+A720-A7FF; - - font-named-instance: "Italic"; -} - -@font-face { - font-family: "Inter var"; - font-style: italic; - font-weight: 100 900; - src: url("../fonts/inter-italic-vietnamese.woff2") format("woff2"); - font-display: swap; - unicode-range: - U+0102-0103, - U+0110-0111, - U+0128-0129, - U+0168-0169, - U+01A0-01A1, - U+01AF-01B0, - U+1EA0-1EF9, - U+20AB; - - font-named-instance: "Italic"; } /* Chinese quotes rendering fix. 中英文弯引号共享 Unicode 码位,确保引号使用中文字体渲染 */ @@ -251,3 +248,5 @@ html body { local("Source Han Sans SC"); unicode-range: U+2018, U+2019, U+201C, U+201D; /* 分别是 ‘’“” */ } + +/* Generate the subsetted fonts using: `pyftsubset .woff2 --unicodes="" --output-file="inter-