@sinoia/hubdoc-tools 1.3.3 → 1.3.5

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 (83) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/plugins/alfresco/index.d.ts +26 -0
  3. package/dist/plugins/alfresco/index.d.ts.map +1 -0
  4. package/dist/plugins/alfresco/index.js +405 -0
  5. package/dist/plugins/alfresco/index.js.map +1 -0
  6. package/dist/plugins/alfresco/plugin.json +12 -0
  7. package/dist/plugins/aws-s3/index.d.ts +23 -0
  8. package/dist/plugins/aws-s3/index.d.ts.map +1 -0
  9. package/dist/plugins/aws-s3/index.js +383 -0
  10. package/dist/plugins/aws-s3/index.js.map +1 -0
  11. package/dist/plugins/aws-s3/plugin.json +12 -0
  12. package/dist/plugins/azure-blob/index.d.ts +23 -0
  13. package/dist/plugins/azure-blob/index.d.ts.map +1 -0
  14. package/dist/plugins/azure-blob/index.js +340 -0
  15. package/dist/plugins/azure-blob/index.js.map +1 -0
  16. package/dist/plugins/azure-blob/plugin.json +12 -0
  17. package/dist/plugins/box/index.d.ts +26 -0
  18. package/dist/plugins/box/index.d.ts.map +1 -0
  19. package/dist/plugins/box/index.js +387 -0
  20. package/dist/plugins/box/index.js.map +1 -0
  21. package/dist/plugins/box/plugin.json +12 -0
  22. package/dist/plugins/core/index.d.ts +25 -0
  23. package/dist/plugins/core/index.d.ts.map +1 -0
  24. package/dist/plugins/core/index.js +400 -0
  25. package/dist/plugins/core/index.js.map +1 -0
  26. package/dist/plugins/core/plugin.json +26 -0
  27. package/dist/plugins/dropbox/index.d.ts +27 -0
  28. package/dist/plugins/dropbox/index.d.ts.map +1 -0
  29. package/dist/plugins/dropbox/index.js +375 -0
  30. package/dist/plugins/dropbox/index.js.map +1 -0
  31. package/dist/plugins/dropbox/plugin.json +12 -0
  32. package/dist/plugins/filesystem/index.d.ts +22 -0
  33. package/dist/plugins/filesystem/index.d.ts.map +1 -0
  34. package/dist/plugins/filesystem/index.js +306 -0
  35. package/dist/plugins/filesystem/index.js.map +1 -0
  36. package/dist/plugins/filesystem/plugin.json +12 -0
  37. package/dist/plugins/googledrive/index.d.ts +27 -0
  38. package/dist/plugins/googledrive/index.d.ts.map +1 -0
  39. package/dist/plugins/googledrive/index.js +383 -0
  40. package/dist/plugins/googledrive/index.js.map +1 -0
  41. package/dist/plugins/googledrive/plugin.json +12 -0
  42. package/dist/plugins/nuxeo/index.d.ts +24 -0
  43. package/dist/plugins/nuxeo/index.d.ts.map +1 -0
  44. package/dist/plugins/nuxeo/index.js +405 -0
  45. package/dist/plugins/nuxeo/index.js.map +1 -0
  46. package/dist/plugins/nuxeo/plugin.json +12 -0
  47. package/dist/plugins/onedrive/index.d.ts +25 -0
  48. package/dist/plugins/onedrive/index.d.ts.map +1 -0
  49. package/dist/plugins/onedrive/index.js +362 -0
  50. package/dist/plugins/onedrive/index.js.map +1 -0
  51. package/dist/plugins/onedrive/plugin.json +12 -0
  52. package/dist/plugins/opentext/index.d.ts +26 -0
  53. package/dist/plugins/opentext/index.d.ts.map +1 -0
  54. package/dist/plugins/opentext/index.js +440 -0
  55. package/dist/plugins/opentext/index.js.map +1 -0
  56. package/dist/plugins/opentext/plugin.json +12 -0
  57. package/dist/plugins/sharepoint/index.d.ts +27 -0
  58. package/dist/plugins/sharepoint/index.d.ts.map +1 -0
  59. package/dist/plugins/sharepoint/index.js +397 -0
  60. package/dist/plugins/sharepoint/index.js.map +1 -0
  61. package/dist/plugins/sharepoint/plugin.json +12 -0
  62. package/dist/services/hubdoc-api.d.ts +1 -1
  63. package/dist/services/hubdoc-api.js +1 -1
  64. package/dist/services/oauth-token-service.d.ts +1 -1
  65. package/dist/services/oauth-token-service.js +2 -2
  66. package/dist/services/permission-manager.d.ts +1 -1
  67. package/dist/services/permission-manager.js +1 -1
  68. package/dist/src/types/plugins.d.ts +111 -0
  69. package/dist/src/types/plugins.d.ts.map +1 -0
  70. package/dist/src/types/plugins.js +3 -0
  71. package/dist/src/types/plugins.js.map +1 -0
  72. package/dist/src/utils/concurrent-processor.d.ts +63 -0
  73. package/dist/src/utils/concurrent-processor.d.ts.map +1 -0
  74. package/dist/src/utils/concurrent-processor.js +240 -0
  75. package/dist/src/utils/concurrent-processor.js.map +1 -0
  76. package/dist/src/utils/xml-metadata.d.ts +47 -0
  77. package/dist/src/utils/xml-metadata.d.ts.map +1 -0
  78. package/dist/src/utils/xml-metadata.js +200 -0
  79. package/dist/src/utils/xml-metadata.js.map +1 -0
  80. package/dist/types/index.d.ts +1 -1
  81. package/package.json +10 -2
  82. package/plugins/aws-s3/index.ts +2 -2
  83. package/plugins/sharepoint/index.ts +1 -1
