@webiny/api-page-builder-import-export 0.0.0-unstable.3386f66516 → 0.0.0-unstable.496cf268ac
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.js +2 -6
- package/client.js.map +1 -1
- package/export/combine/blocksHandler.js +11 -18
- package/export/combine/blocksHandler.js.map +1 -1
- package/export/combine/formsHandler.d.ts +6 -0
- package/export/combine/formsHandler.js +99 -0
- package/export/combine/formsHandler.js.map +1 -0
- package/export/combine/index.js +5 -8
- package/export/combine/index.js.map +1 -1
- package/export/combine/pagesHandler.js +11 -18
- package/export/combine/pagesHandler.js.map +1 -1
- package/export/combine/templatesHandler.js +11 -18
- package/export/combine/templatesHandler.js.map +1 -1
- package/export/process/blocksHandler.js +18 -32
- package/export/process/blocksHandler.js.map +1 -1
- package/export/process/formsHandler.d.ts +6 -0
- package/export/process/formsHandler.js +187 -0
- package/export/process/formsHandler.js.map +1 -0
- package/export/process/index.js +5 -8
- package/export/process/index.js.map +1 -1
- package/export/process/pagesHandler.js +19 -34
- package/export/process/pagesHandler.js.map +1 -1
- package/export/process/templatesHandler.js +23 -33
- package/export/process/templatesHandler.js.map +1 -1
- package/export/s3Stream.d.ts +5 -2
- package/export/s3Stream.js +1 -20
- package/export/s3Stream.js.map +1 -1
- package/export/utils.d.ts +8 -1
- package/export/utils.js +59 -44
- package/export/utils.js.map +1 -1
- package/export/zipper.js +31 -43
- package/export/zipper.js.map +1 -1
- package/graphql/crud/blocks.crud.js +20 -39
- package/graphql/crud/blocks.crud.js.map +1 -1
- package/graphql/crud/forms.crud.d.ts +4 -0
- package/graphql/crud/forms.crud.js +129 -0
- package/graphql/crud/forms.crud.js.map +1 -0
- package/graphql/crud/importExportTasks.crud.js +9 -57
- package/graphql/crud/importExportTasks.crud.js.map +1 -1
- package/graphql/crud/pages.crud.js +21 -39
- package/graphql/crud/pages.crud.js.map +1 -1
- package/graphql/crud/templates.crud.js +17 -33
- package/graphql/crud/templates.crud.js.map +1 -1
- package/graphql/crud.js +2 -8
- package/graphql/crud.js.map +1 -1
- package/graphql/graphql/blocks.gql.js +1 -6
- package/graphql/graphql/blocks.gql.js.map +1 -1
- 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.js +1 -6
- package/graphql/graphql/importExportTasks.gql.js.map +1 -1
- package/graphql/graphql/pages.gql.js +1 -6
- package/graphql/graphql/pages.gql.js.map +1 -1
- package/graphql/graphql/templates.gql.js +1 -6
- package/graphql/graphql/templates.gql.js.map +1 -1
- package/graphql/graphql/utils/resolve.js +0 -3
- package/graphql/graphql/utils/resolve.js.map +1 -1
- package/graphql/graphql.js +2 -7
- package/graphql/graphql.js.map +1 -1
- package/graphql/index.js +0 -5
- package/graphql/index.js.map +1 -1
- package/graphql/types.d.ts +23 -0
- package/graphql/types.js.map +1 -1
- package/import/constants.d.ts +3 -0
- package/import/constants.js +14 -0
- package/import/constants.js.map +1 -0
- package/import/create/blocksHandler.js +11 -20
- package/import/create/blocksHandler.js.map +1 -1
- package/import/create/formsHandler.d.ts +3 -0
- package/import/create/formsHandler.js +103 -0
- package/import/create/formsHandler.js.map +1 -0
- package/import/create/index.js +5 -8
- package/import/create/index.js.map +1 -1
- package/import/create/pagesHandler.js +10 -19
- package/import/create/pagesHandler.js.map +1 -1
- package/import/create/templatesHandler.js +10 -19
- package/import/create/templatesHandler.js.map +1 -1
- 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 +89 -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 +176 -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 +43 -0
- package/import/process/forms/importForm.js.map +1 -0
- package/import/process/index.js +8 -11
- package/import/process/index.js.map +1 -1
- package/import/process/pages/importPage.d.ts +11 -0
- package/import/process/pages/importPage.js +92 -0
- package/import/process/pages/importPage.js.map +1 -0
- package/import/process/pages/pagesHandler.d.ts +3 -0
- package/import/process/pages/pagesHandler.js +183 -0
- package/import/process/pages/pagesHandler.js.map +1 -0
- package/import/process/pagesHandler.js +2 -3
- package/import/process/pagesHandler.js.map +1 -1
- package/import/process/templates/importTemplate.d.ts +11 -0
- package/import/process/templates/importTemplate.js +66 -0
- package/import/process/templates/importTemplate.js.map +1 -0
- package/import/process/{templatesHandler.d.ts → templates/templatesHandler.d.ts} +2 -2
- package/import/process/{templatesHandler.js → templates/templatesHandler.js} +31 -33
- package/import/process/templates/templatesHandler.js.map +1 -0
- package/import/utils/deleteS3Folder.d.ts +1 -0
- package/import/utils/deleteS3Folder.js +19 -0
- package/import/utils/deleteS3Folder.js.map +1 -0
- package/import/utils/extractAndUploadZipFileContents.d.ts +7 -0
- package/import/utils/extractAndUploadZipFileContents.js +122 -0
- package/import/utils/extractAndUploadZipFileContents.js.map +1 -0
- package/import/utils/extractZipAndUploadToS3.d.ts +2 -0
- package/import/utils/extractZipAndUploadToS3.js +98 -0
- package/import/utils/extractZipAndUploadToS3.js.map +1 -0
- package/import/utils/getFileNameWithoutExt.d.ts +1 -0
- package/import/utils/getFileNameWithoutExt.js +11 -0
- package/import/utils/getFileNameWithoutExt.js.map +1 -0
- package/import/utils/index.d.ts +9 -0
- package/import/utils/index.js +104 -0
- package/import/utils/index.js.map +1 -0
- package/import/utils/initialStats.d.ts +7 -0
- package/import/utils/initialStats.js +16 -0
- package/import/utils/initialStats.js.map +1 -0
- package/import/utils/prepareDataDirMap.d.ts +6 -0
- package/import/utils/prepareDataDirMap.js +29 -0
- package/import/utils/prepareDataDirMap.js.map +1 -0
- package/import/utils/updateFilesInData.d.ts +8 -0
- package/import/utils/updateFilesInData.js +48 -0
- package/import/utils/updateFilesInData.js.map +1 -0
- package/import/utils/uploadAssets.d.ts +10 -0
- package/import/utils/uploadAssets.js +51 -0
- package/import/utils/uploadAssets.js.map +1 -0
- package/import/utils/uploadFilesFromS3.d.ts +3 -0
- package/import/utils/uploadFilesFromS3.js +19 -0
- package/import/utils/uploadFilesFromS3.js.map +1 -0
- package/import/utils.d.ts +1 -8
- package/import/utils.js +0 -55
- package/import/utils.js.map +1 -1
- package/mockSecurity.js +0 -2
- package/mockSecurity.js.map +1 -1
- package/package.json +25 -24
- package/types.d.ts +21 -0
- package/types.js +0 -5
- package/types.js.map +1 -1
- package/import/process/templatesHandler.js.map +0 -1
@@ -0,0 +1,98 @@
|
|
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
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["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 S3 from \"aws-sdk/clients/s3\";\nimport { s3Stream } from \"~/export/s3Stream\";\nimport { getFileNameWithoutExt } from \"./getFileNameWithoutExt\";\nimport { 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<S3.ManagedUpload.SendData>[] = [];\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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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare function getFileNameWithoutExt(fileName: string): string;
|
@@ -0,0 +1,11 @@
|
|
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
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["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;AAEO,SAASA,qBAAqB,CAACC,QAAgB,EAAU;EAC5D,OAAOC,aAAI,CAACC,QAAQ,CAACF,QAAQ,CAAC,CAACG,OAAO,CAACF,aAAI,CAACG,OAAO,CAACJ,QAAQ,CAAC,EAAE,EAAE,CAAC;AACtE"}
|
@@ -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,104 @@
|
|
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
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":[],"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":";;;;;AAAA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
@@ -0,0 +1,16 @@
|
|
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
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["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;AAEO,SAASA,YAAY,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"}
|
@@ -0,0 +1,29 @@
|
|
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
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["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 { 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;AAEA;AAEO,SAASA,iBAAiB,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,CAAE,GAAEF,0BAAgB,GAAE,CAAC,CAACG,GAAG,EAAY;IACtE,MAAMC,MAAM,GAAGH,QAAQ,CAACI,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;IAE7CV,GAAG,GAAGW,yBAAO,CAACC,GAAG,CAACZ,GAAG,EAAG,UAASS,MAAO,EAAC,EAAEP,MAAM,CAAC;EACtD,CAAC,MAAM;IACH;IACAF,GAAG,GAAGW,yBAAO,CAACC,GAAG,CAACZ,GAAG,EAAG,MAAK,EAAEE,MAAM,CAAC;EAC1C;EAEA,OAAOF,GAAG;AACd"}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { 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,48 @@
|
|
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 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.key = newFile.key;
|
38
|
+
value.name = newFile.name;
|
39
|
+
value.src = `${cleanSrcPrefix}/${newFile.key}`;
|
40
|
+
} else {
|
41
|
+
updateFilesInData({
|
42
|
+
data: value,
|
43
|
+
srcPrefix,
|
44
|
+
fileIdToNewFileMap
|
45
|
+
});
|
46
|
+
}
|
47
|
+
}
|
48
|
+
}
|
@@ -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 { 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 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.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,iBAAiB,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,CAACD,GAAG,GAAGI,OAAO,CAACJ,GAAG;MACvBC,KAAK,CAACQ,IAAI,GAAGL,OAAO,CAACK,IAAI;MACzBR,KAAK,CAACS,GAAG,GAAI,GAAEJ,cAAe,IAAGF,OAAO,CAACJ,GAAI,EAAC;IAClD,CAAC,MAAM;MACHZ,iBAAiB,CAAC;QAAEC,IAAI,EAAEY,KAAK;QAAEV,SAAS;QAAED;MAAmB,CAAC,CAAC;IACrE;EACJ;AACJ"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { PbImportExportContext } from "../../graphql/types";
|
2
|
+
import { File, FileInput } from "@webiny/api-file-manager/types";
|
3
|
+
import { 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 {};
|
@@ -0,0 +1,51 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
5
|
+
value: true
|
6
|
+
});
|
7
|
+
exports.uploadAssets = void 0;
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
9
|
+
var _mdbid = _interopRequireDefault(require("mdbid"));
|
10
|
+
var _uploadFilesFromS = require("./uploadFilesFromS3");
|
11
|
+
// @ts-ignore
|
12
|
+
|
13
|
+
const uploadAssets = async params => {
|
14
|
+
const {
|
15
|
+
context,
|
16
|
+
files,
|
17
|
+
fileUploadsData
|
18
|
+
} = params;
|
19
|
+
const oldIdToNewFileMap = new Map();
|
20
|
+
|
21
|
+
/**
|
22
|
+
* This function contains logic of file download from S3.
|
23
|
+
* Current we're not mocking zip file download from S3 in tests at the moment.
|
24
|
+
* So, we're manually mocking it in case of test just by returning an empty object.
|
25
|
+
*/
|
26
|
+
if (process.env.NODE_ENV === "test") {
|
27
|
+
return oldIdToNewFileMap;
|
28
|
+
}
|
29
|
+
|
30
|
+
// A map of temporary file keys (created during ZIP upload) to permanent file keys.
|
31
|
+
const uploadFileMap = new Map();
|
32
|
+
|
33
|
+
// Array of file inputs, to insert into the DB.
|
34
|
+
const createFilesInput = [];
|
35
|
+
for (const oldFile of files) {
|
36
|
+
const id = (0, _mdbid.default)();
|
37
|
+
// We replace the old file ID with a new one.
|
38
|
+
const newKey = `${id}/${oldFile.key.replace(`${oldFile.id}/`, "")}`;
|
39
|
+
const newFile = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, oldFile), {}, {
|
40
|
+
id,
|
41
|
+
key: newKey
|
42
|
+
});
|
43
|
+
createFilesInput.push(newFile);
|
44
|
+
oldIdToNewFileMap.set(oldFile.id, newFile);
|
45
|
+
uploadFileMap.set(fileUploadsData.assets[oldFile.key], newFile);
|
46
|
+
}
|
47
|
+
await (0, _uploadFilesFromS.uploadFilesFromS3)(uploadFileMap);
|
48
|
+
await context.fileManager.createFilesInBatch(createFilesInput);
|
49
|
+
return oldIdToNewFileMap;
|
50
|
+
};
|
51
|
+
exports.uploadAssets = uploadAssets;
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["uploadAssets","params","context","files","fileUploadsData","oldIdToNewFileMap","Map","process","env","NODE_ENV","uploadFileMap","createFilesInput","oldFile","id","mdbid","newKey","key","replace","newFile","push","set","assets","uploadFilesFromS3","fileManager","createFilesInBatch"],"sources":["uploadAssets.ts"],"sourcesContent":["// @ts-ignore\nimport mdbid from \"mdbid\";\nimport { PbImportExportContext } from \"~/graphql/types\";\nimport { File, FileInput } from \"@webiny/api-file-manager/types\";\nimport { UploadFileMap, uploadFilesFromS3 } from \"~/import/utils/uploadFilesFromS3\";\nimport { FileUploadsData } from \"~/types\";\n\ninterface UploadAssetsParams {\n context: PbImportExportContext;\n files: File[];\n fileUploadsData: FileUploadsData;\n}\n\nexport const uploadAssets = async (params: UploadAssetsParams) => {\n const { context, files, fileUploadsData } = params;\n\n const oldIdToNewFileMap = new Map<string, FileInput>();\n\n /**\n * This function contains logic of file download from S3.\n * Current we're not mocking zip file download from S3 in tests at the moment.\n * So, we're manually mocking it in case of test just by returning an empty object.\n */\n if (process.env.NODE_ENV === \"test\") {\n return oldIdToNewFileMap;\n }\n\n // A map of temporary file keys (created during ZIP upload) to permanent file keys.\n const uploadFileMap: UploadFileMap = new Map();\n\n // Array of file inputs, to insert into the DB.\n const createFilesInput: FileInput[] = [];\n\n for (const oldFile of files) {\n const id = mdbid();\n // We replace the old file ID with a new one.\n const newKey = `${id}/${oldFile.key.replace(`${oldFile.id}/`, \"\")}`;\n const newFile: FileInput = { ...oldFile, id, key: newKey };\n\n createFilesInput.push(newFile);\n oldIdToNewFileMap.set(oldFile.id, newFile);\n uploadFileMap.set(fileUploadsData.assets[oldFile.key], newFile);\n }\n\n await uploadFilesFromS3(uploadFileMap);\n\n await context.fileManager.createFilesInBatch(createFilesInput);\n\n return oldIdToNewFileMap;\n};\n"],"mappings":";;;;;;;;AACA;AAGA;AAJA;;AAaO,MAAMA,YAAY,GAAG,MAAOC,MAA0B,IAAK;EAC9D,MAAM;IAAEC,OAAO;IAAEC,KAAK;IAAEC;EAAgB,CAAC,GAAGH,MAAM;EAElD,MAAMI,iBAAiB,GAAG,IAAIC,GAAG,EAAqB;;EAEtD;AACJ;AACA;AACA;AACA;EACI,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,MAAM,EAAE;IACjC,OAAOJ,iBAAiB;EAC5B;;EAEA;EACA,MAAMK,aAA4B,GAAG,IAAIJ,GAAG,EAAE;;EAE9C;EACA,MAAMK,gBAA6B,GAAG,EAAE;EAExC,KAAK,MAAMC,OAAO,IAAIT,KAAK,EAAE;IACzB,MAAMU,EAAE,GAAG,IAAAC,cAAK,GAAE;IAClB;IACA,MAAMC,MAAM,GAAI,GAAEF,EAAG,IAAGD,OAAO,CAACI,GAAG,CAACC,OAAO,CAAE,GAAEL,OAAO,CAACC,EAAG,GAAE,EAAE,EAAE,CAAE,EAAC;IACnE,MAAMK,OAAkB,+DAAQN,OAAO;MAAEC,EAAE;MAAEG,GAAG,EAAED;IAAM,EAAE;IAE1DJ,gBAAgB,CAACQ,IAAI,CAACD,OAAO,CAAC;IAC9Bb,iBAAiB,CAACe,GAAG,CAACR,OAAO,CAACC,EAAE,EAAEK,OAAO,CAAC;IAC1CR,aAAa,CAACU,GAAG,CAAChB,eAAe,CAACiB,MAAM,CAACT,OAAO,CAACI,GAAG,CAAC,EAAEE,OAAO,CAAC;EACnE;EAEA,MAAM,IAAAI,mCAAiB,EAACZ,aAAa,CAAC;EAEtC,MAAMR,OAAO,CAACqB,WAAW,CAACC,kBAAkB,CAACb,gBAAgB,CAAC;EAE9D,OAAON,iBAAiB;AAC5B,CAAC;AAAC"}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.uploadFilesFromS3 = uploadFilesFromS3;
|
7
|
+
var _s3Stream = require("../../export/s3Stream");
|
8
|
+
async function uploadFilesFromS3(fileMap) {
|
9
|
+
const promises = [];
|
10
|
+
for (const [source, target] of Array.from(fileMap.entries())) {
|
11
|
+
// Read file.
|
12
|
+
const readStream = _s3Stream.s3Stream.readStream(source);
|
13
|
+
const ws = _s3Stream.s3Stream.writeStream(target.key, target.type);
|
14
|
+
readStream.pipe(ws.streamPassThrough);
|
15
|
+
promises.push(ws.streamPassThroughUploadPromise);
|
16
|
+
console.log(`Successfully queued file "${target.key}"`);
|
17
|
+
}
|
18
|
+
return Promise.all(promises);
|
19
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["uploadFilesFromS3","fileMap","promises","source","target","Array","from","entries","readStream","s3Stream","ws","writeStream","key","type","pipe","streamPassThrough","push","streamPassThroughUploadPromise","console","log","Promise","all"],"sources":["uploadFilesFromS3.ts"],"sourcesContent":["import { s3Stream } from \"~/export/s3Stream\";\nimport { FileInput } from \"@webiny/api-file-manager/types\";\n\nexport type UploadFileMap = Map<string, FileInput>;\n\nexport async function uploadFilesFromS3(fileMap: UploadFileMap) {\n const promises = [];\n for (const [source, target] of Array.from(fileMap.entries())) {\n // Read file.\n const readStream = s3Stream.readStream(source);\n\n const ws = s3Stream.writeStream(target.key, target.type);\n readStream.pipe(ws.streamPassThrough);\n promises.push(ws.streamPassThroughUploadPromise);\n\n console.log(`Successfully queued file \"${target.key}\"`);\n }\n\n return Promise.all(promises);\n}\n"],"mappings":";;;;;;AAAA;AAKO,eAAeA,iBAAiB,CAACC,OAAsB,EAAE;EAC5D,MAAMC,QAAQ,GAAG,EAAE;EACnB,KAAK,MAAM,CAACC,MAAM,EAAEC,MAAM,CAAC,IAAIC,KAAK,CAACC,IAAI,CAACL,OAAO,CAACM,OAAO,EAAE,CAAC,EAAE;IAC1D;IACA,MAAMC,UAAU,GAAGC,kBAAQ,CAACD,UAAU,CAACL,MAAM,CAAC;IAE9C,MAAMO,EAAE,GAAGD,kBAAQ,CAACE,WAAW,CAACP,MAAM,CAACQ,GAAG,EAAER,MAAM,CAACS,IAAI,CAAC;IACxDL,UAAU,CAACM,IAAI,CAACJ,EAAE,CAACK,iBAAiB,CAAC;IACrCb,QAAQ,CAACc,IAAI,CAACN,EAAE,CAACO,8BAA8B,CAAC;IAEhDC,OAAO,CAACC,GAAG,CAAE,6BAA4Bf,MAAM,CAACQ,GAAI,GAAE,CAAC;EAC3D;EAEA,OAAOQ,OAAO,CAACC,GAAG,CAACnB,QAAQ,CAAC;AAChC"}
|
package/import/utils.d.ts
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import { File } from "@webiny/api-file-manager/types";
|
2
2
|
import { PbImportExportContext } from "../graphql/types";
|
3
|
-
import { ExportedPageData, ExportedBlockData
|
3
|
+
import { ExportedPageData, ExportedBlockData } from "../export/utils";
|
4
4
|
interface UploadAssetsParams {
|
5
5
|
context: PbImportExportContext;
|
6
6
|
filesData: File[];
|
@@ -28,13 +28,6 @@ interface ImportBlockParams {
|
|
28
28
|
fileUploadsData: FileUploadsData;
|
29
29
|
}
|
30
30
|
export declare function importBlock({ blockKey, context, fileUploadsData }: ImportBlockParams): Promise<ExportedBlockData["block"]>;
|
31
|
-
interface ImportTemplateParams {
|
32
|
-
key: string;
|
33
|
-
templateKey: string;
|
34
|
-
context: PbImportExportContext;
|
35
|
-
fileUploadsData: FileUploadsData;
|
36
|
-
}
|
37
|
-
export declare function importTemplate({ templateKey, context, fileUploadsData }: ImportTemplateParams): Promise<ExportedTemplateData["template"]>;
|
38
31
|
interface ImportData {
|
39
32
|
assets: Record<string, string>;
|
40
33
|
data: string;
|
package/import/utils.js
CHANGED
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
7
7
|
});
|
8
8
|
exports.importBlock = importBlock;
|
9
9
|
exports.importPage = importPage;
|
10
|
-
exports.importTemplate = importTemplate;
|
11
10
|
exports.initialStats = initialStats;
|
12
11
|
exports.readExtractAndUploadZipFileContents = readExtractAndUploadZipFileContents;
|
13
12
|
exports.uploadAssets = void 0;
|
@@ -328,60 +327,6 @@ async function importBlock({
|
|
328
327
|
return block;
|
329
328
|
}
|
330
329
|
|
331
|
-
async function importTemplate({
|
332
|
-
templateKey,
|
333
|
-
context,
|
334
|
-
fileUploadsData
|
335
|
-
}) {
|
336
|
-
const log = console.log; // Making Directory for template in which we're going to extract the template data file.
|
337
|
-
|
338
|
-
const TEMPLATE_EXTRACT_DIR = _path.default.join(INSTALL_EXTRACT_DIR, templateKey);
|
339
|
-
|
340
|
-
(0, _fsExtra.ensureDirSync)(TEMPLATE_EXTRACT_DIR);
|
341
|
-
|
342
|
-
const templateDataFileKey = _dotPropImmutable.default.get(fileUploadsData, `data`);
|
343
|
-
|
344
|
-
const TEMPLATE_DATA_FILE_PATH = _path.default.join(TEMPLATE_EXTRACT_DIR, _path.default.basename(templateDataFileKey));
|
345
|
-
|
346
|
-
log(`Downloading Template data file: ${templateDataFileKey} at "${TEMPLATE_DATA_FILE_PATH}"`); // Download and save template data file in disk.
|
347
|
-
|
348
|
-
await new Promise((resolve, reject) => {
|
349
|
-
_s3Stream.s3Stream.readStream(templateDataFileKey).on("error", reject).pipe((0, _fs.createWriteStream)(TEMPLATE_DATA_FILE_PATH)).on("error", reject).on("finish", resolve);
|
350
|
-
}); // Load the template data file from disk.
|
351
|
-
|
352
|
-
log(`Load file ${templateDataFileKey}`);
|
353
|
-
const {
|
354
|
-
template,
|
355
|
-
files
|
356
|
-
} = await (0, _loadJsonFile.default)(TEMPLATE_DATA_FILE_PATH); // Only update template data if there are files.
|
357
|
-
|
358
|
-
if (files && Array.isArray(files) && files.length > 0) {
|
359
|
-
// Upload template assets.
|
360
|
-
const {
|
361
|
-
fileIdToKeyMap
|
362
|
-
} = await uploadAssets({
|
363
|
-
context,
|
364
|
-
filesData: files,
|
365
|
-
fileUploadsData
|
366
|
-
});
|
367
|
-
const settings = await context.fileManager.settings.getSettings();
|
368
|
-
const {
|
369
|
-
srcPrefix = ""
|
370
|
-
} = settings || {};
|
371
|
-
updateFilesInData({
|
372
|
-
data: template.content || {},
|
373
|
-
fileIdToKeyMap,
|
374
|
-
srcPrefix
|
375
|
-
});
|
376
|
-
}
|
377
|
-
|
378
|
-
log("Removing Directory for template...");
|
379
|
-
await (0, _downloadInstallFiles.deleteFile)(templateKey);
|
380
|
-
log(`Remove template contents from S3...`);
|
381
|
-
await deleteS3Folder(_path.default.dirname(fileUploadsData.data));
|
382
|
-
return template;
|
383
|
-
}
|
384
|
-
|
385
330
|
async function uploadFilesFromS3({
|
386
331
|
fileKeyToFileMap,
|
387
332
|
oldKeyToNewKeyMap
|