@sinoia/hubdoc-tools 1.3.2 → 1.3.4

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 (68) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/plugins/alfresco/plugin.json +12 -0
  3. package/dist/plugins/aws-s3/plugin.json +12 -0
  4. package/dist/plugins/azure-blob/plugin.json +12 -0
  5. package/dist/plugins/box/plugin.json +12 -0
  6. package/dist/plugins/core/index.d.ts +25 -0
  7. package/dist/plugins/core/index.d.ts.map +1 -0
  8. package/dist/plugins/core/index.js +400 -0
  9. package/dist/plugins/core/index.js.map +1 -0
  10. package/dist/plugins/core/plugin.json +26 -0
  11. package/dist/plugins/dropbox/plugin.json +12 -0
  12. package/dist/plugins/filesystem/index.d.ts +22 -0
  13. package/dist/plugins/filesystem/index.d.ts.map +1 -0
  14. package/dist/plugins/filesystem/index.js +306 -0
  15. package/dist/plugins/filesystem/index.js.map +1 -0
  16. package/dist/plugins/filesystem/plugin.json +12 -0
  17. package/dist/plugins/googledrive/plugin.json +12 -0
  18. package/dist/plugins/nuxeo/plugin.json +12 -0
  19. package/dist/plugins/onedrive/plugin.json +12 -0
  20. package/dist/plugins/opentext/plugin.json +12 -0
  21. package/dist/plugins/sharepoint/plugin.json +12 -0
  22. package/dist/services/hubdoc-api.d.ts +1 -1
  23. package/dist/services/hubdoc-api.js +1 -1
  24. package/dist/services/oauth-token-service.d.ts +1 -1
  25. package/dist/services/oauth-token-service.js +2 -2
  26. package/dist/services/permission-manager.d.ts +1 -1
  27. package/dist/services/permission-manager.js +1 -1
  28. package/dist/src/types/plugins.d.ts +111 -0
  29. package/dist/src/types/plugins.d.ts.map +1 -0
  30. package/dist/src/types/plugins.js +3 -0
  31. package/dist/src/types/plugins.js.map +1 -0
  32. package/dist/src/utils/concurrent-processor.d.ts +63 -0
  33. package/dist/src/utils/concurrent-processor.d.ts.map +1 -0
  34. package/dist/src/utils/concurrent-processor.js +240 -0
  35. package/dist/src/utils/concurrent-processor.js.map +1 -0
  36. package/dist/src/utils/xml-metadata.d.ts +47 -0
  37. package/dist/src/utils/xml-metadata.d.ts.map +1 -0
  38. package/dist/src/utils/xml-metadata.js +200 -0
  39. package/dist/src/utils/xml-metadata.js.map +1 -0
  40. package/dist/types/index.d.ts +1 -1
  41. package/package.json +6 -2
  42. package/plugins/alfresco/index.ts +518 -0
  43. package/plugins/alfresco/plugin.json +12 -0
  44. package/plugins/aws-s3/index.ts +471 -0
  45. package/plugins/aws-s3/plugin.json +12 -0
  46. package/plugins/azure-blob/index.ts +420 -0
  47. package/plugins/azure-blob/plugin.json +12 -0
  48. package/plugins/box/index.ts +495 -0
  49. package/plugins/box/plugin.json +12 -0
  50. package/plugins/core/README.md +122 -0
  51. package/plugins/core/TESTING.md +155 -0
  52. package/plugins/core/index.ts +510 -0
  53. package/plugins/core/plugin.json +26 -0
  54. package/plugins/dropbox/index.ts +451 -0
  55. package/plugins/dropbox/plugin.json +12 -0
  56. package/plugins/filesystem/index.ts +360 -0
  57. package/plugins/filesystem/plugin.json +12 -0
  58. package/plugins/googledrive/index.ts +463 -0
  59. package/plugins/googledrive/plugin.json +12 -0
  60. package/plugins/nuxeo/index.ts +512 -0
  61. package/plugins/nuxeo/plugin.json +12 -0
  62. package/plugins/onedrive/TESTING.md +197 -0
  63. package/plugins/onedrive/index.ts +447 -0
  64. package/plugins/onedrive/plugin.json +12 -0
  65. package/plugins/opentext/index.ts +542 -0
  66. package/plugins/opentext/plugin.json +12 -0
  67. package/plugins/sharepoint/index.ts +509 -0
  68. package/plugins/sharepoint/plugin.json +12 -0
