@cyberskill/shared 1.19.0 → 1.21.0

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/dist/commands.cjs CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";function e(e,t){if(t==null||t>e.length)t=e.length;for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function t(t){if(Array.isArray(t))return e(t)}function n(e,t,n,r,s,c,o){try{var a=e[c](o);var i=a.value}catch(e){n(e);return}if(a.done){t(i)}else{Promise.resolve(i).then(r,s)}}function r(e){return function(){var t=this,r=arguments;return new Promise(function(s,c){var o=e.apply(t,r);function a(e){n(o,s,c,a,i,"next",e)}function i(e){n(o,s,c,a,i,"throw",e)}a(undefined)})}}function s(e,t,n){if(t in e){Object.defineProperty(e,t,{value:n,enumerable:true,configurable:true,writable:true})}else{e[t]=n}return e}function c(e){if(typeof Symbol!=="undefined"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function o(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function a(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};var r=Object.keys(n);if(typeof Object.getOwnPropertySymbols==="function"){r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))}r.forEach(function(t){s(e,t,n[t])})}return e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);if(t){r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})}n.push.apply(n,r)}return n}function u(e,t){t=t!=null?t:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(e,Object.getOwnPropertyDescriptors(t))}else{i(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function l(e){return t(e)||c(e)||p(e)||o()}function f(e){"@swc/helpers - typeof";return e&&typeof Symbol!=="undefined"&&e.constructor===Symbol?"symbol":typeof e}function p(t,n){if(!t)return;if(typeof t==="string")return e(t,n);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor)r=t.constructor.name;if(r==="Map"||r==="Set")return Array.from(r);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return e(t,n)}function d(e,t){var n,r,s,c,o={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]};return c={next:a(0),"throw":a(1),"return":a(2)},typeof Symbol==="function"&&(c[Symbol.iterator]=function(){return this}),c;function a(e){return function(t){return i([e,t])}}function i(c){if(n)throw new TypeError("Generator is already executing.");while(o)try{if(n=1,r&&(s=c[0]&2?r["return"]:c[0]?r["throw"]||((s=r["return"])&&s.call(r),0):r.next)&&!(s=s.call(r,c[1])).done)return s;if(r=0,s)c=[c[0]&2,s.value];switch(c[0]){case 0:case 1:s=c;break;case 4:o.label++;return{value:c[1],done:false};case 5:o.label++;r=c[1];c=[0];continue;case 7:c=o.ops.pop();o.trys.pop();continue;default:if(!(s=o.trys,s=s.length>0&&s[s.length-1])&&(c[0]===6||c[0]===2)){o=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]<s[3])){o.label=c[1];break}if(c[0]===6&&o.label<s[1]){o.label=s[1];s=c;break}if(s&&o.label<s[2]){o.label=s[2];o.ops.push(c);break}if(s[2])o.ops.pop();o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e];r=0}finally{n=s=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:true}}}var h=Object.create;var g=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var m=Object.getPrototypeOf,b=Object.prototype.hasOwnProperty;var S=function(e,t,n,r){var s=true,c=false,o=undefined;if(t&&(typeof t==="undefined"?"undefined":f(t))=="object"||typeof t=="function")try{var a=function(){var s=u.value;!b.call(e,s)&&s!==n&&g(e,s,{get:function(){return t[s]},enumerable:!(r=y(t,s))||r.enumerable})};for(var i=v(t)[Symbol.iterator](),u;!(s=(u=i.next()).done);s=true)a()}catch(e){c=true;o=e}finally{try{if(!s&&i.return!=null){i.return()}}finally{if(c){throw o}}}return e};var w=function(e,t,n){return n=e!=null?h(m(e)):{},S(t||!e||!e.__esModule?g(n,"default",{value:e,enumerable:!0}):n,e)};var _=function(){return(typeof document==="undefined"?"undefined":f(document))>"u"?new URL("file:".concat(__filename)).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href},O=_();var T=w(require("fs"),1),I=w(require("path"),1),k=w(require("process"),1),E=require("yargs/helpers"),j=w(require("yargs/yargs"),1);var P=require("path"),A=w(require("process"),1),N=require("url"),x=(0,N.fileURLToPath)(O),C=(0,P.dirname)(x),G=A.default.env.INIT_CWD||A.default.cwd();var R=w(require("boxen"),1),M=w(require("chalk"),1);var F=M.default,H=F.green,L=F.yellow,q=F.red,U=F.gray,D=F.bold,K=F.blue,J={step:function(e,t,n){var r=new Date().toLocaleTimeString(),s=e!==null&&t!==null?"STEP [".concat(e,"/").concat(t,"]"):"STEP";console.log("".concat(H(s)," ").concat(U("[".concat(r,"]"))," ").concat(D(n)))},success:function(e){console.log("".concat(H("✔ SUCCESS")," ").concat(e))},error:function(e){console.log("".concat(q("✖ ERROR")," ").concat(e))},warning:function(e){console.log("".concat(L("⚠ WARNING")," ").concat(e))},info:function(e){console.log("".concat(U("ℹ INFO")," ").concat(e))},boxedResult:function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:H;console.log((0,R.default)(D(n("".concat(e,"\n").concat(t))),{padding:1,margin:1,borderStyle:"round",borderColor:n===q?"red":n===L?"yellow":"green"}))},logResults:function(e,t,n,r){e.length&&(e.forEach(function(e){var r=e.file,s=e.position,c=e.rule,o=e.message;console.log("".concat(t("".concat(n," File:"))," ").concat(K("".concat(r).concat(s?":".concat(s):"")))),c&&console.log(" ".concat(t("Rule:")," ").concat(t(c))),console.log(" ".concat(t("Message:")," ").concat(t(o)))}),console.log((0,R.default)(D(t("".concat(n," Total ").concat(r,": ").concat(e.length))),{padding:1,margin:1,borderStyle:"round",borderColor:t===q?"red":t===L?"yellow":"green"})),console.log(U("─".repeat(40))))},displayResults:/*#__PURE__*/r(function(){var e,t,n;return d(this,function(r){switch(r.label){case 0:return[4,es()];case 1:e=r.sent(),t=e.filter(function(e){return e.type==="error"}),n=e.filter(function(e){return e.type==="warning"});!t.length&&!n.length?J.boxedResult("✔ NO ISSUES FOUND","",H):(J.logResults(n,L,"⚠","Warnings"),J.logResults(t,q,"✖","Errors"));return[2]}})})};var W=w(require("localforage"),1),B=w(require("node-persist"),1),Y=w(require("os"),1),$=w(require("path"),1),z=w(require("process"),1),Q=(typeof window==="undefined"?"undefined":f(window))<"u",V=z.default.env.CYBERSKILL_STORAGE_DIR||$.default.join(Y.default.homedir(),".cyberskill-storage");function X(){return Z.apply(this,arguments)}function Z(){Z=r(function(){var e;return d(this,function(t){switch(t.label){case 0:e=!Q&&!B.default.defaultInstance;if(!e)return[3,2];return[4,B.default.init({dir:V,stringify:JSON.stringify,parse:JSON.parse,encoding:"utf8",logging:!1,forgiveParseErrors:!0})];case 1:e=t.sent();t.label=2;case 2:e;return[2]}})});return Z.apply(this,arguments)}var ee={get:function e(e){return r(function(){var t,n,r;return d(this,function(s){switch(s.label){case 0:s.trys.push([0,6,,7]);if(!Q)return[3,2];return[4,W.default.getItem(e)];case 1:n=s.sent();return[3,5];case 2:return[4,X()];case 3:s.sent();return[4,B.default.getItem(e)];case 4:n=(t=s.sent())!==null&&t!==void 0?t:null;s.label=5;case 5:return[2,n];case 6:r=s.sent();return[2,(console.error('❌ [Storage:get] Error getting key "'.concat(e,'":'),r),null)];case 7:return[2]}})})()},set:function e(e,t){return r(function(){var n,r;return d(this,function(s){switch(s.label){case 0:s.trys.push([0,6,,7]);if(!Q)return[3,2];return[4,W.default.setItem(e,t)];case 1:n=s.sent();return[3,5];case 2:return[4,X()];case 3:s.sent();return[4,B.default.setItem(e,t)];case 4:n=s.sent();s.label=5;case 5:n;return[3,7];case 6:r=s.sent();console.error('❌ [Storage:set] Error setting key "'.concat(e,'":'),r);return[3,7];case 7:return[2]}})})()},remove:function e(e){return r(function(){var t,n;return d(this,function(r){switch(r.label){case 0:r.trys.push([0,6,,7]);if(!Q)return[3,2];return[4,W.default.removeItem(e)];case 1:t=r.sent();return[3,5];case 2:return[4,X()];case 3:r.sent();return[4,B.default.removeItem(e)];case 4:t=r.sent();r.label=5;case 5:t;return[3,7];case 6:n=r.sent();console.error('❌ [Storage:remove] Error removing key "'.concat(e,'":'),n);return[3,7];case 7:return[2]}})})()},keys:function e(){return r(function(){var e,t,n;return d(this,function(r){switch(r.label){case 0:r.trys.push([0,5,,6]);if(!Q)return[3,2];return[4,W.default.keys()];case 1:return[2,(e=r.sent())!==null&&e!==void 0?e:[]];case 2:return[4,X()];case 3:r.sent();return[4,B.default.keys()];case 4:t=r.sent();return[2,Array.isArray(t)?t:(console.warn("⚠️ [Storage:keys] Invalid keys response:",t),[])];case 5:n=r.sent();return[2,(console.error("❌ [Storage:keys] Error getting keys:",n),[])];case 6:return[2]}})})()},getLogLink:function e(e){return r(function(){return d(this,function(t){try{return[2,"".concat(V," (key: ").concat(e,")")]}catch(e){return[2,(console.error("❌ [Storage:getLogLink] Error getting log link:",e),null)]}return[2]})})()}};var et=function(e){return"error_list:".concat(e)};function en(e){return er.apply(this,arguments)}function er(){er=r(function(e){var t,n,r,s;return d(this,function(c){switch(c.label){case 0:if(!e.length)return[2];t=Date.now(),n=et(t);c.label=1;case 1:c.trys.push([1,4,,5]);return[4,ee.set(n,{errors:e,timestamp:t})];case 2:c.sent();return[4,ee.getLogLink(n)];case 3:r=c.sent();r&&J.info("Open the error list manually: ".concat(r));return[3,5];case 4:s=c.sent();J.error("Failed to save errors: ".concat(s.message));return[3,5];case 5:return[2]}})});return er.apply(this,arguments)}function es(){return ec.apply(this,arguments)}function ec(){ec=r(function(){var e,t,n,r,s,c,o,a,i,u,f,p,h;return d(this,function(d){switch(d.label){case 0:d.trys.push([0,10,,11]);return[4,ee.keys()];case 1:e=d.sent();if(!Array.isArray(e))return[2,(J.warning("Invalid response from storage.keys(): ".concat(e)),[])];t=e.filter(function(e){var t;return e===null||e===void 0?void 0:(t=e.startsWith)===null||t===void 0?void 0:t.call(e,"error_list:")}),n=[];r=true,s=false,c=undefined;d.label=2;case 2:d.trys.push([2,7,8,9]);o=t[Symbol.iterator]();d.label=3;case 3:if(!!(r=(a=o.next()).done))return[3,6];i=a.value;return[4,ee.get(i)];case 4:f=d.sent();f&&(u=n).push.apply(u,l(f.errors));d.label=5;case 5:r=true;return[3,3];case 6:return[3,9];case 7:p=d.sent();s=true;c=p;return[3,9];case 8:try{if(!r&&o.return!=null){o.return()}}finally{if(s){throw c}}return[7];case 9:return[2,n];case 10:h=d.sent();return[2,(J.error("Failed to retrieve stored errors: ".concat(h.message)),[])];case 11:return[2]}})});return ec.apply(this,arguments)}function eo(){return ea.apply(this,arguments)}function ea(){ea=r(function(){var e,t,n,r,s,c,o,a,i,u;return d(this,function(l){switch(l.label){case 0:l.trys.push([0,10,,11]);return[4,ee.keys()];case 1:e=l.sent();if(!Array.isArray(e)){J.warning("Invalid response from storage.keys(): ".concat(e));return[2]}t=e.filter(function(e){var t;return e===null||e===void 0?void 0:(t=e.startsWith)===null||t===void 0?void 0:t.call(e,"error_list:")});n=true,r=false,s=undefined;l.label=2;case 2:l.trys.push([2,7,8,9]);c=t[Symbol.iterator]();l.label=3;case 3:if(!!(n=(o=c.next()).done))return[3,6];a=o.value;return[4,ee.remove(a)];case 4:l.sent(),J.success("Removed error list: ".concat(a));l.label=5;case 5:n=true;return[3,3];case 6:return[3,9];case 7:i=l.sent();r=true;s=i;return[3,9];case 8:try{if(!n&&c.return!=null){c.return()}}finally{if(r){throw s}}return[7];case 9:return[3,11];case 10:u=l.sent();J.error("Failed to clear error lists: ".concat(u.message));return[3,11];case 11:return[2]}})});return ea.apply(this,arguments)}var ei=require("child_process"),eu=w(require("process"),1),el=w(require("util"),1);var ef=el.promisify(ei.exec),ep=eu.default.env.DEBUG==="true",ed=/^\s*(\d+):(\d+)\s+(error|warning)\s+(\S+)\s+(\S+)$/,eh=/^(.+?)\((\d+),(\d+)\):\s+(error|warning)\s+TS\d+:\s+(\S.+)$/,eg=/^✖\s+(.*?)\s+\[(.*?)\]$/;function ey(e){var t=[],n=[],r="";e.split("\n").forEach(function(e){if(e.startsWith("/"))r=e.trim();else{var s=ed.exec(e)||[],c=eh.exec(e)||[],o=eg.exec(e)||[];s.length&&r?t.push({file:r,position:"".concat(s[1],":").concat(s[2]),type:s[3]==="error"?"error":"warning",message:s[4].trim(),rule:s[5].trim()}):c.length?t.push({file:c[1],position:"".concat(c[2],":").concat(c[3]),type:c[4]==="error"?"error":"warning",message:c[5].trim()}):o.length?t.push({file:"commitlint",type:"error",message:o[1].trim(),rule:o[2].trim()}):n.push(e.trim())}}),t.length&&en(t),n.length&&ep&&(J.warning("Unmatched lines:"),n.forEach(function(e){return console.log(" ".concat(e))}))}function ev(e){try{var t=JSON.parse(e),n=[];t.forEach(function(e){var t=e.filePath,r=e.messages;r.forEach(function(e){var r=e.severity,s=e.line,c=e.column,o=e.ruleId,a=e.message;n.push({type:r===2?"error":"warning",file:t,position:"".concat(s,":").concat(c),rule:o,message:a})})}),n.length&&en(n)}catch(t){ey(e)}}function em(e){return eb.apply(this,arguments)}function eb(){eb=r(function(e){var t,n,r,s,c,o,a,i,u;var l=arguments;return d(this,function(f){switch(f.label){case 0:t=l.length>1&&l[1]!==void 0?l[1]:ev;n=new AbortController;eu.default.on("SIGINT",function(){J.warning("Process interrupted. Terminating..."),n.abort(),eu.default.exit()});f.label=1;case 1:f.trys.push([1,3,,4]);return[4,ef(e,{maxBuffer:0x6400000,signal:n.signal})];case 2:r=f.sent(),s=r.stdout,c=r.stderr;[s,c].forEach(function(e){return e&&t(e)});return[3,4];case 3:o=f.sent();a=o.stdout,i=o.stderr,u=o.message;[a,i].forEach(function(e){return e&&t(e)}),!i&&!a&&J.error("Command failed: ".concat(u));return[3,4];case 4:return[2]}})});return eb.apply(this,arguments)}var eS=w(require("node-fetch"),1),ew=w(require("fs"),1),e_=w(require("path"),1);var eO=24*60*60*1e3;function eT(e){return e?e_.default.join(G,"node_modules",e,"package.json"):e_.default.join(G,"package.json")}function eI(e){return ek.apply(this,arguments)}function ek(){ek=r(function(e){var t,n,r,s,c,o,a,i,u,l;var f=arguments;return d(this,function(p){switch(p.label){case 0:t=f.length>1&&f[1]!==void 0?f[1]:!1;n="npm_version:".concat(e),r="npm_metadata:".concat(e);return[4,ee.get(n)];case 1:s=p.sent();return[4,ee.get(r)];case 2:c=p.sent(),o=s&&Date.now()-s.timestamp<eO;if(!t&&o)return[2,(J.info("Using cached version for ".concat(e,": ").concat(s.version)),s.version)];a={};(c===null||c===void 0?void 0:c.etag)&&(a["If-None-Match"]=c.etag),(c===null||c===void 0?void 0:c.lastModified)&&(a["If-Modified-Since"]=c.lastModified);p.label=3;case 3:p.trys.push([3,8,,9]);J.info("Fetching latest version for ".concat(e,"..."));return[4,(0,eS.default)("https://registry.npmjs.org/".concat(e,"/latest"),{headers:a})];case 4:i=p.sent();if(i.status===304&&s)return[2,(J.info("Cache is still valid for ".concat(e,": ").concat(s.version)),s.version)];if(!i.ok)throw new Error("Failed to fetch latest version: ".concat(i.statusText));return[4,i.json()];case 5:u=p.sent().version;return[4,ee.set(n,{version:u,timestamp:Date.now()})];case 6:p.sent();return[4,ee.set(r,{etag:i.headers.get("ETag")||void 0,lastModified:i.headers.get("Last-Modified")||void 0})];case 7:return[2,(p.sent(),J.success("Cached latest version for ".concat(e,": ").concat(u)),u)];case 8:l=p.sent();if(J.error("Error fetching latest version for ".concat(e,": ").concat(l.message)),s)return[2,(J.warning("Falling back to cached version for ".concat(e,": ").concat(s.version)),s.version)];throw l;case 9:return[2]}})});return ek.apply(this,arguments)}function eE(e){return ej.apply(this,arguments)}function ej(){ej=r(function(e){var t,n,r,s,c;var o=arguments;return d(this,function(a){switch(a.label){case 0:t=o.length>1&&o[1]!==void 0?o[1]:!0;a.label=1;case 1:a.trys.push([1,3,,4]);n=eT(e);if(!ew.default.existsSync(n))return[2,(J.info("".concat(e," is not installed.")),!0)];r=JSON.parse(ew.default.readFileSync(n,"utf-8")).version;return[4,eI(e,t)];case 2:s=a.sent();return[2,(J.info("Installed version of ".concat(e,": ").concat(r)),J.info("Latest version of ".concat(e,": ").concat(s)),r!==s)];case 3:c=a.sent();return[2,(J.warning("Failed to check version for ".concat(e,": ").concat(c.message)),!0)];case 4:return[2]}})});return ej.apply(this,arguments)}function eP(e){return eA.apply(this,arguments)}function eA(){eA=r(function(e){var t,n,r,c;return d(this,function(o){switch(o.label){case 0:o.trys.push([0,4,,5]);return[4,eI(e,!0)];case 1:t=o.sent(),n=eT();if(!ew.default.existsSync(n)){J.error("package.json not found. Cannot update ".concat(e));return[2]}r=JSON.parse(ew.default.readFileSync(n,"utf-8"));r.dependencies=u(a({},r.dependencies),s({},e,t)),ew.default.writeFileSync(n,JSON.stringify(r,null,2)),J.info("Updated ".concat(e," to version ").concat(t));return[4,em("npm i -f")];case 2:o.sent();return[4,em("npm run lint:fix")];case 3:o.sent(),J.success("".concat(e," updated successfully."));return[3,5];case 4:c=o.sent();throw J.error("Failed to update ".concat(e,": ").concat(c.message)),c;case 5:return[2]}})});return eA.apply(this,arguments)}function eN(e,t){try{var n=e_.default.join(e,"package.json");return ew.default.existsSync(n)?JSON.parse(ew.default.readFileSync(n,"utf-8")).name===t:!1}catch(e){return J.error("Error reading package.json: ".concat(e.message)),!1}}var ex={TS_CONFIG_PATH:I.join(G,"tsconfig.json"),HUSKY_PATH:I.join(G,".husky"),GIT_HOOK_PATH:I.join(G,".git","hooks"),GIT_COMMIT_MSG:I.join(G,".git","COMMIT_EDITMSG"),SIMPLE_GIT_HOOKS_PATH:I.join(G,".simple-git-hooks.json"),PACKAGE_NAME:"@cyberskill/shared",LINT_STAGED_CONFIG_PATH:I.resolve(C,"./configs/lint-staged/base.js"),COMMITLINT_CONFIG_PATH:I.resolve(C,"./configs/commitlint/base.js"),UNIT_TEST_CONFIG_PATH:I.resolve(C,"./configs/vitest/react/unit.js"),E2E_TEST_CONFIG_PATH:I.resolve(C,"./configs/vitest/react/e2e.js")},eC=function(e){return T.existsSync(e)};function eG(){return eR.apply(this,arguments)}function eR(){eR=r(function(){var e;return d(this,function(t){switch(t.label){case 0:J.step(1,2,"Starting TypeScript check");if(!eC(ex.TS_CONFIG_PATH))return[3,2];return[4,em("npx tsc -p ".concat(ex.TS_CONFIG_PATH," --noEmit"))];case 1:e=t.sent();return[3,3];case 2:e=J.warning("tsconfig.json file not found. Skipping TypeScript check.");t.label=3;case 3:e;return[2]}})});return eR.apply(this,arguments)}function eM(){return eF.apply(this,arguments)}function eF(){eF=r(function(){var e,t;var n=arguments;return d(this,function(r){switch(r.label){case 0:e=n.length>0&&n[0]!==void 0?n[0]:!1;J.step(2,2,"Starting ESLint ".concat(e?"fix":"check"));t="npx eslint ".concat(G).concat(e?" --fix":"");return[4,em(t)];case 1:r.sent();return[2]}})});return eF.apply(this,arguments)}function eH(){return eL.apply(this,arguments)}function eL(){eL=r(function(){return d(this,function(e){switch(e.label){case 0:J.step(null,null,"Starting lint-staged process");return[4,em("npx lint-staged --config ".concat(ex.LINT_STAGED_CONFIG_PATH))];case 1:e.sent();return[2]}})});return eL.apply(this,arguments)}function eq(){return eU.apply(this,arguments)}function eU(){eU=r(function(){return d(this,function(e){switch(e.label){case 0:J.step(null,null,"Inspecting lint rules");return[4,em("npx @eslint/config-inspector")];case 1:e.sent();return[2]}})});return eU.apply(this,arguments)}function eD(){return eK.apply(this,arguments)}function eK(){eK=r(function(){return d(this,function(e){switch(e.label){case 0:J.step(null,null,"Starting full lint check");return[4,eo()];case 1:e.sent();return[4,Promise.all([eG(),eM()])];case 2:e.sent();return[4,J.displayResults()];case 3:e.sent();return[2]}})});return eK.apply(this,arguments)}function eJ(){return eW.apply(this,arguments)}function eW(){eW=r(function(){return d(this,function(e){switch(e.label){case 0:J.step(null,null,"Running commit lint");return[4,em("npx --no -- commitlint --edit ".concat(ex.GIT_COMMIT_MSG," --config ").concat(ex.COMMITLINT_CONFIG_PATH))];case 1:e.sent();return[2]}})});return eW.apply(this,arguments)}function eB(){return eY.apply(this,arguments)}function eY(){eY=r(function(){var e,t;return d(this,function(n){switch(n.label){case 0:J.step(2,2,"Setting up Git hooks");e=eC(ex.HUSKY_PATH);if(!e)return[3,2];return[4,em("npx rimraf ".concat(ex.HUSKY_PATH," ").concat(ex.GIT_HOOK_PATH," && git config core.hooksPath ").concat(ex.GIT_HOOK_PATH))];case 1:e=n.sent();n.label=2;case 2:e;t={"pre-commit":"".concat(eN(G,ex.PACKAGE_NAME)?"npm run build && ":"","npx --yes cyberskill lint-staged"),"commit-msg":"npx --yes cyberskill commitlint"};T.writeFileSync(ex.SIMPLE_GIT_HOOKS_PATH,JSON.stringify(t,null,4));return[4,em("npx simple-git-hooks")];case 3:n.sent(),J.success("Git hooks configured successfully."),T.unlinkSync(ex.SIMPLE_GIT_HOOKS_PATH);return[2]}})});return eY.apply(this,arguments)}function e$(){return ez.apply(this,arguments)}function ez(){ez=r(function(){var e,t,n,r,s,c,o;return d(this,function(a){switch(a.label){case 0:J.step(1,2,"Starting project setup");e=I.join(G,"package.json");a.label=1;case 1:a.trys.push([1,10,,11]);if(!eC(e)){J.error("package.json not found. Setup aborted.");return[2]}n=JSON.parse(T.readFileSync(e,"utf-8"));if(!eN(G,ex.PACKAGE_NAME))return[3,2];r=J.success("Cyberskill is already installed.");return[3,8];case 2:c=!((t=n.dependencies)===null||t===void 0?void 0:t[ex.PACKAGE_NAME]);if(c)return[3,4];return[4,eE(ex.PACKAGE_NAME)];case 3:c=a.sent();a.label=4;case 4:if(!c)return[3,6];J.info("Updating Cyberskill package...");return[4,eP(ex.PACKAGE_NAME)];case 5:s=a.sent();return[3,7];case 6:s=J.success("Cyberskill is up to date.");a.label=7;case 7:r=s;a.label=8;case 8:r;return[4,eB()];case 9:a.sent();return[3,11];case 10:o=a.sent();throw J.error("Error reading package.json: ".concat(o.message)),o;case 11:return[2]}})});return ez.apply(this,arguments)}function eQ(){return eV.apply(this,arguments)}function eV(){eV=r(function(){return d(this,function(e){switch(e.label){case 0:J.step(null,null,"Running unit tests");return[4,em("npx vitest --config ".concat(ex.UNIT_TEST_CONFIG_PATH))];case 1:e.sent();return[2]}})});return eV.apply(this,arguments)}function eX(){return eZ.apply(this,arguments)}function eZ(){eZ=r(function(){return d(this,function(e){switch(e.label){case 0:J.step(null,null,"Running e2e tests");return[4,em("npx vitest --config ".concat(ex.E2E_TEST_CONFIG_PATH))];case 1:e.sent();return[2]}})});return eZ.apply(this,arguments)}(0,j.default)((0,E.hideBin)(k.default.argv)).command("lint","Run linting checks",eD).command("lint:fix","Fix linting issues",function(){return eM(!0)}).command("lint:inspect","Inspect linting rules",eq).command("lint-staged","Run lint-staged",eH).command("commitlint","Run commitlint",eJ).command("setup","Run project setup",e$).command("reset","Reset project dependencies",/*#__PURE__*/r(function(){return d(this,function(e){switch(e.label){case 0:J.step(null,null,"Starting project reset");return[4,em("npx rimraf ".concat(G,"/node_modules ").concat(G,"/package-lock.json"))];case 1:e.sent();return[4,em("npm install")];case 2:e.sent();return[4,eB()];case 3:e.sent();return[2]}})})).command("test:unit","Run unit tests",eQ).command("test:e2e","Run e2e tests",eX).help().parse();
2
+ "use strict";function e(e,t){if(t==null||t>e.length)t=e.length;for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function t(t){if(Array.isArray(t))return e(t)}function n(e,t,n,r,s,c,o){try{var a=e[c](o);var i=a.value}catch(e){n(e);return}if(a.done){t(i)}else{Promise.resolve(i).then(r,s)}}function r(e){return function(){var t=this,r=arguments;return new Promise(function(s,c){var o=e.apply(t,r);function a(e){n(o,s,c,a,i,"next",e)}function i(e){n(o,s,c,a,i,"throw",e)}a(undefined)})}}function s(e,t,n){if(t in e){Object.defineProperty(e,t,{value:n,enumerable:true,configurable:true,writable:true})}else{e[t]=n}return e}function c(e){if(typeof Symbol!=="undefined"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function o(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function a(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};var r=Object.keys(n);if(typeof Object.getOwnPropertySymbols==="function"){r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))}r.forEach(function(t){s(e,t,n[t])})}return e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);if(t){r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})}n.push.apply(n,r)}return n}function u(e,t){t=t!=null?t:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(e,Object.getOwnPropertyDescriptors(t))}else{i(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function l(e){return t(e)||c(e)||p(e)||o()}function f(e){"@swc/helpers - typeof";return e&&typeof Symbol!=="undefined"&&e.constructor===Symbol?"symbol":typeof e}function p(t,n){if(!t)return;if(typeof t==="string")return e(t,n);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor)r=t.constructor.name;if(r==="Map"||r==="Set")return Array.from(r);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return e(t,n)}function d(e,t){var n,r,s,c,o={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]};return c={next:a(0),"throw":a(1),"return":a(2)},typeof Symbol==="function"&&(c[Symbol.iterator]=function(){return this}),c;function a(e){return function(t){return i([e,t])}}function i(c){if(n)throw new TypeError("Generator is already executing.");while(o)try{if(n=1,r&&(s=c[0]&2?r["return"]:c[0]?r["throw"]||((s=r["return"])&&s.call(r),0):r.next)&&!(s=s.call(r,c[1])).done)return s;if(r=0,s)c=[c[0]&2,s.value];switch(c[0]){case 0:case 1:s=c;break;case 4:o.label++;return{value:c[1],done:false};case 5:o.label++;r=c[1];c=[0];continue;case 7:c=o.ops.pop();o.trys.pop();continue;default:if(!(s=o.trys,s=s.length>0&&s[s.length-1])&&(c[0]===6||c[0]===2)){o=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]<s[3])){o.label=c[1];break}if(c[0]===6&&o.label<s[1]){o.label=s[1];s=c;break}if(s&&o.label<s[2]){o.label=s[2];o.ops.push(c);break}if(s[2])o.ops.pop();o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e];r=0}finally{n=s=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:true}}}var h=Object.create;var g=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var m=Object.getPrototypeOf,b=Object.prototype.hasOwnProperty;var S=function(e,t,n,r){var s=true,c=false,o=undefined;if(t&&(typeof t==="undefined"?"undefined":f(t))=="object"||typeof t=="function")try{var a=function(){var s=u.value;!b.call(e,s)&&s!==n&&g(e,s,{get:function(){return t[s]},enumerable:!(r=y(t,s))||r.enumerable})};for(var i=v(t)[Symbol.iterator](),u;!(s=(u=i.next()).done);s=true)a()}catch(e){c=true;o=e}finally{try{if(!s&&i.return!=null){i.return()}}finally{if(c){throw o}}}return e};var w=function(e,t,n){return n=e!=null?h(m(e)):{},S(t||!e||!e.__esModule?g(n,"default",{value:e,enumerable:!0}):n,e)};var _=function(){return(typeof document==="undefined"?"undefined":f(document))>"u"?new URL("file:".concat(__filename)).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href},O=_();var T=w(require("fs"),1),I=w(require("path"),1),E=w(require("process"),1),k=require("yargs/helpers"),j=w(require("yargs/yargs"),1);var P=require("path"),A=w(require("process"),1),x=require("url"),N=(0,x.fileURLToPath)(O),C=(0,P.dirname)(N),G=A.default.env.INIT_CWD||A.default.cwd();var M=w(require("boxen"),1),R=w(require("chalk"),1);var F=R.default,H=F.green,L=F.yellow,q=F.red,U=F.gray,D=F.bold,K=F.blue,J={step:function(e,t,n){var r=new Date().toLocaleTimeString(),s=e!==null&&t!==null?"STEP [".concat(e,"/").concat(t,"]"):"STEP";console.log("".concat(H(s)," ").concat(U("[".concat(r,"]"))," ").concat(D(n)))},success:function(e){console.log("".concat(H("✔ SUCCESS")," ").concat(e))},error:function(e){console.log("".concat(q("✖ ERROR")," ").concat(e))},warning:function(e){console.log("".concat(L("⚠ WARNING")," ").concat(e))},info:function(e){console.log("".concat(U("ℹ INFO")," ").concat(e))},boxedResult:function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:H;console.log((0,M.default)(D(n("".concat(e,"\n").concat(t))),{padding:1,margin:1,borderStyle:"round",borderColor:n===q?"red":n===L?"yellow":"green"}))},logResults:function(e,t,n,r){e.length&&(e.forEach(function(e){var r=e.file,s=e.position,c=e.rule,o=e.message;console.log("".concat(t("".concat(n," File:"))," ").concat(K("".concat(r).concat(s?":".concat(s):"")))),c&&console.log(" ".concat(t("Rule:")," ").concat(t(c))),console.log(" ".concat(t("Message:")," ").concat(t(o)))}),console.log((0,M.default)(D(t("".concat(n," Total ").concat(r,": ").concat(e.length))),{padding:1,margin:1,borderStyle:"round",borderColor:t===q?"red":t===L?"yellow":"green"})),console.log(U("─".repeat(40))))},displayResults:/*#__PURE__*/r(function(){var e,t,n;return d(this,function(r){switch(r.label){case 0:return[4,es()];case 1:e=r.sent(),t=e.filter(function(e){return e.type==="error"}),n=e.filter(function(e){return e.type==="warning"});!t.length&&!n.length?J.boxedResult("✔ NO ISSUES FOUND","",H):(J.logResults(n,L,"⚠","Warnings"),J.logResults(t,q,"✖","Errors"));return[2]}})})};var W=w(require("localforage"),1),B=w(require("node-persist"),1),Y=w(require("os"),1),$=w(require("path"),1),z=w(require("process"),1),Q=(typeof window==="undefined"?"undefined":f(window))<"u",V=z.default.env.CYBERSKILL_STORAGE_DIR||$.default.join(Y.default.homedir(),".cyberskill-storage");function X(){return Z.apply(this,arguments)}function Z(){Z=r(function(){var e;return d(this,function(t){switch(t.label){case 0:e=!Q&&!B.default.defaultInstance;if(!e)return[3,2];return[4,B.default.init({dir:V,stringify:JSON.stringify,parse:JSON.parse,encoding:"utf8",logging:!1,forgiveParseErrors:!0})];case 1:e=t.sent();t.label=2;case 2:e;return[2]}})});return Z.apply(this,arguments)}var ee={get:function e(e){return r(function(){var t,n,r;return d(this,function(s){switch(s.label){case 0:s.trys.push([0,6,,7]);if(!Q)return[3,2];return[4,W.default.getItem(e)];case 1:n=s.sent();return[3,5];case 2:return[4,X()];case 3:s.sent();return[4,B.default.getItem(e)];case 4:n=(t=s.sent())!==null&&t!==void 0?t:null;s.label=5;case 5:return[2,n];case 6:r=s.sent();return[2,(console.error('❌ [Storage:get] Error getting key "'.concat(e,'":'),r),null)];case 7:return[2]}})})()},set:function e(e,t){return r(function(){var n,r;return d(this,function(s){switch(s.label){case 0:s.trys.push([0,6,,7]);if(!Q)return[3,2];return[4,W.default.setItem(e,t)];case 1:n=s.sent();return[3,5];case 2:return[4,X()];case 3:s.sent();return[4,B.default.setItem(e,t)];case 4:n=s.sent();s.label=5;case 5:n;return[3,7];case 6:r=s.sent();console.error('❌ [Storage:set] Error setting key "'.concat(e,'":'),r);return[3,7];case 7:return[2]}})})()},remove:function e(e){return r(function(){var t,n;return d(this,function(r){switch(r.label){case 0:r.trys.push([0,6,,7]);if(!Q)return[3,2];return[4,W.default.removeItem(e)];case 1:t=r.sent();return[3,5];case 2:return[4,X()];case 3:r.sent();return[4,B.default.removeItem(e)];case 4:t=r.sent();r.label=5;case 5:t;return[3,7];case 6:n=r.sent();console.error('❌ [Storage:remove] Error removing key "'.concat(e,'":'),n);return[3,7];case 7:return[2]}})})()},keys:function e(){return r(function(){var e,t,n;return d(this,function(r){switch(r.label){case 0:r.trys.push([0,5,,6]);if(!Q)return[3,2];return[4,W.default.keys()];case 1:return[2,(e=r.sent())!==null&&e!==void 0?e:[]];case 2:return[4,X()];case 3:r.sent();return[4,B.default.keys()];case 4:t=r.sent();return[2,Array.isArray(t)?t:(console.warn("⚠️ [Storage:keys] Invalid keys response:",t),[])];case 5:n=r.sent();return[2,(console.error("❌ [Storage:keys] Error getting keys:",n),[])];case 6:return[2]}})})()},getLogLink:function e(e){return r(function(){return d(this,function(t){try{return[2,"".concat(V," (key: ").concat(e,")")]}catch(e){return[2,(console.error("❌ [Storage:getLogLink] Error getting log link:",e),null)]}return[2]})})()}};var et=function(e){return"error_list:".concat(e)};function en(e){return er.apply(this,arguments)}function er(){er=r(function(e){var t,n,s;return d(this,function(c){switch(c.label){case 0:if(!e.length)return[2];t=Date.now(),n=et(t);c.label=1;case 1:c.trys.push([1,3,,4]);return[4,ee.set(n,{errors:e,timestamp:t})];case 2:c.sent(),setTimeout(/*#__PURE__*/r(function(){var e;return d(this,function(t){switch(t.label){case 0:return[4,ee.getLogLink(n)];case 1:e=t.sent();e&&J.info("\uD83D\uDCC2 Open the error list manually: ".concat(e));return[2]}})}),10);return[3,4];case 3:s=c.sent();J.error("Failed to save errors: ".concat(s.message));return[3,4];case 4:return[2]}})});return er.apply(this,arguments)}function es(){return ec.apply(this,arguments)}function ec(){ec=r(function(){var e,t,n,r,s,c,o,a,i,u,f,p,h;return d(this,function(d){switch(d.label){case 0:d.trys.push([0,10,,11]);return[4,ee.keys()];case 1:e=d.sent();if(!Array.isArray(e))return[2,(J.warning("Invalid response from storage.keys(): ".concat(e)),[])];t=e.filter(function(e){var t;return e===null||e===void 0?void 0:(t=e.startsWith)===null||t===void 0?void 0:t.call(e,"error_list:")}),n=[];r=true,s=false,c=undefined;d.label=2;case 2:d.trys.push([2,7,8,9]);o=t[Symbol.iterator]();d.label=3;case 3:if(!!(r=(a=o.next()).done))return[3,6];i=a.value;return[4,ee.get(i)];case 4:f=d.sent();f&&(u=n).push.apply(u,l(f.errors));d.label=5;case 5:r=true;return[3,3];case 6:return[3,9];case 7:p=d.sent();s=true;c=p;return[3,9];case 8:try{if(!r&&o.return!=null){o.return()}}finally{if(s){throw c}}return[7];case 9:return[2,n];case 10:h=d.sent();return[2,(J.error("Failed to retrieve stored errors: ".concat(h.message)),[])];case 11:return[2]}})});return ec.apply(this,arguments)}function eo(){return ea.apply(this,arguments)}function ea(){ea=r(function(){var e,t,n,r,s,c,o,a,i,u;return d(this,function(l){switch(l.label){case 0:l.trys.push([0,10,,11]);return[4,ee.keys()];case 1:e=l.sent();if(!Array.isArray(e)){J.warning("Invalid response from storage.keys(): ".concat(e));return[2]}t=e.filter(function(e){var t;return e===null||e===void 0?void 0:(t=e.startsWith)===null||t===void 0?void 0:t.call(e,"error_list:")});n=true,r=false,s=undefined;l.label=2;case 2:l.trys.push([2,7,8,9]);c=t[Symbol.iterator]();l.label=3;case 3:if(!!(n=(o=c.next()).done))return[3,6];a=o.value;return[4,ee.remove(a)];case 4:l.sent();l.label=5;case 5:n=true;return[3,3];case 6:return[3,9];case 7:i=l.sent();r=true;s=i;return[3,9];case 8:try{if(!n&&c.return!=null){c.return()}}finally{if(r){throw s}}return[7];case 9:return[3,11];case 10:u=l.sent();J.error("Failed to clear error lists: ".concat(u.message));return[3,11];case 11:return[2]}})});return ea.apply(this,arguments)}var ei=require("child_process"),eu=w(require("process"),1),el=w(require("util"),1);var ef=el.promisify(ei.exec),ep=eu.default.env.DEBUG==="true",ed=/^\s*(\d+):(\d+)\s+(error|warning)\s+(.+?)\s+(\S+)$/,eh=/^(.+?)\((\d+),(\d+)\):\s+(error|warning)\s+TS\d+:\s+(\S.+)$/,eg=/^✖\s+(.*?)\s+\[(.*?)\]$/;function ey(e){var t=[],n=[],r="";e.split("\n").forEach(function(e){if(e.startsWith("/"))r=e.trim();else{var s=ed.exec(e)||[],c=eh.exec(e)||[],o=eg.exec(e)||[];s.length&&r?t.push({file:r,position:"".concat(s[1],":").concat(s[2]),type:s[3]==="error"?"error":"warning",message:s[4].trim(),rule:s[5].trim()}):c.length?t.push({file:c[1],position:"".concat(c[2],":").concat(c[3]),type:c[4]==="error"?"error":"warning",message:c[5].trim()}):o.length?t.push({file:"commitlint",type:"error",message:o[1].trim(),rule:o[2].trim()}):n.push(e.trim())}}),t.length&&en(t),n.length&&ep&&(J.warning("Unmatched lines:"),n.forEach(function(e){return console.log(" ".concat(e))}))}function ev(e){try{var t=JSON.parse(e),n=[];t.forEach(function(e){var t=e.filePath,r=e.messages;r.forEach(function(e){var r=e.severity,s=e.line,c=e.column,o=e.ruleId,a=e.message;n.push({type:r===2?"error":"warning",file:t,position:"".concat(s,":").concat(c),rule:o,message:a})})}),n.length&&en(n)}catch(t){ey(e)}}function em(e){return eb.apply(this,arguments)}function eb(){eb=r(function(e){var t,n,r,s,c,o,a,i,u;var l=arguments;return d(this,function(f){switch(f.label){case 0:t=l.length>1&&l[1]!==void 0?l[1]:ev;n=new AbortController;eu.default.on("SIGINT",function(){J.warning("Process interrupted. Terminating..."),n.abort(),eu.default.exit()});f.label=1;case 1:f.trys.push([1,3,,4]);return[4,ef(e,{maxBuffer:0x6400000,signal:n.signal})];case 2:r=f.sent(),s=r.stdout,c=r.stderr;[s,c].forEach(function(e){return e&&t(e)});return[3,4];case 3:o=f.sent();a=o.stdout,i=o.stderr,u=o.message;[a,i].forEach(function(e){return e&&t(e)}),!i&&!a&&J.error("Command failed: ".concat(u));return[3,4];case 4:return[2]}})});return eb.apply(this,arguments)}var eS=w(require("node-fetch"),1),ew=w(require("fs"),1),e_=w(require("path"),1);var eO=24*60*60*1e3;function eT(e){return e?e_.default.join(G,"node_modules",e,"package.json"):e_.default.join(G,"package.json")}function eI(e){return eE.apply(this,arguments)}function eE(){eE=r(function(e){var t,n,r,s,c,o,a,i,u,l;var f=arguments;return d(this,function(p){switch(p.label){case 0:t=f.length>1&&f[1]!==void 0?f[1]:!1;n="npm_version:".concat(e),r="npm_metadata:".concat(e);return[4,ee.get(n)];case 1:s=p.sent();return[4,ee.get(r)];case 2:c=p.sent(),o=s&&Date.now()-s.timestamp<eO;if(!t&&o)return[2,(J.info("Using cached version for ".concat(e,": ").concat(s.version)),s.version)];a={};(c===null||c===void 0?void 0:c.etag)&&(a["If-None-Match"]=c.etag),(c===null||c===void 0?void 0:c.lastModified)&&(a["If-Modified-Since"]=c.lastModified);p.label=3;case 3:p.trys.push([3,8,,9]);J.info("Fetching latest version for ".concat(e,"..."));return[4,(0,eS.default)("https://registry.npmjs.org/".concat(e,"/latest"),{headers:a})];case 4:i=p.sent();if(i.status===304&&s)return[2,(J.info("Cache is still valid for ".concat(e,": ").concat(s.version)),s.version)];if(!i.ok)throw new Error("Failed to fetch latest version: ".concat(i.statusText));return[4,i.json()];case 5:u=p.sent().version;return[4,ee.set(n,{version:u,timestamp:Date.now()})];case 6:p.sent();return[4,ee.set(r,{etag:i.headers.get("ETag")||void 0,lastModified:i.headers.get("Last-Modified")||void 0})];case 7:return[2,(p.sent(),J.success("Cached latest version for ".concat(e,": ").concat(u)),u)];case 8:l=p.sent();if(J.error("Error fetching latest version for ".concat(e,": ").concat(l.message)),s)return[2,(J.warning("Falling back to cached version for ".concat(e,": ").concat(s.version)),s.version)];throw l;case 9:return[2]}})});return eE.apply(this,arguments)}function ek(e){return ej.apply(this,arguments)}function ej(){ej=r(function(e){var t,n,r,s,c;var o=arguments;return d(this,function(a){switch(a.label){case 0:t=o.length>1&&o[1]!==void 0?o[1]:!0;a.label=1;case 1:a.trys.push([1,3,,4]);n=eT(e);if(!ew.default.existsSync(n))return[2,(J.info("".concat(e," is not installed.")),!0)];r=JSON.parse(ew.default.readFileSync(n,"utf-8")).version;return[4,eI(e,t)];case 2:s=a.sent();return[2,(J.info("Installed version of ".concat(e,": ").concat(r)),J.info("Latest version of ".concat(e,": ").concat(s)),r!==s)];case 3:c=a.sent();return[2,(J.warning("Failed to check version for ".concat(e,": ").concat(c.message)),!0)];case 4:return[2]}})});return ej.apply(this,arguments)}function eP(e){return eA.apply(this,arguments)}function eA(){eA=r(function(e){var t,n,r,c;return d(this,function(o){switch(o.label){case 0:o.trys.push([0,4,,5]);return[4,eI(e,!0)];case 1:t=o.sent(),n=eT();if(!ew.default.existsSync(n)){J.error("package.json not found. Cannot update ".concat(e));return[2]}r=JSON.parse(ew.default.readFileSync(n,"utf-8"));r.dependencies=u(a({},r.dependencies),s({},e,t)),ew.default.writeFileSync(n,JSON.stringify(r,null,2)),J.info("Updated ".concat(e," to version ").concat(t));return[4,em("npm i -f")];case 2:o.sent();return[4,em("npm run lint:fix")];case 3:o.sent(),J.success("".concat(e," updated successfully."));return[3,5];case 4:c=o.sent();throw J.error("Failed to update ".concat(e,": ").concat(c.message)),c;case 5:return[2]}})});return eA.apply(this,arguments)}function ex(e,t){try{var n=e_.default.join(e,"package.json");return ew.default.existsSync(n)?JSON.parse(ew.default.readFileSync(n,"utf-8")).name===t:!1}catch(e){return J.error("Error reading package.json: ".concat(e.message)),!1}}var eN={TS_CONFIG_PATH:I.join(G,"tsconfig.json"),HUSKY_PATH:I.join(G,".husky"),GIT_HOOK_PATH:I.join(G,".git","hooks"),GIT_COMMIT_MSG:I.join(G,".git","COMMIT_EDITMSG"),SIMPLE_GIT_HOOKS_PATH:I.join(G,".simple-git-hooks.json"),PACKAGE_NAME:"@cyberskill/shared",LINT_STAGED_CONFIG_PATH:I.resolve(C,"./configs/lint-staged/base.js"),COMMITLINT_CONFIG_PATH:I.resolve(C,"./configs/commitlint/base.js"),UNIT_TEST_CONFIG_PATH:I.resolve(C,"./configs/vitest/react/unit.js"),E2E_TEST_CONFIG_PATH:I.resolve(C,"./configs/vitest/react/e2e.js")},eC=function(e){return T.existsSync(e)},eG=0,eM=1;function eR(e){eM=Math.max(1,e),eG=0}function eF(e){eG=Math.min(eG+1,eM),J.step(eG,eM,e)}function eH(){return eL.apply(this,arguments)}function eL(){eL=r(function(){var e;return d(this,function(t){switch(t.label){case 0:eF("Starting TypeScript check");if(!eC(eN.TS_CONFIG_PATH))return[3,2];return[4,em("npx tsc -p ".concat(eN.TS_CONFIG_PATH," --noEmit"))];case 1:e=t.sent();return[3,3];case 2:e=J.warning("tsconfig.json file not found. Skipping TypeScript check.");t.label=3;case 3:e;return[2]}})});return eL.apply(this,arguments)}function eq(){return eU.apply(this,arguments)}function eU(){eU=r(function(){var e,t;var n=arguments;return d(this,function(r){switch(r.label){case 0:e=n.length>0&&n[0]!==void 0?n[0]:!1;eF("Starting ESLint ".concat(e?"fix":"check"));t="npx eslint ".concat(G).concat(e?" --fix":"");return[4,em(t)];case 1:r.sent();return[2]}})});return eU.apply(this,arguments)}function eD(){return eK.apply(this,arguments)}function eK(){eK=r(function(){return d(this,function(e){switch(e.label){case 0:eR(1),eF("Starting lint-staged process");return[4,em("npx lint-staged --config ".concat(eN.LINT_STAGED_CONFIG_PATH))];case 1:e.sent();return[2]}})});return eK.apply(this,arguments)}function eJ(){return eW.apply(this,arguments)}function eW(){eW=r(function(){return d(this,function(e){switch(e.label){case 0:eR(1),eF("Inspecting lint rules");return[4,em("npx @eslint/config-inspector")];case 1:e.sent();return[2]}})});return eW.apply(this,arguments)}function eB(){return eY.apply(this,arguments)}function eY(){eY=r(function(){return d(this,function(e){switch(e.label){case 0:eR(2);return[4,eo()];case 1:e.sent();return[4,eH()];case 2:e.sent();return[4,eq()];case 3:e.sent();return[4,J.displayResults()];case 4:e.sent();return[2]}})});return eY.apply(this,arguments)}function e$(){return ez.apply(this,arguments)}function ez(){ez=r(function(){return d(this,function(e){switch(e.label){case 0:eF("Running commit lint");return[4,em("npx --no -- commitlint --edit ".concat(eN.GIT_COMMIT_MSG," --config ").concat(eN.COMMITLINT_CONFIG_PATH))];case 1:e.sent();return[2]}})});return ez.apply(this,arguments)}function eQ(){return eV.apply(this,arguments)}function eV(){eV=r(function(){var e,t;return d(this,function(n){switch(n.label){case 0:eR(2),eF("Setting up Git hooks");e=eC(eN.HUSKY_PATH);if(!e)return[3,2];return[4,em("npx rimraf ".concat(eN.HUSKY_PATH," ").concat(eN.GIT_HOOK_PATH," && git config core.hooksPath ").concat(eN.GIT_HOOK_PATH))];case 1:e=n.sent();n.label=2;case 2:e;t={"pre-commit":ex(G,eN.PACKAGE_NAME)?'bash -c "npm run build && npx --yes cyberskill lint-staged"':"npx --yes cyberskill lint-staged","commit-msg":"npx --yes cyberskill commitlint"};T.writeFileSync(eN.SIMPLE_GIT_HOOKS_PATH,JSON.stringify(t,null,4));return[4,em("npx simple-git-hooks")];case 3:n.sent(),J.success("Git hooks configured successfully."),T.unlinkSync(eN.SIMPLE_GIT_HOOKS_PATH);return[2]}})});return eV.apply(this,arguments)}function eX(){return eZ.apply(this,arguments)}function eZ(){eZ=r(function(){var e,t,n,r,s,c,o;return d(this,function(a){switch(a.label){case 0:eR(2),eF("Starting project setup");e=I.join(G,"package.json");a.label=1;case 1:a.trys.push([1,10,,11]);if(!eC(e)){J.error("package.json not found. Setup aborted.");return[2]}n=JSON.parse(T.readFileSync(e,"utf-8"));if(!ex(G,eN.PACKAGE_NAME))return[3,2];r=J.success("Cyberskill is already installed.");return[3,8];case 2:c=!((t=n.dependencies)===null||t===void 0?void 0:t[eN.PACKAGE_NAME]);if(c)return[3,4];return[4,ek(eN.PACKAGE_NAME)];case 3:c=a.sent();a.label=4;case 4:if(!c)return[3,6];J.info("Updating Cyberskill package...");return[4,eP(eN.PACKAGE_NAME)];case 5:s=a.sent();return[3,7];case 6:s=J.success("Cyberskill is up to date.");a.label=7;case 7:r=s;a.label=8;case 8:r;return[4,eQ()];case 9:a.sent();return[3,11];case 10:o=a.sent();throw J.error("Error reading package.json: ".concat(o.message)),o;case 11:return[2]}})});return eZ.apply(this,arguments)}function e1(){return e0.apply(this,arguments)}function e0(){e0=r(function(){return d(this,function(e){switch(e.label){case 0:eR(1),eF("Running unit tests");return[4,em("npx vitest --config ".concat(eN.UNIT_TEST_CONFIG_PATH))];case 1:e.sent();return[2]}})});return e0.apply(this,arguments)}function e2(){return e4.apply(this,arguments)}function e4(){e4=r(function(){return d(this,function(e){switch(e.label){case 0:eR(1),eF("Running e2e tests");return[4,em("npx vitest --config ".concat(eN.E2E_TEST_CONFIG_PATH))];case 1:e.sent();return[2]}})});return e4.apply(this,arguments)}(0,j.default)((0,k.hideBin)(E.default.argv)).command("lint","Run linting checks",eB).command("lint:fix","Fix linting issues",function(){return eq(!0)}).command("lint:inspect","Inspect linting rules",eJ).command("lint-staged","Run lint-staged",eD).command("commitlint","Run commitlint",e$).command("setup","Run project setup",eX).command("reset","Reset project dependencies",/*#__PURE__*/r(function(){return d(this,function(e){switch(e.label){case 0:eR(1),eF("Starting project reset");return[4,em("npx rimraf ".concat(G,"/node_modules ").concat(G,"/package-lock.json"))];case 1:e.sent();return[4,em("npm i -f")];case 2:e.sent();return[4,eQ()];case 3:e.sent();return[2]}})})).command("test:unit","Run unit tests",e1).command("test:e2e","Run e2e tests",e2).help().parse();
package/dist/commands.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- function e(e,n){if(n==null||n>e.length)n=e.length;for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function n(n){if(Array.isArray(n))return e(n)}function t(e,n,t,r,o,s,c){try{var i=e[s](c);var a=i.value}catch(e){t(e);return}if(i.done){n(a)}else{Promise.resolve(a).then(r,o)}}function r(e){return function(){var n=this,r=arguments;return new Promise(function(o,s){var c=e.apply(n,r);function i(e){t(c,o,s,i,a,"next",e)}function a(e){t(c,o,s,i,a,"throw",e)}i(undefined)})}}function o(e,n,t){if(n in e){Object.defineProperty(e,n,{value:t,enumerable:true,configurable:true,writable:true})}else{e[n]=t}return e}function s(e){if(typeof Symbol!=="undefined"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function c(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function i(e){for(var n=1;n<arguments.length;n++){var t=arguments[n]!=null?arguments[n]:{};var r=Object.keys(t);if(typeof Object.getOwnPropertySymbols==="function"){r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))}r.forEach(function(n){o(e,n,t[n])})}return e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);if(n){r=r.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})}t.push.apply(t,r)}return t}function u(e,n){n=n!=null?n:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(e,Object.getOwnPropertyDescriptors(n))}else{a(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function l(e){return n(e)||s(e)||p(e)||c()}function f(e){"@swc/helpers - typeof";return e&&typeof Symbol!=="undefined"&&e.constructor===Symbol?"symbol":typeof e}function p(n,t){if(!n)return;if(typeof n==="string")return e(n,t);var r=Object.prototype.toString.call(n).slice(8,-1);if(r==="Object"&&n.constructor)r=n.constructor.name;if(r==="Map"||r==="Set")return Array.from(r);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return e(n,t)}function h(e,n){var t,r,o,s,c={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]};return s={next:i(0),"throw":i(1),"return":i(2)},typeof Symbol==="function"&&(s[Symbol.iterator]=function(){return this}),s;function i(e){return function(n){return a([e,n])}}function a(s){if(t)throw new TypeError("Generator is already executing.");while(c)try{if(t=1,r&&(o=s[0]&2?r["return"]:s[0]?r["throw"]||((o=r["return"])&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;if(r=0,o)s=[s[0]&2,o.value];switch(s[0]){case 0:case 1:o=s;break;case 4:c.label++;return{value:s[1],done:false};case 5:c.label++;r=s[1];s=[0];continue;case 7:s=c.ops.pop();c.trys.pop();continue;default:if(!(o=c.trys,o=o.length>0&&o[o.length-1])&&(s[0]===6||s[0]===2)){c=0;continue}if(s[0]===3&&(!o||s[1]>o[0]&&s[1]<o[3])){c.label=s[1];break}if(s[0]===6&&c.label<o[1]){c.label=o[1];o=s;break}if(o&&c.label<o[2]){c.label=o[2];c.ops.push(s);break}if(o[2])c.ops.pop();c.trys.pop();continue}s=n.call(e,c)}catch(e){s=[6,e];r=0}finally{t=o=0}if(s[0]&5)throw s[1];return{value:s[0]?s[1]:void 0,done:true}}}import*as g from"node:fs";import*as d from"node:path";import y from"node:process";import{hideBin as m}from"yargs/helpers";import v from"yargs/yargs";import{dirname as b}from"node:path";import S from"node:process";import{fileURLToPath as w}from"node:url";var _=w(import.meta.url),O=b(_),T=S.env.INIT_CWD||S.cwd();import I from"boxen";import k from"chalk";var E=k.green,A=k.yellow,P=k.red,j=k.gray,N=k.bold,x=k.blue,C={step:function(e,n,t){var r=new Date().toLocaleTimeString(),o=e!==null&&n!==null?"STEP [".concat(e,"/").concat(n,"]"):"STEP";console.log("".concat(E(o)," ").concat(j("[".concat(r,"]"))," ").concat(N(t)))},success:function(e){console.log("".concat(E("✔ SUCCESS")," ").concat(e))},error:function(e){console.log("".concat(P("✖ ERROR")," ").concat(e))},warning:function(e){console.log("".concat(A("⚠ WARNING")," ").concat(e))},info:function(e){console.log("".concat(j("ℹ INFO")," ").concat(e))},boxedResult:function(e,n){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:E;console.log(I(N(t("".concat(e,"\n").concat(n))),{padding:1,margin:1,borderStyle:"round",borderColor:t===P?"red":t===A?"yellow":"green"}))},logResults:function(e,n,t,r){e.length&&(e.forEach(function(e){var r=e.file,o=e.position,s=e.rule,c=e.message;console.log("".concat(n("".concat(t," File:"))," ").concat(x("".concat(r).concat(o?":".concat(o):"")))),s&&console.log(" ".concat(n("Rule:")," ").concat(n(s))),console.log(" ".concat(n("Message:")," ").concat(n(c)))}),console.log(I(N(n("".concat(t," Total ").concat(r,": ").concat(e.length))),{padding:1,margin:1,borderStyle:"round",borderColor:n===P?"red":n===A?"yellow":"green"})),console.log(j("─".repeat(40))))},displayResults:/*#__PURE__*/r(function(){var e,n,t;return h(this,function(r){switch(r.label){case 0:return[4,$()];case 1:e=r.sent(),n=e.filter(function(e){return e.type==="error"}),t=e.filter(function(e){return e.type==="warning"});!n.length&&!t.length?C.boxedResult("✔ NO ISSUES FOUND","",E):(C.logResults(t,A,"⚠","Warnings"),C.logResults(n,P,"✖","Errors"));return[2]}})})};import G from"localforage";import M from"node-persist";import F from"node:os";import H from"node:path";import R from"node:process";var L=(typeof window==="undefined"?"undefined":f(window))<"u",U=R.env.CYBERSKILL_STORAGE_DIR||H.join(F.homedir(),".cyberskill-storage");function D(){return K.apply(this,arguments)}function K(){K=r(function(){var e;return h(this,function(n){switch(n.label){case 0:e=!L&&!M.defaultInstance;if(!e)return[3,2];return[4,M.init({dir:U,stringify:JSON.stringify,parse:JSON.parse,encoding:"utf8",logging:!1,forgiveParseErrors:!0})];case 1:e=n.sent();n.label=2;case 2:e;return[2]}})});return K.apply(this,arguments)}var J={get:function e(e){return r(function(){var n,t,r;return h(this,function(o){switch(o.label){case 0:o.trys.push([0,6,,7]);if(!L)return[3,2];return[4,G.getItem(e)];case 1:t=o.sent();return[3,5];case 2:return[4,D()];case 3:o.sent();return[4,M.getItem(e)];case 4:t=(n=o.sent())!==null&&n!==void 0?n:null;o.label=5;case 5:return[2,t];case 6:r=o.sent();return[2,(console.error('❌ [Storage:get] Error getting key "'.concat(e,'":'),r),null)];case 7:return[2]}})})()},set:function e(e,n){return r(function(){var t,r;return h(this,function(o){switch(o.label){case 0:o.trys.push([0,6,,7]);if(!L)return[3,2];return[4,G.setItem(e,n)];case 1:t=o.sent();return[3,5];case 2:return[4,D()];case 3:o.sent();return[4,M.setItem(e,n)];case 4:t=o.sent();o.label=5;case 5:t;return[3,7];case 6:r=o.sent();console.error('❌ [Storage:set] Error setting key "'.concat(e,'":'),r);return[3,7];case 7:return[2]}})})()},remove:function e(e){return r(function(){var n,t;return h(this,function(r){switch(r.label){case 0:r.trys.push([0,6,,7]);if(!L)return[3,2];return[4,G.removeItem(e)];case 1:n=r.sent();return[3,5];case 2:return[4,D()];case 3:r.sent();return[4,M.removeItem(e)];case 4:n=r.sent();r.label=5;case 5:n;return[3,7];case 6:t=r.sent();console.error('❌ [Storage:remove] Error removing key "'.concat(e,'":'),t);return[3,7];case 7:return[2]}})})()},keys:function e(){return r(function(){var e,n,t;return h(this,function(r){switch(r.label){case 0:r.trys.push([0,5,,6]);if(!L)return[3,2];return[4,G.keys()];case 1:return[2,(e=r.sent())!==null&&e!==void 0?e:[]];case 2:return[4,D()];case 3:r.sent();return[4,M.keys()];case 4:n=r.sent();return[2,Array.isArray(n)?n:(console.warn("⚠️ [Storage:keys] Invalid keys response:",n),[])];case 5:t=r.sent();return[2,(console.error("❌ [Storage:keys] Error getting keys:",t),[])];case 6:return[2]}})})()},getLogLink:function e(e){return r(function(){return h(this,function(n){try{return[2,"".concat(U," (key: ").concat(e,")")]}catch(e){return[2,(console.error("❌ [Storage:getLogLink] Error getting log link:",e),null)]}return[2]})})()}};var W=function(e){return"error_list:".concat(e)};function B(e){return Y.apply(this,arguments)}function Y(){Y=r(function(e){var n,t,r,o;return h(this,function(s){switch(s.label){case 0:if(!e.length)return[2];n=Date.now(),t=W(n);s.label=1;case 1:s.trys.push([1,4,,5]);return[4,J.set(t,{errors:e,timestamp:n})];case 2:s.sent();return[4,J.getLogLink(t)];case 3:r=s.sent();r&&C.info("Open the error list manually: ".concat(r));return[3,5];case 4:o=s.sent();C.error("Failed to save errors: ".concat(o.message));return[3,5];case 5:return[2]}})});return Y.apply(this,arguments)}function $(){return q.apply(this,arguments)}function q(){q=r(function(){var e,n,t,r,o,s,c,i,a,u,f,p,g;return h(this,function(h){switch(h.label){case 0:h.trys.push([0,10,,11]);return[4,J.keys()];case 1:e=h.sent();if(!Array.isArray(e))return[2,(C.warning("Invalid response from storage.keys(): ".concat(e)),[])];n=e.filter(function(e){var n;return e===null||e===void 0?void 0:(n=e.startsWith)===null||n===void 0?void 0:n.call(e,"error_list:")}),t=[];r=true,o=false,s=undefined;h.label=2;case 2:h.trys.push([2,7,8,9]);c=n[Symbol.iterator]();h.label=3;case 3:if(!!(r=(i=c.next()).done))return[3,6];a=i.value;return[4,J.get(a)];case 4:f=h.sent();f&&(u=t).push.apply(u,l(f.errors));h.label=5;case 5:r=true;return[3,3];case 6:return[3,9];case 7:p=h.sent();o=true;s=p;return[3,9];case 8:try{if(!r&&c.return!=null){c.return()}}finally{if(o){throw s}}return[7];case 9:return[2,t];case 10:g=h.sent();return[2,(C.error("Failed to retrieve stored errors: ".concat(g.message)),[])];case 11:return[2]}})});return q.apply(this,arguments)}function z(){return Q.apply(this,arguments)}function Q(){Q=r(function(){var e,n,t,r,o,s,c,i,a,u;return h(this,function(l){switch(l.label){case 0:l.trys.push([0,10,,11]);return[4,J.keys()];case 1:e=l.sent();if(!Array.isArray(e)){C.warning("Invalid response from storage.keys(): ".concat(e));return[2]}n=e.filter(function(e){var n;return e===null||e===void 0?void 0:(n=e.startsWith)===null||n===void 0?void 0:n.call(e,"error_list:")});t=true,r=false,o=undefined;l.label=2;case 2:l.trys.push([2,7,8,9]);s=n[Symbol.iterator]();l.label=3;case 3:if(!!(t=(c=s.next()).done))return[3,6];i=c.value;return[4,J.remove(i)];case 4:l.sent(),C.success("Removed error list: ".concat(i));l.label=5;case 5:t=true;return[3,3];case 6:return[3,9];case 7:a=l.sent();r=true;o=a;return[3,9];case 8:try{if(!t&&s.return!=null){s.return()}}finally{if(r){throw o}}return[7];case 9:return[3,11];case 10:u=l.sent();C.error("Failed to clear error lists: ".concat(u.message));return[3,11];case 11:return[2]}})});return Q.apply(this,arguments)}import{exec as V}from"node:child_process";import X from"node:process";import*as Z from"node:util";var ee=Z.promisify(V),en=X.env.DEBUG==="true",et=/^\s*(\d+):(\d+)\s+(error|warning)\s+(\S+)\s+(\S+)$/,er=/^(.+?)\((\d+),(\d+)\):\s+(error|warning)\s+TS\d+:\s+(\S.+)$/,eo=/^✖\s+(.*?)\s+\[(.*?)\]$/;function es(e){var n=[],t=[],r="";e.split("\n").forEach(function(e){if(e.startsWith("/"))r=e.trim();else{var o=et.exec(e)||[],s=er.exec(e)||[],c=eo.exec(e)||[];o.length&&r?n.push({file:r,position:"".concat(o[1],":").concat(o[2]),type:o[3]==="error"?"error":"warning",message:o[4].trim(),rule:o[5].trim()}):s.length?n.push({file:s[1],position:"".concat(s[2],":").concat(s[3]),type:s[4]==="error"?"error":"warning",message:s[5].trim()}):c.length?n.push({file:"commitlint",type:"error",message:c[1].trim(),rule:c[2].trim()}):t.push(e.trim())}}),n.length&&B(n),t.length&&en&&(C.warning("Unmatched lines:"),t.forEach(function(e){return console.log(" ".concat(e))}))}function ec(e){try{var n=JSON.parse(e),t=[];n.forEach(function(e){var n=e.filePath,r=e.messages;r.forEach(function(e){var r=e.severity,o=e.line,s=e.column,c=e.ruleId,i=e.message;t.push({type:r===2?"error":"warning",file:n,position:"".concat(o,":").concat(s),rule:c,message:i})})}),t.length&&B(t)}catch(n){es(e)}}function ei(e){return ea.apply(this,arguments)}function ea(){ea=r(function(e){var n,t,r,o,s,c,i,a,u;var l=arguments;return h(this,function(f){switch(f.label){case 0:n=l.length>1&&l[1]!==void 0?l[1]:ec;t=new AbortController;X.on("SIGINT",function(){C.warning("Process interrupted. Terminating..."),t.abort(),X.exit()});f.label=1;case 1:f.trys.push([1,3,,4]);return[4,ee(e,{maxBuffer:0x6400000,signal:t.signal})];case 2:r=f.sent(),o=r.stdout,s=r.stderr;[o,s].forEach(function(e){return e&&n(e)});return[3,4];case 3:c=f.sent();i=c.stdout,a=c.stderr,u=c.message;[i,a].forEach(function(e){return e&&n(e)}),!a&&!i&&C.error("Command failed: ".concat(u));return[3,4];case 4:return[2]}})});return ea.apply(this,arguments)}import eu from"node-fetch";import el from"node:fs";import ef from"node:path";var ep=24*60*60*1e3;function eh(e){return e?ef.join(T,"node_modules",e,"package.json"):ef.join(T,"package.json")}function eg(e){return ed.apply(this,arguments)}function ed(){ed=r(function(e){var n,t,r,o,s,c,i,a,u,l;var f=arguments;return h(this,function(p){switch(p.label){case 0:n=f.length>1&&f[1]!==void 0?f[1]:!1;t="npm_version:".concat(e),r="npm_metadata:".concat(e);return[4,J.get(t)];case 1:o=p.sent();return[4,J.get(r)];case 2:s=p.sent(),c=o&&Date.now()-o.timestamp<ep;if(!n&&c)return[2,(C.info("Using cached version for ".concat(e,": ").concat(o.version)),o.version)];i={};(s===null||s===void 0?void 0:s.etag)&&(i["If-None-Match"]=s.etag),(s===null||s===void 0?void 0:s.lastModified)&&(i["If-Modified-Since"]=s.lastModified);p.label=3;case 3:p.trys.push([3,8,,9]);C.info("Fetching latest version for ".concat(e,"..."));return[4,eu("https://registry.npmjs.org/".concat(e,"/latest"),{headers:i})];case 4:a=p.sent();if(a.status===304&&o)return[2,(C.info("Cache is still valid for ".concat(e,": ").concat(o.version)),o.version)];if(!a.ok)throw new Error("Failed to fetch latest version: ".concat(a.statusText));return[4,a.json()];case 5:u=p.sent().version;return[4,J.set(t,{version:u,timestamp:Date.now()})];case 6:p.sent();return[4,J.set(r,{etag:a.headers.get("ETag")||void 0,lastModified:a.headers.get("Last-Modified")||void 0})];case 7:return[2,(p.sent(),C.success("Cached latest version for ".concat(e,": ").concat(u)),u)];case 8:l=p.sent();if(C.error("Error fetching latest version for ".concat(e,": ").concat(l.message)),o)return[2,(C.warning("Falling back to cached version for ".concat(e,": ").concat(o.version)),o.version)];throw l;case 9:return[2]}})});return ed.apply(this,arguments)}function ey(e){return em.apply(this,arguments)}function em(){em=r(function(e){var n,t,r,o,s;var c=arguments;return h(this,function(i){switch(i.label){case 0:n=c.length>1&&c[1]!==void 0?c[1]:!0;i.label=1;case 1:i.trys.push([1,3,,4]);t=eh(e);if(!el.existsSync(t))return[2,(C.info("".concat(e," is not installed.")),!0)];r=JSON.parse(el.readFileSync(t,"utf-8")).version;return[4,eg(e,n)];case 2:o=i.sent();return[2,(C.info("Installed version of ".concat(e,": ").concat(r)),C.info("Latest version of ".concat(e,": ").concat(o)),r!==o)];case 3:s=i.sent();return[2,(C.warning("Failed to check version for ".concat(e,": ").concat(s.message)),!0)];case 4:return[2]}})});return em.apply(this,arguments)}function ev(e){return eb.apply(this,arguments)}function eb(){eb=r(function(e){var n,t,r,s;return h(this,function(c){switch(c.label){case 0:c.trys.push([0,4,,5]);return[4,eg(e,!0)];case 1:n=c.sent(),t=eh();if(!el.existsSync(t)){C.error("package.json not found. Cannot update ".concat(e));return[2]}r=JSON.parse(el.readFileSync(t,"utf-8"));r.dependencies=u(i({},r.dependencies),o({},e,n)),el.writeFileSync(t,JSON.stringify(r,null,2)),C.info("Updated ".concat(e," to version ").concat(n));return[4,ei("npm i -f")];case 2:c.sent();return[4,ei("npm run lint:fix")];case 3:c.sent(),C.success("".concat(e," updated successfully."));return[3,5];case 4:s=c.sent();throw C.error("Failed to update ".concat(e,": ").concat(s.message)),s;case 5:return[2]}})});return eb.apply(this,arguments)}function eS(e,n){try{var t=ef.join(e,"package.json");return el.existsSync(t)?JSON.parse(el.readFileSync(t,"utf-8")).name===n:!1}catch(e){return C.error("Error reading package.json: ".concat(e.message)),!1}}var ew={TS_CONFIG_PATH:d.join(T,"tsconfig.json"),HUSKY_PATH:d.join(T,".husky"),GIT_HOOK_PATH:d.join(T,".git","hooks"),GIT_COMMIT_MSG:d.join(T,".git","COMMIT_EDITMSG"),SIMPLE_GIT_HOOKS_PATH:d.join(T,".simple-git-hooks.json"),PACKAGE_NAME:"@cyberskill/shared",LINT_STAGED_CONFIG_PATH:d.resolve(O,"./configs/lint-staged/base.js"),COMMITLINT_CONFIG_PATH:d.resolve(O,"./configs/commitlint/base.js"),UNIT_TEST_CONFIG_PATH:d.resolve(O,"./configs/vitest/react/unit.js"),E2E_TEST_CONFIG_PATH:d.resolve(O,"./configs/vitest/react/e2e.js")},e_=function(e){return g.existsSync(e)};function eO(){return eT.apply(this,arguments)}function eT(){eT=r(function(){var e;return h(this,function(n){switch(n.label){case 0:C.step(1,2,"Starting TypeScript check");if(!e_(ew.TS_CONFIG_PATH))return[3,2];return[4,ei("npx tsc -p ".concat(ew.TS_CONFIG_PATH," --noEmit"))];case 1:e=n.sent();return[3,3];case 2:e=C.warning("tsconfig.json file not found. Skipping TypeScript check.");n.label=3;case 3:e;return[2]}})});return eT.apply(this,arguments)}function eI(){return ek.apply(this,arguments)}function ek(){ek=r(function(){var e,n;var t=arguments;return h(this,function(r){switch(r.label){case 0:e=t.length>0&&t[0]!==void 0?t[0]:!1;C.step(2,2,"Starting ESLint ".concat(e?"fix":"check"));n="npx eslint ".concat(T).concat(e?" --fix":"");return[4,ei(n)];case 1:r.sent();return[2]}})});return ek.apply(this,arguments)}function eE(){return eA.apply(this,arguments)}function eA(){eA=r(function(){return h(this,function(e){switch(e.label){case 0:C.step(null,null,"Starting lint-staged process");return[4,ei("npx lint-staged --config ".concat(ew.LINT_STAGED_CONFIG_PATH))];case 1:e.sent();return[2]}})});return eA.apply(this,arguments)}function eP(){return ej.apply(this,arguments)}function ej(){ej=r(function(){return h(this,function(e){switch(e.label){case 0:C.step(null,null,"Inspecting lint rules");return[4,ei("npx @eslint/config-inspector")];case 1:e.sent();return[2]}})});return ej.apply(this,arguments)}function eN(){return ex.apply(this,arguments)}function ex(){ex=r(function(){return h(this,function(e){switch(e.label){case 0:C.step(null,null,"Starting full lint check");return[4,z()];case 1:e.sent();return[4,Promise.all([eO(),eI()])];case 2:e.sent();return[4,C.displayResults()];case 3:e.sent();return[2]}})});return ex.apply(this,arguments)}function eC(){return eG.apply(this,arguments)}function eG(){eG=r(function(){return h(this,function(e){switch(e.label){case 0:C.step(null,null,"Running commit lint");return[4,ei("npx --no -- commitlint --edit ".concat(ew.GIT_COMMIT_MSG," --config ").concat(ew.COMMITLINT_CONFIG_PATH))];case 1:e.sent();return[2]}})});return eG.apply(this,arguments)}function eM(){return eF.apply(this,arguments)}function eF(){eF=r(function(){var e,n;return h(this,function(t){switch(t.label){case 0:C.step(2,2,"Setting up Git hooks");e=e_(ew.HUSKY_PATH);if(!e)return[3,2];return[4,ei("npx rimraf ".concat(ew.HUSKY_PATH," ").concat(ew.GIT_HOOK_PATH," && git config core.hooksPath ").concat(ew.GIT_HOOK_PATH))];case 1:e=t.sent();t.label=2;case 2:e;n={"pre-commit":"".concat(eS(T,ew.PACKAGE_NAME)?"npm run build && ":"","npx --yes cyberskill lint-staged"),"commit-msg":"npx --yes cyberskill commitlint"};g.writeFileSync(ew.SIMPLE_GIT_HOOKS_PATH,JSON.stringify(n,null,4));return[4,ei("npx simple-git-hooks")];case 3:t.sent(),C.success("Git hooks configured successfully."),g.unlinkSync(ew.SIMPLE_GIT_HOOKS_PATH);return[2]}})});return eF.apply(this,arguments)}function eH(){return eR.apply(this,arguments)}function eR(){eR=r(function(){var e,n,t,r,o,s,c;return h(this,function(i){switch(i.label){case 0:C.step(1,2,"Starting project setup");e=d.join(T,"package.json");i.label=1;case 1:i.trys.push([1,10,,11]);if(!e_(e)){C.error("package.json not found. Setup aborted.");return[2]}t=JSON.parse(g.readFileSync(e,"utf-8"));if(!eS(T,ew.PACKAGE_NAME))return[3,2];r=C.success("Cyberskill is already installed.");return[3,8];case 2:s=!((n=t.dependencies)===null||n===void 0?void 0:n[ew.PACKAGE_NAME]);if(s)return[3,4];return[4,ey(ew.PACKAGE_NAME)];case 3:s=i.sent();i.label=4;case 4:if(!s)return[3,6];C.info("Updating Cyberskill package...");return[4,ev(ew.PACKAGE_NAME)];case 5:o=i.sent();return[3,7];case 6:o=C.success("Cyberskill is up to date.");i.label=7;case 7:r=o;i.label=8;case 8:r;return[4,eM()];case 9:i.sent();return[3,11];case 10:c=i.sent();throw C.error("Error reading package.json: ".concat(c.message)),c;case 11:return[2]}})});return eR.apply(this,arguments)}function eL(){return eU.apply(this,arguments)}function eU(){eU=r(function(){return h(this,function(e){switch(e.label){case 0:C.step(null,null,"Running unit tests");return[4,ei("npx vitest --config ".concat(ew.UNIT_TEST_CONFIG_PATH))];case 1:e.sent();return[2]}})});return eU.apply(this,arguments)}function eD(){return eK.apply(this,arguments)}function eK(){eK=r(function(){return h(this,function(e){switch(e.label){case 0:C.step(null,null,"Running e2e tests");return[4,ei("npx vitest --config ".concat(ew.E2E_TEST_CONFIG_PATH))];case 1:e.sent();return[2]}})});return eK.apply(this,arguments)}v(m(y.argv)).command("lint","Run linting checks",eN).command("lint:fix","Fix linting issues",function(){return eI(!0)}).command("lint:inspect","Inspect linting rules",eP).command("lint-staged","Run lint-staged",eE).command("commitlint","Run commitlint",eC).command("setup","Run project setup",eH).command("reset","Reset project dependencies",/*#__PURE__*/r(function(){return h(this,function(e){switch(e.label){case 0:C.step(null,null,"Starting project reset");return[4,ei("npx rimraf ".concat(T,"/node_modules ").concat(T,"/package-lock.json"))];case 1:e.sent();return[4,ei("npm install")];case 2:e.sent();return[4,eM()];case 3:e.sent();return[2]}})})).command("test:unit","Run unit tests",eL).command("test:e2e","Run e2e tests",eD).help().parse();
2
+ function e(e,t){if(t==null||t>e.length)t=e.length;for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function t(t){if(Array.isArray(t))return e(t)}function n(e,t,n,r,o,s,c){try{var i=e[s](c);var a=i.value}catch(e){n(e);return}if(i.done){t(a)}else{Promise.resolve(a).then(r,o)}}function r(e){return function(){var t=this,r=arguments;return new Promise(function(o,s){var c=e.apply(t,r);function i(e){n(c,o,s,i,a,"next",e)}function a(e){n(c,o,s,i,a,"throw",e)}i(undefined)})}}function o(e,t,n){if(t in e){Object.defineProperty(e,t,{value:n,enumerable:true,configurable:true,writable:true})}else{e[t]=n}return e}function s(e){if(typeof Symbol!=="undefined"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function c(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function i(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};var r=Object.keys(n);if(typeof Object.getOwnPropertySymbols==="function"){r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))}r.forEach(function(t){o(e,t,n[t])})}return e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);if(t){r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})}n.push.apply(n,r)}return n}function u(e,t){t=t!=null?t:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(e,Object.getOwnPropertyDescriptors(t))}else{a(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function l(e){return t(e)||s(e)||p(e)||c()}function f(e){"@swc/helpers - typeof";return e&&typeof Symbol!=="undefined"&&e.constructor===Symbol?"symbol":typeof e}function p(t,n){if(!t)return;if(typeof t==="string")return e(t,n);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor)r=t.constructor.name;if(r==="Map"||r==="Set")return Array.from(r);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return e(t,n)}function h(e,t){var n,r,o,s,c={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]};return s={next:i(0),"throw":i(1),"return":i(2)},typeof Symbol==="function"&&(s[Symbol.iterator]=function(){return this}),s;function i(e){return function(t){return a([e,t])}}function a(s){if(n)throw new TypeError("Generator is already executing.");while(c)try{if(n=1,r&&(o=s[0]&2?r["return"]:s[0]?r["throw"]||((o=r["return"])&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;if(r=0,o)s=[s[0]&2,o.value];switch(s[0]){case 0:case 1:o=s;break;case 4:c.label++;return{value:s[1],done:false};case 5:c.label++;r=s[1];s=[0];continue;case 7:s=c.ops.pop();c.trys.pop();continue;default:if(!(o=c.trys,o=o.length>0&&o[o.length-1])&&(s[0]===6||s[0]===2)){c=0;continue}if(s[0]===3&&(!o||s[1]>o[0]&&s[1]<o[3])){c.label=s[1];break}if(s[0]===6&&c.label<o[1]){c.label=o[1];o=s;break}if(o&&c.label<o[2]){c.label=o[2];c.ops.push(s);break}if(o[2])c.ops.pop();c.trys.pop();continue}s=t.call(e,c)}catch(e){s=[6,e];r=0}finally{n=o=0}if(s[0]&5)throw s[1];return{value:s[0]?s[1]:void 0,done:true}}}import*as g from"node:fs";import*as d from"node:path";import y from"node:process";import{hideBin as m}from"yargs/helpers";import v from"yargs/yargs";import{dirname as b}from"node:path";import S from"node:process";import{fileURLToPath as w}from"node:url";var _=w(import.meta.url),T=b(_),O=S.env.INIT_CWD||S.cwd();import E from"boxen";import I from"chalk";var k=I.green,A=I.yellow,P=I.red,j=I.gray,x=I.bold,N=I.blue,C={step:function(e,t,n){var r=new Date().toLocaleTimeString(),o=e!==null&&t!==null?"STEP [".concat(e,"/").concat(t,"]"):"STEP";console.log("".concat(k(o)," ").concat(j("[".concat(r,"]"))," ").concat(x(n)))},success:function(e){console.log("".concat(k("✔ SUCCESS")," ").concat(e))},error:function(e){console.log("".concat(P("✖ ERROR")," ").concat(e))},warning:function(e){console.log("".concat(A("⚠ WARNING")," ").concat(e))},info:function(e){console.log("".concat(j("ℹ INFO")," ").concat(e))},boxedResult:function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:k;console.log(E(x(n("".concat(e,"\n").concat(t))),{padding:1,margin:1,borderStyle:"round",borderColor:n===P?"red":n===A?"yellow":"green"}))},logResults:function(e,t,n,r){e.length&&(e.forEach(function(e){var r=e.file,o=e.position,s=e.rule,c=e.message;console.log("".concat(t("".concat(n," File:"))," ").concat(N("".concat(r).concat(o?":".concat(o):"")))),s&&console.log(" ".concat(t("Rule:")," ").concat(t(s))),console.log(" ".concat(t("Message:")," ").concat(t(c)))}),console.log(E(x(t("".concat(n," Total ").concat(r,": ").concat(e.length))),{padding:1,margin:1,borderStyle:"round",borderColor:t===P?"red":t===A?"yellow":"green"})),console.log(j("─".repeat(40))))},displayResults:/*#__PURE__*/r(function(){var e,t,n;return h(this,function(r){switch(r.label){case 0:return[4,$()];case 1:e=r.sent(),t=e.filter(function(e){return e.type==="error"}),n=e.filter(function(e){return e.type==="warning"});!t.length&&!n.length?C.boxedResult("✔ NO ISSUES FOUND","",k):(C.logResults(n,A,"⚠","Warnings"),C.logResults(t,P,"✖","Errors"));return[2]}})})};import G from"localforage";import M from"node-persist";import F from"node:os";import H from"node:path";import R from"node:process";var L=(typeof window==="undefined"?"undefined":f(window))<"u",U=R.env.CYBERSKILL_STORAGE_DIR||H.join(F.homedir(),".cyberskill-storage");function D(){return K.apply(this,arguments)}function K(){K=r(function(){var e;return h(this,function(t){switch(t.label){case 0:e=!L&&!M.defaultInstance;if(!e)return[3,2];return[4,M.init({dir:U,stringify:JSON.stringify,parse:JSON.parse,encoding:"utf8",logging:!1,forgiveParseErrors:!0})];case 1:e=t.sent();t.label=2;case 2:e;return[2]}})});return K.apply(this,arguments)}var J={get:function e(e){return r(function(){var t,n,r;return h(this,function(o){switch(o.label){case 0:o.trys.push([0,6,,7]);if(!L)return[3,2];return[4,G.getItem(e)];case 1:n=o.sent();return[3,5];case 2:return[4,D()];case 3:o.sent();return[4,M.getItem(e)];case 4:n=(t=o.sent())!==null&&t!==void 0?t:null;o.label=5;case 5:return[2,n];case 6:r=o.sent();return[2,(console.error('❌ [Storage:get] Error getting key "'.concat(e,'":'),r),null)];case 7:return[2]}})})()},set:function e(e,t){return r(function(){var n,r;return h(this,function(o){switch(o.label){case 0:o.trys.push([0,6,,7]);if(!L)return[3,2];return[4,G.setItem(e,t)];case 1:n=o.sent();return[3,5];case 2:return[4,D()];case 3:o.sent();return[4,M.setItem(e,t)];case 4:n=o.sent();o.label=5;case 5:n;return[3,7];case 6:r=o.sent();console.error('❌ [Storage:set] Error setting key "'.concat(e,'":'),r);return[3,7];case 7:return[2]}})})()},remove:function e(e){return r(function(){var t,n;return h(this,function(r){switch(r.label){case 0:r.trys.push([0,6,,7]);if(!L)return[3,2];return[4,G.removeItem(e)];case 1:t=r.sent();return[3,5];case 2:return[4,D()];case 3:r.sent();return[4,M.removeItem(e)];case 4:t=r.sent();r.label=5;case 5:t;return[3,7];case 6:n=r.sent();console.error('❌ [Storage:remove] Error removing key "'.concat(e,'":'),n);return[3,7];case 7:return[2]}})})()},keys:function e(){return r(function(){var e,t,n;return h(this,function(r){switch(r.label){case 0:r.trys.push([0,5,,6]);if(!L)return[3,2];return[4,G.keys()];case 1:return[2,(e=r.sent())!==null&&e!==void 0?e:[]];case 2:return[4,D()];case 3:r.sent();return[4,M.keys()];case 4:t=r.sent();return[2,Array.isArray(t)?t:(console.warn("⚠️ [Storage:keys] Invalid keys response:",t),[])];case 5:n=r.sent();return[2,(console.error("❌ [Storage:keys] Error getting keys:",n),[])];case 6:return[2]}})})()},getLogLink:function e(e){return r(function(){return h(this,function(t){try{return[2,"".concat(U," (key: ").concat(e,")")]}catch(e){return[2,(console.error("❌ [Storage:getLogLink] Error getting log link:",e),null)]}return[2]})})()}};var W=function(e){return"error_list:".concat(e)};function B(e){return Y.apply(this,arguments)}function Y(){Y=r(function(e){var t,n,o;return h(this,function(s){switch(s.label){case 0:if(!e.length)return[2];t=Date.now(),n=W(t);s.label=1;case 1:s.trys.push([1,3,,4]);return[4,J.set(n,{errors:e,timestamp:t})];case 2:s.sent(),setTimeout(/*#__PURE__*/r(function(){var e;return h(this,function(t){switch(t.label){case 0:return[4,J.getLogLink(n)];case 1:e=t.sent();e&&C.info("\uD83D\uDCC2 Open the error list manually: ".concat(e));return[2]}})}),10);return[3,4];case 3:o=s.sent();C.error("Failed to save errors: ".concat(o.message));return[3,4];case 4:return[2]}})});return Y.apply(this,arguments)}function $(){return q.apply(this,arguments)}function q(){q=r(function(){var e,t,n,r,o,s,c,i,a,u,f,p,g;return h(this,function(h){switch(h.label){case 0:h.trys.push([0,10,,11]);return[4,J.keys()];case 1:e=h.sent();if(!Array.isArray(e))return[2,(C.warning("Invalid response from storage.keys(): ".concat(e)),[])];t=e.filter(function(e){var t;return e===null||e===void 0?void 0:(t=e.startsWith)===null||t===void 0?void 0:t.call(e,"error_list:")}),n=[];r=true,o=false,s=undefined;h.label=2;case 2:h.trys.push([2,7,8,9]);c=t[Symbol.iterator]();h.label=3;case 3:if(!!(r=(i=c.next()).done))return[3,6];a=i.value;return[4,J.get(a)];case 4:f=h.sent();f&&(u=n).push.apply(u,l(f.errors));h.label=5;case 5:r=true;return[3,3];case 6:return[3,9];case 7:p=h.sent();o=true;s=p;return[3,9];case 8:try{if(!r&&c.return!=null){c.return()}}finally{if(o){throw s}}return[7];case 9:return[2,n];case 10:g=h.sent();return[2,(C.error("Failed to retrieve stored errors: ".concat(g.message)),[])];case 11:return[2]}})});return q.apply(this,arguments)}function z(){return Q.apply(this,arguments)}function Q(){Q=r(function(){var e,t,n,r,o,s,c,i,a,u;return h(this,function(l){switch(l.label){case 0:l.trys.push([0,10,,11]);return[4,J.keys()];case 1:e=l.sent();if(!Array.isArray(e)){C.warning("Invalid response from storage.keys(): ".concat(e));return[2]}t=e.filter(function(e){var t;return e===null||e===void 0?void 0:(t=e.startsWith)===null||t===void 0?void 0:t.call(e,"error_list:")});n=true,r=false,o=undefined;l.label=2;case 2:l.trys.push([2,7,8,9]);s=t[Symbol.iterator]();l.label=3;case 3:if(!!(n=(c=s.next()).done))return[3,6];i=c.value;return[4,J.remove(i)];case 4:l.sent();l.label=5;case 5:n=true;return[3,3];case 6:return[3,9];case 7:a=l.sent();r=true;o=a;return[3,9];case 8:try{if(!n&&s.return!=null){s.return()}}finally{if(r){throw o}}return[7];case 9:return[3,11];case 10:u=l.sent();C.error("Failed to clear error lists: ".concat(u.message));return[3,11];case 11:return[2]}})});return Q.apply(this,arguments)}import{exec as V}from"node:child_process";import X from"node:process";import*as Z from"node:util";var ee=Z.promisify(V),et=X.env.DEBUG==="true",en=/^\s*(\d+):(\d+)\s+(error|warning)\s+(.+?)\s+(\S+)$/,er=/^(.+?)\((\d+),(\d+)\):\s+(error|warning)\s+TS\d+:\s+(\S.+)$/,eo=/^✖\s+(.*?)\s+\[(.*?)\]$/;function es(e){var t=[],n=[],r="";e.split("\n").forEach(function(e){if(e.startsWith("/"))r=e.trim();else{var o=en.exec(e)||[],s=er.exec(e)||[],c=eo.exec(e)||[];o.length&&r?t.push({file:r,position:"".concat(o[1],":").concat(o[2]),type:o[3]==="error"?"error":"warning",message:o[4].trim(),rule:o[5].trim()}):s.length?t.push({file:s[1],position:"".concat(s[2],":").concat(s[3]),type:s[4]==="error"?"error":"warning",message:s[5].trim()}):c.length?t.push({file:"commitlint",type:"error",message:c[1].trim(),rule:c[2].trim()}):n.push(e.trim())}}),t.length&&B(t),n.length&&et&&(C.warning("Unmatched lines:"),n.forEach(function(e){return console.log(" ".concat(e))}))}function ec(e){try{var t=JSON.parse(e),n=[];t.forEach(function(e){var t=e.filePath,r=e.messages;r.forEach(function(e){var r=e.severity,o=e.line,s=e.column,c=e.ruleId,i=e.message;n.push({type:r===2?"error":"warning",file:t,position:"".concat(o,":").concat(s),rule:c,message:i})})}),n.length&&B(n)}catch(t){es(e)}}function ei(e){return ea.apply(this,arguments)}function ea(){ea=r(function(e){var t,n,r,o,s,c,i,a,u;var l=arguments;return h(this,function(f){switch(f.label){case 0:t=l.length>1&&l[1]!==void 0?l[1]:ec;n=new AbortController;X.on("SIGINT",function(){C.warning("Process interrupted. Terminating..."),n.abort(),X.exit()});f.label=1;case 1:f.trys.push([1,3,,4]);return[4,ee(e,{maxBuffer:0x6400000,signal:n.signal})];case 2:r=f.sent(),o=r.stdout,s=r.stderr;[o,s].forEach(function(e){return e&&t(e)});return[3,4];case 3:c=f.sent();i=c.stdout,a=c.stderr,u=c.message;[i,a].forEach(function(e){return e&&t(e)}),!a&&!i&&C.error("Command failed: ".concat(u));return[3,4];case 4:return[2]}})});return ea.apply(this,arguments)}import eu from"node-fetch";import el from"node:fs";import ef from"node:path";var ep=24*60*60*1e3;function eh(e){return e?ef.join(O,"node_modules",e,"package.json"):ef.join(O,"package.json")}function eg(e){return ed.apply(this,arguments)}function ed(){ed=r(function(e){var t,n,r,o,s,c,i,a,u,l;var f=arguments;return h(this,function(p){switch(p.label){case 0:t=f.length>1&&f[1]!==void 0?f[1]:!1;n="npm_version:".concat(e),r="npm_metadata:".concat(e);return[4,J.get(n)];case 1:o=p.sent();return[4,J.get(r)];case 2:s=p.sent(),c=o&&Date.now()-o.timestamp<ep;if(!t&&c)return[2,(C.info("Using cached version for ".concat(e,": ").concat(o.version)),o.version)];i={};(s===null||s===void 0?void 0:s.etag)&&(i["If-None-Match"]=s.etag),(s===null||s===void 0?void 0:s.lastModified)&&(i["If-Modified-Since"]=s.lastModified);p.label=3;case 3:p.trys.push([3,8,,9]);C.info("Fetching latest version for ".concat(e,"..."));return[4,eu("https://registry.npmjs.org/".concat(e,"/latest"),{headers:i})];case 4:a=p.sent();if(a.status===304&&o)return[2,(C.info("Cache is still valid for ".concat(e,": ").concat(o.version)),o.version)];if(!a.ok)throw new Error("Failed to fetch latest version: ".concat(a.statusText));return[4,a.json()];case 5:u=p.sent().version;return[4,J.set(n,{version:u,timestamp:Date.now()})];case 6:p.sent();return[4,J.set(r,{etag:a.headers.get("ETag")||void 0,lastModified:a.headers.get("Last-Modified")||void 0})];case 7:return[2,(p.sent(),C.success("Cached latest version for ".concat(e,": ").concat(u)),u)];case 8:l=p.sent();if(C.error("Error fetching latest version for ".concat(e,": ").concat(l.message)),o)return[2,(C.warning("Falling back to cached version for ".concat(e,": ").concat(o.version)),o.version)];throw l;case 9:return[2]}})});return ed.apply(this,arguments)}function ey(e){return em.apply(this,arguments)}function em(){em=r(function(e){var t,n,r,o,s;var c=arguments;return h(this,function(i){switch(i.label){case 0:t=c.length>1&&c[1]!==void 0?c[1]:!0;i.label=1;case 1:i.trys.push([1,3,,4]);n=eh(e);if(!el.existsSync(n))return[2,(C.info("".concat(e," is not installed.")),!0)];r=JSON.parse(el.readFileSync(n,"utf-8")).version;return[4,eg(e,t)];case 2:o=i.sent();return[2,(C.info("Installed version of ".concat(e,": ").concat(r)),C.info("Latest version of ".concat(e,": ").concat(o)),r!==o)];case 3:s=i.sent();return[2,(C.warning("Failed to check version for ".concat(e,": ").concat(s.message)),!0)];case 4:return[2]}})});return em.apply(this,arguments)}function ev(e){return eb.apply(this,arguments)}function eb(){eb=r(function(e){var t,n,r,s;return h(this,function(c){switch(c.label){case 0:c.trys.push([0,4,,5]);return[4,eg(e,!0)];case 1:t=c.sent(),n=eh();if(!el.existsSync(n)){C.error("package.json not found. Cannot update ".concat(e));return[2]}r=JSON.parse(el.readFileSync(n,"utf-8"));r.dependencies=u(i({},r.dependencies),o({},e,t)),el.writeFileSync(n,JSON.stringify(r,null,2)),C.info("Updated ".concat(e," to version ").concat(t));return[4,ei("npm i -f")];case 2:c.sent();return[4,ei("npm run lint:fix")];case 3:c.sent(),C.success("".concat(e," updated successfully."));return[3,5];case 4:s=c.sent();throw C.error("Failed to update ".concat(e,": ").concat(s.message)),s;case 5:return[2]}})});return eb.apply(this,arguments)}function eS(e,t){try{var n=ef.join(e,"package.json");return el.existsSync(n)?JSON.parse(el.readFileSync(n,"utf-8")).name===t:!1}catch(e){return C.error("Error reading package.json: ".concat(e.message)),!1}}var ew={TS_CONFIG_PATH:d.join(O,"tsconfig.json"),HUSKY_PATH:d.join(O,".husky"),GIT_HOOK_PATH:d.join(O,".git","hooks"),GIT_COMMIT_MSG:d.join(O,".git","COMMIT_EDITMSG"),SIMPLE_GIT_HOOKS_PATH:d.join(O,".simple-git-hooks.json"),PACKAGE_NAME:"@cyberskill/shared",LINT_STAGED_CONFIG_PATH:d.resolve(T,"./configs/lint-staged/base.js"),COMMITLINT_CONFIG_PATH:d.resolve(T,"./configs/commitlint/base.js"),UNIT_TEST_CONFIG_PATH:d.resolve(T,"./configs/vitest/react/unit.js"),E2E_TEST_CONFIG_PATH:d.resolve(T,"./configs/vitest/react/e2e.js")},e_=function(e){return g.existsSync(e)},eT=0,eO=1;function eE(e){eO=Math.max(1,e),eT=0}function eI(e){eT=Math.min(eT+1,eO),C.step(eT,eO,e)}function ek(){return eA.apply(this,arguments)}function eA(){eA=r(function(){var e;return h(this,function(t){switch(t.label){case 0:eI("Starting TypeScript check");if(!e_(ew.TS_CONFIG_PATH))return[3,2];return[4,ei("npx tsc -p ".concat(ew.TS_CONFIG_PATH," --noEmit"))];case 1:e=t.sent();return[3,3];case 2:e=C.warning("tsconfig.json file not found. Skipping TypeScript check.");t.label=3;case 3:e;return[2]}})});return eA.apply(this,arguments)}function eP(){return ej.apply(this,arguments)}function ej(){ej=r(function(){var e,t;var n=arguments;return h(this,function(r){switch(r.label){case 0:e=n.length>0&&n[0]!==void 0?n[0]:!1;eI("Starting ESLint ".concat(e?"fix":"check"));t="npx eslint ".concat(O).concat(e?" --fix":"");return[4,ei(t)];case 1:r.sent();return[2]}})});return ej.apply(this,arguments)}function ex(){return eN.apply(this,arguments)}function eN(){eN=r(function(){return h(this,function(e){switch(e.label){case 0:eE(1),eI("Starting lint-staged process");return[4,ei("npx lint-staged --config ".concat(ew.LINT_STAGED_CONFIG_PATH))];case 1:e.sent();return[2]}})});return eN.apply(this,arguments)}function eC(){return eG.apply(this,arguments)}function eG(){eG=r(function(){return h(this,function(e){switch(e.label){case 0:eE(1),eI("Inspecting lint rules");return[4,ei("npx @eslint/config-inspector")];case 1:e.sent();return[2]}})});return eG.apply(this,arguments)}function eM(){return eF.apply(this,arguments)}function eF(){eF=r(function(){return h(this,function(e){switch(e.label){case 0:eE(2);return[4,z()];case 1:e.sent();return[4,ek()];case 2:e.sent();return[4,eP()];case 3:e.sent();return[4,C.displayResults()];case 4:e.sent();return[2]}})});return eF.apply(this,arguments)}function eH(){return eR.apply(this,arguments)}function eR(){eR=r(function(){return h(this,function(e){switch(e.label){case 0:eI("Running commit lint");return[4,ei("npx --no -- commitlint --edit ".concat(ew.GIT_COMMIT_MSG," --config ").concat(ew.COMMITLINT_CONFIG_PATH))];case 1:e.sent();return[2]}})});return eR.apply(this,arguments)}function eL(){return eU.apply(this,arguments)}function eU(){eU=r(function(){var e,t;return h(this,function(n){switch(n.label){case 0:eE(2),eI("Setting up Git hooks");e=e_(ew.HUSKY_PATH);if(!e)return[3,2];return[4,ei("npx rimraf ".concat(ew.HUSKY_PATH," ").concat(ew.GIT_HOOK_PATH," && git config core.hooksPath ").concat(ew.GIT_HOOK_PATH))];case 1:e=n.sent();n.label=2;case 2:e;t={"pre-commit":eS(O,ew.PACKAGE_NAME)?'bash -c "npm run build && npx --yes cyberskill lint-staged"':"npx --yes cyberskill lint-staged","commit-msg":"npx --yes cyberskill commitlint"};g.writeFileSync(ew.SIMPLE_GIT_HOOKS_PATH,JSON.stringify(t,null,4));return[4,ei("npx simple-git-hooks")];case 3:n.sent(),C.success("Git hooks configured successfully."),g.unlinkSync(ew.SIMPLE_GIT_HOOKS_PATH);return[2]}})});return eU.apply(this,arguments)}function eD(){return eK.apply(this,arguments)}function eK(){eK=r(function(){var e,t,n,r,o,s,c;return h(this,function(i){switch(i.label){case 0:eE(2),eI("Starting project setup");e=d.join(O,"package.json");i.label=1;case 1:i.trys.push([1,10,,11]);if(!e_(e)){C.error("package.json not found. Setup aborted.");return[2]}n=JSON.parse(g.readFileSync(e,"utf-8"));if(!eS(O,ew.PACKAGE_NAME))return[3,2];r=C.success("Cyberskill is already installed.");return[3,8];case 2:s=!((t=n.dependencies)===null||t===void 0?void 0:t[ew.PACKAGE_NAME]);if(s)return[3,4];return[4,ey(ew.PACKAGE_NAME)];case 3:s=i.sent();i.label=4;case 4:if(!s)return[3,6];C.info("Updating Cyberskill package...");return[4,ev(ew.PACKAGE_NAME)];case 5:o=i.sent();return[3,7];case 6:o=C.success("Cyberskill is up to date.");i.label=7;case 7:r=o;i.label=8;case 8:r;return[4,eL()];case 9:i.sent();return[3,11];case 10:c=i.sent();throw C.error("Error reading package.json: ".concat(c.message)),c;case 11:return[2]}})});return eK.apply(this,arguments)}function eJ(){return eW.apply(this,arguments)}function eW(){eW=r(function(){return h(this,function(e){switch(e.label){case 0:eE(1),eI("Running unit tests");return[4,ei("npx vitest --config ".concat(ew.UNIT_TEST_CONFIG_PATH))];case 1:e.sent();return[2]}})});return eW.apply(this,arguments)}function eB(){return eY.apply(this,arguments)}function eY(){eY=r(function(){return h(this,function(e){switch(e.label){case 0:eE(1),eI("Running e2e tests");return[4,ei("npx vitest --config ".concat(ew.E2E_TEST_CONFIG_PATH))];case 1:e.sent();return[2]}})});return eY.apply(this,arguments)}v(m(y.argv)).command("lint","Run linting checks",eM).command("lint:fix","Fix linting issues",function(){return eP(!0)}).command("lint:inspect","Inspect linting rules",eC).command("lint-staged","Run lint-staged",ex).command("commitlint","Run commitlint",eH).command("setup","Run project setup",eD).command("reset","Reset project dependencies",/*#__PURE__*/r(function(){return h(this,function(e){switch(e.label){case 0:eE(1),eI("Starting project reset");return[4,ei("npx rimraf ".concat(O,"/node_modules ").concat(O,"/package-lock.json"))];case 1:e.sent();return[4,ei("npm i -f")];case 2:e.sent();return[4,eL()];case 3:e.sent();return[2]}})})).command("test:unit","Run unit tests",eJ).command("test:e2e","Run e2e tests",eB).help().parse();