@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.
Files changed (48) hide show
  1. package/{README.txt → README.md} +2 -0
  2. package/dist/configuration/config.json +1 -0
  3. package/dist/configuration/versionConfigMap.json +2 -0
  4. package/dist/package.json +11 -11
  5. package/dist/packages/livesync/package-lock.json +7 -0
  6. package/dist/packages/livesync/package.json +2 -0
  7. package/dist/packages/livesync/src/commands/pullWcmDesignLibrary.d.ts +3 -1
  8. package/dist/packages/livesync/src/commands/pullWcmDesignLibrary.js +138 -33
  9. package/dist/packages/livesync/src/commands/pullWcmDesignLibrary.js.map +1 -1
  10. package/dist/packages/livesync/src/commands/pushWcmDesignLibrary.d.ts +18 -0
  11. package/dist/packages/livesync/src/commands/pushWcmDesignLibrary.js +570 -2
  12. package/dist/packages/livesync/src/commands/pushWcmDesignLibrary.js.map +1 -1
  13. package/dist/packages/livesync/src/errors/CommandLineMessages_en.json +43 -15
  14. package/dist/packages/livesync/src/messages/messages_en.json +12 -2
  15. package/dist/packages/livesync/src/services/EventsQueue.js.map +1 -1
  16. package/dist/packages/livesync/src/services/foldersWcmServices.js +27 -5
  17. package/dist/packages/livesync/src/services/foldersWcmServices.js.map +1 -1
  18. package/dist/packages/livesync/src/services/htmlComponentWcmServices.js +34 -6
  19. package/dist/packages/livesync/src/services/htmlComponentWcmServices.js.map +1 -1
  20. package/dist/packages/livesync/src/services/livesyncUtils.d.ts +4 -0
  21. package/dist/packages/livesync/src/services/livesyncUtils.js +17 -1
  22. package/dist/packages/livesync/src/services/livesyncUtils.js.map +1 -1
  23. package/dist/packages/livesync/src/services/metadataServices.d.ts +8 -2
  24. package/dist/packages/livesync/src/services/metadataServices.js +205 -61
  25. package/dist/packages/livesync/src/services/metadataServices.js.map +1 -1
  26. package/dist/packages/livesync/src/services/ongoingSyncServices.d.ts +6 -0
  27. package/dist/packages/livesync/src/services/ongoingSyncServices.js +414 -4
  28. package/dist/packages/livesync/src/services/ongoingSyncServices.js.map +1 -1
  29. package/dist/packages/livesync/src/services/wcmRestV2Services.js +9 -2
  30. package/dist/packages/livesync/src/services/wcmRestV2Services.js.map +1 -1
  31. package/dist/packages/livesync/src/types/EventQueueItem.type.d.ts +5 -1
  32. package/dist/packages/livesync/src/types/WCMDesignLibraryCache.type.d.ts +9 -0
  33. package/dist/packages/livesync/src/types/WCMDesignLibraryCache.type.js +3 -0
  34. package/dist/packages/livesync/src/types/WCMDesignLibraryCache.type.js.map +1 -0
  35. package/dist/packages/livesync/src/types/WcmRestApiV2.type.d.ts +11 -0
  36. package/dist/packages/livesync/src/types/index.d.ts +1 -0
  37. package/dist/packages/livesync/src/types/index.js +1 -0
  38. package/dist/packages/livesync/src/types/index.js.map +1 -1
  39. package/dist/src/index.js +39 -23
  40. package/dist/src/index.js.map +1 -1
  41. package/dist/src/utils/constants.d.ts +17 -2
  42. package/dist/src/utils/constants.js +26 -5
  43. package/dist/src/utils/constants.js.map +1 -1
  44. package/dist/src/utils/utils.js +2 -1
  45. package/dist/src/utils/utils.js.map +1 -1
  46. package/dist/src/utils/validateOptions.js +4 -4
  47. package/dist/src/utils/validateOptions.js.map +1 -1
  48. 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('LiveSync Push WCM Design Library invoke function');
18
- return true;
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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"}