@webiny/api-page-builder-import-export 0.0.0-unstable.990c3ab1b6 → 0.0.0-unstable.9bd236cf5e
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/client.d.ts +2 -2
- package/client.js +12 -21
- package/client.js.map +1 -1
- package/export/combine/blocksHandler.d.ts +6 -0
- package/export/combine/blocksHandler.js +101 -0
- package/export/combine/blocksHandler.js.map +1 -0
- package/export/combine/formsHandler.d.ts +6 -0
- package/export/combine/formsHandler.js +101 -0
- package/export/combine/formsHandler.js.map +1 -0
- package/{exportPages → export}/combine/index.d.ts +4 -3
- package/export/combine/index.js +44 -0
- package/export/combine/index.js.map +1 -0
- package/export/combine/templatesHandler.d.ts +6 -0
- package/export/combine/templatesHandler.js +101 -0
- package/export/combine/templatesHandler.js.map +1 -0
- package/export/pages/ExportPagesCleanup.d.ts +5 -0
- package/export/pages/ExportPagesCleanup.js +82 -0
- package/export/pages/ExportPagesCleanup.js.map +1 -0
- package/export/pages/ExportPagesController.d.ts +5 -0
- package/export/pages/ExportPagesController.js +31 -0
- package/export/pages/ExportPagesController.js.map +1 -0
- package/export/pages/ExportPagesZipPages.d.ts +5 -0
- package/export/pages/ExportPagesZipPages.js +23 -0
- package/export/pages/ExportPagesZipPages.js.map +1 -0
- package/export/pages/controller/CombineZippedPages.d.ts +5 -0
- package/export/pages/controller/CombineZippedPages.js +75 -0
- package/export/pages/controller/CombineZippedPages.js.map +1 -0
- package/export/pages/controller/CreateZipPagesTasks.d.ts +8 -0
- package/export/pages/controller/CreateZipPagesTasks.js +103 -0
- package/export/pages/controller/CreateZipPagesTasks.js.map +1 -0
- package/export/pages/controller/ProcessZipPagesTasks.d.ts +6 -0
- package/export/pages/controller/ProcessZipPagesTasks.js +61 -0
- package/export/pages/controller/ProcessZipPagesTasks.js.map +1 -0
- package/export/pages/types.d.ts +53 -0
- package/export/pages/types.js +26 -0
- package/export/pages/types.js.map +1 -0
- package/export/pages/utils.d.ts +2 -0
- package/export/pages/utils.js +13 -0
- package/export/pages/utils.js.map +1 -0
- package/export/pages/zipPages/ZipPages.d.ts +5 -0
- package/export/pages/zipPages/ZipPages.js +100 -0
- package/export/pages/zipPages/ZipPages.js.map +1 -0
- package/export/pages/zipPages/ZipPagesDataManager.d.ts +14 -0
- package/export/pages/zipPages/ZipPagesDataManager.js +46 -0
- package/export/pages/zipPages/ZipPagesDataManager.js.map +1 -0
- package/export/pages/zipPages/getPageFactory.d.ts +4 -0
- package/export/pages/zipPages/getPageFactory.js +38 -0
- package/export/pages/zipPages/getPageFactory.js.map +1 -0
- package/export/process/blocksHandler.d.ts +6 -0
- package/export/process/blocksHandler.js +169 -0
- package/export/process/blocksHandler.js.map +1 -0
- package/export/process/exporters/BlockExporter.d.ts +12 -0
- package/export/process/exporters/BlockExporter.js +57 -0
- package/export/process/exporters/BlockExporter.js.map +1 -0
- package/export/process/exporters/FormExporter.d.ts +9 -0
- package/export/process/exporters/FormExporter.js +36 -0
- package/export/process/exporters/FormExporter.js.map +1 -0
- package/export/process/exporters/PageExporter.d.ts +18 -0
- package/export/process/exporters/PageExporter.js +59 -0
- package/export/process/exporters/PageExporter.js.map +1 -0
- package/export/process/exporters/PageTemplateExporter.d.ts +11 -0
- package/export/process/exporters/PageTemplateExporter.js +58 -0
- package/export/process/exporters/PageTemplateExporter.js.map +1 -0
- package/export/process/formsHandler.d.ts +6 -0
- package/export/process/formsHandler.js +189 -0
- package/export/process/formsHandler.js.map +1 -0
- package/{exportPages → export}/process/index.d.ts +5 -7
- package/export/process/index.js +41 -0
- package/export/process/index.js.map +1 -0
- package/export/process/templatesHandler.d.ts +6 -0
- package/export/process/templatesHandler.js +168 -0
- package/export/process/templatesHandler.js.map +1 -0
- package/export/s3Stream.d.ts +36 -0
- package/{exportPages → export}/s3Stream.js +27 -23
- package/export/s3Stream.js.map +1 -0
- package/export/utils.d.ts +24 -0
- package/export/utils.js +169 -0
- package/export/utils.js.map +1 -0
- package/{exportPages → export}/zipper.d.ts +12 -10
- package/{exportPages → export}/zipper.js +26 -29
- package/export/zipper.js.map +1 -0
- package/graphql/crud/blocks.crud.d.ts +4 -0
- package/graphql/crud/blocks.crud.js +158 -0
- package/graphql/crud/blocks.crud.js.map +1 -0
- package/graphql/crud/forms.crud.d.ts +4 -0
- package/graphql/crud/forms.crud.js +162 -0
- package/graphql/crud/forms.crud.js.map +1 -0
- package/graphql/crud/importExportTasks.crud.d.ts +5 -0
- package/graphql/crud/importExportTasks.crud.js +396 -0
- package/graphql/crud/importExportTasks.crud.js.map +1 -0
- package/graphql/crud/pages.crud.d.ts +2 -2
- package/graphql/crud/pages.crud.js +238 -117
- package/graphql/crud/pages.crud.js.map +1 -1
- package/graphql/crud/templates.crud.d.ts +4 -0
- package/graphql/crud/templates.crud.js +156 -0
- package/graphql/crud/templates.crud.js.map +1 -0
- package/graphql/crud.d.ts +2 -2
- package/graphql/crud.js +8 -3
- package/graphql/crud.js.map +1 -1
- package/graphql/graphql/blocks.gql.d.ts +4 -0
- package/graphql/graphql/blocks.gql.js +52 -0
- package/graphql/graphql/blocks.gql.js.map +1 -0
- package/graphql/graphql/forms.gql.d.ts +4 -0
- package/graphql/graphql/forms.gql.js +60 -0
- package/graphql/graphql/forms.gql.js.map +1 -0
- package/graphql/graphql/importExportTasks.gql.d.ts +4 -0
- package/graphql/graphql/importExportTasks.gql.js +75 -0
- package/graphql/graphql/importExportTasks.gql.js.map +1 -0
- package/graphql/graphql/pages.gql.d.ts +3 -3
- package/graphql/graphql/pages.gql.js +103 -20
- package/graphql/graphql/pages.gql.js.map +1 -1
- package/graphql/graphql/templates.gql.d.ts +4 -0
- package/graphql/graphql/templates.gql.js +52 -0
- package/graphql/graphql/templates.gql.js.map +1 -0
- package/graphql/graphql/utils/resolve.d.ts +3 -3
- package/graphql/graphql/utils/resolve.js +16 -5
- package/graphql/graphql/utils/resolve.js.map +1 -1
- package/graphql/graphql.d.ts +1 -1
- package/graphql/graphql.js +7 -3
- package/graphql/graphql.js.map +1 -1
- package/graphql/index.d.ts +2 -2
- package/graphql/index.js +5 -2
- package/graphql/index.js.map +1 -1
- package/graphql/types.d.ts +237 -37
- package/graphql/types.js +3 -1
- package/graphql/types.js.map +1 -1
- package/import/constants.d.ts +3 -0
- package/import/constants.js +13 -0
- package/import/constants.js.map +1 -0
- package/import/create/blocksHandler.d.ts +3 -0
- package/import/create/blocksHandler.js +101 -0
- package/import/create/blocksHandler.js.map +1 -0
- package/import/create/formsHandler.d.ts +3 -0
- package/import/create/formsHandler.js +105 -0
- package/import/create/formsHandler.js.map +1 -0
- package/import/create/index.d.ts +24 -0
- package/import/create/index.js +44 -0
- package/import/create/index.js.map +1 -0
- package/import/create/pagesHandler.d.ts +3 -0
- package/import/create/pagesHandler.js +105 -0
- package/import/create/pagesHandler.js.map +1 -0
- package/import/create/templatesHandler.d.ts +3 -0
- package/import/create/templatesHandler.js +101 -0
- package/import/create/templatesHandler.js.map +1 -0
- package/import/pages/ImportPagesController.d.ts +5 -0
- package/import/pages/ImportPagesController.js +29 -0
- package/import/pages/ImportPagesController.js.map +1 -0
- package/import/pages/ImportPagesProcessPages.d.ts +6 -0
- package/import/pages/ImportPagesProcessPages.js +112 -0
- package/import/pages/ImportPagesProcessPages.js.map +1 -0
- package/import/pages/controller/ImportPagesProcessPagesChecker.d.ts +6 -0
- package/import/pages/controller/ImportPagesProcessPagesChecker.js +40 -0
- package/import/pages/controller/ImportPagesProcessPagesChecker.js.map +1 -0
- package/import/pages/controller/ImportPagesProcessZipFile.d.ts +5 -0
- package/import/pages/controller/ImportPagesProcessZipFile.js +71 -0
- package/import/pages/controller/ImportPagesProcessZipFile.js.map +1 -0
- package/import/pages/process/importPage.d.ts +10 -0
- package/import/pages/process/importPage.js +94 -0
- package/import/pages/process/importPage.js.map +1 -0
- package/import/pages/types.d.ts +48 -0
- package/import/pages/types.js +20 -0
- package/import/pages/types.js.map +1 -0
- package/import/process/blocks/ElementIdsProcessor.d.ts +5 -0
- package/import/process/blocks/ElementIdsProcessor.js +26 -0
- package/import/process/blocks/ElementIdsProcessor.js.map +1 -0
- package/import/process/blocks/blocksHandler.d.ts +3 -0
- package/import/process/blocks/blocksHandler.js +169 -0
- package/import/process/blocks/blocksHandler.js.map +1 -0
- package/import/process/blocks/importBlock.d.ts +11 -0
- package/import/process/blocks/importBlock.js +101 -0
- package/import/process/blocks/importBlock.js.map +1 -0
- package/import/process/forms/formsHandler.d.ts +3 -0
- package/import/process/forms/formsHandler.js +178 -0
- package/import/process/forms/formsHandler.js.map +1 -0
- package/import/process/forms/importForm.d.ts +9 -0
- package/import/process/forms/importForm.js +47 -0
- package/import/process/forms/importForm.js.map +1 -0
- package/{importPages → import}/process/index.d.ts +6 -4
- package/import/process/index.js +41 -0
- package/import/process/index.js.map +1 -0
- package/import/process/templates/importTemplate.d.ts +11 -0
- package/import/process/templates/importTemplate.js +70 -0
- package/import/process/templates/importTemplate.js.map +1 -0
- package/import/process/templates/templatesHandler.d.ts +3 -0
- package/import/process/templates/templatesHandler.js +174 -0
- package/import/process/templates/templatesHandler.js.map +1 -0
- package/import/utils/deleteS3Folder.d.ts +1 -0
- package/import/utils/deleteS3Folder.js +21 -0
- package/import/utils/deleteS3Folder.js.map +1 -0
- package/import/utils/extractAndUploadZipFileContents.d.ts +7 -0
- package/import/utils/extractAndUploadZipFileContents.js +126 -0
- package/import/utils/extractAndUploadZipFileContents.js.map +1 -0
- package/import/utils/extractZipAndUploadToS3.d.ts +2 -0
- package/import/utils/extractZipAndUploadToS3.js +100 -0
- package/import/utils/extractZipAndUploadToS3.js.map +1 -0
- package/import/utils/getFileNameWithoutExt.d.ts +1 -0
- package/import/utils/getFileNameWithoutExt.js +13 -0
- package/import/utils/getFileNameWithoutExt.js.map +1 -0
- package/import/utils/index.d.ts +9 -0
- package/import/utils/index.js +106 -0
- package/import/utils/index.js.map +1 -0
- package/import/utils/initialStats.d.ts +7 -0
- package/import/utils/initialStats.js +18 -0
- package/import/utils/initialStats.js.map +1 -0
- package/import/utils/prepareDataDirMap.d.ts +6 -0
- package/import/utils/prepareDataDirMap.js +31 -0
- package/import/utils/prepareDataDirMap.js.map +1 -0
- package/import/utils/updateFilesInData.d.ts +8 -0
- package/import/utils/updateFilesInData.js +51 -0
- package/import/utils/updateFilesInData.js.map +1 -0
- package/import/utils/uploadAssets.d.ts +10 -0
- package/import/utils/uploadAssets.js +92 -0
- package/import/utils/uploadAssets.js.map +1 -0
- package/import/utils/uploadFilesFromS3.d.ts +3 -0
- package/import/utils/uploadFilesFromS3.js +21 -0
- package/import/utils/uploadFilesFromS3.js.map +1 -0
- package/mockSecurity.d.ts +1 -1
- package/mockSecurity.js +3 -2
- package/mockSecurity.js.map +1 -1
- package/package.json +36 -52
- package/tasks/common/ChildTasksCleanup.d.ts +12 -0
- package/tasks/common/ChildTasksCleanup.js +64 -0
- package/tasks/common/ChildTasksCleanup.js.map +1 -0
- package/tasks/index.d.ts +1 -0
- package/tasks/index.js +13 -0
- package/tasks/index.js.map +1 -0
- package/tasks/pages/exportPagesCleanupTask.d.ts +3 -0
- package/tasks/pages/exportPagesCleanupTask.js +36 -0
- package/tasks/pages/exportPagesCleanupTask.js.map +1 -0
- package/tasks/pages/exportPagesControllerTask.d.ts +3 -0
- package/tasks/pages/exportPagesControllerTask.js +83 -0
- package/tasks/pages/exportPagesControllerTask.js.map +1 -0
- package/tasks/pages/exportPagesZipPagesTask.d.ts +3 -0
- package/tasks/pages/exportPagesZipPagesTask.js +39 -0
- package/tasks/pages/exportPagesZipPagesTask.js.map +1 -0
- package/tasks/pages/importPagesControllerTask.d.ts +3 -0
- package/tasks/pages/importPagesControllerTask.js +39 -0
- package/tasks/pages/importPagesControllerTask.js.map +1 -0
- package/tasks/pages/importPagesProcessPageTask.d.ts +3 -0
- package/tasks/pages/importPagesProcessPageTask.js +39 -0
- package/tasks/pages/importPagesProcessPageTask.js.map +1 -0
- package/tasks/pages/index.d.ts +1 -0
- package/tasks/pages/index.js +17 -0
- package/tasks/pages/index.js.map +1 -0
- package/types.d.ts +83 -65
- package/types.js +69 -17
- package/types.js.map +1 -1
- package/utils/ZipFiles.d.ts +11 -0
- package/utils/ZipFiles.js +124 -0
- package/utils/ZipFiles.js.map +1 -0
- package/exportPages/combine/index.js +0 -106
- package/exportPages/combine/index.js.map +0 -1
- package/exportPages/process/index.js +0 -192
- package/exportPages/process/index.js.map +0 -1
- package/exportPages/s3Stream.d.ts +0 -31
- package/exportPages/s3Stream.js.map +0 -1
- package/exportPages/utils.d.ts +0 -13
- package/exportPages/utils.js +0 -100
- package/exportPages/utils.js.map +0 -1
- package/exportPages/zipper.js.map +0 -1
- package/graphql/crud/pageImportExportTasks.crud.d.ts +0 -5
- package/graphql/crud/pageImportExportTasks.crud.js +0 -363
- package/graphql/crud/pageImportExportTasks.crud.js.map +0 -1
- package/graphql/graphql/pageImportExportTasks.gql.d.ts +0 -4
- package/graphql/graphql/pageImportExportTasks.gql.js +0 -75
- package/graphql/graphql/pageImportExportTasks.gql.js.map +0 -1
- package/importPages/create/index.d.ts +0 -22
- package/importPages/create/index.js +0 -107
- package/importPages/create/index.js.map +0 -1
- package/importPages/process/index.js +0 -180
- package/importPages/process/index.js.map +0 -1
- package/importPages/utils.d.ts +0 -50
- package/importPages/utils.js +0 -488
- package/importPages/utils.js.map +0 -1
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.deleteS3Folder = deleteS3Folder;
|
|
7
|
+
var _s3Stream = require("../../export/s3Stream");
|
|
8
|
+
async function deleteS3Folder(key) {
|
|
9
|
+
// Append trailing slash i.e "/" to key to make sure we only delete a specific folder.
|
|
10
|
+
if (!key.endsWith("/")) {
|
|
11
|
+
key = `${key}/`;
|
|
12
|
+
}
|
|
13
|
+
const response = await _s3Stream.s3Stream.listObject(key);
|
|
14
|
+
const keys = (response.Contents || []).map(c => c.Key).filter(Boolean);
|
|
15
|
+
console.log(`Found ${keys.length} files.`);
|
|
16
|
+
const deleteFilePromises = keys.map(key => _s3Stream.s3Stream.deleteObject(key));
|
|
17
|
+
await Promise.all(deleteFilePromises);
|
|
18
|
+
console.log(`Successfully deleted ${deleteFilePromises.length} files.`);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=deleteS3Folder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_s3Stream","require","deleteS3Folder","key","endsWith","response","s3Stream","listObject","keys","Contents","map","c","Key","filter","Boolean","console","log","length","deleteFilePromises","deleteObject","Promise","all"],"sources":["deleteS3Folder.ts"],"sourcesContent":["import { s3Stream } from \"~/export/s3Stream\";\n\nexport async function deleteS3Folder(key: string): Promise<void> {\n // Append trailing slash i.e \"/\" to key to make sure we only delete a specific folder.\n if (!key.endsWith(\"/\")) {\n key = `${key}/`;\n }\n\n const response = await s3Stream.listObject(key);\n const keys = (response.Contents || []).map(c => c.Key).filter(Boolean) as string[];\n console.log(`Found ${keys.length} files.`);\n\n const deleteFilePromises = keys.map(key => s3Stream.deleteObject(key));\n\n await Promise.all(deleteFilePromises);\n console.log(`Successfully deleted ${deleteFilePromises.length} files.`);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAEO,eAAeC,cAAcA,CAACC,GAAW,EAAiB;EAC7D;EACA,IAAI,CAACA,GAAG,CAACC,QAAQ,CAAC,GAAG,CAAC,EAAE;IACpBD,GAAG,GAAG,GAAGA,GAAG,GAAG;EACnB;EAEA,MAAME,QAAQ,GAAG,MAAMC,kBAAQ,CAACC,UAAU,CAACJ,GAAG,CAAC;EAC/C,MAAMK,IAAI,GAAG,CAACH,QAAQ,CAACI,QAAQ,IAAI,EAAE,EAAEC,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,GAAG,CAAC,CAACC,MAAM,CAACC,OAAO,CAAa;EAClFC,OAAO,CAACC,GAAG,CAAC,SAASR,IAAI,CAACS,MAAM,SAAS,CAAC;EAE1C,MAAMC,kBAAkB,GAAGV,IAAI,CAACE,GAAG,CAACP,GAAG,IAAIG,kBAAQ,CAACa,YAAY,CAAChB,GAAG,CAAC,CAAC;EAEtE,MAAMiB,OAAO,CAACC,GAAG,CAACH,kBAAkB,CAAC;EACrCH,OAAO,CAACC,GAAG,CAAC,wBAAwBE,kBAAkB,CAACD,MAAM,SAAS,CAAC;AAC3E","ignoreList":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ImportData } from "../../types";
|
|
2
|
+
/**
|
|
3
|
+
* Function will read the given zip file from S3 via stream, extract its content and upload it to S3 bucket.
|
|
4
|
+
* @param zipFileUrl
|
|
5
|
+
* @return ImportData S3 file keys for all uploaded assets group by page/block.
|
|
6
|
+
*/
|
|
7
|
+
export declare function extractAndUploadZipFileContents(zipFileUrl: string): Promise<ImportData[]>;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.extractAndUploadZipFileContents = extractAndUploadZipFileContents;
|
|
8
|
+
var _stream = require("stream");
|
|
9
|
+
var _util = require("util");
|
|
10
|
+
var _nodeFetch = _interopRequireDefault(require("node-fetch"));
|
|
11
|
+
var _path = _interopRequireDefault(require("path"));
|
|
12
|
+
var _yauzl = _interopRequireDefault(require("yauzl"));
|
|
13
|
+
var _fs = require("fs");
|
|
14
|
+
var _uniqid = _interopRequireDefault(require("uniqid"));
|
|
15
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
16
|
+
var _downloadInstallFiles = require("@webiny/api-page-builder/graphql/crud/install/utils/downloadInstallFiles");
|
|
17
|
+
var _extractZipAndUploadToS = require("./extractZipAndUploadToS3");
|
|
18
|
+
var _getFileNameWithoutExt = require("./getFileNameWithoutExt");
|
|
19
|
+
var _constants = require("../constants");
|
|
20
|
+
var _fsExtra = require("fs-extra");
|
|
21
|
+
const streamPipeline = (0, _util.promisify)(_stream.pipeline);
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Function will read the given zip file from S3 via stream, extract its content and upload it to S3 bucket.
|
|
25
|
+
* @param zipFileUrl
|
|
26
|
+
* @return ImportData S3 file keys for all uploaded assets group by page/block.
|
|
27
|
+
*/
|
|
28
|
+
async function extractAndUploadZipFileContents(zipFileUrl) {
|
|
29
|
+
const log = console.log;
|
|
30
|
+
const importDataList = [];
|
|
31
|
+
const zipFileName = _path.default.basename(zipFileUrl).split("?")[0];
|
|
32
|
+
const response = await (0, _nodeFetch.default)(zipFileUrl);
|
|
33
|
+
const readStream = response.body;
|
|
34
|
+
if (!response.ok || !readStream) {
|
|
35
|
+
throw new _error.default(`Unable to download file: "${zipFileUrl}"`, response.statusText);
|
|
36
|
+
}
|
|
37
|
+
const uniquePath = (0, _uniqid.default)("IMPORTS/");
|
|
38
|
+
// Read export file and download it in the disk
|
|
39
|
+
const ZIP_FILE_PATH = _path.default.join(_constants.INSTALL_DIR, zipFileName);
|
|
40
|
+
const writeStream = (0, _fs.createWriteStream)(ZIP_FILE_PATH);
|
|
41
|
+
await streamPipeline(readStream, writeStream);
|
|
42
|
+
log(`Downloaded file "${zipFileName}" at ${ZIP_FILE_PATH}`);
|
|
43
|
+
|
|
44
|
+
// Extract the downloaded zip file
|
|
45
|
+
const zipFilePaths = await extractZipToDisk(ZIP_FILE_PATH);
|
|
46
|
+
log(`Removing ZIP file "${zipFileUrl}" from ${ZIP_FILE_PATH}`);
|
|
47
|
+
await (0, _downloadInstallFiles.deleteFile)(ZIP_FILE_PATH);
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* TODO: Possibly do this in parallel?
|
|
51
|
+
*/
|
|
52
|
+
// Extract each page/block zip and upload their content's to S3
|
|
53
|
+
for (const currentPath of zipFilePaths) {
|
|
54
|
+
const dataMap = await (0, _extractZipAndUploadToS.extractZipAndUploadToS3)(currentPath, uniquePath);
|
|
55
|
+
importDataList.push(dataMap);
|
|
56
|
+
}
|
|
57
|
+
// TODO @pavel why?
|
|
58
|
+
log("Removing all ZIP files located at ", _path.default.dirname(zipFilePaths[0]));
|
|
59
|
+
await (0, _downloadInstallFiles.deleteFile)(_path.default.dirname(zipFilePaths[0]));
|
|
60
|
+
return importDataList;
|
|
61
|
+
}
|
|
62
|
+
function extractZipToDisk(exportFileZipPath) {
|
|
63
|
+
return new Promise((resolve, reject) => {
|
|
64
|
+
const zipFilePaths = [];
|
|
65
|
+
const uniqueFolderNameForExport = (0, _getFileNameWithoutExt.getFileNameWithoutExt)(exportFileZipPath);
|
|
66
|
+
const EXPORT_FILE_EXTRACTION_PATH = _path.default.join(_constants.INSTALL_DIR, uniqueFolderNameForExport);
|
|
67
|
+
// Make sure DIR exists
|
|
68
|
+
(0, _fsExtra.ensureDirSync)(EXPORT_FILE_EXTRACTION_PATH);
|
|
69
|
+
_yauzl.default.open(exportFileZipPath, {
|
|
70
|
+
lazyEntries: true
|
|
71
|
+
}, function (err, zipFile) {
|
|
72
|
+
if (err) {
|
|
73
|
+
console.warn("ERROR: Failed to extract zip: ", exportFileZipPath, err);
|
|
74
|
+
reject(err);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (!zipFile) {
|
|
78
|
+
console.log("ERROR: Missing zip file resource for path: " + exportFileZipPath);
|
|
79
|
+
reject("Missing Zip File Resource.");
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
console.info(`The ZIP file contains ${zipFile.entryCount} entries.`);
|
|
83
|
+
zipFile.on("end", function (err) {
|
|
84
|
+
if (err) {
|
|
85
|
+
console.warn("ERROR: Failed on END event for file: ", exportFileZipPath, err);
|
|
86
|
+
reject(err);
|
|
87
|
+
}
|
|
88
|
+
resolve(zipFilePaths);
|
|
89
|
+
});
|
|
90
|
+
zipFile.readEntry();
|
|
91
|
+
zipFile.on("entry", function (entry) {
|
|
92
|
+
console.info(`Processing entry: "${entry.fileName}"`);
|
|
93
|
+
if (/\/$/.test(entry.fileName)) {
|
|
94
|
+
// Directory file names end with '/'.
|
|
95
|
+
// Note that entries for directories themselves are optional.
|
|
96
|
+
// An entry's fileName implicitly requires its parent directories to exist.
|
|
97
|
+
zipFile.readEntry();
|
|
98
|
+
} else {
|
|
99
|
+
// file entry
|
|
100
|
+
zipFile.openReadStream(entry, function (err, readStream) {
|
|
101
|
+
if (err) {
|
|
102
|
+
console.warn("ERROR: Failed to openReadStream for file: ", entry.fileName, err);
|
|
103
|
+
reject(err);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
if (!readStream) {
|
|
107
|
+
console.log("ERROR: Missing Read Stream Resource when extracting to disk.");
|
|
108
|
+
reject("Missing Read Stream Resource.");
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const filePath = _path.default.join(EXPORT_FILE_EXTRACTION_PATH, entry.fileName);
|
|
112
|
+
readStream.on("end", function () {
|
|
113
|
+
zipFilePaths.push(filePath);
|
|
114
|
+
zipFile.readEntry();
|
|
115
|
+
});
|
|
116
|
+
streamPipeline(readStream, (0, _fs.createWriteStream)(filePath)).catch(error => {
|
|
117
|
+
reject(error);
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
//# sourceMappingURL=extractAndUploadZipFileContents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_stream","require","_util","_nodeFetch","_interopRequireDefault","_path","_yauzl","_fs","_uniqid","_error","_downloadInstallFiles","_extractZipAndUploadToS","_getFileNameWithoutExt","_constants","_fsExtra","streamPipeline","promisify","pipeline","extractAndUploadZipFileContents","zipFileUrl","log","console","importDataList","zipFileName","path","basename","split","response","fetch","readStream","body","ok","WebinyError","statusText","uniquePath","uniqueId","ZIP_FILE_PATH","join","INSTALL_DIR","writeStream","createWriteStream","zipFilePaths","extractZipToDisk","deleteFile","currentPath","dataMap","extractZipAndUploadToS3","push","dirname","exportFileZipPath","Promise","resolve","reject","uniqueFolderNameForExport","getFileNameWithoutExt","EXPORT_FILE_EXTRACTION_PATH","ensureDirSync","yauzl","open","lazyEntries","err","zipFile","warn","info","entryCount","on","readEntry","entry","fileName","test","openReadStream","filePath","catch","error"],"sources":["extractAndUploadZipFileContents.ts"],"sourcesContent":["import { pipeline } from \"stream\";\nimport { promisify } from \"util\";\nimport fetch from \"node-fetch\";\nimport path from \"path\";\nimport yauzl from \"yauzl\";\nimport { createWriteStream } from \"fs\";\nimport uniqueId from \"uniqid\";\nimport WebinyError from \"@webiny/error\";\nimport { deleteFile } from \"@webiny/api-page-builder/graphql/crud/install/utils/downloadInstallFiles\";\nimport { extractZipAndUploadToS3 } from \"~/import/utils/extractZipAndUploadToS3\";\nimport { getFileNameWithoutExt } from \"~/import/utils/getFileNameWithoutExt\";\nimport type { ImportData } from \"~/types\";\nimport { INSTALL_DIR } from \"~/import/constants\";\nimport { ensureDirSync } from \"fs-extra\";\n\nconst streamPipeline = promisify(pipeline);\n\n/**\n * Function will read the given zip file from S3 via stream, extract its content and upload it to S3 bucket.\n * @param zipFileUrl\n * @return ImportData S3 file keys for all uploaded assets group by page/block.\n */\nexport async function extractAndUploadZipFileContents(zipFileUrl: string): Promise<ImportData[]> {\n const log = console.log;\n const importDataList: ImportData[] = [];\n\n const zipFileName = path.basename(zipFileUrl).split(\"?\")[0];\n\n const response = await fetch(zipFileUrl);\n const readStream = response.body;\n if (!response.ok || !readStream) {\n throw new WebinyError(`Unable to download file: \"${zipFileUrl}\"`, response.statusText);\n }\n\n const uniquePath = uniqueId(\"IMPORTS/\");\n // Read export file and download it in the disk\n const ZIP_FILE_PATH = path.join(INSTALL_DIR, zipFileName);\n\n const writeStream = createWriteStream(ZIP_FILE_PATH);\n\n await streamPipeline(readStream, writeStream);\n log(`Downloaded file \"${zipFileName}\" at ${ZIP_FILE_PATH}`);\n\n // Extract the downloaded zip file\n const zipFilePaths = await extractZipToDisk(ZIP_FILE_PATH);\n\n log(`Removing ZIP file \"${zipFileUrl}\" from ${ZIP_FILE_PATH}`);\n await deleteFile(ZIP_FILE_PATH);\n\n /**\n * TODO: Possibly do this in parallel?\n */\n // Extract each page/block zip and upload their content's to S3\n for (const currentPath of zipFilePaths) {\n const dataMap = await extractZipAndUploadToS3(currentPath, uniquePath);\n importDataList.push(dataMap);\n }\n // TODO @pavel why?\n log(\"Removing all ZIP files located at \", path.dirname(zipFilePaths[0]));\n await deleteFile(path.dirname(zipFilePaths[0]));\n\n return importDataList;\n}\n\nfunction extractZipToDisk(exportFileZipPath: string): Promise<string[]> {\n return new Promise((resolve, reject) => {\n const zipFilePaths: string[] = [];\n const uniqueFolderNameForExport = getFileNameWithoutExt(exportFileZipPath);\n const EXPORT_FILE_EXTRACTION_PATH = path.join(INSTALL_DIR, uniqueFolderNameForExport);\n // Make sure DIR exists\n ensureDirSync(EXPORT_FILE_EXTRACTION_PATH);\n\n yauzl.open(exportFileZipPath, { lazyEntries: true }, function (err, zipFile) {\n if (err) {\n console.warn(\"ERROR: Failed to extract zip: \", exportFileZipPath, err);\n reject(err);\n return;\n }\n if (!zipFile) {\n console.log(\"ERROR: Missing zip file resource for path: \" + exportFileZipPath);\n reject(\"Missing Zip File Resource.\");\n return;\n }\n\n console.info(`The ZIP file contains ${zipFile.entryCount} entries.`);\n\n zipFile.on(\"end\", function (err) {\n if (err) {\n console.warn(\"ERROR: Failed on END event for file: \", exportFileZipPath, err);\n reject(err);\n }\n resolve(zipFilePaths);\n });\n\n zipFile.readEntry();\n\n zipFile.on(\"entry\", function (entry) {\n console.info(`Processing entry: \"${entry.fileName}\"`);\n if (/\\/$/.test(entry.fileName)) {\n // Directory file names end with '/'.\n // Note that entries for directories themselves are optional.\n // An entry's fileName implicitly requires its parent directories to exist.\n zipFile.readEntry();\n } else {\n // file entry\n zipFile.openReadStream(entry, function (err, readStream) {\n if (err) {\n console.warn(\n \"ERROR: Failed to openReadStream for file: \",\n entry.fileName,\n err\n );\n reject(err);\n return;\n }\n if (!readStream) {\n console.log(\n \"ERROR: Missing Read Stream Resource when extracting to disk.\"\n );\n reject(\"Missing Read Stream Resource.\");\n return;\n }\n\n const filePath = path.join(EXPORT_FILE_EXTRACTION_PATH, entry.fileName);\n\n readStream.on(\"end\", function () {\n zipFilePaths.push(filePath);\n zipFile.readEntry();\n });\n\n streamPipeline(readStream, createWriteStream(filePath)).catch(error => {\n reject(error);\n });\n });\n }\n });\n });\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.extractZipAndUploadToS3 = extractZipAndUploadToS3;
|
|
8
|
+
var _yauzl = _interopRequireDefault(require("yauzl"));
|
|
9
|
+
var _stream = require("stream");
|
|
10
|
+
var _util = require("util");
|
|
11
|
+
var _s3Stream = require("../../export/s3Stream");
|
|
12
|
+
var _getFileNameWithoutExt = require("./getFileNameWithoutExt");
|
|
13
|
+
var _prepareDataDirMap = require("./prepareDataDirMap");
|
|
14
|
+
const FILE_CONTENT_TYPE = "application/octet-stream";
|
|
15
|
+
const streamPipeline = (0, _util.promisify)(_stream.pipeline);
|
|
16
|
+
function extractZipAndUploadToS3(dataZipFilePath, uniquePath) {
|
|
17
|
+
return new Promise((resolve, reject) => {
|
|
18
|
+
const filePaths = [];
|
|
19
|
+
const fileUploadPromises = [];
|
|
20
|
+
const uniqueKey = (0, _getFileNameWithoutExt.getFileNameWithoutExt)(dataZipFilePath);
|
|
21
|
+
let dataMap = {
|
|
22
|
+
key: uniqueKey,
|
|
23
|
+
assets: {},
|
|
24
|
+
data: ""
|
|
25
|
+
};
|
|
26
|
+
_yauzl.default.open(dataZipFilePath, {
|
|
27
|
+
lazyEntries: true
|
|
28
|
+
}, function (err, zipFile) {
|
|
29
|
+
if (err) {
|
|
30
|
+
console.warn("ERROR: Failed to extract zip: ", dataZipFilePath, err);
|
|
31
|
+
reject(err);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (!zipFile) {
|
|
35
|
+
console.log("ERROR: Probably failed to extract zip: " + dataZipFilePath);
|
|
36
|
+
reject("Missing Zip File Resource.");
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
console.info(`The ZIP file contains ${zipFile.entryCount} entries.`);
|
|
40
|
+
zipFile.on("end", function (err) {
|
|
41
|
+
if (err) {
|
|
42
|
+
console.warn('ERROR: Failed on "END" for file: ', dataZipFilePath, err);
|
|
43
|
+
reject(err);
|
|
44
|
+
}
|
|
45
|
+
Promise.all(fileUploadPromises).then(res => {
|
|
46
|
+
res.forEach(r => {
|
|
47
|
+
console.info("Done uploading... ", r);
|
|
48
|
+
});
|
|
49
|
+
resolve(dataMap);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
zipFile.readEntry();
|
|
53
|
+
zipFile.on("entry", function (entry) {
|
|
54
|
+
console.info(`Processing entry: "${entry.fileName}"`);
|
|
55
|
+
if (/\/$/.test(entry.fileName)) {
|
|
56
|
+
// Directory file names end with '/'.
|
|
57
|
+
// Note that entries for directories themselves are optional.
|
|
58
|
+
// An entry's fileName implicitly requires its parent directories to exist.
|
|
59
|
+
zipFile.readEntry();
|
|
60
|
+
} else {
|
|
61
|
+
// file entry
|
|
62
|
+
zipFile.openReadStream(entry, function (err, readStream) {
|
|
63
|
+
if (err) {
|
|
64
|
+
console.warn("ERROR: Failed while performing [openReadStream] for file: ", entry.fileName, err);
|
|
65
|
+
reject(err);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (!readStream) {
|
|
69
|
+
console.log("ERROR: Missing Read Stream while importing.");
|
|
70
|
+
reject("Missing Read Strea Resource.");
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
readStream.on("end", function () {
|
|
74
|
+
filePaths.push(entry.fileName);
|
|
75
|
+
zipFile.readEntry();
|
|
76
|
+
});
|
|
77
|
+
const newKey = `${uniquePath}/${uniqueKey}/${entry.fileName}`;
|
|
78
|
+
// Modify in place
|
|
79
|
+
dataMap = (0, _prepareDataDirMap.prepareDataDirMap)({
|
|
80
|
+
map: dataMap,
|
|
81
|
+
filePath: entry.fileName,
|
|
82
|
+
newKey
|
|
83
|
+
});
|
|
84
|
+
const {
|
|
85
|
+
streamPassThrough,
|
|
86
|
+
streamPassThroughUploadPromise: promise
|
|
87
|
+
} = _s3Stream.s3Stream.writeStream(newKey, FILE_CONTENT_TYPE);
|
|
88
|
+
streamPipeline(readStream, streamPassThrough).then(() => {
|
|
89
|
+
fileUploadPromises.push(promise);
|
|
90
|
+
}).catch(error => {
|
|
91
|
+
reject(error);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
//# sourceMappingURL=extractZipAndUploadToS3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_yauzl","_interopRequireDefault","require","_stream","_util","_s3Stream","_getFileNameWithoutExt","_prepareDataDirMap","FILE_CONTENT_TYPE","streamPipeline","promisify","pipeline","extractZipAndUploadToS3","dataZipFilePath","uniquePath","Promise","resolve","reject","filePaths","fileUploadPromises","uniqueKey","getFileNameWithoutExt","dataMap","key","assets","data","yauzl","open","lazyEntries","err","zipFile","console","warn","log","info","entryCount","on","all","then","res","forEach","r","readEntry","entry","fileName","test","openReadStream","readStream","push","newKey","prepareDataDirMap","map","filePath","streamPassThrough","streamPassThroughUploadPromise","promise","s3Stream","writeStream","catch","error"],"sources":["extractZipAndUploadToS3.ts"],"sourcesContent":["import yauzl from \"yauzl\";\nimport { pipeline } from \"stream\";\nimport { promisify } from \"util\";\nimport type { CompleteMultipartUploadOutput } from \"@webiny/aws-sdk/client-s3\";\nimport { s3Stream } from \"~/export/s3Stream\";\nimport { getFileNameWithoutExt } from \"./getFileNameWithoutExt\";\nimport type { ImportData } from \"~/types\";\nimport { prepareDataDirMap } from \"~/import/utils/prepareDataDirMap\";\n\nconst FILE_CONTENT_TYPE = \"application/octet-stream\";\nconst streamPipeline = promisify(pipeline);\n\nexport function extractZipAndUploadToS3(\n dataZipFilePath: string,\n uniquePath: string\n): Promise<ImportData> {\n return new Promise((resolve, reject) => {\n const filePaths = [];\n const fileUploadPromises: Promise<CompleteMultipartUploadOutput>[] = [];\n const uniqueKey = getFileNameWithoutExt(dataZipFilePath);\n let dataMap: ImportData = {\n key: uniqueKey,\n assets: {},\n data: \"\"\n };\n yauzl.open(dataZipFilePath, { lazyEntries: true }, function (err, zipFile) {\n if (err) {\n console.warn(\"ERROR: Failed to extract zip: \", dataZipFilePath, err);\n reject(err);\n return;\n }\n if (!zipFile) {\n console.log(\"ERROR: Probably failed to extract zip: \" + dataZipFilePath);\n reject(\"Missing Zip File Resource.\");\n return;\n }\n console.info(`The ZIP file contains ${zipFile.entryCount} entries.`);\n zipFile.on(\"end\", function (err) {\n if (err) {\n console.warn('ERROR: Failed on \"END\" for file: ', dataZipFilePath, err);\n reject(err);\n }\n\n Promise.all(fileUploadPromises).then(res => {\n res.forEach(r => {\n console.info(\"Done uploading... \", r);\n });\n resolve(dataMap);\n });\n });\n\n zipFile.readEntry();\n\n zipFile.on(\"entry\", function (entry) {\n console.info(`Processing entry: \"${entry.fileName}\"`);\n if (/\\/$/.test(entry.fileName)) {\n // Directory file names end with '/'.\n // Note that entries for directories themselves are optional.\n // An entry's fileName implicitly requires its parent directories to exist.\n zipFile.readEntry();\n } else {\n // file entry\n zipFile.openReadStream(entry, function (err, readStream) {\n if (err) {\n console.warn(\n \"ERROR: Failed while performing [openReadStream] for file: \",\n entry.fileName,\n err\n );\n reject(err);\n return;\n }\n if (!readStream) {\n console.log(\"ERROR: Missing Read Stream while importing.\");\n reject(\"Missing Read Strea Resource.\");\n return;\n }\n readStream.on(\"end\", function () {\n filePaths.push(entry.fileName);\n zipFile.readEntry();\n });\n\n const newKey = `${uniquePath}/${uniqueKey}/${entry.fileName}`;\n // Modify in place\n dataMap = prepareDataDirMap({\n map: dataMap,\n filePath: entry.fileName,\n newKey\n });\n\n const { streamPassThrough, streamPassThroughUploadPromise: promise } =\n s3Stream.writeStream(newKey, FILE_CONTENT_TYPE);\n\n streamPipeline(readStream, streamPassThrough)\n .then(() => {\n fileUploadPromises.push(promise);\n })\n .catch(error => {\n reject(error);\n });\n });\n }\n });\n });\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getFileNameWithoutExt(fileName: string): string;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getFileNameWithoutExt = getFileNameWithoutExt;
|
|
8
|
+
var _path = _interopRequireDefault(require("path"));
|
|
9
|
+
function getFileNameWithoutExt(fileName) {
|
|
10
|
+
return _path.default.basename(fileName).replace(_path.default.extname(fileName), "");
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=getFileNameWithoutExt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_path","_interopRequireDefault","require","getFileNameWithoutExt","fileName","path","basename","replace","extname"],"sources":["getFileNameWithoutExt.ts"],"sourcesContent":["import path from \"path\";\n\nexport function getFileNameWithoutExt(fileName: string): string {\n return path.basename(fileName).replace(path.extname(fileName), \"\");\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEO,SAASC,qBAAqBA,CAACC,QAAgB,EAAU;EAC5D,OAAOC,aAAI,CAACC,QAAQ,CAACF,QAAQ,CAAC,CAACG,OAAO,CAACF,aAAI,CAACG,OAAO,CAACJ,QAAQ,CAAC,EAAE,EAAE,CAAC;AACtE","ignoreList":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from "./initialStats";
|
|
2
|
+
export * from "./uploadFilesFromS3";
|
|
3
|
+
export * from "./uploadAssets";
|
|
4
|
+
export * from "./updateFilesInData";
|
|
5
|
+
export * from "./prepareDataDirMap";
|
|
6
|
+
export * from "./getFileNameWithoutExt";
|
|
7
|
+
export * from "./extractZipAndUploadToS3";
|
|
8
|
+
export * from "./extractAndUploadZipFileContents";
|
|
9
|
+
export * from "./deleteS3Folder";
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _initialStats = require("./initialStats");
|
|
7
|
+
Object.keys(_initialStats).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _initialStats[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _initialStats[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
var _uploadFilesFromS = require("./uploadFilesFromS3");
|
|
18
|
+
Object.keys(_uploadFilesFromS).forEach(function (key) {
|
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
|
20
|
+
if (key in exports && exports[key] === _uploadFilesFromS[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return _uploadFilesFromS[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
var _uploadAssets = require("./uploadAssets");
|
|
29
|
+
Object.keys(_uploadAssets).forEach(function (key) {
|
|
30
|
+
if (key === "default" || key === "__esModule") return;
|
|
31
|
+
if (key in exports && exports[key] === _uploadAssets[key]) return;
|
|
32
|
+
Object.defineProperty(exports, key, {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () {
|
|
35
|
+
return _uploadAssets[key];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
var _updateFilesInData = require("./updateFilesInData");
|
|
40
|
+
Object.keys(_updateFilesInData).forEach(function (key) {
|
|
41
|
+
if (key === "default" || key === "__esModule") return;
|
|
42
|
+
if (key in exports && exports[key] === _updateFilesInData[key]) return;
|
|
43
|
+
Object.defineProperty(exports, key, {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: function () {
|
|
46
|
+
return _updateFilesInData[key];
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
var _prepareDataDirMap = require("./prepareDataDirMap");
|
|
51
|
+
Object.keys(_prepareDataDirMap).forEach(function (key) {
|
|
52
|
+
if (key === "default" || key === "__esModule") return;
|
|
53
|
+
if (key in exports && exports[key] === _prepareDataDirMap[key]) return;
|
|
54
|
+
Object.defineProperty(exports, key, {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function () {
|
|
57
|
+
return _prepareDataDirMap[key];
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
var _getFileNameWithoutExt = require("./getFileNameWithoutExt");
|
|
62
|
+
Object.keys(_getFileNameWithoutExt).forEach(function (key) {
|
|
63
|
+
if (key === "default" || key === "__esModule") return;
|
|
64
|
+
if (key in exports && exports[key] === _getFileNameWithoutExt[key]) return;
|
|
65
|
+
Object.defineProperty(exports, key, {
|
|
66
|
+
enumerable: true,
|
|
67
|
+
get: function () {
|
|
68
|
+
return _getFileNameWithoutExt[key];
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
var _extractZipAndUploadToS = require("./extractZipAndUploadToS3");
|
|
73
|
+
Object.keys(_extractZipAndUploadToS).forEach(function (key) {
|
|
74
|
+
if (key === "default" || key === "__esModule") return;
|
|
75
|
+
if (key in exports && exports[key] === _extractZipAndUploadToS[key]) return;
|
|
76
|
+
Object.defineProperty(exports, key, {
|
|
77
|
+
enumerable: true,
|
|
78
|
+
get: function () {
|
|
79
|
+
return _extractZipAndUploadToS[key];
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
var _extractAndUploadZipFileContents = require("./extractAndUploadZipFileContents");
|
|
84
|
+
Object.keys(_extractAndUploadZipFileContents).forEach(function (key) {
|
|
85
|
+
if (key === "default" || key === "__esModule") return;
|
|
86
|
+
if (key in exports && exports[key] === _extractAndUploadZipFileContents[key]) return;
|
|
87
|
+
Object.defineProperty(exports, key, {
|
|
88
|
+
enumerable: true,
|
|
89
|
+
get: function () {
|
|
90
|
+
return _extractAndUploadZipFileContents[key];
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
var _deleteS3Folder = require("./deleteS3Folder");
|
|
95
|
+
Object.keys(_deleteS3Folder).forEach(function (key) {
|
|
96
|
+
if (key === "default" || key === "__esModule") return;
|
|
97
|
+
if (key in exports && exports[key] === _deleteS3Folder[key]) return;
|
|
98
|
+
Object.defineProperty(exports, key, {
|
|
99
|
+
enumerable: true,
|
|
100
|
+
get: function () {
|
|
101
|
+
return _deleteS3Folder[key];
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_initialStats","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_uploadFilesFromS","_uploadAssets","_updateFilesInData","_prepareDataDirMap","_getFileNameWithoutExt","_extractZipAndUploadToS","_extractAndUploadZipFileContents","_deleteS3Folder"],"sources":["index.ts"],"sourcesContent":["export * from \"./initialStats\";\nexport * from \"./uploadFilesFromS3\";\nexport * from \"./uploadAssets\";\nexport * from \"./updateFilesInData\";\nexport * from \"./prepareDataDirMap\";\nexport * from \"./getFileNameWithoutExt\";\nexport * from \"./extractZipAndUploadToS3\";\nexport * from \"./extractAndUploadZipFileContents\";\nexport * from \"./deleteS3Folder\";\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.initialStats = initialStats;
|
|
7
|
+
var _types = require("../../types");
|
|
8
|
+
function initialStats(total) {
|
|
9
|
+
return {
|
|
10
|
+
[_types.ImportExportTaskStatus.PENDING]: total,
|
|
11
|
+
[_types.ImportExportTaskStatus.PROCESSING]: 0,
|
|
12
|
+
[_types.ImportExportTaskStatus.COMPLETED]: 0,
|
|
13
|
+
[_types.ImportExportTaskStatus.FAILED]: 0,
|
|
14
|
+
total
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=initialStats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_types","require","initialStats","total","ImportExportTaskStatus","PENDING","PROCESSING","COMPLETED","FAILED"],"sources":["initialStats.ts"],"sourcesContent":["import { ImportExportTaskStatus } from \"~/types\";\n\nexport function initialStats(total: number) {\n return {\n [ImportExportTaskStatus.PENDING]: total,\n [ImportExportTaskStatus.PROCESSING]: 0,\n [ImportExportTaskStatus.COMPLETED]: 0,\n [ImportExportTaskStatus.FAILED]: 0,\n total\n };\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEO,SAASC,YAAYA,CAACC,KAAa,EAAE;EACxC,OAAO;IACH,CAACC,6BAAsB,CAACC,OAAO,GAAGF,KAAK;IACvC,CAACC,6BAAsB,CAACE,UAAU,GAAG,CAAC;IACtC,CAACF,6BAAsB,CAACG,SAAS,GAAG,CAAC;IACrC,CAACH,6BAAsB,CAACI,MAAM,GAAG,CAAC;IAClCL;EACJ,CAAC;AACL","ignoreList":[]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.prepareDataDirMap = prepareDataDirMap;
|
|
8
|
+
var _dotPropImmutable = _interopRequireDefault(require("dot-prop-immutable"));
|
|
9
|
+
var _constants = require("../constants");
|
|
10
|
+
function prepareDataDirMap({
|
|
11
|
+
map,
|
|
12
|
+
filePath,
|
|
13
|
+
newKey
|
|
14
|
+
}) {
|
|
15
|
+
const isAsset = filePath.includes(_constants.ASSETS_DIR_NAME);
|
|
16
|
+
if (isAsset) {
|
|
17
|
+
/*
|
|
18
|
+
* We want to use dot (.) as part of object key rather than creating nested object(s).
|
|
19
|
+
* Also, the file name might contain dots in it beside the extension, so, we are escaping them all.
|
|
20
|
+
*/
|
|
21
|
+
const assetKey = filePath.split(`${_constants.ASSETS_DIR_NAME}/`).pop();
|
|
22
|
+
const oldKey = assetKey.replace(/\./g, "\\.");
|
|
23
|
+
map = _dotPropImmutable.default.set(map, `assets.${oldKey}`, newKey);
|
|
24
|
+
} else {
|
|
25
|
+
// We only need to know the newKey for data file.
|
|
26
|
+
map = _dotPropImmutable.default.set(map, `data`, newKey);
|
|
27
|
+
}
|
|
28
|
+
return map;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=prepareDataDirMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_dotPropImmutable","_interopRequireDefault","require","_constants","prepareDataDirMap","map","filePath","newKey","isAsset","includes","ASSETS_DIR_NAME","assetKey","split","pop","oldKey","replace","dotProp","set"],"sources":["prepareDataDirMap.ts"],"sourcesContent":["import dotProp from \"dot-prop-immutable\";\nimport type { ImportData } from \"~/types\";\nimport { ASSETS_DIR_NAME } from \"~/import/constants\";\n\nexport function prepareDataDirMap({\n map,\n filePath,\n newKey\n}: {\n map: ImportData;\n filePath: string;\n newKey: string;\n}): ImportData {\n const isAsset = filePath.includes(ASSETS_DIR_NAME);\n\n if (isAsset) {\n /*\n * We want to use dot (.) as part of object key rather than creating nested object(s).\n * Also, the file name might contain dots in it beside the extension, so, we are escaping them all.\n */\n const assetKey = filePath.split(`${ASSETS_DIR_NAME}/`).pop() as string;\n const oldKey = assetKey.replace(/\\./g, \"\\\\.\");\n\n map = dotProp.set(map, `assets.${oldKey}`, newKey);\n } else {\n // We only need to know the newKey for data file.\n map = dotProp.set(map, `data`, newKey);\n }\n\n return map;\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAEO,SAASE,iBAAiBA,CAAC;EAC9BC,GAAG;EACHC,QAAQ;EACRC;AAKJ,CAAC,EAAc;EACX,MAAMC,OAAO,GAAGF,QAAQ,CAACG,QAAQ,CAACC,0BAAe,CAAC;EAElD,IAAIF,OAAO,EAAE;IACT;AACR;AACA;AACA;IACQ,MAAMG,QAAQ,GAAGL,QAAQ,CAACM,KAAK,CAAC,GAAGF,0BAAe,GAAG,CAAC,CAACG,GAAG,CAAC,CAAW;IACtE,MAAMC,MAAM,GAAGH,QAAQ,CAACI,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;IAE7CV,GAAG,GAAGW,yBAAO,CAACC,GAAG,CAACZ,GAAG,EAAE,UAAUS,MAAM,EAAE,EAAEP,MAAM,CAAC;EACtD,CAAC,MAAM;IACH;IACAF,GAAG,GAAGW,yBAAO,CAACC,GAAG,CAACZ,GAAG,EAAE,MAAM,EAAEE,MAAM,CAAC;EAC1C;EAEA,OAAOF,GAAG;AACd","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { FileInput } from "@webiny/api-file-manager/types";
|
|
2
|
+
interface UpdateFilesInDataParams {
|
|
3
|
+
data: Record<string, any>;
|
|
4
|
+
fileIdToNewFileMap: Map<string, FileInput>;
|
|
5
|
+
srcPrefix: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function updateFilesInData({ data, fileIdToNewFileMap, srcPrefix }: UpdateFilesInDataParams): void;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.updateFilesInData = updateFilesInData;
|
|
7
|
+
function updateFilesInData({
|
|
8
|
+
data,
|
|
9
|
+
fileIdToNewFileMap,
|
|
10
|
+
srcPrefix
|
|
11
|
+
}) {
|
|
12
|
+
if (!data || typeof data !== "object") {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
// Recursively call function if data is an array.
|
|
16
|
+
if (Array.isArray(data)) {
|
|
17
|
+
for (let i = 0; i < data.length; i++) {
|
|
18
|
+
const element = data[i];
|
|
19
|
+
updateFilesInData({
|
|
20
|
+
data: element,
|
|
21
|
+
fileIdToNewFileMap,
|
|
22
|
+
srcPrefix
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
// Main logic
|
|
28
|
+
const tuple = Object.entries(data);
|
|
29
|
+
for (let i = 0; i < tuple.length; i++) {
|
|
30
|
+
const [key, value] = tuple[i];
|
|
31
|
+
if (key === "file" && value && fileIdToNewFileMap.has(value.id)) {
|
|
32
|
+
const newFile = fileIdToNewFileMap.get(value.id);
|
|
33
|
+
if (!newFile) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
const cleanSrcPrefix = srcPrefix.endsWith("/") ? srcPrefix.slice(0, -1) : srcPrefix;
|
|
37
|
+
value.id = newFile.id;
|
|
38
|
+
value.key = newFile.key;
|
|
39
|
+
value.name = newFile.name;
|
|
40
|
+
value.src = `${cleanSrcPrefix}/${newFile.key}`;
|
|
41
|
+
} else {
|
|
42
|
+
updateFilesInData({
|
|
43
|
+
data: value,
|
|
44
|
+
srcPrefix,
|
|
45
|
+
fileIdToNewFileMap
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=updateFilesInData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["updateFilesInData","data","fileIdToNewFileMap","srcPrefix","Array","isArray","i","length","element","tuple","Object","entries","key","value","has","id","newFile","get","cleanSrcPrefix","endsWith","slice","name","src"],"sources":["updateFilesInData.ts"],"sourcesContent":["import type { FileInput } from \"@webiny/api-file-manager/types\";\n\ninterface UpdateFilesInDataParams {\n data: Record<string, any>;\n fileIdToNewFileMap: Map<string, FileInput>;\n srcPrefix: string;\n}\n\nexport function updateFilesInData({\n data,\n fileIdToNewFileMap,\n srcPrefix\n}: UpdateFilesInDataParams) {\n if (!data || typeof data !== \"object\") {\n return;\n }\n // Recursively call function if data is an array.\n if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n const element = data[i];\n updateFilesInData({ data: element, fileIdToNewFileMap, srcPrefix });\n }\n return;\n }\n // Main logic\n const tuple = Object.entries(data);\n for (let i = 0; i < tuple.length; i++) {\n const [key, value] = tuple[i];\n\n if (key === \"file\" && value && fileIdToNewFileMap.has(value.id)) {\n const newFile = fileIdToNewFileMap.get(value.id);\n if (!newFile) {\n continue;\n }\n\n const cleanSrcPrefix = srcPrefix.endsWith(\"/\") ? srcPrefix.slice(0, -1) : srcPrefix;\n\n value.id = newFile.id;\n value.key = newFile.key;\n value.name = newFile.name;\n value.src = `${cleanSrcPrefix}/${newFile.key}`;\n } else {\n updateFilesInData({ data: value, srcPrefix, fileIdToNewFileMap });\n }\n }\n}\n"],"mappings":";;;;;;AAQO,SAASA,iBAAiBA,CAAC;EAC9BC,IAAI;EACJC,kBAAkB;EAClBC;AACqB,CAAC,EAAE;EACxB,IAAI,CAACF,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;IACnC;EACJ;EACA;EACA,IAAIG,KAAK,CAACC,OAAO,CAACJ,IAAI,CAAC,EAAE;IACrB,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,IAAI,CAACM,MAAM,EAAED,CAAC,EAAE,EAAE;MAClC,MAAME,OAAO,GAAGP,IAAI,CAACK,CAAC,CAAC;MACvBN,iBAAiB,CAAC;QAAEC,IAAI,EAAEO,OAAO;QAAEN,kBAAkB;QAAEC;MAAU,CAAC,CAAC;IACvE;IACA;EACJ;EACA;EACA,MAAMM,KAAK,GAAGC,MAAM,CAACC,OAAO,CAACV,IAAI,CAAC;EAClC,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGG,KAAK,CAACF,MAAM,EAAED,CAAC,EAAE,EAAE;IACnC,MAAM,CAACM,GAAG,EAAEC,KAAK,CAAC,GAAGJ,KAAK,CAACH,CAAC,CAAC;IAE7B,IAAIM,GAAG,KAAK,MAAM,IAAIC,KAAK,IAAIX,kBAAkB,CAACY,GAAG,CAACD,KAAK,CAACE,EAAE,CAAC,EAAE;MAC7D,MAAMC,OAAO,GAAGd,kBAAkB,CAACe,GAAG,CAACJ,KAAK,CAACE,EAAE,CAAC;MAChD,IAAI,CAACC,OAAO,EAAE;QACV;MACJ;MAEA,MAAME,cAAc,GAAGf,SAAS,CAACgB,QAAQ,CAAC,GAAG,CAAC,GAAGhB,SAAS,CAACiB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAGjB,SAAS;MAEnFU,KAAK,CAACE,EAAE,GAAGC,OAAO,CAACD,EAAE;MACrBF,KAAK,CAACD,GAAG,GAAGI,OAAO,CAACJ,GAAG;MACvBC,KAAK,CAACQ,IAAI,GAAGL,OAAO,CAACK,IAAI;MACzBR,KAAK,CAACS,GAAG,GAAG,GAAGJ,cAAc,IAAIF,OAAO,CAACJ,GAAG,EAAE;IAClD,CAAC,MAAM;MACHZ,iBAAiB,CAAC;QAAEC,IAAI,EAAEY,KAAK;QAAEV,SAAS;QAAED;MAAmB,CAAC,CAAC;IACrE;EACJ;AACJ","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PbImportExportContext } from "../../graphql/types";
|
|
2
|
+
import type { File, FileInput } from "@webiny/api-file-manager/types";
|
|
3
|
+
import type { FileUploadsData } from "../../types";
|
|
4
|
+
interface UploadAssetsParams {
|
|
5
|
+
context: PbImportExportContext;
|
|
6
|
+
files: File[];
|
|
7
|
+
fileUploadsData: FileUploadsData;
|
|
8
|
+
}
|
|
9
|
+
export declare const uploadAssets: (params: UploadAssetsParams) => Promise<Map<string, FileInput>>;
|
|
10
|
+
export {};
|