@agility/cli
Version:
Agility CLI for working with your content. (Public Beta)
135 lines • 5.82 kB
JavaScript
;
/**
* Asset Reference Extractor Service
*
* Handles extraction of asset references from content fields and display
* of asset dependencies in the sync analysis output.
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AssetReferenceExtractor = void 0;
var ansi_colors_1 = __importDefault(require("ansi-colors"));
var AssetReferenceExtractor = /** @class */ (function () {
function AssetReferenceExtractor() {
}
/**
* Initialize the service with context
*/
AssetReferenceExtractor.prototype.initialize = function (context) {
this.context = context;
};
/**
* Extract asset references from content fields
*/
AssetReferenceExtractor.prototype.extractReferences = function (fields) {
return this.extractAssetReferences(fields);
};
/**
* Extract asset references from content fields
*/
AssetReferenceExtractor.prototype.extractAssetReferences = function (fields) {
var references = [];
if (!fields || typeof fields !== 'object') {
return references;
}
var scanForAssets = function (obj, path) {
if (typeof obj !== 'object' || obj === null)
return;
if (Array.isArray(obj)) {
obj.forEach(function (item, index) {
scanForAssets(item, "".concat(path, "[").concat(index, "]"));
});
}
else {
// Check for asset URL references
if (typeof obj === 'string' && obj.includes('cdn.aglty.io')) {
references.push({
url: obj,
fieldPath: path
});
}
// Check common asset fields
if (obj.url && typeof obj.url === 'string' && obj.url.includes('cdn.aglty.io')) {
references.push({
url: obj.url,
fieldPath: "".concat(path, ".url")
});
}
// Recursively scan nested objects
for (var _i = 0, _a = Object.entries(obj); _i < _a.length; _i++) {
var _b = _a[_i], key = _b[0], value = _b[1];
scanForAssets(value, path ? "".concat(path, ".").concat(key) : key);
}
}
};
for (var _i = 0, _a = Object.entries(fields); _i < _a.length; _i++) {
var _b = _a[_i], fieldName = _b[0], fieldValue = _b[1];
scanForAssets(fieldValue, fieldName);
}
return references;
};
/**
* Show content asset dependencies with proper formatting
*/
AssetReferenceExtractor.prototype.showContentAssetDependencies = function (content, sourceEntities, indent) {
if (!content.fields)
return;
var assetRefs = this.extractAssetReferences(content.fields);
assetRefs.forEach(function (assetRef) {
var _a, _b;
var asset = (_a = sourceEntities.assets) === null || _a === void 0 ? void 0 : _a.find(function (a) {
return a.originUrl === assetRef.url ||
a.url === assetRef.url ||
a.edgeUrl === assetRef.url;
});
if (asset) {
console.log("".concat(indent, "\u251C\u2500 ").concat(ansi_colors_1.default.yellow("Asset:".concat(asset.fileName || assetRef.url))));
// Check gallery dependency if asset has one
if (asset.mediaGroupingID) {
var gallery = (_b = sourceEntities.galleries) === null || _b === void 0 ? void 0 : _b.find(function (g) { return g.mediaGroupingID === asset.mediaGroupingID; });
if (gallery) {
console.log("".concat(indent, "\u2502 \u251C\u2500 ").concat(ansi_colors_1.default.magenta("Gallery:".concat(gallery.name || gallery.mediaGroupingID))));
}
}
}
else {
console.log("".concat(indent, "\u251C\u2500 ").concat(ansi_colors_1.default.red("Asset:".concat(assetRef.url, " - MISSING IN SOURCE DATA"))));
}
});
};
/**
* Find missing assets for content
*/
AssetReferenceExtractor.prototype.findMissingAssetsForContent = function (content, sourceEntities) {
var missing = [];
if (!content.fields)
return missing;
var assetRefs = this.extractAssetReferences(content.fields);
assetRefs.forEach(function (assetRef) {
var _a, _b;
var asset = (_a = sourceEntities.assets) === null || _a === void 0 ? void 0 : _a.find(function (a) {
return a.originUrl === assetRef.url ||
a.url === assetRef.url ||
a.edgeUrl === assetRef.url;
});
if (!asset) {
missing.push("Asset:".concat(assetRef.url));
}
else {
// Check gallery dependency if asset has one
if (asset.mediaGroupingID) {
var gallery = (_b = sourceEntities.galleries) === null || _b === void 0 ? void 0 : _b.find(function (g) { return g.mediaGroupingID === asset.mediaGroupingID; });
if (!gallery) {
missing.push("Gallery:".concat(asset.mediaGroupingID));
}
}
}
});
return missing;
};
return AssetReferenceExtractor;
}());
exports.AssetReferenceExtractor = AssetReferenceExtractor;
//# sourceMappingURL=asset-reference-extractor.js.map