@sinoia/hubdoc-tools 1.3.4 → 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.
- package/dist/plugins/alfresco/index.d.ts +26 -0
- package/dist/plugins/alfresco/index.d.ts.map +1 -0
- package/dist/plugins/alfresco/index.js +405 -0
- package/dist/plugins/alfresco/index.js.map +1 -0
- package/dist/plugins/aws-s3/index.d.ts +23 -0
- package/dist/plugins/aws-s3/index.d.ts.map +1 -0
- package/dist/plugins/aws-s3/index.js +383 -0
- package/dist/plugins/aws-s3/index.js.map +1 -0
- package/dist/plugins/azure-blob/index.d.ts +23 -0
- package/dist/plugins/azure-blob/index.d.ts.map +1 -0
- package/dist/plugins/azure-blob/index.js +340 -0
- package/dist/plugins/azure-blob/index.js.map +1 -0
- package/dist/plugins/box/index.d.ts +26 -0
- package/dist/plugins/box/index.d.ts.map +1 -0
- package/dist/plugins/box/index.js +387 -0
- package/dist/plugins/box/index.js.map +1 -0
- package/dist/plugins/dropbox/index.d.ts +27 -0
- package/dist/plugins/dropbox/index.d.ts.map +1 -0
- package/dist/plugins/dropbox/index.js +375 -0
- package/dist/plugins/dropbox/index.js.map +1 -0
- package/dist/plugins/googledrive/index.d.ts +27 -0
- package/dist/plugins/googledrive/index.d.ts.map +1 -0
- package/dist/plugins/googledrive/index.js +383 -0
- package/dist/plugins/googledrive/index.js.map +1 -0
- package/dist/plugins/nuxeo/index.d.ts +24 -0
- package/dist/plugins/nuxeo/index.d.ts.map +1 -0
- package/dist/plugins/nuxeo/index.js +405 -0
- package/dist/plugins/nuxeo/index.js.map +1 -0
- package/dist/plugins/onedrive/index.d.ts +25 -0
- package/dist/plugins/onedrive/index.d.ts.map +1 -0
- package/dist/plugins/onedrive/index.js +362 -0
- package/dist/plugins/onedrive/index.js.map +1 -0
- package/dist/plugins/opentext/index.d.ts +26 -0
- package/dist/plugins/opentext/index.d.ts.map +1 -0
- package/dist/plugins/opentext/index.js +440 -0
- package/dist/plugins/opentext/index.js.map +1 -0
- package/dist/plugins/sharepoint/index.d.ts +27 -0
- package/dist/plugins/sharepoint/index.d.ts.map +1 -0
- package/dist/plugins/sharepoint/index.js +397 -0
- package/dist/plugins/sharepoint/index.js.map +1 -0
- package/package.json +6 -1
- package/plugins/aws-s3/index.ts +2 -2
- package/plugins/sharepoint/index.ts +1 -1
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { DocumentSourcePlugin, DocumentSource, PluginConfig, ScanResult, PluginImportOptions, PluginExportOptions, ImportResult, ExportResult } from '../../src/types/plugins';
|
|
2
|
+
export default class AlfrescoPlugin implements DocumentSourcePlugin {
|
|
3
|
+
readonly name = "alfresco";
|
|
4
|
+
readonly version = "1.0.0";
|
|
5
|
+
readonly description = "Alfresco ECM document source";
|
|
6
|
+
readonly supportedOperations: readonly ["import", "export", "both"];
|
|
7
|
+
private config?;
|
|
8
|
+
private apiClient?;
|
|
9
|
+
private readonly apiVersion;
|
|
10
|
+
testConnection(config: PluginConfig): Promise<boolean>;
|
|
11
|
+
scan(config: PluginConfig, options?: PluginImportOptions): Promise<ScanResult>;
|
|
12
|
+
private scanNode;
|
|
13
|
+
import(config: PluginConfig, sources: DocumentSource[], targetDir: string, options?: PluginImportOptions): Promise<ImportResult[]>;
|
|
14
|
+
private importSingle;
|
|
15
|
+
export?(config: PluginConfig, localSources: DocumentSource[], options?: PluginExportOptions): Promise<ExportResult[]>;
|
|
16
|
+
private getSiteDocumentLibraryId;
|
|
17
|
+
private createFolderStructure;
|
|
18
|
+
getConfigSchema(): Record<string, any>;
|
|
19
|
+
initialize(config: PluginConfig): Promise<void>;
|
|
20
|
+
destroy(): Promise<void>;
|
|
21
|
+
private createApiClient;
|
|
22
|
+
private getNodePath;
|
|
23
|
+
private shouldIncludeSource;
|
|
24
|
+
private sleep;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../plugins/alfresco/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;AA2CjC,MAAM,CAAC,OAAO,OAAO,cAAe,YAAW,oBAAoB;IACjE,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,WAAW,kCAAkC;IACtD,QAAQ,CAAC,mBAAmB,wCAAyC;IAErE,OAAO,CAAC,MAAM,CAAC,CAAiB;IAChC,OAAO,CAAC,SAAS,CAAC,CAAgB;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IAE9C,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAWtD,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;YAyEtE,QAAQ;IAwDhB,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;YAuBZ,YAAY;IA4CpB,MAAM,CAAC,CACX,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,cAAc,EAAE,EAC9B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,YAAY,EAAE,CAAC;YA8DZ,wBAAwB;YAqBxB,qBAAqB;IAoCnC,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IA4ChC,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,KAAK;CAGd"}
|
|
@@ -0,0 +1,405 @@
|
|
|
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 AlfrescoPlugin {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.name = 'alfresco';
|
|
12
|
+
this.version = '1.0.0';
|
|
13
|
+
this.description = 'Alfresco ECM document source';
|
|
14
|
+
this.supportedOperations = ['import', 'export', 'both'];
|
|
15
|
+
this.apiVersion = 'alfresco/versions/1';
|
|
16
|
+
}
|
|
17
|
+
async testConnection(config) {
|
|
18
|
+
try {
|
|
19
|
+
const client = this.createApiClient(config);
|
|
20
|
+
const response = await client.get('/people/-me-');
|
|
21
|
+
return response.status === 200;
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
console.error(`Alfresco 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 Alfresco repository${limit ? ` (limit: ${limit})` : ''}...`);
|
|
37
|
+
// Determine starting node ID
|
|
38
|
+
let startingNodeId = this.config.folderId || '-root-';
|
|
39
|
+
// If siteId is provided, get the document library
|
|
40
|
+
if (this.config.siteId) {
|
|
41
|
+
startingNodeId = await this.getSiteDocumentLibraryId(this.config.siteId);
|
|
42
|
+
}
|
|
43
|
+
const nodes = await this.scanNode(startingNodeId);
|
|
44
|
+
let processedCount = 0;
|
|
45
|
+
for (const node of nodes) {
|
|
46
|
+
if (node.isFile && node.content) {
|
|
47
|
+
const source = {
|
|
48
|
+
id: node.id,
|
|
49
|
+
name: node.name,
|
|
50
|
+
path: this.getNodePath(node),
|
|
51
|
+
size: node.content.sizeInBytes,
|
|
52
|
+
mimeType: node.content.mimeType,
|
|
53
|
+
lastModified: new Date(node.modifiedAt),
|
|
54
|
+
metadata: {
|
|
55
|
+
alfrescoId: node.id,
|
|
56
|
+
nodeType: node.nodeType,
|
|
57
|
+
createdAt: node.createdAt,
|
|
58
|
+
createdBy: node.createdByUser.displayName,
|
|
59
|
+
modifiedBy: node.modifiedByUser.displayName,
|
|
60
|
+
properties: node.properties
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
// Apply filters
|
|
64
|
+
if (this.shouldIncludeSource(source, options)) {
|
|
65
|
+
sources.push(source);
|
|
66
|
+
totalSize += source.size;
|
|
67
|
+
processedCount++;
|
|
68
|
+
// Check limit
|
|
69
|
+
if (limit && processedCount >= limit) {
|
|
70
|
+
console.log(`📏 Reached limit of ${limit} files`);
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
sources,
|
|
78
|
+
totalCount: sources.length,
|
|
79
|
+
totalSize,
|
|
80
|
+
errors
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
return {
|
|
85
|
+
sources: [],
|
|
86
|
+
totalCount: 0,
|
|
87
|
+
totalSize: 0,
|
|
88
|
+
errors: [`Alfresco scan failed: ${error.message}`]
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async scanNode(nodeId, parentPath = '') {
|
|
93
|
+
if (!this.apiClient)
|
|
94
|
+
throw new Error('API client not initialized');
|
|
95
|
+
const allNodes = [];
|
|
96
|
+
let skipCount = 0;
|
|
97
|
+
const maxItems = 100;
|
|
98
|
+
try {
|
|
99
|
+
while (true) {
|
|
100
|
+
const response = await this.apiClient.get(`/nodes/${nodeId}/children`, {
|
|
101
|
+
params: {
|
|
102
|
+
skipCount,
|
|
103
|
+
maxItems,
|
|
104
|
+
include: 'properties,path',
|
|
105
|
+
fields: 'id,name,nodeType,isFolder,isFile,createdAt,modifiedAt,createdByUser,modifiedByUser,content,properties,path'
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
const nodes = response.data.list.entries.map((entry) => {
|
|
109
|
+
const node = entry.entry;
|
|
110
|
+
// Add full path information
|
|
111
|
+
node.fullPath = parentPath ? `${parentPath}/${node.name}` : node.name;
|
|
112
|
+
return node;
|
|
113
|
+
});
|
|
114
|
+
// Process files immediately
|
|
115
|
+
const files = nodes.filter(node => node.isFile);
|
|
116
|
+
allNodes.push(...files);
|
|
117
|
+
// Recursively process folders if includeFolders is enabled or not specified
|
|
118
|
+
if (this.config?.includeFolders !== false) {
|
|
119
|
+
const folders = nodes.filter(node => node.isFolder);
|
|
120
|
+
for (const folder of folders) {
|
|
121
|
+
const folderPath = parentPath ? `${parentPath}/${folder.name}` : folder.name;
|
|
122
|
+
const subNodes = await this.scanNode(folder.id, folderPath);
|
|
123
|
+
allNodes.push(...subNodes);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Check if there are more items
|
|
127
|
+
if (nodes.length < maxItems) {
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
skipCount += maxItems;
|
|
131
|
+
}
|
|
132
|
+
return allNodes;
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
if (error.response?.status === 404) {
|
|
136
|
+
console.warn(`Warning: Node not found: ${nodeId}`);
|
|
137
|
+
return [];
|
|
138
|
+
}
|
|
139
|
+
throw error;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
async import(config, sources, targetDir, options) {
|
|
143
|
+
this.config = config;
|
|
144
|
+
this.apiClient = this.createApiClient(this.config);
|
|
145
|
+
const results = [];
|
|
146
|
+
const batchSize = options?.batchSize || 5;
|
|
147
|
+
// Process in batches to respect API limits
|
|
148
|
+
for (let i = 0; i < sources.length; i += batchSize) {
|
|
149
|
+
const batch = sources.slice(i, i + batchSize);
|
|
150
|
+
for (const source of batch) {
|
|
151
|
+
const result = await this.importSingle(source, targetDir);
|
|
152
|
+
results.push(result);
|
|
153
|
+
// Small delay to respect rate limits
|
|
154
|
+
await this.sleep(200);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return results;
|
|
158
|
+
}
|
|
159
|
+
async importSingle(source, targetDir) {
|
|
160
|
+
try {
|
|
161
|
+
if (!this.apiClient)
|
|
162
|
+
throw new Error('API client not initialized');
|
|
163
|
+
const targetPath = path_1.default.join(targetDir, source.path);
|
|
164
|
+
const targetDirectory = path_1.default.dirname(targetPath);
|
|
165
|
+
await fs_extra_1.default.ensureDir(targetDirectory);
|
|
166
|
+
// Download file content from Alfresco
|
|
167
|
+
const response = await this.apiClient.get(`/nodes/${source.id}/content`, {
|
|
168
|
+
responseType: 'stream'
|
|
169
|
+
});
|
|
170
|
+
const writer = fs_extra_1.default.createWriteStream(targetPath);
|
|
171
|
+
response.data.pipe(writer);
|
|
172
|
+
return new Promise((resolve) => {
|
|
173
|
+
writer.on('finish', () => {
|
|
174
|
+
resolve({
|
|
175
|
+
success: true,
|
|
176
|
+
source,
|
|
177
|
+
localPath: targetPath,
|
|
178
|
+
bytesTransferred: source.size
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
writer.on('error', (error) => {
|
|
182
|
+
resolve({
|
|
183
|
+
success: false,
|
|
184
|
+
source,
|
|
185
|
+
error: error.message
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
return {
|
|
192
|
+
success: false,
|
|
193
|
+
source,
|
|
194
|
+
error: error.message
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
async export(config, localSources, options) {
|
|
199
|
+
this.config = config;
|
|
200
|
+
this.apiClient = this.createApiClient(this.config);
|
|
201
|
+
const results = [];
|
|
202
|
+
// Determine target folder ID
|
|
203
|
+
let targetFolderId = this.config.folderId || '-root-';
|
|
204
|
+
if (this.config.siteId) {
|
|
205
|
+
targetFolderId = await this.getSiteDocumentLibraryId(this.config.siteId);
|
|
206
|
+
}
|
|
207
|
+
for (const source of localSources) {
|
|
208
|
+
try {
|
|
209
|
+
// Determine target folder for this document
|
|
210
|
+
let actualTargetFolderId = targetFolderId;
|
|
211
|
+
if (options?.preserveStructure && source.path.includes('/')) {
|
|
212
|
+
const folderPath = path_1.default.dirname(source.path);
|
|
213
|
+
actualTargetFolderId = await this.createFolderStructure(folderPath, targetFolderId);
|
|
214
|
+
}
|
|
215
|
+
// Read local file
|
|
216
|
+
const fileContent = await fs_extra_1.default.readFile(source.id);
|
|
217
|
+
// Normalize filename to NFC to handle accented characters consistently across platforms
|
|
218
|
+
const fileName = (options?.preserveStructure ? path_1.default.basename(source.path) : source.name).normalize('NFC');
|
|
219
|
+
// Upload file to Alfresco
|
|
220
|
+
const FormData = require('form-data');
|
|
221
|
+
const form = new FormData();
|
|
222
|
+
form.append('filedata', fileContent, fileName);
|
|
223
|
+
form.append('name', fileName);
|
|
224
|
+
form.append('nodeType', 'cm:content');
|
|
225
|
+
const response = await this.apiClient.post(`/nodes/${actualTargetFolderId}/children`, form, {
|
|
226
|
+
headers: {
|
|
227
|
+
...form.getHeaders()
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
const targetPath = options?.preserveStructure ? source.path : source.name;
|
|
231
|
+
results.push({
|
|
232
|
+
success: true,
|
|
233
|
+
targetPath,
|
|
234
|
+
source,
|
|
235
|
+
bytesTransferred: source.size
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
results.push({
|
|
240
|
+
success: false,
|
|
241
|
+
targetPath: options?.targetPath || '',
|
|
242
|
+
source,
|
|
243
|
+
error: error.message
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
return results;
|
|
248
|
+
}
|
|
249
|
+
async getSiteDocumentLibraryId(siteId) {
|
|
250
|
+
if (!this.apiClient)
|
|
251
|
+
throw new Error('API client not initialized');
|
|
252
|
+
try {
|
|
253
|
+
const response = await this.apiClient.get(`/sites/${siteId}/containers`);
|
|
254
|
+
const containers = response.data.list.entries;
|
|
255
|
+
const documentLibrary = containers.find((container) => container.entry.folderId === 'documentLibrary');
|
|
256
|
+
if (!documentLibrary) {
|
|
257
|
+
throw new Error(`Document library not found for site: ${siteId}`);
|
|
258
|
+
}
|
|
259
|
+
return documentLibrary.entry.id;
|
|
260
|
+
}
|
|
261
|
+
catch (error) {
|
|
262
|
+
throw new Error(`Failed to get document library for site ${siteId}: ${error.message}`);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
async createFolderStructure(folderPath, parentId) {
|
|
266
|
+
if (!this.apiClient)
|
|
267
|
+
throw new Error('API client not initialized');
|
|
268
|
+
const parts = folderPath.split('/').filter(part => part.length > 0);
|
|
269
|
+
let currentParentId = parentId;
|
|
270
|
+
for (const folderName of parts) {
|
|
271
|
+
// Check if folder already exists
|
|
272
|
+
try {
|
|
273
|
+
const response = await this.apiClient.get(`/nodes/${currentParentId}/children`, {
|
|
274
|
+
params: {
|
|
275
|
+
where: `(name='${folderName}' AND nodeType='cm:folder')`,
|
|
276
|
+
maxItems: 1
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
const existingFolder = response.data.list.entries[0];
|
|
280
|
+
if (existingFolder) {
|
|
281
|
+
currentParentId = existingFolder.entry.id;
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
// Create new folder
|
|
285
|
+
const createResponse = await this.apiClient.post(`/nodes/${currentParentId}/children`, {
|
|
286
|
+
name: folderName,
|
|
287
|
+
nodeType: 'cm:folder'
|
|
288
|
+
});
|
|
289
|
+
currentParentId = createResponse.data.entry.id;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
catch (error) {
|
|
293
|
+
throw new Error(`Failed to create folder structure: ${error.message}`);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
return currentParentId;
|
|
297
|
+
}
|
|
298
|
+
getConfigSchema() {
|
|
299
|
+
return {
|
|
300
|
+
type: 'object',
|
|
301
|
+
properties: {
|
|
302
|
+
baseUrl: {
|
|
303
|
+
type: 'string',
|
|
304
|
+
description: 'Alfresco base URL (e.g., http://localhost:8080/alfresco)',
|
|
305
|
+
required: true
|
|
306
|
+
},
|
|
307
|
+
username: {
|
|
308
|
+
type: 'string',
|
|
309
|
+
description: 'Alfresco username',
|
|
310
|
+
required: true
|
|
311
|
+
},
|
|
312
|
+
password: {
|
|
313
|
+
type: 'string',
|
|
314
|
+
description: 'Alfresco password',
|
|
315
|
+
required: true
|
|
316
|
+
},
|
|
317
|
+
siteId: {
|
|
318
|
+
type: 'string',
|
|
319
|
+
description: 'Alfresco site ID to scan (optional, uses repository root if not specified)',
|
|
320
|
+
required: false
|
|
321
|
+
},
|
|
322
|
+
folderId: {
|
|
323
|
+
type: 'string',
|
|
324
|
+
description: 'Starting folder ID (optional, uses site document library or root)',
|
|
325
|
+
required: false
|
|
326
|
+
},
|
|
327
|
+
includeFolders: {
|
|
328
|
+
type: 'boolean',
|
|
329
|
+
description: 'Include subfolders in scan (default: true)',
|
|
330
|
+
default: true
|
|
331
|
+
},
|
|
332
|
+
limit: {
|
|
333
|
+
type: 'number',
|
|
334
|
+
description: 'Maximum number of documents to scan (useful for testing)',
|
|
335
|
+
required: false
|
|
336
|
+
}
|
|
337
|
+
},
|
|
338
|
+
required: ['baseUrl', 'username', 'password']
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
async initialize(config) {
|
|
342
|
+
this.config = config;
|
|
343
|
+
if (!this.config.baseUrl || !this.config.username || !this.config.password) {
|
|
344
|
+
throw new Error('Alfresco base URL, username, and password are required');
|
|
345
|
+
}
|
|
346
|
+
this.apiClient = this.createApiClient(this.config);
|
|
347
|
+
}
|
|
348
|
+
async destroy() {
|
|
349
|
+
this.config = undefined;
|
|
350
|
+
this.apiClient = undefined;
|
|
351
|
+
}
|
|
352
|
+
createApiClient(config) {
|
|
353
|
+
const baseURL = `${config.baseUrl.replace(/\/$/, '')}/api/-default-/public/${this.apiVersion}`;
|
|
354
|
+
return axios_1.default.create({
|
|
355
|
+
baseURL,
|
|
356
|
+
auth: {
|
|
357
|
+
username: config.username,
|
|
358
|
+
password: config.password
|
|
359
|
+
},
|
|
360
|
+
headers: {
|
|
361
|
+
'Content-Type': 'application/json'
|
|
362
|
+
},
|
|
363
|
+
timeout: 30000
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
getNodePath(node) {
|
|
367
|
+
// Use the full path if available from scanning
|
|
368
|
+
if (node.fullPath) {
|
|
369
|
+
return node.fullPath;
|
|
370
|
+
}
|
|
371
|
+
// Construct path from path collection
|
|
372
|
+
if (node.path && node.path.isComplete) {
|
|
373
|
+
const pathParts = node.path.elements
|
|
374
|
+
.filter(element => element.name !== 'Company Home') // Skip root element
|
|
375
|
+
.map(element => element.name);
|
|
376
|
+
pathParts.push(node.name);
|
|
377
|
+
return pathParts.join('/');
|
|
378
|
+
}
|
|
379
|
+
return node.name;
|
|
380
|
+
}
|
|
381
|
+
shouldIncludeSource(source, options) {
|
|
382
|
+
// Apply size filter
|
|
383
|
+
if (options?.filters?.maxSize && source.size > options.filters.maxSize) {
|
|
384
|
+
return false;
|
|
385
|
+
}
|
|
386
|
+
// Apply date range filter
|
|
387
|
+
if (options?.filters?.dateRange) {
|
|
388
|
+
const { from, to } = options.filters.dateRange;
|
|
389
|
+
if (from && source.lastModified < from)
|
|
390
|
+
return false;
|
|
391
|
+
if (to && source.lastModified > to)
|
|
392
|
+
return false;
|
|
393
|
+
}
|
|
394
|
+
// Apply MIME type filter
|
|
395
|
+
if (options?.filters?.mimeTypes && !options.filters.mimeTypes.includes(source.mimeType)) {
|
|
396
|
+
return false;
|
|
397
|
+
}
|
|
398
|
+
return true;
|
|
399
|
+
}
|
|
400
|
+
sleep(ms) {
|
|
401
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
exports.default = AlfrescoPlugin;
|
|
405
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../plugins/alfresco/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DocumentSourcePlugin, DocumentSource, PluginConfig, ScanResult, PluginImportOptions, PluginExportOptions, ImportResult, ExportResult } from '../../src/types/plugins';
|
|
2
|
+
export default class S3Plugin implements DocumentSourcePlugin {
|
|
3
|
+
readonly name = "s3";
|
|
4
|
+
readonly version = "1.0.0";
|
|
5
|
+
readonly description = "AWS S3 document source";
|
|
6
|
+
readonly supportedOperations: readonly ["import", "export", "both"];
|
|
7
|
+
private config?;
|
|
8
|
+
private s3Client?;
|
|
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
|
+
private listAllObjects;
|
|
15
|
+
getConfigSchema(): Record<string, any>;
|
|
16
|
+
initialize(config: PluginConfig): Promise<void>;
|
|
17
|
+
destroy(): Promise<void>;
|
|
18
|
+
private createS3Client;
|
|
19
|
+
private getMimeType;
|
|
20
|
+
private shouldIncludeSource;
|
|
21
|
+
private sleep;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../plugins/aws-s3/index.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACb,MAAM,yBAAyB,CAAC;AAqBjC,MAAM,CAAC,OAAO,OAAO,QAAS,YAAW,oBAAoB;IAC3D,QAAQ,CAAC,IAAI,QAAQ;IACrB,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,WAAW,4BAA4B;IAChD,QAAQ,CAAC,mBAAmB,wCAAyC;IAErE,OAAO,CAAC,MAAM,CAAC,CAAW;IAC1B,OAAO,CAAC,QAAQ,CAAC,CAAW;IAEtB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBtD,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IA8D9E,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;YAuBZ,YAAY;IAyEpB,MAAM,CAAC,CACX,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,cAAc,EAAE,EAC9B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,YAAY,EAAE,CAAC;YA4DZ,cAAc;IA0C5B,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IA4ChC,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB/C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,WAAW;IA0BnB,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,KAAK;CAGd"}
|