@digital-herd/content-hub-cli 1.1.14 → 1.1.16

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/bin.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});let commander_1=require("commander"),modules_1=__importDefault(require("./modules")),program=new commander_1.Command;program.name("content-hub-tools").description("ContentHub build & utility CLI").version("1.1.14");for(let o of modules_1.default)for(let e of o.commands)program.addCommand(e);program.parse(process.argv);
2
+ var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});let commander_1=require("commander"),modules_1=__importDefault(require("./modules")),program=new commander_1.Command;program.name("content-hub-tools").description("ContentHub build & utility CLI").version("1.1.16");for(let o of modules_1.default)for(let e of o.commands)program.addCommand(e);program.parse(process.argv);
@@ -1,2 +1,2 @@
1
- var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=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,n,o)}:function(e,t,r,n){e[n=void 0===n?r:n]=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),n=0;n<r.length;n++)"default"!==r[n]&&__createBinding(t,e,r[n]);return __setModuleDefault(t,e),t}})();Object.defineProperty(exports,"__esModule",{value:!0});let sc_contenthub_webclient_sdk_1=require("@sitecore/sc-contenthub-webclient-sdk"),fs=__importStar(require("fs")),tslog_1=require("tslog");class ManualPatch{client;name;errorLogPath;logger;onLastHitData;constructor(e,{name:t,onLastHitData:r,errorLogPath:n}){this.client=e,this.name=t,this.logger=new tslog_1.Logger({name:"Patch "+t,minLevel:0}),this.errorLogPath=n,this.onLastHitData=r}async preRun(){}async postRun(){}logInfo(...e){this.logger.info(...e)}logWarning(...e){this.logger.warn(...e)}logError(...e){this.logger.error(...e)}writeError(e,t,r){let n=e.message;e instanceof sc_contenthub_webclient_sdk_1.ValidationError&&(n=e.failures.map(e=>e.message).join(","));e=[(new Date).toISOString(),"patch="+this.name,"message="+t,"error="+n],void 0!==r&&e.push("entityId="+r),t=e.join(" | ")+`
1
+ var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=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,n,o)}:function(e,t,r,n){e[n=void 0===n?r:n]=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),n=0;n<r.length;n++)"default"!==r[n]&&__createBinding(t,e,r[n]);return __setModuleDefault(t,e),t}})();Object.defineProperty(exports,"__esModule",{value:!0});let sc_contenthub_webclient_sdk_1=require("@sitecore/sc-contenthub-webclient-sdk"),fs=__importStar(require("fs")),tslog_1=require("tslog");class ManualPatch{client;name;errorLogPath;logger;onLastHitData;constructor(e,{name:t,onLastHitData:r,errorLogPath:n}){this.client=e,this.name=t,this.logger=new tslog_1.Logger({name:"Patch "+t,minLevel:0,prettyLogTemplate:"{{name}} | {{logLevelName}}: "}),this.errorLogPath=n,this.onLastHitData=r}async preRun(){}async postRun(){}logInfo(...e){this.logger.info(...e)}logWarning(...e){this.logger.warn(...e)}logError(...e){this.logger.error(...e)}writeError(e,t,r){let n=e.message;e instanceof sc_contenthub_webclient_sdk_1.ValidationError&&(n=e.failures.map(e=>e.message).join(","));e=[(new Date).toISOString(),"patch="+this.name,"message="+t,"error="+n],void 0!==r&&e.push("entityId="+r),t=e.join(" | ")+`
2
2
  `;try{fs.appendFileSync(this.errorLogPath,t,"utf-8")}catch(e){this.logger.warn("Failed to write patch error log:",e)}}}exports.default=ManualPatch;
@@ -1 +1 @@
1
- var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.runPatchCommand=void 0;let commander_1=require("commander"),prompts_1=require("@inquirer/prompts"),globalCommandConfig_js_1=require("../../../utils/globalCommandConfig.js"),logger_js_1=__importDefault(require("../../../utils/logger.js")),RunPatchService_js_1=__importDefault(require("../services/RunPatchService.js")),PatchSelectionService_js_1=__importDefault(require("../services/PatchSelectionService.js"));exports.runPatchCommand=(0,globalCommandConfig_js_1.setGlobalConfig)(new commander_1.Command("run-manual-patch")).option("-g, --group <group>","patch group").option("-p, --patch <patch>","patch in group").description("Run a patch").action(async e=>{var{config:t,contenthubService:a}=await(0,globalCommandConfig_js_1.globalCommandConfig)(e),a=new RunPatchService_js_1.default(a,t),t=new PatchSelectionService_js_1.default(t);try{var o=await t.getGroups(),r=e.group||await(0,prompts_1.select)({message:"Select with patch Group you want to run:",choices:o.map(e=>({name:e,value:e}))}),i=await t.getPatches(r),c=e.patch||await(0,prompts_1.select)({message:"Select with patch Group you want to run:",choices:i.map(e=>({name:e,value:e}))}),n=t.getPatchFile(r,c);console.log(n),await a.runPatch(n,c)}catch(e){e instanceof Error&&logger_js_1.default.error("Failed to run patch: "+e.message),process.exit(1)}});
1
+ var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.runPatchCommand=void 0;let commander_1=require("commander"),prompts_1=require("@inquirer/prompts"),globalCommandConfig_js_1=require("../../../utils/globalCommandConfig.js"),logger_js_1=__importDefault(require("../../../utils/logger.js")),RunPatchService_js_1=__importDefault(require("../services/RunPatchService.js")),PatchSelectionService_js_1=__importDefault(require("../services/PatchSelectionService.js"));exports.runPatchCommand=(0,globalCommandConfig_js_1.setGlobalConfig)(new commander_1.Command("run-manual-patch")).option("-g, --group <group>","patch group").option("-p, --patch <patch>","patch in group").option("-f, --force","skip lastHit data").description("Run a patch").action(async e=>{var{config:t,contenthubService:a,environment:o}=await(0,globalCommandConfig_js_1.globalCommandConfig)(e),a=new RunPatchService_js_1.default(a,t),t=new PatchSelectionService_js_1.default(t);try{var r=await t.getGroups(),i=e.group||await(0,prompts_1.select)({message:"Select with patch Group you want to run:",choices:r.map(e=>({name:e,value:e}))}),n=await t.getPatches(i),c=e.patch||await(0,prompts_1.select)({message:"Select with patch Group you want to run:",choices:n.map(e=>({name:e,value:e}))}),s=t.getPatchFile(i,c);console.log(s),await a.runPatch(s,c,o.name,e.force)}catch(e){e instanceof Error&&logger_js_1.default.error("Failed to run patch: "+e.message),process.exit(1)}});
@@ -16,11 +16,11 @@ export default class RunPatchService {
16
16
  */
17
17
  private getLastHitFilePath;
18
18
  /**
19
- * Read lastHit data from JSON file
19
+ * Read lastHit data from JSON file (per environment)
20
20
  */
21
21
  private readLastHit;
22
22
  /**
23
- * Write lastHit data to JSON file
23
+ * Write lastHit data to JSON file (per environment)
24
24
  */
25
25
  private writeLastHit;
26
26
  /**
@@ -35,7 +35,7 @@ export default class RunPatchService {
35
35
  /**
36
36
  * Execute a specific patch
37
37
  */
38
- runPatch(patchPath: string, name: string): Promise<void>;
38
+ runPatch(patchPath: string, name: string, environment: string, skipLastHit?: boolean): Promise<void>;
39
39
  private runPatchClass;
40
40
  }
41
41
  export {};
@@ -1 +1 @@
1
- var __createBinding=this&&this.__createBinding||(Object.create?function(t,e,r,i){void 0===i&&(i=r);var a=Object.getOwnPropertyDescriptor(e,r);a&&("get"in a?e.__esModule:!a.writable&&!a.configurable)||(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,i,a)}:function(t,e,r,i){t[i=void 0===i?r:i]=e[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),__importStar=this&&this.__importStar||(()=>{var a=function(t){return(a=Object.getOwnPropertyNames||function(t){var e,r=[];for(e in t)Object.prototype.hasOwnProperty.call(t,e)&&(r[r.length]=e);return r})(t)};return function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r=a(t),i=0;i<r.length;i++)"default"!==r[i]&&__createBinding(e,t,r[i]);return __setModuleDefault(e,t),e}})(),__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});let fs=__importStar(require("fs")),path=__importStar(require("path")),esbuild_1=require("esbuild"),logger_js_1=__importDefault(require("../../../utils/logger.js")),FileService_js_1=__importDefault(require("../../../services/FileService.js")),tempDirectory_js_1=require("../../../config/tempDirectory.js");class RunPatchService{contenthubService;config;patchDir;fileService;constructor(t,e){this.contenthubService=t,this.config=e,this.patchDir=path.resolve(process.cwd(),e.patchDir),this.fileService=new FileService_js_1.default(e),fs.existsSync(tempDirectory_js_1.PATCH_DIRECTORY)||fs.mkdirSync(tempDirectory_js_1.PATCH_DIRECTORY,{recursive:!0})}getLastHitFilePath(t){return path.join(tempDirectory_js_1.PATCH_DIRECTORY,t+".lastHit.json")}readLastHit(e){var t=this.getLastHitFilePath(e);if(!fs.existsSync(t))return null;try{var r=fs.readFileSync(t,"utf-8");return JSON.parse(r)}catch(t){return logger_js_1.default.warn(`Failed to read lastHit data for "${e}":`,t),null}}writeLastHit(e,t){var r=this.getLastHitFilePath(e);try{fs.writeFileSync(r,JSON.stringify(t,null,2),"utf-8")}catch(t){logger_js_1.default.error(`Failed to write lastHit data for "${e}":`,t)}}getAvailablePatches(){return fs.existsSync(this.patchDir)?fs.readdirSync(this.patchDir).filter(t=>t.endsWith(".patch.ts")).map(t=>{var e=path.join(this.patchDir,t),r=fs.statSync(e);return{name:t.replace(".patch.ts",""),path:e,modifiedTime:r.mtime}}).sort((t,e)=>e.modifiedTime.getTime()-t.modifiedTime.getTime()):(logger_js_1.default.warn("Patch directory not found: "+this.patchDir),[])}getErrorLogPath(t){fs.existsSync(tempDirectory_js_1.PATCH_DIRECTORY)||fs.mkdirSync(tempDirectory_js_1.PATCH_DIRECTORY,{recursive:!0});t=t.replace(/[^a-zA-Z0-9_-]/g,"-");return path.join(tempDirectory_js_1.PATCH_DIRECTORY,t+".errors.txt")}async buildPatch(t){var e=path.parse(t).name,r=(path.dirname(t),path.join(tempDirectory_js_1.PATCH_DIRECTORY,e+".esbuild.cjs"));logger_js_1.default.info(`📦 Building patch "${e}" with esbuild...`);try{return await(0,esbuild_1.build)({entryPoints:[t],outfile:r,bundle:!0,platform:"node",target:"node20",format:"cjs",external:["esbuild","@digital-herd/content-hub-cli","@sitecore/sc-contenthub-webclient-sdk"]}),logger_js_1.default.info(`✨ Patch "${e}" built successfully`),r}catch(t){throw logger_js_1.default.error(`Failed to build patch "${e}":`,t),t}}async runPatch(t,e){var r=path.parse(t).name;if(!fs.existsSync(t))throw logger_js_1.default.error(`Patch "${r}" not found at `+t),new Error("Patch not found");logger_js_1.default.info(`🚀 Running patch "${r}"...`);let i=null;try{i=await this.buildPatch(t);var a=new(await this.fileService.jsImport(i))(this.contenthubService.client,{name:e,errorLogPath:this.getErrorLogPath(e),onLastHitData:t=>this.writeLastHit(e,t)});await this.runPatchClass(a,e),logger_js_1.default.info(`✅ Patch "${r}" completed successfully!`),logger_js_1.default.info("📝 Logs can be found at "+a.errorLogPath)}catch(t){throw logger_js_1.default.error(`Failed to run patch "${r}":`,t),t}finally{i&&fs.existsSync(i)&&fs.unlinkSync(i)}}async runPatchClass(e,r,i=!1){try{var t=this.readLastHit(r);await e.preRun(),await e.run(t)}catch(t){throw i||(logger_js_1.default.warn(`Patch "${r}" failed retry in 1m`,t),setTimeout(()=>this.runPatchClass(e,r,!0),6e4)),t}finally{await e.postRun()}}}exports.default=RunPatchService;
1
+ var __createBinding=this&&this.__createBinding||(Object.create?function(t,e,r,i){void 0===i&&(i=r);var a=Object.getOwnPropertyDescriptor(e,r);a&&("get"in a?e.__esModule:!a.writable&&!a.configurable)||(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,i,a)}:function(t,e,r,i){t[i=void 0===i?r:i]=e[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),__importStar=this&&this.__importStar||(()=>{var a=function(t){return(a=Object.getOwnPropertyNames||function(t){var e,r=[];for(e in t)Object.prototype.hasOwnProperty.call(t,e)&&(r[r.length]=e);return r})(t)};return function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r=a(t),i=0;i<r.length;i++)"default"!==r[i]&&__createBinding(e,t,r[i]);return __setModuleDefault(e,t),e}})(),__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});let fs=__importStar(require("fs")),path=__importStar(require("path")),esbuild_1=require("esbuild"),logger_js_1=__importDefault(require("../../../utils/logger.js")),FileService_js_1=__importDefault(require("../../../services/FileService.js")),tempDirectory_js_1=require("../../../config/tempDirectory.js");class RunPatchService{contenthubService;config;patchDir;fileService;constructor(t,e){this.contenthubService=t,this.config=e,this.patchDir=path.resolve(process.cwd(),e.patchDir),this.fileService=new FileService_js_1.default(e),fs.existsSync(tempDirectory_js_1.PATCH_DIRECTORY)||fs.mkdirSync(tempDirectory_js_1.PATCH_DIRECTORY,{recursive:!0})}getLastHitFilePath(t){return path.join(tempDirectory_js_1.PATCH_DIRECTORY,t+".lastHit.json")}readLastHit(e,t){var r=this.getLastHitFilePath(e);if(!fs.existsSync(r))return null;try{var i=fs.readFileSync(r,"utf-8"),a=JSON.parse(i);return a&&"object"==typeof a?a[t]??null:null}catch(t){return logger_js_1.default.warn(`Failed to read lastHit data for "${e}":`,t),null}}writeLastHit(e,r,i){var a,s,n=this.getLastHitFilePath(e);try{let t={};(t=fs.existsSync(n)&&(a=fs.readFileSync(n,"utf-8"),s=JSON.parse(a))&&"object"==typeof s?s:t)[r]=i,fs.writeFileSync(n,JSON.stringify(t,null,2),"utf-8")}catch(t){logger_js_1.default.error(`Failed to write lastHit data for "${e}":`,t)}}getAvailablePatches(){return fs.existsSync(this.patchDir)?fs.readdirSync(this.patchDir).filter(t=>t.endsWith(".patch.ts")).map(t=>{var e=path.join(this.patchDir,t),r=fs.statSync(e);return{name:t.replace(".patch.ts",""),path:e,modifiedTime:r.mtime}}).sort((t,e)=>e.modifiedTime.getTime()-t.modifiedTime.getTime()):(logger_js_1.default.warn("Patch directory not found: "+this.patchDir),[])}getErrorLogPath(t){fs.existsSync(tempDirectory_js_1.PATCH_DIRECTORY)||fs.mkdirSync(tempDirectory_js_1.PATCH_DIRECTORY,{recursive:!0});t=t.replace(/[^a-zA-Z0-9_-]/g,"-");return path.join(tempDirectory_js_1.PATCH_DIRECTORY,t+".errors.txt")}async buildPatch(t){var e=path.parse(t).name,r=(path.dirname(t),path.join(tempDirectory_js_1.PATCH_DIRECTORY,e+".esbuild.cjs"));logger_js_1.default.info(`📦 Building patch "${e}" with esbuild...`);try{return await(0,esbuild_1.build)({entryPoints:[t],outfile:r,bundle:!0,platform:"node",target:"node20",format:"cjs",external:["esbuild","@digital-herd/content-hub-cli","@sitecore/sc-contenthub-webclient-sdk"]}),logger_js_1.default.info(`✨ Patch "${e}" built successfully`),r}catch(t){throw logger_js_1.default.error(`Failed to build patch "${e}":`,t),t}}async runPatch(t,e,r,i=!1){var a=path.parse(t).name;if(!fs.existsSync(t))throw logger_js_1.default.error(`Patch "${a}" not found at `+t),new Error("Patch not found");logger_js_1.default.info(`🚀 Running patch "${a}"...`);i=i?null:this.readLastHit(e,r);let s=null;try{s=await this.buildPatch(t);var n=new(await this.fileService.jsImport(s))(this.contenthubService.client,{name:e,errorLogPath:this.getErrorLogPath(e),onLastHitData:t=>this.writeLastHit(e,r,t)});await this.runPatchClass(n,e,i),logger_js_1.default.info(`✅ Patch "${a}" completed successfully!`),logger_js_1.default.info("📝 Logs can be found at "+n.errorLogPath)}catch(t){throw logger_js_1.default.error(`Failed to run patch "${a}":`,t),t}finally{s&&fs.existsSync(s)&&fs.unlinkSync(s)}}async runPatchClass(e,r,i,a=!1){try{await e.preRun(),await e.run(i)}catch(t){throw a||(logger_js_1.default.warn(`Patch "${r}" failed retry in 1m`,t),setTimeout(()=>this.runPatchClass(e,r,i,!0),6e4)),t}finally{await e.postRun()}}}exports.default=RunPatchService;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@digital-herd/content-hub-cli",
3
3
  "description": "CLI tools for managing Sitecore Content Hub external components and scripts",
4
- "version": "1.1.14",
4
+ "version": "1.1.16",
5
5
  "type": "commonjs",
6
6
  "main": "./lib/index.js",
7
7
  "types": "./lib/index.d.ts",