@digital-herd/content-hub-cli 1.1.1 → 1.1.3
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/lib/modules/external-components/commands/SyncComponent.d.ts +2 -0
- package/lib/modules/external-components/commands/SyncComponent.js +1 -0
- package/lib/modules/external-components/index.js +1 -1
- package/lib/modules/external-components/services/CreateComponentService.js +1 -1
- package/lib/modules/external-components/services/ExternalComponentConfigService.d.ts +12 -0
- package/lib/modules/external-components/services/ExternalComponentConfigService.js +6 -0
- package/lib/modules/external-components/services/ExternalComponentPublishService.d.ts +1 -0
- package/lib/modules/external-components/services/ExternalComponentPublishService.js +1 -1
- package/lib/modules/scripts/services/CreateScriptService.js +1 -1
- package/lib/types/ExternalComponentConfig.interface.d.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.syncComponentConfigCommand=void 0;let commander_1=require("commander"),globalCommandConfig_js_1=require("../../../utils/globalCommandConfig.js"),ExternalComponentConfigService_js_1=__importDefault(require("../services/ExternalComponentConfigService.js")),prompts_1=require("@inquirer/prompts");exports.syncComponentConfigCommand=(0,globalCommandConfig_js_1.setGlobalConfig)(new commander_1.Command("sync-component-config")).description("Run ContentHub build").action(async e=>{var{config:e,contenthubService:n}=await(0,globalCommandConfig_js_1.globalCommandConfig)(e),o=await(0,prompts_1.input)({message:"Enter the component name:"}),t=await(0,prompts_1.input)({message:"asset identifier"});await new ExternalComponentConfigService_js_1.default(n,e).syncConfigAsset(o,t)});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:!0});let buildExternalComponent_1=require("./commands/buildExternalComponent"),watchExternalComponent_1=require("./commands/watchExternalComponent"),createComponent_1=require("./commands/createComponent");exports.default={commands:[buildExternalComponent_1.buildExternalComponentCommand,watchExternalComponent_1.watchExternalComponentCommand,createComponent_1.createComponentCommand]};
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:!0});let buildExternalComponent_1=require("./commands/buildExternalComponent"),watchExternalComponent_1=require("./commands/watchExternalComponent"),createComponent_1=require("./commands/createComponent"),SyncComponent_1=require("./commands/SyncComponent");exports.default={commands:[buildExternalComponent_1.buildExternalComponentCommand,watchExternalComponent_1.watchExternalComponentCommand,createComponent_1.createComponentCommand,SyncComponent_1.syncComponentConfigCommand]};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&("get"in o?t.__esModule:!o.writable&&!o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,o)}:function(e,t,r,i){e[i=void 0===i?r:i]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||(()=>{var o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t,r=[];for(t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[r.length]=t);return r})(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),i=0;i<r.length;i++)"default"!==r[i]&&__createBinding(t,e,r[i]);return __setModuleDefault(t,e),t}})(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});let fs=__importStar(require("fs")),path=__importStar(require("path")),logger_js_1=__importDefault(require("../../../utils/logger.js")),FileService_js_1=__importDefault(require("../../../services/FileService.js"));class CreateComponentService{config;templateDir;componentsDir;fileService;constructor(e){this.config=e,this.templateDir=e.templates.externalComponent,this.componentsDir=path.resolve(process.cwd(),e.componentDir),this.fileService=new FileService_js_1.default(e)}getAvailableSections(){if(!fs.existsSync(this.componentsDir))return logger_js_1.default.error("Components directory not found: "+this.componentsDir),[];var e,t,r=[];for(e of fs.readdirSync(this.componentsDir,{withFileTypes:!0}).filter(e=>e.isDirectory()))"workflows"===e.name?(t=path.join(this.componentsDir,"workflows"),t=fs.readdirSync(t,{withFileTypes:!0}).filter(e=>e.isDirectory()).map(e=>"workflows/"+e.name),r.push(...t)):r.push(e.name);return r.sort()}async createComponent(e,t){if(this.fileService.getAllComponentNames().includes(t))throw new Error(t+" already exists.");if(!fs.existsSync(this.templateDir))throw new Error("Template directory not found: "+this.templateDir);var r=path.join(this.componentsDir,e);if(!fs.existsSync(r))throw new Error("Section directory not found: "+r);var i,o=path.join(r,t);if(fs.existsSync(o))throw new Error(`Component "${t}" already exists in section "${e}"`);logger_js_1.default.info(`📦 Creating component "${t}" in section "${e}"...`),fs.mkdirSync(o,{recursive:!0});for(i of fs.readdirSync(this.templateDir)){var n=path.join(this.templateDir,i),s=i.replace("
|
|
1
|
+
var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&("get"in o?t.__esModule:!o.writable&&!o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,o)}:function(e,t,r,i){e[i=void 0===i?r:i]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||(()=>{var o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t,r=[];for(t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[r.length]=t);return r})(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),i=0;i<r.length;i++)"default"!==r[i]&&__createBinding(t,e,r[i]);return __setModuleDefault(t,e),t}})(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});let fs=__importStar(require("fs")),path=__importStar(require("path")),logger_js_1=__importDefault(require("../../../utils/logger.js")),FileService_js_1=__importDefault(require("../../../services/FileService.js"));class CreateComponentService{config;templateDir;componentsDir;fileService;constructor(e){this.config=e,this.templateDir=e.templates.externalComponent,this.componentsDir=path.resolve(process.cwd(),e.componentDir),this.fileService=new FileService_js_1.default(e)}getAvailableSections(){if(!fs.existsSync(this.componentsDir))return logger_js_1.default.error("Components directory not found: "+this.componentsDir),[];var e,t,r=[];for(e of fs.readdirSync(this.componentsDir,{withFileTypes:!0}).filter(e=>e.isDirectory()))"workflows"===e.name?(t=path.join(this.componentsDir,"workflows"),t=fs.readdirSync(t,{withFileTypes:!0}).filter(e=>e.isDirectory()).map(e=>"workflows/"+e.name),r.push(...t)):r.push(e.name);return r.sort()}async createComponent(e,t){if(this.fileService.getAllComponentNames().includes(t))throw new Error(t+" already exists.");if(!fs.existsSync(this.templateDir))throw new Error("Template directory not found: "+this.templateDir);var r=path.join(this.componentsDir,e);if(!fs.existsSync(r))throw new Error("Section directory not found: "+r);var i,o=path.join(r,t);if(fs.existsSync(o))throw new Error(`Component "${t}" already exists in section "${e}"`);logger_js_1.default.info(`📦 Creating component "${t}" in section "${e}"...`),fs.mkdirSync(o,{recursive:!0});for(i of fs.readdirSync(this.templateDir)){var n=path.join(this.templateDir,i),s=i.replace("ComponentName",t),a=path.join(o,s);let e=fs.readFileSync(n,"utf-8");"ComponentName.config.ts"!==i&&(e=(e=e.replace(/\$\$ComponentName/g,t)).replace(/\$\$componentName/g,t.toLowerCase())),fs.writeFileSync(a,e,"utf-8"),logger_js_1.default.info(" ✓ Created "+s)}logger_js_1.default.info(`✅ Component "${t}" created successfully!`),logger_js_1.default.info("📁 Location: "+path.relative(process.cwd(),o))}}exports.default=CreateComponentService;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ContenthubConfig } from "../../../types/ContentHubConfig.interface";
|
|
2
|
+
import ExternalComponentsService from "../../../services/FileService";
|
|
3
|
+
import { ExternalComponentConfig } from "../../../types/ExternalComponentConfig.interface";
|
|
4
|
+
import ContenthubService from "../../../services/ContenthubService";
|
|
5
|
+
declare class ExternalComponentConfigService {
|
|
6
|
+
contenthubService: ContenthubService;
|
|
7
|
+
externalComponentsService: ExternalComponentsService;
|
|
8
|
+
constructor(contenthubService: ContenthubService, config: ContenthubConfig);
|
|
9
|
+
syncConfigAsset(component: string, assetIdentifier: string): Promise<void>;
|
|
10
|
+
writeConfigFile(component: string, config: ExternalComponentConfig): void;
|
|
11
|
+
}
|
|
12
|
+
export default ExternalComponentConfigService;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});let sc_contenthub_webclient_sdk_1=require("@sitecore/sc-contenthub-webclient-sdk"),FileService_1=__importDefault(require("../../../services/FileService")),fs_1=require("fs"),lodash_1=require("lodash"),apiCatch_1=require("../../../utils/apiCatch"),logger_1=__importDefault(require("../../../utils/logger"));class ExternalComponentConfigService{contenthubService;externalComponentsService;constructor(e,t){this.contenthubService=e,this.externalComponentsService=new FileService_1.default(t)}async syncConfigAsset(e,t){var n=await(0,apiCatch_1.apiErrorCatch)(()=>this.contenthubService.client.entities.getAsync(t,new sc_contenthub_webclient_sdk_1.EntityLoadConfiguration(sc_contenthub_webclient_sdk_1.CultureLoadOption.Default,sc_contenthub_webclient_sdk_1.PropertyLoadOption.None,new sc_contenthub_webclient_sdk_1.RelationLoadOption(["AssetToPageComponent"]))));n||(logger_1.default.error("Asset not found"),process.exit(-1));let i=n.getRelation("AssetToPageComponent")?.getIds()||[];n=(await(0,apiCatch_1.apiErrorCatch)(()=>this.contenthubService.client.entities.getManyAsync(i,sc_contenthub_webclient_sdk_1.EntityLoadConfiguration.Full))).reduce((e,t)=>{let n=t.getPropertyValue("PageComponent.Settings").config;var i=e.find(e=>(0,lodash_1.isEqual)(e.config,n));return i?i.pageComponentIdentifiers.push(t.identifier):e.push({pageComponentIdentifiers:[t.identifier],config:n}),e},[]);this.writeConfigFile(e,{components:n})}writeConfigFile(e,t){var n=this.externalComponentsService.getDirectoryOfComponent(e);(0,fs_1.writeFileSync)(n+`/${e}.config.ts`,`
|
|
2
|
+
import { type ExternalComponentConfig } from "@digital-herd/content-hub-cli";
|
|
3
|
+
|
|
4
|
+
export default ${JSON.stringify(t)} as ExternalComponentConfig;
|
|
5
|
+
|
|
6
|
+
`)}}exports.default=ExternalComponentConfigService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,n
|
|
1
|
+
var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,i,n){void 0===n&&(n=i);var r=Object.getOwnPropertyDescriptor(t,i);r&&("get"in r?t.__esModule:!r.writable&&!r.configurable)||(r={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,n,r)}:function(e,t,i,n){e[n=void 0===n?i:n]=t[i]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||(()=>{var r=function(e){return(r=Object.getOwnPropertyNames||function(e){var t,i=[];for(t in e)Object.prototype.hasOwnProperty.call(e,t)&&(i[i.length]=t);return i})(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i=r(e),n=0;n<i.length;n++)"default"!==i[n]&&__createBinding(t,e,i[n]);return __setModuleDefault(t,e),t}})(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});let sc_contenthub_webclient_sdk_1=require("@sitecore/sc-contenthub-webclient-sdk"),FileService_1=__importDefault(require("../../../services/FileService")),array_1=require("../../../utils/array"),apiCatch_1=require("../../../utils/apiCatch"),hash_1=require("../../../utils/hash"),logger_1=__importStar(require("../../../utils/logger")),lodash_1=require("lodash");class ExternalComponentPublishService{contenthubService;fileService;constructor(e,t){this.contenthubService=e,this.fileService=new FileService_1.default(t)}async publishToPortalAsset(e){var t;for(t of Array.isArray(e)?e:[e]){var i=this.fileService.getComponentConfig(t),n=this.fileService.getComponentBuild(t),i=await this.fileService.tsFileImport(i),n=await this.createOrUpdateAsset(t,n,i);await this.updateExternalComponents(t,i,{assetId:n.id}),logger_1.loggerSuccess.info(t+" Published")}}async publishToLocalPath(e,t){var i;for(i of Array.isArray(t)?t:[t]){var n=this.fileService.getComponentConfig(i),n=await this.fileService.tsFileImport(n),r=`${e}/${i}.js`;await this.updateExternalComponents(i,n,{path:r}),logger_1.loggerSuccess.info(`"${i}" Page component updated to local path`)}}async updateExternalComponents(e,i,{assetId:n,path:r}){var a=i.components.flatMap(e=>e.pageComponentIdentifiers),o=(logger_1.default.info(`Start updating ${a.length} External Page components`),await Promise.all((0,array_1.arrayToChunks)(a,50).map(e=>(0,apiCatch_1.apiErrorCatch)(()=>this.contenthubService.client.entities.getManyAsync(e,new sc_contenthub_webclient_sdk_1.EntityLoadConfiguration(sc_contenthub_webclient_sdk_1.CultureLoadOption.Default,new sc_contenthub_webclient_sdk_1.PropertyLoadOption("PageComponent.Settings"),new sc_contenthub_webclient_sdk_1.RelationLoadOption(["AssetToPageComponent"])))))).then(e=>e.flat()));for(let t of a){let e=o.find(e=>e.identifier===t);var s=i.components.find(e=>e.pageComponentIdentifiers.includes(t)),c=(e||(logger_1.default.error(`${t} was not found that was specified in the config of "${e}"`),process.exit(-1)),await e.getPropertyValue("PageComponent.Settings")),s={...c,config:s.config,path:r||void 0},c=((0,lodash_1.isEqual)(c,s)||e.setPropertyValue("PageComponent.Settings",s),e.getRelation("AssetToPageComponent"));n&&!c.getIds().includes(n)?c.setIds([n]):r&&c.setIds([]),e.isDirty&&await(0,apiCatch_1.apiErrorCatch)(()=>this.contenthubService.client.entities.saveAsync(e))}}async createOrUpdateAsset(e,t,i){var i=await this.getOrCreateAsset(e,i),n=i.getPropertyValue("Digest");if(n){var r=await(0,hash_1.sha1FromFile)(t);if(n.replace("0x","")===r)return logger_1.default.info(`"${e}" source code wasn't updated so skip.`),i}n=new sc_contenthub_webclient_sdk_1.LocalUploadSource("file://"+t);let a=new sc_contenthub_webclient_sdk_1.UploadRequest(n,"AssetUploadConfiguration","NewMainFile");return a.actionParameters={AssetId:i.id},await(0,apiCatch_1.apiErrorCatch)(()=>this.contenthubService.client.uploads.uploadAsync(a)),logger_1.default.info(`"${e}" source code uploaded to asset`),i}async getOrCreateAsset(e,t){let i=await this.getAssetFromFileName(e);return(i=!i&&t.deprecatedAssetFileName?await this.getAssetFromFileName(t.deprecatedAssetFileName):i)?i.getPropertyValue("Title")!==e&&(i.setPropertyValue("Title",e),i.setPropertyValue("FileName",e+".js"),await(0,apiCatch_1.apiErrorCatch)(()=>this.contenthubService.client.entities.saveAsync(i))):(t=await this.contenthubService.getOrFetchId("M.Content.Repository.Portal"),(i=await this.contenthubService.client.entityFactory.createAsync("M.Asset")).setPropertyValue("Title",e),i.setPropertyValue("FileName",e+".js"),i.getRelation("ContentRepositoryToAsset")?.setIds([t]),i.id=await(0,apiCatch_1.apiErrorCatch)(()=>this.contenthubService.client.entities.saveAsync(i))),i}async getAssetFromFileName(e){var t=await this.contenthubService.getOrFetchId("M.Content.Repository.Portal"),e=e.replace(".js","");let i=new sc_contenthub_webclient_sdk_1.Query({filter:new sc_contenthub_webclient_sdk_1.CompositeQueryFilter({combineMethod:sc_contenthub_webclient_sdk_1.CompositeFilterOperator.And,children:[new sc_contenthub_webclient_sdk_1.DefinitionQueryFilter({name:"M.Asset",operator:sc_contenthub_webclient_sdk_1.ComparisonOperator.Equals}),new sc_contenthub_webclient_sdk_1.PropertyQueryFilter({property:"Title",dataType:sc_contenthub_webclient_sdk_1.FilterDataType.String,values:[e,e+".js"],operator:sc_contenthub_webclient_sdk_1.ComparisonOperator.Equals}),new sc_contenthub_webclient_sdk_1.RelationQueryFilter({relation:"ContentRepositoryToAsset",parentId:t})]}),take:1});return(await(0,apiCatch_1.apiErrorCatch)(()=>this.contenthubService.client.querying.queryAsync(i,new sc_contenthub_webclient_sdk_1.EntityLoadConfiguration(sc_contenthub_webclient_sdk_1.CultureLoadOption.Default,new sc_contenthub_webclient_sdk_1.PropertyLoadOption(["FileName","Title","Digest"]),new sc_contenthub_webclient_sdk_1.RelationLoadOption(["AssetToPageComponent"]))))).items[0]}}exports.default=ExternalComponentPublishService;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var c=Object.getOwnPropertyDescriptor(t,r);c&&("get"in c?t.__esModule:!c.writable&&!c.configurable)||(c={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,c)}:function(e,t,r,i){e[i=void 0===i?r:i]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||(()=>{var c=function(e){return(c=Object.getOwnPropertyNames||function(e){var t,r=[];for(t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[r.length]=t);return r})(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=c(e),i=0;i<r.length;i++)"default"!==r[i]&&__createBinding(t,e,r[i]);return __setModuleDefault(t,e),t}})(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});let fs=__importStar(require("fs")),path=__importStar(require("path")),logger_js_1=__importDefault(require("../../../utils/logger.js")),sc_contenthub_webclient_sdk_1=require("@sitecore/sc-contenthub-webclient-sdk"),apiCatch_js_1=require("../../../utils/apiCatch.js"),script_js_1=require("../utils/script.js");class CreateScriptService{contenthubService;config;templateDir;scriptsDir;constructor(e,t){this.contenthubService=e,this.config=t,this.templateDir=t.templates.script,this.scriptsDir=path.resolve(process.cwd(),t.scriptDir)}async fetchScriptDefaults(t){try{var e=await(0,apiCatch_js_1.apiErrorCatch)(()=>this.contenthubService.client.entities.getAsync(t,new sc_contenthub_webclient_sdk_1.EntityLoadConfiguration(sc_contenthub_webclient_sdk_1.CultureLoadOption.Default,new sc_contenthub_webclient_sdk_1.PropertyLoadOption(["M.Script.Name","M.Script.Description","M.Script.ExecuteAsUser","M.Script.Type"]))));return e?{identifier:e.identifier,type:e.getPropertyValue("M.Script.Type")||"Action",title:e.getPropertyValue("M.Script.Name")||"",description:e.getPropertyValue("M.Script.Description")||"",executeAsUser:e.getPropertyValue("M.Script.ExecuteAsUser")||!1}:null}catch(e){return logger_js_1.default.warn("⚠️ Could not fetch script from API: "+t),null}}async createScript(r){if(!fs.existsSync(this.templateDir))throw logger_js_1.default.error("Template directory not found: "+this.templateDir),new Error("Template directory not found");var i,c=(0,script_js_1.scriptNameToSlug)(r.title),s=path.join(this.scriptsDir,c);if(fs.existsSync(s))throw logger_js_1.default.error(`Script "${c}" already exists`),new Error("Script already exists");logger_js_1.default.info(`📦 Creating script "${c}"...`),fs.mkdirSync(s,{recursive:!0});for(i of fs.readdirSync(this.templateDir)){var n=path.join(this.templateDir,i);let e=i;"
|
|
1
|
+
var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var c=Object.getOwnPropertyDescriptor(t,r);c&&("get"in c?t.__esModule:!c.writable&&!c.configurable)||(c={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,c)}:function(e,t,r,i){e[i=void 0===i?r:i]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||(()=>{var c=function(e){return(c=Object.getOwnPropertyNames||function(e){var t,r=[];for(t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[r.length]=t);return r})(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=c(e),i=0;i<r.length;i++)"default"!==r[i]&&__createBinding(t,e,r[i]);return __setModuleDefault(t,e),t}})(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});let fs=__importStar(require("fs")),path=__importStar(require("path")),logger_js_1=__importDefault(require("../../../utils/logger.js")),sc_contenthub_webclient_sdk_1=require("@sitecore/sc-contenthub-webclient-sdk"),apiCatch_js_1=require("../../../utils/apiCatch.js"),script_js_1=require("../utils/script.js");class CreateScriptService{contenthubService;config;templateDir;scriptsDir;constructor(e,t){this.contenthubService=e,this.config=t,this.templateDir=t.templates.script,this.scriptsDir=path.resolve(process.cwd(),t.scriptDir)}async fetchScriptDefaults(t){try{var e=await(0,apiCatch_js_1.apiErrorCatch)(()=>this.contenthubService.client.entities.getAsync(t,new sc_contenthub_webclient_sdk_1.EntityLoadConfiguration(sc_contenthub_webclient_sdk_1.CultureLoadOption.Default,new sc_contenthub_webclient_sdk_1.PropertyLoadOption(["M.Script.Name","M.Script.Description","M.Script.ExecuteAsUser","M.Script.Type"]))));return e?{identifier:e.identifier,type:e.getPropertyValue("M.Script.Type")||"Action",title:e.getPropertyValue("M.Script.Name")||"",description:e.getPropertyValue("M.Script.Description")||"",executeAsUser:e.getPropertyValue("M.Script.ExecuteAsUser")||!1}:null}catch(e){return logger_js_1.default.warn("⚠️ Could not fetch script from API: "+t),null}}async createScript(r){if(!fs.existsSync(this.templateDir))throw logger_js_1.default.error("Template directory not found: "+this.templateDir),new Error("Template directory not found");var i,c=(0,script_js_1.scriptNameToSlug)(r.title),s=path.join(this.scriptsDir,c);if(fs.existsSync(s))throw logger_js_1.default.error(`Script "${c}" already exists`),new Error("Script already exists");logger_js_1.default.info(`📦 Creating script "${c}"...`),fs.mkdirSync(s,{recursive:!0});for(i of fs.readdirSync(this.templateDir)){var n=path.join(this.templateDir,i);let e=i;"ScriptName.config.ts"===i?e=c+".config.ts":"ScriptName.cs"===i&&(e=c+".cs");var o=path.join(s,e);let t=fs.readFileSync(n,"utf-8");"ScriptName.config.ts"===i&&(t=`import { type ActionScriptConfig } from "@digital-herd/content-hub-cli";
|
|
2
2
|
|
|
3
3
|
export default {
|
|
4
4
|
identifier: "${r.identifier}",
|
package/package.json
CHANGED