mn-docs-mcp 1.0.0 → 1.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.
Files changed (77) hide show
  1. package/.trae/documents/libmn_cleanup_plan.md +51 -0
  2. package/.trae/documents/libmn_doc_restructure_plan.md +140 -0
  3. package/.trae/documents/libmn_indentation_plan.md +116 -0
  4. package/.trae/documents/libmn_title_hierarchy_plan.md +91 -0
  5. package/README.md +9 -7
  6. package/next-env.d.ts +6 -0
  7. package/next.config.mjs +14 -0
  8. package/package.json +25 -10
  9. package/postcss.config.mjs +7 -0
  10. package/scripts/sync-definitions.mjs +33 -0
  11. package/source.config.ts +5 -0
  12. package/src/app/[[...slug]]/page.tsx +259 -0
  13. package/src/app/api/search/route.ts +6 -0
  14. package/src/app/global.css +81 -0
  15. package/src/app/layout.tsx +33 -0
  16. package/src/components/JsbApiFooter.tsx +251 -0
  17. package/src/content/docs/{guides/contributing.md → contributing.md} +27 -2
  18. package/src/content/docs/{guides/cookbook → cookbook}/addon-settings.md +2 -2
  19. package/src/content/docs/{guides/cookbook → cookbook}/embed-webview-panel.md +2 -2
  20. package/src/content/docs/cookbook/meta.json +13 -0
  21. package/src/content/docs/{guides/cookbook → cookbook}/network-api-call.md +2 -2
  22. package/src/content/docs/{guides/cookbook → cookbook}/webview-bidirectional-js.md +1 -1
  23. package/src/content/docs/guides/meta.json +14 -0
  24. package/src/content/docs/guides/mindmap-and-selection.md +1 -1
  25. package/src/content/docs/guides/native-ui.md +2 -2
  26. package/src/content/docs/guides/network-requests.md +1 -1
  27. package/src/content/docs/guides/notes-and-database.md +1 -1
  28. package/src/content/docs/guides/storage-and-files.md +1 -1
  29. package/src/content/docs/index.mdx +13 -38
  30. package/src/content/docs/libmn/data-converter.md +1572 -0
  31. package/src/content/docs/libmn/frame.md +279 -0
  32. package/src/content/docs/libmn/headers.md +234 -0
  33. package/src/content/docs/libmn/index.md +60 -0
  34. package/src/content/docs/libmn/internal-exposed.md +46 -0
  35. package/src/content/docs/libmn/locale.md +307 -0
  36. package/src/content/docs/libmn/menu.md +77 -0
  37. package/src/content/docs/libmn/meta.json +27 -0
  38. package/src/content/docs/libmn/mnbutton.md +966 -0
  39. package/src/content/docs/libmn/mncomment.md +533 -0
  40. package/src/content/docs/libmn/mnconnection.md +717 -0
  41. package/src/content/docs/libmn/mndocument.md +309 -0
  42. package/src/content/docs/libmn/mnextension-panel.md +340 -0
  43. package/src/content/docs/libmn/mnnote.md +533 -0
  44. package/src/content/docs/libmn/mnnotebook.md +725 -0
  45. package/src/content/docs/libmn/mnutil.md +2936 -0
  46. package/src/content/docs/libmn/mnwebview.md +693 -0
  47. package/src/content/docs/libmn/mustache.md +65 -0
  48. package/src/content/docs/libmn/response.md +352 -0
  49. package/src/content/docs/libmn/runtime-assets.md +64 -0
  50. package/src/content/docs/libmn/runtime-web-view-host.md +77 -0
  51. package/src/content/docs/libmn/runtime.md +178 -0
  52. package/src/content/docs/libmn/vendor-globals.md +34 -0
  53. package/src/content/docs/meta.json +11 -0
  54. package/src/content/docs/reference/foundation/meta.json +4 -0
  55. package/src/content/docs/reference/foundation/ns-user-defaults.md +1 -1
  56. package/src/content/docs/reference/global/meta.json +18 -0
  57. package/src/content/docs/reference/marginnote/mb-book-note.md +50 -53
  58. package/src/content/docs/reference/marginnote/meta.json +18 -0
  59. package/src/content/docs/reference/marginnote/study-controller.md +17 -17
  60. package/src/content/docs/reference/meta.json +14 -0
  61. package/src/content/docs/reference/quartzcore/meta.json +4 -0
  62. package/src/content/docs/reference/uikit/meta.json +4 -0
  63. package/src/content/docs/reference/uikit/uiwebview.md +2 -2
  64. package/src/content/docs/reference/utility/meta.json +4 -0
  65. package/src/lib/layout.tsx +31 -0
  66. package/src/lib/source.ts +7 -0
  67. package/tsconfig.json +42 -3
  68. package/astro.config.mjs +0 -130
  69. package/src/client/jsb-api-footer.ts +0 -242
  70. package/src/components/Footer.astro +0 -57
  71. package/src/components/Search.astro +0 -330
  72. package/src/content.config.ts +0 -7
  73. package/src/styles/starlight-overrides.css +0 -23
  74. /package/src/content/docs/{guides/cookbook → cookbook}/append-selection-as-comment.md +0 -0
  75. /package/src/content/docs/{guides/cookbook → cookbook}/batch-rename-notes.md +0 -0
  76. /package/src/content/docs/{guides/cookbook → cookbook}/export-notebook.md +0 -0
  77. /package/src/content/docs/{guides/cookbook → cookbook}/focus-note-in-mindmap.md +0 -0
