Skip to content
Merged

8.0.2 #2310

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion @types/lib/metadataTypes/Folder.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion @types/lib/metadataTypes/MetadataType.d.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion @types/lib/metadataTypes/MetadataType.d.ts.map

Large diffs are not rendered by default.

9 changes: 9 additions & 0 deletions @types/lib/util/cache.d.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion @types/lib/util/cache.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion @types/lib/util/file.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

50 changes: 33 additions & 17 deletions lib/metadataTypes/Folder.js
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,11 @@ class Folder extends MetadataType {
}
} else {
Util.logger.info(
` ☇ skipping folder ${idMap[id].Name} (${id}, type: ${idMap[id].ContentType}): Cannot find parent folder (${idMap[id].ParentFolder.ID})`
Util.getGrayMsg(
` ☇ skipping folder ${idMap[id].Name} (${id}, type: ${idMap[id].ContentType}): Cannot find parent folder (${idMap[id].ParentFolder.ID})`
)
);
delete idMap[id];
}
}
// All folders except the artificial root have ParentFolder attribute. If they dont something else is wrong
Expand All @@ -112,6 +115,7 @@ class Folder extends MetadataType {
Util.logger.warn(
` ☇ skipping folder ${idMap[id].Name} (${id}, type: ${idMap[id].ContentType}): Does not have a parent folder`
);
delete idMap[id];
}
}

Expand Down Expand Up @@ -360,6 +364,7 @@ class Folder extends MetadataType {
return {};
}
const path = metadataEntry.Path;
let apiTypeSoap = false;
try {
if (this.definition.deployFolderTypesEmailRest.includes(metadataEntry.ContentType)) {
// * The SOAP endpoint for creating folders does not support folders for automations nor journeys. The Rest endpoint on the other hand errors out on certain characters in the folder names that are actually valid. We therefore only use Rest for the folder types that are not supported by SOAP.
Expand Down Expand Up @@ -434,6 +439,7 @@ class Folder extends MetadataType {
throw new Error(JSON.stringify(response));
}
} else {
apiTypeSoap = true;
const response = await super.createSOAP(metadataEntry, true);
if (response) {
// set the client ID to ensure we can find the newly created folders as parents for folders created afterwards inside of it
Expand All @@ -450,14 +456,18 @@ class Folder extends MetadataType {
}
}
} catch (ex) {
if (ex?.results) {
Util.logger.error(
`${this.definition.type}-${metadataEntry.ContentType}.create:: error creating: '${path}'. ${ex.results[0].StatusMessage}`
);
} else if (ex) {
Util.logger.error(
`${this.definition.type}-${metadataEntry.ContentType}.create:: error creating: '${path}'. ${ex.message}`
);
if (apiTypeSoap) {
this._handleSOAPErrors(ex, 'creating', metadataEntry, false, 'Name');
} else {
if (ex?.results) {
Util.logger.error(
`${this.definition.type}-${metadataEntry.ContentType}.create:: error creating: '${path}'. ${ex.results[0].StatusMessage}`
);
} else if (ex) {
Util.logger.error(
`${this.definition.type}-${metadataEntry.ContentType}.create:: error creating: '${path}'. ${ex.message}`
);
}
}
}
}
Expand All @@ -476,6 +486,7 @@ class Folder extends MetadataType {
return {};
}
const path = metadataEntry.Path;
let apiTypeSoap = false;
try {
let response;
if (this.definition.deployFolderTypesAssetRest.includes(metadataEntry.ContentType)) {
Expand Down Expand Up @@ -517,6 +528,7 @@ class Folder extends MetadataType {
throw new Error(JSON.stringify(response));
}
} else {
apiTypeSoap = true;
response = await super.updateSOAP(metadataEntry, true);
if (response.Results?.[0]?.StatusCode === 'OK') {
response.Results[0].Object = metadataEntry;
Expand All @@ -527,14 +539,18 @@ class Folder extends MetadataType {
}
}
} catch (ex) {
if (ex?.results) {
Util.logger.error(
`${this.definition.type}-${metadataEntry.ContentType}.update:: error updating: '${path}'. ${ex.results[0].StatusMessage}`
);
} else if (ex) {
Util.logger.error(
`${this.definition.type}-${metadataEntry.ContentType}.update:: error updating: '${path}'. ${ex.message}`
);
if (apiTypeSoap) {
this._handleSOAPErrors(ex, 'updating', metadataEntry, false, 'Name');
} else {
if (ex?.results) {
Util.logger.error(
`${this.definition.type}-${metadataEntry.ContentType}.update:: error updating: '${path}'. ${ex.results[0].StatusMessage}`
);
} else if (ex) {
Util.logger.error(
`${this.definition.type}-${metadataEntry.ContentType}.update:: error updating: '${path}'. ${ex.message}`
);
}
}
}
}
Expand Down
7 changes: 5 additions & 2 deletions lib/metadataTypes/MetadataType.js
Original file line number Diff line number Diff line change
Expand Up @@ -1356,13 +1356,16 @@ class MetadataType {
* @param {'creating'|'updating'|'retrieving'|'executing'|'pausing'} msg what to print in the log
* @param {MetadataTypeItem} [metadataEntry] single metadata entry
* @param {boolean} [handleOutside] if the API reponse is irregular this allows you to handle it outside of this generic method
* @param {string} [nameAttribute] name attribute to use in the error message instead of keyField
*/
static _handleSOAPErrors(ex, msg, metadataEntry, handleOutside) {
static _handleSOAPErrors(ex, msg, metadataEntry, handleOutside, nameAttribute) {
if (handleOutside) {
throw ex;
} else {
const errorMsg = this.getSOAPErrorMsg(ex);
const name = metadataEntry ? ` '${metadataEntry[this.definition.keyField]}'` : '';
const name = metadataEntry
? ` '${metadataEntry[nameAttribute || this.definition.keyField]}'`
: '';
Util.logger.error(` ☇ error ${msg} ${this.definition.type}${name}: ${errorMsg}`);
}
}
Expand Down
5 changes: 5 additions & 0 deletions lib/util/cache.js
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,7 @@ export default {
if (!r__folder_Path) {
throw new Error('r__folder_Path not set');
}

/** @type {ListMap} */
const folderMap = dataStore[overrideMID || currentMID]?.['folder'];
if (!folderMap) {
Expand All @@ -210,6 +211,9 @@ export default {
const folderPath_lower = r__folder_Path.toLowerCase();
const potentialFolders = [];
for (const folder of Object.values(folderMap)) {
if (!folder?.Path) {
continue; // skip folders without Path
}
if (folder.Path.toLowerCase() === folderPath_lower) {
if (folder?.Client?.ID === (overrideMID || currentMID)) {
return folder;
Expand All @@ -218,6 +222,7 @@ export default {
}
}
}

if (potentialFolders.length >= 1) {
return potentialFolders[0];
} else {
Expand Down