vitepress-plugin-toolkit 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,18 @@
1
+ .vp-loading {
2
+ display: flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ font-size: 36px;
6
+ color: currentcolor;
7
+ background-color: inherit;
8
+ transition: background-color 0.3s ease-in-out;
9
+ }
10
+
11
+ .vp-loading.absolute {
12
+ position: absolute;
13
+ top: 0;
14
+ right: 0;
15
+ bottom: 0;
16
+ left: 0;
17
+ z-index: 2;
18
+ }
@@ -0,0 +1,25 @@
1
+ @import url("./vars.css");
2
+
3
+ :root {
4
+ --transition-fade-in-down-offset: -10px;
5
+ }
6
+
7
+ .fade-in-down-enter-from,
8
+ .fade-in-down-leave-to {
9
+ opacity: 0 !important;
10
+ transform: translateY(var(--transition-fade-in-down-offset)) !important;
11
+ }
12
+
13
+ .fade-in-down-enter-to,
14
+ .fade-in-down-leave-from {
15
+ opacity: 1;
16
+ transform: translateY(0) !important;
17
+ }
18
+
19
+ .fade-in-down-leave-active {
20
+ transition: opacity var(--transition-leave-duration) var(--transition-ease-in-out), transform var(--transition-leave-duration) var(--transition-ease-in-out) !important;
21
+ }
22
+
23
+ .fade-in-down-enter-active {
24
+ transition: opacity var(--transition-enter-duration) var(--transition-ease-in-out), transform var(--transition-enter-duration) var(--transition-ease-in-out) !important;
25
+ }
@@ -0,0 +1,25 @@
1
+ @import url("./vars.css");
2
+
3
+ .fade-in-height-expand-leave-from,
4
+ .fade-in-height-expand-enter-to {
5
+ opacity: 1;
6
+ }
7
+
8
+ .fade-in-height-expand-leave-to,
9
+ .fade-in-height-expand-enter-from {
10
+ padding-top: 0 !important;
11
+ padding-bottom: 0 !important;
12
+ margin-top: 0 !important;
13
+ margin-bottom: 0 !important;
14
+ opacity: 0 !important;
15
+ }
16
+
17
+ .fade-in-height-expand-leave-active {
18
+ overflow: hidden !important;
19
+ transition: max-height var(--transition-slow-duration) var(--transition-ease-in-out), opacity var(--transition-leave-duration) var(--transition-ease-out), margin-top var(--transition-slow-duration) var(--transition-ease-in-out), margin-bottom var(--transition-slow-duration) var(--transition-ease-in-out), padding-top var(--transition-slow-duration) var(--transition-ease-in-out), padding-bottom var(--transition-slow-duration) var(--transition-ease-in-out) !important;
20
+ }
21
+
22
+ .fade-in-height-expand-enter-active {
23
+ overflow: hidden !important;
24
+ transition: max-height var(--transition-slow-duration) var(--transition-ease-in-out), opacity var(--transition-enter-duration) var(--transition-ease-in), margin-top var(--transition-slow-duration) var(--transition-ease-in-out), margin-bottom var(--transition-slow-duration) var(--transition-ease-in-out), padding-top var(--transition-slow-duration) var(--transition-ease-in-out), padding-bottom var(--transition-slow-duration) var(--transition-ease-in-out) !important;
25
+ }
@@ -0,0 +1,25 @@
1
+ @import url("./vars.css");
2
+
3
+ :root {
4
+ --transition-fade-in-left-offset: 10px;
5
+ }
6
+
7
+ .fade-in-left-enter-from,
8
+ .fade-in-left-leave-to {
9
+ opacity: 0 !important;
10
+ transform: translateX(var(--transition-fade-in-left-offset)) !important;
11
+ }
12
+
13
+ .fade-in-left-enter-to,
14
+ .fade-in-left-leave-from {
15
+ opacity: 1;
16
+ transform: translateX(0) !important;
17
+ }
18
+
19
+ .fade-in-left-leave-active {
20
+ transition: opacity var(--transition-leave-duration) var(--transition-ease-in-out), transform var(--transition-leave-duration) var(--transition-ease-in-out) !important;
21
+ }
22
+
23
+ .fade-in-left-enter-active {
24
+ transition: opacity var(--transition-enter-duration) var(--transition-ease-in-out), transform var(--transition-enter-duration) var(--transition-ease-in-out) !important;
25
+ }
@@ -0,0 +1,25 @@
1
+ @import url("./vars.css");
2
+
3
+ :root {
4
+ --transition-fade-in-right-offset: -10px;
5
+ }
6
+
7
+ .fade-in-right-enter-from,
8
+ .fade-in-right-leave-to {
9
+ opacity: 0 !important;
10
+ transform: translateX(var(--transition-fade-in-right-offset)) !important;
11
+ }
12
+
13
+ .fade-in-right-enter-to,
14
+ .fade-in-right-leave-from {
15
+ opacity: 1;
16
+ transform: translateX(0) !important;
17
+ }
18
+
19
+ .fade-in-right-leave-active {
20
+ transition: opacity var(--transition-leave-duration) var(--transition-ease-in-out), transform var(--transition-leave-duration) var(--transition-ease-in-out) !important;
21
+ }
22
+
23
+ .fade-in-right-enter-active {
24
+ transition: opacity var(--transition-enter-duration) var(--transition-ease-in-out), transform var(--transition-enter-duration) var(--transition-ease-in-out) !important;
25
+ }
@@ -0,0 +1,29 @@
1
+ @import url("./vars.css");
2
+
3
+ :root {
4
+ --transition-fade-in-scale-up-scale: 0.9;
5
+ --transition-fade-in-scale-up-duration: var(--transition-duration);
6
+ --transition-fade-in-scale-up-origin: inherit;
7
+ }
8
+
9
+ .fade-in-scale-up-leave-active {
10
+ transition: opacity var(--transition-fade-in-scale-up-duration) var(--transition-ease-in), transform var(--transition-fade-in-scale-up-duration) var(--transition-ease-in) !important;
11
+ transform-origin: var(--transition-fade-in-scale-up-origin) !important;
12
+ }
13
+
14
+ .fade-in-scale-up-enter-active {
15
+ transition: opacity var(--transition-fade-in-scale-up-duration) var(--transition-ease-out), transform var(--transition-fade-in-scale-up-duration) var(--transition-ease-out) !important;
16
+ transform-origin: var(--transition-fade-in-scale-up-origin) !important;
17
+ }
18
+
19
+ .fade-in-scale-up-enter-from,
20
+ .fade-in-scale-up-leave-to {
21
+ opacity: 0 !important;
22
+ transform: scale(var(--transition-fade-in-scale-up-scale)) !important;
23
+ }
24
+
25
+ .fade-in-scale-up-leave-from,
26
+ .fade-in-scale-up-enter-to {
27
+ opacity: 1;
28
+ transform: scale(1) !important;
29
+ }
@@ -0,0 +1,25 @@
1
+ @import url("./vars.css");
2
+
3
+ :root {
4
+ --transition-fade-in-up-offset: 10px;
5
+ }
6
+
7
+ .fade-in-up-enter-from,
8
+ .fade-in-up-leave-to {
9
+ opacity: 0 !important;
10
+ transform: translateY(var(--transition-fade-in-up-offset)) !important;
11
+ }
12
+
13
+ .fade-in-up-enter-to,
14
+ .fade-in-up-leave-from {
15
+ opacity: 1;
16
+ transform: translateY(0) !important;
17
+ }
18
+
19
+ .fade-in-up-leave-active {
20
+ transition: opacity var(--transition-leave-duration) var(--transition-ease-in-out), transform var(--transition-leave-duration) var(--transition-ease-in-out) !important;
21
+ }
22
+
23
+ .fade-in-up-enter-active {
24
+ transition: opacity var(--transition-enter-duration) var(--transition-ease-in-out), transform var(--transition-enter-duration) var(--transition-ease-in-out) !important;
25
+ }
@@ -0,0 +1,23 @@
1
+ @import url("./vars.css");
2
+
3
+ .fade-in-width-expand-leave-from,
4
+ .fade-in-width-expand-enter-to {
5
+ opacity: 1;
6
+ }
7
+
8
+ .fade-in-width-expand-leave-to,
9
+ .fade-in-width-expand-enter-from {
10
+ margin-right: 0 !important;
11
+ margin-left: 0 !important;
12
+ opacity: 0 !important;
13
+ }
14
+
15
+ .fade-in-width-expand-leave-active {
16
+ overflow: hidden !important;
17
+ transition: max-width var(--transition-leave-duration) var(--transition-ease-in-out) var(--transition-delay), opacity var(--transition-leave-duration) var(--transition-ease-in-out), margin-right var(--transition-leave-duration) var(--transition-ease-in-out) var(--transition-delay), margin-left var(--transition-duration) var(--transition-ease-in-out) var(--transition-delay) !important;
18
+ }
19
+
20
+ .fade-in-width-expand-enter-active {
21
+ overflow: hidden !important;
22
+ transition: max-width var(--transition-enter-duration) var(--transition-ease-in-out), opacity var(--transition-leave-duration) var(--transition-ease-in-out) var(--transition-delay), margin-right var(--transition-enter-duration) var(--transition-ease-in-out), margin-left var(--transition-enter-duration) var(--transition-ease-in-out) !important;
23
+ }
@@ -0,0 +1,16 @@
1
+ @import url("./vars.css");
2
+
3
+ .fade-in-enter-active,
4
+ .fade-in-leave-active {
5
+ transition: all var(--transition-duration) var(--transition-ease-in-out) !important;
6
+ }
7
+
8
+ .fade-in-enter-from,
9
+ .fade-in-leave-to {
10
+ opacity: 0 !important;
11
+ }
12
+
13
+ .fade-in-leave-from,
14
+ .fade-in-enter-to {
15
+ opacity: 1;
16
+ }
@@ -0,0 +1,23 @@
1
+ @import url("./vars.css");
2
+
3
+ :root {
4
+ --transition-slide-in-down-offset: -100%;
5
+ }
6
+
7
+ .slide-in-down-leave-active {
8
+ transition: transform var(--transition-leave-duration) var(--transition-ease-in) !important;
9
+ }
10
+
11
+ .slide-in-down-enter-active {
12
+ transition: transform var(--transition-enter-duration) var(--transition-ease-out) !important;
13
+ }
14
+
15
+ .slide-in-down-enter-to,
16
+ .slide-in-down-leave-from {
17
+ transform: translateY(0) !important;
18
+ }
19
+
20
+ .slide-in-down-enter-from,
21
+ .slide-in-down-leave-to {
22
+ transform: translateY(var(--transition-slide-in-down-offset)) !important;
23
+ }
@@ -0,0 +1,23 @@
1
+ @import url("./vars.css");
2
+
3
+ :root {
4
+ --transition-slide-in-left-offset: 100%;
5
+ }
6
+
7
+ .slide-in-left-leave-active {
8
+ transition: transform var(--transition-leave-duration) var(--transition-ease-in) !important;
9
+ }
10
+
11
+ .slide-in-left-enter-active {
12
+ transition: transform var(--transition-enter-duration) var(--transition-ease-out) !important;
13
+ }
14
+
15
+ .slide-in-left-enter-to,
16
+ .slide-in-left-leave-from {
17
+ transform: translateX(0) !important;
18
+ }
19
+
20
+ .slide-in-left-enter-from,
21
+ .slide-in-left-leave-to {
22
+ transform: translateX(var(--transition-slide-in-left-offset)) !important;
23
+ }
@@ -0,0 +1,23 @@
1
+ @import url("./vars.css");
2
+
3
+ :root {
4
+ --transition-slide-in-right-offset: -100%;
5
+ }
6
+
7
+ .slide-in-right-leave-active {
8
+ transition: transform var(--transition-leave-duration) var(--transition-ease-in) !important;
9
+ }
10
+
11
+ .slide-in-right-enter-active {
12
+ transition: transform var(--transition-enter-duration) var(--transition-ease-out) !important;
13
+ }
14
+
15
+ .slide-in-right-enter-to,
16
+ .slide-in-right-leave-from {
17
+ transform: translateX(0) !important;
18
+ }
19
+
20
+ .slide-in-right-enter-from,
21
+ .slide-in-right-leave-to {
22
+ transform: translateX(var(--transition-slide-in-right-offset)) !important;
23
+ }
@@ -0,0 +1,23 @@
1
+ @import url("./vars.css");
2
+
3
+ :root {
4
+ --transition-slide-in-up-offset: 100%;
5
+ }
6
+
7
+ .slide-in-up-leave-active {
8
+ transition: transform var(--transition-leave-duration) var(--transition-ease-in) !important;
9
+ }
10
+
11
+ .slide-in-up-enter-active {
12
+ transition: transform var(--transition-enter-duration) var(--transition-ease-out) !important;
13
+ }
14
+
15
+ .slide-in-up-enter-to,
16
+ .slide-in-up-leave-from {
17
+ transform: translateY(0) !important;
18
+ }
19
+
20
+ .slide-in-up-enter-from,
21
+ .slide-in-up-leave-to {
22
+ transform: translateY(var(--transition-slide-in-up-offset)) !important;
23
+ }
@@ -0,0 +1,10 @@
1
+ :root {
2
+ --transition-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
3
+ --transition-ease-out: cubic-bezier(0, 0, 0.2, 1);
4
+ --transition-ease-in: cubic-bezier(0.4, 0, 1, 1);
5
+ --transition-duration: 0.2s;
6
+ --transition-slow-duration: 0.3s;
7
+ --transition-enter-duration: var(--transition-duration);
8
+ --transition-leave-duration: var(--transition-duration);
9
+ --transition-delay: 0.1s;
10
+ }
@@ -0,0 +1,331 @@
1
+ import MarkdownIt from "markdown-it";
2
+ import { RenderRule } from "markdown-it/lib/renderer.mjs";
3
+ import { RuleOptions } from "markdown-it/lib/ruler.mjs";
4
+ import { MarkdownEnv, SiteConfig } from "vitepress";
5
+
6
+ //#region src/shared/link.d.ts
7
+ declare const EXTERNAL_URL_RE: RegExp;
8
+ declare function isExternal(path: string): boolean;
9
+ declare const URL_PROTOCOL_RE: RegExp;
10
+ declare function isLinkWithProtocol(link: string): boolean;
11
+ //#endregion
12
+ //#region src/shared/size.d.ts
13
+ /**
14
+ * Size Options
15
+ *
16
+ * 尺寸选项
17
+ */
18
+ interface SizeOptions {
19
+ /**
20
+ * Width
21
+ *
22
+ * 宽度
23
+ */
24
+ width?: string;
25
+ /**
26
+ * Height
27
+ *
28
+ * 高度
29
+ */
30
+ height?: string;
31
+ /**
32
+ * Aspect ratio
33
+ *
34
+ * 宽高比
35
+ */
36
+ ratio?: number | string;
37
+ }
38
+ //#endregion
39
+ //#region src/node/markdown/container.d.ts
40
+ /**
41
+ * Type for getting RenderRule parameters
42
+ *
43
+ * 获取 RenderRule 参数的类型
44
+ */
45
+ type RenderRuleParams = Parameters<RenderRule> extends [...infer Args, infer _] ? Args : never;
46
+ /**
47
+ * Container options
48
+ *
49
+ * 自定义容器的配置项
50
+ */
51
+ interface ContainerOptions {
52
+ /**
53
+ * Callback for rendering container opening tag
54
+ *
55
+ * 渲染容器起始标签时的回调
56
+ */
57
+ before?: (info: string, ...args: RenderRuleParams) => string;
58
+ /**
59
+ * Callback for rendering container closing tag
60
+ *
61
+ * 渲染容器结束标签时的回调
62
+ */
63
+ after?: (info: string, ...args: RenderRuleParams) => string;
64
+ }
65
+ /**
66
+ * Create markdown-it custom container plugin
67
+ *
68
+ * 创建 markdown-it 的自定义容器插件
69
+ *
70
+ * @param md - Markdown-it instance / Markdown-it 实例
71
+ * @param type - Container type (e.g., 'tip', 'warning') / 容器类型(如 'tip', 'warning' 等)
72
+ * @param options - Optional before/after render hooks / 可选的 before/after 渲染钩子
73
+ * @param options.before - Callback for rendering container opening tag / 渲染容器起始标签时的回调函数
74
+ * @param options.after - Callback for rendering container closing tag / 渲染容器结束标签时的回调函数
75
+ */
76
+ declare function createContainerPlugin(md: MarkdownIt, type: string, {
77
+ before,
78
+ after
79
+ }?: ContainerOptions): void;
80
+ /**
81
+ * Create a custom container rule where content is not processed by markdown-it
82
+ * Requires custom content processing logic
83
+ * ```md
84
+ * ::: type
85
+ * xxxx <-- content: this part will not be processed by markdown-it
86
+ * :::
87
+ * ```
88
+ *
89
+ * @example
90
+ * ```ts
91
+ * const example = createContainerSyntaxPlugin(md, 'example', (tokens, index, options, env) => {
92
+ * const { content, meta } = tokens[index]
93
+ * return `<div class="example">${meta.title} | ${content}</div>`
94
+ * })
95
+ * ```
96
+ *
97
+ * @param md - Markdown-it instance / Markdown-it 实例
98
+ * @param type - Container type / 容器类型
99
+ * @param render - Custom render rule / 自定义渲染规则
100
+ */
101
+ declare function createContainerSyntaxPlugin(md: MarkdownIt, type: string, render?: RenderRule): void;
102
+ //#endregion
103
+ //#region src/node/markdown/embed.d.ts
104
+ /**
105
+ * Embed rule block options
106
+ *
107
+ * 嵌入规则块选项
108
+ *
109
+ * @typeParam Meta - Metadata type / 元数据类型
110
+ */
111
+ interface EmbedRuleBlockOptions<Meta extends Record<string, any>> {
112
+ /**
113
+ * Embed type syntax: @[type]()
114
+ *
115
+ * 嵌入类型语法:@[type]()
116
+ */
117
+ type: string;
118
+ /**
119
+ * Token name
120
+ *
121
+ * 令牌名称
122
+ */
123
+ name?: string;
124
+ /**
125
+ * Name of the rule to insert before
126
+ *
127
+ * 要插入在其前面的规则名称
128
+ */
129
+ beforeName?: string;
130
+ /**
131
+ * Syntax pattern regular expression
132
+ *
133
+ * 语法模式正则表达式
134
+ */
135
+ syntaxPattern: RegExp;
136
+ /**
137
+ * Rule options
138
+ *
139
+ * 规则选项
140
+ */
141
+ ruleOptions?: RuleOptions;
142
+ /**
143
+ * Extract metadata from match
144
+ *
145
+ * 从匹配中提取元数据
146
+ *
147
+ * @param match - RegExp match array / 正则表达式匹配数组
148
+ * @returns Metadata object / 元数据对象
149
+ */
150
+ meta: (match: RegExpMatchArray) => Meta;
151
+ /**
152
+ * Generate content from metadata
153
+ *
154
+ * 从元数据生成内容
155
+ *
156
+ * @param meta - Metadata / 元数据
157
+ * @param content - Original content / 原始内容
158
+ * @param env - Markdown environment / Markdown 环境
159
+ * @returns Generated content / 生成的内容
160
+ */
161
+ content: (meta: Meta, content: string, env: MarkdownEnv) => string;
162
+ }
163
+ /**
164
+ * Create embed rule block
165
+ *
166
+ * 创建嵌入规则块
167
+ *
168
+ * Syntax: \@\[name]()
169
+ *
170
+ * 语法:\@\[name]()
171
+ *
172
+ * @param md - Markdown instance / Markdown 实例
173
+ * @param {EmbedRuleBlockOptions} options - Embed rule block options / 嵌入规则块选项
174
+ * @typeParam Meta - Metadata type / 元数据类型
175
+ */
176
+ declare function createEmbedRuleBlock<Meta extends Record<string, any> = Record<string, any>>(md: MarkdownIt, {
177
+ type,
178
+ name,
179
+ syntaxPattern,
180
+ beforeName,
181
+ ruleOptions,
182
+ meta,
183
+ content
184
+ }: EmbedRuleBlockOptions<Meta>): void;
185
+ //#endregion
186
+ //#region src/node/utils/constants.d.ts
187
+ /**
188
+ * 支持的视频文件名扩展名
189
+ */
190
+ declare const EXTENSION_VIDEOS: string[];
191
+ /**
192
+ * 支持的图片文件名扩展名
193
+ */
194
+ declare const EXTENSION_IMAGES: string[];
195
+ /**
196
+ * 支持的音频文件名扩展名
197
+ */
198
+ declare const EXTENSION_AUDIOS: string[];
199
+ //#endregion
200
+ //#region src/node/utils/logger.d.ts
201
+ type LogType = 'info' | 'warn' | 'error' | 'debug';
202
+ type LogLevel = LogType | 'silent';
203
+ /**
204
+ * Logger interface
205
+ *
206
+ * 日志接口
207
+ */
208
+ interface Logger {
209
+ /**
210
+ * Debug log
211
+ *
212
+ * 调试日志
213
+ */
214
+ debug: (msg: string, level?: boolean | LogLevel) => void;
215
+ /**
216
+ * Info log
217
+ *
218
+ * 信息日志
219
+ */
220
+ info: (msg: string, level?: boolean | LogLevel) => void;
221
+ /**
222
+ * Warning log
223
+ *
224
+ * 警告日志
225
+ */
226
+ warn: (msg: string, level?: boolean | LogLevel) => void;
227
+ /**
228
+ * Error log
229
+ *
230
+ * 错误日志
231
+ */
232
+ error: (msg: string, level?: boolean | LogLevel) => void;
233
+ }
234
+ /**
235
+ * Log levels mapping
236
+ *
237
+ * 日志级别映射
238
+ */
239
+ declare const logLevels: Record<LogLevel, number>;
240
+ /**
241
+ * Create logger instance
242
+ *
243
+ * 创建日志实例
244
+ *
245
+ * @param prefix - Log prefix / 日志前缀
246
+ * @param defaultLevel - Default log level / 默认日志级别
247
+ * @returns Logger instance / 日志实例
248
+ */
249
+ declare function createLogger(prefix: string, defaultLevel?: LogLevel): Logger;
250
+ //#endregion
251
+ //#region src/node/utils/parseRect.d.ts
252
+ /**
253
+ * Parse rect size string, add unit if it's a number
254
+ *
255
+ * 解析矩形尺寸字符串,如果是数字则添加单位
256
+ *
257
+ * @param str - Size string / 尺寸字符串
258
+ * @param unit - Unit to append (default: 'px') / 要添加的单位(默认:'px')
259
+ * @returns Size string with unit / 带单位的尺寸字符串
260
+ */
261
+ declare function parseRect(str: string, unit?: string): string;
262
+ //#endregion
263
+ //#region src/node/utils/resolve-attrs.d.ts
264
+ /**
265
+ * Resolve attribute string to object
266
+ *
267
+ * 将属性字符串解析为对象
268
+ *
269
+ * @param info - Attribute string / 属性字符串
270
+ * @returns Object with attrs and rawAttrs / 包含 attrs 和 rawAttrs 的对象
271
+ * @typeParam T - Attribute type / 属性类型
272
+ */
273
+ declare function resolveAttrs<T extends Record<string, any> = Record<string, any>>(info: string): T;
274
+ /**
275
+ * Resolve single attribute value from info string
276
+ *
277
+ * 从信息字符串中解析单个属性值
278
+ *
279
+ * @param info - Info string / 信息字符串
280
+ * @param key - Attribute key / 属性键
281
+ * @returns Attribute value or undefined / 属性值或 undefined
282
+ */
283
+ declare function resolveAttr(info: string, key: string): string | undefined;
284
+ //#endregion
285
+ //#region src/node/utils/slugify.d.ts
286
+ /**
287
+ * Default slugification function
288
+ */
289
+ declare function slugify(str: string): string;
290
+ //#endregion
291
+ //#region src/node/utils/stringify-attrs.d.ts
292
+ /**
293
+ * Stringify attributes object to HTML attribute string
294
+ *
295
+ * 将属性对象字符串化为 HTML 属性字符串
296
+ *
297
+ * @param attrs - Attributes object / 属性对象
298
+ * @param withUndefinedOrNull - Whether to include undefined/null values / 是否包含 undefined/null 值
299
+ * @param forceStringify - Keys to force stringify / 强制字符串化的键
300
+ * @returns HTML attribute string / HTML 属性字符串
301
+ * @typeParam T - Attribute type / 属性类型
302
+ */
303
+ declare function stringifyAttrs<T extends object = object>(attrs: T, withUndefinedOrNull?: boolean, forceStringify?: (keyof T)[]): string;
304
+ //#endregion
305
+ //#region src/node/utils/treat-as-html.d.ts
306
+ declare function treatAsHtml(filename: string): boolean;
307
+ //#endregion
308
+ //#region src/node/vitepress/createLocales.d.ts
309
+ type BuiltinLocale<LocaleData extends Record<string, unknown>> = [langCodes: string[], localeData: LocaleData];
310
+ type BuiltinLocales<LocaleData extends Record<string, unknown>> = BuiltinLocale<LocaleData>[];
311
+ /**
312
+ * 创建 locales
313
+ * @param builtinLocales 内置的 locales
314
+ * @param userLocales 用户的 locales
315
+ * @returns locales
316
+ */
317
+ declare function createLocales<LocaleData extends Record<string, unknown>>(builtinLocales: BuiltinLocales<LocaleData>, userLocales?: Record<string, LocaleData>): Record<string, LocaleData>;
318
+ //#endregion
319
+ //#region src/node/vitepress/get-locale-with-path.d.ts
320
+ declare function getLocaleWithPath(path: string): {
321
+ lang: string;
322
+ locale: string;
323
+ };
324
+ //#endregion
325
+ //#region src/node/vitepress/get-vitepress-config.d.ts
326
+ declare function getVitepressConfig(): SiteConfig;
327
+ //#endregion
328
+ //#region src/node/vitepress/resolve-route-link.d.ts
329
+ declare function resolveRouteLink(url: string, env: MarkdownEnv): string;
330
+ //#endregion
331
+ export { BuiltinLocale, BuiltinLocales, ContainerOptions, EXTENSION_AUDIOS, EXTENSION_IMAGES, EXTENSION_VIDEOS, EXTERNAL_URL_RE, EmbedRuleBlockOptions, LogLevel, LogType, Logger, SizeOptions, URL_PROTOCOL_RE, createContainerPlugin, createContainerSyntaxPlugin, createEmbedRuleBlock, createLocales, createLogger, getLocaleWithPath, getVitepressConfig, isExternal, isLinkWithProtocol, logLevels, parseRect, resolveAttr, resolveAttrs, resolveRouteLink, slugify, stringifyAttrs, treatAsHtml };