valaxy 0.1.1 → 0.1.2

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.
Files changed (75) hide show
  1. package/bin/valaxy.js +1 -1
  2. package/dist/chunk-5D7M5SQP.js +1 -0
  3. package/dist/{chunk-ESCOXVP6.mjs → chunk-CF6MGLH2.mjs} +42 -41
  4. package/dist/chunk-L22LX2G6.mjs +1 -0
  5. package/dist/chunk-W5MJCUNY.js +84 -0
  6. package/dist/config-d6527c8c.d.ts +174 -0
  7. package/dist/index.d.ts +309 -152
  8. package/dist/index.js +1 -1
  9. package/dist/index.mjs +1 -1
  10. package/dist/{cli.d.ts → node/cli.d.ts} +0 -0
  11. package/dist/node/cli.js +6 -0
  12. package/dist/node/cli.mjs +6 -0
  13. package/dist/node/index.d.ts +46 -0
  14. package/dist/node/index.js +1 -0
  15. package/dist/node/index.mjs +1 -0
  16. package/package.json +18 -17
  17. package/src/client/components/PostCard.vue +1 -1
  18. package/src/client/components/PostList.vue +3 -3
  19. package/src/client/components/ValaxyCopyright.vue +1 -1
  20. package/src/client/components/ValaxyFooter.vue +1 -1
  21. package/src/client/components/ValaxyOverlay.vue +4 -4
  22. package/src/client/components/ValaxyPagination.vue +14 -11
  23. package/src/client/components/ValaxyRightSidebar.vue +2 -2
  24. package/src/client/components/ValaxySidebar.vue +4 -8
  25. package/src/client/components/ValaxyToc.vue +11 -9
  26. package/src/client/composables/comments/waline.ts +8 -4
  27. package/src/client/composables/common.ts +2 -4
  28. package/src/client/composables/search/algolia.ts +2 -1
  29. package/src/client/composables/sidebar.ts +2 -2
  30. package/src/client/composables/tag.ts +1 -1
  31. package/src/client/composables/widgets/backToTop.ts +10 -4
  32. package/src/client/main.ts +1 -6
  33. package/src/client/modules/valaxy.ts +30 -13
  34. package/src/client/shims.d.ts +5 -0
  35. package/src/client/styles/common/button.scss +3 -5
  36. package/src/client/styles/common/hamburger.scss +2 -2
  37. package/src/client/styles/common/markdown.scss +4 -3
  38. package/src/client/styles/common/sidebar.scss +3 -3
  39. package/src/client/styles/common/transition.scss +2 -2
  40. package/src/client/styles/{css-vars/index.scss → css-vars.scss} +22 -8
  41. package/src/client/styles/global/helper.scss +2 -2
  42. package/src/client/styles/global/index.scss +1 -1
  43. package/src/client/styles/global/nprogress.scss +1 -1
  44. package/src/client/styles/global/reset.scss +1 -1
  45. package/src/client/styles/mixins/config.scss +1 -1
  46. package/src/client/styles/mixins/index.scss +1 -0
  47. package/src/client/styles/palette.scss +12 -7
  48. package/src/client/styles/vars.scss +1 -13
  49. package/src/client/styles/widgets/banner.scss +2 -2
  50. package/src/client/utils/index.ts +0 -2
  51. package/src/node/build.ts +20 -1
  52. package/src/node/cli.ts +17 -19
  53. package/src/node/markdown/index.ts +3 -1
  54. package/src/node/markdown/markdown-it-katex.ts +20 -10
  55. package/src/node/markdown/parseHeader.ts +4 -2
  56. package/src/node/options.ts +3 -1
  57. package/src/node/plugins/index.ts +53 -24
  58. package/src/node/plugins/markdown.ts +1 -1
  59. package/src/node/plugins/preset.ts +44 -8
  60. package/src/node/plugins/unocss.ts +12 -7
  61. package/src/node/server.ts +1 -1
  62. package/src/node/shims.d.ts +5 -0
  63. package/src/node/utils/cli.ts +0 -1
  64. package/src/node/vite.ts +7 -15
  65. package/tsup.config.ts +1 -0
  66. package/dist/build-VGAF4K5S.js +0 -1
  67. package/dist/build-Y5F7AZ2V.mjs +0 -1
  68. package/dist/chunk-5KQ3UFYI.js +0 -1
  69. package/dist/chunk-JWA76JND.mjs +0 -1
  70. package/dist/chunk-WYCH73X6.js +0 -83
  71. package/dist/cli.js +0 -6
  72. package/dist/cli.mjs +0 -6
  73. package/src/client/pages/about/index.md +0 -5
  74. package/src/client/styles/css-vars/dark.scss +0 -17
  75. package/src/client/styles/css-vars/light.scss +0 -9