@@ -0,0 +1,1572 @@
1
+ ---
2
+ title: DataConverter
3
+ description: LibMN中的DataConverter对象API文档。
4
+ ---
5
+
6
+ `DataConverter`是用于数据转换的工具对象,提供编码、压缩、二进制转换、格式桥接和文件类型识别等功能。
7
+
8
+ ## 类成员(Class members)
9
+
10
+ ### 属性
11
+
12
+ | 字段名 | 类型 | 说明 |
13
+ |:-------|:---|:-----|
14
+ | `errorLog` | `Array<{ source: string; time: string; error: string|{ message: string; detail?: string }; info?: string }>` | 错误日志缓存,记录压缩、解码、文件识别等失败信息。 |
15
+
16
+ ### 方法
17
+
18
+ #### `addErrorLog`
19
+
20
+ ##### 类型
21
+
22
+ ```ts
23
+ static addErrorLog(error: string|{ message: string; detail?: string },source?: string,info?: string): void
24
+ ```
25
+
26
+ ##### 说明
27
+
28
+ 当某个转换方法捕获到异常时,用这个方法统一记录错误并提示用户。与直接`console.log`不同,它会同时写入`errorLog`并通过`MNUtil.copyJSON`把日志复制到剪贴板,方便直接上报。
29
+
30
+ ##### 参数
31
+
32
+ | 参数名 | 类型 | 必填 | 说明 |
33
+ |:---|:---|:---|:---|
34
+ | `error` | `string\|{ message: string; detail?: string }` | 是 | 错误信息或错误对象。 |
35
+ | `source` | `string` | 否 | 错误来源标识,默认`DataConverter`。 |
36
+ | `info` | `string` | 否 | 附加上下文信息。 |
37
+
38
+ ##### 返回值
39
+
40
+ - 类型:`void`
41
+ - 语义:方法执行后不返回值。
42
+ #### `customBtoa`
43
+
44
+ ##### 类型
45
+
46
+ ```ts
47
+ static customBtoa(str: string): string
48
+ ```
49
+
50
+ ##### 说明
51
+
52
+ 使用内置字符表把字符串编码为Base64。该实现不依赖运行环境atob和btoa,适合JSCore兼容场景。
53
+
54
+ ##### 参数
55
+
56
+ | 参数名 | 类型 | 必填 | 说明 |
57
+ |:-------|:---------|:-----|:-----------|
58
+ | `str` | `string` | 是 | 待编码的原始字符串。 |
59
+
60
+ ##### 返回值
61
+
62
+ - 类型:`string`
63
+ - 语义:返回Base64编码结果。
64
+
65
+ #### `utf8_to_b64`
66
+
67
+ ##### 类型
68
+
69
+ ```ts
70
+ static utf8_to_b64(str: string): string
71
+ ```
72
+
73
+ ##### 说明
74
+
75
+ 先按UTF-8处理文本再输出Base64结果。输入含中文等多字节字符时可避免直接编码导致乱码。
76
+
77
+ ##### 参数
78
+
79
+ | 参数名 | 类型 | 必填 | 说明 |
80
+ |:-------|:---------|:-----|:-----------|
81
+ | `str` | `string` | 是 | 待编码的原始字符串。 |
82
+
83
+ ##### 返回值
84
+
85
+ - 类型:`string`
86
+ - 语义:返回按UTF-8处理后的Base64编码结果。
87
+
88
+ #### `compressAndEncode`
89
+
90
+ ##### 类型
91
+
92
+ ```ts
93
+ static compressAndEncode(jsonObj: object,type?: 'pako'|'lz-string'): string|undefined
94
+ ```
95
+
96
+ ##### 说明
97
+
98
+ 把对象序列化后压缩并编码为Base64字符串。压缩或编码失败时返回undefined并记录错误日志。
99
+
100
+ ##### 参数
101
+
102
+ | 参数名 | 类型 | 必填 | 说明 |
103
+ |:----------|:---------|:--------------|:-------------|
104
+ | `jsonObj` | `object` | 是 | 待压缩并编码的数据对象。 |
105
+ | `type` | `'pako'\|'lz-string'` | 否 | 压缩算法类型,默认`pako`。 |
106
+
107
+ ##### 返回值
108
+
109
+ - 类型:`string|undefined`
110
+ - 语义:成功返回`string`,失败返回`undefined`。
111
+
112
+ #### `decodeAndDecompress`
113
+
114
+ ##### 类型
115
+
116
+ ```ts
117
+ static decodeAndDecompress(base64: string,type?: 'pako'|'lz-string'): string|undefined
118
+ ```
119
+
120
+ ##### 说明
121
+
122
+ 把压缩Base64文本解码并还原为原始字符串。输入格式不合法或算法不匹配时返回undefined并记录错误日志。
123
+
124
+ ##### 参数
125
+
126
+ | 参数名 | 类型 | 必填 | 说明 |
127
+ |:---------|:---------|:--------------|:-------------|
128
+ | `base64` | `string` | 是 | 待解码的压缩Base64文本。 |
129
+ | `type` | `'pako'\|'lz-string'` | 否 | 解压算法类型,需与编码阶段一致。 |
130
+
131
+ ##### 返回值
132
+
133
+ - 类型:`string|undefined`
134
+ - 语义:成功返回`string`,失败返回`undefined`。
135
+
136
+ #### `atob`
137
+
138
+ ##### 类型
139
+
140
+ ```ts
141
+ static atob(base64Str: string): string
142
+ ```
143
+
144
+ ##### 说明
145
+
146
+ Base64解码为字符串。
147
+
148
+ ##### 参数
149
+
150
+ | 参数名 | 类型 | 必填 | 说明 |
151
+ |:------------|:---------|:-----|:-------------|
152
+ | `base64Str` | `string` | 是 | Base64文本。 |
153
+
154
+ ##### 返回值
155
+
156
+ - 类型:`string`
157
+ - 语义:返回Base64解码后的字符串。
158
+
159
+ #### `btoa`
160
+
161
+ ##### 类型
162
+
163
+ ```ts
164
+ static btoa(input: string|Uint8Array): string
165
+ ```
166
+
167
+ ##### 说明
168
+
169
+ 字符串或Uint8Array转Base64编码。
170
+
171
+ ##### 参数
172
+
173
+ | 参数名 | 类型 | 必填 | 说明 |
174
+ |:--------|:---------|:-------------|:-----|
175
+ | `input` | `string\|Uint8Array` | 是 | 要编码的字符串或Uint8Array。 |
176
+
177
+ ##### 返回值
178
+
179
+ - 类型:`string`
180
+ - 语义:返回Base64编码后的字符串。
181
+
182
+ #### `rgbaToHex`
183
+
184
+ ##### 类型
185
+
186
+ ```ts
187
+ static rgbaToHex(rgba: { r: number; g: number; b: number; a: number },includeAlpha?: boolean,toUpperCase?: boolean): string
188
+ ```
189
+
190
+ ##### 说明
191
+
192
+ - 把`{ r, g, b, a }`颜色对象转换成十六进制字符串,适合在UI配置里直接使用。
193
+
194
+ - 和`rgbaArrayToHexArray`的区别是这里只处理单个颜色对象。
195
+ ##### 参数
196
+
197
+ | 参数名 | 类型 | 必填 | 说明 |
198
+ |:---|:---|:---|:---|
199
+ | `rgba` | `{ r: number; g: number; b: number; a: number }` | 是 | RGBA颜色对象,包含r、g、b、a四个通道。 |
200
+ | `includeAlpha` | `boolean` | 否 | 是否在结果中包含alpha通道。 |
201
+ | `toUpperCase` | `boolean` | 否 | 是否把十六进制字母输出为大写。 |
202
+
203
+ ##### 返回值
204
+
205
+ - 类型:`string`
206
+ - 语义:返回十六进制颜色字符串,默认包含`#`前缀。
207
+
208
+ #### `rgbaArrayToHexArray`
209
+
210
+ ##### 类型
211
+
212
+ ```ts
213
+ static rgbaArrayToHexArray(rgbaArray: Array<{ r: number; g: number; b: number; a: number }>,includeAlpha?: boolean,toUpperCase?: boolean): string[]
214
+ ```
215
+
216
+ ##### 说明
217
+
218
+ - 批量把RGBA数组转换成十六进制颜色数组,常用于一次生成主题色板。
219
+
220
+ ##### 参数
221
+
222
+ | 参数名 | 类型 | 必填 | 说明 |
223
+ |:---|:---|:---|:---|
224
+ | `rgbaArray` | `Array<{ r: number; g: number; b: number; a: number }>` | 是 | 待转换的RGBA颜色对象数组。 |
225
+ | `includeAlpha` | `boolean` | 否 | 是否在结果中包含alpha通道。 |
226
+ | `toUpperCase` | `boolean` | 否 | 是否把十六进制字母输出为大写。 |
227
+
228
+ ##### 返回值
229
+
230
+ - 类型:`string[]`
231
+ - 语义:返回与输入顺序一致的十六进制颜色字符串数组。
232
+
233
+ #### `hexToRgb`
234
+
235
+ ##### 类型
236
+
237
+ ```ts
238
+ static hexToRgb(hex: string): [number,number,number]
239
+ ```
240
+
241
+ ##### 说明
242
+
243
+ - 把`#RRGGBB`颜色字符串还原为`[r,g,b]`数组。
244
+
245
+ - 和`parseHexColor`相比,它不处理透明度,只读前三个颜色通道。
246
+ ##### 参数
247
+
248
+ | 参数名 | 类型 | 必填 | 说明 |
249
+ |:-------|:---------|:-----|:-----------|
250
+ | `hex` | `string` | 是 | 十六进制颜色字符串,可含`#`前缀。 |
251
+
252
+ ##### 返回值
253
+
254
+ - 类型:`[number,number,number]`
255
+ - 语义:返回`[r,g,b]`数组,每项范围为0到255。
256
+
257
+ #### `pngToJpg`
258
+
259
+ ##### 类型
260
+
261
+ ```ts
262
+ static pngToJpg(pngData: NSData,quality?: number): NSData
263
+ ```
264
+
265
+ ##### 说明
266
+
267
+ - 把PNG格式的`NSData`转换为JPEG二进制数据。
268
+
269
+ - 相比`compressImageToJpg`,这个方法只接收PNG数据,不做输入类型分派。
270
+ ##### 参数
271
+
272
+ | 参数名 | 类型 | 必填 | 说明 |
273
+ |:----------|:---------|:-----|:---------------------|
274
+ | `pngData` | `NSData` | 是 | 待转换的PNG二进制数据。 |
275
+ | `quality` | `number` | 否 | 压缩质量,建议0到1。 |
276
+
277
+ ##### 返回值
278
+
279
+ - 类型:`NSData`
280
+ - 语义:返回JPEG格式的`NSData`二进制数据。
281
+
282
+ #### `compressImageToJpg`
283
+
284
+ ##### 类型
285
+
286
+ ```ts
287
+ static compressImageToJpg(imageData: string|NSData|UIImage,quality?: number): NSData|undefined
288
+ ```
289
+
290
+ ##### 说明
291
+
292
+ - 把字符串Base64、`NSData`或`UIImage`统一压缩成JPEG数据。
293
+
294
+ - 当你无法确定上游图片类型时优先用它,而不是直接调用`pngToJpg`。
295
+ ##### 参数
296
+
297
+ | 参数名 | 类型 | 必填 | 说明 |
298
+ |:------------|:---------|:-------|:---------------------|
299
+ | `imageData` | `string\|NSData\|UIImage` | 是 | 图片数据。 |
300
+ | `quality` | `number` | 否 | 压缩质量,建议0到1。 |
301
+
302
+ ##### 返回值
303
+
304
+ - 类型:`NSData\|undefined`
305
+ - 语义:成功返回`NSData`,失败返回`undefined`。
306
+
307
+ #### `imageFromBase64`
308
+
309
+ ##### 类型
310
+
311
+ ```ts
312
+ static imageFromBase64(base64: string,type?: 'png'|'jpg'|'jpeg'|'pdf'): UIImage
313
+ ```
314
+
315
+ ##### 说明
316
+
317
+ - 把Base64字符串转换为`UIImage`。
318
+
319
+ - 如果你只需要二进制,不要走这个方法,改用`dataFromBase64`更直接。
320
+ ##### 参数
321
+
322
+ | 参数名 | 类型 | 必填 | 说明 |
323
+ |:---------|:---------|:------|:-------------|
324
+ | `base64` | `string` | 是 | Base64文本。 |
325
+ | `type` | `'png'\|'jpg'\|'jpeg'\|'pdf'` | 否 | 图片类型,默认为png。 |
326
+
327
+ ##### 返回值
328
+
329
+ - 类型:`UIImage`
330
+ - 语义:返回可直接渲染的`UIImage`对象。
331
+
332
+ #### `dataFromBase64`
333
+
334
+ ##### 类型
335
+
336
+ ```ts
337
+ static dataFromBase64(base64: string,type?: 'pdf'|'png'|'jpg'|'jpeg'): NSData
338
+ ```
339
+
340
+ ##### 说明
341
+
342
+ - 把Base64文本或DataURL转换为`NSData`。
343
+
344
+ - 它会根据`type`补齐不同MIME前缀,适合统一处理pdf、png、jpeg。
345
+ ##### 参数
346
+
347
+ | 参数名 | 类型 | 必填 | 说明 |
348
+ |:---------|:---------|:------|:-------------|
349
+ | `base64` | `string` | 是 | Base64文本。 |
350
+ | `type` | `'pdf'\|'png'\|'jpg'\|'jpeg'` | 否 | 数据类型,默认为pdf。 |
351
+
352
+ ##### 返回值
353
+
354
+ - 类型:`NSData`
355
+ - 语义:返回解码后的`NSData`二进制数据。
356
+
357
+ #### `genFrame`
358
+
359
+ ##### 类型
360
+
361
+ ```ts
362
+ static genFrame(x: number,y: number,width: number,height: number): { x: number; y: number; width: number; height: number }
363
+ ```
364
+
365
+ ##### 说明
366
+
367
+ - 生成`{x,y,width,height}`结构体供原生接口调用。
368
+
369
+ ##### 参数
370
+
371
+ | 参数名 | 类型 | 必填 | 说明 |
372
+ |:---------|:---------|:-----|:-----------|
373
+ | `x` | `number` | 是 | 矩形左上角x坐标。 |
374
+ | `y` | `number` | 是 | 矩形左上角y坐标。 |
375
+ | `width` | `number` | 是 | 矩形宽度。 |
376
+ | `height` | `number` | 是 | 矩形高度。 |
377
+
378
+ ##### 返回值
379
+
380
+ - 类型:`{ x: number; y: number; width: number; height: number }`
381
+ - 语义:返回`{ x, y, width, height }`矩形对象。
382
+
383
+ #### `parseWinRect`
384
+
385
+ ##### 类型
386
+
387
+ ```ts
388
+ static parseWinRect(winRect: string): { x: number; y: number; width: number; height: number }
389
+ ```
390
+
391
+ ##### 说明
392
+
393
+ - 把原生窗口矩形字符串解析成标准frame对象。
394
+
395
+ - 它会把字符串中的花括号和空格清理后再转数值。
396
+ ##### 参数
397
+
398
+ | 参数名 | 类型 | 必填 | 说明 |
399
+ |:----------|:---------|:-----|:-----------|
400
+ | `winRect` | `string` | 是 | 原生窗口矩形字符串,常见格式为`{{x,y},{w,h}}`。 |
401
+
402
+ ##### 返回值
403
+
404
+ - 类型:`{ x: number; y: number; width: number; height: number }`
405
+ - 语义:返回解析后的`{ x, y, width, height }`对象。
406
+
407
+ #### `convertDate`
408
+
409
+ ##### 类型
410
+
411
+ ```ts
412
+ static convertDate(date: string|number|Date|null|undefined): Date|null
413
+ ```
414
+
415
+ ##### 说明
416
+
417
+ - 把字符串、时间戳或Date对象统一转成`Date`。
418
+
419
+ - 转换失败返回`null`,便于调用方显式判断异常数据。
420
+ ##### 参数
421
+
422
+ | 参数名 | 类型 | 必填 | 说明 |
423
+ |:-------|:---------|:-------|:-----|
424
+ | `date` | `string\|number\|Date\|null\|undefined` | 是 | 要转换的日期值。 |
425
+
426
+ ##### 返回值
427
+
428
+ - 类型:`Date|null`
429
+ - 语义:成功返回`Date`对象,无法解析时返回`null`。
430
+
431
+ #### `convertNsAttrsToFsStats`
432
+
433
+ ##### 类型
434
+
435
+ ```ts
436
+ static convertNsAttrsToFsStats(nsAttrs: Record<string,object|string|number|Date>): {
437
+ dev: number
438
+ ino: number
439
+ mode: number
440
+ nlink: number
441
+ uid: number
442
+ gid: number
443
+ rdev: number
444
+ size: number
445
+ blksize: number
446
+ blocks: number
447
+ atimeMs: number
448
+ mtimeMs: number
449
+ ctimeMs: number
450
+ birthtimeMs: number
451
+ atime: Date
452
+ mtime: Date
453
+ ctime: Date
454
+ birthtime: Date
455
+ _nsFileType?: string
456
+ _nsFileOwnerAccountName?: string
457
+ _nsFileGroupOwnerAccountName?: string
458
+ _nsFileProtectionKey?: string
459
+ _nsFileExtendedAttributes?: object
460
+ isFile: boolean
461
+ isDirectory: boolean
462
+ isSymbolicLink: boolean
463
+ isFIFO: boolean
464
+ isSocket: boolean
465
+ isBlockDevice: boolean
466
+ isCharacterDevice: boolean
467
+ }
468
+ ```
469
+
470
+ ##### 说明
471
+
472
+ - 把`NSFileManager`属性对象映射为接近Node.js`fs.Stats`的结构。
473
+
474
+ ##### 参数
475
+
476
+ | 参数名 | 类型 | 必填 | 说明 |
477
+ |:----------|:-------------------------|:-----|:-----------|
478
+ | `nsAttrs` | `Record<string,object\|string\|number\|Date>` | 是 | NS文件属性对象。 |
479
+
480
+ ##### 返回值
481
+
482
+ - 类型:`{ dev: number; ino: number; mode: number; nlink: number; uid: number; gid: number; rdev: number; size: number; blksize: number; blocks: number; atimeMs: number; mtimeMs: number; ctimeMs: number; birthtimeMs: number; atime: Date; mtime: Date; ctime: Date; birthtime: Date; _nsFileType?: string; _nsFileOwnerAccountName?: string; _nsFileGroupOwnerAccountName?: string; _nsFileProtectionKey?: string; _nsFileExtendedAttributes?: object; isFile: boolean; isDirectory: boolean; isSymbolicLink: boolean; isFIFO: boolean; isSocket: boolean; isBlockDevice: boolean; isCharacterDevice: boolean }`
483
+ - 语义:返回接近Node.js`fs.Stats`格式的文件属性对象。
484
+
485
+ #### `getFileAttributes`
486
+
487
+ ##### 类型
488
+
489
+ ```ts
490
+ static getFileAttributes(path: string): {
491
+ dev: number
492
+ ino: number
493
+ mode: number
494
+ nlink: number
495
+ uid: number
496
+ gid: number
497
+ rdev: number
498
+ size: number
499
+ blksize: number
500
+ blocks: number
501
+ atimeMs: number
502
+ mtimeMs: number
503
+ ctimeMs: number
504
+ birthtimeMs: number
505
+ atime: Date
506
+ mtime: Date
507
+ ctime: Date
508
+ birthtime: Date
509
+ isFile: boolean
510
+ isDirectory: boolean
511
+ isSymbolicLink: boolean
512
+ isFIFO: boolean
513
+ isSocket: boolean
514
+ isBlockDevice: boolean
515
+ isCharacterDevice: boolean
516
+ path: string
517
+ }
518
+ ```
519
+
520
+ ##### 说明
521
+
522
+ - 读取文件属性并返回带`path`字段的stats对象。
523
+
524
+ - 相比直接访问`NSFileManager`,这里已经统一了时间与权限字段格式。
525
+ ##### 参数
526
+
527
+ | 参数名 | 类型 | 必填 | 说明 |
528
+ |:-------|:---------|:-----|:-----------------|
529
+ | `path` | `string` | 是 | 文件路径字符串。 |
530
+
531
+ ##### 返回值
532
+
533
+ - 类型:`{ dev: number; ino: number; mode: number; nlink: number; uid: number; gid: number; rdev: number; size: number; blksize: number; blocks: number; atimeMs: number; mtimeMs: number; ctimeMs: number; birthtimeMs: number; atime: Date; mtime: Date; ctime: Date; birthtime: Date; isFile: boolean; isDirectory: boolean; isSymbolicLink: boolean; isFIFO: boolean; isSocket: boolean; isBlockDevice: boolean; isCharacterDevice: boolean; path: string }`
534
+ - 语义:返回带`path`字段的文件属性对象。
535
+
536
+ #### `isNSNull`
537
+
538
+ ##### 类型
539
+
540
+ ```ts
541
+ static isNSNull(obj: object): boolean
542
+ ```
543
+
544
+ ##### 说明
545
+
546
+ - 判断对象是否是原生`NSNull.new()`实例。
547
+
548
+ - 它用于区分“原生空值对象”和普通`null/undefined`。
549
+ ##### 参数
550
+
551
+ | 参数名 | 类型 | 必填 | 说明 |
552
+ |:-------|:----------|:-----|:-------------|
553
+ | `obj` | `object` | 是 | 待判断对象。 |
554
+
555
+ ##### 返回值
556
+
557
+ - 类型:`boolean`
558
+ - 语义:是`NSNull`实例返回`true`,否则返回`false`。
559
+
560
+ #### `getValidJSON`
561
+
562
+ ##### 类型
563
+
564
+ ```ts
565
+ static getValidJSON(jsonString: string|object,debug?: boolean): object
566
+ ```
567
+
568
+ ##### 说明
569
+
570
+ - 把JSON字符串修复并解析为对象,解析失败返回空对象。
571
+
572
+ - 相比直接`JSON.parse`,它会尝试`jsonrepair`和补括号修复。
573
+ ##### 参数
574
+
575
+ | 参数名 | 类型 | 必填 | 说明 |
576
+ |:-------------|:----------|:---------|:---------------|
577
+ | `jsonString` | `string\|object` | 是 | 待解析的JSON文本或对象。 |
578
+ | `debug` | `boolean` | 否 | 是否在修复失败时输出调试日志。 |
579
+
580
+ ##### 返回值
581
+
582
+ - 类型:`object`
583
+ - 语义:返回解析后的对象,解析失败时返回空对象。
584
+
585
+ #### `parseHexColor`
586
+
587
+ ##### 类型
588
+
589
+ ```ts
590
+ static parseHexColor(hex: string): { color: string; opacity: number }
591
+ ```
592
+
593
+ ##### 说明
594
+
595
+ - 解析`#RRGGBB`或`#RRGGBBAA`并返回颜色与透明度。
596
+
597
+ - 与`hexToRgb`不同,它会保留alpha并转成`opacity`。
598
+ ##### 参数
599
+
600
+ | 参数名 | 类型 | 必填 | 说明 |
601
+ |:-------|:---------|:-----|:-----------|
602
+ | `hex` | `string` | 是 | 十六进制颜色字符串,支持`#RRGGBB`与`#RRGGBBAA`。 |
603
+
604
+ ##### 返回值
605
+
606
+ - 类型:`{ color: string; opacity: number }`
607
+ - 语义:返回颜色与透明度对象,其中`opacity`范围为0到1。
608
+
609
+ #### `hexColorAlpha`
610
+
611
+ ##### 类型
612
+
613
+ ```ts
614
+ static hexColorAlpha(hex: string,alpha?: number): UIColor
615
+ ```
616
+
617
+ ##### 说明
618
+
619
+ - 把十六进制颜色与透明度组合成`UIColor`对象。
620
+
621
+ - 当你已有颜色字符串且只想改透明度时,用它比`hexColor`更直接。
622
+ ##### 参数
623
+
624
+ | 参数名 | 类型 | 必填 | 说明 |
625
+ |:--------|:---------|:-----|:-------------------|
626
+ | `hex` | `string` | 是 | 十六进制颜色字符串。 |
627
+ | `alpha` | `number` | 否 | 透明度,建议0到1。 |
628
+
629
+ ##### 返回值
630
+
631
+ - 类型:`UIColor`
632
+ - 语义:返回应用透明度后的`UIColor`对象。
633
+
634
+ #### `hexColor`
635
+
636
+ ##### 类型
637
+
638
+ ```ts
639
+ static hexColor(hex: string): UIColor
640
+ ```
641
+
642
+ ##### 说明
643
+
644
+ - 把支持alpha的十六进制字符串转换成`UIColor`。
645
+
646
+ ##### 参数
647
+
648
+ | 参数名 | 类型 | 必填 | 说明 |
649
+ |:-------|:---------|:-----|:-----------|
650
+ | `hex` | `string` | 是 | 十六进制颜色字符串。 |
651
+
652
+ ##### 返回值
653
+
654
+ - 类型:`UIColor`
655
+ - 语义:返回解析后的`UIColor`对象。
656
+
657
+ #### `genNSURL`
658
+
659
+ ##### 类型
660
+
661
+ ```ts
662
+ static genNSURL(url: string): NSURL
663
+ ```
664
+
665
+ ##### 说明
666
+
667
+ - 当原生接口要求`NSURL`而你只有字符串时使用它。
668
+ ##### 参数
669
+
670
+ | 参数名 | 类型 | 必填 | 说明 |
671
+ |:-------|:---------|:-----|:------------|
672
+ | `url` | `string` | 是 | 要转换的目标URL字符串。 |
673
+
674
+ ##### 返回值
675
+
676
+ - 类型:`NSURL`
677
+ - 语义:返回可供原生接口直接使用的`NSURL`对象。
678
+
679
+ #### `string2data`
680
+
681
+ ##### 类型
682
+
683
+ ```ts
684
+ static string2data(string: string): NSData
685
+ ```
686
+
687
+ ##### 说明
688
+
689
+ - 按UTF-8编码把字符串转成`NSData`。
690
+
691
+ - 与`dataToString`互为逆向转换。
692
+ ##### 参数
693
+
694
+ | 参数名 | 类型 | 必填 | 说明 |
695
+ |:---------|:---------|:-----|:-----------|
696
+ | `string` | `string` | 是 | 待编码为UTF-8的字符串。 |
697
+
698
+ ##### 返回值
699
+
700
+ - 类型:`NSData`
701
+ - 语义:返回UTF-8编码后的`NSData`数据。
702
+
703
+ #### `dataToString`
704
+
705
+ ##### 类型
706
+
707
+ ```ts
708
+ static dataToString(data: NSData|string): string
709
+ ```
710
+
711
+ ##### 说明
712
+
713
+ - 把`NSData`转换成字符串;输入已是字符串时原样返回。
714
+
715
+ - 这个方法适合处理“可能是字符串也可能是NSData”的混合输入。
716
+ ##### 参数
717
+
718
+ | 参数名 | 类型 | 必填 | 说明 |
719
+ |:-------|:---------|:---------|:-----|
720
+ | `data` | `NSData\|string` | 是 | 待转换的`NSData`或已是字符串的输入。 |
721
+
722
+ ##### 返回值
723
+
724
+ - 类型:`string`
725
+ - 语义:返回UTF-8字符串,输入本身是字符串时原样返回。
726
+
727
+ #### `stringify`
728
+
729
+ ##### 类型
730
+
731
+ ```ts
732
+ static stringify(object: object): string
733
+ ```
734
+
735
+ ##### 说明
736
+
737
+ - 把对象序列化成带两空格缩进的JSON文本。
738
+
739
+ - 它用于调试输出,比原生`JSON.stringify`默认格式更易读。
740
+ ##### 参数
741
+
742
+ | 参数名 | 类型 | 必填 | 说明 |
743
+ |:---------|:----------|:-----|:-------------|
744
+ | `object` | `object` | 是 | 待序列化对象。 |
745
+
746
+ ##### 返回值
747
+
748
+ - 类型:`string`
749
+ - 语义:返回带两空格缩进的JSON字符串。
750
+
751
+ #### `xorEncryptDecrypt`
752
+
753
+ ##### 类型
754
+
755
+ ```ts
756
+ static xorEncryptDecrypt(input: string,key: string): string|undefined
757
+ ```
758
+
759
+ ##### 说明
760
+
761
+ - 使用异或算法对字符串做可逆加密或解密。
762
+
763
+ - 同一`key`重复调用两次可还原原文。
764
+ ##### 参数
765
+
766
+ | 参数名 | 类型 | 必填 | 说明 |
767
+ |:--------|:---------|:-----|:-----------|
768
+ | `input` | `string` | 是 | 待加密或解密的原始文本。 |
769
+ | `key` | `string` | 是 | 异或运算使用的密钥字符串。 |
770
+
771
+ ##### 返回值
772
+
773
+ - 类型:`string|undefined`
774
+ - 语义:成功返回`string`,失败返回`undefined`。
775
+
776
+ #### `md5FromBase64`
777
+
778
+ ##### 类型
779
+
780
+ ```ts
781
+ static md5FromBase64(base64Str: string): string
782
+ ```
783
+
784
+ ##### 说明
785
+
786
+ - 对Base64表示的原始字节计算MD5摘要。
787
+
788
+ - 如果你手里是`NSData`,可先`base64Encoding()`再调用它。
789
+ ##### 参数
790
+
791
+ | 参数名 | 类型 | 必填 | 说明 |
792
+ |:------------|:---------|:-----|:-------------|
793
+ | `base64Str` | `string` | 是 | Base64文本。 |
794
+
795
+ ##### 返回值
796
+
797
+ - 类型:`string`
798
+ - 语义:返回32位小写MD5摘要字符串。
799
+
800
+ #### `sha256FromBase64`
801
+
802
+ ##### 类型
803
+
804
+ ```ts
805
+ static sha256FromBase64(base64Str: string): string
806
+ ```
807
+
808
+ ##### 说明
809
+
810
+ - 对Base64字节数据计算SHA-256哈希。
811
+
812
+ - 与`md5FromBase64`相比,SHA-256抗碰撞能力更强。
813
+ ##### 参数
814
+
815
+ | 参数名 | 类型 | 必填 | 说明 |
816
+ |:------------|:---------|:-----|:-------------|
817
+ | `base64Str` | `string` | 是 | Base64文本。 |
818
+
819
+ ##### 返回值
820
+
821
+ - 类型:`string`
822
+ - 语义:返回64位十六进制SHA-256摘要字符串。
823
+
824
+ #### `MD5`
825
+
826
+ ##### 类型
827
+
828
+ ```ts
829
+ static MD5(data: NSData|string): string|undefined
830
+ ```
831
+
832
+ ##### 说明
833
+
834
+ - 计算字符串或`NSData`的MD5。
835
+
836
+ - 字符串走`CryptoJS.MD5`,`NSData`会先转Base64再计算。
837
+ ##### 参数
838
+
839
+ | 参数名 | 类型 | 必填 | 说明 |
840
+ |:-------|:---------|:---------|:-----|
841
+ | `data` | `NSData\|string` | 是 | 待计算摘要的字符串或`NSData`。 |
842
+
843
+ ##### 返回值
844
+
845
+ - 类型:`string|undefined`
846
+ - 语义:成功返回`string`,失败返回`undefined`。
847
+
848
+ #### `parseMNImageURL`
849
+
850
+ ##### 类型
851
+
852
+ ```ts
853
+ static parseMNImageURL(MNImageURL: string): { hash: string; type: 'png'|'jpeg'; ext: 'png'|'jpg' }|undefined
854
+ ```
855
+
856
+ ##### 说明
857
+
858
+ - 解析`marginnote4app://markdownimg/...`图片地址,提取hash和类型。
859
+
860
+ - 解析成功会顺带更新`MNUtil.imageTypeCache`。
861
+ ##### 参数
862
+
863
+ | 参数名 | 类型 | 必填 | 说明 |
864
+ |:-------------|:---------|:-----|:------------|
865
+ | `MNImageURL` | `string` | 是 | MarginNote图片协议URL字符串。 |
866
+
867
+ ##### 返回值
868
+
869
+ - 类型:`{ hash: string; type: 'png'|'jpeg'; ext: 'png'|'jpg' }|undefined`
870
+ - 语义:成功返回`{ hash: string; type: 'png'|'jpeg'; ext: 'png'|'jpg' }`,失败返回`undefined`。
871
+
872
+ #### `getMNImageURL`
873
+
874
+ ##### 类型
875
+
876
+ ```ts
877
+ static getMNImageURL(hash: string,type?: 'png'|'jpeg'|'jpg'): string
878
+ ```
879
+
880
+ ##### 说明
881
+
882
+ - 根据媒体hash组装MarginNote图片协议URL。
883
+
884
+ - 若缓存里已有类型,会优先使用缓存类型而不是入参`type`。
885
+ ##### 参数
886
+
887
+ | 参数名 | 类型 | 必填 | 说明 |
888
+ |:-------|:---------|:-------|:-----------|
889
+ | `hash` | `string` | 是 | 图片媒体hash字符串。 |
890
+ | `type` | `'png'\|'jpeg'\|'jpg'` | 否 | 图片类型,默认为png。 |
891
+
892
+ ##### 返回值
893
+
894
+ - 类型:`string`
895
+ - 语义:返回`marginnote4app://markdownimg/...`格式的图片URL。
896
+
897
+ #### `getImageDataFromMNImageURL`
898
+
899
+ ##### 类型
900
+
901
+ ```ts
902
+ static getImageDataFromMNImageURL(MNImageURL: string): NSData
903
+ ```
904
+
905
+ ##### 说明
906
+
907
+ - 从MarginNote图片协议URL读取对应媒体二进制。
908
+
909
+ - 它依赖`parseMNImageURL`提取hash,再调用`MNUtil.getMediaByHash`。
910
+ ##### 参数
911
+
912
+ | 参数名 | 类型 | 必填 | 说明 |
913
+ |:-------------|:---------|:-----|:------------|
914
+ | `MNImageURL` | `string` | 是 | MarginNote图片协议URL字符串。 |
915
+
916
+ ##### 返回值
917
+
918
+ - 类型:`NSData`
919
+ - 语义:返回该图片对应的`NSData`二进制数据。
920
+
921
+ #### `getImageFromMNImageURL`
922
+
923
+ ##### 类型
924
+
925
+ ```ts
926
+ static getImageFromMNImageURL(MNImageURL: string): UIImage
927
+ ```
928
+
929
+ ##### 说明
930
+
931
+ - 把MarginNote图片协议URL直接转换为`UIImage`。
932
+
933
+ - 相比`getImageDataFromMNImageURL`,这个方法一步返回可显示图片对象。
934
+ ##### 参数
935
+
936
+ | 参数名 | 类型 | 必填 | 说明 |
937
+ |:-------------|:---------|:-----|:------------|
938
+ | `MNImageURL` | `string` | 是 | MarginNote图片协议URL字符串。 |
939
+
940
+ ##### 返回值
941
+
942
+ - 类型:`UIImage`
943
+ - 语义:返回可直接显示的`UIImage`对象。
944
+
945
+ #### `getImageDataFromURL`
946
+
947
+ ##### 类型
948
+
949
+ ```ts
950
+ static getImageDataFromURL(url: string): NSData|undefined
951
+ ```
952
+
953
+ ##### 说明
954
+
955
+ - 统一处理MarginNote协议URL、DataURL和普通HTTP URL并返回图片数据。
956
+
957
+ - 当上游URL来源不固定时,优先使用这个入口。
958
+ ##### 参数
959
+
960
+ | 参数名 | 类型 | 必填 | 说明 |
961
+ |:-------|:---------|:-----|:------------|
962
+ | `url` | `string` | 是 | 图片来源URL,可为MarginNote协议、DataURL或HTTP URL。 |
963
+
964
+ ##### 返回值
965
+
966
+ - 类型:`NSData\|undefined`
967
+ - 语义:成功返回`NSData`,失败返回`undefined`。
968
+
969
+ #### `imageToBase64URL`
970
+
971
+ ##### 类型
972
+
973
+ ```ts
974
+ static imageToBase64URL(imageData: NSData,type?: 'png'|'jpg'|'jpeg'): string
975
+ ```
976
+
977
+ ##### 说明
978
+
979
+ - 把`NSData`编码为DataURL字符串。
980
+
981
+ - 当前实现固定返回`data:image/png;base64,`前缀,即使`type`传入jpg。
982
+ ##### 参数
983
+
984
+ | 参数名 | 类型 | 必填 | 说明 |
985
+ |:------------|:---------|:------|:-------------|
986
+ | `imageData` | `NSData` | 是 | 待处理的二进制数据对象。 |
987
+ | `type` | `'png'\|'jpg'\|'jpeg'` | 否 | 图片类型,默认为png。 |
988
+
989
+ ##### 返回值
990
+
991
+ - 类型:`string`
992
+ - 语义:返回`data:image/png;base64,...`格式字符串。
993
+
994
+ #### `imageFromWebURLSync`
995
+
996
+ ##### 类型
997
+
998
+ ```ts
999
+ static imageFromWebURLSync(url: string): UIImage
1000
+ ```
1001
+
1002
+ ##### 说明
1003
+
1004
+ - 同步下载网络图片并构造`UIImage`。
1005
+
1006
+ - 需要立即得到图片对象时可用,但会阻塞当前线程。
1007
+ ##### 参数
1008
+
1009
+ | 参数名 | 类型 | 必填 | 说明 |
1010
+ |:-------|:---------|:-----|:------------|
1011
+ | `url` | `string` | 是 | 要下载的网络图片URL。 |
1012
+
1013
+ ##### 返回值
1014
+
1015
+ - 类型:`UIImage`
1016
+ - 语义:返回下载并解码后的`UIImage`对象。
1017
+
1018
+ #### `imageDataFromWebURLSync`
1019
+
1020
+ ##### 类型
1021
+
1022
+ ```ts
1023
+ static imageDataFromWebURLSync(url: string,type?: 'png'|'jpg'|'jpeg',compressionQuality?: number): NSData
1024
+ ```
1025
+
1026
+ ##### 说明
1027
+
1028
+ - 同步下载网络图片并按指定格式导出数据。
1029
+
1030
+ - 当你只需要二进制上传或写文件,这个方法比`imageFromWebURLSync`更省一步转换。
1031
+ ##### 参数
1032
+
1033
+ | 参数名 | 类型 | 必填 | 说明 |
1034
+ |:---------------------|:---------|:------|:---------------------|
1035
+ | `url` | `string` | 是 | 要下载的网络图片URL。 |
1036
+ | `type` | `'png'\|'jpg'\|'jpeg'` | 否 | 图片类型,默认为png。 |
1037
+ | `compressionQuality` | `number` | 否 | 输出压缩质量,范围0到1。 |
1038
+
1039
+ ##### 返回值
1040
+
1041
+ - 类型:`NSData`
1042
+ - 语义:返回按指定格式导出的图片`NSData`数据。
1043
+
1044
+ #### `NSValue2String`
1045
+
1046
+ ##### 类型
1047
+
1048
+ ```ts
1049
+ static NSValue2String(v: NSValue): string
1050
+ ```
1051
+
1052
+ ##### 说明
1053
+
1054
+ - 把`NSValue`转换为JavaScript可读字符串。
1055
+
1056
+ - 这是后续解析CGSize和CGRect的基础步骤。
1057
+ ##### 参数
1058
+
1059
+ | 参数名 | 类型 | 必填 | 说明 |
1060
+ |:-------|:----------|:-----|:-------------|
1061
+ | `v` | `NSValue` | 是 | 待解析的原生NSValue对象。 |
1062
+
1063
+ ##### 返回值
1064
+
1065
+ - 类型:`string`
1066
+ - 语义:返回可读的几何字符串,常见格式为`{x,y}`或`{w,h}`。
1067
+
1068
+ #### `NSValue2CGSize`
1069
+
1070
+ ##### 类型
1071
+
1072
+ ```ts
1073
+ static NSValue2CGSize(v: NSValue): { width: number; height: number }
1074
+ ```
1075
+
1076
+ ##### 说明
1077
+
1078
+ - 把`NSValue`解析为`{ width, height }`。
1079
+
1080
+ - 与`NSValue2CGRect`相比,它只处理尺寸不处理坐标。
1081
+ ##### 参数
1082
+
1083
+ | 参数名 | 类型 | 必填 | 说明 |
1084
+ |:-------|:----------|:-----|:-------------|
1085
+ | `v` | `NSValue` | 是 | 待解析的原生NSValue对象。 |
1086
+
1087
+ ##### 返回值
1088
+
1089
+ - 类型:`{ width: number; height: number }`
1090
+ - 语义:返回`{ width, height }`尺寸对象。
1091
+
1092
+ #### `NSValue2CGRect`
1093
+
1094
+ ##### 类型
1095
+
1096
+ ```ts
1097
+ static NSValue2CGRect(v: NSValue): { x: number; y: number; height: number; width: number }
1098
+ ```
1099
+
1100
+ ##### 说明
1101
+
1102
+ - 把`NSValue`解析为`{ x, y, height, width }`对象。
1103
+
1104
+ - 适合把原生几何值喂给纯JS布局逻辑。
1105
+ ##### 参数
1106
+
1107
+ | 参数名 | 类型 | 必填 | 说明 |
1108
+ |:-------|:----------|:-----|:-------------|
1109
+ | `v` | `NSValue` | 是 | 待解析的原生NSValue对象。 |
1110
+
1111
+ ##### 返回值
1112
+
1113
+ - 类型:`{ x: number; y: number; height: number; width: number }`
1114
+ - 语义:返回`{ x, y, height, width }`矩形对象。
1115
+
1116
+ #### `CGRectString2CGRect`
1117
+
1118
+ ##### 类型
1119
+
1120
+ ```ts
1121
+ static CGRectString2CGRect(str: string): { x: number; y: number; height: number; width: number }
1122
+ ```
1123
+
1124
+ ##### 说明
1125
+
1126
+ - 把CGRect字符串解析成对象结构。
1127
+
1128
+ - 当你已经拿到字符串形态而不是NSValue时用它。
1129
+ ##### 参数
1130
+
1131
+ | 参数名 | 类型 | 必填 | 说明 |
1132
+ |:-------|:---------|:-----|:-----------|
1133
+ | `str` | `string` | 是 | CGRect字符串,常见格式为`{{x,y},{w,h}}`。 |
1134
+
1135
+ ##### 返回值
1136
+
1137
+ - 类型:`{ x: number; y: number; height: number; width: number }`
1138
+ - 语义:返回解析后的`{ x, y, height, width }`对象。
1139
+
1140
+ #### `stringFromCharCode`
1141
+
1142
+ ##### 类型
1143
+
1144
+ ```ts
1145
+ static stringFromCharCode(char: number|string): string
1146
+ ```
1147
+
1148
+ ##### 说明
1149
+
1150
+ - 把数字或数字字符串转换成单字符。
1151
+
1152
+ - 适用于处理协议里以码点存储的字符。
1153
+ ##### 参数
1154
+
1155
+ | 参数名 | 类型 | 必填 | 说明 |
1156
+ |:-------|:---------|:---------|:-----|
1157
+ | `char` | `number\|string` | 是 | 要转换的字符或字符码。 |
1158
+
1159
+ ##### 返回值
1160
+
1161
+ - 类型:`string`
1162
+ - 语义:返回输入码点对应的单字符字符串。
1163
+
1164
+ #### `fileTypeFromBase64URL`
1165
+
1166
+ ##### 类型
1167
+
1168
+ ```ts
1169
+ static fileTypeFromBase64URL(content: string): string|undefined
1170
+ ```
1171
+
1172
+ ##### 说明
1173
+
1174
+ - 根据DataURL前缀快速判断文件类型。
1175
+
1176
+ - 前缀是`octet-stream`时会退回字节头判断。
1177
+ ##### 参数
1178
+
1179
+ | 参数名 | 类型 | 必填 | 说明 |
1180
+ |:----------|:---------|:-----|:-----------|
1181
+ | `content` | `string` | 是 | DataURL完整字符串。 |
1182
+
1183
+ ##### 返回值
1184
+
1185
+ - 类型:`string|undefined`
1186
+ - 语义:成功返回`string`,失败返回`undefined`。
1187
+
1188
+ #### `hexHeaderFromData`
1189
+
1190
+ ##### 类型
1191
+
1192
+ ```ts
1193
+ static hexHeaderFromData(data: NSData): string|undefined
1194
+ ```
1195
+
1196
+ ##### 说明
1197
+
1198
+ - 读取二进制前16字节并输出十六进制文件头。
1199
+
1200
+ ##### 参数
1201
+
1202
+ | 参数名 | 类型 | 必填 | 说明 |
1203
+ |:-------|:---------|:-----|:-------------|
1204
+ | `data` | `NSData` | 是 | 待处理的二进制数据对象。 |
1205
+
1206
+ ##### 返回值
1207
+
1208
+ - 类型:`string|undefined`
1209
+ - 语义:成功返回`string`,失败返回`undefined`。
1210
+
1211
+ #### `getFileTypeFromBase64`
1212
+
1213
+ ##### 类型
1214
+
1215
+ ```ts
1216
+ static getFileTypeFromBase64(base64: string): string
1217
+ ```
1218
+
1219
+ ##### 说明
1220
+
1221
+ - 把Base64先转数据再按文件头识别类型。
1222
+
1223
+ - 当MIME前缀缺失时,这是比字符串猜测更可靠的路径。
1224
+ ##### 参数
1225
+
1226
+ | 参数名 | 类型 | 必填 | 说明 |
1227
+ |:---------|:---------|:-----|:-------------|
1228
+ | `base64` | `string` | 是 | Base64文本。 |
1229
+
1230
+ ##### 返回值
1231
+
1232
+ - 类型:`string`
1233
+ - 语义:返回根据文件头识别出的文件类型扩展名。
1234
+
1235
+ #### `getFileTypeFromhexHeader`
1236
+
1237
+ ##### 类型
1238
+
1239
+ ```ts
1240
+ static getFileTypeFromhexHeader(hexHeader: string): string
1241
+ ```
1242
+
1243
+ ##### 说明
1244
+
1245
+ - 按文件头前缀匹配常见格式,如jpg、png、pdf、zip。
1246
+
1247
+ - 它按前缀长度从长到短匹配,降低误判。
1248
+ ##### 参数
1249
+
1250
+ | 参数名 | 类型 | 必填 | 说明 |
1251
+ |:------------|:---------|:-----|:-----------|
1252
+ | `hexHeader` | `string` | 是 | 十六进制文件头字符串。 |
1253
+
1254
+ ##### 返回值
1255
+
1256
+ - 类型:`string`
1257
+ - 语义:返回匹配到的文件类型扩展名。
1258
+
1259
+ #### `getFileTypeFromData`
1260
+
1261
+ ##### 类型
1262
+
1263
+ ```ts
1264
+ static getFileTypeFromData(data: NSData): string
1265
+ ```
1266
+
1267
+ ##### 说明
1268
+
1269
+ - 直接从`NSData`识别文件类型。
1270
+
1271
+ ##### 参数
1272
+
1273
+ | 参数名 | 类型 | 必填 | 说明 |
1274
+ |:-------|:---------|:-----|:-------------|
1275
+ | `data` | `NSData` | 是 | 待处理的二进制数据对象。 |
1276
+
1277
+ ##### 返回值
1278
+
1279
+ - 类型:`string`
1280
+ - 语义:返回从二进制头部识别出的文件类型扩展名。
1281
+
1282
+ #### `getFileType`
1283
+
1284
+ ##### 类型
1285
+
1286
+ ```ts
1287
+ static getFileType(data: NSData|string): string
1288
+ ```
1289
+
1290
+ ##### 说明
1291
+
1292
+ - 统一入口:同时支持`NSData`和字符串两类输入。
1293
+
1294
+ - 字符串输入会先判断是否DataURL,再决定走哪条识别路径。
1295
+ ##### 参数
1296
+
1297
+ | 参数名 | 类型 | 必填 | 说明 |
1298
+ |:-------|:---------|:---------|:-----|
1299
+ | `data` | `NSData\|string` | 是 | 待识别的数据,可传`NSData`或字符串。 |
1300
+
1301
+ ##### 返回值
1302
+
1303
+ - 类型:`string`
1304
+ - 语义:返回自动判定后的文件类型扩展名。
1305
+
1306
+ #### `base64ToUint8Array`
1307
+
1308
+ ##### 类型
1309
+
1310
+ ```ts
1311
+ static base64ToUint8Array(base64Str: string): Uint8Array
1312
+ ```
1313
+
1314
+ ##### 说明
1315
+
1316
+ - 把Base64文本解码为`Uint8Array`,并自动清理前缀和空白字符。
1317
+
1318
+ - 在插件返回值含换行时,这个方法比原生`atob`更稳定。
1319
+ ##### 参数
1320
+
1321
+ | 参数名 | 类型 | 必填 | 说明 |
1322
+ |:------------|:---------|:-----|:-------------|
1323
+ | `base64Str` | `string` | 是 | Base64文本。 |
1324
+
1325
+ ##### 返回值
1326
+
1327
+ - 类型:`Uint8Array`
1328
+ - 语义:返回Base64解码后的Uint8Array。
1329
+
1330
+ #### `NSDataToUint8Array`
1331
+
1332
+ ##### 类型
1333
+
1334
+ ```ts
1335
+ static NSDataToUint8Array(data: NSData): Uint8Array
1336
+ ```
1337
+
1338
+ ##### 说明
1339
+
1340
+ - 把`NSData`转换成`Uint8Array`。
1341
+
1342
+ - 处理流程与`base64ToUint8Array`一致,只是输入源改为`NSData`。
1343
+ ##### 参数
1344
+
1345
+ | 参数名 | 类型 | 必填 | 说明 |
1346
+ |:-------|:---------|:-----|:-------------|
1347
+ | `data` | `NSData` | 是 | 待处理的二进制数据对象。 |
1348
+
1349
+ ##### 返回值
1350
+
1351
+ - 类型:`Uint8Array`
1352
+ - 语义:返回与输入`NSData`等价的`Uint8Array`数据。
1353
+
1354
+ #### `uint8ArrayToBase64`
1355
+
1356
+ ##### 类型
1357
+
1358
+ ```ts
1359
+ static uint8ArrayToBase64(input: Uint8Array|ArrayBuffer|number[]): string
1360
+ ```
1361
+
1362
+ ##### 说明
1363
+
1364
+ - 把`Uint8Array`、`ArrayBuffer`或数值数组编码成Base64。
1365
+
1366
+ - 当你需要替代浏览器`btoa`处理二进制时,优先使用它。
1367
+ ##### 参数
1368
+
1369
+ | 参数名 | 类型 | 必填 | 说明 |
1370
+ |:--------|:-------------|:------------|:-------------|
1371
+ | `input` | `Uint8Array\|ArrayBuffer\|number\[\]` | 是 | 要编码的Uint8Array、ArrayBuffer或数值数组。 |
1372
+
1373
+ ##### 返回值
1374
+
1375
+ - 类型:`string`
1376
+ - 语义:返回Base64编码后的字符串。
1377
+
1378
+ #### `changePngColor`
1379
+
1380
+ ##### 类型
1381
+
1382
+ ```ts
1383
+ static changePngColor(bytes: Uint8Array,hexColor: string,sourceRgb?: [number,number,number]): string|null
1384
+ ```
1385
+
1386
+ ##### 说明
1387
+
1388
+ - 修改索引色PNG的调色板颜色并返回新的DataURL。
1389
+
1390
+ - 它只处理含`PLTE`块的PNG,不支持真彩PNG逐像素替换。
1391
+ ##### 参数
1392
+
1393
+ | 参数名 | 类型 | 必填 | 说明 |
1394
+ |:------------|:-------------------------|:-----|:-----------|
1395
+ | `bytes` | `Uint8Array` | 是 | 待处理的PNG字节数组。 |
1396
+ | `hexColor` | `string` | 是 | 目标替换颜色,十六进制字符串。 |
1397
+ | `sourceRgb` | `[number,number,number]` | 否 | 可选,仅替换指定源RGB颜色。 |
1398
+
1399
+ ##### 返回值
1400
+
1401
+ - 类型:`string|null`
1402
+ - 语义:成功返回调色后的DataURL字符串,无法处理时返回`null`。
1403
+
1404
+ #### `getDotBase64WithColor`
1405
+
1406
+ ##### 类型
1407
+
1408
+ ```ts
1409
+ static getDotBase64WithColor(hexColor: string): string|null
1410
+ ```
1411
+
1412
+ ##### 说明
1413
+
1414
+ - 把内置小圆点模板图替换成目标颜色并返回Base64 DataURL。
1415
+
1416
+ - 适合快速生成带主题色的标记点素材。
1417
+ ##### 参数
1418
+
1419
+ | 参数名 | 类型 | 必填 | 说明 |
1420
+ |:-----------|:---------|:-----|:-----------|
1421
+ | `hexColor` | `string` | 是 | 目标小圆点颜色,十六进制字符串。 |
1422
+
1423
+ ##### 返回值
1424
+
1425
+ - 类型:`string|null`
1426
+ - 语义:成功返回着色后的DataURL字符串,失败返回`null`。
1427
+
1428
+ #### `getDotImageWithColor`
1429
+
1430
+ ##### 类型
1431
+
1432
+ ```ts
1433
+ static getDotImageWithColor(hexColor: string): UIImage|undefined
1434
+ ```
1435
+
1436
+ ##### 说明
1437
+
1438
+ - 基于`getDotBase64WithColor`直接得到`UIImage`。
1439
+
1440
+ - 当你最终需要的是可绘制图片对象,而不是字符串时使用它。
1441
+ ##### 参数
1442
+
1443
+ | 参数名 | 类型 | 必填 | 说明 |
1444
+ |:-----------|:---------|:-----|:-----------|
1445
+ | `hexColor` | `string` | 是 | 目标小圆点颜色,十六进制字符串。 |
1446
+
1447
+ ##### 返回值
1448
+
1449
+ - 类型:`UIImage|undefined`
1450
+ - 语义:成功返回`UIImage`,失败返回`undefined`。
1451
+
1452
+ ## 实例成员(Instance members)
1453
+
1454
+ 无实例成员。
1455
+
1456
+ ## 覆盖补全
1457
+
1458
+ #### `convertImageBase64ToPdfBase64`
1459
+
1460
+ ##### 类型
1461
+
1462
+ ```ts
1463
+ static async convertImageBase64ToPdfBase64(pngBase64: string): Promise<string|undefined>
1464
+ ```
1465
+
1466
+ ##### 说明
1467
+
1468
+ 将Base64编码的图片转换为Base64编码的PDF。
1469
+
1470
+ ##### 参数
1471
+
1472
+ | 参数名 | 类型 | 必填 | 说明 |
1473
+ |:-------|:-----|:-----|:-----|
1474
+ | `pngBase64` | `string` | 是 | Base64编码的PNG图片。 |
1475
+
1476
+ ##### 返回值
1477
+
1478
+ - 类型:`Promise<string|undefined>`
1479
+ - 语义:成功返回Base64编码的PDF,失败返回undefined。
1480
+
1481
+ #### `convertImageDataToPdfData`
1482
+
1483
+ ##### 类型
1484
+
1485
+ ```ts
1486
+ static async convertImageDataToPdfData(imageData: NSData): Promise<NSData|undefined>
1487
+ ```
1488
+
1489
+ ##### 说明
1490
+
1491
+ 将图片数据转换为PDF数据。
1492
+
1493
+ ##### 参数
1494
+
1495
+ | 参数名 | 类型 | 必填 | 说明 |
1496
+ |:-------|:-----|:-----|:-----|
1497
+ | `imageData` | `NSData` | 是 | 图片二进制数据。 |
1498
+
1499
+ ##### 返回值
1500
+
1501
+ - 类型:`Promise<NSData|undefined>`
1502
+ - 语义:成功返回PDF数据,失败返回undefined。
1503
+
1504
+ #### `imageFromWebURL`
1505
+
1506
+ ##### 类型
1507
+
1508
+ ```ts
1509
+ static async imageFromWebURL(url: string): Promise<UIImage|undefined>
1510
+ ```
1511
+
1512
+ ##### 说明
1513
+
1514
+ 从网络URL下载图片并转换为UIImage。
1515
+
1516
+ ##### 参数
1517
+
1518
+ | 参数名 | 类型 | 必填 | 说明 |
1519
+ |:-------|:-----|:-----|:-----|
1520
+ | `url` | `string` | 是 | 图片URL。 |
1521
+
1522
+ ##### 返回值
1523
+
1524
+ - 类型:`Promise<UIImage|undefined>`
1525
+ - 语义:成功返回UIImage对象,失败返回undefined。
1526
+
1527
+ #### `imageDataFromWebURL`
1528
+
1529
+ ##### 类型
1530
+
1531
+ ```ts
1532
+ static async imageDataFromWebURL(url: string): Promise<NSData|undefined>
1533
+ ```
1534
+
1535
+ ##### 说明
1536
+
1537
+ 从网络URL下载图片并返回二进制数据。
1538
+
1539
+ ##### 参数
1540
+
1541
+ | 参数名 | 类型 | 必填 | 说明 |
1542
+ |:-------|:-----|:-----|:-----|
1543
+ | `url` | `string` | 是 | 图片URL。 |
1544
+
1545
+ ##### 返回值
1546
+
1547
+ - 类型:`Promise<NSData|undefined>`
1548
+ - 语义:成功返回图片数据,失败返回undefined。
1549
+
1550
+ #### `extractPDFPage`
1551
+
1552
+ ##### 类型
1553
+
1554
+ ```ts
1555
+ static async extractPDFPage(path: string,targetPageIndices: number[]): Promise<NSData|undefined>
1556
+ ```
1557
+
1558
+ ##### 说明
1559
+
1560
+ 从PDF中提取指定页并返回新的PDF数据。
1561
+
1562
+ ##### 参数
1563
+
1564
+ | 参数名 | 类型 | 必填 | 说明 |
1565
+ |:-------|:-----|:-----|:-----|
1566
+ | `path` | `string` | 是 | PDF文件路径。 |
1567
+ | `targetPageIndices` | `number[]` | 是 | 要提取的页码数组。 |
1568
+
1569
+ ##### 返回值
1570
+
1571
+ - 类型:`Promise<NSData|undefined>`
1572
+ - 语义:成功返回提取的PDF数据,失败返回undefined。