yuque-dl 1.0.4 → 1.0.6

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/.np-config.js ADDED
@@ -0,0 +1,3 @@
1
+ export default {
2
+ tests: false
3
+ }
package/dist/cjs/cli.js CHANGED
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var node_fs = require('node:fs');
3
4
  var cac = require('cac');
4
5
  var index = require('./index-4969d150.js');
5
6
  require('node:fs/promises');
@@ -10,9 +11,10 @@ require('progress');
10
11
  require('rand-user-agent');
11
12
  require('pull-md-img');
12
13
 
13
- var version = "1.0.3";
14
-
15
14
  const cli = cac.cac('yuque-dl');
15
+ // 不能直接使用 import {version} from '../package.json'
16
+ // 否则declaration 生成的d.ts 会多一层src目录
17
+ const { version } = JSON.parse(node_fs.readFileSync(new URL('../../package.json', (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (document.currentScript && document.currentScript.src || new URL('cli.js', document.baseURI).href)))).toString());
16
18
  cli
17
19
  .command('<url>', 'request url')
18
20
  .option('-d, --distDir <dir>', '下载的目录 eg: -d download', {
package/dist/es/cli.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { readFileSync } from 'node:fs';
1
2
  import { cac } from 'cac';
2
3
  import { m as main, l as logger } from './index-5cda90ca.js';
3
4
  import 'node:fs/promises';
@@ -8,9 +9,10 @@ import 'progress';
8
9
  import 'rand-user-agent';
9
10
  import 'pull-md-img';
10
11
 
11
- var version = "1.0.3";
12
-
13
12
  const cli = cac('yuque-dl');
13
+ // 不能直接使用 import {version} from '../package.json'
14
+ // 否则declaration 生成的d.ts 会多一层src目录
15
+ const { version } = JSON.parse(readFileSync(new URL('../../package.json', import.meta.url)).toString());
14
16
  cli
15
17
  .command('<url>', 'request url')
16
18
  .option('-d, --distDir <dir>', '下载的目录 eg: -d download', {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yuque-dl",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "yuque 知识库下载",
5
5
  "type": "module",
6
6
  "bin": {
@@ -12,7 +12,7 @@
12
12
  "build:bundle": "rollup -c rollup.config.ts --configPlugin typescript",
13
13
  "build:types": "tsc --emitDeclarationOnly --outDir types -p tsconfig.base.json",
14
14
  "clean": "rm -rf dist types",
15
- "test": "echo \"Error: no test specified\" && exit 1"
15
+ "publish": "np"
16
16
  },
17
17
  "repository": {
18
18
  "type": "git",
@@ -33,6 +33,7 @@
33
33
  "@typescript-eslint/eslint-plugin": "^6.3.0",
34
34
  "@typescript-eslint/parser": "^6.3.0",
35
35
  "jest": "^29.6.2",
36
+ "np": "^8.0.4",
36
37
  "npm-run-all": "^4.1.5",
37
38
  "rollup": "^3.28.0",
38
39
  "tslib": "^2.6.1"
@@ -48,11 +49,11 @@
48
49
  },
49
50
  "dependencies": {
50
51
  "axios": "^1.4.0",
52
+ "cac": "^6.7.14",
51
53
  "log4js": "^6.9.1",
52
54
  "progress": "^2.0.3",
53
- "pull-md-img": "^0.0.19",
54
- "rand-user-agent": "1.0.109",
55
- "cac": "^6.7.14"
55
+ "pull-md-img": "^0.0.20",
56
+ "rand-user-agent": "1.0.109"
56
57
  },
57
58
  "engines": {
58
59
  "node": "^14.18.0 || >=16.0.0"
@@ -10,8 +10,12 @@
10
10
  "esModuleInterop": true,
11
11
  "useUnknownInCatchVariables": false,
12
12
  "resolveJsonModule": true,
13
+ "paths": {
14
+ "@/*": ["./*"],
15
+ }
13
16
  },
14
17
  "include": [
15
- "src/**/*"
16
- ]
18
+ "./src/**/*"
19
+ ],
20
+
17
21
  }
@@ -0,0 +1,23 @@
1
+ import progress from 'progress';
2
+ import type { KnowledgeBase } from './types/KnowledgeBaseResponse';
3
+ export interface IProcessItem {
4
+ path: string;
5
+ toc: KnowledgeBase.Toc;
6
+ pathIdList: string[];
7
+ pathTitleList: string[];
8
+ }
9
+ export declare type IProcess = IProcessItem[];
10
+ export default class Progress {
11
+ bookPath: string;
12
+ processFilePath: string;
13
+ processInfo: IProcess;
14
+ curr: number;
15
+ total: number;
16
+ isDownloadInterrupted: boolean;
17
+ bar: progress | null;
18
+ completePromise: Promise<void> | null;
19
+ constructor(bookPath: string, total: number);
20
+ init(): Promise<void>;
21
+ getProgress(): Promise<IProcess>;
22
+ updateProgress(progressItem: IProcessItem): Promise<void>;
23
+ }
package/types/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export interface IOptions {
2
+ distDir: string;
3
+ }
@@ -0,0 +1,5 @@
1
+ declare const _default: {
2
+ knowledgeBaseReg: RegExp;
3
+ dist: string;
4
+ };
5
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import type { IOptions } from './cli';
2
+ import type { KnowledgeBase } from './types/KnowledgeBaseResponse';
3
+ interface IKnowledgeBaseInfo {
4
+ bookId?: number;
5
+ tocList?: KnowledgeBase.Toc[];
6
+ bookName?: string;
7
+ bookDesc?: string;
8
+ }
9
+ declare function getKnowledgeBaseInfo(url: string): Promise<IKnowledgeBaseInfo>;
10
+ declare function main(url: string, options: IOptions): Promise<void>;
11
+ export { getKnowledgeBaseInfo, main };
package/types/log.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import log4js from 'log4js';
2
+ declare const _default: log4js.Logger;
3
+ export default _default;
@@ -0,0 +1,42 @@
1
+ export declare namespace ArticleResponse {
2
+ interface RootObject {
3
+ meta: Meta;
4
+ data: Data;
5
+ }
6
+ interface Data {
7
+ id: number;
8
+ space_id: number;
9
+ type: string;
10
+ sub_type?: any;
11
+ format: string;
12
+ title: string;
13
+ slug: string;
14
+ public: number;
15
+ status: number;
16
+ read_status: number;
17
+ created_at: string;
18
+ content_updated_at: string;
19
+ published_at: string;
20
+ first_published_at: string;
21
+ sourcecode: string;
22
+ last_editor?: any;
23
+ _serializer: string;
24
+ }
25
+ interface Meta {
26
+ abilities: Abilities;
27
+ latestReviewStatus: number;
28
+ }
29
+ interface Abilities {
30
+ create: boolean;
31
+ destroy: boolean;
32
+ update: boolean;
33
+ read: boolean;
34
+ export: boolean;
35
+ manage: boolean;
36
+ join: boolean;
37
+ share: boolean;
38
+ force_delete: boolean;
39
+ create_collaborator: boolean;
40
+ destroy_comment: boolean;
41
+ }
42
+ }
@@ -0,0 +1,401 @@
1
+ export declare namespace KnowledgeBase {
2
+ interface Response {
3
+ me: Me;
4
+ notification: Notification;
5
+ settings: Settings;
6
+ env: string;
7
+ space: Space;
8
+ isYuque: boolean;
9
+ isPublicCloud: boolean;
10
+ isEnterprise: boolean;
11
+ isUseAntLogin: boolean;
12
+ defaultSpaceHost: string;
13
+ timestamp: number;
14
+ traceId: string;
15
+ siteName: string;
16
+ siteTip?: any;
17
+ activityTip?: any;
18
+ topTip?: any;
19
+ readTip: Notification;
20
+ questionRecommend?: any;
21
+ dashboardBannerRecommend?: any;
22
+ imageServiceDomains: string[];
23
+ sharePlatforms: string[];
24
+ locale: string;
25
+ matchCondition: MatchCondition;
26
+ empInfo: Notification;
27
+ group: Group;
28
+ book: Book;
29
+ groupMemberInfo: GroupMemberInfo;
30
+ userSettings: Notification;
31
+ interest: Interest;
32
+ canUseAiWriting: boolean;
33
+ canUseAiLegal: boolean;
34
+ canUseAiReading: boolean;
35
+ aiWritingStreamType: any[];
36
+ legalAnimationTime: number;
37
+ canUseAiTag: boolean;
38
+ canUseAiTestCase: boolean;
39
+ paymentInfo: PaymentInfo;
40
+ login: Login;
41
+ enableCoverageDeploy: boolean;
42
+ isDesktopApp: boolean;
43
+ isOnlineDesktopApp: boolean;
44
+ isIsomorphicDesktopApp: boolean;
45
+ isAssistant: boolean;
46
+ isAlipayApp: boolean;
47
+ isDingTalkApp: boolean;
48
+ isDingTalkMiniApp: boolean;
49
+ isDingTalkDesktopApp: boolean;
50
+ isYuqueMobileApp: boolean;
51
+ tracertConfig: TracertConfig;
52
+ }
53
+ interface TracertConfig {
54
+ spmAPos: string;
55
+ spmBPos?: any;
56
+ }
57
+ interface Login {
58
+ loginType: string;
59
+ enablePlatforms: string[];
60
+ isWechatMobileApp: boolean;
61
+ }
62
+ interface PaymentInfo {
63
+ paymentBizInstId: string;
64
+ }
65
+ interface Interest {
66
+ interests: Interests;
67
+ limits: Limits;
68
+ owner: Owner;
69
+ limit: Member;
70
+ }
71
+ interface Owner {
72
+ id: number;
73
+ type: string;
74
+ member_level: string;
75
+ isTopLevel: boolean;
76
+ isMemberTopLevel: boolean;
77
+ isPaid: boolean;
78
+ isExpired: boolean;
79
+ }
80
+ interface Limits {
81
+ normal: Normal;
82
+ member: Member;
83
+ }
84
+ interface Member {
85
+ max_group_member_number: number;
86
+ max_book_collaborator_number: number;
87
+ max_book_number?: any;
88
+ max_resource_total_size: number;
89
+ max_single_file_size: number;
90
+ max_single_image_size: number;
91
+ max_single_video_size: number;
92
+ max_doc_collaborator_number: number;
93
+ max_doc_nologin_pv?: any;
94
+ }
95
+ interface Normal {
96
+ max_group_member_number: number;
97
+ max_book_collaborator_number: number;
98
+ max_book_number: number;
99
+ max_resource_total_size: number;
100
+ max_single_image_size: number;
101
+ max_single_video_size: number;
102
+ max_single_file_size: number;
103
+ max_doc_collaborator_number: number;
104
+ max_doc_nologin_pv: number;
105
+ }
106
+ interface Interests {
107
+ book_webhook: boolean;
108
+ open_ocr: boolean;
109
+ create_public_resource: boolean;
110
+ book_statistics: boolean;
111
+ book_security: boolean;
112
+ }
113
+ interface GroupMemberInfo {
114
+ usage: Usage;
115
+ expired_at: string;
116
+ countDownDays: number;
117
+ isAllowRenew: boolean;
118
+ receipt?: any;
119
+ groupOwners: GroupOwner[];
120
+ hasOrder: boolean;
121
+ }
122
+ interface GroupOwner {
123
+ id: number;
124
+ type: string;
125
+ login: string;
126
+ name: string;
127
+ description?: string;
128
+ avatar?: string;
129
+ avatar_url: string;
130
+ followers_count: number;
131
+ following_count: number;
132
+ status: number;
133
+ public: number;
134
+ scene?: any;
135
+ created_at: string;
136
+ updated_at: string;
137
+ expired_at?: string;
138
+ isPaid: boolean;
139
+ member_level: number;
140
+ memberLevelName?: string;
141
+ hasMemberLevel: boolean;
142
+ isTopLevel: boolean;
143
+ isNewbie: boolean;
144
+ profile?: any;
145
+ organizationUser?: any;
146
+ _serializer: string;
147
+ }
148
+ interface Usage {
149
+ attachment_size: number;
150
+ image_size: number;
151
+ video_size: number;
152
+ attachment_size_month: number;
153
+ image_size_month: number;
154
+ video_size_month: number;
155
+ max_upload_size: number;
156
+ _serializer: string;
157
+ }
158
+ interface Book {
159
+ id: number;
160
+ type: string;
161
+ slug: string;
162
+ name: string;
163
+ toc: Toc[];
164
+ toc_updated_at: string;
165
+ description: string;
166
+ creator_id: number;
167
+ menu_type: number;
168
+ items_count: number;
169
+ likes_count: number;
170
+ watches_count: number;
171
+ user_id: number;
172
+ abilities: Abilities2;
173
+ public: number;
174
+ extend_private: number;
175
+ scene?: any;
176
+ source?: any;
177
+ created_at: string;
178
+ updated_at: string;
179
+ pinned_at?: any;
180
+ archived_at?: any;
181
+ layout: string;
182
+ doc_typography: string;
183
+ doc_viewport: string;
184
+ announcement?: any;
185
+ should_manually_create_uid: boolean;
186
+ catalog_tail_type: string;
187
+ catalog_display_level: number;
188
+ cover: string;
189
+ comment_count?: any;
190
+ organization_id: number;
191
+ status: number;
192
+ indexed_level: number;
193
+ privacy_migrated: boolean;
194
+ collaboration_count: number;
195
+ content_updated_at: string;
196
+ content_updated_at_ms: number;
197
+ copyright_watermark: string;
198
+ enable_announcement: boolean;
199
+ enable_auto_publish: boolean;
200
+ enable_comment: boolean;
201
+ enable_document_copy: boolean;
202
+ enable_export: boolean;
203
+ enable_search_engine: boolean;
204
+ enable_toc: boolean;
205
+ enable_trash: boolean;
206
+ enable_visitor_watermark: boolean;
207
+ enable_webhook: boolean;
208
+ image_copyright_watermark: string;
209
+ original: number;
210
+ resource_size: number;
211
+ user?: any;
212
+ contributors?: any;
213
+ _serializer: string;
214
+ }
215
+ interface Abilities2 {
216
+ create_doc: boolean;
217
+ destroy: boolean;
218
+ export: boolean;
219
+ export_doc: boolean;
220
+ read: boolean;
221
+ read_private: boolean;
222
+ update: boolean;
223
+ create_collaborator: boolean;
224
+ manage: boolean;
225
+ share: boolean;
226
+ modify_setting: boolean;
227
+ }
228
+ interface Toc {
229
+ type: string;
230
+ title: string;
231
+ uuid: string;
232
+ url: string;
233
+ prev_uuid: string;
234
+ sibling_uuid: string;
235
+ child_uuid: string;
236
+ parent_uuid: string;
237
+ doc_id: number;
238
+ level: number;
239
+ id: number;
240
+ open_window: number;
241
+ visible: number;
242
+ }
243
+ interface Group {
244
+ id: number;
245
+ type: string;
246
+ login: string;
247
+ name: string;
248
+ description: string;
249
+ avatar: string;
250
+ avatar_url: string;
251
+ owner_id: number;
252
+ books_count: number;
253
+ public_books_count: number;
254
+ topics_count: number;
255
+ public_topics_count: number;
256
+ members_count: number;
257
+ abilities: Abilities;
258
+ settings: Settings2;
259
+ public: number;
260
+ extend_private: number;
261
+ scene?: any;
262
+ created_at: string;
263
+ updated_at: string;
264
+ expired_at: string;
265
+ deleted_at?: any;
266
+ organization_id: number;
267
+ isPaid: boolean;
268
+ member_level: number;
269
+ memberLevelName: string;
270
+ hasMemberLevel: boolean;
271
+ isTopLevel: boolean;
272
+ grains_sum: number;
273
+ status: number;
274
+ source?: any;
275
+ zone_id: number;
276
+ isPermanentPunished: boolean;
277
+ isWiki: boolean;
278
+ isPublicPage: boolean;
279
+ organization?: any;
280
+ owners?: any;
281
+ _serializer: string;
282
+ }
283
+ interface Settings2 {
284
+ homepage: Homepage;
285
+ navigation: string[];
286
+ group: Notification;
287
+ id: number;
288
+ created_at: string;
289
+ updated_at: string;
290
+ space_id: number;
291
+ group_id: number;
292
+ topic_enable: number;
293
+ resource_enable: number;
294
+ thread_enable: number;
295
+ issue_enable: number;
296
+ role_for_add_member: number;
297
+ external_enable: number;
298
+ permission: Permission;
299
+ }
300
+ interface Permission {
301
+ create_member: boolean;
302
+ create_book: boolean;
303
+ create_book_collaborator: boolean;
304
+ modify_book_setting: boolean;
305
+ share_book: boolean;
306
+ export_book: boolean;
307
+ share_doc: boolean;
308
+ export_doc: boolean;
309
+ force_delete_doc: boolean;
310
+ }
311
+ interface Homepage {
312
+ layout: Layout;
313
+ version: number;
314
+ }
315
+ interface Layout {
316
+ header: string[];
317
+ content: string[];
318
+ aside: string[];
319
+ }
320
+ interface Abilities {
321
+ create_book: boolean;
322
+ create_member: boolean;
323
+ destroy: boolean;
324
+ read: boolean;
325
+ read_private: boolean;
326
+ update: boolean;
327
+ manage: boolean;
328
+ restore: boolean;
329
+ }
330
+ interface MatchCondition {
331
+ page: string;
332
+ }
333
+ interface Space {
334
+ id: number;
335
+ login: string;
336
+ name: string;
337
+ short_name?: any;
338
+ status: number;
339
+ account_id: number;
340
+ logo?: any;
341
+ description: string;
342
+ created_at?: any;
343
+ updated_at?: any;
344
+ host: string;
345
+ displayName: string;
346
+ logo_url: string;
347
+ enable_password: boolean;
348
+ enable_watermark: boolean;
349
+ _serializer: string;
350
+ }
351
+ interface Settings {
352
+ allowed_link_schema: string[];
353
+ enable_link_interception: boolean;
354
+ enable_new_user_public_ability_forbid: boolean;
355
+ user_registry_forbidden_level: string;
356
+ watermark_enable: string;
357
+ public_space_doc_search_enable: boolean;
358
+ lake_enabled_groups: string;
359
+ image_proxy_root: string;
360
+ max_import_task_count: number;
361
+ enable_search: boolean;
362
+ enable_serviceworker: boolean;
363
+ enable_lazyload_card: string;
364
+ editor_canary: Editorcanary;
365
+ enable_attachment_multipart: boolean;
366
+ enable_custom_video_player: boolean;
367
+ conference_gift_num: number;
368
+ intranet_safe_tip: string[];
369
+ publication_enable_whitelist: any[];
370
+ foreign_phone_registry_enabled_organization_whitelist: string[];
371
+ disabled_login_modal_pop_default: boolean;
372
+ enable_open_in_mobile_app: boolean;
373
+ enable_wechat_guide_qrcode: boolean;
374
+ enable_issue: boolean;
375
+ enable_blank_page_detect: boolean;
376
+ zone_ant_auth_keepalive_enabled_domains: any[];
377
+ enable_new_group_page_whitelist: any[];
378
+ enable_web_ocr: Enablewebocr;
379
+ customer_staff_dingtalk_id: string;
380
+ enable_desktop_force_local: boolean;
381
+ support_extension_download_url: boolean;
382
+ }
383
+ interface Enablewebocr {
384
+ enable: boolean;
385
+ enableBrowsers: string[];
386
+ _users: number[];
387
+ percent: number;
388
+ }
389
+ interface Editorcanary {
390
+ card_lazy_init: number;
391
+ retryOriginImage: number;
392
+ }
393
+ interface Notification {
394
+ }
395
+ interface Me {
396
+ avatar_url: string;
397
+ avatar: string;
398
+ language: string;
399
+ is_admin: boolean;
400
+ }
401
+ }
@@ -0,0 +1,6 @@
1
+ declare function randUserAgent({ browser, os, device }: {
2
+ browser?: string | undefined;
3
+ os?: string | undefined;
4
+ device?: string | undefined;
5
+ }): any;
6
+ export { randUserAgent };