@hcl-software/dxclient 221.0.0 → 223.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{README.txt → README.md} +2 -0
- package/dist/configuration/config.json +1 -0
- package/dist/configuration/versionConfigMap.json +2 -0
- package/dist/package.json +11 -11
- package/dist/packages/livesync/package-lock.json +7 -0
- package/dist/packages/livesync/package.json +2 -0
- package/dist/packages/livesync/src/commands/pullWcmDesignLibrary.d.ts +3 -1
- package/dist/packages/livesync/src/commands/pullWcmDesignLibrary.js +138 -33
- package/dist/packages/livesync/src/commands/pullWcmDesignLibrary.js.map +1 -1
- package/dist/packages/livesync/src/commands/pushWcmDesignLibrary.d.ts +18 -0
- package/dist/packages/livesync/src/commands/pushWcmDesignLibrary.js +570 -2
- package/dist/packages/livesync/src/commands/pushWcmDesignLibrary.js.map +1 -1
- package/dist/packages/livesync/src/errors/CommandLineMessages_en.json +43 -15
- package/dist/packages/livesync/src/messages/messages_en.json +12 -2
- package/dist/packages/livesync/src/services/EventsQueue.js.map +1 -1
- package/dist/packages/livesync/src/services/foldersWcmServices.js +27 -5
- package/dist/packages/livesync/src/services/foldersWcmServices.js.map +1 -1
- package/dist/packages/livesync/src/services/htmlComponentWcmServices.js +34 -6
- package/dist/packages/livesync/src/services/htmlComponentWcmServices.js.map +1 -1
- package/dist/packages/livesync/src/services/livesyncUtils.d.ts +4 -0
- package/dist/packages/livesync/src/services/livesyncUtils.js +17 -1
- package/dist/packages/livesync/src/services/livesyncUtils.js.map +1 -1
- package/dist/packages/livesync/src/services/metadataServices.d.ts +8 -2
- package/dist/packages/livesync/src/services/metadataServices.js +205 -61
- package/dist/packages/livesync/src/services/metadataServices.js.map +1 -1
- package/dist/packages/livesync/src/services/ongoingSyncServices.d.ts +6 -0
- package/dist/packages/livesync/src/services/ongoingSyncServices.js +414 -4
- package/dist/packages/livesync/src/services/ongoingSyncServices.js.map +1 -1
- package/dist/packages/livesync/src/services/wcmRestV2Services.js +9 -2
- package/dist/packages/livesync/src/services/wcmRestV2Services.js.map +1 -1
- package/dist/packages/livesync/src/types/EventQueueItem.type.d.ts +5 -1
- package/dist/packages/livesync/src/types/WCMDesignLibraryCache.type.d.ts +9 -0
- package/dist/packages/livesync/src/types/WCMDesignLibraryCache.type.js +3 -0
- package/dist/packages/livesync/src/types/WCMDesignLibraryCache.type.js.map +1 -0
- package/dist/packages/livesync/src/types/WcmRestApiV2.type.d.ts +11 -0
- package/dist/packages/livesync/src/types/index.d.ts +1 -0
- package/dist/packages/livesync/src/types/index.js +1 -0
- package/dist/packages/livesync/src/types/index.js.map +1 -1
- package/dist/src/index.js +39 -23
- package/dist/src/index.js.map +1 -1
- package/dist/src/utils/constants.d.ts +17 -2
- package/dist/src/utils/constants.js +26 -5
- package/dist/src/utils/constants.js.map +1 -1
- package/dist/src/utils/utils.js +2 -1
- package/dist/src/utils/utils.js.map +1 -1
- package/dist/src/utils/validateOptions.js +4 -4
- package/dist/src/utils/validateOptions.js.map +1 -1
- package/package.json +11 -11
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
2
21
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
22
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
23
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -8,15 +27,564 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
27
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
28
|
});
|
|
10
29
|
};
|
|
30
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
31
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
32
|
+
};
|
|
11
33
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
34
|
exports.PushWcmDesignLibrary = void 0;
|
|
35
|
+
const path_1 = __importStar(require("path"));
|
|
36
|
+
const fs_extra_1 = require("fs-extra");
|
|
37
|
+
const chokidar_1 = __importDefault(require("chokidar"));
|
|
38
|
+
const lodash_1 = require("lodash");
|
|
13
39
|
const logger_1 = require("../../../../src/utils/logger");
|
|
40
|
+
const metadataServices_1 = require("../services/metadataServices");
|
|
41
|
+
const htmlComponentWcmServices_1 = require("../services/htmlComponentWcmServices");
|
|
42
|
+
const constants_1 = require("../../../../src/utils/constants");
|
|
43
|
+
const foldersWcmServices_1 = require("../services/foldersWcmServices");
|
|
44
|
+
const utils_1 = require("../../../../src/utils/utils");
|
|
45
|
+
const filesServices_1 = require("../../../../src/services/filesServices");
|
|
46
|
+
const EventsQueue_1 = require("../services/EventsQueue");
|
|
47
|
+
const livesyncUtils_1 = require("../services/livesyncUtils");
|
|
48
|
+
const ongoingSyncServices_1 = require("../services/ongoingSyncServices");
|
|
14
49
|
class PushWcmDesignLibrary {
|
|
50
|
+
constructor() {
|
|
51
|
+
this.watcher = null;
|
|
52
|
+
this.eventsQueue = null;
|
|
53
|
+
}
|
|
15
54
|
invoke(cmdArgs) {
|
|
16
55
|
return __awaiter(this, void 0, void 0, function* () {
|
|
17
|
-
logger_1.logger.debug('
|
|
18
|
-
|
|
56
|
+
logger_1.logger.debug('Executing function Push WCM Design Library invoke');
|
|
57
|
+
let isSuccess = false;
|
|
58
|
+
this.libraryPath = cmdArgs.wcmLibraryPath;
|
|
59
|
+
this.libraryMetaData = metadataServices_1.getLibraryMetadata(this.libraryPath);
|
|
60
|
+
let { wcmLibraryName } = cmdArgs;
|
|
61
|
+
this.apiOptions = {
|
|
62
|
+
dxProtocol: cmdArgs.dxProtocol,
|
|
63
|
+
hostname: cmdArgs.hostname,
|
|
64
|
+
dxPort: cmdArgs.dxPort,
|
|
65
|
+
contenthandlerPath: cmdArgs.contenthandlerPath,
|
|
66
|
+
dxUsername: cmdArgs.dxUsername,
|
|
67
|
+
dxPassword: cmdArgs.dxPassword,
|
|
68
|
+
virtualPortalContext: cmdArgs.virtualPortalContext,
|
|
69
|
+
wcmProjectName: cmdArgs.wcmProjectName,
|
|
70
|
+
};
|
|
71
|
+
try {
|
|
72
|
+
logger_1.logger.info(utils_1.message('LIVESYNC_PUSH_WCM_INITIAL_START'));
|
|
73
|
+
this.libraryMetaData = metadataServices_1.getLibraryMetadata(this.libraryPath);
|
|
74
|
+
if (!this.libraryMetaData) {
|
|
75
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_NO_METADATA', { 0: this.libraryPath }));
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
wcmLibraryName = this.libraryMetaData.name;
|
|
79
|
+
PushWcmDesignLibrary.savedMetadata = metadataServices_1.loadMetadata(this.libraryPath);
|
|
80
|
+
isSuccess = yield this.pushAll(cmdArgs.wcmLibraryPath);
|
|
81
|
+
if (isSuccess && utils_1.isFeatureEnabled(constants_1.FeaturesEnum.LIVESYNC_WCM_DELETE)) {
|
|
82
|
+
yield this.deleteFoldersAndFiles(cmdArgs.wcmLibraryPath);
|
|
83
|
+
}
|
|
84
|
+
PushWcmDesignLibrary.savedMetadata = metadataServices_1.loadMetadata(cmdArgs.wcmLibraryPath);
|
|
85
|
+
logger_1.logger.info(utils_1.message('LIVESYNC_PUSH_WCM_INITIAL_END'));
|
|
86
|
+
return new Promise((resolve) => {
|
|
87
|
+
this.ongoingSync(cmdArgs, {
|
|
88
|
+
onWatcherClose: (ongoingSyncSuccess) => __awaiter(this, void 0, void 0, function* () {
|
|
89
|
+
if (!ongoingSyncSuccess) {
|
|
90
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_WCM_DESIGN_LIBRARY_ONGOING_PUSH', { 0: wcmLibraryName }));
|
|
91
|
+
resolve(false);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
logger_1.logger.info(utils_1.message('LIVESYNC_PUSH_WCM_DESIGN_LIBRARY_END_SUCCESS'));
|
|
95
|
+
resolve(true);
|
|
96
|
+
}
|
|
97
|
+
}),
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_WCM_DESIGN_LIBRARY_PUSH_GENERIC', { 0: wcmLibraryName, 1: error.message }));
|
|
103
|
+
isSuccess = false;
|
|
104
|
+
}
|
|
105
|
+
return isSuccess;
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
deleteFoldersAndFiles(libraryPath) {
|
|
109
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
110
|
+
logger_1.logger.debug('Executing function Push WCM Design Library deleteFoldersAndFiles');
|
|
111
|
+
const folderMetadataPath = path_1.join(libraryPath, '.library', 'folders');
|
|
112
|
+
const componentMetadataPath = path_1.join(libraryPath, '.library', 'components');
|
|
113
|
+
const folderMetadataCollection = fs_extra_1.readdirSync(folderMetadataPath);
|
|
114
|
+
const deleteFolderJobs = folderMetadataCollection.map((file) => __awaiter(this, void 0, void 0, function* () {
|
|
115
|
+
const filePath = path_1.join(folderMetadataPath, file);
|
|
116
|
+
if (!fs_extra_1.existsSync(filePath))
|
|
117
|
+
return;
|
|
118
|
+
const folderMeta = fs_extra_1.readJSONSync(filePath);
|
|
119
|
+
if (!fs_extra_1.existsSync(folderMeta.localPath)) {
|
|
120
|
+
if (!utils_1.isFeatureEnabled(constants_1.FeaturesEnum.LIVESYNC_WCM_DELETE_FOLDER)) {
|
|
121
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_DELETE_FOLDER_DISABLED', { 0: folderMeta.localPath }));
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
yield this.deleteRootMissingFolder(folderMeta.parentID, folderMeta.id, folderMeta.name);
|
|
125
|
+
}
|
|
126
|
+
}));
|
|
127
|
+
const isSuccess = yield Promise.all(deleteFolderJobs).then(() => {
|
|
128
|
+
logger_1.logger.debug('Initial Sync - Folder Delete Function Completed');
|
|
129
|
+
const componentsMetadataCollection = fs_extra_1.readdirSync(componentMetadataPath);
|
|
130
|
+
const deleteComponentJobs = componentsMetadataCollection.map((file) => __awaiter(this, void 0, void 0, function* () {
|
|
131
|
+
const filePath = path_1.join(componentMetadataPath, file);
|
|
132
|
+
const componentsMeta = fs_extra_1.readJSONSync(filePath);
|
|
133
|
+
if (!fs_extra_1.existsSync(componentsMeta.localPath)) {
|
|
134
|
+
const resp = yield htmlComponentWcmServices_1.deleteHtmlComponent(this.apiOptions, componentsMeta.id);
|
|
135
|
+
if ([204, 404, 409].includes(resp.status)) {
|
|
136
|
+
if (resp.status === 409) {
|
|
137
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_HTML_CONFLICT', { 0: componentsMeta.name }));
|
|
138
|
+
}
|
|
139
|
+
try {
|
|
140
|
+
fs_extra_1.rmSync(filePath);
|
|
141
|
+
logger_1.logger.info(utils_1.message('LIVESYNC_PUSH_WCM_ONGOING_SYNC_DELETE_HTML_COMPONENT', { 0: componentsMeta.name, 1: this.libraryMetaData.name }));
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_DELETE_FOLDER_DEFAULT', { 0: componentsMeta.name, 1: err }));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}));
|
|
149
|
+
return Promise.all(deleteComponentJobs).then(() => {
|
|
150
|
+
logger_1.logger.debug('Initial Sync - Component Delete Function Completed');
|
|
151
|
+
return true;
|
|
152
|
+
}).catch(() => { return false; });
|
|
153
|
+
}).catch(() => { return false; });
|
|
154
|
+
logger_1.logger.debug('Initial Sync - Exiting function Push WCM Design Library deleteFoldersAndFiles');
|
|
155
|
+
return isSuccess;
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
deleteRootMissingFolder(parentID, childID, childName) {
|
|
159
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
160
|
+
logger_1.logger.debug('Executing function Push WCM Design Library deleteRootMissingFolder');
|
|
161
|
+
let isDeleteSuccess = false;
|
|
162
|
+
const parentFolderMeta = metadataServices_1.getFolderMeta(this.libraryPath, parentID);
|
|
163
|
+
let resp = { status: 999 };
|
|
164
|
+
if (!parentFolderMeta) {
|
|
165
|
+
isDeleteSuccess = true;
|
|
166
|
+
}
|
|
167
|
+
else if (parentFolderMeta && !fs_extra_1.existsSync(parentFolderMeta.localPath)) {
|
|
168
|
+
isDeleteSuccess = yield this.deleteRootMissingFolder(parentFolderMeta.parentID, parentID, parentFolderMeta.name);
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
resp = yield foldersWcmServices_1.deleteFolder(this.apiOptions, childID);
|
|
172
|
+
isDeleteSuccess = [204, 404].includes(resp.status);
|
|
173
|
+
}
|
|
174
|
+
if (isDeleteSuccess) {
|
|
175
|
+
try {
|
|
176
|
+
const metadataPath = path_1.join(this.libraryPath, '.library', 'folders', `${childID}.json`);
|
|
177
|
+
fs_extra_1.rmSync(metadataPath, { recursive: true, force: true });
|
|
178
|
+
logger_1.logger.info(utils_1.message('LIVESYNC_PUSH_WCM_ONGOING_SYNC_DELETE_FOLDER', { 0: childName, 1: this.libraryMetaData.name }));
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
181
|
+
catch (err) {
|
|
182
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_DELETE_FOLDER_DEFAULT', { 0: childName, 1: err }));
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return false;
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
pushAll(directoryPath) {
|
|
189
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
190
|
+
logger_1.logger.debug('Executing function Push WCM Design Library initPusLibraryHTMLComponent');
|
|
191
|
+
const files = fs_extra_1.readdirSync(directoryPath);
|
|
192
|
+
let isSuccessful = true;
|
|
193
|
+
for (let i = 0; i < files.length; i += 1) {
|
|
194
|
+
const file = files[i];
|
|
195
|
+
const filePath = path_1.join(directoryPath, file);
|
|
196
|
+
const fileName = path_1.default.parse(filePath).name;
|
|
197
|
+
const fileStats = fs_extra_1.statSync(filePath);
|
|
198
|
+
if (!constants_1.LIVESYNC_WCM_LIBRARY_DEFAULT_DIRS.includes(file)) {
|
|
199
|
+
if (directoryPath === this.libraryPath) {
|
|
200
|
+
continue;
|
|
201
|
+
}
|
|
202
|
+
if (fileName === '.html') {
|
|
203
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_INVALID_FILENAME', { 0: filePath }));
|
|
204
|
+
isSuccessful = false;
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
if (path_1.default.extname(filePath) === '.html') {
|
|
208
|
+
try {
|
|
209
|
+
yield this.pushHTMLFile(filePath);
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
logger_1.logger.error(`Error pushing HTML file ${filePath}: ${error.message}`);
|
|
213
|
+
isSuccessful = false;
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
else if (fileStats.isDirectory()) {
|
|
218
|
+
try {
|
|
219
|
+
yield this.pushFolderComponent(filePath);
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
logger_1.logger.error(`Error pushing folder component ${filePath}: ${error.message}`);
|
|
223
|
+
isSuccessful = false;
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
if (fileStats.isDirectory() && file !== '.library') {
|
|
229
|
+
try {
|
|
230
|
+
yield this.pushAll(filePath);
|
|
231
|
+
}
|
|
232
|
+
catch (error) {
|
|
233
|
+
logger_1.logger.error(`Error processing directory ${filePath}: ${error.message}`);
|
|
234
|
+
isSuccessful = false;
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return isSuccessful;
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
pushHTMLFile(filePath) {
|
|
243
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
244
|
+
logger_1.logger.debug('Executing function Push WCM Design Library pushFile');
|
|
245
|
+
const directoryPath = path_1.default.parse(filePath).dir;
|
|
246
|
+
const directoryFileMeta = metadataServices_1.getSavedMetadata(this.libraryPath, directoryPath, PushWcmDesignLibrary.savedMetadata);
|
|
247
|
+
const fileName = path_1.default.parse(filePath).name;
|
|
248
|
+
const libraryID = this.libraryMetaData.id;
|
|
249
|
+
const parentID = directoryFileMeta ? directoryFileMeta.id : libraryID;
|
|
250
|
+
const fileMeta = metadataServices_1.getSavedMetadata(this.libraryPath, filePath, PushWcmDesignLibrary.savedMetadata);
|
|
251
|
+
let referenceUrl = '';
|
|
252
|
+
if (this.apiOptions.virtualPortalContext) {
|
|
253
|
+
referenceUrl = `${this.apiOptions.contenthandlerPath}/${this.apiOptions.virtualPortalContext}`;
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
referenceUrl = `${this.apiOptions.contenthandlerPath}`;
|
|
257
|
+
}
|
|
258
|
+
if (this.apiOptions.wcmProjectName) {
|
|
259
|
+
referenceUrl += `/$project/${this.apiOptions.wcmProjectName}`;
|
|
260
|
+
logger_1.logger.debug('referenceUrl appended with project name - %s', this.apiOptions.wcmProjectName);
|
|
261
|
+
}
|
|
262
|
+
logger_1.logger.debug('referenceUrl: %s', referenceUrl);
|
|
263
|
+
const fileIsNew = !fileMeta;
|
|
264
|
+
let resp = { status: 999 };
|
|
265
|
+
if (fileIsNew) {
|
|
266
|
+
const data = JSON.stringify({
|
|
267
|
+
entry: {
|
|
268
|
+
title: {
|
|
269
|
+
lang: 'en',
|
|
270
|
+
value: fileName,
|
|
271
|
+
},
|
|
272
|
+
description: {
|
|
273
|
+
lang: 'en',
|
|
274
|
+
value: 'HTML Component Description',
|
|
275
|
+
},
|
|
276
|
+
name: fileName,
|
|
277
|
+
type: 'LibraryHTMLComponent',
|
|
278
|
+
link: [
|
|
279
|
+
{
|
|
280
|
+
rel: 'library',
|
|
281
|
+
href: `${referenceUrl}${constants_1.URL_PATH.wcmV2Libraries}/${libraryID}`,
|
|
282
|
+
lang: 'en',
|
|
283
|
+
label: 'Library',
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
rel: 'parent',
|
|
287
|
+
href: `${referenceUrl}${constants_1.URL_PATH.wcmV2Folders}/${parentID}`,
|
|
288
|
+
lang: 'en',
|
|
289
|
+
label: 'Parent',
|
|
290
|
+
},
|
|
291
|
+
],
|
|
292
|
+
content: {
|
|
293
|
+
type: 'text/html',
|
|
294
|
+
value: fs_extra_1.readFileSync(filePath, 'utf8'),
|
|
295
|
+
},
|
|
296
|
+
},
|
|
297
|
+
});
|
|
298
|
+
resp = yield htmlComponentWcmServices_1.createHtmlComponent(this.apiOptions, data);
|
|
299
|
+
const metadata = metadataServices_1.createComponentsMeta(this.libraryPath, resp.data, parentID, libraryID);
|
|
300
|
+
PushWcmDesignLibrary.savedMetadata = metadataServices_1.saveMetadata(this.libraryPath, metadata, PushWcmDesignLibrary.savedMetadata);
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
fileMeta.content.value = fs_extra_1.readFileSync(filePath, 'utf8');
|
|
304
|
+
const cleanFileMeta = Object.assign({}, fileMeta);
|
|
305
|
+
delete cleanFileMeta.localPath;
|
|
306
|
+
delete cleanFileMeta.parentID;
|
|
307
|
+
const data = JSON.stringify({ entry: Object.assign({}, cleanFileMeta) });
|
|
308
|
+
resp = yield htmlComponentWcmServices_1.updateHtmlComponent(this.apiOptions, fileMeta.id, data);
|
|
309
|
+
const metadata = metadataServices_1.createComponentsMeta(this.libraryPath, resp.data, fileMeta.parentID, libraryID, true);
|
|
310
|
+
PushWcmDesignLibrary.savedMetadata = metadataServices_1.saveMetadata(this.libraryPath, metadata, PushWcmDesignLibrary.savedMetadata);
|
|
311
|
+
}
|
|
312
|
+
switch (resp.status) {
|
|
313
|
+
case 200:
|
|
314
|
+
case 201:
|
|
315
|
+
logger_1.logger.info(utils_1.message(`LIVESYNC_PUSH_WCM_ONGOING_SYNC_${fileIsNew ? 'CREATE' : 'UPDATE'}_HTML_COMPONENT`, { 0: fileName, 1: this.libraryMetaData.name }));
|
|
316
|
+
return true;
|
|
317
|
+
case 400:
|
|
318
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_CREATE_HTML_DEFAULT', { 0: fileName, 1: resp.statusText }));
|
|
319
|
+
return false;
|
|
320
|
+
case 404:
|
|
321
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_UPDATE_HTML_NOTFOUND', { 0: fileName }));
|
|
322
|
+
return false;
|
|
323
|
+
default:
|
|
324
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_UPDATE_HTML_DEFAULT', { 0: fileName, 1: resp.statusText }));
|
|
325
|
+
return false;
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
pushFolderComponent(filePath) {
|
|
330
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
331
|
+
logger_1.logger.debug('Executing function Push WCM Design Library pushFile');
|
|
332
|
+
const fileName = path_1.default.parse(filePath).name;
|
|
333
|
+
const fileMeta = metadataServices_1.getSavedMetadata(this.libraryPath, filePath, PushWcmDesignLibrary.savedMetadata);
|
|
334
|
+
const libraryID = this.libraryMetaData.id;
|
|
335
|
+
const directoryPath = path_1.default.parse(filePath).dir;
|
|
336
|
+
const directoryFileMeta = metadataServices_1.getSavedMetadata(this.libraryPath, directoryPath, PushWcmDesignLibrary.savedMetadata);
|
|
337
|
+
const parentID = directoryFileMeta.id;
|
|
338
|
+
const data = {
|
|
339
|
+
type: 'Folder',
|
|
340
|
+
name: fileName,
|
|
341
|
+
description: {
|
|
342
|
+
lang: 'en',
|
|
343
|
+
value: fileName,
|
|
344
|
+
},
|
|
345
|
+
title: {
|
|
346
|
+
lang: 'en',
|
|
347
|
+
value: fileName,
|
|
348
|
+
},
|
|
349
|
+
libraryID,
|
|
350
|
+
parentID,
|
|
351
|
+
};
|
|
352
|
+
const fileIsNew = !fileMeta;
|
|
353
|
+
let resp = { status: 999 };
|
|
354
|
+
if (fileIsNew) {
|
|
355
|
+
resp = yield foldersWcmServices_1.createFolder(this.apiOptions, libraryID, JSON.stringify(data));
|
|
356
|
+
resp.data.localPath = filePath;
|
|
357
|
+
metadataServices_1.createFolderMeta(this.libraryPath, resp.data);
|
|
358
|
+
PushWcmDesignLibrary.savedMetadata = metadataServices_1.saveMetadata(this.libraryPath, resp.data, PushWcmDesignLibrary.getCache());
|
|
359
|
+
}
|
|
360
|
+
else {
|
|
361
|
+
resp = yield foldersWcmServices_1.updateFolder(this.apiOptions, fileMeta.id, JSON.stringify(data));
|
|
362
|
+
metadataServices_1.createFolderMeta(this.libraryPath, resp.data);
|
|
363
|
+
resp.data.localPath = filePath;
|
|
364
|
+
PushWcmDesignLibrary.savedMetadata = metadataServices_1.saveMetadata(this.libraryPath, resp.data, PushWcmDesignLibrary.getCache());
|
|
365
|
+
}
|
|
366
|
+
switch (resp.status) {
|
|
367
|
+
case 200:
|
|
368
|
+
case 201:
|
|
369
|
+
logger_1.logger.info(utils_1.message(`LIVESYNC_PUSH_WCM_ONGOING_SYNC_${fileIsNew ? 'CREATE' : 'UPDATE'}_FOLDER`, { 0: fileName, 1: this.libraryMetaData.name }));
|
|
370
|
+
return true;
|
|
371
|
+
case 400:
|
|
372
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_INITIAL_SYNC_CREATE_FOLDER', { 0: fileName, 1: resp.statusText }));
|
|
373
|
+
return false;
|
|
374
|
+
case 404:
|
|
375
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_UPDATE_FOLDER_NOTFOUND', { 0: fileName }));
|
|
376
|
+
return false;
|
|
377
|
+
default:
|
|
378
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_CREATE_FOLDER_DEFAULT', { 0: fileName, 1: resp.statusText }));
|
|
379
|
+
return false;
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
ongoingSync(cmdArgs, hooks) {
|
|
384
|
+
logger_1.logger.debug('Executing function Push WCM Design Library ongoingSync');
|
|
385
|
+
let isSuccess = true;
|
|
386
|
+
const { wcmLibraryPath } = cmdArgs;
|
|
387
|
+
const handlerProvider = {
|
|
388
|
+
[constants_1.ChokidarEvent.ADD]: () => __awaiter(this, void 0, void 0, function* () {
|
|
389
|
+
logger_1.logger.debug('File created');
|
|
390
|
+
}),
|
|
391
|
+
[constants_1.ChokidarEvent.ADD_HTML]: ongoingSyncServices_1.addWCMHtmlComponentHandler,
|
|
392
|
+
[constants_1.ChokidarEvent.ADD_DIR]: ongoingSyncServices_1.addWCMFolderHandler,
|
|
393
|
+
[constants_1.ChokidarEvent.CHANGE]: () => __awaiter(this, void 0, void 0, function* () {
|
|
394
|
+
logger_1.logger.debug('Updated file event');
|
|
395
|
+
}),
|
|
396
|
+
[constants_1.ChokidarEvent.CHANGE_HTML]: ongoingSyncServices_1.updateWCMHtmlComponentHandler,
|
|
397
|
+
[constants_1.ChokidarEvent.CHANGE_DIR]: ongoingSyncServices_1.updateWCMFolderHandler,
|
|
398
|
+
[constants_1.ChokidarEvent.UNLINK_HTML]: ongoingSyncServices_1.deleteWCMHtmlComponentHandler,
|
|
399
|
+
[constants_1.ChokidarEvent.UNLINK_DIR]: ongoingSyncServices_1.deleteWCMFolderHandle,
|
|
400
|
+
};
|
|
401
|
+
this.eventsQueue = new EventsQueue_1.EventsQueue(handlerProvider);
|
|
402
|
+
this.eventsQueue.initialize();
|
|
403
|
+
logger_1.logger.debug('Initializing chokidar watcher...');
|
|
404
|
+
logger_1.logger.info(utils_1.message('LIVE_SYNC_START', { 0: wcmLibraryPath }));
|
|
405
|
+
const STABILITY_THRESHOLD = 100;
|
|
406
|
+
const POLL_INTERVAL = 2000;
|
|
407
|
+
const watchOptions = {
|
|
408
|
+
awaitWriteFinish: {
|
|
409
|
+
stabilityThreshold: STABILITY_THRESHOLD,
|
|
410
|
+
pollInterval: POLL_INTERVAL,
|
|
411
|
+
},
|
|
412
|
+
persistent: true,
|
|
413
|
+
ignoreInitial: true,
|
|
414
|
+
ignored: [...filesServices_1.fileServices.getIgnoredPaths(wcmLibraryPath), path_1.join(wcmLibraryPath, '.library')],
|
|
415
|
+
};
|
|
416
|
+
this.watcher = chokidar_1.default
|
|
417
|
+
.watch(wcmLibraryPath, watchOptions)
|
|
418
|
+
.on(constants_1.ChokidarEvent.ADD, (chokidarPath) => __awaiter(this, void 0, void 0, function* () {
|
|
419
|
+
logger_1.logger.debug(`Detected file created: ${chokidarPath}`);
|
|
420
|
+
const fileName = path_1.default.parse(chokidarPath).name;
|
|
421
|
+
if (fileName === '.html') {
|
|
422
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_INVALID_FILENAME', { 0: chokidarPath }));
|
|
423
|
+
return;
|
|
424
|
+
}
|
|
425
|
+
const chokidarEventType = livesyncUtils_1.getEventByFileType(chokidarPath, constants_1.ChokidarEvent.ADD);
|
|
426
|
+
switch (chokidarEventType) {
|
|
427
|
+
case constants_1.ChokidarEvent.ADD_HTML:
|
|
428
|
+
this.eventsQueue.push({
|
|
429
|
+
cmdArgs,
|
|
430
|
+
chokidarEvent: chokidarEventType,
|
|
431
|
+
chokidarPath,
|
|
432
|
+
options: {
|
|
433
|
+
library: this.libraryMetaData,
|
|
434
|
+
},
|
|
435
|
+
});
|
|
436
|
+
break;
|
|
437
|
+
case constants_1.ChokidarEvent.ADD:
|
|
438
|
+
this.eventsQueue.push({ cmdArgs, chokidarEvent: chokidarEventType, chokidarPath });
|
|
439
|
+
break;
|
|
440
|
+
default:
|
|
441
|
+
logger_1.logger.debug(`Detected file created: ${chokidarPath}`);
|
|
442
|
+
break;
|
|
443
|
+
}
|
|
444
|
+
}))
|
|
445
|
+
.on(constants_1.ChokidarEvent.ADD_DIR, (chokidarPath) => __awaiter(this, void 0, void 0, function* () {
|
|
446
|
+
logger_1.logger.debug(`Detected folder created: ${chokidarPath}`);
|
|
447
|
+
this.eventsQueue.push({
|
|
448
|
+
cmdArgs,
|
|
449
|
+
chokidarEvent: constants_1.ChokidarEvent.ADD_DIR,
|
|
450
|
+
chokidarPath,
|
|
451
|
+
options: {
|
|
452
|
+
library: this.libraryMetaData,
|
|
453
|
+
},
|
|
454
|
+
});
|
|
455
|
+
}))
|
|
456
|
+
.on(constants_1.ChokidarEvent.CHANGE, (chokidarPath) => __awaiter(this, void 0, void 0, function* () {
|
|
457
|
+
logger_1.logger.debug(`Detected file updated: ${chokidarPath}`);
|
|
458
|
+
const fileName = path_1.default.parse(chokidarPath).name;
|
|
459
|
+
if (fileName === '.html') {
|
|
460
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_INVALID_FILENAME', { 0: chokidarPath }));
|
|
461
|
+
return;
|
|
462
|
+
}
|
|
463
|
+
const chokidarEventType = livesyncUtils_1.getEventByFileType(chokidarPath, constants_1.ChokidarEvent.CHANGE);
|
|
464
|
+
switch (chokidarEventType) {
|
|
465
|
+
case constants_1.ChokidarEvent.CHANGE_HTML:
|
|
466
|
+
this.eventsQueue.push({
|
|
467
|
+
cmdArgs,
|
|
468
|
+
chokidarEvent: chokidarEventType,
|
|
469
|
+
chokidarPath,
|
|
470
|
+
options: {
|
|
471
|
+
library: this.libraryMetaData,
|
|
472
|
+
},
|
|
473
|
+
});
|
|
474
|
+
break;
|
|
475
|
+
case constants_1.ChokidarEvent.CHANGE:
|
|
476
|
+
this.eventsQueue.push({ cmdArgs, chokidarEvent: chokidarEventType, chokidarPath });
|
|
477
|
+
break;
|
|
478
|
+
default:
|
|
479
|
+
logger_1.logger.debug(`Detected file updated: ${chokidarPath}`);
|
|
480
|
+
this.eventsQueue.push({
|
|
481
|
+
cmdArgs,
|
|
482
|
+
chokidarEvent: livesyncUtils_1.getEventByFileType(chokidarPath, constants_1.ChokidarEvent.CHANGE),
|
|
483
|
+
chokidarPath,
|
|
484
|
+
});
|
|
485
|
+
break;
|
|
486
|
+
}
|
|
487
|
+
}))
|
|
488
|
+
.on(constants_1.ChokidarEvent.CHANGE_DIR, (chokidarPath) => __awaiter(this, void 0, void 0, function* () {
|
|
489
|
+
logger_1.logger.debug(`Detected folder updated: ${chokidarPath}`);
|
|
490
|
+
this.eventsQueue.push({
|
|
491
|
+
cmdArgs,
|
|
492
|
+
chokidarEvent: constants_1.ChokidarEvent.CHANGE_DIR,
|
|
493
|
+
chokidarPath,
|
|
494
|
+
options: {
|
|
495
|
+
library: this.libraryMetaData,
|
|
496
|
+
},
|
|
497
|
+
});
|
|
498
|
+
}))
|
|
499
|
+
.on(constants_1.ChokidarEvent.UNLINK, (chokidarPath) => __awaiter(this, void 0, void 0, function* () {
|
|
500
|
+
logger_1.logger.debug(`Detected file deleted: ${chokidarPath}`);
|
|
501
|
+
const chokidarEventType = livesyncUtils_1.getEventByFileType(chokidarPath, constants_1.ChokidarEvent.UNLINK);
|
|
502
|
+
switch (chokidarEventType) {
|
|
503
|
+
case constants_1.ChokidarEvent.UNLINK_HTML:
|
|
504
|
+
this.eventsQueue.push({
|
|
505
|
+
cmdArgs,
|
|
506
|
+
chokidarEvent: chokidarEventType,
|
|
507
|
+
chokidarPath,
|
|
508
|
+
options: {
|
|
509
|
+
library: this.libraryMetaData,
|
|
510
|
+
},
|
|
511
|
+
});
|
|
512
|
+
break;
|
|
513
|
+
case constants_1.ChokidarEvent.UNLINK:
|
|
514
|
+
this.eventsQueue.push({ cmdArgs, chokidarEvent: chokidarEventType, chokidarPath });
|
|
515
|
+
break;
|
|
516
|
+
default:
|
|
517
|
+
logger_1.logger.debug(`Detected file delete: ${chokidarPath}`);
|
|
518
|
+
break;
|
|
519
|
+
}
|
|
520
|
+
}))
|
|
521
|
+
.on(constants_1.ChokidarEvent.UNLINK_DIR, (chokidarPath) => __awaiter(this, void 0, void 0, function* () {
|
|
522
|
+
logger_1.logger.debug(`Detected folder deleted: ${chokidarPath}`);
|
|
523
|
+
this.eventsQueue.push({
|
|
524
|
+
cmdArgs,
|
|
525
|
+
chokidarEvent: constants_1.ChokidarEvent.UNLINK_DIR,
|
|
526
|
+
chokidarPath,
|
|
527
|
+
options: {
|
|
528
|
+
library: this.libraryMetaData,
|
|
529
|
+
},
|
|
530
|
+
});
|
|
531
|
+
}))
|
|
532
|
+
.on(constants_1.ChokidarEvent.ERROR, (error) => __awaiter(this, void 0, void 0, function* () {
|
|
533
|
+
logger_1.logger.debug('Something went wrong while running chokidar watch: %o', error);
|
|
534
|
+
isSuccess = false;
|
|
535
|
+
yield this.closeWatcher(isSuccess);
|
|
536
|
+
}))
|
|
537
|
+
.on(constants_1.ChokidarEvent.READY, () => {
|
|
538
|
+
if (hooks && hooks.onWatcherReady && lodash_1.isFunction(hooks.onWatcherReady)) {
|
|
539
|
+
hooks.onWatcherReady();
|
|
540
|
+
}
|
|
19
541
|
});
|
|
542
|
+
const sigIntcallBack = () => __awaiter(this, void 0, void 0, function* () {
|
|
543
|
+
const iSuccess = true;
|
|
544
|
+
process.removeListener('SIGINT', sigIntcallBack);
|
|
545
|
+
yield this.closeWatcher(iSuccess);
|
|
546
|
+
});
|
|
547
|
+
process.on('SIGINT', sigIntcallBack);
|
|
548
|
+
}
|
|
549
|
+
closeWatcher(emitIsSuccess, hooks) {
|
|
550
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
551
|
+
if (this.watcher) {
|
|
552
|
+
yield this.watcher.close();
|
|
553
|
+
this.watcher = null;
|
|
554
|
+
}
|
|
555
|
+
if (this.eventsQueue) {
|
|
556
|
+
yield this.eventsQueue.kill();
|
|
557
|
+
}
|
|
558
|
+
logger_1.logger.info(utils_1.message('LIVESYNC_RUN_CLEANUP_QUEUE'));
|
|
559
|
+
const maxRetryCount = 60;
|
|
560
|
+
const timeInterval = 1000;
|
|
561
|
+
const waitForQueueToFinish = (retryCount = 0) => __awaiter(this, void 0, void 0, function* () {
|
|
562
|
+
if (!this.eventsQueue.queue.running()) {
|
|
563
|
+
return;
|
|
564
|
+
}
|
|
565
|
+
if (retryCount < maxRetryCount) {
|
|
566
|
+
logger_1.logger.debug('Waiting for queue process to finish...');
|
|
567
|
+
yield new Promise((resolve) => {
|
|
568
|
+
return setTimeout(resolve, timeInterval);
|
|
569
|
+
});
|
|
570
|
+
yield waitForQueueToFinish(retryCount + 1);
|
|
571
|
+
}
|
|
572
|
+
else {
|
|
573
|
+
logger_1.logger.info(utils_1.message('LIVESYNC_END_CLEANUP_QUEUE'));
|
|
574
|
+
emitIsSuccess = false;
|
|
575
|
+
}
|
|
576
|
+
});
|
|
577
|
+
yield waitForQueueToFinish();
|
|
578
|
+
if ((hooks === null || hooks === void 0 ? void 0 : hooks.onWatcherClose) && typeof hooks.onWatcherClose === 'function') {
|
|
579
|
+
hooks.onWatcherClose(emitIsSuccess);
|
|
580
|
+
}
|
|
581
|
+
});
|
|
582
|
+
}
|
|
583
|
+
static updateCache(savedMetadata) {
|
|
584
|
+
PushWcmDesignLibrary.savedMetadata = savedMetadata;
|
|
585
|
+
}
|
|
586
|
+
static getCache() {
|
|
587
|
+
return PushWcmDesignLibrary.savedMetadata;
|
|
20
588
|
}
|
|
21
589
|
}
|
|
22
590
|
exports.PushWcmDesignLibrary = PushWcmDesignLibrary;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pushWcmDesignLibrary.js","sourceRoot":"","sources":["../../../../../packages/livesync/src/commands/pushWcmDesignLibrary.ts"],"names":[],"mappings":";;;;;;;;;;;;AAaA,yDAAsD;AAEtD,MAAa,oBAAoB;IACzB,MAAM,CAAC,OAA0B;;YACrC,eAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;CACF;AALD,oDAKC"}
|
|
1
|
+
{"version":3,"file":"pushWcmDesignLibrary.js","sourceRoot":"","sources":["../../../../../packages/livesync/src/commands/pushWcmDesignLibrary.ts"],"names":[],"mappings":"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"}
|