@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,387 @@
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 BoxPlugin {
10
+ constructor() {
11
+ this.name = 'box';
12
+ this.version = '1.0.0';
13
+ this.description = 'Box cloud storage document source';
14
+ this.supportedOperations = ['import', 'export', 'both'];
15
+ this.baseUrl = 'https://api.box.com/2.0';
16
+ }
17
+ async testConnection(config) {
18
+ try {
19
+ const client = this.createApiClient(config);
20
+ const response = await client.get('/users/me');
21
+ return response.status === 200;
22
+ }
23
+ catch (error) {
24
+ console.error(`Box connection test failed: ${error.message}`);
25
+ return false;
26
+ }
27
+ }
28
+ async scan(config, options) {
29
+ this.config = config;
30
+ this.apiClient = this.createApiClient(this.config);
31
+ const sources = [];
32
+ const errors = [];
33
+ let totalSize = 0;
34
+ try {
35
+ const limit = this.config.limit || options?.limit;
36
+ console.log(`🔍 Scanning Box documents${limit ? ` (limit: ${limit})` : ''}...`);
37
+ const rootFolderId = this.config.rootFolderId || '0';
38
+ const items = await this.scanFolder(rootFolderId, '', options);
39
+ let processedCount = 0;
40
+ for (const item of items) {
41
+ if (item.type === 'file') {
42
+ const source = {
43
+ id: item.id,
44
+ name: item.name,
45
+ path: this.getItemPath(item),
46
+ size: item.size || 0,
47
+ mimeType: this.getMimeType(item.name),
48
+ lastModified: new Date(item.modified_at),
49
+ metadata: {
50
+ boxId: item.id,
51
+ description: item.description,
52
+ createdAt: item.created_at,
53
+ createdBy: item.created_by?.name,
54
+ modifiedBy: item.modified_by?.name,
55
+ tags: item.tags,
56
+ sharedLink: item.shared_link?.url,
57
+ pathCollection: item.path_collection
58
+ }
59
+ };
60
+ // Apply filters
61
+ if (this.shouldIncludeSource(source, options)) {
62
+ sources.push(source);
63
+ totalSize += source.size;
64
+ processedCount++;
65
+ // Check limit
66
+ if (limit && processedCount >= limit) {
67
+ console.log(`📏 Reached limit of ${limit} files`);
68
+ break;
69
+ }
70
+ }
71
+ }
72
+ }
73
+ return {
74
+ sources,
75
+ totalCount: sources.length,
76
+ totalSize,
77
+ errors
78
+ };
79
+ }
80
+ catch (error) {
81
+ return {
82
+ sources: [],
83
+ totalCount: 0,
84
+ totalSize: 0,
85
+ errors: [`Box scan failed: ${error.message}`]
86
+ };
87
+ }
88
+ }
89
+ async scanFolder(folderId, parentPath, options) {
90
+ if (!this.apiClient)
91
+ throw new Error('API client not initialized');
92
+ const allItems = [];
93
+ let offset = 0;
94
+ const limit = 1000; // Box API max
95
+ try {
96
+ while (true) {
97
+ const response = await this.apiClient.get(`/folders/${folderId}/items`, {
98
+ params: {
99
+ fields: 'id,name,type,size,modified_at,created_at,description,path_collection,created_by,modified_by,shared_link,tags',
100
+ limit,
101
+ offset
102
+ }
103
+ });
104
+ const items = response.data.entries || [];
105
+ for (const item of items) {
106
+ const itemPath = parentPath ? `${parentPath}/${item.name}` : item.name;
107
+ if (item.type === 'file') {
108
+ // Add path information to the item
109
+ item.fullPath = itemPath;
110
+ allItems.push(item);
111
+ }
112
+ else if (item.type === 'folder') {
113
+ // Recursively scan subfolders
114
+ const subItems = await this.scanFolder(item.id, itemPath, options);
115
+ allItems.push(...subItems);
116
+ }
117
+ }
118
+ // Check if there are more items
119
+ if (items.length < limit) {
120
+ break;
121
+ }
122
+ offset += limit;
123
+ }
124
+ return allItems;
125
+ }
126
+ catch (error) {
127
+ if (error.response?.status === 404) {
128
+ console.warn(`Warning: Folder not found: ${folderId}`);
129
+ return [];
130
+ }
131
+ throw error;
132
+ }
133
+ }
134
+ async import(config, sources, targetDir, options) {
135
+ this.config = config;
136
+ this.apiClient = this.createApiClient(this.config);
137
+ const results = [];
138
+ const batchSize = options?.batchSize || 5;
139
+ // Process in batches to respect API limits
140
+ for (let i = 0; i < sources.length; i += batchSize) {
141
+ const batch = sources.slice(i, i + batchSize);
142
+ for (const source of batch) {
143
+ const result = await this.importSingle(source, targetDir);
144
+ results.push(result);
145
+ // Small delay to respect rate limits
146
+ await this.sleep(200);
147
+ }
148
+ }
149
+ return results;
150
+ }
151
+ async importSingle(source, targetDir) {
152
+ try {
153
+ if (!this.apiClient)
154
+ throw new Error('API client not initialized');
155
+ const targetPath = path_1.default.join(targetDir, source.path);
156
+ const targetDirectory = path_1.default.dirname(targetPath);
157
+ await fs_extra_1.default.ensureDir(targetDirectory);
158
+ // Download file from Box
159
+ const response = await this.apiClient.get(`/files/${source.id}/content`, {
160
+ responseType: 'stream',
161
+ maxRedirects: 5 // Box returns redirects to download URLs
162
+ });
163
+ const writer = fs_extra_1.default.createWriteStream(targetPath);
164
+ response.data.pipe(writer);
165
+ return new Promise((resolve) => {
166
+ writer.on('finish', () => {
167
+ resolve({
168
+ success: true,
169
+ source,
170
+ localPath: targetPath,
171
+ bytesTransferred: source.size
172
+ });
173
+ });
174
+ writer.on('error', (error) => {
175
+ resolve({
176
+ success: false,
177
+ source,
178
+ error: error.message
179
+ });
180
+ });
181
+ });
182
+ }
183
+ catch (error) {
184
+ return {
185
+ success: false,
186
+ source,
187
+ error: error.message
188
+ };
189
+ }
190
+ }
191
+ async export(config, localSources, options) {
192
+ this.config = config;
193
+ this.apiClient = this.createApiClient(this.config);
194
+ const results = [];
195
+ const rootFolderId = this.config.rootFolderId || '0';
196
+ for (const source of localSources) {
197
+ try {
198
+ // Determine target folder
199
+ let targetFolderId = rootFolderId;
200
+ if (options?.preserveStructure && source.path.includes('/')) {
201
+ const folderPath = path_1.default.dirname(source.path);
202
+ targetFolderId = await this.createFolderStructure(folderPath, rootFolderId);
203
+ }
204
+ // Upload file to Box
205
+ const fileContent = await fs_extra_1.default.readFile(source.id);
206
+ // Normalize filename to NFC to handle accented characters consistently across platforms
207
+ const fileName = (options?.preserveStructure ? path_1.default.basename(source.path) : source.name).normalize('NFC');
208
+ // Box requires multipart form data for uploads
209
+ const FormData = require('form-data');
210
+ const form = new FormData();
211
+ form.append('attributes', JSON.stringify({
212
+ name: fileName,
213
+ parent: { id: targetFolderId }
214
+ }));
215
+ form.append('file', fileContent, fileName);
216
+ const response = await this.apiClient.post('/files/content', form, {
217
+ headers: {
218
+ ...form.getHeaders()
219
+ }
220
+ });
221
+ const targetPath = options?.preserveStructure ? source.path : source.name;
222
+ results.push({
223
+ success: true,
224
+ targetPath,
225
+ source,
226
+ bytesTransferred: source.size
227
+ });
228
+ }
229
+ catch (error) {
230
+ results.push({
231
+ success: false,
232
+ targetPath: options?.targetPath || '',
233
+ source,
234
+ error: error.message
235
+ });
236
+ }
237
+ }
238
+ return results;
239
+ }
240
+ async createFolderStructure(folderPath, parentId) {
241
+ if (!this.apiClient)
242
+ throw new Error('API client not initialized');
243
+ const parts = folderPath.split('/').filter(part => part.length > 0);
244
+ let currentParentId = parentId;
245
+ for (const folderName of parts) {
246
+ // Check if folder already exists
247
+ try {
248
+ const response = await this.apiClient.get(`/folders/${currentParentId}/items`, {
249
+ params: {
250
+ fields: 'id,name,type',
251
+ limit: 1000
252
+ }
253
+ });
254
+ const existingFolder = response.data.entries.find((item) => item.type === 'folder' && item.name === folderName);
255
+ if (existingFolder) {
256
+ currentParentId = existingFolder.id;
257
+ }
258
+ else {
259
+ // Create new folder
260
+ const createResponse = await this.apiClient.post('/folders', {
261
+ name: folderName,
262
+ parent: { id: currentParentId }
263
+ });
264
+ currentParentId = createResponse.data.id;
265
+ }
266
+ }
267
+ catch (error) {
268
+ throw new Error(`Failed to create folder structure: ${error.message}`);
269
+ }
270
+ }
271
+ return currentParentId;
272
+ }
273
+ getConfigSchema() {
274
+ return {
275
+ type: 'object',
276
+ properties: {
277
+ accessToken: {
278
+ type: 'string',
279
+ description: 'Box Access Token (get from Box Developer Console)',
280
+ required: true
281
+ },
282
+ clientId: {
283
+ type: 'string',
284
+ description: 'Box Client ID (optional, for OAuth flow)',
285
+ required: false
286
+ },
287
+ clientSecret: {
288
+ type: 'string',
289
+ description: 'Box Client Secret (optional, for OAuth flow)',
290
+ required: false
291
+ },
292
+ rootFolderId: {
293
+ type: 'string',
294
+ description: 'Root folder ID to scan (default: 0 for root)',
295
+ default: '0'
296
+ },
297
+ limit: {
298
+ type: 'number',
299
+ description: 'Maximum number of documents to scan (useful for testing)',
300
+ required: false
301
+ }
302
+ },
303
+ required: ['accessToken']
304
+ };
305
+ }
306
+ async initialize(config) {
307
+ this.config = config;
308
+ if (!this.config.accessToken) {
309
+ throw new Error('Box access token is required');
310
+ }
311
+ this.apiClient = this.createApiClient(this.config);
312
+ }
313
+ async destroy() {
314
+ this.config = undefined;
315
+ this.apiClient = undefined;
316
+ }
317
+ createApiClient(config) {
318
+ return axios_1.default.create({
319
+ baseURL: this.baseUrl,
320
+ headers: {
321
+ 'Authorization': `Bearer ${config.accessToken}`,
322
+ 'Content-Type': 'application/json'
323
+ },
324
+ timeout: 30000
325
+ });
326
+ }
327
+ getItemPath(item) {
328
+ // Use the full path if available, otherwise construct from path_collection
329
+ if (item.fullPath) {
330
+ return item.fullPath;
331
+ }
332
+ if (item.path_collection && item.path_collection.entries) {
333
+ const pathParts = item.path_collection.entries
334
+ .filter(entry => entry.type === 'folder' && entry.id !== '0')
335
+ .map(entry => entry.name);
336
+ pathParts.push(item.name);
337
+ return pathParts.join('/');
338
+ }
339
+ return item.name;
340
+ }
341
+ getMimeType(fileName) {
342
+ const ext = path_1.default.extname(fileName).toLowerCase();
343
+ const mimeTypes = {
344
+ '.pdf': 'application/pdf',
345
+ '.doc': 'application/msword',
346
+ '.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
347
+ '.xls': 'application/vnd.ms-excel',
348
+ '.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
349
+ '.ppt': 'application/vnd.ms-powerpoint',
350
+ '.pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
351
+ '.txt': 'text/plain',
352
+ '.csv': 'text/csv',
353
+ '.json': 'application/json',
354
+ '.xml': 'application/xml',
355
+ '.jpg': 'image/jpeg',
356
+ '.jpeg': 'image/jpeg',
357
+ '.png': 'image/png',
358
+ '.gif': 'image/gif',
359
+ '.zip': 'application/zip'
360
+ };
361
+ return mimeTypes[ext] || 'application/octet-stream';
362
+ }
363
+ shouldIncludeSource(source, options) {
364
+ // Apply size filter
365
+ if (options?.filters?.maxSize && source.size > options.filters.maxSize) {
366
+ return false;
367
+ }
368
+ // Apply date range filter
369
+ if (options?.filters?.dateRange) {
370
+ const { from, to } = options.filters.dateRange;
371
+ if (from && source.lastModified < from)
372
+ return false;
373
+ if (to && source.lastModified > to)
374
+ return false;
375
+ }
376
+ // Apply MIME type filter
377
+ if (options?.filters?.mimeTypes && !options.filters.mimeTypes.includes(source.mimeType)) {
378
+ return false;
379
+ }
380
+ return true;
381
+ }
382
+ sleep(ms) {
383
+ return new Promise(resolve => setTimeout(resolve, ms));
384
+ }
385
+ }
386
+ exports.default = BoxPlugin;
387
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../plugins/box/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "box",
3
+ "version": "1.0.0",
4
+ "description": "Box document source plugin",
5
+ "author": "HubDoc Tools",
6
+ "main": "index.ts",
7
+ "hubdocToolVersion": "^1.0.0",
8
+ "dependencies": {
9
+ "box-node-sdk": "^2.0.0",
10
+ "fs-extra": "^11.1.0"
11
+ }
12
+ }
@@ -0,0 +1,25 @@
1
+ import { DocumentSourcePlugin, DocumentSource, PluginConfig, ScanResult, PluginImportOptions, PluginExportOptions, ImportResult, ExportResult } from '../../src/types/plugins';
2
+ export default class CorePlugin implements DocumentSourcePlugin {
3
+ readonly name = "core";
4
+ readonly version = "1.0.0";
5
+ readonly description = "Core document management system source";
6
+ readonly supportedOperations: readonly ["import", "both"];
7
+ private config?;
8
+ private apiClient?;
9
+ testConnection(config: PluginConfig): Promise<boolean>;
10
+ scan(config: PluginConfig, options?: PluginImportOptions): Promise<ScanResult>;
11
+ import(config: PluginConfig, sources: DocumentSource[], targetDir: string, options?: PluginImportOptions): Promise<ImportResult[]>;
12
+ private importSingle;
13
+ export?(config: PluginConfig, localSources: DocumentSource[], options?: PluginExportOptions): Promise<ExportResult[]>;
14
+ getConfigSchema(): Record<string, any>;
15
+ initialize(config: PluginConfig): Promise<void>;
16
+ destroy(): Promise<void>;
17
+ private createApiClient;
18
+ private authenticate;
19
+ private buildDocumentPath;
20
+ private estimateDocumentSize;
21
+ private determineMimeType;
22
+ private shouldIncludeSource;
23
+ private sleep;
24
+ }
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../plugins/core/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACb,MAAM,yBAAyB,CAAC;AA0CjC,MAAM,CAAC,OAAO,OAAO,UAAW,YAAW,oBAAoB;IAC7D,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,WAAW,4CAA4C;IAChE,QAAQ,CAAC,mBAAmB,8BAA+B;IAE3D,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,SAAS,CAAC,CAAgB;IAE5B,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBtD,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IA4G9E,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;YAmDZ,YAAY;IAkEpB,MAAM,CAAC,CACX,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,cAAc,EAAE,EAC9B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,YAAY,EAAE,CAAC;IAI1B,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAuChC,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB/C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAKhB,eAAe;YAuBf,YAAY;IA6B1B,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,KAAK;CAGd"}