@@ -0,0 +1,174 @@
1
+ import { PartialDeep } from 'type-fest';
2
+ import { VitePluginConfig } from 'unocss/vite';
3
+ import MarkdownIt from 'markdown-it';
4
+ import Anchor from 'markdown-it-anchor';
5
+ import { KatexOptions } from 'katex';
6
+ import Markdown from 'vite-plugin-md';
7
+
8
+ interface MarkdownOptions extends MarkdownIt.Options {
9
+ config?: (md: MarkdownIt) => void;
10
+ anchor?: {
11
+ permalink?: Anchor.AnchorOptions['permalink'];
12
+ };
13
+ toc?: any;
14
+ katex?: KatexOptions;
15
+ }
16
+
17
+ declare type ViteMdOptions = Parameters<typeof Markdown>[0];
18
+
19
+ declare type ValaxyThemeConfig = Record<string, any>;
20
+ interface SocialLink {
21
+ /**
22
+ * The title of your link
23
+ */
24
+ name: string;
25
+ link: string;
26
+ /**
27
+ * 图标名称
28
+ * https://icones.js.org/
29
+ */
30
+ icon: string;
31
+ color: string;
32
+ }
33
+ interface ValaxyConfig<T = ValaxyThemeConfig> {
34
+ /**
35
+ * Default language
36
+ * @description 默认语言
37
+ * @default 'en'
38
+ */
39
+ lang: string;
40
+ /**
41
+ * You site url in web, required for ssg, do not add / in end
42
+ * @description 站点的 URL,SSG 需要(譬如生成版权处文章永久链接),不要在末尾添加 /
43
+ */
44
+ url: string;
45
+ /**
46
+ * Site title
47
+ * @description 站点标题
48
+ */
49
+ title: string;
50
+ /**
51
+ * 副标题
52
+ */
53
+ subtitle: string;
54
+ /**
55
+ * 站点描述
56
+ */
57
+ description: string;
58
+ /**
59
+ * The owner of this blog
60
+ * @description 博客作者
61
+ */
62
+ author: {
63
+ /**
64
+ * Your name
65
+ * @description 你的名字
66
+ */
67
+ name: string;
68
+ avatar: string;
69
+ /**
70
+ * The status of you
71
+ * @description 状态
72
+ */
73
+ status: {
74
+ emoji: string;
75
+ /**
76
+ * show when hover emoji
77
+ * @description 当鼠标悬浮在图标上时显示
78
+ */
79
+ message: string;
80
+ };
81
+ };
82
+ /**
83
+ * 社交链接
84
+ */
85
+ social: SocialLink[];
86
+ /**
87
+ * search
88
+ */
89
+ search: {
90
+ algolia: {
91
+ enable: boolean;
92
+ appId: string;
93
+ apiKey: string;
94
+ indexName: string;
95
+ chunkSize: number;
96
+ };
97
+ };
98
+ /**
99
+ * comment: waline/...
100
+ */
101
+ comment: {
102
+ waline: {
103
+ enable: boolean;
104
+ serverURL: string;
105
+ };
106
+ };
107
+ /**
108
+ * The name of theme
109
+ * @description 主题名称
110
+ */
111
+ theme: string;
112
+ /**
113
+ * The config of theme
114
+ * @description 主题配置
115
+ */
116
+ themeConfig: T;
117
+ /**
118
+ * Unocss Config
119
+ */
120
+ unocss: VitePluginConfig;
121
+ /**
122
+ * The license of your posts
123
+ * @description 文章所使用的协议,默认使用 Creative Commons
124
+ * @default https://creativecommons.org/licenses/
125
+ */
126
+ license: {
127
+ /**
128
+ * Whether to show at the bottom of the article
129
+ * @description 是否显示在文章底部
130
+ * @default true
131
+ */
132
+ enabled: boolean;
133
+ /**
134
+ * Creative License Language, same with your config.lang
135
+ * when lang === 'zh-CN', use 'zh'
136
+ * @description 默认与站点语言相同
137
+ * @default 'en'
138
+ */
139
+ language: string;
140
+ /**
141
+ * Type of license
142
+ * @description 证书类型
143
+ * @default 'by-nc-sa'
144
+ */
145
+ type: 'zero' | 'by-sa' | 'by-nd' | 'by-nc' | 'by-nc-sa' | 'by-nc-nd';
146
+ };
147
+ /**
148
+ * donate for author
149
+ * @description 打赏/赞助
150
+ */
151
+ sponsor: {
152
+ enable: boolean;
153
+ title: string;
154
+ methods: {
155
+ name: string;
156
+ url: string;
157
+ color: string;
158
+ icon: string;
159
+ }[];
160
+ };
161
+ /**
162
+ * for markdown
163
+ */
164
+ markdown: ViteMdOptions;
165
+ markdownIt: MarkdownOptions;
166
+ }
167
+ /**
168
+ * Valaxy User Config
169
+ * @description Valaxy 用户配置
170
+ */
171
+ declare type UserConfig<T = ValaxyThemeConfig> = PartialDeep<ValaxyConfig<T>>;
172
+ declare const defaultValaxyConfig: ValaxyConfig;
173
+
174
+ export { SocialLink as S, UserConfig as U, ValaxyConfig as V, ValaxyThemeConfig as a, defaultValaxyConfig as d };
package/dist/index.d.ts CHANGED
@@ -1,203 +1,360 @@
1
- import * as vite from 'vite';
2
- import { InlineConfig } from 'vite';
3
- import { VitePluginConfig } from 'unocss/vite';
4
- import MarkdownIt from 'markdown-it';
5
- import Anchor from 'markdown-it-anchor';
6
- import { KatexOptions } from 'katex';
7
- import Markdown from 'vite-plugin-md';
8
-
9
- interface MarkdownOptions extends MarkdownIt.Options {
10
- config?: (md: MarkdownIt) => void;
11
- anchor?: {
12
- permalink?: Anchor.AnchorOptions['permalink'];
13
- };
14
- toc?: any;
15
- katex?: KatexOptions;
16
- }
1
+ import * as vue from 'vue';
2
+ import { InjectionKey, ComputedRef, StyleValue, Ref } from 'vue';
3
+ import { V as ValaxyConfig, a as ValaxyThemeConfig } from './config-d6527c8c.js';
4
+ export { S as SocialLink, U as UserConfig, V as ValaxyConfig, a as ValaxyThemeConfig, d as defaultValaxyConfig } from './config-d6527c8c.js';
5
+ import 'type-fest';
6
+ import 'unocss/vite';
7
+ import 'markdown-it';
8
+ import 'markdown-it-anchor';
9
+ import 'katex';
10
+ import 'vite-plugin-md';
17
11
 