package/dist/index.d.ts CHANGED
@@ -19,7 +19,7 @@ export { CsvManager } from './utils/csv';
19
19
  export { OperationLogger } from './utils/operation-logger';
20
20
  export { ConcurrentProcessor } from './utils/concurrent-processor';
21
21
  export type { HubDocConfig, HubDocDocument, HubDocFolder, HubDocBulkUpload, DocumentMapping, ImportOptions, ImportResult as HubDocImportResult, ImportProgressCallbacks } from './types';
22
- export type { Workspace, BulkUpload, Document, Folder } from './api/models';
22
+ export type { Workspace, BulkUpload, Document, Folder } from '@api/models';
23
23
  export type { DocumentSource, DocumentSourcePlugin, PluginConfig, PluginManifest, RegisteredPlugin, SourceConnection, ScanResult, ImportResult, ExportResult, PluginImportOptions, PluginExportOptions } from './types/plugins';
24
24
  export type { TokenResponse } from './api/models';
25
25
  export { DocumentsApi, FoldersApi, WorkspacesApi, BulkUploadsApi, PermissionsApi, AuthenticationApi } from './api/api';
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "alfresco",
3
+ "version": "1.0.0",
4
+ "description": "Alfresco document source plugin",
5
+ "author": "HubDoc Tools",
6
+ "main": "index.ts",
7
+ "hubdocToolVersion": "^1.0.0",
8
+ "dependencies": {
9
+ "axios": "^1.5.0",
10
+ "fs-extra": "^11.1.0"
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "aws-s3",
3
+ "version": "1.0.0",
4
+ "description": "AWS S3 document source plugin",
5
+ "author": "HubDoc Tools",
6
+ "main": "index.ts",
7
+ "hubdocToolVersion": "^1.0.0",
8
+ "dependencies": {
9
+ "aws-sdk": "^2.1000.0",
10
+ "fs-extra": "^11.1.0"
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "azure-blob",
3
+ "version": "1.0.0",
4
+ "description": "Azure Blob Storage document source plugin",
5
+ "author": "HubDoc Tools",
6
+ "main": "index.ts",
7
+ "hubdocToolVersion": "^1.0.0",
8
+ "dependencies": {
9
+ "@azure/storage-blob": "^12.0.0",
10
+ "fs-extra": "^11.1.0"
11
+ }
12
+ }
@@ -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"}
@@ -0,0 +1,400 @@
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
+ const concurrent_processor_1 = require("../../src/utils/concurrent-processor");
10
+ class CorePlugin {
11
+ constructor() {
12
+ this.name = 'core';
13
+ this.version = '1.0.0';
14
+ this.description = 'Core document management system source';
15
+ this.supportedOperations = ['import', 'both'];
16
+ }
17
+ async testConnection(config) {
18
+ try {
19
+ const coreConfig = config;
20
+ const client = await this.createApiClient(coreConfig);
21
+ // Test connection by trying to fetch docs (first page only)
22
+ const response = await client.get('/api/d2/docs', {
23
+ params: {
24
+ '[page][number]': 1,
25
+ '[page][size]': 1
26
+ }
27
+ });
28
+ return response.status === 200;
29
+ }
30
+ catch (error) {
31
+ console.error(`Core connection test failed: ${error.message}`);
32
+ return false;
33
+ }
34
+ }
35
+ async scan(config, options) {
36
+ this.config = config;
37
+ this.apiClient = await this.createApiClient(this.config);
38
+ const sources = [];
39
+ const errors = [];
40
+ let totalSize = 0;
41
+ try {
42
+ const limit = this.config.limit || options?.limit;
43
+ console.log(`🔍 Scanning Core documents${limit ? ` (limit: ${limit})` : ''}...`);
44
+ // Scan all pages of documents
45
+ let currentPage = 1;
46
+ let hasMorePages = true;
47
+ const pageSize = limit && limit < 100 ? limit : 100; // Use limit if smaller than default batch
48
+ while (hasMorePages && (!limit || sources.length < limit)) {
49
+ try {
50
+ const response = await this.apiClient.get('/api/d2/docs', {
51
+ params: {
52
+ '[page][number]': currentPage,
53
+ '[page][size]': pageSize,
54
+ // Add filters if provided in options
55
+ ...(options?.filters?.path && { path: options.filters.path }),
56
+ ...(options?.filters?.mimeTypes && { type: options.filters.mimeTypes.join(',') })
57
+ }
58
+ });
59
+ const docs = response.data.data || [];
60
+ console.log(`📄 Processing page ${currentPage}: ${docs.length} documents`);
61
+ for (const doc of docs) {
62
+ if (doc.attributes && doc.attributes.title) {
63
+ const source = {
64
+ id: doc.id,
65
+ name: doc.attributes.title,
66
+ path: this.buildDocumentPath(doc),
67
+ size: this.estimateDocumentSize(doc),
68
+ mimeType: this.determineMimeType(doc),
69
+ lastModified: new Date(doc.attributes.updated_at || doc.attributes.created_at || Date.now()),
70
+ metadata: {
71
+ coreId: doc.id,
72
+ coreType: doc.attributes.type,
73
+ coreSubtype: doc.attributes.subtype,
74
+ corePath: doc.attributes.path,
75
+ tags: doc.attributes.tags,
76
+ hasAttachments: doc.attributes.has_attachments,
77
+ signed: doc.attributes.signed,
78
+ percent: doc.attributes.percent,
79
+ note: doc.attributes.note,
80
+ body: doc.attributes.body?.substring(0, 500) + '...' // Truncate body for metadata
81
+ }
82
+ };
83
+ // Apply filters
84
+ if (this.shouldIncludeSource(source, options)) {
85
+ sources.push(source);
86
+ totalSize += source.size;
87
+ // Stop if we've reached the limit
88
+ if (limit && sources.length >= limit) {
89
+ console.log(`📏 Reached limit of ${limit} documents`);
90
+ break;
91
+ }
92
+ }
93
+ }
94
+ }
95
+ // Check for more pages
96
+ const pagination = response.data.meta?.pagination;
97
+ if (pagination && pagination.page && pagination.pages) {
98
+ hasMorePages = pagination.page < pagination.pages;
99
+ currentPage++;
100
+ }
101
+ else {
102
+ // Fallback: if no docs returned, assume we've reached the end
103
+ hasMorePages = docs.length === pageSize;
104
+ if (hasMorePages)
105
+ currentPage++;
106
+ }
107
+ // Add small delay to respect API limits
108
+ await this.sleep(100);
109
+ }
110
+ catch (pageError) {
111
+ console.warn(`⚠️ Warning: Failed to fetch page ${currentPage}: ${pageError.message}`);
112
+ errors.push(`Failed to fetch page ${currentPage}: ${pageError.message}`);
113
+ break;
114
+ }
115
+ }
116
+ console.log(`✅ Scan completed: ${sources.length} documents found`);
117
+ return {
118
+ sources,
119
+ totalCount: sources.length,
120
+ totalSize,
121
+ errors
122
+ };
123
+ }
124
+ catch (error) {
125
+ return {
126
+ sources: [],
127
+ totalCount: 0,
128
+ totalSize: 0,
129
+ errors: [`Core scan failed: ${error.message}`]
130
+ };
131
+ }
132
+ }
133
+ async import(config, sources, targetDir, options) {
134
+ this.config = config;
135
+ this.apiClient = await this.createApiClient(this.config);
136
+ const concurrency = options?.concurrent || 1;
137
+ const tempDir = this.config.tempDir || path_1.default.join(targetDir, '.temp');
138
+ // Ensure temp directory exists
139
+ await fs_extra_1.default.ensureDir(tempDir);
140
+ console.log(`📥 Starting concurrent import of ${sources.length} documents from Core (${concurrency} jobs)`);
141
+ // Use concurrent processor
142
+ const processingResult = await concurrent_processor_1.ConcurrentProcessor.processWithProgress(sources, async (source, index) => {
143
+ const result = await this.importSingle(source, targetDir, tempDir);
144
+ // Rate limiting delay (only for concurrent > 1)
145
+ if (concurrency > 1) {
146
+ await this.sleep(100); // Reduced delay for concurrent operations
147
+ }
148
+ return result;
149
+ }, {
150
+ concurrency,
151
+ operation: 'Import from Core',
152
+ itemName: 'documents'
153
+ });
154
+ // Cleanup temp directory
155
+ try {
156
+ await fs_extra_1.default.remove(tempDir);
157
+ console.log('🧹 Temporary files cleaned up');
158
+ }
159
+ catch (cleanupError) {
160
+ console.warn('⚠️ Warning: Failed to cleanup temporary directory');
161
+ }
162
+ // Filter valid results and handle errors
163
+ const validResults = processingResult.results.filter(r => r !== undefined);
164
+ const errorResults = processingResult.errors.map(({ item, error }) => ({
165
+ success: false,
166
+ source: item,
167
+ error: error.message
168
+ }));
169
+ return [...validResults, ...errorResults];
170
+ }
171
+ async importSingle(source, targetDir, tempDir) {
172
+ try {
173
+ if (!this.apiClient)
174
+ throw new Error('API client not initialized');
175
+ console.log(`📄 Importing: ${source.name}`);
176
+ // Step 1: Fetch document details and content from Core
177
+ const docResponse = await this.apiClient.get(`/api/d2/docs/${source.id}`);
178
+ const docData = docResponse.data.data;
179
+ if (!docData) {
180
+ throw new Error('Document not found in Core');
181
+ }
182
+ // Step 2: Create local buffer file
183
+ const tempFileName = `${source.id}_${source.name.replace(/[^a-zA-Z0-9.-]/g, '_')}`;
184
+ const tempFilePath = path_1.default.join(tempDir, tempFileName);
185
+ // Step 3: Generate document content (Core stores content in body field)
186
+ let content = '';
187
+ if (docData.attributes.body) {
188
+ content = docData.attributes.body;
189
+ }
190
+ else {
191
+ // Fallback: create a minimal document with metadata
192
+ content = `Document: ${source.name}\n\n`;
193
+ content += `Type: ${source.metadata?.coreType || 'unknown'}\n`;
194
+ content += `Subtype: ${source.metadata?.coreSubtype || 'unknown'}\n`;
195
+ content += `Created: ${source.lastModified.toISOString()}\n`;
196
+ if (source.metadata?.tags && Array.isArray(source.metadata.tags)) {
197
+ content += `Tags: ${source.metadata.tags.join(', ')}\n`;
198
+ }
199
+ content += `\nImported from Core (ID: ${source.id})`;
200
+ }
201
+ // Step 4: Write content to temporary file
202
+ await fs_extra_1.default.writeFile(tempFilePath, content, 'utf8');
203
+ // Step 5: Move to target directory with proper structure
204
+ const targetPath = path_1.default.join(targetDir, source.path);
205
+ const targetDirectory = path_1.default.dirname(targetPath);
206
+ await fs_extra_1.default.ensureDir(targetDirectory);
207
+ await fs_extra_1.default.move(tempFilePath, targetPath, { overwrite: true });
208
+ const stats = await fs_extra_1.default.stat(targetPath);
209
+ console.log(`✅ Imported: ${source.name} (${stats.size} bytes)`);
210
+ return {
211
+ success: true,
212
+ source,
213
+ localPath: targetPath,
214
+ bytesTransferred: stats.size
215
+ };
216
+ }
217
+ catch (error) {
218
+ console.error(`❌ Failed to import ${source.name}: ${error.message}`);
219
+ return {
220
+ success: false,
221
+ source,
222
+ error: error.message
223
+ };
224
+ }
225
+ }
226
+ // Export is not supported for Core (documents are managed within Core)
227
+ async export(config, localSources, options) {
228
+ throw new Error('Export to Core is not supported. Core documents should be managed within the Core system.');
229
+ }
230
+ getConfigSchema() {
231
+ return {
232
+ type: 'object',
233
+ properties: {
234
+ baseUrl: {
235
+ type: 'string',
236
+ description: 'Core API base URL (e.g., https://your-core-instance.com)',
237
+ required: true
238
+ },
239
+ username: {
240
+ type: 'string',
241
+ description: 'Core username for authentication',
242
+ required: true
243
+ },
244
+ password: {
245
+ type: 'string',
246
+ description: 'Core password for authentication',
247
+ required: true
248
+ },
249
+ bearerToken: {
250
+ type: 'string',
251
+ description: 'Pre-obtained bearer token (optional, will be fetched if not provided)',
252
+ required: false
253
+ },
254
+ tempDir: {
255
+ type: 'string',
256
+ description: 'Temporary directory for local buffer files (optional)',
257
+ required: false
258
+ },
259
+ limit: {
260
+ type: 'integer',
261
+ description: 'Maximum number of documents to scan (useful for testing)',
262
+ required: false
263
+ }
264
+ },
265
+ required: ['baseUrl', 'username', 'password']
266
+ };
267
+ }
268
+ async initialize(config) {
269
+ this.config = config;
270
+ if (!this.config.baseUrl) {
271
+ throw new Error('Core plugin requires baseUrl');
272
+ }
273
+ if (!this.config.bearerToken && (!this.config.username || !this.config.password)) {
274
+ throw new Error('Core plugin requires either bearerToken or username/password');
275
+ }
276
+ // Test authentication
277
+ try {
278
+ this.apiClient = await this.createApiClient(this.config);
279
+ console.log('✅ Core plugin initialized successfully');
280
+ }
281
+ catch (error) {
282
+ throw new Error(`Failed to initialize Core plugin: ${error.message}`);
283
+ }
284
+ }
285
+ async destroy() {
286
+ this.config = undefined;
287
+ this.apiClient = undefined;
288
+ }
289
+ async createApiClient(config) {
290
+ let bearerToken = config.bearerToken;
291
+ // If no bearer token provided, authenticate to get one
292
+ if (!bearerToken && config.username && config.password) {
293
+ console.log('🔐 No bearer token provided, authenticating...');
294
+ bearerToken = await this.authenticate(config);
295
+ }
296
+ else if (!bearerToken) {
297
+ throw new Error('Either bearerToken or username/password must be provided');
298
+ }
299
+ else {
300
+ console.log('🔑 Using provided bearer token');
301
+ }
302
+ return axios_1.default.create({
303
+ baseURL: config.baseUrl,
304
+ headers: {
305
+ 'Authorization': `Bearer ${bearerToken}`,
306
+ 'Content-Type': 'application/json'
307
+ },
308
+ timeout: 30000
309
+ });
310
+ }
311
+ async authenticate(config) {
312
+ try {
313
+ console.log('🔐 Authenticating with Core...');
314
+ const authClient = axios_1.default.create({
315
+ baseURL: config.baseUrl,
316
+ timeout: 30000
317
+ });
318
+ // Use the token endpoint from the swagger
319
+ const response = await authClient.post('/api/token', null, {
320
+ params: {
321
+ 'auth[username]': config.username,
322
+ 'auth[password]': config.password,
323
+ 'grant_type': 'password'
324
+ }
325
+ });
326
+ if (response.data && response.data.access_token) {
327
+ console.log('✅ Core authentication successful');
328
+ return response.data.access_token;
329
+ }
330
+ else {
331
+ throw new Error('No access token received from Core API');
332
+ }
333
+ }
334
+ catch (error) {
335
+ throw new Error(`Core authentication failed: ${error.response?.data?.message || error.message}`);
336
+ }
337
+ }
338
+ buildDocumentPath(doc) {
339
+ // Build a meaningful path structure
340
+ const type = doc.attributes.type || 'unknown';
341
+ const subtype = doc.attributes.subtype || 'general';
342
+ const title = doc.attributes.title || doc.id;
343
+ // Clean title for filesystem
344
+ const cleanTitle = title.replace(/[^a-zA-Z0-9.-]/g, '_');
345
+ return `${type}/${subtype}/${cleanTitle}.txt`;
346
+ }
347
+ estimateDocumentSize(doc) {
348
+ // Estimate size based on content
349
+ let size = 0;
350
+ if (doc.attributes.body) {
351
+ size += doc.attributes.body.length;
352
+ }
353
+ if (doc.attributes.title) {
354
+ size += doc.attributes.title.length;
355
+ }
356
+ // Add base size for metadata
357
+ size += 500;
358
+ return Math.max(size, 100); // Minimum 100 bytes
359
+ }
360
+ determineMimeType(doc) {
361
+ const type = doc.attributes.type?.toLowerCase();
362
+ const subtype = doc.attributes.subtype?.toLowerCase();
363
+ // Map Core types to MIME types
364
+ if (type === 'document' || subtype === 'document') {
365
+ return 'text/plain';
366
+ }
367
+ else if (type === 'html' || subtype === 'html') {
368
+ return 'text/html';
369
+ }
370
+ else if (doc.attributes.has_attachments) {
371
+ return 'application/octet-stream';
372
+ }
373
+ // Default to plain text
374
+ return 'text/plain';
375
+ }
376
+ shouldIncludeSource(source, options) {
377
+ // Apply size filter
378
+ if (options?.filters?.maxSize && source.size > options.filters.maxSize) {
379
+ return false;
380
+ }
381
+ // Apply date range filter
382
+ if (options?.filters?.dateRange) {
383
+ const { from, to } = options.filters.dateRange;
384
+ if (from && source.lastModified < from)
385
+ return false;
386
+ if (to && source.lastModified > to)
387
+ return false;
388
+ }
389
+ // Apply MIME type filter
390
+ if (options?.filters?.mimeTypes && !options.filters.mimeTypes.includes(source.mimeType)) {
391
+ return false;
392
+ }
393
+ return true;
394
+ }
395
+ sleep(ms) {
396
+ return new Promise(resolve => setTimeout(resolve, ms));
397
+ }
398
+ }
399
+ exports.default = CorePlugin;
400
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../plugins/core/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "core",
3
+ "version": "1.0.0",
4
+ "description": "Core document management system source plugin",
5
+ "author": "HubDoc Tools",
6
+ "main": "index.ts",
7
+ "dependencies": {
8
+ "axios": "^1.5.0",
9
+ "fs-extra": "^11.1.0"
10
+ },
11
+ "hubdocToolVersion": "^1.0.0",
12
+ "capabilities": {
13
+ "scan": true,
14
+ "import": true,
15
+ "export": false
16
+ },
17
+ "apiEndpoints": {
18
+ "authentication": "/api/token",
19
+ "documents": "/api/d2/docs",
20
+ "documentDetail": "/api/d2/docs/{id}"
21
+ },
22
+ "configuration": {
23
+ "required": ["baseUrl", "username", "password"],
24
+ "optional": ["bearerToken", "tempDir"]
25
+ }
26
+ }
@@ -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"}