@waline/client 2.3.1 → 2.3.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@waline/client",
3
- "version": "2.3.1",
3
+ "version": "2.3.2",
4
4
  "description": "client for waline comment system",
5
5
  "keywords": [
6
6
  "valine",
@@ -405,9 +405,7 @@ export default defineComponent({
405
405
  if (
406
406
  (requiredMeta.indexOf('mail') > -1 && !comment.mail) ||
407
407
  (comment.mail &&
408
- !/^\w(?:[\w._-]*\w)?@(?:\w(?:[\w-]*\w)?\.){0,2}\w+$/.exec(
409
- comment.mail
410
- ))
408
+ !/^\w(?:[\w._-]*\w)?@(?:\w(?:[\w-]*\w)?\.)*\w+$/.exec(comment.mail))
411
409
  ) {
412
410
  inputRefs.value.mail?.focus();
413
411
  return alert(locale.value.mailError);
@@ -79,119 +79,128 @@ import type {
79
79
  WalineImageUploader,
80
80
  WalineLocale,
81
81
  WalineProps,
82
+ WalineMeta,
82
83
  } from '../typings';
83
84
 
84
85
  declare const SHOULD_VALIDATE: boolean;
85
86
  declare const VERSION: string;
86
87
 
87
- export default defineComponent({
88
- name: 'WalineRoot',
88
+ const props = [
89
+ 'serverURL',
90
+ 'path',
91
+ 'meta',
92
+ 'requiredMeta',
93
+ 'dark',
94
+ 'lang',
95
+ 'locale',
96
+ 'pageSize',
97
+ 'wordLimit',
98
+ 'emoji',
99
+ 'login',
100
+ 'highlighter',
101
+ 'texRenderer',
102
+ 'imageUploader',
103
+ 'copyright',
104
+ ];
105
+
106
+ const propsWithValidate = {
107
+ serverURL: {
108
+ type: String,
109
+ required: true,
110
+ },
89
111
 
90
- components: {
91
- CommentBox,
92
- CommentCard,
93
- LoadingIcon,
112
+ path: {
113
+ type: String,
114
+ required: true,
94
115
  },
95
116
 
96
- props: {
97
- serverURL: {
98
- type: String,
99
- required: true,
100
- },
101
-
102
- path: {
103
- type: String,
104
- required: true,
105
- },
106
-
107
- meta: {
108
- type: Array,
109
- ...(SHOULD_VALIDATE
110
- ? {
111
- validator: (value: unknown): boolean =>
112
- Array.isArray(value) &&
113
- value.every((item) => ['nick', 'mail', 'link'].includes(item)),
114
- }
115
- : {}),
116
- },
117
-
118
- requiredMeta: {
119
- type: Array,
120
- ...(SHOULD_VALIDATE
121
- ? {
122
- validator: (value: unknown): boolean =>
123
- Array.isArray(value) &&
124
- value.every((item) => ['nick', 'mail', 'link'].includes(item)),
125
- }
126
- : {}),
127
- },
117
+ meta: {
118
+ type: Array as PropType<WalineMeta[]>,
119
+ default: (): WalineMeta[] => ['nick', 'mail', 'link'],
120
+ validator: (value: unknown): boolean =>
121
+ Array.isArray(value) &&
122
+ value.every((item) => ['nick', 'mail', 'link'].includes(item)),
123
+ },
128
124
 
129
- dark: [String, Boolean],
125
+ requiredMeta: {
126
+ type: Array,
127
+ default: (): WalineMeta[] => [],
128
+ validator: (value: unknown): boolean =>
129
+ Array.isArray(value) &&
130
+ value.every((item) => ['nick', 'mail', 'link'].includes(item)),
131
+ },
130
132
 
131
- lang: {
132
- type: String,
133
- ...(SHOULD_VALIDATE
134
- ? {
135
- validator: (value: unknown): boolean =>
136
- Object.keys(defaultLocales).includes(value as string),
137
- }
138
- : {}),
139
- },
140
-
141
- locale: Object as PropType<Partial<WalineLocale>>,
142
-
143
- pageSize: Number,
144
-
145
- wordLimit: {
146
- type: [Number, Array] as PropType<number | [number, number]>,
147
- // default: 0,
148
- ...(SHOULD_VALIDATE
149
- ? {
150
- validator: (value: unknown): boolean =>
151
- typeof value === 'number' ||
152
- (Array.isArray(value) &&
153
- value.length === 2 &&
154
- value.every((item) => typeof item === 'number')),
155
- }
156
- : {}),
157
- },
158
-
159
- emoji: {
160
- type: [Array, Boolean] as PropType<(string | WalineEmojiInfo)[] | false>,
161
- ...(SHOULD_VALIDATE
162
- ? {
163
- validator: (value: unknown): boolean =>
164
- value === false ||
165
- (Array.isArray(value) &&
166
- value.every(
167
- (item) =>
168
- typeof item === 'string' ||
169
- (typeof item === 'object' &&
170
- typeof item.name === 'string' &&
171
- typeof item.folder === 'string' &&
172
- typeof item.icon === 'string' &&
173
- Array.isArray(item.items) &&
174
- (item.items as unknown[]).every(
175
- (icon) => typeof icon === 'string'
176
- ))
177
- )),
178
- }
179
- : {}),
180
- },
133
+ dark: [String, Boolean],
181
134
 
182
- login: String as PropType<'enable' | 'disable' | 'force'>,
135
+ lang: {
136
+ type: String,
137
+ default: 'zh-CN',
138
+ validator: (value: unknown): boolean =>
139
+ Object.keys(defaultLocales).includes(value as string),
140
+ },
183
141
 
184
- highlighter: Function as PropType<WalineHighlighter>,
142
+ locale: Object as PropType<Partial<WalineLocale>>,
185
143
 
186
- imageUploader: [Function, Boolean] as PropType<WalineImageUploader | false>,
144
+ pageSize: { type: Number, default: 10 },
187
145
 
188
- texRenderer: [Function, Boolean] as PropType<WalineTexRenderer | false>,
146
+ wordLimit: {
147
+ type: [Number, Array] as PropType<number | [number, number]>,
148
+ validator: (value: unknown): boolean =>
149
+ typeof value === 'number' ||
150
+ (Array.isArray(value) &&
151
+ value.length === 2 &&
152
+ value.every((item) => typeof item === 'number')),
153
+ },
189
154
 
190
- copyright: Boolean,
155
+ emoji: {
156
+ type: [Array, Boolean] as PropType<(string | WalineEmojiInfo)[] | false>,
157
+ validator: (value: unknown): boolean =>
158
+ value === false ||
159
+ (Array.isArray(value) &&
160
+ value.every(
161
+ (item) =>
162
+ typeof item === 'string' ||
163
+ (typeof item === 'object' &&
164
+ typeof item.name === 'string' &&
165
+ typeof item.folder === 'string' &&
166
+ typeof item.icon === 'string' &&
167
+ Array.isArray(item.items) &&
168
+ (item.items as unknown[]).every(
169
+ (icon) => typeof icon === 'string'
170
+ ))
171
+ )),
191
172
  },
192
173
 
174
+ login: String as PropType<'enable' | 'disable' | 'force'>,
175
+
176
+ highlighter: Function as PropType<WalineHighlighter>,
177
+
178
+ imageUploader: {
179
+ type: [Function, Boolean] as PropType<WalineImageUploader | false>,
180
+ default: undefined,
181
+ },
182
+
183
+ texRenderer: {
184
+ type: [Function, Boolean] as PropType<WalineTexRenderer | false>,
185
+ default: undefined,
186
+ },
187
+
188
+ copyright: { type: Boolean, default: true },
189
+ };
190
+
191
+ export default defineComponent({
192
+ name: 'WalineRoot',
193
+
194
+ components: {
195
+ CommentBox,
196
+ CommentCard,
197
+ LoadingIcon,
198
+ },
199
+
200
+ props: SHOULD_VALIDATE ? propsWithValidate : props,
201
+
193
202
  setup(props) {
194
- const config = computed(() => getConfig(props as WalineProps));
203
+ const config = computed(() => getConfig(props as unknown as WalineProps));
195
204
 
196
205
  const userInfo = useUserInfo();
197
206
 
@@ -274,7 +283,7 @@ export default defineComponent({
274
283
 
275
284
  provide('config', config);
276
285
 
277
- watch(() => props.path, refresh);
286
+ watch(() => (props as unknown as WalineProps).path, refresh);
278
287
 
279
288
  onMounted(() => refresh());
280
289