twikoo-func 1.7.9 → 1.7.10

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 (2) hide show
  1. package/package.json +1 -1
  2. package/utils/import.js +36 -11
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "twikoo-func",
3
- "version": "1.7.9",
3
+ "version": "1.7.10",
4
4
  "description": "A simple comment system.",
5
5
  "author": "imaegoo <hello@imaegoo.com> (https://github.com/imaegoo)",
6
6
  "license": "MIT",
package/utils/import.js CHANGED
@@ -3,6 +3,41 @@ const { getMarked, getDomPurify, getMd5 } = require('./lib')
3
3
  const marked = getMarked()
4
4
  const md5 = getMd5()
5
5
 
6
+ const ARRAY_FIELDS = ['like', 'ups', 'downs']
7
+
8
+ const parseJsonArrayField = (value) => {
9
+ if (Array.isArray(value)) return value
10
+ if (typeof value !== 'string') return value
11
+ const trimmed = value.trim()
12
+ if (!trimmed.startsWith('[')) return value
13
+ try {
14
+ const parsed = JSON.parse(trimmed)
15
+ return Array.isArray(parsed) ? parsed : value
16
+ } catch (e) {
17
+ return value
18
+ }
19
+ }
20
+
21
+ const normalizeTwikooComment = (comment) => {
22
+ const parsed = { ...comment }
23
+ if (comment._id && comment._id.$oid) {
24
+ // 解决 id 历史数据问题
25
+ parsed._id = comment._id.$oid
26
+ }
27
+ if (comment.pid === null) {
28
+ delete parsed.pid
29
+ }
30
+ if (comment.rid === null) {
31
+ delete parsed.rid
32
+ }
33
+ for (const field of ARRAY_FIELDS) {
34
+ if (field in parsed) {
35
+ parsed[field] = parseJsonArrayField(parsed[field])
36
+ }
37
+ }
38
+ return parsed
39
+ }
40
+
6
41
  const fn = {
7
42
  // 兼容 Leancloud 两种 JSON 导出格式
8
43
  jsonParse (content) {
@@ -240,17 +275,7 @@ const fn = {
240
275
  log(`共 ${arr.length} 条评论`)
241
276
  for (const comment of arr) {
242
277
  try {
243
- const parsed = comment
244
- if (comment._id.$oid) {
245
- // 解决 id 历史数据问题
246
- parsed._id = comment._id.$oid
247
- }
248
- if (comment.pid === null) {
249
- delete comment.pid
250
- }
251
- if (comment.rid === null) {
252
- delete comment.rid
253
- }
278
+ const parsed = normalizeTwikooComment(comment)
254
279
  comments.push(parsed)
255
280
  log(`${comment._id} 解析成功`)
256
281
  } catch (e) {