@@ -0,0 +1,375 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const axios_1 = __importDefault(require("axios"));
7
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
+ const path_1 = __importDefault(require("path"));
9
+ class DropboxPlugin {
10
+ constructor() {
11
+ this.name = 'dropbox';
12
+ this.version = '1.0.0';
13
+ this.description = 'Dropbox document source';
14
+ this.supportedOperations = ['import', 'export', 'both'];
15
+ this.apiUrl = 'https://api.dropboxapi.com/2';
16
+ this.contentUrl = 'https://content.dropboxapi.com/2';
17
+ }
18
+ async testConnection(config) {
19
+ try {
20
+ const client = this.createApiClient(config);
21
+ const response = await client.post('/users/get_current_account');
22
+ return response.status === 200;
23
+ }
24
+ catch (error) {
25
+ console.error(`Dropbox connection test failed: ${error.message}`);
26
+ return false;
27
+ }
28
+ }
29
+ async scan(config, options) {
30
+ this.config = config;
31
+ this.apiClient = this.createApiClient(this.config);
32
+ const sources = [];
33
+ const errors = [];
34
+ let totalSize = 0;
35
+ try {
36
+ const rootPath = this.config.rootPath || '';
37
+ const items = await this.scanFolder(rootPath, options);
38
+ for (const item of items) {
39
+ if (item['.tag'] === 'file') {
40
+ const source = {
41
+ id: item.path_display,
42
+ name: item.name,
43
+ path: this.getRelativePath(item.path_display, rootPath),
44
+ size: item.size || 0,
45
+ mimeType: this.getMimeType(item.name),
46
+ lastModified: new Date(item.server_modified || item.client_modified || Date.now()),
47
+ metadata: {
48
+ dropboxId: item.id,
49
+ pathLower: item.path_lower,
50
+ contentHash: item.content_hash
51
+ }
52
+ };
53
+ // Apply filters
54
+ if (this.shouldIncludeSource(source, options)) {
55
+ sources.push(source);
56
+ totalSize += source.size;
57
+ }
58
+ }
59
+ }
60
+ return {
61
+ sources,
62
+ totalCount: sources.length,
63
+ totalSize,
64
+ errors
65
+ };
66
+ }
67
+ catch (error) {
68
+ return {
69
+ sources: [],
70
+ totalCount: 0,
71
+ totalSize: 0,
72
+ errors: [`Dropbox scan failed: ${error.message}`]
73
+ };
74
+ }
75
+ }
76
+ async scanFolder(folderPath, options) {
77
+ if (!this.apiClient)
78
+ throw new Error('API client not initialized');
79
+ const allItems = [];
80
+ let cursor;
81
+ try {
82
+ // Initial request
83
+ const response = await this.apiClient.post('/files/list_folder', {
84
+ path: folderPath || '',
85
+ recursive: true,
86
+ limit: 2000,
87
+ include_media_info: false,
88
+ include_deleted: false,
89
+ include_has_explicit_shared_members: false
90
+ });
91
+ allItems.push(...response.data.entries);
92
+ // Handle pagination
93
+ while (response.data.has_more) {
94
+ cursor = response.data.cursor;
95
+ const continueResponse = await this.apiClient.post('/files/list_folder/continue', {
96
+ cursor
97
+ });
98
+ allItems.push(...continueResponse.data.entries);
99
+ if (!continueResponse.data.has_more)
100
+ break;
101
+ response.data = continueResponse.data;
102
+ }
103
+ return allItems;
104
+ }
105
+ catch (error) {
106
+ if (error.response?.data?.error?.['.tag'] === 'path_not_found') {
107
+ console.warn(`Warning: Folder not found: ${folderPath}`);
108
+ return [];
109
+ }
110
+ throw error;
111
+ }
112
+ }
113
+ async import(config, sources, targetDir, options) {
114
+ this.config = config;
115
+ this.apiClient = this.createApiClient(this.config);
116
+ const results = [];
117
+ const batchSize = options?.batchSize || 10;
118
+ // Process in batches
119
+ for (let i = 0; i < sources.length; i += batchSize) {
120
+ const batch = sources.slice(i, i + batchSize);
121
+ for (const source of batch) {
122
+ const result = await this.importSingle(source, targetDir);
123
+ results.push(result);
124
+ // Small delay to respect rate limits
125
+ await this.sleep(100);
126
+ }
127
+ }
128
+ return results;
129
+ }
130
+ async importSingle(source, targetDir) {
131
+ try {
132
+ if (!this.apiClient)
133
+ throw new Error('API client not initialized');
134
+ const targetPath = path_1.default.join(targetDir, source.path);
135
+ const targetDirectory = path_1.default.dirname(targetPath);
136
+ await fs_extra_1.default.ensureDir(targetDirectory);
137
+ // Download file from Dropbox
138
+ const downloadClient = axios_1.default.create({
139
+ baseURL: this.contentUrl,
140
+ headers: {
141
+ 'Authorization': `Bearer ${this.config.accessToken}`,
142
+ 'Dropbox-API-Arg': JSON.stringify({
143
+ path: source.id
144
+ })
145
+ },
146
+ responseType: 'stream'
147
+ });
148
+ const response = await downloadClient.post('/files/download');
149
+ const writer = fs_extra_1.default.createWriteStream(targetPath);
150
+ response.data.pipe(writer);
151
+ return new Promise((resolve) => {
152
+ writer.on('finish', () => {
153
+ resolve({
154
+ success: true,
155
+ source,
156
+ localPath: targetPath,
157
+ bytesTransferred: source.size
158
+ });
159
+ });
160
+ writer.on('error', (error) => {
161
+ resolve({
162
+ success: false,
163
+ source,
164
+ error: error.message
165
+ });
166
+ });
167
+ });
168
+ }
169
+ catch (error) {
170
+ return {
171
+ success: false,
172
+ source,
173
+ error: error.message
174
+ };
175
+ }
176
+ }
177
+ async export(config, localSources, options) {
178
+ this.config = config;
179
+ this.apiClient = this.createApiClient(this.config);
180
+ const results = [];
181
+ for (const source of localSources) {
182
+ try {
183
+ const targetPath = options?.preserveStructure
184
+ ? `${this.config.rootPath || ''}/${options.targetPath}/${source.path}`
185
+ : `${this.config.rootPath || ''}/${options?.targetPath || ''}/${source.name}`;
186
+ // Read file content
187
+ const fileContent = await fs_extra_1.default.readFile(source.id);
188
+ const fileSize = fileContent.length;
189
+ // Upload file to Dropbox
190
+ const uploadClient = axios_1.default.create({
191
+ baseURL: this.contentUrl,
192
+ headers: {
193
+ 'Authorization': `Bearer ${this.config.accessToken}`,
194
+ 'Content-Type': 'application/octet-stream',
195
+ 'Dropbox-API-Arg': JSON.stringify({
196
+ path: targetPath,
197
+ mode: options?.overwrite ? 'overwrite' : 'add',
198
+ autorename: !options?.overwrite,
199
+ mute: false
200
+ })
201
+ }
202
+ });
203
+ // Use upload sessions for large files (>150MB)
204
+ if (fileSize > 150 * 1024 * 1024) {
205
+ await this.uploadLargeFile(uploadClient, fileContent, targetPath);
206
+ }
207
+ else {
208
+ await uploadClient.post('/files/upload', fileContent);
209
+ }
210
+ results.push({
211
+ success: true,
212
+ targetPath,
213
+ source,
214
+ bytesTransferred: fileSize
215
+ });
216
+ }
217
+ catch (error) {
218
+ results.push({
219
+ success: false,
220
+ targetPath: options?.targetPath || '',
221
+ source,
222
+ error: error.message
223
+ });
224
+ }
225
+ }
226
+ return results;
227
+ }
228
+ async uploadLargeFile(uploadClient, content, targetPath) {
229
+ const chunkSize = 4 * 1024 * 1024; // 4MB chunks
230
+ let offset = 0;
231
+ let sessionId;
232
+ while (offset < content.length) {
233
+ const chunk = content.slice(offset, offset + chunkSize);
234
+ const isLastChunk = offset + chunkSize >= content.length;
235
+ if (!sessionId) {
236
+ // Start upload session
237
+ const startResponse = await uploadClient.post('/files/upload_session/start', chunk, {
238
+ headers: {
239
+ 'Dropbox-API-Arg': JSON.stringify({ close: false })
240
+ }
241
+ });
242
+ sessionId = startResponse.data.session_id;
243
+ }
244
+ else if (!isLastChunk) {
245
+ // Continue upload session
246
+ await uploadClient.post('/files/upload_session/append_v2', chunk, {
247
+ headers: {
248
+ 'Dropbox-API-Arg': JSON.stringify({
249
+ cursor: { session_id: sessionId, offset },
250
+ close: false
251
+ })
252
+ }
253
+ });
254
+ }
255
+ else {
256
+ // Finish upload session
257
+ await uploadClient.post('/files/upload_session/finish', chunk, {
258
+ headers: {
259
+ 'Dropbox-API-Arg': JSON.stringify({
260
+ cursor: { session_id: sessionId, offset },
261
+ commit: {
262
+ path: targetPath,
263
+ mode: 'add',
264
+ autorename: true
265
+ }
266
+ })
267
+ }
268
+ });
269
+ }
270
+ offset += chunkSize;
271
+ }
272
+ }
273
+ getConfigSchema() {
274
+ return {
275
+ type: 'object',
276
+ properties: {
277
+ accessToken: {
278
+ type: 'string',
279
+ description: 'Dropbox Access Token',
280
+ required: true
281
+ },
282
+ appKey: {
283
+ type: 'string',
284
+ description: 'Dropbox App Key (optional)',
285
+ required: false
286
+ },
287
+ appSecret: {
288
+ type: 'string',
289
+ description: 'Dropbox App Secret (optional)',
290
+ required: false
291
+ },
292
+ rootPath: {
293
+ type: 'string',
294
+ description: 'Root path to scan (e.g., /Documents)',
295
+ default: ''
296
+ }
297
+ },
298
+ required: ['accessToken']
299
+ };
300
+ }
301
+ async initialize(config) {
302
+ this.config = config;
303
+ if (!this.config.accessToken) {
304
+ throw new Error('Dropbox access token is required');
305
+ }
306
+ this.apiClient = this.createApiClient(this.config);
307
+ }
308
+ async destroy() {
309
+ this.config = undefined;
310
+ this.apiClient = undefined;
311
+ }
312
+ createApiClient(config) {
313
+ return axios_1.default.create({
314
+ baseURL: this.apiUrl,
315
+ headers: {
316
+ 'Authorization': `Bearer ${config.accessToken}`,
317
+ 'Content-Type': 'application/json'
318
+ },
319
+ timeout: 30000
320
+ });
321
+ }
322
+ getRelativePath(fullPath, rootPath) {
323
+ if (!rootPath)
324
+ return fullPath.startsWith('/') ? fullPath.substring(1) : fullPath;
325
+ const relativePath = fullPath.startsWith(rootPath)
326
+ ? fullPath.substring(rootPath.length)
327
+ : fullPath;
328
+ return relativePath.startsWith('/') ? relativePath.substring(1) : relativePath;
329
+ }
330
+ getMimeType(fileName) {
331
+ const ext = path_1.default.extname(fileName).toLowerCase();
332
+ const mimeTypes = {
333
+ '.pdf': 'application/pdf',
334
+ '.doc': 'application/msword',
335
+ '.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
336
+ '.xls': 'application/vnd.ms-excel',
337
+ '.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
338
+ '.ppt': 'application/vnd.ms-powerpoint',
339
+ '.pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
340
+ '.txt': 'text/plain',
341
+ '.csv': 'text/csv',
342
+ '.json': 'application/json',
343
+ '.jpg': 'image/jpeg',
344
+ '.jpeg': 'image/jpeg',
345
+ '.png': 'image/png',
346
+ '.gif': 'image/gif',
347
+ '.zip': 'application/zip'
348
+ };
349
+ return mimeTypes[ext] || 'application/octet-stream';
350
+ }
351
+ shouldIncludeSource(source, options) {
352
+ // Apply size filter
353
+ if (options?.filters?.maxSize && source.size > options.filters.maxSize) {
354
+ return false;
355
+ }
356
+ // Apply date range filter
357
+ if (options?.filters?.dateRange) {
358
+ const { from, to } = options.filters.dateRange;
359
+ if (from && source.lastModified < from)
360
+ return false;
361
+ if (to && source.lastModified > to)
362
+ return false;
363
+ }
364
+ // Apply MIME type filter
365
+ if (options?.filters?.mimeTypes && !options.filters.mimeTypes.includes(source.mimeType)) {
366
+ return false;
367
+ }
368
+ return true;
369
+ }
370
+ sleep(ms) {
371
+ return new Promise(resolve => setTimeout(resolve, ms));
372
+ }
373
+ }
374
+ exports.default = DropboxPlugin;
375
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../plugins/dropbox/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "dropbox",
3
+ "version": "1.0.0",
4
+ "description": "Dropbox document source plugin",
5
+ "author": "HubDoc Tools",
6
+ "main": "index.js",
7
+ "hubdocToolVersion": "^1.0.0",
8
+ "dependencies": {
9
+ "axios": "^1.5.0",
10
+ "fs-extra": "^11.1.0"
11
+ }
12
+ }
@@ -0,0 +1,22 @@
1
+ import { DocumentSourcePlugin, DocumentSource, PluginConfig, ScanResult, PluginImportOptions, PluginExportOptions, ImportResult, ExportResult } from '../../src/types/plugins';
2
+ export default class FileSystemPlugin implements DocumentSourcePlugin {
3
+ readonly name = "filesystem";
4
+ readonly version = "1.0.0";
5
+ readonly description = "Local filesystem document source";
6
+ readonly supportedOperations: readonly ["import", "export", "both"];
7
+ private config?;
8
+ testConnection(config: PluginConfig): Promise<boolean>;
9
+ scan(config: PluginConfig, options?: PluginImportOptions): Promise<ScanResult>;
10
+ import(config: PluginConfig, sources: DocumentSource[], targetDir: string, options?: PluginImportOptions): Promise<ImportResult[]>;
11
+ private importSingle;
12
+ export?(config: PluginConfig, localSources: DocumentSource[], options?: PluginExportOptions): Promise<ExportResult[]>;
13
+ getConfigSchema(): Record<string, any>;
14
+ initialize(config: PluginConfig): Promise<void>;
15
+ destroy(): Promise<void>;
16
+ /**
17
+ * Check if a file is a metadata file and should be skipped from document processing
18
+ */
19
+ private isMetadataFile;
20
+ private getMimeType;
21
+ }
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../plugins/filesystem/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACb,MAAM,yBAAyB,CAAC;AAWjC,MAAM,CAAC,OAAO,OAAO,gBAAiB,YAAW,oBAAoB;IACnE,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,WAAW,sCAAsC;IAC1D,QAAQ,CAAC,mBAAmB,wCAAyC;IAErE,OAAO,CAAC,MAAM,CAAC,CAAmB;IAE5B,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAUtD,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAqH9E,MAAM,CACV,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,cAAc,EAAE,EACzB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,YAAY,EAAE,CAAC;YA2BZ,YAAY;IAyBpB,MAAM,CAAC,CACX,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,cAAc,EAAE,EAC9B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,YAAY,EAAE,CAAC;IAiD1B,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAkChC,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;OAEG;IACH,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,WAAW;CA2BpB"}