New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@basetime/bldr-sfmc-sdk

Package Overview
Dependencies
Maintainers
2
Versions
69
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@basetime/bldr-sfmc-sdk - npm Package Compare versions

Comparing version 1.1.1 to 1.1.2

dist/cli/helpers/index.d.ts

56

dist/cli/contentBuilder/index.js

@@ -54,2 +54,4 @@ "use strict";

const formattedResponse = (response &&
response.Results &&
response.Results.length &&
response.Results.map((folder) => {

@@ -177,10 +179,14 @@ return {

});
const buildFolderPaths = yield (0, BuildSoapFolderObjects_1.buildFolderPathsSoap)(folderResponse.full);
const isolateFolderIds = folderResponse &&
folderResponse.down &&
folderResponse.down.length &&
folderResponse.down
folderResponse.full &&
folderResponse.full.length &&
folderResponse.full
.map((folder) => folder.Name !== rootFolderName && folder.ID)
.filter(Boolean);
const assetResponse = yield this.sfmc.asset.getAssetsByFolderArray(isolateFolderIds);
const assetsAndFoldersRequest = yield Promise.all([
(0, BuildSoapFolderObjects_1.buildFolderPathsSoap)(folderResponse.full),
this.sfmc.asset.getAssetsByFolderArray(isolateFolderIds),
]);
const buildFolderPaths = (assetsAndFoldersRequest && assetsAndFoldersRequest[0]) || [];
const assetResponse = (assetsAndFoldersRequest && assetsAndFoldersRequest[1]) || [];
if (assetResponse &&

@@ -192,11 +198,4 @@ assetResponse.response &&

}
const formattedAssetResponse = (assetResponse &&
assetResponse.items &&
assetResponse.items.length &&
buildFolderPaths &&
buildFolderPaths.folders &&
(yield (0, FormatContentBuilderAsset_1.formatContentBuilderAssets)(assetResponse.items, buildFolderPaths.folders))) ||
[];
const formattedFolders = (buildFolderPaths.folders &&
buildFolderPaths.folders.length &&
const formatResponses = yield Promise.all([
(0, FormatContentBuilderAsset_1.formatContentBuilderAssets)(assetResponse.items, buildFolderPaths.folders),
buildFolderPaths.folders.map((folder) => {

@@ -209,4 +208,29 @@ return {

};
})) ||
[];
}),
]);
const formattedAssetResponse = (formatResponses && formatResponses[0]) || [];
const formattedFolders = (formatResponses && formatResponses[1]) || [];
// const formattedAssetResponse =
// (assetResponse &&
// assetResponse.items &&
// assetResponse.items.length &&
// buildFolderPaths &&
// buildFolderPaths.folders &&
// (await formatContentBuilderAssets(
// assetResponse.items,
// buildFolderPaths.folders
// ))) ||
// [];
// const formattedFolders =
// (buildFolderPaths.folders &&
// buildFolderPaths.folders.length &&
// buildFolderPaths.folders.map((folder) => {
// return {
// id: folder.ID,
// name: folder.Name,
// parentId: folder.ParentFolder.ID,
// folderPath: folder.FolderPath,
// };
// })) ||
// [];
return {

@@ -213,0 +237,0 @@ folders: formattedFolders || [],

@@ -149,4 +149,2 @@ "use strict";

const folderResponse = yield this.sfmc.folder.getFoldersFromMiddle(request);
const buildFolderPaths = folderResponse &&
(yield (0, BuildSoapFolderObjects_1.buildFolderPathsSoap)(folderResponse.full));
const isolateFolderIds = (folderResponse &&

@@ -159,14 +157,22 @@ folderResponse.down &&

[];
const assetResponse = isolateFolderIds &&
isolateFolderIds.length &&
(yield this.sfmc.emailStudio.getAssetsByFolderArray(isolateFolderIds));
const formattedAssetResponse = [];
const dataExtensions = (assetResponse && assetResponse.Results) || [];
if (dataExtensions && dataExtensions.length) {
for (const a in dataExtensions) {
const dataExtension = dataExtensions[a];
const dataExtensionPayload = dataExtension &&
(yield this.sfmc.emailStudio.retrieveDataExtensionPayloadByName(dataExtension.Name, complete, shared));
formattedAssetResponse.push(dataExtensionPayload);
}
const assetsAndFoldersRequest = yield Promise.all([
(0, BuildSoapFolderObjects_1.buildFolderPathsSoap)(folderResponse.full),
this.sfmc.emailStudio.getAssetsByFolderArray(isolateFolderIds),
]);
const buildFolderPaths = (assetsAndFoldersRequest && assetsAndFoldersRequest[0]) || [];
const assetResponse = (assetsAndFoldersRequest && assetsAndFoldersRequest[1]) || [];
let dataExtensionsResults = assetResponse &&
assetResponse.Results &&
assetResponse.Results.length
? assetResponse.Results
: [];
let formattedAssets;
if (dataExtensionsResults && dataExtensionsResults.length) {
dataExtensionsResults = dataExtensionsResults.filter(Boolean);
formattedAssets =
(yield Promise.all(dataExtensionsResults.map((dataExtension) => {
if (!dataExtension.Name)
return;
return this.sfmc.emailStudio.retrieveDataExtensionPayloadByName(dataExtension.Name, complete, shared);
}))) || [];
}

@@ -186,3 +192,3 @@ const formattedFolders = (buildFolderPaths.folders &&

folders: formattedFolders || [],
assets: formattedAssetResponse || [],
assets: formattedAssets || [],
};

@@ -189,0 +195,0 @@ }

@@ -8,2 +8,3 @@ import { CLI_Client } from './types/cli_client';

export declare class CLI implements CLI_Client {
_helpers: any;
contentBuilder: any;

@@ -10,0 +11,0 @@ automationStudio: any;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.CLI = void 0;
const automationStudio_1 = require("./automationStudio");
const contentBuilder_1 = require("./contentBuilder");
const automationStudio_1 = require("./automationStudio");
const emailStudio_1 = require("./emailStudio");
const helpers_1 = require("./helpers");
/**

@@ -14,2 +15,3 @@ * Creates an instance of BLDR SDK.

constructor(sfmc) {
this._helpers = new helpers_1.Helpers();
this.contentBuilder = new contentBuilder_1.ContentBuilder(sfmc);

@@ -16,0 +18,0 @@ this.automationStudio = new automationStudio_1.AutomationStudio(sfmc, this.contentBuilder);

export interface CLI_Client {
_helpers: {
formatPromiseAllResponse: Function;
};
contentBuilder: {

@@ -3,0 +6,0 @@ searchFolders: Function;

@@ -22,3 +22,3 @@ import { SFMC_Content_Builder_Asset } from '../../../../sfmc/types/objects/sfmc_content_builder_assets';

*/
declare const formatContentBuilderAssets: (results: SFMC_Content_Builder_Asset, folders: BLDR_Folder[]) => Promise<BLDR_SFMC_Content_Builder_Asset[]>;
declare const formatContentBuilderAssets: (results: SFMC_Content_Builder_Asset, folders: BLDR_Folder[]) => Promise<BLDR_SFMC_Content_Builder_Asset | BLDR_SFMC_Content_Builder_Asset[]>;
export { formatContentBuilderAssets };

@@ -22,3 +22,2 @@ "use strict";

const setAssetPostObject = (asset, folders) => {
console.log({ asset });
// Generate new bldrId for asset

@@ -85,16 +84,10 @@ const bldrId = (0, index_1.guid)();

const formatContentBuilderAssets = (results, folders) => __awaiter(void 0, void 0, void 0, function* () {
const formattedAssets = [];
if (Array.isArray(results) && results.length !== 0) {
for (const r in results) {
const asset = results[r];
const post = setAssetPostObject(asset, folders);
formattedAssets.push(post);
}
const formatAllResults = yield Promise.all(results.map((result) => setAssetPostObject(result, folders)));
return formatAllResults;
}
else {
const post = setAssetPostObject(results, folders);
formattedAssets.push(post);
return setAssetPostObject(results, folders);
}
return formattedAssets;
});
exports.formatContentBuilderAssets = formatContentBuilderAssets;

@@ -13,3 +13,5 @@ "use strict";

exports.ContentBuilderAsset = void 0;
const chunkArray_1 = require("../utils/chunkArray");
const handleError_1 = require("../utils/handleError");
const sumByKeys_1 = require("../utils/sumByKeys");
class ContentBuilderAsset {

@@ -80,22 +82,29 @@ constructor(client) {

}
return this.client.rest.post('/asset/v1/content/assets/query', {
page: {
page: 1,
pageSize: 200,
},
query: {
property: 'category.id',
simpleOperator: 'in',
value: folderIdArray,
},
sort: [
{
property: 'id',
direction: 'ASC',
const chunkedArrays = yield (0, chunkArray_1.chunk)(folderIdArray, 6);
const assetRequests = yield Promise.all(chunkedArrays.map((assetArray) => __awaiter(this, void 0, void 0, function* () {
return this.client.rest.post('/asset/v1/content/assets/query', {
page: {
page: 1,
pageSize: 200,
},
],
});
query: {
property: 'category.id',
simpleOperator: 'in',
value: assetArray,
},
sort: [
{
property: 'id',
direction: 'ASC',
},
],
});
})));
return {
count: (0, sumByKeys_1.sumByKey)(assetRequests, 'count'),
items: (0, sumByKeys_1.concatByKey)(assetRequests, 'items'),
};
}
catch (err) {
return (0, handleError_1.handleError)(err);
return err;
}

@@ -102,0 +111,0 @@ });

@@ -15,2 +15,3 @@ "use strict";

const BuildSoapFolderObjects_1 = require("../../cli/utils/BuildSoapFolderObjects");
const chunkArray_1 = require("../utils/chunkArray");
const handleError_1 = require("../utils/handleError");

@@ -125,26 +126,33 @@ const modifyObject_1 = require("../utils/modifyObject");

this.getAssetsByFolderArray = (folderIdArray) => __awaiter(this, void 0, void 0, function* () {
let requestFilter = {};
if (folderIdArray.length === 1) {
requestFilter = {
filter: {
leftOperand: 'CategoryID',
operator: 'equals',
rightOperand: folderIdArray[0],
},
try {
const chunkedArrays = yield (0, chunkArray_1.chunk)(folderIdArray, 6);
const dataExtensionRequest = yield Promise.all(chunkedArrays.map((assetArray) => {
return this.client.soap.retrieve('DataExtension', dataExtensionDefinition, {
filter: {
leftOperand: 'CategoryID',
operator: assetArray && assetArray.length > 1
? 'IN'
: 'equals',
rightOperand: assetArray && assetArray.length > 1
? assetArray
: assetArray[0],
},
});
}));
const overallStatusArray = dataExtensionRequest &&
dataExtensionRequest.map((request) => request.OverallStatus);
const resultsArray = dataExtensionRequest &&
dataExtensionRequest.map((request) => request.Results).flat();
const output = {
OverallStatus: overallStatusArray &&
overallStatusArray.every((status) => status === 'OK')
? 'OK'
: overallStatusArray,
Results: resultsArray,
};
return output;
}
else {
requestFilter = {
filter: {
leftOperand: 'CategoryID',
operator: 'IN',
rightOperand: folderIdArray,
},
};
catch (err) {
return err;
}
const dataExtensionResponse = yield this.client.soap.retrieve('DataExtension', dataExtensionDefinition, requestFilter);
if (dataExtensionResponse.OverallStatus !== 'OK') {
throw new Error(dataExtensionResponse.OverallStatus);
}
return dataExtensionResponse;
});

@@ -151,0 +159,0 @@ /**

@@ -76,3 +76,3 @@ import { SFMC_SOAP_Folder } from '../types/objects/sfmc_soap_folders';

categoryId: number;
}): Promise<any>;
}): Promise<unknown>;
/**

@@ -79,0 +79,0 @@ * Retrieve all folders top and bottom from a specific categoryId

@@ -151,4 +151,6 @@ "use strict";

}
const responseResults = response.Results;
results.push(...responseResults);
const responseResults = response.Results || [];
responseResults &&
responseResults.length &&
results.push(...responseResults);
return results;

@@ -255,39 +257,60 @@ }

try {
let folders = [];
let folders = [request.categoryId];
let results = [];
// Get target folder from SFMC
let rootRequest = yield this.getFolder(request);
// Ensure response has results
if (!Object.prototype.hasOwnProperty.call(rootRequest, 'Results')) {
throw new Error(`Unable to find folder`);
}
if (rootRequest &&
rootRequest.Results &&
rootRequest.Results.length) {
const rootIdArray = rootRequest.Results.map((folder) => folder.ID);
folders.push(...rootIdArray);
results = [...results, ...rootRequest.Results];
}
// Recursively get folders from SFMC
do {
let categoryId = folders[0];
// SFMC Folder response checking for subfolders
let subfolderRequest = yield this.getSubfolders({
contentType: request.contentType,
parentId: categoryId,
const subfoldersArrayRequest = yield Promise.all(folders.map((categoryId) => __awaiter(this, void 0, void 0, function* () {
// SFMC Folder response checking for subfolders
let subfolderRequest = yield this.getSubfolders({
contentType: request.contentType,
parentId: categoryId,
});
if (subfolderRequest &&
Array.isArray(subfolderRequest) &&
subfolderRequest.length) {
let subfolderIdArray = subfolderRequest.map((folder) => folder.ID);
return {
categoryId: categoryId,
subfolderIdArray: subfolderIdArray,
subfolderRequest: subfolderRequest,
};
}
else {
return {
categoryId: categoryId || null,
subfolderIdArray: subfolderRequest || [],
subfolderRequest: subfolderRequest || [],
};
}
}))).then((response) => {
const foldersMap = response
.map((res) => [...res.subfolderIdArray])
.flat();
const resultsMap = response
.map((res) => [...res.subfolderRequest])
.flat();
return {
folderIds: foldersMap || [],
results: resultsMap || [],
};
});
if (subfolderRequest &&
Array.isArray(subfolderRequest) &&
subfolderRequest.length > 0) {
let subfolderIdArray = subfolderRequest.map((folder) => folder.ID);
folders.push(...subfolderIdArray);
results = [...results, ...subfolderRequest];
if (subfoldersArrayRequest &&
subfoldersArrayRequest.folderIds &&
subfoldersArrayRequest.folderIds.length) {
folders = [];
folders = subfoldersArrayRequest.folderIds;
results = subfoldersArrayRequest.results &&
subfoldersArrayRequest.results.length && [
...results,
...subfoldersArrayRequest.results,
];
}
folders.shift();
else {
folders = [];
}
} while (folders.length !== 0);
return results || [];
return results.sort((a, b) => b.ID - a.ID);
}
catch (err) {
console.log(err);
return (0, handleError_1.handleError)(err);
return err;
}

@@ -311,3 +334,3 @@ });

full: [
...new Map([...up.results, ...down].map((item) => [item['Name'], item])).values(),
...new Map([...up.results, ...down].map((item) => [item['ID'], item])).values(),
],

@@ -314,0 +337,0 @@ };

@@ -58,2 +58,4 @@ import { SFMC_SOAP_Folder } from '../../sfmc/types/objects/sfmc_soap_folders';

(response &&
response.Results &&
response.Results.length &&
response.Results.map(

@@ -241,2 +243,3 @@ (folder: {

: 'Content Builder';
const folderResponse = await this.sfmc.folder.getFoldersFromMiddle({

@@ -247,10 +250,7 @@ contentType: shared ? 'asset-shared' : 'asset',

const buildFolderPaths = await buildFolderPathsSoap(
folderResponse.full
);
const isolateFolderIds =
folderResponse &&
folderResponse.down &&
folderResponse.down.length &&
folderResponse.down
folderResponse.full &&
folderResponse.full.length &&
folderResponse.full
.map(

@@ -262,6 +262,12 @@ (folder: SFMC_SOAP_Folder) =>

const assetResponse = await this.sfmc.asset.getAssetsByFolderArray(
isolateFolderIds
);
const assetsAndFoldersRequest = await Promise.all([
buildFolderPathsSoap(folderResponse.full),
this.sfmc.asset.getAssetsByFolderArray(isolateFolderIds),
]);
const buildFolderPaths =
(assetsAndFoldersRequest && assetsAndFoldersRequest[0]) || [];
const assetResponse =
(assetsAndFoldersRequest && assetsAndFoldersRequest[1]) || [];
if (

@@ -276,27 +282,47 @@ assetResponse &&

const formatResponses = await Promise.all([
formatContentBuilderAssets(
assetResponse.items,
buildFolderPaths.folders
),
buildFolderPaths.folders.map((folder) => {
return {
id: folder.ID,
name: folder.Name,
parentId: folder.ParentFolder.ID,
folderPath: folder.FolderPath,
};
}),
]);
const formattedAssetResponse =
(assetResponse &&
assetResponse.items &&
assetResponse.items.length &&
buildFolderPaths &&
buildFolderPaths.folders &&
(await formatContentBuilderAssets(
assetResponse.items,
buildFolderPaths.folders
))) ||
[];
(formatResponses && formatResponses[0]) || [];
const formattedFolders =
(buildFolderPaths.folders &&
buildFolderPaths.folders.length &&
buildFolderPaths.folders.map((folder) => {
return {
id: folder.ID,
name: folder.Name,
parentId: folder.ParentFolder.ID,
folderPath: folder.FolderPath,
};
})) ||
[];
(formatResponses && formatResponses[1]) || [];
// const formattedAssetResponse =
// (assetResponse &&
// assetResponse.items &&
// assetResponse.items.length &&
// buildFolderPaths &&
// buildFolderPaths.folders &&
// (await formatContentBuilderAssets(
// assetResponse.items,
// buildFolderPaths.folders
// ))) ||
// [];
// const formattedFolders =
// (buildFolderPaths.folders &&
// buildFolderPaths.folders.length &&
// buildFolderPaths.folders.map((folder) => {
// return {
// id: folder.ID,
// name: folder.Name,
// parentId: folder.ParentFolder.ID,
// folderPath: folder.FolderPath,
// };
// })) ||
// [];
return {

@@ -303,0 +329,0 @@ folders: formattedFolders || [],

@@ -185,2 +185,3 @@ import { SFMC_SOAP_Folder } from '../../sfmc/types/objects/sfmc_soap_folders';

: 'Data Extensions';
const folderResponse = await this.sfmc.folder.getFoldersFromMiddle(

@@ -190,6 +191,2 @@ request

const buildFolderPaths =
folderResponse &&
(await buildFolderPathsSoap(folderResponse.full));
const isolateFolderIds =

@@ -207,25 +204,36 @@ (folderResponse &&

const assetsAndFoldersRequest = await Promise.all([
buildFolderPathsSoap(folderResponse.full),
this.sfmc.emailStudio.getAssetsByFolderArray(isolateFolderIds),
]);
const buildFolderPaths =
(assetsAndFoldersRequest && assetsAndFoldersRequest[0]) || [];
const assetResponse =
isolateFolderIds &&
isolateFolderIds.length &&
(await this.sfmc.emailStudio.getAssetsByFolderArray(
isolateFolderIds
));
(assetsAndFoldersRequest && assetsAndFoldersRequest[1]) || [];
const formattedAssetResponse: any[] = [];
const dataExtensions =
(assetResponse && assetResponse.Results) || [];
let dataExtensionsResults =
assetResponse &&
assetResponse.Results &&
assetResponse.Results.length
? assetResponse.Results
: [];
if (dataExtensions && dataExtensions.length) {
for (const a in dataExtensions) {
const dataExtension: { Name: string } = dataExtensions[a];
const dataExtensionPayload =
dataExtension &&
(await this.sfmc.emailStudio.retrieveDataExtensionPayloadByName(
dataExtension.Name,
complete,
shared
));
formattedAssetResponse.push(dataExtensionPayload);
}
let formattedAssets;
if (dataExtensionsResults && dataExtensionsResults.length) {
dataExtensionsResults = dataExtensionsResults.filter(Boolean);
formattedAssets =
(await Promise.all(
dataExtensionsResults.map(
(dataExtension: { Name: String }) => {
if (!dataExtension.Name) return;
return this.sfmc.emailStudio.retrieveDataExtensionPayloadByName(
dataExtension.Name,
complete,
shared
);
}
)
)) || [];
}

@@ -248,3 +256,3 @@

folders: formattedFolders || [],
assets: formattedAssetResponse || [],
assets: formattedAssets || [],
};

@@ -251,0 +259,0 @@ } catch (err: any) {

@@ -0,6 +1,7 @@

import { AutomationStudio } from './automationStudio';
import { ContentBuilder } from './contentBuilder';
import { AutomationStudio } from './automationStudio';
import { BLDR_Client } from './types/bldr_client';
import { EmailStudio } from './emailStudio';
import { Helpers } from './helpers';
import { CLI_Client } from './types/cli_client';
import { EmailStudio } from './emailStudio';
/**

@@ -12,2 +13,3 @@ * Creates an instance of BLDR SDK.

export class CLI implements CLI_Client {
_helpers: any;
contentBuilder: any;

@@ -18,2 +20,3 @@ automationStudio: any;

constructor(sfmc: any) {
this._helpers = new Helpers();
this.contentBuilder = new ContentBuilder(sfmc);

@@ -20,0 +23,0 @@ this.automationStudio = new AutomationStudio(sfmc, this.contentBuilder);

export interface CLI_Client {
_helpers: {
formatPromiseAllResponse: Function;
};
contentBuilder: {

@@ -3,0 +6,0 @@ searchFolders: Function;

@@ -28,3 +28,2 @@ import { SFMC_Content_Builder_Asset } from '../../../../sfmc/types/objects/sfmc_content_builder_assets';

) => {
console.log({ asset });
// Generate new bldrId for asset

@@ -105,17 +104,12 @@ const bldrId = guid();

) => {
const formattedAssets = [];
if (Array.isArray(results) && results.length !== 0) {
for (const r in results) {
const asset = results[r];
const post = setAssetPostObject(asset, folders);
formattedAssets.push(post);
}
const formatAllResults = await Promise.all(
results.map((result) => setAssetPostObject(result, folders))
);
return formatAllResults;
} else {
const post = setAssetPostObject(results, folders);
formattedAssets.push(post);
return setAssetPostObject(results, folders);
}
return formattedAssets;
};
export { formatContentBuilderAssets };
import { Client } from '../types/sfmc_client';
import { chunk } from '../utils/chunkArray';
import { handleError } from '../utils/handleError';
import { concatByKey, sumByKey } from '../utils/sumByKeys';

@@ -65,22 +67,34 @@ export class ContentBuilderAsset {

}
const chunkedArrays = await chunk(folderIdArray, 6);
const assetRequests = await Promise.all(
chunkedArrays.map(async (assetArray) => {
return this.client.rest.post(
'/asset/v1/content/assets/query',
{
page: {
page: 1,
pageSize: 200,
},
query: {
property: 'category.id',
simpleOperator: 'in',
value: assetArray,
},
sort: [
{
property: 'id',
direction: 'ASC',
},
],
}
);
})
);
return this.client.rest.post('/asset/v1/content/assets/query', {
page: {
page: 1,
pageSize: 200,
},
query: {
property: 'category.id',
simpleOperator: 'in',
value: folderIdArray,
},
sort: [
{
property: 'id',
direction: 'ASC',
},
],
});
return {
count: sumByKey(assetRequests, 'count'),
items: concatByKey(assetRequests, 'items'),
};
} catch (err: any) {
return handleError(err);
return err;
}

@@ -87,0 +101,0 @@ }

@@ -5,2 +5,3 @@ import { guid } from '../../cli/utils';

import { Client } from '../types/sfmc_client';
import { chunk } from '../utils/chunkArray';
import { handleError } from '../utils/handleError';

@@ -189,33 +190,48 @@ import { capitalizeKeys, lowercaseKeys } from '../utils/modifyObject';

getAssetsByFolderArray = async (folderIdArray: number[]) => {
let requestFilter = {};
try {
const chunkedArrays = await chunk(folderIdArray, 6);
if (folderIdArray.length === 1) {
requestFilter = {
filter: {
leftOperand: 'CategoryID',
operator: 'equals',
rightOperand: folderIdArray[0],
},
const dataExtensionRequest = await Promise.all(
chunkedArrays.map((assetArray) => {
return this.client.soap.retrieve(
'DataExtension',
dataExtensionDefinition,
{
filter: {
leftOperand: 'CategoryID',
operator:
assetArray && assetArray.length > 1
? 'IN'
: 'equals',
rightOperand:
assetArray && assetArray.length > 1
? assetArray
: assetArray[0],
},
}
);
})
);
const overallStatusArray =
dataExtensionRequest &&
dataExtensionRequest.map((request) => request.OverallStatus);
const resultsArray =
dataExtensionRequest &&
dataExtensionRequest.map((request) => request.Results).flat();
const output = {
OverallStatus:
overallStatusArray &&
overallStatusArray.every((status) => status === 'OK')
? 'OK'
: overallStatusArray,
Results: resultsArray,
};
} else {
requestFilter = {
filter: {
leftOperand: 'CategoryID',
operator: 'IN',
rightOperand: folderIdArray,
},
};
}
const dataExtensionResponse = await this.client.soap.retrieve(
'DataExtension',
dataExtensionDefinition,
requestFilter
);
if (dataExtensionResponse.OverallStatus !== 'OK') {
throw new Error(dataExtensionResponse.OverallStatus);
return output;
} catch (err: any) {
return err;
}
return dataExtensionResponse;
};

@@ -222,0 +238,0 @@

@@ -177,4 +177,6 @@ import { SFMC_SOAP_Folder } from '../types/objects/sfmc_soap_folders';

const responseResults = response.Results;
results.push(...responseResults);
const responseResults = response.Results || [];
responseResults &&
responseResults.length &&
results.push(...responseResults);
return results;

@@ -316,53 +318,72 @@ } catch (err: any) {

try {
let folders: number[] = [];
let folders: number[] = [request.categoryId];
let results: any[] = [];
// Get target folder from SFMC
let rootRequest = await this.getFolder(request);
// Recursively get folders from SFMC
do {
const subfoldersArrayRequest = await Promise.all(
folders.map(async (categoryId: number) => {
// SFMC Folder response checking for subfolders
let subfolderRequest = await this.getSubfolders({
contentType: request.contentType,
parentId: categoryId,
});
// Ensure response has results
if (!Object.prototype.hasOwnProperty.call(rootRequest, 'Results')) {
throw new Error(`Unable to find folder`);
}
if (
subfolderRequest &&
Array.isArray(subfolderRequest) &&
subfolderRequest.length
) {
let subfolderIdArray = subfolderRequest.map(
(folder: { ID: number }) => folder.ID
);
if (
rootRequest &&
rootRequest.Results &&
rootRequest.Results.length
) {
const rootIdArray = rootRequest.Results.map(
(folder) => folder.ID
);
folders.push(...rootIdArray);
results = [...results, ...rootRequest.Results];
}
return {
categoryId: categoryId,
subfolderIdArray: subfolderIdArray,
subfolderRequest: subfolderRequest,
};
} else {
return {
categoryId: categoryId || null,
subfolderIdArray: subfolderRequest || [],
subfolderRequest: subfolderRequest || [],
};
}
})
).then((response: any) => {
const foldersMap = response
.map((res: any) => [...res.subfolderIdArray])
.flat();
// Recursively get folders from SFMC
do {
let categoryId = folders[0];
// SFMC Folder response checking for subfolders
let subfolderRequest = await this.getSubfolders({
contentType: request.contentType,
parentId: categoryId,
const resultsMap = response
.map((res: any) => [...res.subfolderRequest])
.flat();
return {
folderIds: foldersMap || [],
results: resultsMap || [],
};
});
if (
subfolderRequest &&
Array.isArray(subfolderRequest) &&
subfolderRequest.length > 0
subfoldersArrayRequest &&
subfoldersArrayRequest.folderIds &&
subfoldersArrayRequest.folderIds.length
) {
let subfolderIdArray = subfolderRequest.map(
(folder: { ID: number }) => folder.ID
);
folders.push(...subfolderIdArray);
results = [...results, ...subfolderRequest];
folders = [];
folders = subfoldersArrayRequest.folderIds;
results = subfoldersArrayRequest.results &&
subfoldersArrayRequest.results.length && [
...results,
...subfoldersArrayRequest.results,
];
} else {
folders = [];
}
folders.shift();
} while (folders.length !== 0);
return results || [];
return results.sort((a: any, b: any) => b.ID - a.ID);
} catch (err) {
console.log(err);
return handleError(err);
return err;
}

@@ -390,3 +411,3 @@ }

...new Map(
[...up.results, ...down].map((item) => [item['Name'], item])
[...up.results, ...down].map((item) => [item['ID'], item])
).values(),

@@ -393,0 +414,0 @@ ],

{
"name": "@basetime/bldr-sfmc-sdk",
"version": "1.1.1",
"version": "1.1.2",
"description": "SDK for BLDR SFMC Core Functionality",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc