@hcl-software/dxclient 222.0.0 → 224.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.md +187 -0
- package/dist/configuration/config.json +1 -0
- package/dist/configuration/versionConfigMap.json +1 -0
- package/dist/package.json +11 -11
- package/dist/packages/admintasks/src/commands/restartDXCore.js +18 -9
- package/dist/packages/admintasks/src/commands/restartDXCore.js.map +1 -1
- package/dist/packages/admintasks/src/errors/CommandLineMessages_en.json +1 -0
- package/dist/packages/livesync/src/commands/pullWcmDesignLibrary.d.ts +3 -2
- package/dist/packages/livesync/src/commands/pullWcmDesignLibrary.js +221 -75
- package/dist/packages/livesync/src/commands/pullWcmDesignLibrary.js.map +1 -1
- package/dist/packages/livesync/src/commands/pushTheme.js +8 -0
- package/dist/packages/livesync/src/commands/pushTheme.js.map +1 -1
- package/dist/packages/livesync/src/commands/pushWcmDesignLibrary.d.ts +5 -2
- package/dist/packages/livesync/src/commands/pushWcmDesignLibrary.js +325 -164
- package/dist/packages/livesync/src/commands/pushWcmDesignLibrary.js.map +1 -1
- package/dist/packages/livesync/src/errors/CommandLineMessages_en.json +45 -42
- package/dist/packages/livesync/src/messages/messages_en.json +11 -7
- package/dist/packages/livesync/src/services/EventsQueue.d.ts +1 -0
- package/dist/packages/livesync/src/services/EventsQueue.js +9 -2
- package/dist/packages/livesync/src/services/EventsQueue.js.map +1 -1
- package/dist/packages/livesync/src/services/foldersWcmServices.js +36 -6
- 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 +5 -1
- package/dist/packages/livesync/src/services/livesyncUtils.js +47 -1
- package/dist/packages/livesync/src/services/livesyncUtils.js.map +1 -1
- package/dist/packages/livesync/src/services/metadataServices.d.ts +8 -6
- package/dist/packages/livesync/src/services/metadataServices.js +279 -88
- package/dist/packages/livesync/src/services/metadataServices.js.map +1 -1
- package/dist/packages/livesync/src/services/ongoingSyncServices.js +144 -101
- package/dist/packages/livesync/src/services/ongoingSyncServices.js.map +1 -1
- package/dist/packages/livesync/src/services/presentationTemplateWcmServices.d.ts +6 -0
- package/dist/packages/livesync/src/services/presentationTemplateWcmServices.js +138 -0
- package/dist/packages/livesync/src/services/presentationTemplateWcmServices.js.map +1 -0
- 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 +1 -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 +18 -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 +29 -23
- package/dist/src/index.js.map +1 -1
- package/dist/src/services/apiServices.js +80 -78
- package/dist/src/services/apiServices.js.map +1 -1
- package/dist/src/utils/constants.d.ts +9 -3
- package/dist/src/utils/constants.js +18 -8
- package/dist/src/utils/constants.js.map +1 -1
- package/dist/src/utils/utils.js +6 -2
- 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
|
@@ -33,7 +33,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
33
33
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
34
|
exports.PushWcmDesignLibrary = void 0;
|
|
35
35
|
const path_1 = __importStar(require("path"));
|
|
36
|
-
const
|
|
36
|
+
const fs = __importStar(require("fs"));
|
|
37
37
|
const fs_extra_1 = require("fs-extra");
|
|
38
38
|
const chokidar_1 = __importDefault(require("chokidar"));
|
|
39
39
|
const lodash_1 = require("lodash");
|
|
@@ -54,235 +54,377 @@ class PushWcmDesignLibrary {
|
|
|
54
54
|
}
|
|
55
55
|
invoke(cmdArgs) {
|
|
56
56
|
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
57
|
+
let isSuccessful = false;
|
|
58
|
+
if (utils_1.isFeatureEnabled(constants_1.FeaturesEnum.LIVESYNC_WCM_HTML_COMPONENT)) {
|
|
59
|
+
isSuccessful = yield this.pushWcmHtmlComponents(cmdArgs);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
logger_1.logger.debug(utils_1.message('LIVESYNC_WCM_HTML_COMPONENT_DISABLED'), {}, true);
|
|
63
|
+
}
|
|
64
|
+
if (utils_1.isFeatureEnabled(constants_1.FeaturesEnum.LIVESYNC_WCM_PRESENTATION_TEMPLATE)) {
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
logger_1.logger.debug(utils_1.message('LIVESYNC_WCM_PRESENTATION_TEMPLATE_DISABLED'), {}, true);
|
|
68
|
+
}
|
|
69
|
+
return isSuccessful;
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
pushWcmHtmlComponents(cmdArgs) {
|
|
73
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
71
74
|
try {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
+
logger_1.logger.debug('Executing the function Push HTML Components and folders of WCM Design Library');
|
|
76
|
+
let isSuccess = false;
|
|
77
|
+
let wcmLibraryId = '';
|
|
78
|
+
this.libraryPath = cmdArgs.wcmLibraryPath;
|
|
79
|
+
this.libraryMetaData = metadataServices_1.getLibraryMetadata(this.libraryPath);
|
|
80
|
+
let { wcmLibraryName } = cmdArgs;
|
|
81
|
+
this.apiOptions = {
|
|
82
|
+
dxProtocol: cmdArgs.dxProtocol,
|
|
83
|
+
hostname: cmdArgs.hostname,
|
|
84
|
+
dxPort: cmdArgs.dxPort,
|
|
85
|
+
contenthandlerPath: cmdArgs.contenthandlerPath,
|
|
86
|
+
dxUsername: cmdArgs.dxUsername,
|
|
87
|
+
dxPassword: cmdArgs.dxPassword,
|
|
88
|
+
virtualPortalContext: cmdArgs.virtualPortalContext,
|
|
89
|
+
wcmProjectName: cmdArgs.wcmProjectName,
|
|
90
|
+
};
|
|
91
|
+
const libraryDetails = (wcmLibraryName || (this.libraryMetaData && (this.libraryMetaData.title.value || this.libraryMetaData.title)));
|
|
92
|
+
wcmLibraryId = yield livesyncUtils_1.getLibraryId(libraryDetails, this.apiOptions, 'push');
|
|
93
|
+
logger_1.logger.info(utils_1.message(`Library ID: ${wcmLibraryId}`));
|
|
94
|
+
try {
|
|
95
|
+
logger_1.logger.info(utils_1.message('LIVESYNC_PUSH_WCM_INITIAL_START'));
|
|
96
|
+
this.libraryMetaData = metadataServices_1.getLibraryMetadata(this.libraryPath);
|
|
97
|
+
if (!this.libraryMetaData) {
|
|
98
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_NO_METADATA', { 0: this.libraryPath }));
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
wcmLibraryName = this.libraryMetaData.name;
|
|
102
|
+
PushWcmDesignLibrary.savedMetadata = metadataServices_1.loadMetadata(this.libraryPath);
|
|
103
|
+
isSuccess = yield this.pushAll(cmdArgs.wcmLibraryPath);
|
|
104
|
+
if (isSuccess && utils_1.isFeatureEnabled(constants_1.FeaturesEnum.LIVESYNC_WCM_DELETE)) {
|
|
105
|
+
yield this.deleteFoldersAndFiles(cmdArgs.wcmLibraryPath);
|
|
106
|
+
}
|
|
107
|
+
PushWcmDesignLibrary.savedMetadata = metadataServices_1.loadMetadata(cmdArgs.wcmLibraryPath);
|
|
108
|
+
logger_1.logger.info(utils_1.message('LIVESYNC_PUSH_WCM_INITIAL_END'));
|
|
109
|
+
return new Promise((resolve) => {
|
|
110
|
+
this.ongoingSync(cmdArgs, {
|
|
111
|
+
onWatcherClose: (ongoingSyncSuccess) => __awaiter(this, void 0, void 0, function* () {
|
|
112
|
+
if (!ongoingSyncSuccess) {
|
|
113
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_WCM_DESIGN_LIBRARY_ONGOING_PUSH', { 0: wcmLibraryName }));
|
|
114
|
+
resolve(false);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
logger_1.logger.info(utils_1.message('LIVESYNC_PUSH_WCM_DESIGN_LIBRARY_END_SUCCESS'));
|
|
118
|
+
resolve(true);
|
|
119
|
+
}
|
|
120
|
+
}),
|
|
121
|
+
});
|
|
122
|
+
});
|
|
75
123
|
}
|
|
76
|
-
|
|
77
|
-
|
|
124
|
+
catch (error) {
|
|
125
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_WCM_DESIGN_LIBRARY_PUSH_GENERIC', {
|
|
126
|
+
0: wcmLibraryName,
|
|
127
|
+
1: error.message,
|
|
128
|
+
}));
|
|
129
|
+
isSuccess = false;
|
|
78
130
|
}
|
|
79
|
-
|
|
80
|
-
return new Promise((resolve) => {
|
|
81
|
-
this.ongoingSync(cmdArgs, {
|
|
82
|
-
onWatcherClose: (ongoingSyncSuccess) => __awaiter(this, void 0, void 0, function* () {
|
|
83
|
-
if (!ongoingSyncSuccess) {
|
|
84
|
-
logger_1.logger.error(utils_1.errorMessage('ERROR_WCM_DESIGN_LIBRARY_ONGOING_PUSH', { 0: libraryName }));
|
|
85
|
-
resolve(false);
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
logger_1.logger.info(utils_1.message('LIVESYNC_PUSH_WCM_DESIGN_LIBRARY_END_SUCCESS'));
|
|
89
|
-
resolve(true);
|
|
90
|
-
}
|
|
91
|
-
}),
|
|
92
|
-
});
|
|
93
|
-
});
|
|
131
|
+
return isSuccess;
|
|
94
132
|
}
|
|
95
|
-
catch (
|
|
96
|
-
logger_1.logger.error(utils_1.errorMessage('ERROR_WCM_DESIGN_LIBRARY_PUSH_GENERIC', { 0:
|
|
97
|
-
|
|
133
|
+
catch (e) {
|
|
134
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_WCM_DESIGN_LIBRARY_PUSH_GENERIC', { 0: cmdArgs.wcmLibraryName, 1: e }));
|
|
135
|
+
return false;
|
|
98
136
|
}
|
|
99
|
-
return isSuccess;
|
|
100
137
|
});
|
|
101
138
|
}
|
|
102
139
|
deleteFoldersAndFiles(libraryPath) {
|
|
103
140
|
return __awaiter(this, void 0, void 0, function* () {
|
|
104
|
-
|
|
105
|
-
|
|
141
|
+
logger_1.logger.debug('Executing function Push WCM Design Library deleteFoldersAndFiles');
|
|
142
|
+
const folderMetadataPath = path_1.join(libraryPath, '.library', 'Folder');
|
|
143
|
+
const componentMetadataPath = path_1.join(libraryPath, '.library', 'LibraryHTMLComponent');
|
|
144
|
+
const folderMetadataCollection = fs_extra_1.readdirSync(folderMetadataPath);
|
|
145
|
+
const deleteFolderJobs = folderMetadataCollection.map((file) => __awaiter(this, void 0, void 0, function* () {
|
|
146
|
+
const filePath = path_1.join(folderMetadataPath, file);
|
|
147
|
+
if (!fs_extra_1.existsSync(filePath))
|
|
106
148
|
return;
|
|
107
|
-
const
|
|
108
|
-
if (!
|
|
109
|
-
if (
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
logger_1.logger.debug('deleting metadata: ', metadataPath);
|
|
113
|
-
fs_1.default.rmSync(metadataPath, { recursive: true, force: true });
|
|
114
|
-
this.savedMetadata[key] = null;
|
|
115
|
-
logger_1.logger.debug('Deleted Folders And Files successfully');
|
|
149
|
+
const folderMeta = fs_extra_1.readJSONSync(filePath);
|
|
150
|
+
if (!fs_extra_1.existsSync(folderMeta.localPath)) {
|
|
151
|
+
if (!utils_1.isFeatureEnabled(constants_1.FeaturesEnum.LIVESYNC_WCM_DELETE_FOLDER)) {
|
|
152
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_DELETE_FOLDER_DISABLED', { 0: folderMeta.localPath }));
|
|
153
|
+
return;
|
|
116
154
|
}
|
|
155
|
+
yield this.deleteRootMissingFolder(folderMeta.parentID, folderMeta.id, folderMeta.name);
|
|
117
156
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
157
|
+
}));
|
|
158
|
+
const isSuccess = yield Promise.all(deleteFolderJobs).then(() => {
|
|
159
|
+
logger_1.logger.debug('Initial Sync - Folder Delete Function Completed');
|
|
160
|
+
const componentsMetadataCollection = fs_extra_1.readdirSync(componentMetadataPath);
|
|
161
|
+
const deleteComponentJobs = componentsMetadataCollection.map((file) => __awaiter(this, void 0, void 0, function* () {
|
|
162
|
+
const filePath = path_1.join(componentMetadataPath, file);
|
|
163
|
+
const componentsMeta = fs_extra_1.readJSONSync(filePath);
|
|
164
|
+
if (!fs_extra_1.existsSync(componentsMeta.localPath)) {
|
|
165
|
+
const resp = yield htmlComponentWcmServices_1.deleteHtmlComponent(this.apiOptions, componentsMeta.id);
|
|
166
|
+
if ([204, 404, 409].includes(resp.status)) {
|
|
167
|
+
if (resp.status === 409) {
|
|
168
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_HTML_CONFLICT', { 0: componentsMeta.name }));
|
|
169
|
+
}
|
|
170
|
+
try {
|
|
171
|
+
fs.rmSync(filePath);
|
|
172
|
+
logger_1.logger.info(utils_1.message('LIVESYNC_PUSH_WCM_ONGOING_SYNC_DELETE_HTML_COMPONENT', { 0: componentsMeta.name, 1: this.libraryMetaData.name }));
|
|
173
|
+
}
|
|
174
|
+
catch (err) {
|
|
175
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_DELETE_HTML_DEFAULT', { 0: componentsMeta.name, 1: err }));
|
|
176
|
+
}
|
|
128
177
|
}
|
|
129
|
-
this.savedMetadata[key] = null;
|
|
130
|
-
logger_1.logger.debug('Deleted Folders And Files successfully');
|
|
131
178
|
}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
179
|
+
}));
|
|
180
|
+
return Promise.all(deleteComponentJobs).then(() => {
|
|
181
|
+
logger_1.logger.debug('Initial Sync - Component Delete Function Completed');
|
|
182
|
+
return true;
|
|
183
|
+
}).catch(() => { return false; });
|
|
184
|
+
}).catch(() => { return false; });
|
|
185
|
+
logger_1.logger.debug('Initial Sync - Exiting function Push WCM Design Library deleteFoldersAndFiles');
|
|
186
|
+
return isSuccess;
|
|
136
187
|
});
|
|
137
188
|
}
|
|
138
|
-
deleteRootMissingFolder(parentID, childID) {
|
|
189
|
+
deleteRootMissingFolder(parentID, childID, childName) {
|
|
139
190
|
return __awaiter(this, void 0, void 0, function* () {
|
|
191
|
+
logger_1.logger.debug('Executing function Push WCM Design Library deleteRootMissingFolder');
|
|
192
|
+
let isDeleteSuccess = false;
|
|
140
193
|
const parentFolderMeta = metadataServices_1.getFolderMeta(this.libraryPath, parentID);
|
|
194
|
+
let resp = { status: 999 };
|
|
141
195
|
if (!parentFolderMeta) {
|
|
142
|
-
|
|
196
|
+
isDeleteSuccess = true;
|
|
143
197
|
}
|
|
144
|
-
if (!fs_extra_1.existsSync(parentFolderMeta.localPath)) {
|
|
145
|
-
yield this.deleteRootMissingFolder(parentFolderMeta.parentID, parentID);
|
|
198
|
+
else if (parentFolderMeta && !fs_extra_1.existsSync(parentFolderMeta.localPath)) {
|
|
199
|
+
isDeleteSuccess = yield this.deleteRootMissingFolder(parentFolderMeta.parentID, parentID, parentFolderMeta.name);
|
|
146
200
|
}
|
|
147
201
|
else {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
logger_1.logger.error(utils_1.errorMessage('ERROR_DELETE_FOLDER', { 0: err }));
|
|
157
|
-
return false;
|
|
158
|
-
}
|
|
202
|
+
resp = yield foldersWcmServices_1.deleteFolder(this.apiOptions, childID);
|
|
203
|
+
isDeleteSuccess = [204, 404].includes(resp.status);
|
|
204
|
+
}
|
|
205
|
+
if (isDeleteSuccess) {
|
|
206
|
+
try {
|
|
207
|
+
const metadataPath = path_1.join(this.libraryPath, '.library', 'Folder', `${childID}.json`);
|
|
208
|
+
fs_extra_1.rmSync(metadataPath, { recursive: true, force: true });
|
|
209
|
+
logger_1.logger.info(utils_1.message('LIVESYNC_PUSH_WCM_ONGOING_SYNC_DELETE_FOLDER', { 0: childName, 1: this.libraryMetaData.name }));
|
|
159
210
|
return true;
|
|
160
211
|
}
|
|
212
|
+
catch (err) {
|
|
213
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_DELETE_FOLDER_DEFAULT', { 0: childName, 1: err }));
|
|
214
|
+
}
|
|
161
215
|
}
|
|
162
216
|
return false;
|
|
163
217
|
});
|
|
164
218
|
}
|
|
165
219
|
pushAll(directoryPath) {
|
|
166
220
|
return __awaiter(this, void 0, void 0, function* () {
|
|
167
|
-
logger_1.logger.debug('
|
|
221
|
+
logger_1.logger.debug('Executing function Push WCM Design Library initPusLibraryHTMLComponent');
|
|
168
222
|
const files = fs_extra_1.readdirSync(directoryPath);
|
|
169
|
-
|
|
223
|
+
let isSuccessful = true;
|
|
224
|
+
for (let i = 0; i < files.length; i += 1) {
|
|
225
|
+
const file = files[i];
|
|
170
226
|
const filePath = path_1.join(directoryPath, file);
|
|
227
|
+
const fileName = path_1.default.parse(filePath).name;
|
|
171
228
|
const fileStats = fs_extra_1.statSync(filePath);
|
|
172
229
|
if (!constants_1.LIVESYNC_WCM_LIBRARY_DEFAULT_DIRS.includes(file)) {
|
|
173
230
|
if (directoryPath === this.libraryPath) {
|
|
174
|
-
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
if (fileName === '.html') {
|
|
234
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_INVALID_FILENAME', { 0: filePath }));
|
|
235
|
+
isSuccessful = false;
|
|
236
|
+
break;
|
|
175
237
|
}
|
|
176
238
|
if (path_1.default.extname(filePath) === '.html') {
|
|
177
|
-
|
|
239
|
+
try {
|
|
240
|
+
yield this.pushHTMLFile(filePath);
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
logger_1.logger.error(`Error pushing HTML file ${filePath}: ${error.message}`);
|
|
244
|
+
isSuccessful = false;
|
|
245
|
+
break;
|
|
246
|
+
}
|
|
178
247
|
}
|
|
179
248
|
else if (fileStats.isDirectory()) {
|
|
180
|
-
|
|
249
|
+
try {
|
|
250
|
+
yield this.pushFolderComponent(filePath);
|
|
251
|
+
}
|
|
252
|
+
catch (error) {
|
|
253
|
+
logger_1.logger.error(`Error pushing folder component ${filePath}: ${error.message}`);
|
|
254
|
+
isSuccessful = false;
|
|
255
|
+
break;
|
|
256
|
+
}
|
|
181
257
|
}
|
|
182
258
|
}
|
|
183
259
|
if (fileStats.isDirectory() && file !== '.library') {
|
|
184
|
-
|
|
260
|
+
try {
|
|
261
|
+
yield this.pushAll(filePath);
|
|
262
|
+
}
|
|
263
|
+
catch (error) {
|
|
264
|
+
logger_1.logger.error(`Error processing directory ${filePath}: ${error.message}`);
|
|
265
|
+
isSuccessful = false;
|
|
266
|
+
break;
|
|
267
|
+
}
|
|
185
268
|
}
|
|
186
|
-
}
|
|
187
|
-
return
|
|
269
|
+
}
|
|
270
|
+
return isSuccessful;
|
|
188
271
|
});
|
|
189
272
|
}
|
|
190
273
|
pushHTMLFile(filePath) {
|
|
191
274
|
return __awaiter(this, void 0, void 0, function* () {
|
|
275
|
+
logger_1.logger.debug('Executing function Push WCM Design Library pushFile');
|
|
192
276
|
const directoryPath = path_1.default.parse(filePath).dir;
|
|
193
|
-
const
|
|
194
|
-
const directoryFileMeta = this.savedMetadata[`${directoryfileName}`];
|
|
195
|
-
logger_1.logger.debug('LiveSync Push WCM Design Library pushFile function');
|
|
277
|
+
const directoryFileMeta = metadataServices_1.getSavedMetadata(this.libraryPath, directoryPath, PushWcmDesignLibrary.savedMetadata);
|
|
196
278
|
const fileName = path_1.default.parse(filePath).name;
|
|
197
|
-
const libraryID =
|
|
198
|
-
|
|
199
|
-
const fileMeta = this.savedMetadata
|
|
200
|
-
const
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
279
|
+
const libraryID = this.libraryMetaData.id;
|
|
280
|
+
let parentID = directoryFileMeta ? directoryFileMeta.id : libraryID;
|
|
281
|
+
const fileMeta = metadataServices_1.getSavedMetadata(this.libraryPath, filePath, PushWcmDesignLibrary.savedMetadata);
|
|
282
|
+
const fileContent = fs_extra_1.readFileSync(filePath, 'utf8');
|
|
283
|
+
let metadata;
|
|
284
|
+
let referenceUrl = '';
|
|
285
|
+
if (this.apiOptions.virtualPortalContext) {
|
|
286
|
+
referenceUrl = `${this.apiOptions.contenthandlerPath}/${this.apiOptions.virtualPortalContext}`;
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
referenceUrl = `${this.apiOptions.contenthandlerPath}`;
|
|
290
|
+
}
|
|
291
|
+
if (this.apiOptions.wcmProjectName) {
|
|
292
|
+
referenceUrl += `/$project/${this.apiOptions.wcmProjectName}`;
|
|
293
|
+
logger_1.logger.debug('referenceUrl appended with project name - %s', this.apiOptions.wcmProjectName);
|
|
294
|
+
}
|
|
295
|
+
logger_1.logger.debug('referenceUrl: %s', referenceUrl);
|
|
296
|
+
const fileIsNew = !fileMeta;
|
|
297
|
+
let resp = { status: 999 };
|
|
298
|
+
if (fileIsNew) {
|
|
299
|
+
const data = JSON.stringify({
|
|
300
|
+
entry: {
|
|
301
|
+
title: {
|
|
216
302
|
lang: 'en',
|
|
217
|
-
|
|
303
|
+
value: fileName,
|
|
218
304
|
},
|
|
219
|
-
{
|
|
220
|
-
rel: 'parent',
|
|
221
|
-
href: `${this.apiOptions.contenthandlerPath}${constants_1.URL_PATH.wcmV2Folders}/${parentID}`,
|
|
305
|
+
description: {
|
|
222
306
|
lang: 'en',
|
|
223
|
-
|
|
307
|
+
value: 'HTML Component Description',
|
|
308
|
+
},
|
|
309
|
+
name: fileName,
|
|
310
|
+
type: 'LibraryHTMLComponent',
|
|
311
|
+
link: [
|
|
312
|
+
{
|
|
313
|
+
rel: 'library',
|
|
314
|
+
href: `${referenceUrl}${constants_1.URL_PATH.wcmV2Libraries}/${libraryID}`,
|
|
315
|
+
lang: 'en',
|
|
316
|
+
label: 'Library',
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
rel: 'parent',
|
|
320
|
+
href: `${referenceUrl}${constants_1.URL_PATH.wcmV2Folders}/${parentID}`,
|
|
321
|
+
lang: 'en',
|
|
322
|
+
label: 'Parent',
|
|
323
|
+
},
|
|
324
|
+
],
|
|
325
|
+
content: {
|
|
326
|
+
type: 'text/html',
|
|
327
|
+
value: fileContent,
|
|
224
328
|
},
|
|
225
|
-
],
|
|
226
|
-
content: {
|
|
227
|
-
type: 'text/html',
|
|
228
|
-
value: fs_extra_1.readFileSync(filePath, 'utf8'),
|
|
229
329
|
},
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
if (!fileMeta) {
|
|
233
|
-
const resp = yield htmlComponentWcmServices_1.createHtmlComponent(this.apiOptions, data);
|
|
234
|
-
this.savedMetadata[fileName] = metadataServices_1.createComponentsMeta(this.libraryPath, resp.data, parentID, libraryID);
|
|
330
|
+
});
|
|
331
|
+
resp = yield htmlComponentWcmServices_1.createHtmlComponent(this.apiOptions, data);
|
|
235
332
|
}
|
|
236
333
|
else {
|
|
237
|
-
|
|
238
|
-
|
|
334
|
+
if (fileContent === fileMeta.content.value) {
|
|
335
|
+
logger_1.logger.debug('File content unchanged: %s', filePath);
|
|
336
|
+
return true;
|
|
337
|
+
}
|
|
338
|
+
fileMeta.content.value = fileContent;
|
|
339
|
+
const data = JSON.stringify({ entry: { content: fileMeta.content } });
|
|
340
|
+
resp = yield htmlComponentWcmServices_1.updateHtmlComponent(this.apiOptions, fileMeta.id, data);
|
|
341
|
+
parentID = fileMeta.parentID;
|
|
342
|
+
}
|
|
343
|
+
switch (resp.status) {
|
|
344
|
+
case 200:
|
|
345
|
+
case 201:
|
|
346
|
+
metadata = metadataServices_1.createMetadata(this.libraryPath, resp.data, parentID, libraryID);
|
|
347
|
+
if (filePath !== metadata.localPath) {
|
|
348
|
+
fs_extra_1.moveSync(filePath, metadata.localPath);
|
|
349
|
+
}
|
|
350
|
+
PushWcmDesignLibrary.savedMetadata = metadataServices_1.saveMetadata(this.libraryPath, metadata, PushWcmDesignLibrary.savedMetadata);
|
|
351
|
+
logger_1.logger.info(utils_1.message(`LIVESYNC_PUSH_WCM_ONGOING_SYNC_${fileIsNew ? 'CREATE' : 'UPDATE'}_HTML_COMPONENT`, { 0: fileName, 1: this.libraryMetaData.name }));
|
|
352
|
+
return true;
|
|
353
|
+
case 400:
|
|
354
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_CREATE_HTML_DEFAULT', { 0: fileName, 1: resp.statusText }));
|
|
355
|
+
return false;
|
|
356
|
+
case 404:
|
|
357
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_UPDATE_HTML_NOTFOUND', { 0: fileName }));
|
|
358
|
+
return false;
|
|
359
|
+
default:
|
|
360
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_UPDATE_HTML_DEFAULT', { 0: fileName, 1: resp.statusText }));
|
|
361
|
+
return false;
|
|
239
362
|
}
|
|
240
|
-
return true;
|
|
241
363
|
});
|
|
242
364
|
}
|
|
243
365
|
pushFolderComponent(filePath) {
|
|
244
366
|
return __awaiter(this, void 0, void 0, function* () {
|
|
245
|
-
logger_1.logger.debug('
|
|
367
|
+
logger_1.logger.debug('Executing function Push WCM Design Library pushFile');
|
|
246
368
|
const fileName = path_1.default.parse(filePath).name;
|
|
247
|
-
const fileMeta = this.savedMetadata
|
|
248
|
-
const libraryID =
|
|
369
|
+
const fileMeta = metadataServices_1.getSavedMetadata(this.libraryPath, filePath, PushWcmDesignLibrary.savedMetadata);
|
|
370
|
+
const libraryID = this.libraryMetaData.id;
|
|
249
371
|
const directoryPath = path_1.default.parse(filePath).dir;
|
|
250
|
-
const
|
|
251
|
-
const directoryFileMeta = this.savedMetadata[`${directoryFileName}`];
|
|
372
|
+
const directoryFileMeta = metadataServices_1.getSavedMetadata(this.libraryPath, directoryPath, PushWcmDesignLibrary.savedMetadata);
|
|
252
373
|
const parentID = directoryFileMeta.id;
|
|
253
|
-
const
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
this.savedMetadata[fileName] = resp.data;
|
|
374
|
+
const fileIsNew = !fileMeta;
|
|
375
|
+
let resp = { status: 999 };
|
|
376
|
+
if (fileIsNew) {
|
|
377
|
+
const data = {
|
|
378
|
+
type: 'Folder',
|
|
379
|
+
name: fileName,
|
|
380
|
+
description: {
|
|
381
|
+
lang: 'en',
|
|
382
|
+
value: fileName,
|
|
383
|
+
},
|
|
384
|
+
title: {
|
|
385
|
+
lang: 'en',
|
|
386
|
+
value: fileName,
|
|
387
|
+
},
|
|
388
|
+
libraryID,
|
|
389
|
+
parentID,
|
|
390
|
+
};
|
|
391
|
+
resp = yield foldersWcmServices_1.createFolder(this.apiOptions, libraryID, JSON.stringify(data));
|
|
272
392
|
}
|
|
273
393
|
else {
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
394
|
+
if (fileMeta.localPath === filePath) {
|
|
395
|
+
logger_1.logger.debug('Folder unchanged: %s', filePath);
|
|
396
|
+
return true;
|
|
397
|
+
}
|
|
398
|
+
const cleanFolderMeta = Object.assign({}, fileMeta);
|
|
399
|
+
delete cleanFolderMeta.localPath;
|
|
400
|
+
delete cleanFolderMeta.htmlComponents;
|
|
401
|
+
delete cleanFolderMeta.folders;
|
|
402
|
+
resp = yield foldersWcmServices_1.updateFolder(this.apiOptions, fileMeta.id, JSON.stringify(cleanFolderMeta));
|
|
403
|
+
}
|
|
404
|
+
switch (resp.status) {
|
|
405
|
+
case 200:
|
|
406
|
+
case 201:
|
|
407
|
+
resp.data.localPath = filePath;
|
|
408
|
+
metadataServices_1.createMetadata(this.libraryPath, resp.data, parentID, libraryID);
|
|
409
|
+
PushWcmDesignLibrary.savedMetadata = metadataServices_1.saveMetadata(this.libraryPath, resp.data, PushWcmDesignLibrary.getCache());
|
|
410
|
+
logger_1.logger.info(utils_1.message(`LIVESYNC_PUSH_WCM_ONGOING_SYNC_${fileIsNew ? 'CREATE' : 'UPDATE'}_FOLDER`, { 0: fileName, 1: this.libraryMetaData.name }));
|
|
411
|
+
return true;
|
|
412
|
+
case 400:
|
|
413
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_INITIAL_SYNC_CREATE_FOLDER', { 0: fileName, 1: resp.statusText }));
|
|
414
|
+
return false;
|
|
415
|
+
case 404:
|
|
416
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_UPDATE_FOLDER_NOTFOUND', { 0: fileName }));
|
|
417
|
+
return false;
|
|
418
|
+
default:
|
|
419
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_CREATE_FOLDER_DEFAULT', { 0: fileName, 1: resp.statusText }));
|
|
420
|
+
return false;
|
|
278
421
|
}
|
|
279
|
-
return true;
|
|
280
422
|
});
|
|
281
423
|
}
|
|
282
424
|
ongoingSync(cmdArgs, hooks) {
|
|
283
|
-
logger_1.logger.debug('
|
|
425
|
+
logger_1.logger.debug('Executing function Push WCM Design Library ongoingSync');
|
|
284
426
|
let isSuccess = true;
|
|
285
|
-
const {
|
|
427
|
+
const { wcmLibraryPath } = cmdArgs;
|
|
286
428
|
const handlerProvider = {
|
|
287
429
|
[constants_1.ChokidarEvent.ADD]: () => __awaiter(this, void 0, void 0, function* () {
|
|
288
430
|
logger_1.logger.debug('File created');
|
|
@@ -294,13 +436,13 @@ class PushWcmDesignLibrary {
|
|
|
294
436
|
}),
|
|
295
437
|
[constants_1.ChokidarEvent.CHANGE_HTML]: ongoingSyncServices_1.updateWCMHtmlComponentHandler,
|
|
296
438
|
[constants_1.ChokidarEvent.CHANGE_DIR]: ongoingSyncServices_1.updateWCMFolderHandler,
|
|
297
|
-
[constants_1.ChokidarEvent.
|
|
439
|
+
[constants_1.ChokidarEvent.UNLINK_HTML]: ongoingSyncServices_1.deleteWCMHtmlComponentHandler,
|
|
298
440
|
[constants_1.ChokidarEvent.UNLINK_DIR]: ongoingSyncServices_1.deleteWCMFolderHandle,
|
|
299
441
|
};
|
|
300
442
|
this.eventsQueue = new EventsQueue_1.EventsQueue(handlerProvider);
|
|
301
443
|
this.eventsQueue.initialize();
|
|
302
444
|
logger_1.logger.debug('Initializing chokidar watcher...');
|
|
303
|
-
logger_1.logger.info(utils_1.message('LIVE_SYNC_START', { 0:
|
|
445
|
+
logger_1.logger.info(utils_1.message('LIVE_SYNC_START', { 0: wcmLibraryPath }));
|
|
304
446
|
const STABILITY_THRESHOLD = 100;
|
|
305
447
|
const POLL_INTERVAL = 2000;
|
|
306
448
|
const watchOptions = {
|
|
@@ -310,12 +452,17 @@ class PushWcmDesignLibrary {
|
|
|
310
452
|
},
|
|
311
453
|
persistent: true,
|
|
312
454
|
ignoreInitial: true,
|
|
313
|
-
ignored: filesServices_1.fileServices.getIgnoredPaths(
|
|
455
|
+
ignored: [...filesServices_1.fileServices.getIgnoredPaths(wcmLibraryPath), path_1.join(wcmLibraryPath, '.library')],
|
|
314
456
|
};
|
|
315
457
|
this.watcher = chokidar_1.default
|
|
316
|
-
.watch(
|
|
458
|
+
.watch(wcmLibraryPath, watchOptions)
|
|
317
459
|
.on(constants_1.ChokidarEvent.ADD, (chokidarPath) => __awaiter(this, void 0, void 0, function* () {
|
|
318
460
|
logger_1.logger.debug(`Detected file created: ${chokidarPath}`);
|
|
461
|
+
const fileName = path_1.default.parse(chokidarPath).name;
|
|
462
|
+
if (fileName === '.html') {
|
|
463
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_INVALID_FILENAME', { 0: chokidarPath }));
|
|
464
|
+
return;
|
|
465
|
+
}
|
|
319
466
|
const chokidarEventType = livesyncUtils_1.getEventByFileType(chokidarPath, constants_1.ChokidarEvent.ADD);
|
|
320
467
|
switch (chokidarEventType) {
|
|
321
468
|
case constants_1.ChokidarEvent.ADD_HTML:
|
|
@@ -349,6 +496,11 @@ class PushWcmDesignLibrary {
|
|
|
349
496
|
}))
|
|
350
497
|
.on(constants_1.ChokidarEvent.CHANGE, (chokidarPath) => __awaiter(this, void 0, void 0, function* () {
|
|
351
498
|
logger_1.logger.debug(`Detected file updated: ${chokidarPath}`);
|
|
499
|
+
const fileName = path_1.default.parse(chokidarPath).name;
|
|
500
|
+
if (fileName === '.html') {
|
|
501
|
+
logger_1.logger.error(utils_1.errorMessage('ERROR_LIVESYNC_PUSH_WCM_INVALID_FILENAME', { 0: chokidarPath }));
|
|
502
|
+
return;
|
|
503
|
+
}
|
|
352
504
|
const chokidarEventType = livesyncUtils_1.getEventByFileType(chokidarPath, constants_1.ChokidarEvent.CHANGE);
|
|
353
505
|
switch (chokidarEventType) {
|
|
354
506
|
case constants_1.ChokidarEvent.CHANGE_HTML:
|
|
@@ -389,7 +541,7 @@ class PushWcmDesignLibrary {
|
|
|
389
541
|
logger_1.logger.debug(`Detected file deleted: ${chokidarPath}`);
|
|
390
542
|
const chokidarEventType = livesyncUtils_1.getEventByFileType(chokidarPath, constants_1.ChokidarEvent.UNLINK);
|
|
391
543
|
switch (chokidarEventType) {
|
|
392
|
-
case constants_1.ChokidarEvent.
|
|
544
|
+
case constants_1.ChokidarEvent.UNLINK_HTML:
|
|
393
545
|
this.eventsQueue.push({
|
|
394
546
|
cmdArgs,
|
|
395
547
|
chokidarEvent: chokidarEventType,
|
|
@@ -399,6 +551,9 @@ class PushWcmDesignLibrary {
|
|
|
399
551
|
},
|
|
400
552
|
});
|
|
401
553
|
break;
|
|
554
|
+
case constants_1.ChokidarEvent.UNLINK:
|
|
555
|
+
this.eventsQueue.push({ cmdArgs, chokidarEvent: chokidarEventType, chokidarPath });
|
|
556
|
+
break;
|
|
402
557
|
default:
|
|
403
558
|
logger_1.logger.debug(`Detected file delete: ${chokidarPath}`);
|
|
404
559
|
break;
|
|
@@ -466,6 +621,12 @@ class PushWcmDesignLibrary {
|
|
|
466
621
|
}
|
|
467
622
|
});
|
|
468
623
|
}
|
|
624
|
+
static updateCache(savedMetadata) {
|
|
625
|
+
PushWcmDesignLibrary.savedMetadata = savedMetadata;
|
|
626
|
+
}
|
|
627
|
+
static getCache() {
|
|
628
|
+
return PushWcmDesignLibrary.savedMetadata;
|
|
629
|
+
}
|
|
469
630
|
}
|
|
470
631
|
exports.PushWcmDesignLibrary = PushWcmDesignLibrary;
|
|
471
632
|
//# sourceMappingURL=pushWcmDesignLibrary.js.map
|