@sinoia/hubdoc-tools 1.0.4 → 1.2.1
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/README.md +115 -34
- package/dist/__tests__/fixtures/plugins/connection-plugin/index.d.ts +15 -0
- package/dist/__tests__/fixtures/plugins/connection-plugin/index.d.ts.map +1 -0
- package/dist/__tests__/fixtures/plugins/connection-plugin/index.js +37 -0
- package/dist/__tests__/fixtures/plugins/connection-plugin/index.js.map +1 -0
- package/dist/__tests__/fixtures/plugins/scan-plugin/index.d.ts +15 -0
- package/dist/__tests__/fixtures/plugins/scan-plugin/index.d.ts.map +1 -0
- package/dist/__tests__/fixtures/plugins/scan-plugin/index.js +54 -0
- package/dist/__tests__/fixtures/plugins/scan-plugin/index.js.map +1 -0
- package/dist/__tests__/fixtures/plugins/test-plugin/index.d.ts +15 -0
- package/dist/__tests__/fixtures/plugins/test-plugin/index.d.ts.map +1 -0
- package/dist/__tests__/fixtures/plugins/test-plugin/index.js +34 -0
- package/dist/__tests__/fixtures/plugins/test-plugin/index.js.map +1 -0
- package/dist/__tests__/fixtures/plugins/workflow-plugin/index.d.ts +16 -0
- package/dist/__tests__/fixtures/plugins/workflow-plugin/index.d.ts.map +1 -0
- package/dist/__tests__/fixtures/plugins/workflow-plugin/index.js +145 -0
- package/dist/__tests__/fixtures/plugins/workflow-plugin/index.js.map +1 -0
- package/dist/api/api/authentication-api.d.ts +208 -0
- package/dist/api/api/authentication-api.d.ts.map +1 -0
- package/dist/api/api/authentication-api.js +385 -0
- package/dist/api/api/authentication-api.js.map +1 -0
- package/dist/api/api/bulk-uploads-api.d.ts +101 -0
- package/dist/api/api/bulk-uploads-api.d.ts.map +1 -0
- package/dist/api/api/bulk-uploads-api.js +195 -0
- package/dist/api/api/bulk-uploads-api.js.map +1 -0
- package/dist/api/api/contacts-api.d.ts +246 -0
- package/dist/api/api/contacts-api.d.ts.map +1 -0
- package/dist/api/api/contacts-api.js +465 -0
- package/dist/api/api/contacts-api.js.map +1 -0
- package/dist/api/api/documents-api.d.ts +267 -0
- package/dist/api/api/documents-api.d.ts.map +1 -0
- package/dist/api/api/documents-api.js +506 -0
- package/dist/api/api/documents-api.js.map +1 -0
- package/dist/api/api/folders-api.d.ts +255 -0
- package/dist/api/api/folders-api.d.ts.map +1 -0
- package/dist/api/api/folders-api.js +479 -0
- package/dist/api/api/folders-api.js.map +1 -0
- package/dist/api/api/groups-api.d.ts +246 -0
- package/dist/api/api/groups-api.d.ts.map +1 -0
- package/dist/api/api/groups-api.js +465 -0
- package/dist/api/api/groups-api.js.map +1 -0
- package/dist/api/api/permissions-api.d.ts +246 -0
- package/dist/api/api/permissions-api.d.ts.map +1 -0
- package/dist/api/api/permissions-api.js +465 -0
- package/dist/api/api/permissions-api.js.map +1 -0
- package/dist/api/api/workspaces-api.d.ts +213 -0
- package/dist/api/api/workspaces-api.d.ts.map +1 -0
- package/dist/api/api/workspaces-api.js +424 -0
- package/dist/api/api/workspaces-api.js.map +1 -0
- package/dist/api/api.d.ts +20 -0
- package/dist/api/api.d.ts.map +1 -0
- package/dist/api/api.js +38 -0
- package/dist/api/api.js.map +1 -0
- package/dist/api/base.d.ts +43 -0
- package/dist/api/base.d.ts.map +1 -0
- package/dist/api/base.js +49 -0
- package/dist/api/base.js.map +1 -0
- package/dist/api/common.d.ts +29 -0
- package/dist/api/common.d.ts.map +1 -0
- package/dist/api/common.js +109 -0
- package/dist/api/common.js.map +1 -0
- package/dist/api/configuration.d.ts +99 -0
- package/dist/api/configuration.d.ts.map +1 -0
- package/dist/api/configuration.js +49 -0
- package/dist/api/configuration.js.map +1 -0
- package/dist/api/index.d.ts +15 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +33 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/models/api-v1-documents-documents-post-request1.d.ts +34 -0
- package/dist/api/models/api-v1-documents-documents-post-request1.d.ts.map +1 -0
- package/dist/api/models/api-v1-documents-documents-post-request1.js +16 -0
- package/dist/api/models/api-v1-documents-documents-post-request1.js.map +1 -0
- package/dist/api/models/api-v1-documents-documents-post201-response.d.ts +17 -0
- package/dist/api/models/api-v1-documents-documents-post201-response.d.ts.map +1 -0
- package/dist/api/models/api-v1-documents-documents-post201-response.js +16 -0
- package/dist/api/models/api-v1-documents-documents-post201-response.js.map +1 -0
- package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner-one-of.d.ts +17 -0
- package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner-one-of.d.ts.map +1 -0
- package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner-one-of.js +16 -0
- package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner-one-of.js.map +1 -0
- package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner-one-of1.d.ts +17 -0
- package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner-one-of1.d.ts.map +1 -0
- package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner-one-of1.js +16 -0
- package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner-one-of1.js.map +1 -0
- package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner.d.ts +18 -0
- package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner.d.ts.map +1 -0
- package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner.js +16 -0
- package/dist/api/models/api-v1-documents-folders-id-get200-response-all-of-items-inner.js.map +1 -0
- package/dist/api/models/api-v1-documents-folders-id-get200-response.d.ts +17 -0
- package/dist/api/models/api-v1-documents-folders-id-get200-response.d.ts.map +1 -0
- package/dist/api/models/api-v1-documents-folders-id-get200-response.js +16 -0
- package/dist/api/models/api-v1-documents-folders-id-get200-response.js.map +1 -0
- package/dist/api/models/bulk-upload-mutation.d.ts +34 -0
- package/dist/api/models/bulk-upload-mutation.d.ts.map +1 -0
- package/dist/api/models/bulk-upload-mutation.js +16 -0
- package/dist/api/models/bulk-upload-mutation.js.map +1 -0
- package/dist/api/models/bulk-upload.d.ts +91 -0
- package/dist/api/models/bulk-upload.d.ts.map +1 -0
- package/dist/api/models/bulk-upload.js +23 -0
- package/dist/api/models/bulk-upload.js.map +1 -0
- package/dist/api/models/contact-mutation.d.ts +30 -0
- package/dist/api/models/contact-mutation.d.ts.map +1 -0
- package/dist/api/models/contact-mutation.js +16 -0
- package/dist/api/models/contact-mutation.js.map +1 -0
- package/dist/api/models/contact.d.ts +54 -0
- package/dist/api/models/contact.d.ts.map +1 -0
- package/dist/api/models/contact.js +16 -0
- package/dist/api/models/contact.js.map +1 -0
- package/dist/api/models/document-document-type.d.ts +19 -0
- package/dist/api/models/document-document-type.d.ts.map +1 -0
- package/dist/api/models/document-document-type.js +16 -0
- package/dist/api/models/document-document-type.js.map +1 -0
- package/dist/api/models/document-domain.d.ts +19 -0
- package/dist/api/models/document-domain.d.ts.map +1 -0
- package/dist/api/models/document-domain.js +16 -0
- package/dist/api/models/document-domain.js.map +1 -0
- package/dist/api/models/document-folder.d.ts +19 -0
- package/dist/api/models/document-folder.d.ts.map +1 -0
- package/dist/api/models/document-folder.js +16 -0
- package/dist/api/models/document-folder.js.map +1 -0
- package/dist/api/models/document-mutation.d.ts +50 -0
- package/dist/api/models/document-mutation.d.ts.map +1 -0
- package/dist/api/models/document-mutation.js +16 -0
- package/dist/api/models/document-mutation.js.map +1 -0
- package/dist/api/models/document.d.ts +73 -0
- package/dist/api/models/document.d.ts.map +1 -0
- package/dist/api/models/document.js +16 -0
- package/dist/api/models/document.js.map +1 -0
- package/dist/api/models/folder-mutation.d.ts +38 -0
- package/dist/api/models/folder-mutation.d.ts.map +1 -0
- package/dist/api/models/folder-mutation.js +16 -0
- package/dist/api/models/folder-mutation.js.map +1 -0
- package/dist/api/models/folder-parent.d.ts +19 -0
- package/dist/api/models/folder-parent.d.ts.map +1 -0
- package/dist/api/models/folder-parent.js +16 -0
- package/dist/api/models/folder-parent.js.map +1 -0
- package/dist/api/models/folder.d.ts +65 -0
- package/dist/api/models/folder.d.ts.map +1 -0
- package/dist/api/models/folder.js +16 -0
- package/dist/api/models/folder.js.map +1 -0
- package/dist/api/models/group-mutation.d.ts +26 -0
- package/dist/api/models/group-mutation.d.ts.map +1 -0
- package/dist/api/models/group-mutation.js +16 -0
- package/dist/api/models/group-mutation.js.map +1 -0
- package/dist/api/models/group.d.ts +38 -0
- package/dist/api/models/group.d.ts.map +1 -0
- package/dist/api/models/group.js +16 -0
- package/dist/api/models/group.js.map +1 -0
- package/dist/api/models/index.d.ts +35 -0
- package/dist/api/models/index.d.ts.map +1 -0
- package/dist/api/models/index.js +51 -0
- package/dist/api/models/index.js.map +1 -0
- package/dist/api/models/model-error.d.ts +26 -0
- package/dist/api/models/model-error.d.ts.map +1 -0
- package/dist/api/models/model-error.js +16 -0
- package/dist/api/models/model-error.js.map +1 -0
- package/dist/api/models/oauth-revoke-post200-response.d.ts +15 -0
- package/dist/api/models/oauth-revoke-post200-response.d.ts.map +1 -0
- package/dist/api/models/oauth-revoke-post200-response.js +16 -0
- package/dist/api/models/oauth-revoke-post200-response.js.map +1 -0
- package/dist/api/models/permission-actor.d.ts +20 -0
- package/dist/api/models/permission-actor.d.ts.map +1 -0
- package/dist/api/models/permission-actor.js +16 -0
- package/dist/api/models/permission-actor.js.map +1 -0
- package/dist/api/models/permission-mutation.d.ts +44 -0
- package/dist/api/models/permission-mutation.d.ts.map +1 -0
- package/dist/api/models/permission-mutation.js +22 -0
- package/dist/api/models/permission-mutation.js.map +1 -0
- package/dist/api/models/permission-permissible.d.ts +20 -0
- package/dist/api/models/permission-permissible.d.ts.map +1 -0
- package/dist/api/models/permission-permissible.js +16 -0
- package/dist/api/models/permission-permissible.js.map +1 -0
- package/dist/api/models/permission.d.ts +60 -0
- package/dist/api/models/permission.d.ts.map +1 -0
- package/dist/api/models/permission.js +22 -0
- package/dist/api/models/permission.js.map +1 -0
- package/dist/api/models/token-response.d.ts +41 -0
- package/dist/api/models/token-response.d.ts.map +1 -0
- package/dist/api/models/token-response.js +16 -0
- package/dist/api/models/token-response.js.map +1 -0
- package/dist/api/models/user.d.ts +18 -0
- package/dist/api/models/user.d.ts.map +1 -0
- package/dist/api/models/user.js +16 -0
- package/dist/api/models/user.js.map +1 -0
- package/dist/api/models/workspace-mutation-settings-validation.d.ts +26 -0
- package/dist/api/models/workspace-mutation-settings-validation.d.ts.map +1 -0
- package/dist/api/models/workspace-mutation-settings-validation.js +16 -0
- package/dist/api/models/workspace-mutation-settings-validation.js.map +1 -0
- package/dist/api/models/workspace-mutation-settings.d.ts +60 -0
- package/dist/api/models/workspace-mutation-settings.d.ts.map +1 -0
- package/dist/api/models/workspace-mutation-settings.js +16 -0
- package/dist/api/models/workspace-mutation-settings.js.map +1 -0
- package/dist/api/models/workspace-mutation.d.ts +44 -0
- package/dist/api/models/workspace-mutation.d.ts.map +1 -0
- package/dist/api/models/workspace-mutation.js +16 -0
- package/dist/api/models/workspace-mutation.js.map +1 -0
- package/dist/api/models/workspace-settings-validation.d.ts +26 -0
- package/dist/api/models/workspace-settings-validation.d.ts.map +1 -0
- package/dist/api/models/workspace-settings-validation.js +16 -0
- package/dist/api/models/workspace-settings-validation.js.map +1 -0
- package/dist/api/models/workspace-settings.d.ts +60 -0
- package/dist/api/models/workspace-settings.d.ts.map +1 -0
- package/dist/api/models/workspace-settings.js +16 -0
- package/dist/api/models/workspace-settings.js.map +1 -0
- package/dist/api/models/workspace.d.ts +62 -0
- package/dist/api/models/workspace.d.ts.map +1 -0
- package/dist/api/models/workspace.js +16 -0
- package/dist/api/models/workspace.js.map +1 -0
- package/dist/cli/handlers/command-handlers.d.ts +29 -0
- package/dist/cli/handlers/command-handlers.d.ts.map +1 -0
- package/dist/cli/handlers/command-handlers.js +261 -0
- package/dist/cli/handlers/command-handlers.js.map +1 -0
- package/dist/cli/handlers/engine-handlers.d.ts +15 -0
- package/dist/cli/handlers/engine-handlers.d.ts.map +1 -0
- package/dist/cli/handlers/engine-handlers.js +174 -0
- package/dist/cli/handlers/engine-handlers.js.map +1 -0
- package/dist/cli/interactive.d.ts +15 -0
- package/dist/cli/interactive.d.ts.map +1 -0
- package/dist/cli/interactive.js +234 -0
- package/dist/cli/interactive.js.map +1 -0
- package/dist/cli.js +31 -740
- package/dist/cli.js.map +1 -1
- package/dist/commands/export.d.ts +1 -1
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +1 -1
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +5 -1
- package/dist/commands/import.js.map +1 -1
- package/dist/index.d.ts +27 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +63 -20
- package/dist/index.js.map +1 -1
- package/dist/services/hubdoc-api.d.ts +26 -6
- package/dist/services/hubdoc-api.d.ts.map +1 -1
- package/dist/services/hubdoc-api.js +194 -43
- package/dist/services/hubdoc-api.js.map +1 -1
- package/dist/services/hubdoc-export.d.ts +1 -1
- package/dist/services/hubdoc-export.d.ts.map +1 -1
- package/dist/services/hubdoc-export.js +1 -1
- package/dist/services/hubdoc-export.js.map +1 -1
- package/dist/services/oauth-token-service.d.ts +27 -14
- package/dist/services/oauth-token-service.d.ts.map +1 -1
- package/dist/services/oauth-token-service.js +147 -80
- package/dist/services/oauth-token-service.js.map +1 -1
- package/dist/services/plugin-import.d.ts +2 -2
- package/dist/services/plugin-import.d.ts.map +1 -1
- package/dist/services/plugin-import.js +2 -2
- package/dist/services/plugin-import.js.map +1 -1
- package/dist/services/plugin-manager.d.ts +6 -1
- package/dist/services/plugin-manager.d.ts.map +1 -1
- package/dist/services/plugin-manager.js +28 -2
- package/dist/services/plugin-manager.js.map +1 -1
- package/dist/types/index.d.ts +11 -37
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/config.d.ts +30 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +187 -40
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/csv.d.ts.map +1 -1
- package/dist/utils/csv.js +14 -3
- package/dist/utils/csv.js.map +1 -1
- package/package.json +23 -6
- package/.env.example +0 -23
- package/BAUTECH_HubDoc_Import.pptx +0 -0
- package/CHANGELOG.md +0 -134
- package/DEMO-DOCUMENTATION.html +0 -356
- package/DEMO-DOCUMENTATION.md +0 -411
- package/EXPORT-DOCUMENTATION.md +0 -333
- package/HUBDOC-API-V2.md +0 -248
- package/INSTALL.md +0 -175
- package/PACKAGING.md +0 -206
- package/PLUGINS.md +0 -328
- package/PRESENTATION-CLIENT.md +0 -100
- package/README-hubdoc-tool.md +0 -369
- package/README-npm.md +0 -238
- package/TESTING.md +0 -129
- package/config-examples/README.md +0 -36
- package/config-examples/alfresco-config.example.json +0 -8
- package/config-examples/azure-blob-config.example.json +0 -7
- package/config-examples/box-config.example.json +0 -5
- package/config-examples/nuxeo-config.example.json +0 -8
- package/config-examples/opentext-config.example.json +0 -7
- package/config-examples/s3-config.example.json +0 -8
- package/config-examples/sharepoint-config.example.json +0 -7
- package/demo/README.md +0 -199
- package/demo/demo-script.md +0 -284
- package/demo/generate-sample-csv.js +0 -351
- package/demo/mapping_bautech_15k.csv +0 -1
- package/demo/simulate-import.js +0 -273
- package/dist/commands/export-v2.d.ts +0 -45
- package/dist/commands/export-v2.d.ts.map +0 -1
- package/dist/commands/export-v2.js +0 -369
- package/dist/commands/export-v2.js.map +0 -1
- package/dist/commands/import-v2.d.ts +0 -32
- package/dist/commands/import-v2.d.ts.map +0 -1
- package/dist/commands/import-v2.js +0 -331
- package/dist/commands/import-v2.js.map +0 -1
- package/dist/services/hubdoc-api-v2.d.ts +0 -150
- package/dist/services/hubdoc-api-v2.d.ts.map +0 -1
- package/dist/services/hubdoc-api-v2.js +0 -418
- package/dist/services/hubdoc-api-v2.js.map +0 -1
- package/dist/services/hubdoc-client.d.ts +0 -246
- package/dist/services/hubdoc-client.d.ts.map +0 -1
- package/dist/services/hubdoc-client.js +0 -714
- package/dist/services/hubdoc-client.js.map +0 -1
- package/dist/services/hubdoc-export-service.d.ts +0 -90
- package/dist/services/hubdoc-export-service.d.ts.map +0 -1
- package/dist/services/hubdoc-export-service.js +0 -443
- package/dist/services/hubdoc-export-service.js.map +0 -1
- package/dist/services/hubdoc-export-v2.d.ts +0 -77
- package/dist/services/hubdoc-export-v2.d.ts.map +0 -1
- package/dist/services/hubdoc-export-v2.js +0 -329
- package/dist/services/hubdoc-export-v2.js.map +0 -1
- package/dist/services/hubdoc-import-service.d.ts +0 -64
- package/dist/services/hubdoc-import-service.d.ts.map +0 -1
- package/dist/services/hubdoc-import-service.js +0 -374
- package/dist/services/hubdoc-import-service.js.map +0 -1
- package/docs/README.md +0 -65
- package/docs/connectors/alfresco.md +0 -211
- package/docs/connectors/aws-s3.md +0 -187
- package/docs/connectors/azure-blob.md +0 -195
- package/docs/connectors/box.md +0 -115
- package/docs/connectors/nuxeo.md +0 -214
- package/docs/connectors/opentext.md +0 -234
- package/docs/connectors/sharepoint.md +0 -207
- package/documentation.html +0 -273
- package/jest.config.js +0 -15
- package/plugins/core/README.md +0 -122
- package/plugins/core/TESTING.md +0 -155
- package/plugins/core/plugin.json +0 -26
- package/plugins/dropbox/plugin.json +0 -12
- package/plugins/filesystem/plugin.json +0 -12
- package/plugins/googledrive/plugin.json +0 -12
- package/plugins/onedrive/TESTING.md +0 -197
- package/plugins/onedrive/plugin.json +0 -12
- package/scripts/build-windows-installer.ps1 +0 -132
- package/scripts/build-windows-installer.sh +0 -106
- package/scripts/prepare-publish.js +0 -62
- package/scripts/restore-package.js +0 -29
|
@@ -0,0 +1,174 @@
|
|
|
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
|
+
exports.handleFilesystemEngine = handleFilesystemEngine;
|
|
7
|
+
exports.handlePluginEngine = handlePluginEngine;
|
|
8
|
+
exports.handleEngineOperation = handleEngineOperation;
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
13
|
+
const config_1 = require("../../utils/config");
|
|
14
|
+
const import_1 = require("../../commands/import");
|
|
15
|
+
const plugin_import_1 = require("../../services/plugin-import");
|
|
16
|
+
/**
|
|
17
|
+
* Handle filesystem engine operations
|
|
18
|
+
*/
|
|
19
|
+
async function handleFilesystemEngine(options, configManager, logger) {
|
|
20
|
+
logger.startOperation('filesystem', 'import');
|
|
21
|
+
// Handle filesystem engine (existing direct import logic)
|
|
22
|
+
let sourceDir = options.source || process.cwd();
|
|
23
|
+
if (!sourceDir) {
|
|
24
|
+
const dirAnswer = await inquirer_1.default.prompt([
|
|
25
|
+
{
|
|
26
|
+
type: 'input',
|
|
27
|
+
name: 'sourceDir',
|
|
28
|
+
message: 'Enter source directory path:',
|
|
29
|
+
default: process.cwd(),
|
|
30
|
+
validate: async (input) => {
|
|
31
|
+
const resolvedPath = path_1.default.resolve(input);
|
|
32
|
+
if (!await fs_extra_1.default.pathExists(resolvedPath)) {
|
|
33
|
+
return `Directory not found: ${input}`;
|
|
34
|
+
}
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
]);
|
|
39
|
+
sourceDir = dirAnswer.sourceDir;
|
|
40
|
+
}
|
|
41
|
+
const resolvedDir = path_1.default.resolve(sourceDir);
|
|
42
|
+
if (!await fs_extra_1.default.pathExists(resolvedDir)) {
|
|
43
|
+
throw new Error(`Directory not found: ${sourceDir}`);
|
|
44
|
+
}
|
|
45
|
+
logger.log('INFO', 'SCAN', 'filesystem', `Scanning directory: ${resolvedDir}`);
|
|
46
|
+
// Load or create HubDoc configuration with automatic token management
|
|
47
|
+
logger.log('INFO', 'INIT', 'filesystem', 'Loading HubDoc configuration');
|
|
48
|
+
const config = await configManager.ensureValidConfig();
|
|
49
|
+
logger.log('INFO', 'INIT', 'filesystem', 'HubDoc configuration loaded');
|
|
50
|
+
logger.startImport('filesystem', 1); // We don't know count yet for filesystem
|
|
51
|
+
// Execute filesystem import
|
|
52
|
+
const importOptions = {
|
|
53
|
+
mode: 'direct',
|
|
54
|
+
sourceDir: resolvedDir,
|
|
55
|
+
interactive: true
|
|
56
|
+
};
|
|
57
|
+
const importCommand = new import_1.ImportCommand(config);
|
|
58
|
+
await importCommand.execute(importOptions);
|
|
59
|
+
logger.log('SUCCESS', 'IMPORT', 'filesystem', 'Filesystem import completed');
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Handle plugin-based engine operations (OneDrive, Google Drive, S3, etc.)
|
|
63
|
+
*/
|
|
64
|
+
async function handlePluginEngine(engine, options, configManager, logger) {
|
|
65
|
+
logger.startOperation(engine, 'scan');
|
|
66
|
+
// Load configuration
|
|
67
|
+
const config = await configManager.loadConfig();
|
|
68
|
+
if (!config) {
|
|
69
|
+
console.log(chalk_1.default.yellow('⚙️ Configuration required. Please run: hubdoc-tool config'));
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
logger.log('INFO', 'INIT', engine, 'Initializing plugin service');
|
|
73
|
+
const pluginService = new plugin_import_1.PluginImportService(config);
|
|
74
|
+
await pluginService.initialize();
|
|
75
|
+
const pluginManager = pluginService.getPluginManager();
|
|
76
|
+
// Check if plugin exists
|
|
77
|
+
const availablePlugin = pluginManager.getPlugin(engine);
|
|
78
|
+
if (!availablePlugin) {
|
|
79
|
+
throw new Error(`Plugin not found: ${engine}`);
|
|
80
|
+
}
|
|
81
|
+
// Check for existing connections
|
|
82
|
+
const connections = pluginManager.getConnections().filter(conn => conn.type === engine);
|
|
83
|
+
let connectionId;
|
|
84
|
+
if (connections.length === 0) {
|
|
85
|
+
console.log(chalk_1.default.yellow(`⚙️ No ${engine} connection found. Creating one...`));
|
|
86
|
+
logger.log('INFO', 'INIT', engine, 'Creating new connection');
|
|
87
|
+
// Interactive connection setup
|
|
88
|
+
const schema = availablePlugin.plugin.getConfigSchema();
|
|
89
|
+
const connectionConfig = {};
|
|
90
|
+
for (const [key, prop] of Object.entries(schema.properties || {})) {
|
|
91
|
+
if (schema.required?.includes(key)) {
|
|
92
|
+
const propObj = prop;
|
|
93
|
+
const answer = await inquirer_1.default.prompt([{
|
|
94
|
+
type: propObj.type === 'number' ? 'number' : 'input',
|
|
95
|
+
name: key,
|
|
96
|
+
message: `Enter ${propObj.description || key}:`,
|
|
97
|
+
validate: (input) => {
|
|
98
|
+
if (propObj.type === 'number') {
|
|
99
|
+
return !isNaN(input) || 'Must be a number';
|
|
100
|
+
}
|
|
101
|
+
return input?.toString().trim().length > 0 || 'This field is required';
|
|
102
|
+
}
|
|
103
|
+
}]);
|
|
104
|
+
connectionConfig[key] = answer[key];
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Add limit if provided
|
|
108
|
+
if (options.limit) {
|
|
109
|
+
connectionConfig.limit = parseInt(options.limit);
|
|
110
|
+
}
|
|
111
|
+
// Create connection
|
|
112
|
+
connectionId = `conn_${engine}_${Date.now()}`;
|
|
113
|
+
const connectionName = `${engine}-connection`;
|
|
114
|
+
await pluginManager.createConnection(connectionId, connectionName, engine, connectionConfig);
|
|
115
|
+
console.log(chalk_1.default.green(`✅ Connection created: ${connectionName}`));
|
|
116
|
+
logger.log('SUCCESS', 'INIT', engine, `Connection created: ${connectionName}`);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
connectionId = connections[0].id;
|
|
120
|
+
console.log(chalk_1.default.green(`✅ Using existing connection: ${connections[0].name}`));
|
|
121
|
+
logger.log('INFO', 'INIT', engine, `Using existing connection: ${connections[0].name}`);
|
|
122
|
+
}
|
|
123
|
+
// Generate mapping and import
|
|
124
|
+
const mappingFile = `${engine}-mapping.csv`;
|
|
125
|
+
const scanOptions = {};
|
|
126
|
+
if (options.limit) {
|
|
127
|
+
scanOptions.limit = parseInt(options.limit);
|
|
128
|
+
}
|
|
129
|
+
if (options.concurrentJobs) {
|
|
130
|
+
scanOptions.concurrent = parseInt(options.concurrentJobs);
|
|
131
|
+
}
|
|
132
|
+
logger.startScan(engine, scanOptions);
|
|
133
|
+
console.log(chalk_1.default.blue(`🔍 Scanning ${engine} documents...`));
|
|
134
|
+
const scanStart = Date.now();
|
|
135
|
+
await pluginService.generatePluginMapping(connectionId, mappingFile, scanOptions);
|
|
136
|
+
const scanDuration = Date.now() - scanStart;
|
|
137
|
+
logger.completeScan(engine, {
|
|
138
|
+
documentsFound: 0, // TODO: Get actual count from plugin service
|
|
139
|
+
totalSize: 0, // TODO: Get actual size from plugin service
|
|
140
|
+
duration: scanDuration
|
|
141
|
+
});
|
|
142
|
+
logger.startImport(engine, 0); // TODO: Get document count
|
|
143
|
+
console.log(chalk_1.default.blue(`📥 Importing documents from ${engine}...`));
|
|
144
|
+
await pluginService.importFromPluginMapping(mappingFile);
|
|
145
|
+
logger.log('SUCCESS', 'IMPORT', engine, `Import completed from ${engine} engine`);
|
|
146
|
+
console.log(chalk_1.default.green(`✅ Import completed from ${engine} engine!`));
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Route to appropriate engine handler
|
|
150
|
+
*/
|
|
151
|
+
async function handleEngineOperation(engine, options, logger) {
|
|
152
|
+
const configManager = new config_1.ConfigManager();
|
|
153
|
+
switch (engine) {
|
|
154
|
+
case 'filesystem':
|
|
155
|
+
await handleFilesystemEngine(options, configManager, logger);
|
|
156
|
+
break;
|
|
157
|
+
case 'onedrive':
|
|
158
|
+
case 'googledrive':
|
|
159
|
+
case 'dropbox':
|
|
160
|
+
case 'core':
|
|
161
|
+
case 'box':
|
|
162
|
+
case 's3':
|
|
163
|
+
case 'azure-blob':
|
|
164
|
+
case 'alfresco':
|
|
165
|
+
case 'sharepoint':
|
|
166
|
+
case 'nuxeo':
|
|
167
|
+
case 'opentext':
|
|
168
|
+
await handlePluginEngine(engine, options, configManager, logger);
|
|
169
|
+
break;
|
|
170
|
+
default:
|
|
171
|
+
throw new Error(`Unsupported engine: ${engine}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=engine-handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-handlers.js","sourceRoot":"","sources":["../../../src/cli/handlers/engine-handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ImportOptions } from '../types';
|
|
2
|
+
import { ExportOptions } from '../types/export';
|
|
3
|
+
/**
|
|
4
|
+
* Run interactive mode for import command
|
|
5
|
+
*/
|
|
6
|
+
export declare function runInteractiveImportMode(): Promise<ImportOptions>;
|
|
7
|
+
/**
|
|
8
|
+
* Run interactive mode for export command
|
|
9
|
+
*/
|
|
10
|
+
export declare function runInteractiveExportMode(): Promise<ExportOptions>;
|
|
11
|
+
/**
|
|
12
|
+
* Run interactive engine selection
|
|
13
|
+
*/
|
|
14
|
+
export declare function runEngineSelection(forceInteractive?: boolean): Promise<string>;
|
|
15
|
+
//# sourceMappingURL=interactive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/cli/interactive.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;GAEG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,aAAa,CAAC,CA0FvE;AAED;;GAEG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,aAAa,CAAC,CAoGvE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,gBAAgB,GAAE,OAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAkC3F"}
|
|
@@ -0,0 +1,234 @@
|
|
|
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
|
+
exports.runInteractiveImportMode = runInteractiveImportMode;
|
|
7
|
+
exports.runInteractiveExportMode = runInteractiveExportMode;
|
|
8
|
+
exports.runEngineSelection = runEngineSelection;
|
|
9
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
10
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
13
|
+
/**
|
|
14
|
+
* Run interactive mode for import command
|
|
15
|
+
*/
|
|
16
|
+
async function runInteractiveImportMode() {
|
|
17
|
+
console.log(chalk_1.default.blue('🚀 HubDoc Import Wizard'));
|
|
18
|
+
const questions = [
|
|
19
|
+
{
|
|
20
|
+
type: 'list',
|
|
21
|
+
name: 'mode',
|
|
22
|
+
message: 'Select import mode:',
|
|
23
|
+
choices: [
|
|
24
|
+
{
|
|
25
|
+
name: 'Direct Import - Import all files from a directory',
|
|
26
|
+
value: 'direct'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'Mapping Import - Use a CSV mapping file',
|
|
30
|
+
value: 'mapping'
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
];
|
|
35
|
+
const answers = await inquirer_1.default.prompt(questions);
|
|
36
|
+
if (answers.mode === 'direct') {
|
|
37
|
+
const dirQuestion = await inquirer_1.default.prompt([
|
|
38
|
+
{
|
|
39
|
+
type: 'input',
|
|
40
|
+
name: 'sourceDir',
|
|
41
|
+
message: 'Enter source directory path:',
|
|
42
|
+
default: process.cwd(),
|
|
43
|
+
validate: async (input) => {
|
|
44
|
+
const resolvedPath = path_1.default.resolve(input);
|
|
45
|
+
if (!await fs_extra_1.default.pathExists(resolvedPath)) {
|
|
46
|
+
return `Directory not found: ${input}`;
|
|
47
|
+
}
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
]);
|
|
52
|
+
const concurrentQuestion = await inquirer_1.default.prompt([
|
|
53
|
+
{
|
|
54
|
+
type: 'number',
|
|
55
|
+
name: 'concurrentJobs',
|
|
56
|
+
message: 'Number of concurrent import jobs:',
|
|
57
|
+
default: 1,
|
|
58
|
+
validate: (input) => input > 0 && input <= 10 || 'Must be between 1 and 10'
|
|
59
|
+
}
|
|
60
|
+
]);
|
|
61
|
+
return {
|
|
62
|
+
mode: 'direct',
|
|
63
|
+
sourceDir: path_1.default.resolve(dirQuestion.sourceDir),
|
|
64
|
+
concurrentJobs: concurrentQuestion.concurrentJobs,
|
|
65
|
+
interactive: true
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
const mappingQuestion = await inquirer_1.default.prompt([
|
|
70
|
+
{
|
|
71
|
+
type: 'input',
|
|
72
|
+
name: 'mappingFile',
|
|
73
|
+
message: 'Enter CSV mapping file path:',
|
|
74
|
+
default: 'mapping.csv',
|
|
75
|
+
validate: async (input) => {
|
|
76
|
+
const resolvedPath = path_1.default.resolve(input);
|
|
77
|
+
if (!await fs_extra_1.default.pathExists(resolvedPath)) {
|
|
78
|
+
return `Mapping file not found: ${input}`;
|
|
79
|
+
}
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
]);
|
|
84
|
+
const concurrentQuestion = await inquirer_1.default.prompt([
|
|
85
|
+
{
|
|
86
|
+
type: 'number',
|
|
87
|
+
name: 'concurrentJobs',
|
|
88
|
+
message: 'Number of concurrent import jobs:',
|
|
89
|
+
default: 1,
|
|
90
|
+
validate: (input) => input > 0 && input <= 10 || 'Must be between 1 and 10'
|
|
91
|
+
}
|
|
92
|
+
]);
|
|
93
|
+
return {
|
|
94
|
+
mode: 'mapping',
|
|
95
|
+
mappingFile: path_1.default.resolve(mappingQuestion.mappingFile),
|
|
96
|
+
concurrentJobs: concurrentQuestion.concurrentJobs,
|
|
97
|
+
interactive: true
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Run interactive mode for export command
|
|
103
|
+
*/
|
|
104
|
+
async function runInteractiveExportMode() {
|
|
105
|
+
console.log(chalk_1.default.blue('📦 HubDoc Export Wizard'));
|
|
106
|
+
const questions = [
|
|
107
|
+
{
|
|
108
|
+
type: 'list',
|
|
109
|
+
name: 'mode',
|
|
110
|
+
message: 'Select export mode:',
|
|
111
|
+
choices: [
|
|
112
|
+
{
|
|
113
|
+
name: 'Scan Mode - Generate export mapping file',
|
|
114
|
+
value: 'scan'
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
name: 'Export Mode - Download documents using mapping file',
|
|
118
|
+
value: 'export'
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
}
|
|
122
|
+
];
|
|
123
|
+
const answers = await inquirer_1.default.prompt(questions);
|
|
124
|
+
if (answers.mode === 'scan') {
|
|
125
|
+
const scanQuestions = await inquirer_1.default.prompt([
|
|
126
|
+
{
|
|
127
|
+
type: 'input',
|
|
128
|
+
name: 'projectFilter',
|
|
129
|
+
message: 'Filter by project name (optional):',
|
|
130
|
+
default: ''
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
type: 'input',
|
|
134
|
+
name: 'domainFilter',
|
|
135
|
+
message: 'Filter by domain (optional):',
|
|
136
|
+
default: ''
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
type: 'input',
|
|
140
|
+
name: 'mappingFile',
|
|
141
|
+
message: 'Output mapping file:',
|
|
142
|
+
default: 'export-mapping.csv'
|
|
143
|
+
}
|
|
144
|
+
]);
|
|
145
|
+
return {
|
|
146
|
+
mode: 'scan',
|
|
147
|
+
projectFilter: scanQuestions.projectFilter || undefined,
|
|
148
|
+
domainFilter: scanQuestions.domainFilter || undefined,
|
|
149
|
+
mappingFile: scanQuestions.mappingFile,
|
|
150
|
+
interactive: true
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
const exportQuestions = await inquirer_1.default.prompt([
|
|
155
|
+
{
|
|
156
|
+
type: 'input',
|
|
157
|
+
name: 'mappingFile',
|
|
158
|
+
message: 'Export mapping file:',
|
|
159
|
+
default: 'export-mapping.csv',
|
|
160
|
+
validate: async (input) => {
|
|
161
|
+
const resolvedPath = path_1.default.resolve(input);
|
|
162
|
+
if (!await fs_extra_1.default.pathExists(resolvedPath)) {
|
|
163
|
+
return `Mapping file not found: ${input}`;
|
|
164
|
+
}
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
type: 'input',
|
|
170
|
+
name: 'outputDir',
|
|
171
|
+
message: 'Output directory:',
|
|
172
|
+
default: './export'
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
type: 'confirm',
|
|
176
|
+
name: 'generateXmlMetadata',
|
|
177
|
+
message: 'Generate XML metadata files (*_metadata.xml)?',
|
|
178
|
+
default: false
|
|
179
|
+
}
|
|
180
|
+
]);
|
|
181
|
+
const concurrentQuestion = await inquirer_1.default.prompt([
|
|
182
|
+
{
|
|
183
|
+
type: 'number',
|
|
184
|
+
name: 'concurrentJobs',
|
|
185
|
+
message: 'Number of concurrent export jobs:',
|
|
186
|
+
default: 1,
|
|
187
|
+
validate: (input) => input > 0 && input <= 10 || 'Must be between 1 and 10'
|
|
188
|
+
}
|
|
189
|
+
]);
|
|
190
|
+
return {
|
|
191
|
+
mode: 'export',
|
|
192
|
+
mappingFile: path_1.default.resolve(exportQuestions.mappingFile),
|
|
193
|
+
outputDir: exportQuestions.outputDir,
|
|
194
|
+
concurrentJobs: concurrentQuestion.concurrentJobs,
|
|
195
|
+
generateXmlMetadata: exportQuestions.generateXmlMetadata,
|
|
196
|
+
interactive: true
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Run interactive engine selection
|
|
202
|
+
*/
|
|
203
|
+
async function runEngineSelection(forceInteractive = false) {
|
|
204
|
+
if (!forceInteractive) {
|
|
205
|
+
console.log(chalk_1.default.gray('Using filesystem engine by default. Use --interactive to select engine.'));
|
|
206
|
+
return 'filesystem';
|
|
207
|
+
}
|
|
208
|
+
console.log(chalk_1.default.blue('🔧 Engine Selection'));
|
|
209
|
+
const engineChoices = [
|
|
210
|
+
{ name: 'Filesystem - Import local files and directories', value: 'filesystem' },
|
|
211
|
+
{ name: 'Core - Import from Core document management system', value: 'core' },
|
|
212
|
+
{ name: 'OneDrive - Import from Microsoft OneDrive', value: 'onedrive' },
|
|
213
|
+
{ name: 'Google Drive - Import from Google Drive', value: 'googledrive' },
|
|
214
|
+
{ name: 'Dropbox - Import from Dropbox', value: 'dropbox' },
|
|
215
|
+
{ name: 'Box - Import from Box Cloud Storage', value: 'box' },
|
|
216
|
+
{ name: 'AWS S3 - Import from Amazon S3', value: 's3' },
|
|
217
|
+
{ name: 'Azure Blob - Import from Azure Blob Storage', value: 'azure-blob' },
|
|
218
|
+
{ name: 'Alfresco - Import from Alfresco ECM', value: 'alfresco' },
|
|
219
|
+
{ name: 'SharePoint - Import from SharePoint Online', value: 'sharepoint' },
|
|
220
|
+
{ name: 'Nuxeo - Import from Nuxeo Platform', value: 'nuxeo' },
|
|
221
|
+
{ name: 'OpenText - Import from OpenText Content Server', value: 'opentext' }
|
|
222
|
+
];
|
|
223
|
+
const answer = await inquirer_1.default.prompt([
|
|
224
|
+
{
|
|
225
|
+
type: 'list',
|
|
226
|
+
name: 'engine',
|
|
227
|
+
message: 'Select document source engine:',
|
|
228
|
+
choices: engineChoices,
|
|
229
|
+
default: 'filesystem'
|
|
230
|
+
}
|
|
231
|
+
]);
|
|
232
|
+
return answer.engine;
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=interactive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/cli/interactive.ts"],"names":[],"mappings":"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"}
|