18
- declare type ViteMdOptions = Parameters<typeof Markdown>[0];
19
-
20
- declare type ValaxyThemeConfig = Record<string, any>;
21
- interface SocialLink {
12
+ interface Post {
22
13
  /**
23
- * The title of your link
14
+ * Path of post
15
+ * route.path
16
+ * @description 路径
24
17
  */
25
- name: string;
26
- link: string;
18
+ path?: string;
27
19
  /**
28
- * 图标名称
29
- * https://icones.js.org/
20
+ * Title
21
+ * @description 文章标题
30
22
  */
31
- icon: string;
32
- color: string;
33
- }
34
- interface ValaxyConfig<T = ValaxyThemeConfig> {
23
+ title?: string;
24
+ date?: string | number | Date;
35
25
  /**
36
- * Default language
37
- * @description 默认语言
38
- * @default 'en'
26
+ * Updated Time
39
27
  */
40
- lang: string;
28
+ updated?: string | number | Date;
29
+ lang?: string;
41
30
  /**
42
- * You site url in web, required for ssg, do not add / in end
43
- * @description 站点的 URL,SSG 需要(譬如生成版权处文章永久链接),不要在末尾添加 /
31
+ * TODO
32
+ * Read Time
33
+ * @description 阅读时长
44
34
  */
45
- url: string;
35
+ duration?: string;
46
36
  /**
47
- * Site title
48
- * @description 站点标题
37
+ * post card type, can be bilibili/yuque/...
49
38
  */
50
- title: string;
39
+ type?: string;
51
40
  /**
52
- * 副标题
41
+ * override url, and jump directly
53
42
  */
54
- subtitle: string;
43
+ url?: string;
55
44
  /**
56
- * 站点描述
45
+ * @description 摘要
57
46
  */
58
- description: string;
47
+ excerpt?: string;
59
48
  /**
60
- * The owner of this blog
61
- * @description 博客作者
49
+ * Display sponsor info
50
+ * @description 是否开启赞助
62
51
  */
63
- author: {
64
- /**
65
- * Your name
66
- * @description 你的名字
67
- */
68
- name: string;
69
- avatar: string;
70
- /**
71
- * The status of you
72
- * @description 状态
73
- */
74
- status: {
75
- emoji: string;
76
- /**
77
- * show when hover emoji
78
- * @description 当鼠标悬浮在图标上时显示
79
- */
80
- message: string;
81
- };
82
- };
52
+ sponsor?: boolean;
83
53
  /**
84
- * 社交链接
54
+ * Copyright
55
+ * @description 是否显示文章底部版权信息
85
56
  */
86
- social: SocialLink[];
57
+ copyright?: boolean;
87
58
  /**
88
- * search
59
+ * Category
60
+ * @description 分类,若为数组,则按顺序代表多层文件夹
89
61
  */
90
- search: {
91
- algolia: {
92
- enable: boolean;
93
- appId: string;
94
- apiKey: string;
95
- indexName: string;
96
- chunkSize: number;
97
- };
98
- };
62
+ categories?: string | string[];
99
63
  /**
100
- * comment: waline/...
64
+ * Tags
65
+ * @description 标签,可以有多个
101
66
  */
102
- comment: {
103
- waline: {
104
- enable: boolean;
105
- serverURL: string;
106
- };
107
- };
67
+ tags?: string[];
108
68
  /**
109
- * The name of theme
110
- * @description 主题名称
69
+ * display prev next
70
+ * @description 是否显示前一篇、后一篇导航
111
71
  */
112
- theme: string;
72
+ nav?: boolean;
113
73
  /**
114
- * The config of theme
115
- * @description 主题配置
74
+ * icon before title
116
75
  */
117
- themeConfig: T;
76
+ icon?: string;
118
77
  /**
119
- * Unocss Config
78
+ * title color
120
79
  */
121
- unocss: VitePluginConfig;
80
+ color?: string;
122
81
  /**
123
- * The license of your posts
124
- * @description 文章所使用的协议,默认使用 Creative Commons
125
- * @default https://creativecommons.org/licenses/
82
+ * display comment
126
83
  */
127
- license: {
128
- /**
129
- * Whether to show at the bottom of the article
130
- * @description 是否显示在文章底部
131
- * @default true
132
- */
133
- enabled: boolean;
134
- /**
135
- * Creative License Language, same with your config.lang
136
- * when lang === 'zh-CN', use 'zh'
137
- * @description 默认与站点语言相同
138
- * @default 'en'
139
- */
140
- language: string;
141
- /**
142
- * Type of license
143
- * @description 证书类型
144
- * @default 'by-nc-sa'
145
- */
146
- type: 'zero' | 'by-sa' | 'by-nd' | 'by-nc' | 'by-nc-sa' | 'by-nc-nd';
147
- };
84
+ comment?: boolean;
148
85
  /**
149
- * donate for author
150
- * @description 打赏/赞助
86
+ * post is end
87
+ * @description 是否完结,将在末尾添加衬线字体 Q.E.D.
151
88
  */
152
- sponsor: {
153
- enable: boolean;
154
- title: string;
155
- methods: {
156
- name: string;
157
- url: string;
158
- color: string;
159
- icon: string;
160
- }[];
161
- };
89
+ end?: boolean;
162
90
  /**
163
- * for markdown
91
+ * use aplayer
164
92
  */
165
- markdown: ViteMdOptions;
166
- markdownIt: MarkdownOptions;
167
- }
168
-
169
- interface ResolvedValaxyOptions {
93
+ aplayer?: boolean;
170
94
  /**
171
- * Client root path
172
- * @default 'valaxy/src/client'
95
+ * use katex
173
96
  */
174
- clientRoot: string;
97
+ katex?: boolean;
175
98
  /**
176
- * User root path
177
- * @default process.cwd()
99
+ * use codepen
178
100
  */
179
- userRoot: string;
101
+ codepen?: boolean;
180
102
  /**
181
- * Theme root path
103
+ * 置顶
182
104
  */
183
- themeRoot: string;
105
+ top?: number;
184
106
  /**
185
- * Theme name
107
+ * display toc
108
+ * @description 是否显示目录
186
109
  */
187
- theme: string;
110
+ toc?: boolean;
111
+ }
112
+
113
+ /**
114
+ * Theme Config
115
+ */
116
+ interface ThemeConfig {
117
+ colors: {
118
+ /**
119
+ * primary color
120
+ */
121
+ primary: string;
122
+ };
188
123
  /**
189
- * Valaxy Config
124
+ * 首页标语
190
125
  */
191
- config: ValaxyConfig;
126
+ banner: {
127
+ enable: boolean;
128
+ /**
129
+ * 标题
130
+ */
131
+ title: string;
132
+ };
133
+ bg_image: {
134
+ enable: boolean;
135
+ url: string;
136
+ dark?: string;
137
+ opacity: number;
138
+ };
192
139
  /**
193
- * config file path
140
+ * say something
141
+ * https://say.elpsy.cn
194
142
  */
195
- configFile: string;
143
+ say: {
144
+ enable: boolean;
145
+ api: string;
146
+ hitokoto: {
147
+ enable: boolean;
148
+ api: string;
149
+ };
150
+ };
151
+ pages: {
152
+ name: string;
153
+ url: string;
154
+ icon: string;
155
+ color: string;
156
+ }[];
157
+ /**
158
+ * footer
159
+ */
160
+ footer: {
161
+ /**
162
+ * 建站于
163
+ */
164
+ since: number;
165
+ /**
166
+ * Icon between year and copyright info.
167
+ */
168
+ icon: {
169
+ /**
170
+ * icon name, i-xxx
171
+ */
172
+ name: string;
173
+ animated: boolean;
174
+ color: string;
175
+ url: string;
176
+ title: string;
177
+ };
178
+ /**
179
+ * Powered by valaxy & valaxy-theme-${name}, default is yun
180
+ */
181
+ powered: boolean;
182
+ /**
183
+ * Chinese Users | 中国用户
184
+ * 备案 ICP
185
+ * 国内用户需要在网站页脚展示备案 ICP 号
186
+ * https://beian.miit.gov.cn/
187
+ */
188
+ beian: {
189
+ enable: boolean;
190
+ /**
191
+ * 苏ICP备xxxxxxxx号
192
+ */
193
+ icp: string;
194
+ };
195
+ };
196
+ /**
197
+ * post card types
198
+ */
199
+ types: Record<string, {
200
+ color: string;
201
+ icon: string;
202
+ }>;
203
+ }
204
+
205
+ declare const valaxyConfigSymbol: InjectionKey<ComputedRef<ValaxyConfig<ThemeConfig>>>;
206
+ declare const valaxyConfigRef: vue.ShallowRef<ValaxyConfig<ValaxyThemeConfig>>;
207
+ declare function initConfig(): ComputedRef<ValaxyConfig<ValaxyThemeConfig>>;
208
+ declare function useConfig(): ComputedRef<ValaxyConfig<ThemeConfig>>;
209
+ /**
210
+ * getThemeConfig
211
+ * @returns
212
+ */
213
+ declare function useThemeConfig(): ComputedRef<ThemeConfig>;
214
+
215
+ interface ParentCategory {
216
+ total: number;
217
+ children: Categories;
196
218
  }
197
- interface ValaxyServerOptions {
198
- onConfigReload?: (newConfig: ValaxyConfig, config: ValaxyConfig) => void;
219
+ interface PostCategory {
220
+ total: number;
221
+ posts: Post[];
199
222
  }
223
+ declare type Category = ParentCategory | PostCategory;
224
+ declare type Categories = Map<string, Category>;
225
+ /**
226
+ * get categories from posts
227
+ * @returns
228
+ */
229
+ declare function useCategory(): ParentCategory;
230
+
231
+ /**
232
+ * get post list
233
+ * todo: use vue provide/inject to global
234
+ * @param params
235
+ * @returns
236
+ */
237
+ declare function usePostList(params?: {
238
+ type?: string;
239
+ }): vue.ComputedRef<Post[]>;
240
+ /**
241
+ * get prev and next post
242
+ * @param path
243
+ * @returns
244
+ */
245
+ declare function usePrevNext(path?: string): vue.ComputedRef<Post | null>[];
246
+ /**
247
+ * get type card property
248
+ * todo: test reactive
249
+ */
250
+ declare function usePostProperty(type?: string): {
251
+ color: string;
252
+ icon: string;
253
+ styles: {};
254
+ } | {
255
+ color: string;
256
+ icon: string;
257
+ styles: vue.ComputedRef<StyleValue>;
258
+ };
259
+
260
+ declare type Tags = Map<string, {
261
+ count: number;
262
+ }>;
263
+ /**
264
+ * get utils about tags
265
+ */
266
+ declare function useTags(): {
267
+ tags: Tags;
268
+ getTagStyle: (count: number) => {
269
+ '--yun-tag-color': string;
270
+ fontSize: string;
271
+ };
272
+ };
273
+ /**
274
+ * get tag map
275
+ * @returns
276
+ */
277
+ declare function useTag(): Tags;
278
+
279
+ declare function useFrontmatter(): vue.ComputedRef<Post>;
280
+ /**
281
+ * get full url
282
+ */
283
+ declare function useFullUrl(): vue.ComputedRef<string>;
284
+
285
+ /**
286
+ * use katex css cdn
287
+ */
288
+ declare function useKatex(): void;
289
+
290
+ /**
291
+ * trigger show invisible element
292
+ * @param target
293
+ * @returns
294
+ */
295
+ declare function useInvisibleElement(target: Ref<HTMLElement>): {
296
+ show: () => void;
297
+ };
298
+
299
+ declare const isDark: vue.WritableComputedRef<boolean>;
300
+ declare const toggleDark: (value?: boolean | undefined) => boolean;
301
+
302
+ declare function useLayout(layout: string): vue.ComputedRef<boolean>;
303
+
304
+ /**
305
+ * use MetingJS and Aplayer
306
+ * https://github.com/MoePlayer/APlayer
307
+ * https://github.com/metowolf/MetingJS
308
+ */
309
+ declare function useAplayer(): void;
310
+
311
+ /**
312
+ * You can use href="#" to back to top
313
+ * @description 你可以使用它来编写自己的 backToTop
314
+ */
315
+ declare function useBackToTop(options?: {
316
+ /**
317
+ * show backToTop button, when height > offset
318
+ */
319
+ offset: number;
320
+ }): {
321
+ percentage: vue.Ref<number>;
322
+ show: vue.Ref<boolean>;
323
+ };
324
+
325
+ declare function useCodePen(): void;
326
+
327
+ declare function useActiveSidebarLinks(): void;
328
+
329
+ declare function useWaline(options?: {}): void;
330
+
331
+ /**
332
+ * 生成介于 min 与 max 之间的随机数
333
+ * @returns
334
+ */
335
+ declare function random(min: number, max: number): number;
336
+ /**
337
+ * wrap node
338
+ * @param className
339
+ */
340
+ declare function wrap(el: HTMLElement, className: string): void;
341
+ /**
342
+ * 包裹表格,添加 class 以控制 table 样式
343
+ */
344
+ declare const wrapTable: (container?: HTMLElement | Document) => void;
200
345
 
201
- declare function createServer(options: ResolvedValaxyOptions, viteConfig?: InlineConfig, serverOptions?: ValaxyServerOptions): Promise<vite.ViteDevServer>;
346
+ /**
347
+ * use dayjs format date
348
+ * @param date
349
+ * @param template
350
+ * @returns
351
+ */
352
+ declare function formatDate(date: string | number | Date, template?: string): string;
353
+ /**
354
+ * sort posts by date
355
+ * @param posts
356
+ * @param desc
357
+ */
358
+ declare function sortByDate(posts: Post[], desc?: boolean): Post[];
202
359
 
203
- export { createServer };
360
+ export { Categories, Category, ParentCategory, Post, PostCategory, Tags, formatDate, initConfig, isDark, random, sortByDate, toggleDark, useActiveSidebarLinks, useAplayer, useBackToTop, useCategory, useCodePen, useConfig, useFrontmatter, useFullUrl, useInvisibleElement, useKatex, useLayout, usePostList, usePostProperty, usePrevNext, useTag, useTags, useThemeConfig, useWaline, valaxyConfigRef, valaxyConfigSymbol, wrap, wrapTable };