UNPKG

@agility/cli

Version:

Agility CLI for working with your content. (Public Beta)

135 lines 5.82 kB
"use strict"; /** * 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