@earlyai/cli 2.4.4 → 2.4.5
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/index.cjs +3 -3
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -17,7 +17,7 @@ Expecting one of '${n.join(`', '`)}'`);return this._lifeCycleHooks[e]?this._life
|
|
|
17
17
|
- if the default executable name is not suitable, use the executableFile option to supply a custom name or path
|
|
18
18
|
- ${t?`searched for local subcommand relative to directory '${t}'`:`no directory for search for local subcommand, use .executableDir() to supply a custom directory`}`;throw Error(r)}_executeSubCommand(e,t){t=t.slice();let o=!1,s=[`.js`,`.ts`,`.tsx`,`.mjs`,`.cjs`];function l(e,t){let n=r.resolve(e,t);if(i.existsSync(n))return n;if(s.includes(r.extname(t)))return;let a=s.find(e=>i.existsSync(`${n}${e}`));if(a)return`${n}${a}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let u=e._executableFile||`${this._name}-${e._name}`,d=this._executableDir||``;if(this._scriptPath){let e;try{e=i.realpathSync(this._scriptPath)}catch{e=this._scriptPath}d=r.resolve(r.dirname(e),d)}if(d){let t=l(d,u);if(!t&&!e._executableFile&&this._scriptPath){let n=r.basename(this._scriptPath,r.extname(this._scriptPath));n!==this._name&&(t=l(d,`${n}-${e._name}`))}u=t||u}o=s.includes(r.extname(u));let f;a.platform===`win32`?(this._checkForMissingExecutable(u,d,e._name),t.unshift(u),t=h(a.execArgv).concat(t),f=n.spawn(a.execPath,t,{stdio:`inherit`})):o?(t.unshift(u),t=h(a.execArgv).concat(t),f=n.spawn(a.argv[0],t,{stdio:`inherit`})):f=n.spawn(u,t,{stdio:`inherit`}),f.killed||[`SIGUSR1`,`SIGUSR2`,`SIGTERM`,`SIGINT`,`SIGHUP`].forEach(e=>{a.on(e,()=>{f.killed===!1&&f.exitCode===null&&f.kill(e)})});let p=this._exitCallback;f.on(`close`,e=>{e??=1,p?p(new c(e,`commander.executeSubCommandAsync`,`(close)`)):a.exit(e)}),f.on(`error`,t=>{if(t.code===`ENOENT`)this._checkForMissingExecutable(u,d,e._name);else if(t.code===`EACCES`)throw Error(`'${u}' not executable`);if(!p)a.exit(1);else{let e=new c(1,`commander.executeSubCommandAsync`,`(error)`);e.nestedError=t,p(e)}}),this.runningCommand=f}_dispatchSubcommand(e,t,n){let r=this._findCommand(e);r||this.help({error:!0}),r._prepareForParse();let i;return i=this._chainOrCallSubCommandHook(i,r,`preSubcommand`),i=this._chainOrCall(i,()=>{if(r._executableHandler)this._executeSubCommand(r,t.concat(n));else return r._parseCommand(t,n)}),i}_dispatchHelpCommand(e){e||this.help();let t=this._findCommand(e);return t&&!t._executableHandler&&t.help(),this._dispatchSubcommand(e,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??`--help`])}_checkNumberOfArguments(){this.registeredArguments.forEach((e,t)=>{e.required&&this.args[t]==null&&this.missingArgument(e.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let e=(e,t,n)=>{let r=t;if(t!==null&&e.parseArg){let i=`error: command-argument value '${t}' is invalid for argument '${e.name()}'.`;r=this._callParseArg(e,t,n,i)}return r};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((n,r)=>{let i=n.defaultValue;n.variadic?r<this.args.length?(i=this.args.slice(r),n.parseArg&&(i=i.reduce((t,r)=>e(n,r,t),n.defaultValue))):i===void 0&&(i=[]):r<this.args.length&&(i=this.args[r],n.parseArg&&(i=e(n,i,n.defaultValue))),t[r]=i}),this.processedArgs=t}_chainOrCall(e,t){return e?.then&&typeof e.then==`function`?e.then(()=>t()):t()}_chainOrCallHooks(e,t){let n=e,r=[];return this._getCommandAndAncestors().reverse().filter(e=>e._lifeCycleHooks[t]!==void 0).forEach(e=>{e._lifeCycleHooks[t].forEach(t=>{r.push({hookedCommand:e,callback:t})})}),t===`postAction`&&r.reverse(),r.forEach(e=>{n=this._chainOrCall(n,()=>e.callback(e.hookedCommand,this))}),n}_chainOrCallSubCommandHook(e,t,n){let r=e;return this._lifeCycleHooks[n]!==void 0&&this._lifeCycleHooks[n].forEach(e=>{r=this._chainOrCall(r,()=>e(this,t))}),r}_parseCommand(e,t){let n=this.parseOptions(t);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(n.operands),t=n.unknown,this.args=e.concat(t),e&&this._findCommand(e[0]))return this._dispatchSubcommand(e[0],e.slice(1),t);if(this._getHelpCommand()&&e[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(e[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(t),this._dispatchSubcommand(this._defaultCommandName,e,t);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(n.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let r=()=>{n.unknown.length>0&&this.unknownOption(n.unknown[0])},i=`command:${this.name()}`;if(this._actionHandler){r(),this._processArguments();let n;return n=this._chainOrCallHooks(n,`preAction`),n=this._chainOrCall(n,()=>this._actionHandler(this.processedArgs)),this.parent&&(n=this._chainOrCall(n,()=>{this.parent.emit(i,e,t)})),n=this._chainOrCallHooks(n,`postAction`),n}if(this.parent?.listenerCount(i))r(),this._processArguments(),this.parent.emit(i,e,t);else if(e.length){if(this._findCommand(`*`))return this._dispatchSubcommand(`*`,e,t);this.listenerCount(`command:*`)?this.emit(`command:*`,e,t):this.commands.length?this.unknownCommand():(r(),this._processArguments())}else this.commands.length?(r(),this.help({error:!0})):(r(),this._processArguments())}_findCommand(e){if(e)return this.commands.find(t=>t._name===e||t._aliases.includes(e))}_findOption(e){return this.options.find(t=>t.is(e))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(e=>{e.options.forEach(t=>{t.mandatory&&e.getOptionValue(t.attributeName())===void 0&&e.missingMandatoryOptionValue(t)})})}_checkForConflictingLocalOptions(){let e=this.options.filter(e=>{let t=e.attributeName();return this.getOptionValue(t)===void 0?!1:this.getOptionValueSource(t)!==`default`});e.filter(e=>e.conflictsWith.length>0).forEach(t=>{let n=e.find(e=>t.conflictsWith.includes(e.attributeName()));n&&this._conflictingOption(t,n)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],n=[],r=t;function i(e){return e.length>1&&e[0]===`-`}let a=e=>/^-\d*\.?\d+(e[+-]?\d+)?$/.test(e)?!this._getCommandAndAncestors().some(e=>e.options.map(e=>e.short).some(e=>/^-\d$/.test(e))):!1,o=null,s=null,c=0;for(;c<e.length||s;){let l=s??e[c++];if(s=null,l===`--`){r===n&&r.push(l),r.push(...e.slice(c));break}if(o&&(!i(l)||a(l))){this.emit(`option:${o.name()}`,l);continue}if(o=null,i(l)){let t=this._findOption(l);if(t){if(t.required){let n=e[c++];n===void 0&&this.optionMissingArgument(t),this.emit(`option:${t.name()}`,n)}else if(t.optional){let n=null;c<e.length&&(!i(e[c])||a(e[c]))&&(n=e[c++]),this.emit(`option:${t.name()}`,n)}else this.emit(`option:${t.name()}`);o=t.variadic?t:null;continue}}if(l.length>2&&l[0]===`-`&&l[1]!==`-`){let e=this._findOption(`-${l[1]}`);if(e){e.required||e.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${e.name()}`,l.slice(2)):(this.emit(`option:${e.name()}`),s=`-${l.slice(2)}`);continue}}if(/^--[^=]+=/.test(l)){let e=l.indexOf(`=`),t=this._findOption(l.slice(0,e));if(t&&(t.required||t.optional)){this.emit(`option:${t.name()}`,l.slice(e+1));continue}}if(r===t&&i(l)&&!(this.commands.length===0&&a(l))&&(r=n),(this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&n.length===0){if(this._findCommand(l)){t.push(l),n.push(...e.slice(c));break}else if(this._getHelpCommand()&&l===this._getHelpCommand().name()){t.push(l,...e.slice(c));break}else if(this._defaultCommandName){n.push(l,...e.slice(c));break}}if(this._passThroughOptions){r.push(l,...e.slice(c));break}r.push(l)}return{operands:t,unknown:n}}opts(){if(this._storeOptionsAsProperties){let e={},t=this.options.length;for(let n=0;n<t;n++){let t=this.options[n].attributeName();e[t]=t===this._versionOptionName?this._version:this[t]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,t)=>Object.assign(e,t.opts()),{})}error(e,t){this._outputConfiguration.outputError(`${e}\n`,this._outputConfiguration.writeErr),typeof this._showHelpAfterError==`string`?this._outputConfiguration.writeErr(`${this._showHelpAfterError}\n`):this._showHelpAfterError&&(this._outputConfiguration.writeErr(`
|
|
19
19
|
`),this.outputHelp({error:!0}));let n=t||{},r=n.exitCode||1,i=n.code||`commander.error`;this._exit(r,i,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in a.env){let t=e.attributeName();(this.getOptionValue(t)===void 0||[`default`,`config`,`env`].includes(this.getOptionValueSource(t)))&&(e.required||e.optional?this.emit(`optionEnv:${e.name()}`,a.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new f(this.options),t=e=>this.getOptionValue(e)!==void 0&&![`default`,`implied`].includes(this.getOptionValueSource(e));this.options.filter(n=>n.implied!==void 0&&t(n.attributeName())&&e.valueFromOption(this.getOptionValue(n.attributeName()),n)).forEach(e=>{Object.keys(e.implied).filter(e=>!t(e)).forEach(t=>{this.setOptionValueWithSource(t,e.implied[t],`implied`)})})}missingArgument(e){let t=`error: missing required argument '${e}'`;this.error(t,{code:`commander.missingArgument`})}optionMissingArgument(e){let t=`error: option '${e.flags}' argument missing`;this.error(t,{code:`commander.optionMissingArgument`})}missingMandatoryOptionValue(e){let t=`error: required option '${e.flags}' not specified`;this.error(t,{code:`commander.missingMandatoryOptionValue`})}_conflictingOption(e,t){let n=e=>{let t=e.attributeName(),n=this.getOptionValue(t),r=this.options.find(e=>e.negate&&t===e.attributeName()),i=this.options.find(e=>!e.negate&&t===e.attributeName());return r&&(r.presetArg===void 0&&n===!1||r.presetArg!==void 0&&n===r.presetArg)?r:i||e},r=e=>{let t=n(e),r=t.attributeName();return this.getOptionValueSource(r)===`env`?`environment variable '${t.envVar}'`:`option '${t.flags}'`},i=`error: ${r(e)} cannot be used with ${r(t)}`;this.error(i,{code:`commander.conflictingOption`})}unknownOption(e){if(this._allowUnknownOption)return;let t=``;if(e.startsWith(`--`)&&this._showSuggestionAfterError){let n=[],r=this;do{let e=r.createHelp().visibleOptions(r).filter(e=>e.long).map(e=>e.long);n=n.concat(e),r=r.parent}while(r&&!r._enablePositionalOptions);t=p(e,n)}let n=`error: unknown option '${e}'${t}`;this.error(n,{code:`commander.unknownOption`})}_excessArguments(e){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,n=t===1?``:`s`,r=`error: too many arguments${this.parent?` for '${this.name()}'`:``}. Expected ${t} argument${n} but got ${e.length}.`;this.error(r,{code:`commander.excessArguments`})}unknownCommand(){let e=this.args[0],t=``;if(this._showSuggestionAfterError){let n=[];this.createHelp().visibleCommands(this).forEach(e=>{n.push(e.name()),e.alias()&&n.push(e.alias())}),t=p(e,n)}let n=`error: unknown command '${e}'${t}`;this.error(n,{code:`commander.unknownCommand`})}version(e,t,n){if(e===void 0)return this._version;this._version=e,t||=`-V, --version`,n||=`output the version number`;let r=this.createOption(t,n);return this._versionOptionName=r.attributeName(),this._registerOption(r),this.on(`option:`+r.name(),()=>{this._outputConfiguration.writeOut(`${e}\n`),this._exit(0,`commander.version`,e)}),this}description(e,t){return e===void 0&&t===void 0?this._description:(this._description=e,t&&(this._argsDescription=t),this)}summary(e){return e===void 0?this._summary:(this._summary=e,this)}alias(e){if(e===void 0)return this._aliases[0];let t=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(t=this.commands[this.commands.length-1]),e===t._name)throw Error(`Command alias can't be the same as its name`);let n=this.parent?._findCommand(e);if(n){let t=[n.name()].concat(n.aliases()).join(`|`);throw Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${t}'`)}return t._aliases.push(e),this}aliases(e){return e===void 0?this._aliases:(e.forEach(e=>this.alias(e)),this)}usage(e){if(e===void 0){if(this._usage)return this._usage;let e=this.registeredArguments.map(e=>s(e));return[].concat(this.options.length||this._helpOption!==null?`[options]`:[],this.commands.length?`[command]`:[],this.registeredArguments.length?e:[]).join(` `)}return this._usage=e,this}name(e){return e===void 0?this._name:(this._name=e,this)}helpGroup(e){return e===void 0?this._helpGroupHeading??``:(this._helpGroupHeading=e,this)}commandsGroup(e){return e===void 0?this._defaultCommandGroup??``:(this._defaultCommandGroup=e,this)}optionsGroup(e){return e===void 0?this._defaultOptionGroup??``:(this._defaultOptionGroup=e,this)}_initOptionGroup(e){this._defaultOptionGroup&&!e.helpGroupHeading&&e.helpGroup(this._defaultOptionGroup)}_initCommandGroup(e){this._defaultCommandGroup&&!e.helpGroup()&&e.helpGroup(this._defaultCommandGroup)}nameFromFilename(e){return this._name=r.basename(e,r.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let t=this.createHelp(),n=this._getOutputContext(e);t.prepareContext({error:n.error,helpWidth:n.helpWidth,outputHasColors:n.hasColors});let r=t.formatHelp(this,t);return n.hasColors?r:this._outputConfiguration.stripColor(r)}_getOutputContext(e){e||={};let t=!!e.error,n,r,i;return t?(n=e=>this._outputConfiguration.writeErr(e),r=this._outputConfiguration.getErrHasColors(),i=this._outputConfiguration.getErrHelpWidth()):(n=e=>this._outputConfiguration.writeOut(e),r=this._outputConfiguration.getOutHasColors(),i=this._outputConfiguration.getOutHelpWidth()),{error:t,write:e=>(r||(e=this._outputConfiguration.stripColor(e)),n(e)),hasColors:r,helpWidth:i}}outputHelp(e){let t;typeof e==`function`&&(t=e,e=void 0);let n=this._getOutputContext(e),r={error:n.error,write:n.write,command:this};this._getCommandAndAncestors().reverse().forEach(e=>e.emit(`beforeAllHelp`,r)),this.emit(`beforeHelp`,r);let i=this.helpInformation({error:n.error});if(t&&(i=t(i),typeof i!=`string`&&!Buffer.isBuffer(i)))throw Error(`outputHelp callback must return a string or a Buffer`);n.write(i),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit(`afterHelp`,r),this._getCommandAndAncestors().forEach(e=>e.emit(`afterAllHelp`,r))}helpOption(e,t){return typeof e==`boolean`?(e?(this._helpOption===null&&(this._helpOption=void 0),this._defaultOptionGroup&&this._initOptionGroup(this._getHelpOption())):this._helpOption=null,this):(this._helpOption=this.createOption(e??`-h, --help`,t??`display help for command`),(e||t)&&this._initOptionGroup(this._helpOption),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(e){return this._helpOption=e,this._initOptionGroup(e),this}help(e){this.outputHelp(e);let t=Number(a.exitCode??0);t===0&&e&&typeof e!=`function`&&e.error&&(t=1),this._exit(t,`commander.help`,`(outputHelp)`)}addHelpText(e,t){let n=[`beforeAll`,`before`,`after`,`afterAll`];if(!n.includes(e))throw Error(`Unexpected value for position to addHelpText.
|
|
20
|
-
Expecting one of '${n.join(`', '`)}'`);let r=`${e}Help`;return this.on(r,e=>{let n;n=typeof t==`function`?t({error:e.error,command:e.command}):t,n&&e.write(`${n}\n`)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(e=>t.is(e))&&(this.outputHelp(),this._exit(0,`commander.helpDisplayed`,`(outputHelp)`))}};function h(e){return e.map(e=>{if(!e.startsWith(`--inspect`))return e;let t,n=`127.0.0.1`,r=`9229`,i;return(i=e.match(/^(--inspect(-brk)?)$/))===null?(i=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))===null?(i=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=i[1],n=i[3],r=i[4]):(t=i[1],/^\d+$/.test(i[3])?r=i[3]:n=i[3]):t=i[1],t&&r!==`0`?`${t}=${n}:${parseInt(r)+1}`:e})}function g(){if(a.env.NO_COLOR||a.env.FORCE_COLOR===`0`||a.env.FORCE_COLOR===`false`)return!1;if(a.env.FORCE_COLOR||a.env.CLICOLOR_FORCE!==void 0)return!0}e.Command=m,e.useColor=g}));const{program:ne,createCommand:N,createArgument:P,createOption:F,CommanderError:I,InvalidArgumentError:re,InvalidOptionArgumentError:ie,Command:L,Argument:R,Option:ae,Help:z}=u(s((e=>{let{Argument:t}=A(),{Command:n}=M(),{CommanderError:r,InvalidArgumentError:i}=k(),{Help:a}=ee(),{Option:o}=j();e.program=new n,e.createCommand=e=>new n(e),e.createOption=(e,t)=>new o(e,t),e.createArgument=(e,n)=>new t(e,n),e.Command=n,e.Option=o,e.Argument=t,e.Help=a,e.CommanderError=r,e.InvalidArgumentError=i,e.InvalidOptionArgumentError=i}))(),1).default;var oe=`2.4.4`,se=s((e=>{let t=e=>e!=null,n=e=>typeof e==`object`&&!!e,r=e=>Array.isArray(e),i=e=>e instanceof Map,a=e=>e instanceof Set,o=e=>e instanceof Date,s=e=>typeof e==`number`,c=e=>typeof e==`string`,l=e=>typeof e==`boolean`,u=e=>e instanceof Error,d=e=>t(e)?c(e)||r(e)?e.length===0:i(e)||a(e)?e.size===0:o(e)?!1:n(e)?Object.keys(e).length===0:!1:!0,f=e=>u(e)?e.message:`error is not Instance of Error`,p=(e,t)=>{let n=new Set(e);for(let e of n)t.includes(e)||n.delete(e);return[...n]},m=async(e,t)=>{let n=await Promise.all(e.map(e=>t(e)));return e.filter((e,t)=>n[t])},h=(e,t)=>{let n=[];for(let r of e)n.some(e=>t(r,e))||n.push(r);return n},g=e=>[...new Set(e)],_=async e=>Promise.all(e.map(e=>new Promise((t,n)=>e().then(e=>e?t(e):n(e)).catch(e=>n(e))))).then(()=>!0).catch(e=>{if(!l(e))throw e;return e}),v=e=>e.trim().replaceAll(/([\da-z])([A-Z])/g,`$1-$2`).replaceAll(/([A-Z])([A-Z][\da-z])/g,`$1-$2`).replaceAll(/[\s_]+/g,`-`).toLowerCase(),y=e=>e.replaceAll(/[\s-]+/g,` `).split(` `).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(``),b=e=>{let t=0;for(let n=0;n<e.length;n++){let r=e.codePointAt(n)??0;t=Math.trunc(t*31+r)}return t>>>0},x=(...e)=>{let n={};for(let r of e)for(let e in r)t(r[e])&&(n[e]=r[e]);return n},S=(e,t)=>r(e)?e.map(e=>S(e,t)):n(e)?Object.fromEntries(Object.entries(e).filter(([e])=>!t.includes(e)).map(([e,n])=>[e,S(n,t)])):e,C=(e,t)=>{let n;return(...r)=>{clearTimeout(n),n=setTimeout(()=>e(...r),t)}},w=(e,t)=>{let n=!1;return(...r)=>{n||(e(...r),n=!0,setTimeout(()=>{n=!1},t))}};var T=class{listeners=[];addListener(e){this.listeners.push(e)}notifyAll(e){for(let t of this.listeners)t(e)}clear(){this.listeners.length=0}},E=class{set=new Set;constructor(e=[]){for(let t of e)this.safeAdd(t)}safeAdd(e){return t(e)?(this.set.add(e),!0):!1}has(e){return t(e)?this.set.has(e):!1}delete(e){return t(e)?this.set.delete(e):!1}clear(){this.set.clear()}get size(){return this.set.size}values(){return this.set.values()}toSet(){return structuredClone(this.set)}[Symbol.iterator](){return this.set[Symbol.iterator]()}concatSet(e){for(let t of e)this.safeAdd(t)}};e.Observer=T,e.SafeSet=E,e.arePromiseFnsTruthy=_,e.debounce=C,e.fastHash=b,e.filterAsync=m,e.getErrorMessage=f,e.intersection=p,e.isArray=r,e.isBoolean=l,e.isDate=o,e.isDefined=t,e.isEmpty=d,e.isError=u,e.isMap=i,e.isNumber=s,e.isObject=n,e.isSet=a,e.isString=c,e.merge=x,e.removeNestedField=S,e.throttle=w,e.toCamelCase=y,e.toKebabCase=v,e.uniq=g,e.uniqWith=h})),B=se();function ce(e,t,n,{key:r=``,prefix:i=`EARLY`,parser:a,def:o,isRequired:s=!1,envName:c}={}){let l=new ae(t,n);a&&l.argParser(a),s&&l.makeOptionMandatory(!0);let u=c??(()=>{let n=[];for(let t=e;t&&(0,B.isDefined)(t.name());t=t.parent)t.parent&&n.unshift(t.name());return[i,...n,r||t.split(/[ ,|]/)[1].replace(/^--?/,``)].join(`_`).replaceAll(/[- ]/g,`_`).toUpperCase()})();return l.env(u),(0,B.isDefined)(o)&&l.default(o),e.addOption(l),l}function le(e){return(typeof e==`object`&&!!e||typeof e==`function`)&&typeof e.then==`function`}function ue(e){switch(typeof e){case`string`:case`symbol`:return e.toString();case`function`:return e.name;default:throw Error(`Unexpected ${typeof e} service id type`)}}const de=Symbol.for(`@inversifyjs/common/islazyServiceIdentifier`);var fe=class{[de];#e;constructor(e){this.#e=e,this[de]=!0}static is(e){return typeof e==`object`&&!!e&&!0===e[de]}unwrap(){return this.#e()}};function pe(e,t,n){return Reflect.getOwnMetadata(t,e,n)}function me(e,t,n,r){Reflect.defineMetadata(t,n,e,r)}function he(e,t,n,r,i){let a=r(pe(e,t,i)??n());Reflect.defineMetadata(t,a,e,i)}function ge(e){return Object.getPrototypeOf(e.prototype)?.constructor}const _e=`@inversifyjs/container/bindingId`;function ve(){let e=pe(Object,_e)??0;return e===2**53-1?me(Object,_e,-(2**53-1)):he(Object,_e,()=>e,e=>e+1),e}const ye={Request:`Request`,Singleton:`Singleton`,Transient:`Transient`},be={ConstantValue:`ConstantValue`,DynamicValue:`DynamicValue`,Factory:`Factory`,Instance:`Instance`,Provider:`Provider`,ResolvedValue:`ResolvedValue`,ServiceRedirection:`ServiceRedirection`};function*xe(...e){for(let t of e)yield*t}var Se=class e{#e;#t;#n;constructor(e){this.#e=new Map,this.#t={};for(let t of Reflect.ownKeys(e))this.#t[t]=new Map;this.#n=e}add(e,t){this.#a(e).push(t);for(let n of Reflect.ownKeys(t))this.#o(n,t[n]).push(e)}clone(){let e=this.#r(),t=this.#i(),n=Reflect.ownKeys(this.#n),r=this._buildNewInstance(this.#n);this.#u(this.#e,r.#e,e,t);for(let t of n)this.#l(this.#t[t],r.#t[t],e);return r}get(e,t){return this.#t[e].get(t)}getAllKeys(e){return this.#t[e].keys()}removeByRelation(e,t){let n=this.get(e,t);if(n===void 0)return;let r=new Set(n);for(let n of r){let r=this.#e.get(n);if(r===void 0)throw Error(`Expecting model relation, none found`);for(let i of r)i[e]===t&&this.#d(n,i);this.#e.delete(n)}}_buildNewInstance(t){return new e(t)}_cloneModel(e){return e}_cloneRelation(e){return e}#r(){let e=new Map;for(let t of this.#e.keys()){let n=this._cloneModel(t);e.set(t,n)}return e}#i(){let e=new Map;for(let t of this.#e.values())for(let n of t){let t=this._cloneRelation(n);e.set(n,t)}return e}#a(e){let t=this.#e.get(e);return t===void 0&&(t=[],this.#e.set(e,t)),t}#o(e,t){let n=this.#t[e].get(t);return n===void 0&&(n=[],this.#t[e].set(t,n)),n}#s(e,t){let n=t.get(e);if(n===void 0)throw Error(`Expecting model to be cloned, none found`);return n}#c(e,t){let n=t.get(e);if(n===void 0)throw Error(`Expecting relation to be cloned, none found`);return n}#l(e,t,n){for(let[r,i]of e){let e=[];for(let t of i)e.push(this.#s(t,n));t.set(r,e)}}#u(e,t,n,r){for(let[i,a]of e){let e=[];for(let t of a)e.push(this.#c(t,r));t.set(this.#s(i,n),e)}}#d(e,t){for(let n of Reflect.ownKeys(t))this.#f(e,n,t[n])}#f(e,t,n){let r=this.#t[t].get(n);if(r!==void 0){let i=r.indexOf(e);i!==-1&&r.splice(i,1),r.length===0&&this.#t[t].delete(n)}}},Ce;(function(e){e.moduleId=`moduleId`,e.serviceId=`serviceId`})(Ce||={});var we=class e{#e;#t;constructor(e,t){this.#e=t??new Se({moduleId:{isOptional:!0},serviceId:{isOptional:!1}}),this.#t=e}static build(t){return new e(t)}add(e,t){this.#e.add(e,t)}clone(){return new e(this.#t,this.#e.clone())}get(e){let t=[],n=this.#e.get(Ce.serviceId,e);n!==void 0&&t.push(n);let r=this.#t()?.get(e);if(r!==void 0&&t.push(r),t.length!==0)return xe(...t)}removeAllByModuleId(e){this.#e.removeByRelation(Ce.moduleId,e)}removeAllByServiceId(e){this.#e.removeByRelation(Ce.serviceId,e)}};const Te=`@inversifyjs/core/classMetadataReflectKey`;function Ee(){return{constructorArguments:[],lifecycle:{postConstructMethodNames:new Set,preDestroyMethodNames:new Set},properties:new Map,scope:void 0}}const De=`@inversifyjs/core/pendingClassMetadataCountReflectKey`,Oe=Symbol.for(`@inversifyjs/core/InversifyCoreError`);var ke=class e extends Error{[Oe];kind;constructor(e,t,n){super(t,n),this[Oe]=!0,this.kind=e}static is(e){return typeof e==`object`&&!!e&&!0===e[Oe]}static isErrorOfKind(t,n){return e.is(t)&&t.kind===n}},Ae,je,Me,Ne,Pe;function Fe(e){let t=pe(e,Te)??Ee();if(!function(e){let t=pe(e,De);return t!==void 0&&t!==0}(e))return function(e,t){let n=[];if(t.length<e.length)throw new ke(Ae.missingInjectionDecorator,`Found unexpected missing metadata on type "${e.name}". "${e.name}" constructor requires at least ${e.length.toString()} arguments, found ${t.length.toString()} instead.\nAre you using @inject, @multiInject or @unmanaged decorators in every non optional constructor argument?\n\nIf you're using typescript and want to rely on auto injection, set "emitDecoratorMetadata" compiler option to true`);for(let e=0;e<t.length;++e)t[e]===void 0&&n.push(e);if(n.length>0)throw new ke(Ae.missingInjectionDecorator,`Found unexpected missing metadata on type "${e.name}" at constructor indexes "${n.join(`", "`)}".\n\nAre you using @inject, @multiInject or @unmanaged decorators at those indexes?\n\nIf you're using typescript and want to rely on auto injection, set "emitDecoratorMetadata" compiler option to true`)}(e,t.constructorArguments),t;(function(e,t){let n=[];for(let r=0;r<t.constructorArguments.length;++r){let i=t.constructorArguments[r];i!==void 0&&i.kind!==je.unknown||n.push(` - Missing or incomplete metadata for type "${e.name}" at constructor argument with index ${r.toString()}.\nEvery constructor parameter must be decorated either with @inject, @multiInject or @unmanaged decorator.`)}for(let[r,i]of t.properties)i.kind===je.unknown&&n.push(` - Missing or incomplete metadata for type "${e.name}" at property "${r.toString()}".\nThis property must be decorated either with @inject or @multiInject decorator.`);throw n.length===0?new ke(Ae.unknown,`Unexpected class metadata for type "${e.name}" with uncompletion traces.\nThis might be caused by one of the following reasons:\n\n1. A third party library is targeting inversify reflection metadata.\n2. A bug is causing the issue. Consider submiting an issue to fix it.`):new ke(Ae.missingInjectionDecorator,`Invalid class metadata at type ${e.name}:\n\n${n.join(`
|
|
20
|
+
Expecting one of '${n.join(`', '`)}'`);let r=`${e}Help`;return this.on(r,e=>{let n;n=typeof t==`function`?t({error:e.error,command:e.command}):t,n&&e.write(`${n}\n`)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(e=>t.is(e))&&(this.outputHelp(),this._exit(0,`commander.helpDisplayed`,`(outputHelp)`))}};function h(e){return e.map(e=>{if(!e.startsWith(`--inspect`))return e;let t,n=`127.0.0.1`,r=`9229`,i;return(i=e.match(/^(--inspect(-brk)?)$/))===null?(i=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))===null?(i=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=i[1],n=i[3],r=i[4]):(t=i[1],/^\d+$/.test(i[3])?r=i[3]:n=i[3]):t=i[1],t&&r!==`0`?`${t}=${n}:${parseInt(r)+1}`:e})}function g(){if(a.env.NO_COLOR||a.env.FORCE_COLOR===`0`||a.env.FORCE_COLOR===`false`)return!1;if(a.env.FORCE_COLOR||a.env.CLICOLOR_FORCE!==void 0)return!0}e.Command=m,e.useColor=g}));const{program:ne,createCommand:N,createArgument:P,createOption:F,CommanderError:I,InvalidArgumentError:re,InvalidOptionArgumentError:ie,Command:L,Argument:R,Option:ae,Help:z}=u(s((e=>{let{Argument:t}=A(),{Command:n}=M(),{CommanderError:r,InvalidArgumentError:i}=k(),{Help:a}=ee(),{Option:o}=j();e.program=new n,e.createCommand=e=>new n(e),e.createOption=(e,t)=>new o(e,t),e.createArgument=(e,n)=>new t(e,n),e.Command=n,e.Option=o,e.Argument=t,e.Help=a,e.CommanderError=r,e.InvalidArgumentError=i,e.InvalidOptionArgumentError=i}))(),1).default;var oe=`2.4.5`,se=s((e=>{let t=e=>e!=null,n=e=>typeof e==`object`&&!!e,r=e=>Array.isArray(e),i=e=>e instanceof Map,a=e=>e instanceof Set,o=e=>e instanceof Date,s=e=>typeof e==`number`,c=e=>typeof e==`string`,l=e=>typeof e==`boolean`,u=e=>e instanceof Error,d=e=>t(e)?c(e)||r(e)?e.length===0:i(e)||a(e)?e.size===0:o(e)?!1:n(e)?Object.keys(e).length===0:!1:!0,f=e=>u(e)?e.message:`error is not Instance of Error`,p=(e,t)=>{let n=new Set(e);for(let e of n)t.includes(e)||n.delete(e);return[...n]},m=async(e,t)=>{let n=await Promise.all(e.map(e=>t(e)));return e.filter((e,t)=>n[t])},h=(e,t)=>{let n=[];for(let r of e)n.some(e=>t(r,e))||n.push(r);return n},g=e=>[...new Set(e)],_=async e=>Promise.all(e.map(e=>new Promise((t,n)=>e().then(e=>e?t(e):n(e)).catch(e=>n(e))))).then(()=>!0).catch(e=>{if(!l(e))throw e;return e}),v=e=>e.trim().replaceAll(/([\da-z])([A-Z])/g,`$1-$2`).replaceAll(/([A-Z])([A-Z][\da-z])/g,`$1-$2`).replaceAll(/[\s_]+/g,`-`).toLowerCase(),y=e=>e.replaceAll(/[\s-]+/g,` `).split(` `).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(``),b=e=>{let t=0;for(let n=0;n<e.length;n++){let r=e.codePointAt(n)??0;t=Math.trunc(t*31+r)}return t>>>0},x=(...e)=>{let n={};for(let r of e)for(let e in r)t(r[e])&&(n[e]=r[e]);return n},S=(e,t)=>r(e)?e.map(e=>S(e,t)):n(e)?Object.fromEntries(Object.entries(e).filter(([e])=>!t.includes(e)).map(([e,n])=>[e,S(n,t)])):e,C=(e,t)=>{let n;return(...r)=>{clearTimeout(n),n=setTimeout(()=>e(...r),t)}},w=(e,t)=>{let n=!1;return(...r)=>{n||(e(...r),n=!0,setTimeout(()=>{n=!1},t))}};var T=class{listeners=[];addListener(e){this.listeners.push(e)}notifyAll(e){for(let t of this.listeners)t(e)}clear(){this.listeners.length=0}},E=class{set=new Set;constructor(e=[]){for(let t of e)this.safeAdd(t)}safeAdd(e){return t(e)?(this.set.add(e),!0):!1}has(e){return t(e)?this.set.has(e):!1}delete(e){return t(e)?this.set.delete(e):!1}clear(){this.set.clear()}get size(){return this.set.size}values(){return this.set.values()}toSet(){return structuredClone(this.set)}[Symbol.iterator](){return this.set[Symbol.iterator]()}concatSet(e){for(let t of e)this.safeAdd(t)}};e.Observer=T,e.SafeSet=E,e.arePromiseFnsTruthy=_,e.debounce=C,e.fastHash=b,e.filterAsync=m,e.getErrorMessage=f,e.intersection=p,e.isArray=r,e.isBoolean=l,e.isDate=o,e.isDefined=t,e.isEmpty=d,e.isError=u,e.isMap=i,e.isNumber=s,e.isObject=n,e.isSet=a,e.isString=c,e.merge=x,e.removeNestedField=S,e.throttle=w,e.toCamelCase=y,e.toKebabCase=v,e.uniq=g,e.uniqWith=h})),B=se();function ce(e,t,n,{key:r=``,prefix:i=`EARLY`,parser:a,def:o,isRequired:s=!1,envName:c}={}){let l=new ae(t,n);a&&l.argParser(a),s&&l.makeOptionMandatory(!0);let u=c??(()=>{let n=[];for(let t=e;t&&(0,B.isDefined)(t.name());t=t.parent)t.parent&&n.unshift(t.name());return[i,...n,r||t.split(/[ ,|]/)[1].replace(/^--?/,``)].join(`_`).replaceAll(/[- ]/g,`_`).toUpperCase()})();return l.env(u),(0,B.isDefined)(o)&&l.default(o),e.addOption(l),l}function le(e){return(typeof e==`object`&&!!e||typeof e==`function`)&&typeof e.then==`function`}function ue(e){switch(typeof e){case`string`:case`symbol`:return e.toString();case`function`:return e.name;default:throw Error(`Unexpected ${typeof e} service id type`)}}const de=Symbol.for(`@inversifyjs/common/islazyServiceIdentifier`);var fe=class{[de];#e;constructor(e){this.#e=e,this[de]=!0}static is(e){return typeof e==`object`&&!!e&&!0===e[de]}unwrap(){return this.#e()}};function pe(e,t,n){return Reflect.getOwnMetadata(t,e,n)}function me(e,t,n,r){Reflect.defineMetadata(t,n,e,r)}function he(e,t,n,r,i){let a=r(pe(e,t,i)??n());Reflect.defineMetadata(t,a,e,i)}function ge(e){return Object.getPrototypeOf(e.prototype)?.constructor}const _e=`@inversifyjs/container/bindingId`;function ve(){let e=pe(Object,_e)??0;return e===2**53-1?me(Object,_e,-(2**53-1)):he(Object,_e,()=>e,e=>e+1),e}const ye={Request:`Request`,Singleton:`Singleton`,Transient:`Transient`},be={ConstantValue:`ConstantValue`,DynamicValue:`DynamicValue`,Factory:`Factory`,Instance:`Instance`,Provider:`Provider`,ResolvedValue:`ResolvedValue`,ServiceRedirection:`ServiceRedirection`};function*xe(...e){for(let t of e)yield*t}var Se=class e{#e;#t;#n;constructor(e){this.#e=new Map,this.#t={};for(let t of Reflect.ownKeys(e))this.#t[t]=new Map;this.#n=e}add(e,t){this.#a(e).push(t);for(let n of Reflect.ownKeys(t))this.#o(n,t[n]).push(e)}clone(){let e=this.#r(),t=this.#i(),n=Reflect.ownKeys(this.#n),r=this._buildNewInstance(this.#n);this.#u(this.#e,r.#e,e,t);for(let t of n)this.#l(this.#t[t],r.#t[t],e);return r}get(e,t){return this.#t[e].get(t)}getAllKeys(e){return this.#t[e].keys()}removeByRelation(e,t){let n=this.get(e,t);if(n===void 0)return;let r=new Set(n);for(let n of r){let r=this.#e.get(n);if(r===void 0)throw Error(`Expecting model relation, none found`);for(let i of r)i[e]===t&&this.#d(n,i);this.#e.delete(n)}}_buildNewInstance(t){return new e(t)}_cloneModel(e){return e}_cloneRelation(e){return e}#r(){let e=new Map;for(let t of this.#e.keys()){let n=this._cloneModel(t);e.set(t,n)}return e}#i(){let e=new Map;for(let t of this.#e.values())for(let n of t){let t=this._cloneRelation(n);e.set(n,t)}return e}#a(e){let t=this.#e.get(e);return t===void 0&&(t=[],this.#e.set(e,t)),t}#o(e,t){let n=this.#t[e].get(t);return n===void 0&&(n=[],this.#t[e].set(t,n)),n}#s(e,t){let n=t.get(e);if(n===void 0)throw Error(`Expecting model to be cloned, none found`);return n}#c(e,t){let n=t.get(e);if(n===void 0)throw Error(`Expecting relation to be cloned, none found`);return n}#l(e,t,n){for(let[r,i]of e){let e=[];for(let t of i)e.push(this.#s(t,n));t.set(r,e)}}#u(e,t,n,r){for(let[i,a]of e){let e=[];for(let t of a)e.push(this.#c(t,r));t.set(this.#s(i,n),e)}}#d(e,t){for(let n of Reflect.ownKeys(t))this.#f(e,n,t[n])}#f(e,t,n){let r=this.#t[t].get(n);if(r!==void 0){let i=r.indexOf(e);i!==-1&&r.splice(i,1),r.length===0&&this.#t[t].delete(n)}}},Ce;(function(e){e.moduleId=`moduleId`,e.serviceId=`serviceId`})(Ce||={});var we=class e{#e;#t;constructor(e,t){this.#e=t??new Se({moduleId:{isOptional:!0},serviceId:{isOptional:!1}}),this.#t=e}static build(t){return new e(t)}add(e,t){this.#e.add(e,t)}clone(){return new e(this.#t,this.#e.clone())}get(e){let t=[],n=this.#e.get(Ce.serviceId,e);n!==void 0&&t.push(n);let r=this.#t()?.get(e);if(r!==void 0&&t.push(r),t.length!==0)return xe(...t)}removeAllByModuleId(e){this.#e.removeByRelation(Ce.moduleId,e)}removeAllByServiceId(e){this.#e.removeByRelation(Ce.serviceId,e)}};const Te=`@inversifyjs/core/classMetadataReflectKey`;function Ee(){return{constructorArguments:[],lifecycle:{postConstructMethodNames:new Set,preDestroyMethodNames:new Set},properties:new Map,scope:void 0}}const De=`@inversifyjs/core/pendingClassMetadataCountReflectKey`,Oe=Symbol.for(`@inversifyjs/core/InversifyCoreError`);var ke=class e extends Error{[Oe];kind;constructor(e,t,n){super(t,n),this[Oe]=!0,this.kind=e}static is(e){return typeof e==`object`&&!!e&&!0===e[Oe]}static isErrorOfKind(t,n){return e.is(t)&&t.kind===n}},Ae,je,Me,Ne,Pe;function Fe(e){let t=pe(e,Te)??Ee();if(!function(e){let t=pe(e,De);return t!==void 0&&t!==0}(e))return function(e,t){let n=[];if(t.length<e.length)throw new ke(Ae.missingInjectionDecorator,`Found unexpected missing metadata on type "${e.name}". "${e.name}" constructor requires at least ${e.length.toString()} arguments, found ${t.length.toString()} instead.\nAre you using @inject, @multiInject or @unmanaged decorators in every non optional constructor argument?\n\nIf you're using typescript and want to rely on auto injection, set "emitDecoratorMetadata" compiler option to true`);for(let e=0;e<t.length;++e)t[e]===void 0&&n.push(e);if(n.length>0)throw new ke(Ae.missingInjectionDecorator,`Found unexpected missing metadata on type "${e.name}" at constructor indexes "${n.join(`", "`)}".\n\nAre you using @inject, @multiInject or @unmanaged decorators at those indexes?\n\nIf you're using typescript and want to rely on auto injection, set "emitDecoratorMetadata" compiler option to true`)}(e,t.constructorArguments),t;(function(e,t){let n=[];for(let r=0;r<t.constructorArguments.length;++r){let i=t.constructorArguments[r];i!==void 0&&i.kind!==je.unknown||n.push(` - Missing or incomplete metadata for type "${e.name}" at constructor argument with index ${r.toString()}.\nEvery constructor parameter must be decorated either with @inject, @multiInject or @unmanaged decorator.`)}for(let[r,i]of t.properties)i.kind===je.unknown&&n.push(` - Missing or incomplete metadata for type "${e.name}" at property "${r.toString()}".\nThis property must be decorated either with @inject or @multiInject decorator.`);throw n.length===0?new ke(Ae.unknown,`Unexpected class metadata for type "${e.name}" with uncompletion traces.\nThis might be caused by one of the following reasons:\n\n1. A third party library is targeting inversify reflection metadata.\n2. A bug is causing the issue. Consider submiting an issue to fix it.`):new ke(Ae.missingInjectionDecorator,`Invalid class metadata at type ${e.name}:\n\n${n.join(`
|
|
21
21
|
|
|
22
22
|
`)}`)})(e,t)}function Ie(e,t){let n=Fe(t).scope??e.scope;return{cache:{isRight:!1,value:void 0},id:ve(),implementationType:t,isSatisfiedBy:()=>!0,moduleId:void 0,onActivation:void 0,onDeactivation:void 0,scope:n,serviceIdentifier:t,type:be.Instance}}function Le(e){return e.isRight?{isRight:!0,value:e.value}:e}function Re(e){switch(e.type){case be.ConstantValue:case be.DynamicValue:return function(e){return{cache:Le(e.cache),id:e.id,isSatisfiedBy:e.isSatisfiedBy,moduleId:e.moduleId,onActivation:e.onActivation,onDeactivation:e.onDeactivation,scope:e.scope,serviceIdentifier:e.serviceIdentifier,type:e.type,value:e.value}}(e);case be.Factory:return function(e){return{cache:Le(e.cache),factory:e.factory,id:e.id,isSatisfiedBy:e.isSatisfiedBy,moduleId:e.moduleId,onActivation:e.onActivation,onDeactivation:e.onDeactivation,scope:e.scope,serviceIdentifier:e.serviceIdentifier,type:e.type}}(e);case be.Instance:return function(e){return{cache:Le(e.cache),id:e.id,implementationType:e.implementationType,isSatisfiedBy:e.isSatisfiedBy,moduleId:e.moduleId,onActivation:e.onActivation,onDeactivation:e.onDeactivation,scope:e.scope,serviceIdentifier:e.serviceIdentifier,type:e.type}}(e);case be.Provider:return function(e){return{cache:Le(e.cache),id:e.id,isSatisfiedBy:e.isSatisfiedBy,moduleId:e.moduleId,onActivation:e.onActivation,onDeactivation:e.onDeactivation,provider:e.provider,scope:e.scope,serviceIdentifier:e.serviceIdentifier,type:e.type}}(e);case be.ResolvedValue:return function(e){return{cache:Le(e.cache),factory:e.factory,id:e.id,isSatisfiedBy:e.isSatisfiedBy,metadata:e.metadata,moduleId:e.moduleId,onActivation:e.onActivation,onDeactivation:e.onDeactivation,scope:e.scope,serviceIdentifier:e.serviceIdentifier,type:e.type}}(e);case be.ServiceRedirection:return function(e){return{id:e.id,isSatisfiedBy:e.isSatisfiedBy,moduleId:e.moduleId,serviceIdentifier:e.serviceIdentifier,targetServiceIdentifier:e.targetServiceIdentifier,type:e.type}}(e)}}(function(e){e[e.injectionDecoratorConflict=0]=`injectionDecoratorConflict`,e[e.missingInjectionDecorator=1]=`missingInjectionDecorator`,e[e.planning=2]=`planning`,e[e.resolution=3]=`resolution`,e[e.unknown=4]=`unknown`})(Ae||={}),function(e){e[e.unknown=32]=`unknown`}(je||={}),function(e){e.id=`id`,e.moduleId=`moduleId`,e.serviceId=`serviceId`}(Me||={});var ze=class e extends Se{_buildNewInstance(t){return new e(t)}_cloneModel(e){return Re(e)}},Be=class e{#e;#t;#n;constructor(e,t,n){this.#t=n??new ze({id:{isOptional:!1},moduleId:{isOptional:!0},serviceId:{isOptional:!1}}),this.#n=e,this.#e=t}static build(t,n){return new e(t,n)}clone(){return new e(this.#n,this.#e,this.#t.clone())}get(e){let t=this.getNonParentBindings(e)??this.#n()?.get(e);if(t!==void 0)return t;let n=this.#r(e);return n===void 0?n:[n]}*getChained(e){let t=this.getNonParentBindings(e);t!==void 0&&(yield*t);let n=this.#n();if(n===void 0){if(t===void 0){let t=this.#r(e);t!==void 0&&(yield t)}}else yield*n.getChained(e)}getBoundServices(){let e=new Set(this.#t.getAllKeys(Me.serviceId)),t=this.#n();if(t!==void 0)for(let n of t.getBoundServices())e.add(n);return e}getById(e){return this.#t.get(Me.id,e)??this.#n()?.getById(e)}getByModuleId(e){return this.#t.get(Me.moduleId,e)??this.#n()?.getByModuleId(e)}getNonParentBindings(e){return this.#t.get(Me.serviceId,e)}getNonParentBoundServices(){return this.#t.getAllKeys(Me.serviceId)}removeById(e){this.#t.removeByRelation(Me.id,e)}removeAllByModuleId(e){this.#t.removeByRelation(Me.moduleId,e)}removeAllByServiceId(e){this.#t.removeByRelation(Me.serviceId,e)}set(e){let t={[Me.id]:e.id,[Me.serviceId]:e.serviceIdentifier};e.moduleId!==void 0&&(t[Me.moduleId]=e.moduleId),this.#t.add(e,t)}#r(e){if(this.#e===void 0||typeof e!=`function`)return;let t=Ie(this.#e,e);return this.set(t),t}};(function(e){e.moduleId=`moduleId`,e.serviceId=`serviceId`})(Ne||={});var Ve=class e{#e;#t;constructor(e,t){this.#e=t??new Se({moduleId:{isOptional:!0},serviceId:{isOptional:!1}}),this.#t=e}static build(t){return new e(t)}add(e,t){this.#e.add(e,t)}clone(){return new e(this.#t,this.#e.clone())}get(e){let t=[],n=this.#e.get(Ne.serviceId,e);n!==void 0&&t.push(n);let r=this.#t()?.get(e);if(r!==void 0&&t.push(r),t.length!==0)return xe(...t)}removeAllByModuleId(e){this.#e.removeByRelation(Ne.moduleId,e)}removeAllByServiceId(e){this.#e.removeByRelation(Ne.serviceId,e)}};function He(){return 0}function V(e){return t=>{t!==void 0&&t.kind===je.unknown&&he(e,De,He,e=>e-1)}}function Ue(e,t){return(...n)=>r=>{if(r===void 0)return e(...n);if(r.kind===Pe.unmanaged)throw new ke(Ae.injectionDecoratorConflict,`Unexpected injection found. Multiple @inject, @multiInject or @unmanaged decorators found`);return t(r,...n)}}function We(e){if(e.kind!==je.unknown&&!0!==e.isFromTypescriptParamType)throw new ke(Ae.injectionDecoratorConflict,`Unexpected injection found. Multiple @inject, @multiInject or @unmanaged decorators found`)}(function(e){e[e.multipleInjection=0]=`multipleInjection`,e[e.singleInjection=1]=`singleInjection`,e[e.unmanaged=2]=`unmanaged`})(Pe||={});const Ge=Ue(function(e,t,n){return e===Pe.multipleInjection?{chained:n?.chained??!1,kind:e,name:void 0,optional:!1,tags:new Map,value:t}:{kind:e,name:void 0,optional:!1,tags:new Map,value:t}},function(e,t,n,r){return We(e),t===Pe.multipleInjection?{...e,chained:r?.chained??!1,kind:t,value:n}:{...e,kind:t,value:n}});function Ke(e,t){return n=>{let r=n.properties.get(t);return n.properties.set(t,e(r)),n}}var qe;function Je(e,t,n,r){if(ke.isErrorOfKind(r,Ae.injectionDecoratorConflict)){let i=function(e,t,n){if(n===void 0){if(t===void 0)throw new ke(Ae.unknown,`Unexpected undefined property and index values`);return{kind:qe.property,property:t,targetClass:e.constructor}}return typeof n==`number`?{index:n,kind:qe.parameter,targetClass:e}:{kind:qe.method,method:t,targetClass:e}}(e,t,n);throw new ke(Ae.injectionDecoratorConflict,`Unexpected injection error.\n\nCause:\n\n${r.message}\n\nDetails\n\n${function(e){switch(e.kind){case qe.method:return`[class: "${e.targetClass.name}", method: "${e.method.toString()}"]`;case qe.parameter:return`[class: "${e.targetClass.name}", index: "${e.index.toString()}"]`;case qe.property:return`[class: "${e.targetClass.name}", property: "${e.property.toString()}"]`}}(i)}`,{cause:r})}throw r}function Ye(e,t){return(n,r,i)=>{try{i===void 0?function(e,t){let n=Xe(e,t);return(e,t)=>{he(e.constructor,Te,Ee,Ke(n(e),t))}}(e,t)(n,r):typeof i==`number`?function(e,t){let n=Xe(e,t);return(e,t,r)=>{if(!function(e,t){return typeof e==`function`&&t===void 0}(e,t))throw new ke(Ae.injectionDecoratorConflict,`Found an @inject decorator in a non constructor parameter.\nFound @inject decorator at method "${t?.toString()??``}" at class "${e.constructor.name}"`);he(e,Te,Ee,function(e,t){return n=>{let r=n.constructorArguments[t];return n.constructorArguments[t]=e(r),n}}(n(e),r))}}(e,t)(n,r,i):function(e,t){let n=Xe(e,t);return(e,t,r)=>{if(!function(e){return e.set!==void 0}(r))throw new ke(Ae.injectionDecoratorConflict,`Found an @inject decorator in a non setter property method.\nFound @inject decorator at method "${t.toString()}" at class "${e.constructor.name}"`);he(e.constructor,Te,Ee,Ke(n(e),t))}}(e,t)(n,r,i)}catch(e){Je(n,r,i,e)}}}function Xe(e,t){return n=>{let r=t(n);return t=>(r(t),e(t))}}function Ze(e){return Ye(Ge(Pe.singleInjection,e),V)}(function(e){e[e.method=0]=`method`,e[e.parameter=1]=`parameter`,e[e.property=2]=`property`})(qe||={});const Qe=`@inversifyjs/core/classIsInjectableFlagReflectKey`,H=[Array,BigInt,Boolean,Function,Number,Object,String];function $e(e){let t=pe(e,`design:paramtypes`);t!==void 0&&he(e,Te,Ee,function(e){return t=>(e.forEach((e,n)=>{var r;t.constructorArguments[n]!==void 0||(r=e,H.includes(r))||(t.constructorArguments[n]=function(e){return{isFromTypescriptParamType:!0,kind:Pe.singleInjection,name:void 0,optional:!1,tags:new Map,value:e}}(e))}),t)}(t))}function et(e){return t=>{(function(e){if(pe(e,Qe)!==void 0)throw new ke(Ae.injectionDecoratorConflict,`Cannot apply @injectable decorator multiple times at class "${e.name}"`);me(e,Qe,!0)})(t),$e(t),e!==void 0&&he(t,Te,Ee,t=>({...t,scope:e}))}}function tt(e,t,n){let r;return e.extendConstructorArguments??!0?(r=[...t.constructorArguments],n.constructorArguments.map((e,t)=>{r[t]=e})):r=n.constructorArguments,r}function nt(e,t,n){return e?new Set([...t,...n]):n}function rt(e,t,n){let r=e.lifecycle?.extendPostConstructMethods??!0,i=nt(e.lifecycle?.extendPreDestroyMethods??!0,t.lifecycle.preDestroyMethodNames,n.lifecycle.preDestroyMethodNames);return{postConstructMethodNames:nt(r,t.lifecycle.postConstructMethodNames,n.lifecycle.postConstructMethodNames),preDestroyMethodNames:i}}function it(e,t,n){let r;return r=e.extendProperties??!0?new Map(xe(t.properties,n.properties)):n.properties,r}function at(e){return t=>{he(t,Te,Ee,function(e,t){return n=>({constructorArguments:tt(e,t,n),lifecycle:rt(e,t,n),properties:it(e,t,n),scope:n.scope})}(e,Fe(e.type)))}}function ot(e){return t=>{let n=ge(t);if(n===void 0)throw new ke(Ae.injectionDecoratorConflict,`Expected base type for type "${t.name}", none found.`);at({...e,type:n})(t)}}function st(e){return t=>{let n=[],r=ge(t);for(;r!==void 0&&r!==Object;){let e=r;n.push(e),r=ge(e)}n.reverse();for(let r of n)at({...e,type:r})(t)}}function U(e){return t=>{t===void 0&&he(e,De,He,e=>e+1)}}function ct(e){return t=>{let n=t??{kind:je.unknown,name:void 0,optional:!1,tags:new Map};if(n.kind===Pe.unmanaged)throw new ke(Ae.injectionDecoratorConflict,`Unexpected injection found. Found @unmanaged injection with additional @named, @optional, @tagged or @targetName injections`);return e(n)}}function lt(e){if(e.optional)throw new ke(Ae.injectionDecoratorConflict,`Unexpected duplicated optional decorator`);return e.optional=!0,e}function ut(){return Ye(ct(lt),U)}var dt;function ft(e){return e instanceof Error?e instanceof RangeError&&/stack space|call stack|too much recursion/i.test(e.message)||e.name===`InternalError`&&/too much recursion/.test(e.message):!1}function pt(e,t){if(ft(t)){let n=function(e){let t=[...e];return t.length===0?`(No dependency trace)`:t.map(ue).join(` -> `)}(function(e){let t=new Set;for(let n of e.servicesBranch){if(t.has(n))return[...t,n];t.add(n)}return[...t]}(e));throw new ke(Ae.planning,`Circular dependency found: ${n}`,{cause:t})}throw t}(function(e){e[e.multipleInjection=0]=`multipleInjection`,e[e.singleInjection=1]=`singleInjection`})(dt||={});const mt=Symbol.for(`@inversifyjs/core/LazyPlanServiceNode`);var ht=class{[mt];_serviceIdentifier;_serviceNode;constructor(e,t){this[mt]=!0,this._serviceNode=e,this._serviceIdentifier=t}get bindings(){return this._getNode().bindings}get isContextFree(){return this._getNode().isContextFree}get serviceIdentifier(){return this._serviceIdentifier}set bindings(e){this._getNode().bindings=e}set isContextFree(e){this._getNode().isContextFree=e}static is(e){return typeof e==`object`&&!!e&&!0===e[mt]}invalidate(){this._serviceNode=void 0}isExpanded(){return this._serviceNode!==void 0}_getNode(){return this._serviceNode===void 0&&(this._serviceNode=this._buildPlanServiceNode()),this._serviceNode}},gt=class e{#e;constructor(e){this.#e=e}get name(){return this.#e.elem.name}get serviceIdentifier(){return this.#e.elem.serviceIdentifier}get tags(){return this.#e.elem.tags}getAncestor(){if(this.#e.elem.getAncestorsCalled=!0,this.#e.previous!==void 0)return new e(this.#e.previous)}};function _t(e,t,n){let r=n?.customServiceIdentifier??t.serviceIdentifier,i=(!0===n?.chained?[...e.operations.getBindingsChained(r)]:[...e.operations.getBindings(r)??[]]).filter(e=>e.isSatisfiedBy(t));if(i.length===0&&e.autobindOptions!==void 0&&typeof r==`function`){let n=Ie(e.autobindOptions,r);e.operations.setBinding(n),n.isSatisfiedBy(t)&&i.push(n)}return i}var vt=class e{last;constructor(e){this.last=e}concat(t){return new e({elem:t,previous:this.last})}[Symbol.iterator](){let e=this.last;return{next:()=>{if(e===void 0)return{done:!0,value:void 0};let t=e.elem;return e=e.previous,{done:!1,value:t}}}}};function yt(e){let t=new Map;return e.rootConstraints.tag!==void 0&&t.set(e.rootConstraints.tag.key,e.rootConstraints.tag.value),new vt({elem:{getAncestorsCalled:!1,name:e.rootConstraints.name,serviceIdentifier:e.rootConstraints.serviceIdentifier,tags:t},previous:void 0})}function bt(e){return e.redirections!==void 0}function xt(e,t,n,r){let i=n.elem.serviceIdentifier,a=n.previous?.elem.serviceIdentifier;Array.isArray(e)?function(e,t,n,r,i,a){if(e.length!==0){let t=`Ambiguous bindings found for service: "${ue(a[a.length-1]??n)}".${Tt(a)}\n\nRegistered bindings:\n\n${e.map(e=>function(e){switch(e.type){case be.Instance:return`[ type: "${e.type}", serviceIdentifier: "${ue(e.serviceIdentifier)}", scope: "${e.scope}", implementationType: "${e.implementationType.name}" ]`;case be.ServiceRedirection:return`[ type: "${e.type}", serviceIdentifier: "${ue(e.serviceIdentifier)}", redirection: "${ue(e.targetServiceIdentifier)}" ]`;default:return`[ type: "${e.type}", serviceIdentifier: "${ue(e.serviceIdentifier)}", scope: "${e.scope}" ]`}}(e.binding)).join(`
|
|
23
23
|
`)}\n\nTrying to resolve bindings for "${Ct(n,r)}".${wt(i)}`;throw new ke(Ae.planning,t)}t||St(n,r,i,a)}(e,t,i,a,n.elem,r):function(e,t,n,r,i,a){e!==void 0||t||St(n,r,i,a)}(e,t,i,a,n.elem,r)}function St(e,t,n,r){let i=`No bindings found for service: "${ue(r[r.length-1]??e)}".\n\nTrying to resolve bindings for "${Ct(e,t)}".${Tt(r)}${wt(n)}`;throw new ke(Ae.planning,i)}function Ct(e,t){return t===void 0?`${ue(e)} (Root service)`:ue(t)}function wt(e){let t=e.tags.size===0?``:`\n- tags:\n - ${[...e.tags.keys()].map(e=>e.toString()).join(`
|
|
@@ -32002,7 +32002,7 @@ https://www.w3ctech.com/topic/2226`));let i=t(...r);return i.postcssPlugin=e,i.p
|
|
|
32002
32002
|
`);let t=new x(`!xml`),n=t,r=``,i=``,a=new S(this.options.processEntities);for(let o=0;o<e.length;o++)if(e[o]===`<`)if(e[o+1]===`/`){let t=L(e,`>`,o,`Closing Tag is not closed.`),a=e.substring(o+2,t).trim();if(this.options.removeNSPrefix){let e=a.indexOf(`:`);e!==-1&&(a=a.substr(e+1))}this.options.transformTagName&&(a=this.options.transformTagName(a)),n&&(r=this.saveTextToParentTag(r,n,i));let s=i.substring(i.lastIndexOf(`.`)+1);if(a&&this.options.unpairedTags.indexOf(a)!==-1)throw Error(`Unpaired tag can not be used as closing tag: </${a}>`);let c=0;s&&this.options.unpairedTags.indexOf(s)!==-1?(c=i.lastIndexOf(`.`,i.lastIndexOf(`.`)-1),this.tagsNodeStack.pop()):c=i.lastIndexOf(`.`),i=i.substring(0,c),n=this.tagsNodeStack.pop(),r=``,o=t}else if(e[o+1]===`?`){let t=R(e,o,!1,`?>`);if(!t)throw Error(`Pi Tag is not closed.`);if(r=this.saveTextToParentTag(r,n,i),!(this.options.ignoreDeclaration&&t.tagName===`?xml`||this.options.ignorePiTags)){let e=new x(t.tagName);e.add(this.options.textNodeName,``),t.tagName!==t.tagExp&&t.attrExpPresent&&(e[`:@`]=this.buildAttributesMap(t.tagExp,i,t.tagName)),this.addChild(n,e,i,o)}o=t.closeIndex+1}else if(e.substr(o+1,3)===`!--`){let t=L(e,`-->`,o+4,`Comment is not closed.`);if(this.options.commentPropName){let a=e.substring(o+4,t-2);r=this.saveTextToParentTag(r,n,i),n.add(this.options.commentPropName,[{[this.options.textNodeName]:a}])}o=t}else if(e.substr(o+1,2)===`!D`){let t=a.readDocType(e,o);this.docTypeEntities=t.entities,o=t.i}else if(e.substr(o+1,2)===`![`){let t=L(e,`]]>`,o,`CDATA is not closed.`)-2,a=e.substring(o+9,t);r=this.saveTextToParentTag(r,n,i);let s=this.parseTextData(a,n.tagname,i,!0,!1,!0,!0);s??=``,this.options.cdataPropName?n.add(this.options.cdataPropName,[{[this.options.textNodeName]:a}]):n.add(this.options.textNodeName,s),o=t+2}else{let a=R(e,o,this.options.removeNSPrefix),s=a.tagName,c=a.rawTagName,l=a.tagExp,u=a.attrExpPresent,d=a.closeIndex;this.options.transformTagName&&(s=this.options.transformTagName(s)),n&&r&&n.tagname!==`!xml`&&(r=this.saveTextToParentTag(r,n,i,!1));let f=n;f&&this.options.unpairedTags.indexOf(f.tagname)!==-1&&(n=this.tagsNodeStack.pop(),i=i.substring(0,i.lastIndexOf(`.`))),s!==t.tagname&&(i+=i?`.`+s:s);let p=o;if(this.isItStopNode(this.stopNodesExact,this.stopNodesWildcard,i,s)){let t=``;if(l.length>0&&l.lastIndexOf(`/`)===l.length-1)s[s.length-1]===`/`?(s=s.substr(0,s.length-1),i=i.substr(0,i.length-1),l=s):l=l.substr(0,l.length-1),o=a.closeIndex;else if(this.options.unpairedTags.indexOf(s)!==-1)o=a.closeIndex;else{let n=this.readStopNodeData(e,c,d+1);if(!n)throw Error(`Unexpected end of ${c}`);o=n.i,t=n.tagContent}let r=new x(s);s!==l&&u&&(r[`:@`]=this.buildAttributesMap(l,i,s)),t&&=this.parseTextData(t,s,i,!0,u,!0,!0),i=i.substr(0,i.lastIndexOf(`.`)),r.add(this.options.textNodeName,t),this.addChild(n,r,i,p)}else{if(l.length>0&&l.lastIndexOf(`/`)===l.length-1){s[s.length-1]===`/`?(s=s.substr(0,s.length-1),i=i.substr(0,i.length-1),l=s):l=l.substr(0,l.length-1),this.options.transformTagName&&(s=this.options.transformTagName(s));let e=new x(s);s!==l&&u&&(e[`:@`]=this.buildAttributesMap(l,i,s)),this.addChild(n,e,i,p),i=i.substr(0,i.lastIndexOf(`.`))}else{let e=new x(s);this.tagsNodeStack.push(n),s!==l&&u&&(e[`:@`]=this.buildAttributesMap(l,i,s)),this.addChild(n,e,i,p),n=e}r=``,o=d}}else r+=e[o];return t.child};function F(e,t,n,r){this.options.captureMetaData||(r=void 0);let i=this.options.updateTag(t.tagname,n,t[`:@`]);!1===i||(typeof i==`string`&&(t.tagname=i),e.addChild(t,r))}let I=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){let n=this.docTypeEntities[t];e=e.replace(n.regx,n.val)}for(let t in this.lastEntities){let n=this.lastEntities[t];e=e.replace(n.regex,n.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){let n=this.htmlEntities[t];e=e.replace(n.regex,n.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function re(e,t,n,r){return e&&=(r===void 0&&(r=t.child.length===0),(e=this.parseTextData(e,t.tagname,n,!1,!!t[`:@`]&&Object.keys(t[`:@`]).length!==0,r))!==void 0&&e!==``&&t.add(this.options.textNodeName,e),``),e}function ie(e,t,n,r){return!(!t||!t.has(r))||!(!e||!e.has(n))}function L(e,t,n,r){let i=e.indexOf(t,n);if(i===-1)throw Error(r);return i+t.length-1}function R(e,t,n,r=`>`){let i=function(e,t,n=`>`){let r,i=``;for(let a=t;a<e.length;a++){let t=e[a];if(r)t===r&&(r=``);else if(t===`"`||t===`'`)r=t;else if(t===n[0]){if(!n[1]||e[a+1]===n[1])return{data:i,index:a}}else t===` `&&(t=` `);i+=t}}(e,t+1,r);if(!i)return;let a=i.data,o=i.index,s=a.search(/\s/),c=a,l=!0;s!==-1&&(c=a.substring(0,s),a=a.substring(s+1).trimStart());let u=c;if(n){let e=c.indexOf(`:`);e!==-1&&(c=c.substr(e+1),l=c!==i.data.substr(e+1))}return{tagName:c,tagExp:a,closeIndex:o,attrExpPresent:l,rawTagName:u}}function ae(e,t,n){let r=n,i=1;for(;n<e.length;n++)if(e[n]===`<`)if(e[n+1]===`/`){let a=L(e,`>`,n,`${t} is not closed`);if(e.substring(n+2,a).trim()===t&&(i--,i===0))return{tagContent:e.substring(r,n),i:a};n=a}else if(e[n+1]===`?`)n=L(e,`?>`,n+1,`StopNode is not closed.`);else if(e.substr(n+1,3)===`!--`)n=L(e,`-->`,n+3,`StopNode is not closed.`);else if(e.substr(n+1,2)===`![`)n=L(e,`]]>`,n,`StopNode is not closed.`)-2;else{let r=R(e,n,`>`);r&&((r&&r.tagName)===t&&r.tagExp[r.tagExp.length-1]!==`/`&&i++,n=r.closeIndex)}}function z(e,t,n){if(t&&typeof e==`string`){let t=e.trim();return t===`true`||t!==`false`&&function(e,t={}){if(t=Object.assign({},O,t),!e||typeof e!=`string`)return e;let n=e.trim();if(t.skipLike!==void 0&&t.skipLike.test(n))return e;if(e===`0`)return 0;if(t.hex&&E.test(n))return function(e){if(parseInt)return parseInt(e,16);if(Number.parseInt)return Number.parseInt(e,16);if(window&&window.parseInt)return window.parseInt(e,16);throw Error(`parseInt, Number.parseInt, window.parseInt are not supported`)}(n);if(n.search(/.+[eE].+/)!==-1)return function(e,t,n){if(!n.eNotation)return e;let r=t.match(k);if(r){let i=r[1]||``,a=r[3].indexOf(`e`)===-1?`E`:`e`,o=r[2],s=i?e[o.length+1]===a:e[o.length]===a;return o.length>1&&s?e:o.length!==1||!r[3].startsWith(`.${a}`)&&r[3][0]!==a?n.leadingZeros&&!s?(t=(r[1]||``)+r[3],Number(t)):e:Number(t)}return e}(e,n,t);{let i=D.exec(n);if(i){let a=i[1]||``,o=i[2],s=((r=i[3])&&r.indexOf(`.`)!==-1&&((r=r.replace(/0+$/,``))===`.`?r=`0`:r[0]===`.`?r=`0`+r:r[r.length-1]===`.`&&(r=r.substring(0,r.length-1))),r),c=a?e[o.length+1]===`.`:e[o.length]===`.`;if(!t.leadingZeros&&(o.length>1||o.length===1&&!c))return e;{let r=Number(n),i=String(r);if(r===0||r===-0)return r;if(i.search(/[eE]/)!==-1)return t.eNotation?r:e;if(n.indexOf(`.`)!==-1)return i===`0`||i===s||i===`${a}${s}`?r:e;let c=o?s:n;return o?c===i||a+c===i?r:e:c===i||c===a+i?r:e}}return e}var r}(e,n)}return e===void 0?``:e}let oe=x.getMetaDataSymbol();function se(e,t){return B(e,t)}function B(e,t,n){let r,i={};for(let a=0;a<e.length;a++){let o=e[a],s=ce(o),c=``;if(c=n===void 0?s:n+`.`+s,s===t.textNodeName)r===void 0?r=o[s]:r+=``+o[s];else{if(s===void 0)continue;if(o[s]){let e=B(o[s],t,c),n=ue(e,t);o[oe]!==void 0&&(e[oe]=o[oe]),o[`:@`]?le(e,o[`:@`],c,t):Object.keys(e).length!==1||e[t.textNodeName]===void 0||t.alwaysCreateTextNode?Object.keys(e).length===0&&(t.alwaysCreateTextNode?e[t.textNodeName]=``:e=``):e=e[t.textNodeName],i[s]!==void 0&&i.hasOwnProperty(s)?(Array.isArray(i[s])||(i[s]=[i[s]]),i[s].push(e)):t.isArray(s,c,n)?i[s]=[e]:i[s]=e}}}return typeof r==`string`?r.length>0&&(i[t.textNodeName]=r):r!==void 0&&(i[t.textNodeName]=r),i}function ce(e){let t=Object.keys(e);for(let e=0;e<t.length;e++){let n=t[e];if(n!==`:@`)return n}}function le(e,t,n,r){if(t){let i=Object.keys(t),a=i.length;for(let o=0;o<a;o++){let a=i[o];r.isArray(a,n+`.`+a,!0,!0)?e[a]=[t[a]]:e[a]=t[a]}}}function ue(e,t){let{textNodeName:n}=t,r=Object.keys(e).length;return r===0||!(r!==1||!e[n]&&typeof e[n]!=`boolean`&&e[n]!==0)}class de{constructor(e){this.externalEntities={},this.options=function(e){return Object.assign({},y,e)}(e)}parse(e,t){if(typeof e!=`string`&&e.toString)e=e.toString();else if(typeof e!=`string`)throw Error(`XML data is accepted in String or Bytes[] form.`);if(t){!0===t&&(t={});let n=s(e,t);if(!0!==n)throw Error(`${n.err.msg}:${n.err.line}:${n.err.col}`)}let n=new ee(this.options);n.addExternalEntities(this.externalEntities);let r=n.parseXml(e);return this.options.preserveOrder||r===void 0?r:se(r,this.options)}addEntity(e,t){if(t.indexOf(`&`)!==-1)throw Error(`Entity value can't have '&'`);if(e.indexOf(`&`)!==-1||e.indexOf(`;`)!==-1)throw Error(`An entity must be set without '&' and ';'. Eg. use '#xD' for '
'`);if(t===`&`)throw Error(`An entity with value '&' is not permitted`);this.externalEntities[e]=t}static getMetaDataSymbol(){return x.getMetaDataSymbol()}}function fe(e,t){let n=``;return t.format&&t.indentBy.length>0&&(n=`
|
|
32003
32003
|
`),pe(e,t,``,n)}function pe(e,t,n,r){let i=``,a=!1;for(let o=0;o<e.length;o++){let s=e[o],c=me(s);if(c===void 0)continue;let l=``;if(l=n.length===0?c:`${n}.${c}`,c===t.textNodeName){let e=s[c];ge(l,t)||(e=t.tagValueProcessor(c,e),e=_e(e,t)),a&&(i+=r),i+=e,a=!1;continue}if(c===t.cdataPropName){a&&(i+=r),i+=`<![CDATA[${s[c][0][t.textNodeName]}]]>`,a=!1;continue}if(c===t.commentPropName){i+=r+`\x3c!--${s[c][0][t.textNodeName]}--\x3e`,a=!0;continue}if(c[0]===`?`){let e=he(s[`:@`],t),n=c===`?xml`?``:r,o=s[c][0][t.textNodeName];o=o.length===0?``:` `+o,i+=n+`<${c}${o}${e}?>`,a=!0;continue}let u=r;u!==``&&(u+=t.indentBy);let d=r+`<${c}${he(s[`:@`],t)}`,f=pe(s[c],t,l,u);t.unpairedTags.indexOf(c)===-1?f&&f.length!==0||!t.suppressEmptyNode?f&&f.endsWith(`>`)?i+=d+`>${f}${r}</${c}>`:(i+=d+`>`,f&&r!==``&&(f.includes(`/>`)||f.includes(`</`))?i+=r+t.indentBy+f+r:i+=f,i+=`</${c}>`):i+=d+`/>`:t.suppressUnpairedNode?i+=d+`>`:i+=d+`/>`,a=!0}return i}function me(e){let t=Object.keys(e);for(let n=0;n<t.length;n++){let r=t[n];if(e.hasOwnProperty(r)&&r!==`:@`)return r}}function he(e,t){let n=``;if(e&&!t.ignoreAttributes)for(let r in e){if(!e.hasOwnProperty(r))continue;let i=t.attributeValueProcessor(r,e[r]);i=_e(i,t),!0===i&&t.suppressBooleanAttributes?n+=` ${r.substr(t.attributeNamePrefix.length)}`:n+=` ${r.substr(t.attributeNamePrefix.length)}="${i}"`}return n}function ge(e,t){let n=(e=e.substr(0,e.length-t.textNodeName.length-1)).substr(e.lastIndexOf(`.`)+1);for(let r in t.stopNodes)if(t.stopNodes[r]===e||t.stopNodes[r]===`*.`+n)return!0;return!1}function _e(e,t){if(e&&e.length>0&&t.processEntities)for(let n=0;n<t.entities.length;n++){let r=t.entities[n];e=e.replace(r.regex,r.val)}return e}let ve={attributeNamePrefix:`@_`,attributesGroupName:!1,textNodeName:`#text`,ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:` `,suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:RegExp(`&`,`g`),val:`&`},{regex:RegExp(`>`,`g`),val:`>`},{regex:RegExp(`<`,`g`),val:`<`},{regex:RegExp(`'`,`g`),val:`'`},{regex:RegExp(`"`,`g`),val:`"`}],processEntities:!0,stopNodes:[],oneListGroup:!1};function ye(e){this.options=Object.assign({},ve,e),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=A(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=Se),this.processTextOrObjNode=be,this.options.format?(this.indentate=xe,this.tagEndChar=`>
|
|
32004
32004
|
`,this.newLine=`
|
|
32005
|
-
`):(this.indentate=function(){return``},this.tagEndChar=`>`,this.newLine=``)}function be(e,t,n,r){let i=this.j2x(e,n+1,r.concat(t));return e[this.options.textNodeName]!==void 0&&Object.keys(e).length===1?this.buildTextValNode(e[this.options.textNodeName],t,i.attrStr,n):this.buildObjectNode(i.val,t,i.attrStr,n)}function xe(e){return this.options.indentBy.repeat(e)}function Se(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}ye.prototype.build=function(e){return this.options.preserveOrder?fe(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0,[]).val)},ye.prototype.j2x=function(e,t,n){let r=``,i=``,a=n.join(`.`);for(let o in e)if(Object.prototype.hasOwnProperty.call(e,o))if(e[o]===void 0)this.isAttribute(o)&&(i+=``);else if(e[o]===null)this.isAttribute(o)||o===this.options.cdataPropName?i+=``:o[0]===`?`?i+=this.indentate(t)+`<`+o+`?`+this.tagEndChar:i+=this.indentate(t)+`<`+o+`/`+this.tagEndChar;else if(e[o]instanceof Date)i+=this.buildTextValNode(e[o],o,``,t);else if(typeof e[o]!=`object`){let n=this.isAttribute(o);if(n&&!this.ignoreAttributesFn(n,a))r+=this.buildAttrPairStr(n,``+e[o]);else if(!n)if(o===this.options.textNodeName){let t=this.options.tagValueProcessor(o,``+e[o]);i+=this.replaceEntitiesValue(t)}else i+=this.buildTextValNode(e[o],o,``,t)}else if(Array.isArray(e[o])){let r=e[o].length,a=``,s=``;for(let c=0;c<r;c++){let r=e[o][c];if(r!==void 0)if(r===null)o[0]===`?`?i+=this.indentate(t)+`<`+o+`?`+this.tagEndChar:i+=this.indentate(t)+`<`+o+`/`+this.tagEndChar;else if(typeof r==`object`)if(this.options.oneListGroup){let e=this.j2x(r,t+1,n.concat(o));a+=e.val,this.options.attributesGroupName&&r.hasOwnProperty(this.options.attributesGroupName)&&(s+=e.attrStr)}else a+=this.processTextOrObjNode(r,o,t,n);else if(this.options.oneListGroup){let e=this.options.tagValueProcessor(o,r);e=this.replaceEntitiesValue(e),a+=e}else a+=this.buildTextValNode(r,o,``,t)}this.options.oneListGroup&&(a=this.buildObjectNode(a,o,s,t)),i+=a}else if(this.options.attributesGroupName&&o===this.options.attributesGroupName){let t=Object.keys(e[o]),n=t.length;for(let i=0;i<n;i++)r+=this.buildAttrPairStr(t[i],``+e[o][t[i]])}else i+=this.processTextOrObjNode(e[o],o,t,n);return{attrStr:r,val:i}},ye.prototype.buildAttrPairStr=function(e,t){return t=this.options.attributeValueProcessor(e,``+t),t=this.replaceEntitiesValue(t),this.options.suppressBooleanAttributes&&t===`true`?` `+e:` `+e+`="`+t+`"`},ye.prototype.buildObjectNode=function(e,t,n,r){if(e===``)return t[0]===`?`?this.indentate(r)+`<`+t+n+`?`+this.tagEndChar:this.indentate(r)+`<`+t+n+this.closeTag(t)+this.tagEndChar;{let i=`</`+t+this.tagEndChar,a=``;return t[0]===`?`&&(a=`?`,i=``),!n&&n!==``||e.indexOf(`<`)!==-1?!1!==this.options.commentPropName&&t===this.options.commentPropName&&a.length===0?this.indentate(r)+`\x3c!--${e}--\x3e`+this.newLine:this.indentate(r)+`<`+t+n+a+this.tagEndChar+e+this.indentate(r)+i:this.indentate(r)+`<`+t+n+a+`>`+e+i}},ye.prototype.closeTag=function(e){let t=``;return this.options.unpairedTags.indexOf(e)===-1?t=this.options.suppressEmptyNode?`/`:`></${e}`:this.options.suppressUnpairedNode||(t=`/`),t},ye.prototype.buildTextValNode=function(e,t,n,r){if(!1!==this.options.cdataPropName&&t===this.options.cdataPropName)return this.indentate(r)+`<![CDATA[${e}]]>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(r)+`\x3c!--${e}--\x3e`+this.newLine;if(t[0]===`?`)return this.indentate(r)+`<`+t+n+`?`+this.tagEndChar;{let i=this.options.tagValueProcessor(t,e);return i=this.replaceEntitiesValue(i),i===``?this.indentate(r)+`<`+t+n+this.closeTag(t)+this.tagEndChar:this.indentate(r)+`<`+t+n+`>`+i+`</`+t+this.tagEndChar}},ye.prototype.replaceEntitiesValue=function(e){if(e&&e.length>0&&this.options.processEntities)for(let t=0;t<this.options.entities.length;t++){let n=this.options.entities[t];e=e.replace(n.regex,n.val)}return e};let Ce={validate:s};t.exports=n})()})),cW=s((e=>{var t=Object.create,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,s=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),c=(e,t,a,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=i(t),l=0,u=c.length,d;l<u;l++)d=c[l],!o.call(e,d)&&d!==a&&n(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(s=r(t,d))||s.enumerable});return e},l=(e,r,i)=>(i=e==null?{}:t(a(e)),c(r||!e||!e.__esModule?n(i,`default`,{value:e,enumerable:!0}):i,e));let u=l(Oi()),f=l(ki()),p=l(require(`node:fs/promises`)),m=l(require(`node:async_hooks`)),h=l(se()),g=l(Bi()),_=l(Rc()),v=l((Ol(),d(ll))),y=l(require(`node:crypto`)),b=l(iR()),x=l(pM()),S=l(fz()),C=l((Dj(),d(Ej))),w=l(require(`node:fs`)),T=l(Uz()),E=l(pV()),D=l(require(`node:child_process`)),O=l(require(`node:util`)),k=l(require(`@prisma/internals`)),A=l(lV()),ee=l(require(`node:zlib`)),j=l(cH()),te=l(uH()),M=l(mH()),ne=l(Eee()),N=l(require(`node:os`)),P=l(require(`node:events`)),F=l(gU()),I=l(tW()),re=l(Fee()),ie=l(oW()),L=l(sW()),R=l(_U()),ae=l(require(`node:process`));l(require(`node:readline`)),l(require(`node:tty`));let z=l(require(`node:path`)),oe=l(require(`@anthropic-ai/claude-agent-sdk`)),B={DELETE:`delete`,COMMENT_OUT:`comment out`,KEEP:`keep`,SKIP:`skip`},ce={GREEN:`Green`,GREY:`Grey`,RED:`Red`,NA:`NA`},le={GREEN:`Green`,GREY:`Grey`,RUNTIME_ERROR:`RuntimeError`},ue=function(e){return e.IDE=`IDE`,e.CLI=`CLI`,e}({}),de=function(e){return e.SIBLING_FOLDER=`siblingFolder`,e.ROOT_FOLDER=`rootFolder`,e}({}),fe=function(e){return e.JEST=`jest`,e.MOCHA=`mocha`,e.VITEST=`vitest`,e.PYTEST=`pytest`,e}({}),pe=function(e){return e.SPEC=`spec`,e.TEST=`test`,e}({}),me=function(e){return e.CAMEL_CASE=`camelCase`,e.KEBAB_CASE=`kebabCase`,e}({}),he=function(e){return e.NONE=`none`,e.CATEGORIES=`categories`,e}({}),ge=function(e){return e.NEW_CODE_FILE=`newCodeFile`,e.OVERRIDE_CODE_FILE=`overrideCodeFile`,e}({}),_e=function(e){return e.ON=`on`,e.OFF=`off`,e}({}),ve={DEFAULT:0,MIN:0,MAX:100},ye={DEFAULT:5,MIN:1,MAX:50};u.z.object({rootPath:u.z.string().default(process.cwd()),testStructure:u.z.enum(de).optional(),testFramework:u.z.enum(fe).optional(),testSuffix:u.z.enum(pe).optional(),testFileName:u.z.enum(me).optional(),calculateCoverage:u.z.enum(_e).optional(),coverageThreshold:u.z.number().min(ve.MIN).max(ve.MAX).default(ve.DEFAULT),requestSource:u.z.enum(ue).optional(),concurrency:u.z.number().min(ye.MIN).max(ye.MAX).default(ye.DEFAULT),backendURL:u.z.string().optional(),secretToken:u.z.string().optional(),modelName:u.z.string().optional(),context:u.z.object({git:u.z.object({ref_name:u.z.string(),repository:u.z.string(),owner:u.z.string(),sha:u.z.string(),workflowRunId:u.z.string(),remoteUrl:u.z.string(),topLevel:u.z.string()}).partial().optional()}).optional(),testCommand:u.z.string().optional(),coverageCommand:u.z.string().optional(),lintCommand:u.z.string().optional(),prettierCommand:u.z.string().optional(),disableLintRules:u.z.boolean().optional(),ignoreAsAnyLintErrors:u.z.boolean().optional(),includeEarlyTests:u.z.boolean().optional(),greyTestBehaviour:u.z.enum(B).optional(),redTestBehaviour:u.z.enum(B).optional(),keepErrorTests:u.z.boolean().optional(),keepFailedTests:u.z.boolean().optional(),conditionalKeep:u.z.boolean().optional(),continueOnTestErrors:u.z.boolean().optional(),perFunctionTimeout:u.z.number().positive().optional(),dynamicPromptIterations:u.z.number().min(0).max(10).optional(),removeComments:u.z.boolean().optional(),experimentalAgentSdk:u.z.boolean().optional(),agentSdkModel:u.z.string().optional(),agentSdkBudget:u.z.number().positive().optional(),debug:u.z.boolean().optional(),verbose:u.z.boolean().optional(),progressLogger:u.z.custom().optional()});var be=`@earlyai/ts-agent`,xe=`0.75.0`;let Se={VSCODE:`vscode`,GITHUB_ACTION:`github-action`,UNKNOWN:`unknown`},Ce=`$early_filename`,we=`$early_coverage_dir`,Te=`npx jest ${Ce} --no-coverage --silent --json --forceExit --maxWorkers=1`,Ee=`npx --no eslint ${Ce}`,De=`npx --no prettier ${Ce} --write`,Oe={rootPath:process.cwd(),isSiblingFolderStructured:!0,gitURL:`https://github.com/your-owner/your-repo`,testFramework:fe.JEST,greyTestBehaviour:B.DELETE,redTestBehaviour:B.DELETE,keepErrorTests:!1,keepFailedTests:!1,conditionalKeep:!1,continueOnTestErrors:!0,generatedTestStructure:he.CATEGORIES,isRootFolderStructured:!1,clientSource:Se.GITHUB_ACTION,backendURL:`https://api.startearly.ai`,requestSource:ue.CLI,userPrompt:``,testLocation:`__tests__`,coverageThreshold:ve.DEFAULT,concurrency:5,testFileFormat:`ts`,outputType:ge.NEW_CODE_FILE,shouldRefreshCoverage:!0,kebabCaseFileName:!1,earlyTestFilenameSuffix:`.early.${pe.TEST}`,testSuffix:pe.TEST,isAppendPrompt:!1,dynamicPromptIterations:3,wsServerEndpoint:`wss://api.startearly.ai`,secretToken:``,loggerConfig:{consoleEnabled:!1,azureEnabled:!0,azureConnectionString:`InstrumentationKey=8b9b0d6a-5400-44a3-ada6-3cd026de6cfe;IngestionEndpoint=https://eastus-8.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/;ApplicationId=d6e130b6-4aaa-4dcc-8d26-c1fa25d4656a`},context:void 0,includeEarlyTests:!1,lintCommand:Ee,prettierCommand:De,disableLintRules:!1,ignoreAsAnyLintErrors:!0,allowUndefinedLintErrors:!0,perFunctionTimeout:24e4,removeComments:!0,experimentalAgentSdk:!1,agentSdkModel:void 0,agentSdkBudget:void 0,debug:!1,verbose:!1},ke=e=>{let t=`testFramework.testSuffix.backendURL.requestSource.secretToken.concurrency.coverageThreshold.context.rootPath.testCommand.coverageCommand.lintCommand.prettierCommand.disableLintRules.greyTestBehaviour.redTestBehaviour.keepErrorTests.keepFailedTests.conditionalKeep.continueOnTestErrors.perFunctionTimeout.dynamicPromptIterations.removeComments.experimentalAgentSdk.agentSdkModel.agentSdkBudget.debug.verbose.progressLogger`.split(`.`).reduce((t,n)=>(0,h.isDefined)(e[n])?{...t,[n]:e[n]}:t,{}),n={...(0,h.isDefined)(e.testStructure)&&{isSiblingFolderStructured:e.testStructure===de.SIBLING_FOLDER,isRootFolderStructured:e.testStructure===de.ROOT_FOLDER},...(0,h.isDefined)(e.testFileName)&&{kebabCaseFileName:e.testFileName===me.KEBAB_CASE},...(0,h.isDefined)(e.calculateCoverage)&&{shouldRefreshCoverage:e.calculateCoverage===_e.ON},...(0,h.isDefined)(e.modelName)&&{fixTestsLLMModelName:e.modelName,generateTestsLLMModelName:e.modelName},...(0,h.isDefined)(e.testSuffix)&&{earlyTestFilenameSuffix:`.early.${e.testSuffix}`},...(0,h.isDefined)(e.requestSource)&&{clientSource:e.requestSource===ue.IDE?Se.VSCODE:Se.GITHUB_ACTION}};return{...t,...n}},Ae=new v.Chalk({level:1}),je=()=>{},Me={info:je,verbose:je,debug:je},Ne=[Ae.cyan,Ae.magenta,Ae.green,Ae.blue,Ae.redBright,Ae.cyanBright,Ae.magentaBright,Ae.greenBright];function Pe(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.codePointAt(n)??0,t=Math.imul(t,16777619);return Ne[Math.abs(t)%Ne.length]}function Fe(e,t){let n=(0,h.isDefined)(t.parentName)?`${t.parentName}.${t.methodName}`:t.methodName,r=Pe(n)(`[${n}]`);return{info:(...t)=>e.info(r,...t),verbose:(...t)=>e.verbose(r,...t),debug:(...t)=>e.debug(r,...t)}}var Ie=s(((e,t)=>{function n(e,t){if(typeof Reflect==`object`&&typeof Reflect.metadata==`function`)return Reflect.metadata(e,t)}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports})),Le=s(((e,t)=>{function n(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports})),Re=l(Ie()),ze=l(Le()),Be,Ve;let He=class{config;constructor(e,t={}){if(!(0,h.isDefined)(e)){this.config=Oe;return}let n=ke(e);this.config=(0,h.merge)(Oe,n,t)}getRootPath=()=>this.config.rootPath;isSiblingFolderStructured=()=>this.config.isSiblingFolderStructured;getGitURL=()=>this.config.context?.git?.remoteUrl??this.config.gitURL;getGitTopLevel=()=>this.config.context?.git?.topLevel??this.getRootPath();getTestFramework=()=>this.config.testFramework;getGreyTestBehaviour=()=>this.config.greyTestBehaviour;getRedTestBehaviour=()=>this.config.redTestBehaviour;shouldKeepErrorTests=()=>this.config.keepErrorTests;shouldKeepFailedTests=()=>this.config.keepFailedTests;shouldConditionalKeep=()=>this.config.conditionalKeep;getGeneratedTestStructure=()=>this.config.generatedTestStructure;getGenerateTestsLLMModelName=()=>this.config.generateTestsLLMModelName;isRootFolderStructured=()=>this.config.isRootFolderStructured;getLLMTemperature=()=>this.config.llmTemperature;getLLMTopP=()=>this.config.llmTopP;getClientSource=()=>this.config.clientSource;getBackendURL=()=>this.config.backendURL;getRequestSource=()=>this.config.requestSource;getUserPrompt=()=>this.config.userPrompt;getTestLocation=()=>this.config.testLocation;getCoverageThreshold=()=>this.config.coverageThreshold;getConcurrency=()=>this.config.concurrency;getTestFileFormat=()=>this.config.testFileFormat;getOutputType=()=>this.config.outputType;getShouldRefreshCoverage=()=>this.config.shouldRefreshCoverage;isKebabCaseFileName=()=>this.config.kebabCaseFileName;getEarlyTestFilenameSuffix=()=>this.config.earlyTestFilenameSuffix;getTestSuffix=()=>this.config.testSuffix;getIsAppendPrompt=()=>this.config.isAppendPrompt;getFixTestsLLMModelName=()=>this.config.fixTestsLLMModelName;getDynamicPromptIterations=()=>this.config.dynamicPromptIterations;getWSServerEndpoint=()=>this.config.backendURL.replace(`http://`,`ws://`).replace(`https://`,`wss://`);getAnthropicProxyUrl=()=>new URL(`/anthropic`,this.config.backendURL).href;getSecretToken=()=>this.config.secretToken;getLoggerConfig=()=>this.config.loggerConfig;getContext=()=>this.config.context;getTestCommand=()=>this.config.testCommand;getCoverageCommand=()=>this.config.coverageCommand;getLintCommand=()=>this.config.lintCommand;getPrettierCommand=()=>this.config.prettierCommand;shouldDisableLintRules=()=>this.config.disableLintRules;shouldIgnoreAsAnyLintErrors=()=>this.config.ignoreAsAnyLintErrors;allowUndefinedLintErrors=()=>this.config.allowUndefinedLintErrors;getIncludeEarlyTests=()=>this.config.includeEarlyTests??!1;shouldContinueOnTestErrors=()=>this.config.continueOnTestErrors;getPerFunctionTimeout=()=>this.config.perFunctionTimeout;shouldRemoveComments=()=>this.config.removeComments;getExperimentalAgentSdk=()=>this.config.experimentalAgentSdk;getAgentSdkModel=()=>this.config.agentSdkModel;getAgentSdkBudget=()=>this.config.agentSdkBudget;updateContext=e=>{this.config.context=(0,h.merge)(this.config.context??{},e??{})};updateRootPath=e=>{this.config.rootPath=e};isDebug=()=>this.config.debug??!1;isVerbose=()=>this.config.verbose??!1;getProgressLogger=e=>{let t=this.config.progressLogger??Me;return(0,h.isDefined)(e)?Fe(t,e):t}};He=(0,ze.default)([(0,_.injectable)(`Singleton`),(0,Re.default)(`design:paramtypes`,[typeof(Be=typeof Partial<`u`&&Partial)==`function`?Be:Object,typeof(Ve=typeof Partial<`u`&&Partial)==`function`?Ve:Object])],He);var V=new _.Container({autobind:!0,defaultScope:`Singleton`});let Ue=()=>V.get(He);var We=class{storage=new m.AsyncLocalStorage;isConsoleEnabled;constructor(e){this.isConsoleEnabled=e}orderedFlush={nextOrder:1,pending:new Map};resetOrder(){this.orderedFlush={nextOrder:1,pending:new Map}}async withBufferedPrinting(e,t){let n=[];try{return await this.storage.run(n,e)}finally{this.flushInOrder(t,n)}}printOrBuffer(e,t){let n=this.storage.getStore();if((0,h.isDefined)(n)){n.push({method:e,message:t});return}this.isConsoleEnabled&&console[e](t)}async flushInOrder(e,t){if(this.orderedFlush.nextOrder===e){this.flushBuffer(t),this.orderedFlush.nextOrder++,this.drainPendingFlushes();return}return new Promise(n=>{this.orderedFlush.pending.set(e,{buffer:t,resolve:n})})}drainPendingFlushes(){let e=this.orderedFlush.pending.get(this.orderedFlush.nextOrder);for(;(0,h.isDefined)(e);)this.orderedFlush.pending.delete(this.orderedFlush.nextOrder),this.flushBuffer(e.buffer),this.orderedFlush.nextOrder++,e.resolve(),e=this.orderedFlush.pending.get(this.orderedFlush.nextOrder)}flushBuffer(e){if(this.isConsoleEnabled)for(let t of e)console[t.method](t.message)}};let Ge=function(e){return e.DEFAULT=`default`,e.VERBOSE=`verbose`,e.DEBUG=`debug`,e}({}),Ke=function(e){return e.INFO=`info`,e.WARN=`warn`,e}({});function qe(){return(0,y.randomUUID)()}function Je(){let e=``;for(let t=0;t<8;t++)e+=`abcdefghijklmnopqrstuvwxyz0123456789`.charAt(Math.floor(Math.random()*36));return e}var Ye=l(Ie()),Xe=l(Le()),Ze=class{export(e,t){for(let t of e){let e=t.body;if((0,h.isString)(e))console.info(e);else try{console.info(JSON.stringify(e))}catch{console.info(String(e))}}t({code:0})}shutdown(){return Promise.resolve()}};let Qe=class{loggerProvider;config;constructor(e){this.config=e,this.loggerProvider=new S.LoggerProvider({resource:(0,x.resourceFromAttributes)({[C.ATTR_SERVICE_NAME]:be,[C.ATTR_SERVICE_VERSION]:xe})}),this.initializeExporters(),this.setGlobalLoggerProvider()}getLogger(e){return this.loggerProvider.getLogger(e)}initializeExporters(){let e=[];if(this.config.consoleEnabled){let t=new Ze;e.push(new S.SimpleLogRecordProcessor(t))}if(this.config.azureEnabled&&(0,h.isDefined)(this.config.azureConnectionString)){let t=new b.AzureMonitorLogExporter({connectionString:this.config.azureConnectionString});e.push(new S.BatchLogRecordProcessor(t))}this.loggerProvider=new S.LoggerProvider({processors:e})}setGlobalLoggerProvider(){g.logs.setGlobalLoggerProvider(this.loggerProvider)}};Qe=(0,Xe.default)([(0,_.injectable)(),(0,Ye.default)(`design:paramtypes`,[Object])],Qe),l(Ie()),l(Le());let H=new class{storage;otelService;otelLogger;isConsoleEnabled;printBuffer;default=this.createLogObject(Ge.DEFAULT);verbose=this.createLogObject(Ge.VERBOSE);constructor(e){this.storage=new m.AsyncLocalStorage,this.otelService=new Qe(e),this.otelLogger=this.otelService.getLogger(`ts-agent`),this.isConsoleEnabled=e.consoleEnabled,this.printBuffer=new We(e.consoleEnabled)}resetPrintOrder(){this.printBuffer.resetOrder()}async withBufferedPrinting(e,t){return this.printBuffer.withBufferedPrinting(e,t)}info={startLog:(e,...t)=>this.log(g.SeverityNumber.INFO,`Start ${e}`,...t),endLog:(e,...t)=>this.log(g.SeverityNumber.INFO,`End ${e}`,...t),failedLog:(e,...t)=>this.log(g.SeverityNumber.INFO,`Failed ${e}`,...t),defaultLog:(e,...t)=>this.log(g.SeverityNumber.INFO,e,...t)};debug={startLog:(e,...t)=>this.log(g.SeverityNumber.DEBUG,`Start ${e}`,...t),endLog:(e,...t)=>this.log(g.SeverityNumber.DEBUG,`End ${e}`,...t),failedLog:(e,...t)=>this.log(g.SeverityNumber.DEBUG,`Failed ${e}`,...t),defaultLog:(e,...t)=>this.log(g.SeverityNumber.DEBUG,e,...t)};error(e,t,...n){let r=t instanceof Error?`${e} ${t.message} ${t.stack}`:`${e} ${JSON.stringify(t)}`;this.log(g.SeverityNumber.ERROR,r,...n)}getRequestId(){return this.storage.getStore()?.requestId??``}getTraceId(){return this.storage.getStore()?.traceId??``}log(e,t,...n){let r=this.formatMessage(t,...n);this.logToOpenTelemetry(e,r),!(!this.isConsoleEnabled||!this.isLevelEnabled(Ge.DEBUG))&&console.info(r)}logToOpenTelemetry(e,t){let n=this.storage.getStore(),r={service:be,version:xe};(0,h.isDefined)(n)&&((0,h.isDefined)(n.traceId)&&(r.traceId=n.traceId),(0,h.isDefined)(n.requestId)&&(r.requestId=n.requestId),(0,h.isDefined)(n.category)&&(r.category=n.category),(0,h.isDefined)(n.subCategory)&&(r.subCategory=n.subCategory),(0,h.isDefined)(n.testedMethodClass)&&(r.testedMethodClass=n.testedMethodClass),(0,h.isDefined)(n.testedFunction)&&(r.testedFunction=n.testedFunction),(0,h.isDefined)(n.userId)&&(r.userId=n.userId.toString())),this.otelLogger.emit({severityNumber:e,severityText:this.getSeverityText(e),body:t,attributes:r})}getSeverityText(e){switch(e){case g.SeverityNumber.TRACE:return`TRACE`;case g.SeverityNumber.DEBUG:return`DEBUG`;case g.SeverityNumber.INFO:return`INFO`;case g.SeverityNumber.WARN:return`WARN`;case g.SeverityNumber.ERROR:return`ERROR`;case g.SeverityNumber.FATAL:return`FATAL`;default:return`INFO`}}formatMessage(e,...t){let n=this.formatPrefix(),r=(0,h.isDefined)(n)?`${n} ${e}`:e;return this.formatPrint(r,...t)}formatPrint(e,...t){return(0,h.isEmpty)(t)?e:`${e} ${t.map(e=>JSON.stringify(e)).join(` `)}`}withContext=(e,t,n)=>{let r=n.value,i=this.storage;return n.value=function(...e){let t=i.getStore();if(t){let n={...t};return i.run(n,()=>r.apply(this,e))}let n={traceId:Je(),requestId:qe()};return i.run(n,()=>r.apply(this,e))},n};addContext(e){let t=this.storage.getStore();(0,h.isDefined)(t)&&(t.category=e.category??t.category,t.subCategory=e.subCategory??t.subCategory,t.testedMethodClass=e.testedMethodClass??t.testedMethodClass,t.testedFunction=e.testedFunction??t.testedFunction,t.userId=e.userId??t.userId)}captureContext({withNewRequestId:e=!1}={}){let t=this.storage.getStore();return t?{...t,...e&&{requestId:qe()}}:void 0}async runWithContext(e,t){return(0,h.isDefined)(e)?this.storage.run(e,t):t()}isLevelEnabled(e){switch(e){case Ge.DEFAULT:return!0;case Ge.VERBOSE:return Ue().isVerbose()||Ue().isDebug();case Ge.DEBUG:return Ue().isDebug()}}createLogObject(e){return{info:(t,...n)=>{this.isLevelEnabled(e)&&this.printOrBuffer(Ke.INFO,this.formatPrint(t,...n))},warn:(t,...n)=>{this.isLevelEnabled(e)&&this.printOrBuffer(Ke.WARN,this.formatPrint(t,...n))}}}printOrBuffer(e,t){this.printBuffer.printOrBuffer(e,t)}formatPrefix(){let e=this.storage.getStore();if(!(0,h.isDefined)(e))return``;let t=[];return(0,h.isDefined)(e.traceId)&&t.push(`[${e.traceId}]`),(0,h.isDefined)(e.requestId)&&t.push(`[${e.requestId}]`),(0,h.isDefined)(e.category)&&t.push(`[${e.category}]`),(0,h.isDefined)(e.subCategory)&&t.push(`[${e.subCategory}]`),(0,h.isDefined)(e.testedMethodClass)&&t.push(`[${e.testedMethodClass}]`),(0,h.isDefined)(e.testedFunction)&&t.push(`[${e.testedFunction}]`),t.join(` `)}}({consoleEnabled:!1,azureEnabled:!0,azureConnectionString:`InstrumentationKey=c18a3332-f844-498f-98e0-d818996cf526;IngestionEndpoint=https://eastus2-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus2.livediagnostics.monitor.azure.com/;ApplicationId=2150ffe0-cb0f-4b00-9562-d3385b383d74`});function $e(e){return function(t,n,r){return(0,h.isDefined)(e)&&H.addContext(e),H.withContext(t,n,r)}}var et=class e{rootPath;absolutePath;static EARLY_FILENAME_VAR=`$early_filename`;constructor(e){this.rootPath=f.default.normalizeTrim(Ue().getRootPath());let t=f.default.normalizeTrim(e),n=f.default.normalizeTrim(this.rootPath);if(t===n||t.startsWith(n+f.default.sep))this.absolutePath=t;else{let e=t.replace(/^\//,``);this.absolutePath=f.default.resolve(this.rootPath,e)}}static fromSourceFile(t){let n=f.default.normalizeTrim(t.getFilePath());return new e(f.default.relative(f.default.normalizeTrim(Ue().getRootPath()),n))}static fromAbsolutePath(t){let n=f.default.normalizeTrim(t);return new e(f.default.relative(f.default.normalizeTrim(Ue().getRootPath()),n))}static fromRelativePath(t){return new e(t)}getRelativeFilePath(){return f.default.relative(this.rootPath,this.absolutePath)}getAbsoluteFilePath(){return this.absolutePath}async isFileExists(){try{return(await p.default.stat(this.absolutePath)).isFile()}catch{return!1}}async isDirectoryExists(){try{return(await p.default.stat(this.absolutePath)).isDirectory()}catch{return!1}}async createDirectory(e){await p.default.mkdir(this.absolutePath,{recursive:e?.recursive??!0})}async getText(){try{return await p.default.readFile(this.absolutePath,`utf8`)}catch{return``}}async upsert(e){let t=f.default.dirname(this.absolutePath);await p.default.mkdir(t,{recursive:!0}),await(await this.isFileExists()?p.default.appendFile(this.absolutePath,e):p.default.writeFile(this.absolutePath,e)),H.info.defaultLog(`Upserted file`,{path:this.getRelativeFilePath()})}async replace(e){let t=f.default.dirname(this.absolutePath);await p.default.mkdir(t,{recursive:!0}),await p.default.writeFile(this.absolutePath,e),H.info.defaultLog(`Replaced file`,{path:this.getRelativeFilePath()})}async delete(){try{await p.default.unlink(this.absolutePath),H.info.defaultLog(`Deleted file`,{path:this.getRelativeFilePath()})}catch{}}};let tt={WIN32:`win32`,DARWIN:`darwin`,LINUX:`linux`},nt={JAVASCRIPT:`javascript`,TYPESCRIPT:`typescript`,PYTHON:`python`},rt=e=>{let t=Ue().getRootPath();return f.default.resolve(t,e)},it=e=>{let t=Ue().getRootPath(),n=f.default.normalize(e);return f.default.relative(t,n)},at=e=>({".js":`javascript`,".mjs":`javascript`,".cjs":`javascript`,".jsx":`javascript`,".ts":`typescript`,".tsx":`typescript`,".py":`python`})[e.toLowerCase()]??`javascript`;function ot(e){return at((0,f.extname)(e))}function st(e){return at((0,f.extname)(e))===`typescript`}function U(e){return at((0,f.extname)(e))===nt.PYTHON}function ct(e){let t=Ue().getRootPath();if(!(0,h.isDefined)(t))throw Error(`Workspace root path is not defined`);if((0,h.isEmpty)(e))return f.default.normalize(t);let n=f.default.normalize(t),r=f.default.normalize(e);if(process.platform===tt.WIN32){let t=n.split(`:`)[0].toUpperCase(),i=r.split(`:`)[0].toUpperCase();if(t!==i&&!i.startsWith(t))return e}return f.default.relative(n,r)}function lt(e){return e.startsWith(`../`)?`../${e}`:e.startsWith(`./`)?`.${e}`:e}function ut(e){let t=f.default.normalize(rt(e)),n=f.default.normalize((0,T.default)([`package.json`,`project.json`],{cwd:t})??``);if(!n)return``;let r=it((0,f.dirname)(n));return r.startsWith(`/`)?r.slice(1):r}function dt(e,t,n){if(!pt(e))return e;let r=n===``?t:t.replace(n,``),i=n===``?ht(r):mt(r),a=r.split(`/`).slice(0,-1),o=ft(e,`../`),s=o>0?a.slice(0,-o).join(`/`):(0,f.dirname)(r),c=e.replaceAll(`../`,``).replaceAll(`./`,``);return f.default.join(i,s,c)}function ft(e,t){return e.split(t).length-1}function pt(e){return e.startsWith(`../`)||e.startsWith(`./`)}function mt(e){let t=ft(e,`/`);return`../`.repeat(t-1)}function ht(e){let t=ft(e,`/`);return`../`.repeat(t+1)}function gt(e){return e?.includes(`node_modules/`)}let _t=e=>e.replaceAll(/[.*+?^${}()|[\]\\]/g,String.raw`\$&`);function vt(e,t){let n=f.default.isAbsolute(e)?e:rt(e);return(0,T.default)(t,{cwd:n})}function yt(e,t){let n=vt(e,t);if(!(0,h.isDefined)(n))return;let r=w.readFileSync(n,`utf8`);return JSON.parse(r)}function bt(e){return yt(e,`package.json`)}function xt(e,t){let{dependencies:n={},devDependencies:r={}}=e;return Object.keys({...r,...n}).includes(t)}let St=[{path:`eslint.config.js`,isFlat:!0},{path:`eslint.config.cjs`,isFlat:!0},{path:`eslint.config.mjs`,isFlat:!0},{path:`eslint.config.ts`,isFlat:!0},{path:`eslint.config.mts`,isFlat:!0},{path:`eslint.config.cts`,isFlat:!0},{path:`.eslintrc`,isFlat:!1},{path:`.eslintrc.js`,isFlat:!1},{path:`.eslintrc.cjs`,isFlat:!1},{path:`.eslintrc.mjs`,isFlat:!1},{path:`.eslintrc.json`,isFlat:!1},{path:`.eslintrc.yaml`,isFlat:!1},{path:`.eslintrc.yml`,isFlat:!1}],Ct=[`@typescript-eslint/no-undefined`,`unicorn/no-useless-undefined`,`no-undefined`];async function wt(e){for(let{path:t,isFlat:n}of St){let r=f.default.join(e,t);if(await et.fromAbsolutePath(r).isFileExists())return{path:r,isFlat:n}}return bt(e)?.eslint?{path:vt(e,`package.json`),isFlat:!1}:{path:null,isFlat:!1}}let Tt={GET_TESTABLES:`get-testables`,GET_COVERAGE:`get-coverage`,GENERATE_COVERAGE:`generate-coverage`,SET_COVERAGE:`set-coverage`,GENERATE_TESTS:`generate-tests`,INITIALIZATION:`initialization`,GET_TESTED_CODE_DATA_SOURCE:`get-tested-code-data-source`,DYNAMIC_PROMPT:`dynamic-prompt`,TEST_VALIDATION:`test-validation`},Et={CODE_EXTRACTOR:`code-extractor`,CODE_REFINEMENT:`code-refinement`,TEST_MANAGEMENT:`test-management`,TEST_VALIDATOR:`test-validator`,CONFIG_FILE:`config-file`,COMMAND_EXECUTION:`command-execution`},Dt=[`.jsx`,`.tsx`],Ot=[`it`,`test`,`it.each`,`test.each`],kt=function(e){return e.Default=`default`,e.ObjectDefault=`object-default`,e.Named=`named`,e.Unknown=`unknown`,e.NotExported=`not-exported`,e}({}),At=function(e){return e.PRIVATE=`private`,e.PROTECTED=`protected`,e.PUBLIC=`public`,e}({}),jt=function(e){return e.REACT=`react`,e.ANGULAR=`angular`,e}({}),Mt=`unknown`,Nt=(0,O.promisify)(D.default.exec);async function Pt(e,{cwd:t=Ue().getRootPath(),timeout:n=1e4}={}){return(await Nt(e,{cwd:t,maxBuffer:500*1024,timeout:n}))?.stdout?.toString()??``}let Ft=e=>{let t=rt(e);return(0,T.default)(`jest.config.+(js|ts|mjs|cjs|json)`,{cwd:t})},It=e=>(0,h.isObject)(e)&&(0,h.isString)(e.rootDir),Lt=async e=>{let t;if(H.addContext({subCategory:Et.CONFIG_FILE}),(0,h.isDefined)(e)){let n=Ft(e);n!==null&&(t=(0,f.dirname)(n))}t??=Ue().getRootPath();let n;try{if(n=await Pt(`npx jest --showConfig`,{cwd:t}),!(0,h.isString)(n))throw H.info.defaultLog(`Jest config return is not a string`,n),Error(`Jest config return is not a string`);let e=JSON.parse(n);if((0,h.isObject)(e)&&(0,h.isArray)(e.configs)&&e.configs.every(e=>It(e)))return{projectConfigs:e.configs,globalConfig:e.globalConfig,configs:e.configs}}catch(e){H.info.defaultLog(`Cannot read jest config`,(0,h.getErrorMessage)(e)),H.info.defaultLog(`Failed reading jest config`,e,(0,h.getErrorMessage)(e));return}H.info.defaultLog(`Invalid jest config or config in not supported format`)},Rt=async()=>{let e=[Ue().getRootPath()],t=f.default.join(`node_modules`,`.prisma`,`client`,`index.d.ts`),n=e.map(e=>f.default.join(e,t)).map(e=>et.fromAbsolutePath(e));return(await(0,h.filterAsync)(n,e=>e.isFileExists())).map(e=>e.getAbsoluteFilePath())},zt=async()=>{try{let e=Ue().getRootPath();if(!(0,h.isDefined)(e))return[];let t=await(0,k.getSchemaWithPathOptional)(``,``,{cwd:e});if(!(0,h.isDefined)(t))return[];let n=t.schemas.map(e=>e[1]),r=new Set;for(let e of n){let n=(await(0,k.getConfig)({datamodel:e,ignoreEnvVarErrors:!0})).generators;for(let e of n)if((0,h.isDefined)(e.output?.value)){let n=f.default.join(f.default.resolve(t.schemaRootDir,e.output.value),`index.d.ts`);await et.fromAbsolutePath(n).isFileExists()&&r.add(n)}}return[...r]}catch(e){return H.error(`Failed to get prisma typings paths`,e),[]}},Bt=async()=>(await Promise.all([Rt(),zt()])).flat(),Vt=async(e,t=!1,n)=>{let r=`!**/node_modules/**`;if(t)return new E.Project({useInMemoryFileSystem:!0,compilerOptions:n});let i=st(e),a=Ht((0,f.dirname)(rt(e)),Ue().isSiblingFolderStructured());if(!i&&!(0,h.isDefined)(a)){let t=await Wt(e);if(!(0,h.isDefined)(t)||(0,h.isEmpty)(t))throw Error(`Cannot find source code path in jest config`);let n=new E.Project({compilerOptions:{allowJs:!0,maxNodeModuleJsDepth:0},useInMemoryFileSystem:!1});return n.addSourceFilesAtPaths([...t,r]),n}if(!i&&(0,h.isDefined)(a)){let t=new E.Project({tsConfigFilePath:a,compilerOptions:{allowJs:!0,maxNodeModuleJsDepth:0}}),n=await Wt(e);return t.addSourceFilesAtPaths([...n,r]),t}let o=new E.Project({tsConfigFilePath:a,compilerOptions:{maxNodeModuleJsDepth:0}}),s=await Bt();for(let e of s)o.addSourceFileAtPath(e);return o},Ht=(e,t)=>{let n;try{n=Ut(e)}catch{t&&(n=Ut((0,f.dirname)(e)))}return n},Ut=e=>{let t=e,n=/^(tsconfig|jsconfig).*\.json$/;for(;t!==(0,f.dirname)(t);){let e=(0,f.join)(t,`tsconfig.json`),r=(0,f.join)(t,`jsconfig.json`);if(!(0,w.existsSync)(t))return Ut((0,f.dirname)(t));if((0,w.existsSync)(e))return e;if((0,w.existsSync)(r))return r;let i=(0,w.readdirSync)(t);for(let e of i)if(n.test(e))return(0,f.join)(t,e);t=(0,f.dirname)(t)}},Wt=async e=>{let t=await Lt(e);if((0,h.isDefined)(t)){let e=t?.configs[0].roots.map(e=>f.default.join(e,`**/*.{ts,js,tsx,jsx}`));if(!(0,h.isEmpty)(e))return e}return[rt(ut(e))]};var Gt=l(Ie()),Kt=l(Le());let qt=`The ts-morph project is not initialized.`,Jt=new class{storage=new m.AsyncLocalStorage;_project;clear(){this._project=void 0}async init(e,t,n){let r=rt(e);if((0,h.isDefined)(this._project))return this._project.addSourceFileAtPathIfExists(r);this._project=await Vt(e,t,n);let i=this.storage.getStore();if((0,h.isDefined)(i))return this._project.addSourceFileAtPathIfExists(r)}add(e,t){let n=rt(e),r=this.storage.getStore()?.getProject();if(!(0,h.isDefined)(r))throw Error(qt);return r.createSourceFile(n,t,{overwrite:!0})}update(e,t){let n=this.get(e);return n.replaceWithText(t),n}addFile(e){(0,h.isDefined)(this._project)&&this._project.addSourceFileAtPathIfExists(e)}removeFile(e){if(!(0,h.isDefined)(this._project))return;let t=this._project.getSourceFile(e);(0,h.isDefined)(t)&&this._project.removeSourceFile(t)}async refreshFromFileSystem(e){if(!(0,h.isDefined)(this._project))return;let t=rt(e),n=this._project?.getSourceFile(e)??this._project?.getSourceFile(t);if((0,h.isDefined)(n)){let e=n.getFilePath();this._project.removeSourceFile(n),this._project.addSourceFileAtPath(e)}}get(e){let t=rt(e),n=this.storage.getStore()?.getProject();if(!(0,h.isDefined)(n))throw Error(qt+` store`);let r=n.getSourceFile(t);if(!(0,h.isDefined)(r))throw Error(`The source file is absent. ${e}`);return r}async save(e){await this.get(e).save()}async delete(e){await this.get(e).deleteImmediately()}getOrUndefined(e){let t=rt(e);return this._project?.getSourceFile(t)}withContext=(e,t,n)=>{let r=n.value,i=this.storage;if((0,h.isDefined)(i.getStore()))return n;let a=()=>this._project;return n.value=function(...e){let t={getProject:a};return i.run(t,()=>r.apply(this,e))},n}},Yt=Jt.withContext,Xt=async e=>{class t{async fn(){return e()}}(0,Kt.default)([Yt,(0,Gt.default)(`design:type`,Function),(0,Gt.default)(`design:paramtypes`,[]),(0,Gt.default)(`design:returntype`,Promise)],t.prototype,`fn`,null),await new t().fn()},Zt=e=>{let t=e?.asKind(E.SyntaxKind.ExpressionStatement)?.getExpression();if(!(0,h.isDefined)(t))return;let n=t.asKind(E.SyntaxKind.CallExpression)?.getArguments()?.at(-1),r=n?.asKind(E.SyntaxKind.ArrowFunction)?.getBody(),i=n?.asKind(E.SyntaxKind.FunctionExpression)?.getBody();return r?.asKind(E.SyntaxKind.Block)??i?.asKind(E.SyntaxKind.Block)},Qt=e=>E.Node.isExpressionStatement(e)&&e.getFirstChildByKind(E.SyntaxKind.CallExpression)?.getFirstChildByKind(E.SyntaxKind.Identifier)?.getText()===`describe`,$t=e=>e.getStatements().filter(e=>Qt(e)),en=e=>{let t=e.getExpression().getFirstChild()?.getText();return!(0,h.isDefined)(t)||(0,h.isEmpty)(t)?!1:Ot.some(e=>t.startsWith(e))},tn=e=>{let t=Zt(e);return(0,h.isDefined)(t)?t.getChildrenOfKind(E.SyntaxKind.ExpressionStatement).some(e=>en(e)):!1},nn=e=>{let t=Zt(e);return(0,h.isDefined)(t)?t.getChildrenOfKind(E.SyntaxKind.ExpressionStatement).filter(e=>Qt(e)&&tn(e)):[]},rn=e=>{let t=Zt(e);if((0,h.isDefined)(t))return t.getChildrenOfKind(E.SyntaxKind.ExpressionStatement).find(e=>Qt(e)&&tn(e))},an=e=>{let t=rn(e);return(0,h.isDefined)(t)},on=e=>{let t=Zt(e);if(!(0,h.isDefined)(t))return!0;let n=t.getChildrenOfKind(E.SyntaxKind.ExpressionStatement);if((0,h.isEmpty)(n))return!0;let r=new Set([`beforeEach`,`afterEach`,`beforeAll`,`afterAll`]);return n.every(e=>{let t=e.getExpressionIfKind(E.SyntaxKind.CallExpression)?.getExpressionIfKind(E.SyntaxKind.Identifier);return(0,h.isDefined)(t)?r.has(t.getText()):!1})},sn=e=>{if(e.isNamedExport?.())return kt.Named;if(e.isDefaultExport?.())return kt.Default;let t=e?.getParent();if((0,h.isDefined)(t)){if(t.isNamedExport?.())return kt.Named;if(t.isDefaultExport?.())return kt.Default}return e.isExportDefaultObject?.()??ln(e.getSourceFile(),e.getName?.())?kt.ObjectDefault:kt.NotExported},cn=(e,t)=>(0,h.isDefined)(e)?sn(e):(0,h.isDefined)(t)?t.isNamedImport?kt.Named:kt.Default:kt.Unknown;function ln(e,t){let[n]=e.getExportAssignments()??[];return n?.getDescendantsOfKind(E.SyntaxKind.Identifier).some(e=>(e.getSymbol()?.getEscapedName()??e.getText())===t)}function un(e,t){let n=$t(Jt.get(e)),r=n.find(e=>e.getText().includes(t))??n[0],i=nn(r),a=[],o=(0,h.isEmpty)(i)?[r]:i;for(let e of o){let t=Zt(e);(0,h.isDefined)(t)&&a.push(...t.getChildrenOfKind(E.SyntaxKind.ExpressionStatement).filter(e=>en(e)))}return a}let dn=e=>e.getFirstDescendantByKind(E.SyntaxKind.StringLiteral)?.getLiteralValue(),W=e=>dn(e),fn=e=>dn(e),pn=(e,t)=>{let n=e.getFullText().slice(0,Math.max(0,t)).split(`
|
|
32005
|
+
`):(this.indentate=function(){return``},this.tagEndChar=`>`,this.newLine=``)}function be(e,t,n,r){let i=this.j2x(e,n+1,r.concat(t));return e[this.options.textNodeName]!==void 0&&Object.keys(e).length===1?this.buildTextValNode(e[this.options.textNodeName],t,i.attrStr,n):this.buildObjectNode(i.val,t,i.attrStr,n)}function xe(e){return this.options.indentBy.repeat(e)}function Se(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}ye.prototype.build=function(e){return this.options.preserveOrder?fe(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0,[]).val)},ye.prototype.j2x=function(e,t,n){let r=``,i=``,a=n.join(`.`);for(let o in e)if(Object.prototype.hasOwnProperty.call(e,o))if(e[o]===void 0)this.isAttribute(o)&&(i+=``);else if(e[o]===null)this.isAttribute(o)||o===this.options.cdataPropName?i+=``:o[0]===`?`?i+=this.indentate(t)+`<`+o+`?`+this.tagEndChar:i+=this.indentate(t)+`<`+o+`/`+this.tagEndChar;else if(e[o]instanceof Date)i+=this.buildTextValNode(e[o],o,``,t);else if(typeof e[o]!=`object`){let n=this.isAttribute(o);if(n&&!this.ignoreAttributesFn(n,a))r+=this.buildAttrPairStr(n,``+e[o]);else if(!n)if(o===this.options.textNodeName){let t=this.options.tagValueProcessor(o,``+e[o]);i+=this.replaceEntitiesValue(t)}else i+=this.buildTextValNode(e[o],o,``,t)}else if(Array.isArray(e[o])){let r=e[o].length,a=``,s=``;for(let c=0;c<r;c++){let r=e[o][c];if(r!==void 0)if(r===null)o[0]===`?`?i+=this.indentate(t)+`<`+o+`?`+this.tagEndChar:i+=this.indentate(t)+`<`+o+`/`+this.tagEndChar;else if(typeof r==`object`)if(this.options.oneListGroup){let e=this.j2x(r,t+1,n.concat(o));a+=e.val,this.options.attributesGroupName&&r.hasOwnProperty(this.options.attributesGroupName)&&(s+=e.attrStr)}else a+=this.processTextOrObjNode(r,o,t,n);else if(this.options.oneListGroup){let e=this.options.tagValueProcessor(o,r);e=this.replaceEntitiesValue(e),a+=e}else a+=this.buildTextValNode(r,o,``,t)}this.options.oneListGroup&&(a=this.buildObjectNode(a,o,s,t)),i+=a}else if(this.options.attributesGroupName&&o===this.options.attributesGroupName){let t=Object.keys(e[o]),n=t.length;for(let i=0;i<n;i++)r+=this.buildAttrPairStr(t[i],``+e[o][t[i]])}else i+=this.processTextOrObjNode(e[o],o,t,n);return{attrStr:r,val:i}},ye.prototype.buildAttrPairStr=function(e,t){return t=this.options.attributeValueProcessor(e,``+t),t=this.replaceEntitiesValue(t),this.options.suppressBooleanAttributes&&t===`true`?` `+e:` `+e+`="`+t+`"`},ye.prototype.buildObjectNode=function(e,t,n,r){if(e===``)return t[0]===`?`?this.indentate(r)+`<`+t+n+`?`+this.tagEndChar:this.indentate(r)+`<`+t+n+this.closeTag(t)+this.tagEndChar;{let i=`</`+t+this.tagEndChar,a=``;return t[0]===`?`&&(a=`?`,i=``),!n&&n!==``||e.indexOf(`<`)!==-1?!1!==this.options.commentPropName&&t===this.options.commentPropName&&a.length===0?this.indentate(r)+`\x3c!--${e}--\x3e`+this.newLine:this.indentate(r)+`<`+t+n+a+this.tagEndChar+e+this.indentate(r)+i:this.indentate(r)+`<`+t+n+a+`>`+e+i}},ye.prototype.closeTag=function(e){let t=``;return this.options.unpairedTags.indexOf(e)===-1?t=this.options.suppressEmptyNode?`/`:`></${e}`:this.options.suppressUnpairedNode||(t=`/`),t},ye.prototype.buildTextValNode=function(e,t,n,r){if(!1!==this.options.cdataPropName&&t===this.options.cdataPropName)return this.indentate(r)+`<![CDATA[${e}]]>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(r)+`\x3c!--${e}--\x3e`+this.newLine;if(t[0]===`?`)return this.indentate(r)+`<`+t+n+`?`+this.tagEndChar;{let i=this.options.tagValueProcessor(t,e);return i=this.replaceEntitiesValue(i),i===``?this.indentate(r)+`<`+t+n+this.closeTag(t)+this.tagEndChar:this.indentate(r)+`<`+t+n+`>`+i+`</`+t+this.tagEndChar}},ye.prototype.replaceEntitiesValue=function(e){if(e&&e.length>0&&this.options.processEntities)for(let t=0;t<this.options.entities.length;t++){let n=this.options.entities[t];e=e.replace(n.regex,n.val)}return e};let Ce={validate:s};t.exports=n})()})),cW=s((e=>{var t=Object.create,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,s=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),c=(e,t,a,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=i(t),l=0,u=c.length,d;l<u;l++)d=c[l],!o.call(e,d)&&d!==a&&n(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(s=r(t,d))||s.enumerable});return e},l=(e,r,i)=>(i=e==null?{}:t(a(e)),c(r||!e||!e.__esModule?n(i,`default`,{value:e,enumerable:!0}):i,e));let u=l(Oi()),f=l(ki()),p=l(require(`node:fs/promises`)),m=l(require(`node:async_hooks`)),h=l(se()),g=l(Bi()),_=l(Rc()),v=l((Ol(),d(ll))),y=l(require(`node:crypto`)),b=l(iR()),x=l(pM()),S=l(fz()),C=l((Dj(),d(Ej))),w=l(require(`node:fs`)),T=l(Uz()),E=l(pV()),D=l(require(`node:child_process`)),O=l(require(`node:util`)),k=l(require(`@prisma/internals`)),A=l(lV()),ee=l(require(`node:zlib`)),j=l(cH()),te=l(uH()),M=l(mH()),ne=l(Eee()),N=l(require(`node:os`)),P=l(require(`node:events`)),F=l(gU()),I=l(tW()),re=l(Fee()),ie=l(oW()),L=l(sW()),R=l(_U()),ae=l(require(`node:process`));l(require(`node:readline`)),l(require(`node:tty`));let z=l(require(`node:path`)),oe=l(require(`@anthropic-ai/claude-agent-sdk`)),B={DELETE:`delete`,COMMENT_OUT:`comment out`,KEEP:`keep`,SKIP:`skip`},ce={GREEN:`Green`,GREY:`Grey`,RED:`Red`,NA:`NA`},le={GREEN:`Green`,GREY:`Grey`,RUNTIME_ERROR:`RuntimeError`},ue=function(e){return e.IDE=`IDE`,e.CLI=`CLI`,e}({}),de=function(e){return e.SIBLING_FOLDER=`siblingFolder`,e.ROOT_FOLDER=`rootFolder`,e}({}),fe=function(e){return e.JEST=`jest`,e.MOCHA=`mocha`,e.VITEST=`vitest`,e.PYTEST=`pytest`,e}({}),pe=function(e){return e.SPEC=`spec`,e.TEST=`test`,e}({}),me=function(e){return e.CAMEL_CASE=`camelCase`,e.KEBAB_CASE=`kebabCase`,e}({}),he=function(e){return e.NONE=`none`,e.CATEGORIES=`categories`,e}({}),ge=function(e){return e.NEW_CODE_FILE=`newCodeFile`,e.OVERRIDE_CODE_FILE=`overrideCodeFile`,e}({}),_e=function(e){return e.ON=`on`,e.OFF=`off`,e}({}),ve={DEFAULT:0,MIN:0,MAX:100},ye={DEFAULT:5,MIN:1,MAX:50};u.z.object({rootPath:u.z.string().default(process.cwd()),testStructure:u.z.enum(de).optional(),testFramework:u.z.enum(fe).optional(),testSuffix:u.z.enum(pe).optional(),testFileName:u.z.enum(me).optional(),calculateCoverage:u.z.enum(_e).optional(),coverageThreshold:u.z.number().min(ve.MIN).max(ve.MAX).default(ve.DEFAULT),requestSource:u.z.enum(ue).optional(),concurrency:u.z.number().min(ye.MIN).max(ye.MAX).default(ye.DEFAULT),backendURL:u.z.string().optional(),secretToken:u.z.string().optional(),modelName:u.z.string().optional(),context:u.z.object({git:u.z.object({ref_name:u.z.string(),repository:u.z.string(),owner:u.z.string(),sha:u.z.string(),workflowRunId:u.z.string(),remoteUrl:u.z.string(),topLevel:u.z.string()}).partial().optional()}).optional(),testCommand:u.z.string().optional(),coverageCommand:u.z.string().optional(),lintCommand:u.z.string().optional(),prettierCommand:u.z.string().optional(),disableLintRules:u.z.boolean().optional(),ignoreAsAnyLintErrors:u.z.boolean().optional(),includeEarlyTests:u.z.boolean().optional(),greyTestBehaviour:u.z.enum(B).optional(),redTestBehaviour:u.z.enum(B).optional(),keepErrorTests:u.z.boolean().optional(),keepFailedTests:u.z.boolean().optional(),conditionalKeep:u.z.boolean().optional(),continueOnTestErrors:u.z.boolean().optional(),perFunctionTimeout:u.z.number().positive().optional(),dynamicPromptIterations:u.z.number().min(0).max(10).optional(),removeComments:u.z.boolean().optional(),experimentalAgentSdk:u.z.boolean().optional(),agentSdkModel:u.z.string().optional(),agentSdkBudget:u.z.number().positive().optional(),debug:u.z.boolean().optional(),verbose:u.z.boolean().optional(),progressLogger:u.z.custom().optional()});var be=`@earlyai/ts-agent`,xe=`0.75.2`;let Se={VSCODE:`vscode`,GITHUB_ACTION:`github-action`,UNKNOWN:`unknown`},Ce=`$early_filename`,we=`$early_coverage_dir`,Te=`npx jest ${Ce} --no-coverage --silent --json --forceExit --maxWorkers=1`,Ee=`npx --no eslint ${Ce}`,De=`npx --no prettier ${Ce} --write`,Oe={rootPath:process.cwd(),isSiblingFolderStructured:!0,gitURL:`https://github.com/your-owner/your-repo`,testFramework:fe.JEST,greyTestBehaviour:B.DELETE,redTestBehaviour:B.DELETE,keepErrorTests:!1,keepFailedTests:!1,conditionalKeep:!1,continueOnTestErrors:!0,generatedTestStructure:he.CATEGORIES,isRootFolderStructured:!1,clientSource:Se.GITHUB_ACTION,backendURL:`https://api.startearly.ai`,requestSource:ue.CLI,userPrompt:``,testLocation:`__tests__`,coverageThreshold:ve.DEFAULT,concurrency:5,testFileFormat:`ts`,outputType:ge.NEW_CODE_FILE,shouldRefreshCoverage:!0,kebabCaseFileName:!1,earlyTestFilenameSuffix:`.early.${pe.TEST}`,testSuffix:pe.TEST,isAppendPrompt:!1,dynamicPromptIterations:3,wsServerEndpoint:`wss://api.startearly.ai`,secretToken:``,loggerConfig:{consoleEnabled:!1,azureEnabled:!0,azureConnectionString:`InstrumentationKey=8b9b0d6a-5400-44a3-ada6-3cd026de6cfe;IngestionEndpoint=https://eastus-8.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/;ApplicationId=d6e130b6-4aaa-4dcc-8d26-c1fa25d4656a`},context:void 0,includeEarlyTests:!1,lintCommand:Ee,prettierCommand:De,disableLintRules:!1,ignoreAsAnyLintErrors:!0,allowUndefinedLintErrors:!0,perFunctionTimeout:42e4,removeComments:!0,experimentalAgentSdk:!1,agentSdkModel:void 0,agentSdkBudget:void 0,debug:!1,verbose:!1},ke=e=>{let t=`testFramework.testSuffix.backendURL.requestSource.secretToken.concurrency.coverageThreshold.context.rootPath.testCommand.coverageCommand.lintCommand.prettierCommand.disableLintRules.greyTestBehaviour.redTestBehaviour.keepErrorTests.keepFailedTests.conditionalKeep.continueOnTestErrors.perFunctionTimeout.dynamicPromptIterations.removeComments.experimentalAgentSdk.agentSdkModel.agentSdkBudget.debug.verbose.progressLogger`.split(`.`).reduce((t,n)=>(0,h.isDefined)(e[n])?{...t,[n]:e[n]}:t,{}),n={...(0,h.isDefined)(e.testStructure)&&{isSiblingFolderStructured:e.testStructure===de.SIBLING_FOLDER,isRootFolderStructured:e.testStructure===de.ROOT_FOLDER},...(0,h.isDefined)(e.testFileName)&&{kebabCaseFileName:e.testFileName===me.KEBAB_CASE},...(0,h.isDefined)(e.calculateCoverage)&&{shouldRefreshCoverage:e.calculateCoverage===_e.ON},...(0,h.isDefined)(e.modelName)&&{fixTestsLLMModelName:e.modelName,generateTestsLLMModelName:e.modelName},...(0,h.isDefined)(e.testSuffix)&&{earlyTestFilenameSuffix:`.early.${e.testSuffix}`},...(0,h.isDefined)(e.requestSource)&&{clientSource:e.requestSource===ue.IDE?Se.VSCODE:Se.GITHUB_ACTION}};return{...t,...n}},Ae=new v.Chalk({level:1}),je=()=>{},Me={info:je,verbose:je,debug:je},Ne=[Ae.cyan,Ae.magenta,Ae.green,Ae.blue,Ae.redBright,Ae.cyanBright,Ae.magentaBright,Ae.greenBright];function Pe(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.codePointAt(n)??0,t=Math.imul(t,16777619);return Ne[Math.abs(t)%Ne.length]}function Fe(e,t){let n=(0,h.isDefined)(t.parentName)?`${t.parentName}.${t.methodName}`:t.methodName,r=Pe(n)(`[${n}]`);return{info:(...t)=>e.info(r,...t),verbose:(...t)=>e.verbose(r,...t),debug:(...t)=>e.debug(r,...t)}}var Ie=s(((e,t)=>{function n(e,t){if(typeof Reflect==`object`&&typeof Reflect.metadata==`function`)return Reflect.metadata(e,t)}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports})),Le=s(((e,t)=>{function n(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports})),Re=l(Ie()),ze=l(Le()),Be,Ve;let He=class{config;constructor(e,t={}){if(!(0,h.isDefined)(e)){this.config=Oe;return}let n=ke(e);this.config=(0,h.merge)(Oe,n,t)}getRootPath=()=>this.config.rootPath;isSiblingFolderStructured=()=>this.config.isSiblingFolderStructured;getGitURL=()=>this.config.context?.git?.remoteUrl??this.config.gitURL;getGitTopLevel=()=>this.config.context?.git?.topLevel??this.getRootPath();getTestFramework=()=>this.config.testFramework;getGreyTestBehaviour=()=>this.config.greyTestBehaviour;getRedTestBehaviour=()=>this.config.redTestBehaviour;shouldKeepErrorTests=()=>this.config.keepErrorTests;shouldKeepFailedTests=()=>this.config.keepFailedTests;shouldConditionalKeep=()=>this.config.conditionalKeep;getGeneratedTestStructure=()=>this.config.generatedTestStructure;getGenerateTestsLLMModelName=()=>this.config.generateTestsLLMModelName;isRootFolderStructured=()=>this.config.isRootFolderStructured;getLLMTemperature=()=>this.config.llmTemperature;getLLMTopP=()=>this.config.llmTopP;getClientSource=()=>this.config.clientSource;getBackendURL=()=>this.config.backendURL;getRequestSource=()=>this.config.requestSource;getUserPrompt=()=>this.config.userPrompt;getTestLocation=()=>this.config.testLocation;getCoverageThreshold=()=>this.config.coverageThreshold;getConcurrency=()=>this.config.concurrency;getTestFileFormat=()=>this.config.testFileFormat;getOutputType=()=>this.config.outputType;getShouldRefreshCoverage=()=>this.config.shouldRefreshCoverage;isKebabCaseFileName=()=>this.config.kebabCaseFileName;getEarlyTestFilenameSuffix=()=>this.config.earlyTestFilenameSuffix;getTestSuffix=()=>this.config.testSuffix;getIsAppendPrompt=()=>this.config.isAppendPrompt;getFixTestsLLMModelName=()=>this.config.fixTestsLLMModelName;getDynamicPromptIterations=()=>this.config.dynamicPromptIterations;getWSServerEndpoint=()=>this.config.backendURL.replace(`http://`,`ws://`).replace(`https://`,`wss://`);getAnthropicProxyUrl=()=>new URL(`/anthropic`,this.config.backendURL).href;getSecretToken=()=>this.config.secretToken;getLoggerConfig=()=>this.config.loggerConfig;getContext=()=>this.config.context;getTestCommand=()=>this.config.testCommand;getCoverageCommand=()=>this.config.coverageCommand;getLintCommand=()=>this.config.lintCommand;getPrettierCommand=()=>this.config.prettierCommand;shouldDisableLintRules=()=>this.config.disableLintRules;shouldIgnoreAsAnyLintErrors=()=>this.config.ignoreAsAnyLintErrors;allowUndefinedLintErrors=()=>this.config.allowUndefinedLintErrors;getIncludeEarlyTests=()=>this.config.includeEarlyTests??!1;shouldContinueOnTestErrors=()=>this.config.continueOnTestErrors;getPerFunctionTimeout=()=>this.config.perFunctionTimeout;shouldRemoveComments=()=>this.config.removeComments;getExperimentalAgentSdk=()=>this.config.experimentalAgentSdk;getAgentSdkModel=()=>this.config.agentSdkModel;getAgentSdkBudget=()=>this.config.agentSdkBudget;updateContext=e=>{this.config.context=(0,h.merge)(this.config.context??{},e??{})};updateRootPath=e=>{this.config.rootPath=e};isDebug=()=>this.config.debug??!1;isVerbose=()=>this.config.verbose??!1;getProgressLogger=e=>{let t=this.config.progressLogger??Me;return(0,h.isDefined)(e)?Fe(t,e):t}};He=(0,ze.default)([(0,_.injectable)(`Singleton`),(0,Re.default)(`design:paramtypes`,[typeof(Be=typeof Partial<`u`&&Partial)==`function`?Be:Object,typeof(Ve=typeof Partial<`u`&&Partial)==`function`?Ve:Object])],He);var V=new _.Container({autobind:!0,defaultScope:`Singleton`});let Ue=()=>V.get(He);var We=class{storage=new m.AsyncLocalStorage;isConsoleEnabled;constructor(e){this.isConsoleEnabled=e}orderedFlush={nextOrder:1,pending:new Map};resetOrder(){this.orderedFlush={nextOrder:1,pending:new Map}}async withBufferedPrinting(e,t){let n=[];try{return await this.storage.run(n,e)}finally{this.flushInOrder(t,n)}}printOrBuffer(e,t){let n=this.storage.getStore();if((0,h.isDefined)(n)){n.push({method:e,message:t});return}this.isConsoleEnabled&&console[e](t)}async flushInOrder(e,t){if(this.orderedFlush.nextOrder===e){this.flushBuffer(t),this.orderedFlush.nextOrder++,this.drainPendingFlushes();return}return new Promise(n=>{this.orderedFlush.pending.set(e,{buffer:t,resolve:n})})}drainPendingFlushes(){let e=this.orderedFlush.pending.get(this.orderedFlush.nextOrder);for(;(0,h.isDefined)(e);)this.orderedFlush.pending.delete(this.orderedFlush.nextOrder),this.flushBuffer(e.buffer),this.orderedFlush.nextOrder++,e.resolve(),e=this.orderedFlush.pending.get(this.orderedFlush.nextOrder)}flushBuffer(e){if(this.isConsoleEnabled)for(let t of e)console[t.method](t.message)}};let Ge=function(e){return e.DEFAULT=`default`,e.VERBOSE=`verbose`,e.DEBUG=`debug`,e}({}),Ke=function(e){return e.INFO=`info`,e.WARN=`warn`,e}({});function qe(){return(0,y.randomUUID)()}function Je(){let e=``;for(let t=0;t<8;t++)e+=`abcdefghijklmnopqrstuvwxyz0123456789`.charAt(Math.floor(Math.random()*36));return e}var Ye=l(Ie()),Xe=l(Le()),Ze=class{export(e,t){for(let t of e){let e=t.body;if((0,h.isString)(e))console.info(e);else try{console.info(JSON.stringify(e))}catch{console.info(String(e))}}t({code:0})}shutdown(){return Promise.resolve()}};let Qe=class{loggerProvider;config;constructor(e){this.config=e,this.loggerProvider=new S.LoggerProvider({resource:(0,x.resourceFromAttributes)({[C.ATTR_SERVICE_NAME]:be,[C.ATTR_SERVICE_VERSION]:xe})}),this.initializeExporters(),this.setGlobalLoggerProvider()}getLogger(e){return this.loggerProvider.getLogger(e)}initializeExporters(){let e=[];if(this.config.consoleEnabled){let t=new Ze;e.push(new S.SimpleLogRecordProcessor(t))}if(this.config.azureEnabled&&(0,h.isDefined)(this.config.azureConnectionString)){let t=new b.AzureMonitorLogExporter({connectionString:this.config.azureConnectionString});e.push(new S.BatchLogRecordProcessor(t))}this.loggerProvider=new S.LoggerProvider({processors:e})}setGlobalLoggerProvider(){g.logs.setGlobalLoggerProvider(this.loggerProvider)}};Qe=(0,Xe.default)([(0,_.injectable)(),(0,Ye.default)(`design:paramtypes`,[Object])],Qe),l(Ie()),l(Le());let H=new class{storage;otelService;otelLogger;isConsoleEnabled;printBuffer;default=this.createLogObject(Ge.DEFAULT);verbose=this.createLogObject(Ge.VERBOSE);constructor(e){this.storage=new m.AsyncLocalStorage,this.otelService=new Qe(e),this.otelLogger=this.otelService.getLogger(`ts-agent`),this.isConsoleEnabled=e.consoleEnabled,this.printBuffer=new We(e.consoleEnabled)}resetPrintOrder(){this.printBuffer.resetOrder()}async withBufferedPrinting(e,t){return this.printBuffer.withBufferedPrinting(e,t)}info={startLog:(e,...t)=>this.log(g.SeverityNumber.INFO,`Start ${e}`,...t),endLog:(e,...t)=>this.log(g.SeverityNumber.INFO,`End ${e}`,...t),failedLog:(e,...t)=>this.log(g.SeverityNumber.INFO,`Failed ${e}`,...t),defaultLog:(e,...t)=>this.log(g.SeverityNumber.INFO,e,...t)};debug={startLog:(e,...t)=>this.log(g.SeverityNumber.DEBUG,`Start ${e}`,...t),endLog:(e,...t)=>this.log(g.SeverityNumber.DEBUG,`End ${e}`,...t),failedLog:(e,...t)=>this.log(g.SeverityNumber.DEBUG,`Failed ${e}`,...t),defaultLog:(e,...t)=>this.log(g.SeverityNumber.DEBUG,e,...t)};error(e,t,...n){let r=t instanceof Error?`${e} ${t.message} ${t.stack}`:`${e} ${JSON.stringify(t)}`;this.log(g.SeverityNumber.ERROR,r,...n)}getRequestId(){return this.storage.getStore()?.requestId??``}getTraceId(){return this.storage.getStore()?.traceId??``}log(e,t,...n){let r=this.formatMessage(t,...n);this.logToOpenTelemetry(e,r),!(!this.isConsoleEnabled||!this.isLevelEnabled(Ge.DEBUG))&&console.info(r)}logToOpenTelemetry(e,t){let n=this.storage.getStore(),r={service:be,version:xe};(0,h.isDefined)(n)&&((0,h.isDefined)(n.traceId)&&(r.traceId=n.traceId),(0,h.isDefined)(n.requestId)&&(r.requestId=n.requestId),(0,h.isDefined)(n.category)&&(r.category=n.category),(0,h.isDefined)(n.subCategory)&&(r.subCategory=n.subCategory),(0,h.isDefined)(n.testedMethodClass)&&(r.testedMethodClass=n.testedMethodClass),(0,h.isDefined)(n.testedFunction)&&(r.testedFunction=n.testedFunction),(0,h.isDefined)(n.userId)&&(r.userId=n.userId.toString())),this.otelLogger.emit({severityNumber:e,severityText:this.getSeverityText(e),body:t,attributes:r})}getSeverityText(e){switch(e){case g.SeverityNumber.TRACE:return`TRACE`;case g.SeverityNumber.DEBUG:return`DEBUG`;case g.SeverityNumber.INFO:return`INFO`;case g.SeverityNumber.WARN:return`WARN`;case g.SeverityNumber.ERROR:return`ERROR`;case g.SeverityNumber.FATAL:return`FATAL`;default:return`INFO`}}formatMessage(e,...t){let n=this.formatPrefix(),r=(0,h.isDefined)(n)?`${n} ${e}`:e;return this.formatPrint(r,...t)}formatPrint(e,...t){return(0,h.isEmpty)(t)?e:`${e} ${t.map(e=>JSON.stringify(e)).join(` `)}`}withContext=(e,t,n)=>{let r=n.value,i=this.storage;return n.value=function(...e){let t=i.getStore();if(t){let n={...t};return i.run(n,()=>r.apply(this,e))}let n={traceId:Je(),requestId:qe()};return i.run(n,()=>r.apply(this,e))},n};addContext(e){let t=this.storage.getStore();(0,h.isDefined)(t)&&(t.category=e.category??t.category,t.subCategory=e.subCategory??t.subCategory,t.testedMethodClass=e.testedMethodClass??t.testedMethodClass,t.testedFunction=e.testedFunction??t.testedFunction,t.userId=e.userId??t.userId)}captureContext({withNewRequestId:e=!1}={}){let t=this.storage.getStore();return t?{...t,...e&&{requestId:qe()}}:void 0}async runWithContext(e,t){return(0,h.isDefined)(e)?this.storage.run(e,t):t()}isLevelEnabled(e){switch(e){case Ge.DEFAULT:return!0;case Ge.VERBOSE:return Ue().isVerbose()||Ue().isDebug();case Ge.DEBUG:return Ue().isDebug()}}createLogObject(e){return{info:(t,...n)=>{this.isLevelEnabled(e)&&this.printOrBuffer(Ke.INFO,this.formatPrint(t,...n))},warn:(t,...n)=>{this.isLevelEnabled(e)&&this.printOrBuffer(Ke.WARN,this.formatPrint(t,...n))}}}printOrBuffer(e,t){this.printBuffer.printOrBuffer(e,t)}formatPrefix(){let e=this.storage.getStore();if(!(0,h.isDefined)(e))return``;let t=[];return(0,h.isDefined)(e.traceId)&&t.push(`[${e.traceId}]`),(0,h.isDefined)(e.requestId)&&t.push(`[${e.requestId}]`),(0,h.isDefined)(e.category)&&t.push(`[${e.category}]`),(0,h.isDefined)(e.subCategory)&&t.push(`[${e.subCategory}]`),(0,h.isDefined)(e.testedMethodClass)&&t.push(`[${e.testedMethodClass}]`),(0,h.isDefined)(e.testedFunction)&&t.push(`[${e.testedFunction}]`),t.join(` `)}}({consoleEnabled:!1,azureEnabled:!0,azureConnectionString:`InstrumentationKey=c18a3332-f844-498f-98e0-d818996cf526;IngestionEndpoint=https://eastus2-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus2.livediagnostics.monitor.azure.com/;ApplicationId=2150ffe0-cb0f-4b00-9562-d3385b383d74`});function $e(e){return function(t,n,r){return(0,h.isDefined)(e)&&H.addContext(e),H.withContext(t,n,r)}}var et=class e{rootPath;absolutePath;static EARLY_FILENAME_VAR=`$early_filename`;constructor(e){this.rootPath=f.default.normalizeTrim(Ue().getRootPath());let t=f.default.normalizeTrim(e),n=f.default.normalizeTrim(this.rootPath);if(t===n||t.startsWith(n+f.default.sep))this.absolutePath=t;else{let e=t.replace(/^\//,``);this.absolutePath=f.default.resolve(this.rootPath,e)}}static fromSourceFile(t){let n=f.default.normalizeTrim(t.getFilePath());return new e(f.default.relative(f.default.normalizeTrim(Ue().getRootPath()),n))}static fromAbsolutePath(t){let n=f.default.normalizeTrim(t);return new e(f.default.relative(f.default.normalizeTrim(Ue().getRootPath()),n))}static fromRelativePath(t){return new e(t)}getRelativeFilePath(){return f.default.relative(this.rootPath,this.absolutePath)}getAbsoluteFilePath(){return this.absolutePath}async isFileExists(){try{return(await p.default.stat(this.absolutePath)).isFile()}catch{return!1}}async isDirectoryExists(){try{return(await p.default.stat(this.absolutePath)).isDirectory()}catch{return!1}}async createDirectory(e){await p.default.mkdir(this.absolutePath,{recursive:e?.recursive??!0})}async getText(){try{return await p.default.readFile(this.absolutePath,`utf8`)}catch{return``}}async upsert(e){let t=f.default.dirname(this.absolutePath);await p.default.mkdir(t,{recursive:!0}),await(await this.isFileExists()?p.default.appendFile(this.absolutePath,e):p.default.writeFile(this.absolutePath,e)),H.info.defaultLog(`Upserted file`,{path:this.getRelativeFilePath()})}async replace(e){let t=f.default.dirname(this.absolutePath);await p.default.mkdir(t,{recursive:!0}),await p.default.writeFile(this.absolutePath,e),H.info.defaultLog(`Replaced file`,{path:this.getRelativeFilePath()})}async delete(){try{await p.default.unlink(this.absolutePath),H.info.defaultLog(`Deleted file`,{path:this.getRelativeFilePath()})}catch{}}};let tt={WIN32:`win32`,DARWIN:`darwin`,LINUX:`linux`},nt={JAVASCRIPT:`javascript`,TYPESCRIPT:`typescript`,PYTHON:`python`},rt=e=>{let t=Ue().getRootPath();return f.default.resolve(t,e)},it=e=>{let t=Ue().getRootPath(),n=f.default.normalize(e);return f.default.relative(t,n)},at=e=>({".js":`javascript`,".mjs":`javascript`,".cjs":`javascript`,".jsx":`javascript`,".ts":`typescript`,".tsx":`typescript`,".py":`python`})[e.toLowerCase()]??`javascript`;function ot(e){return at((0,f.extname)(e))}function st(e){return at((0,f.extname)(e))===`typescript`}function U(e){return at((0,f.extname)(e))===nt.PYTHON}function ct(e){let t=Ue().getRootPath();if(!(0,h.isDefined)(t))throw Error(`Workspace root path is not defined`);if((0,h.isEmpty)(e))return f.default.normalize(t);let n=f.default.normalize(t),r=f.default.normalize(e);if(process.platform===tt.WIN32){let t=n.split(`:`)[0].toUpperCase(),i=r.split(`:`)[0].toUpperCase();if(t!==i&&!i.startsWith(t))return e}return f.default.relative(n,r)}function lt(e){return e.startsWith(`../`)?`../${e}`:e.startsWith(`./`)?`.${e}`:e}function ut(e){let t=f.default.normalize(rt(e)),n=f.default.normalize((0,T.default)([`package.json`,`project.json`],{cwd:t})??``);if(!n)return``;let r=it((0,f.dirname)(n));return r.startsWith(`/`)?r.slice(1):r}function dt(e,t,n){if(!pt(e))return e;let r=n===``?t:t.replace(n,``),i=n===``?ht(r):mt(r),a=r.split(`/`).slice(0,-1),o=ft(e,`../`),s=o>0?a.slice(0,-o).join(`/`):(0,f.dirname)(r),c=e.replaceAll(`../`,``).replaceAll(`./`,``);return f.default.join(i,s,c)}function ft(e,t){return e.split(t).length-1}function pt(e){return e.startsWith(`../`)||e.startsWith(`./`)}function mt(e){let t=ft(e,`/`);return`../`.repeat(t-1)}function ht(e){let t=ft(e,`/`);return`../`.repeat(t+1)}function gt(e){return e?.includes(`node_modules/`)}let _t=e=>e.replaceAll(/[.*+?^${}()|[\]\\]/g,String.raw`\$&`);function vt(e,t){let n=f.default.isAbsolute(e)?e:rt(e);return(0,T.default)(t,{cwd:n})}function yt(e,t){let n=vt(e,t);if(!(0,h.isDefined)(n))return;let r=w.readFileSync(n,`utf8`);return JSON.parse(r)}function bt(e){return yt(e,`package.json`)}function xt(e,t){let{dependencies:n={},devDependencies:r={}}=e;return Object.keys({...r,...n}).includes(t)}let St=[{path:`eslint.config.js`,isFlat:!0},{path:`eslint.config.cjs`,isFlat:!0},{path:`eslint.config.mjs`,isFlat:!0},{path:`eslint.config.ts`,isFlat:!0},{path:`eslint.config.mts`,isFlat:!0},{path:`eslint.config.cts`,isFlat:!0},{path:`.eslintrc`,isFlat:!1},{path:`.eslintrc.js`,isFlat:!1},{path:`.eslintrc.cjs`,isFlat:!1},{path:`.eslintrc.mjs`,isFlat:!1},{path:`.eslintrc.json`,isFlat:!1},{path:`.eslintrc.yaml`,isFlat:!1},{path:`.eslintrc.yml`,isFlat:!1}],Ct=[`@typescript-eslint/no-undefined`,`unicorn/no-useless-undefined`,`no-undefined`];async function wt(e){for(let{path:t,isFlat:n}of St){let r=f.default.join(e,t);if(await et.fromAbsolutePath(r).isFileExists())return{path:r,isFlat:n}}return bt(e)?.eslint?{path:vt(e,`package.json`),isFlat:!1}:{path:null,isFlat:!1}}let Tt={GET_TESTABLES:`get-testables`,GET_COVERAGE:`get-coverage`,GENERATE_COVERAGE:`generate-coverage`,SET_COVERAGE:`set-coverage`,GENERATE_TESTS:`generate-tests`,INITIALIZATION:`initialization`,GET_TESTED_CODE_DATA_SOURCE:`get-tested-code-data-source`,DYNAMIC_PROMPT:`dynamic-prompt`,TEST_VALIDATION:`test-validation`},Et={CODE_EXTRACTOR:`code-extractor`,CODE_REFINEMENT:`code-refinement`,TEST_MANAGEMENT:`test-management`,TEST_VALIDATOR:`test-validator`,CONFIG_FILE:`config-file`,COMMAND_EXECUTION:`command-execution`},Dt=[`.jsx`,`.tsx`],Ot=[`it`,`test`,`it.each`,`test.each`],kt=function(e){return e.Default=`default`,e.ObjectDefault=`object-default`,e.Named=`named`,e.Unknown=`unknown`,e.NotExported=`not-exported`,e}({}),At=function(e){return e.PRIVATE=`private`,e.PROTECTED=`protected`,e.PUBLIC=`public`,e}({}),jt=function(e){return e.REACT=`react`,e.ANGULAR=`angular`,e}({}),Mt=`unknown`,Nt=(0,O.promisify)(D.default.exec);async function Pt(e,{cwd:t=Ue().getRootPath(),timeout:n=1e4}={}){return(await Nt(e,{cwd:t,maxBuffer:500*1024,timeout:n}))?.stdout?.toString()??``}let Ft=e=>{let t=rt(e);return(0,T.default)(`jest.config.+(js|ts|mjs|cjs|json)`,{cwd:t})},It=e=>(0,h.isObject)(e)&&(0,h.isString)(e.rootDir),Lt=async e=>{let t;if(H.addContext({subCategory:Et.CONFIG_FILE}),(0,h.isDefined)(e)){let n=Ft(e);n!==null&&(t=(0,f.dirname)(n))}t??=Ue().getRootPath();let n;try{if(n=await Pt(`npx jest --showConfig`,{cwd:t}),!(0,h.isString)(n))throw H.info.defaultLog(`Jest config return is not a string`,n),Error(`Jest config return is not a string`);let e=JSON.parse(n);if((0,h.isObject)(e)&&(0,h.isArray)(e.configs)&&e.configs.every(e=>It(e)))return{projectConfigs:e.configs,globalConfig:e.globalConfig,configs:e.configs}}catch(e){H.info.defaultLog(`Cannot read jest config`,(0,h.getErrorMessage)(e)),H.info.defaultLog(`Failed reading jest config`,e,(0,h.getErrorMessage)(e));return}H.info.defaultLog(`Invalid jest config or config in not supported format`)},Rt=async()=>{let e=[Ue().getRootPath()],t=f.default.join(`node_modules`,`.prisma`,`client`,`index.d.ts`),n=e.map(e=>f.default.join(e,t)).map(e=>et.fromAbsolutePath(e));return(await(0,h.filterAsync)(n,e=>e.isFileExists())).map(e=>e.getAbsoluteFilePath())},zt=async()=>{try{let e=Ue().getRootPath();if(!(0,h.isDefined)(e))return[];let t=await(0,k.getSchemaWithPathOptional)(``,``,{cwd:e});if(!(0,h.isDefined)(t))return[];let n=t.schemas.map(e=>e[1]),r=new Set;for(let e of n){let n=(await(0,k.getConfig)({datamodel:e,ignoreEnvVarErrors:!0})).generators;for(let e of n)if((0,h.isDefined)(e.output?.value)){let n=f.default.join(f.default.resolve(t.schemaRootDir,e.output.value),`index.d.ts`);await et.fromAbsolutePath(n).isFileExists()&&r.add(n)}}return[...r]}catch(e){return H.error(`Failed to get prisma typings paths`,e),[]}},Bt=async()=>(await Promise.all([Rt(),zt()])).flat(),Vt=async(e,t=!1,n)=>{let r=`!**/node_modules/**`;if(t)return new E.Project({useInMemoryFileSystem:!0,compilerOptions:n});let i=st(e),a=Ht((0,f.dirname)(rt(e)),Ue().isSiblingFolderStructured());if(!i&&!(0,h.isDefined)(a)){let t=await Wt(e);if(!(0,h.isDefined)(t)||(0,h.isEmpty)(t))throw Error(`Cannot find source code path in jest config`);let n=new E.Project({compilerOptions:{allowJs:!0,maxNodeModuleJsDepth:0},useInMemoryFileSystem:!1});return n.addSourceFilesAtPaths([...t,r]),n}if(!i&&(0,h.isDefined)(a)){let t=new E.Project({tsConfigFilePath:a,compilerOptions:{allowJs:!0,maxNodeModuleJsDepth:0}}),n=await Wt(e);return t.addSourceFilesAtPaths([...n,r]),t}let o=new E.Project({tsConfigFilePath:a,compilerOptions:{maxNodeModuleJsDepth:0}}),s=await Bt();for(let e of s)o.addSourceFileAtPath(e);return o},Ht=(e,t)=>{let n;try{n=Ut(e)}catch{t&&(n=Ut((0,f.dirname)(e)))}return n},Ut=e=>{let t=e,n=/^(tsconfig|jsconfig).*\.json$/;for(;t!==(0,f.dirname)(t);){let e=(0,f.join)(t,`tsconfig.json`),r=(0,f.join)(t,`jsconfig.json`);if(!(0,w.existsSync)(t))return Ut((0,f.dirname)(t));if((0,w.existsSync)(e))return e;if((0,w.existsSync)(r))return r;let i=(0,w.readdirSync)(t);for(let e of i)if(n.test(e))return(0,f.join)(t,e);t=(0,f.dirname)(t)}},Wt=async e=>{let t=await Lt(e);if((0,h.isDefined)(t)){let e=t?.configs[0].roots.map(e=>f.default.join(e,`**/*.{ts,js,tsx,jsx}`));if(!(0,h.isEmpty)(e))return e}return[rt(ut(e))]};var Gt=l(Ie()),Kt=l(Le());let qt=`The ts-morph project is not initialized.`,Jt=new class{storage=new m.AsyncLocalStorage;_project;clear(){this._project=void 0}async init(e,t,n){let r=rt(e);if((0,h.isDefined)(this._project))return this._project.addSourceFileAtPathIfExists(r);this._project=await Vt(e,t,n);let i=this.storage.getStore();if((0,h.isDefined)(i))return this._project.addSourceFileAtPathIfExists(r)}add(e,t){let n=rt(e),r=this.storage.getStore()?.getProject();if(!(0,h.isDefined)(r))throw Error(qt);return r.createSourceFile(n,t,{overwrite:!0})}update(e,t){let n=this.get(e);return n.replaceWithText(t),n}addFile(e){(0,h.isDefined)(this._project)&&this._project.addSourceFileAtPathIfExists(e)}removeFile(e){if(!(0,h.isDefined)(this._project))return;let t=this._project.getSourceFile(e);(0,h.isDefined)(t)&&this._project.removeSourceFile(t)}async refreshFromFileSystem(e){if(!(0,h.isDefined)(this._project))return;let t=rt(e),n=this._project?.getSourceFile(e)??this._project?.getSourceFile(t);if((0,h.isDefined)(n)){let e=n.getFilePath();this._project.removeSourceFile(n),this._project.addSourceFileAtPath(e)}}get(e){let t=rt(e),n=this.storage.getStore()?.getProject();if(!(0,h.isDefined)(n))throw Error(qt+` store`);let r=n.getSourceFile(t);if(!(0,h.isDefined)(r))throw Error(`The source file is absent. ${e}`);return r}async save(e){await this.get(e).save()}async delete(e){await this.get(e).deleteImmediately()}getOrUndefined(e){let t=rt(e);return this._project?.getSourceFile(t)}withContext=(e,t,n)=>{let r=n.value,i=this.storage;if((0,h.isDefined)(i.getStore()))return n;let a=()=>this._project;return n.value=function(...e){let t={getProject:a};return i.run(t,()=>r.apply(this,e))},n}},Yt=Jt.withContext,Xt=async e=>{class t{async fn(){return e()}}(0,Kt.default)([Yt,(0,Gt.default)(`design:type`,Function),(0,Gt.default)(`design:paramtypes`,[]),(0,Gt.default)(`design:returntype`,Promise)],t.prototype,`fn`,null),await new t().fn()},Zt=e=>{let t=e?.asKind(E.SyntaxKind.ExpressionStatement)?.getExpression();if(!(0,h.isDefined)(t))return;let n=t.asKind(E.SyntaxKind.CallExpression)?.getArguments()?.at(-1),r=n?.asKind(E.SyntaxKind.ArrowFunction)?.getBody(),i=n?.asKind(E.SyntaxKind.FunctionExpression)?.getBody();return r?.asKind(E.SyntaxKind.Block)??i?.asKind(E.SyntaxKind.Block)},Qt=e=>E.Node.isExpressionStatement(e)&&e.getFirstChildByKind(E.SyntaxKind.CallExpression)?.getFirstChildByKind(E.SyntaxKind.Identifier)?.getText()===`describe`,$t=e=>e.getStatements().filter(e=>Qt(e)),en=e=>{let t=e.getExpression().getFirstChild()?.getText();return!(0,h.isDefined)(t)||(0,h.isEmpty)(t)?!1:Ot.some(e=>t.startsWith(e))},tn=e=>{let t=Zt(e);return(0,h.isDefined)(t)?t.getChildrenOfKind(E.SyntaxKind.ExpressionStatement).some(e=>en(e)):!1},nn=e=>{let t=Zt(e);return(0,h.isDefined)(t)?t.getChildrenOfKind(E.SyntaxKind.ExpressionStatement).filter(e=>Qt(e)&&tn(e)):[]},rn=e=>{let t=Zt(e);if((0,h.isDefined)(t))return t.getChildrenOfKind(E.SyntaxKind.ExpressionStatement).find(e=>Qt(e)&&tn(e))},an=e=>{let t=rn(e);return(0,h.isDefined)(t)},on=e=>{let t=Zt(e);if(!(0,h.isDefined)(t))return!0;let n=t.getChildrenOfKind(E.SyntaxKind.ExpressionStatement);if((0,h.isEmpty)(n))return!0;let r=new Set([`beforeEach`,`afterEach`,`beforeAll`,`afterAll`]);return n.every(e=>{let t=e.getExpressionIfKind(E.SyntaxKind.CallExpression)?.getExpressionIfKind(E.SyntaxKind.Identifier);return(0,h.isDefined)(t)?r.has(t.getText()):!1})},sn=e=>{if(e.isNamedExport?.())return kt.Named;if(e.isDefaultExport?.())return kt.Default;let t=e?.getParent();if((0,h.isDefined)(t)){if(t.isNamedExport?.())return kt.Named;if(t.isDefaultExport?.())return kt.Default}return e.isExportDefaultObject?.()??ln(e.getSourceFile(),e.getName?.())?kt.ObjectDefault:kt.NotExported},cn=(e,t)=>(0,h.isDefined)(e)?sn(e):(0,h.isDefined)(t)?t.isNamedImport?kt.Named:kt.Default:kt.Unknown;function ln(e,t){let[n]=e.getExportAssignments()??[];return n?.getDescendantsOfKind(E.SyntaxKind.Identifier).some(e=>(e.getSymbol()?.getEscapedName()??e.getText())===t)}function un(e,t){let n=$t(Jt.get(e)),r=n.find(e=>e.getText().includes(t))??n[0],i=nn(r),a=[],o=(0,h.isEmpty)(i)?[r]:i;for(let e of o){let t=Zt(e);(0,h.isDefined)(t)&&a.push(...t.getChildrenOfKind(E.SyntaxKind.ExpressionStatement).filter(e=>en(e)))}return a}let dn=e=>e.getFirstDescendantByKind(E.SyntaxKind.StringLiteral)?.getLiteralValue(),W=e=>dn(e),fn=e=>dn(e),pn=(e,t)=>{let n=e.getFullText().slice(0,Math.max(0,t)).split(`
|
|
32006
32006
|
`);return{line:n.length,column:(n.at(-1)?.length??0)+1}},mn=(e,t)=>{let n=t.getStart(),r=t.getEnd(),{line:i,column:a}=pn(e,n),{line:o,column:s}=pn(e,r);return{startLine:i,startColumn:a,startIndex:n,endLine:o,endColumn:s,endIndex:r}},hn=e=>e.getDescendantsOfKind(E.SyntaxKind.ExpressionStatement).filter(e=>en(e)),gn=(e,t,n,r)=>{let i=r?`.tsx`:`.ts`,a=t+Date.now()+(0,y.randomUUID)()+i;return e.createSourceFile(a,n)},_n=e=>e.getDescendantsOfKind(E.SyntaxKind.CallExpression).reduce((e,t)=>{let n=t.getExpression(),r=n.getParentIfKind(E.SyntaxKind.VariableDeclaration);return(0,h.isDefined)(r)&&n.getText()===`require`&&e.push(r),e},[]),vn=e=>{let t=e.getFirstChildByKind(E.SyntaxKind.CallExpression);if(!(0,h.isDefined)(t))return;let[n]=t.getArguments();if(!(!(0,h.isDefined)(n)||n.getKind()!==E.SyntaxKind.StringLiteral))return n.getText().slice(1,-1)},yn=e=>{let t=[`${Ue().getEarlyTestFilenameSuffix()}.ts`,`.test.ts`,`.spec.ts`,`.test.tsx`,`.spec.tsx`,`.test.js`,`.spec.js`,`.test.jsx`,`.spec.jsx`],n=e.getFilePath(),r=`_`+(0,y.randomUUID)()+`_temp`;for(let e of t)if(n.endsWith(e))return n.slice(0,-e.length)+r+e;let i=n.split(`.`);return i[i.length-2]+=r,i.join(`.`)},bn=(e,t=e.getFullText())=>{let n=yn(e);return e.getProject().createSourceFile(n,t)},xn=e=>e.getSymbol()?.getDeclarations()?.[0]?.getSourceFile()??e.getAliasSymbol()?.getDeclarations()?.[0]?.getSourceFile(),Sn=(e,t)=>{let n=e.getRelativePathTo(t.getFilePath());n=n.replaceAll(`\\`,`/`);let r=f.default.extname(n);return n=n.replaceAll(r,``),n.startsWith(`.`)||(n=`./`+n),n},Cn=[E.SyntaxKind.JsxElement,E.SyntaxKind.JsxOpeningElement,E.SyntaxKind.JsxClosingElement,E.SyntaxKind.JsxExpression,E.SyntaxKind.JsxSelfClosingElement,E.SyntaxKind.JsxAttributes,E.SyntaxKind.JsxAttribute,E.SyntaxKind.JsxFragment,E.SyntaxKind.JsxOpeningFragment,E.SyntaxKind.JsxClosingFragment,E.SyntaxKind.JsxNamespacedName,E.SyntaxKind.JsxSpreadAttribute,E.SyntaxKind.JsxText,E.SyntaxKind.JsxTextAllWhiteSpaces],wn=e=>Cn.some(t=>(0,h.isDefined)(e.getFirstDescendantByKind(t))),G=e=>Cn.some(t=>(0,h.isDefined)(e.getParentIfKind(t))),Tn=e=>{let t=e.compilerType;if(`id`in t&&(0,h.isNumber)(t.id)){let e=t.id;return e===0?null:e}return null},En=new Set(`withRouter.connect.withAuth.withStyles.withTheme.forwardRef.styled.withErrorBoundary.withSuspense.withProps.withState.withHandlers.withContext.withApollo.withRedux.withIntl.withTranslation.withFormik.withViewport.withLogger.withMemo.withDefaults.withReduxForm.withPermissions.withData.withTracker.withServices.withFirebase.withNavigation.withHeader.withFooter`.split(`.`)),Dn=`anonymousFunction`;var On=class{exportedDeclarations;constructor(e,t){this.sourceFile=e,this.moduleInfo=t;let n=this.moduleInfo.getExports();this.exportedDeclarations=[n.defaultExport,...n.namedExports].filter(Boolean)}getAllTestables(){return[...this.getClassesWithMethods(),...this.getFunctionsDeclarations(),...this.getFunctionsExpressions(),...this.getArrowFunctionsExpressions(),...this.getHOCs(),...this.getObjectMethods()]}getAllSerializedTestables(){return this.getAllTestables().map(e=>(0,h.removeNestedField)(e,[`node`,`parent`]))}getAllMethodsCount(){return this.getAllTestables().filter(e=>e.type!==`class`).length}getHOCs(){return this.sourceFile.getVariableStatements().filter(e=>{let t=e.getFirstDescendantByKind(E.SyntaxKind.CallExpression),n=t?.getFirstDescendantByKind(E.SyntaxKind.PropertyAccessExpression),r=t?.getFirstDescendantByKind(E.SyntaxKind.Identifier);return[n?.getText(),r?.getText()].some(e=>(0,h.isDefined)(e)?[...En.values()].some(t=>e.includes(t)):!1)}).map(e=>{let t=e.getFirstDescendantByKind(E.SyntaxKind.VariableDeclaration)?.getFirstChildByKind(E.SyntaxKind.Identifier)?.getText(),n=this.isEntityExported(t)||e.isExported();return{...this.getLocationPivot(e),name:t,type:`function`,node:e,canCreateTests:n}})}getFunctionsDeclarations(){return this.sourceFile.getFunctions().map(e=>{let t=e.getName()??Dn,n=this.isEntityExported(t)||e.isExported();return{...this.getLocationPivot(e),name:t,type:`function`,node:e,canCreateTests:n}})}getFunctionsExpressions(){return this.sourceFile.getDescendantsOfKind(E.SyntaxKind.FunctionExpression).filter(e=>e.getParentIfKind(E.SyntaxKind.ExportAssignment)?.isExportEquals()??!(this.isCallbackFunction(e)||this.isInnerFunction(e)||this.isJSXFunction(e))).map(e=>{let t=e.getName()??this.getArrowFunctionName(e)??Dn,n=this.isEntityExported(t);return{...this.getLocationPivot(e),name:t,type:`function`,node:e,canCreateTests:n}})}getArrowFunctionsExpressions(){return this.sourceFile.getDescendantsOfKind(E.SyntaxKind.ArrowFunction).filter(e=>e.getParentIfKind(E.SyntaxKind.ExportAssignment)?.isExportEquals()??!(this.isCallbackFunction(e)||this.isInnerFunction(e)||this.isJSXFunction(e))).map(e=>{let t=this.getArrowFunctionName(e)??Dn,n=this.isEntityExported(t)||this.isEntityExportedWithThis(e);return{...this.getLocationPivot(e),name:t,type:`function`,node:e,canCreateTests:n}})}isCallbackFunction(e){return e.getParent()?.getKind()===E.SyntaxKind.CallExpression}isJSXFunction(e){return G(e)}isInnerFunction(e){let t=e.getParent(),n=0;for(;(0,h.isDefined)(t)&&t.getKind()!==E.SyntaxKind.SourceFile&&n<20;){if(t.getKind()===E.SyntaxKind.ArrowFunction)return!0;t=t.getParent(),n++}return!1}getArrowFunctionName(e){let t=e.getParent();if(t?.getKind()===E.SyntaxKind.BinaryExpression&&t?.getFirstChild()?.getKind()===E.SyntaxKind.PropertyAccessExpression)return e.getParent()?.getFirstChildByKind(E.SyntaxKind.PropertyAccessExpression)?.getName();let n=e.getFirstAncestorByKind(E.SyntaxKind.VariableDeclaration);if((0,h.isDefined)(n))return n.getName();let r=e.getFirstAncestorByKind(E.SyntaxKind.PropertyAssignment);if((0,h.isDefined)(r))return r.getName()}getClasses(){return this.sourceFile.getClasses().map(e=>{let t=e.getName(),n=this.isEntityExported(t)||e.isDefaultExport(),r=n?this.getClassMethods(e,n).some(e=>e.canCreateTests):!1;return{...this.getLocationPivot(e),name:t,type:`class`,node:e,canCreateTests:r}})}getClassesWithMethods(){return this.getClasses().flatMap(e=>[e,...this.getClassMethods(e.node,e.canCreateTests)])}getClassMethods(e,t){return e.getMethods().map(n=>{let r=n.hasModifier(E.SyntaxKind.PrivateKeyword),i=n.getName().startsWith(`#`),a=r||i;return{...this.getLocationPivot(n),parent:e,parentName:e.getName()??``,type:`method`,node:n,name:n.getName(),canCreateTests:t&&!a}})}getObjectMethods(){let e=this.sourceFile.getDescendantsOfKind(E.SyntaxKind.BinaryExpression).map(e=>e.getRight()).filter(e=>E.Node.isObjectLiteralExpression(e)),t=this.sourceFile.getExportAssignments().map(e=>e.getExpression()).filter(e=>E.Node.isObjectLiteralExpression(e));return[...e,...t].flatMap(e=>e.getProperties()).filter(e=>E.Node.isMethodDeclaration(e)).map(e=>({...this.getLocationPivot(e),type:`object-method`,node:e,name:e.getName(),canCreateTests:!0}))}getLocationPivot(e){return mn(this.sourceFile,e)}isEntityExported(e){return(0,h.isDefined)(e)&&!(0,h.isEmpty)(e)?this.exportedDeclarations.includes(e):!1}isEntityExportedWithThis(e){let t=e.getParent()?.getChildren()??[];return t[0]?.getFirstChild()?.getKind()===E.SyntaxKind.ThisKeyword&&t[1]?.getKind()===E.SyntaxKind.EqualsToken&&t[2]===e}findTestable(e,t,n){return this.getAllTestables().find(r=>r.name===t&&r.type===e?r.type===`method`?r.parentName===n:!0:!1)}};let kn=`default`;var An=class{constructor(e,t){this.sourceFile=e,this.isUsingJSX=t}getImports(){return[...this.getESMImportsNodes(),...this.getCJSImportsNodes()].map(e=>({name:`Import`,location:mn(this.sourceFile,e),node:e,type:`import`,sourceValue:(E.Node.isImportDeclaration(e)?e.getModuleSpecifierValue():e.getFirstDescendantByKind(E.SyntaxKind.StringLiteral)?.getLiteralValue())??``}))}getCJSImportsNodes(){return this.sourceFile.getVariableStatements().filter(e=>(e.getFirstDescendantByKind(E.SyntaxKind.CallExpression)?.getExpression())?.getText()===`require`)}getESMImportsNodes(){return this.sourceFile.getImportDeclarations()}isESM(){let e=this.sourceFile.getImportDeclarations().length>0,t=this.sourceFile.getExportDeclarations().length>0||this.sourceFile.getExportedDeclarations().size>0,n=this.sourceFile.getDescendantsOfKind(E.SyntaxKind.ExportAssignment).length>0;return e||t||n}getCJSExports(){let e=[],t=``,n=`module.exports`,r=`exports`;for(let i of this.sourceFile.getDescendantsOfKind(E.SyntaxKind.ExpressionStatement)){let a=i.getExpression(),o=a.getText().trim(),s=a.asKind(E.SyntaxKind.BinaryExpression);if(!o.startsWith(n)&&!o.startsWith(r)||!(0,h.isDefined)(s))continue;let c=s.getLeft(),l=c.getText(),u=c.asKind(E.SyntaxKind.PropertyAccessExpression),d=u?.getName()??``,f=c.getKind()===E.SyntaxKind.PropertyAccessExpression,p=s.getRight(),m=f&&u?.getExpression().getText()===n,g=f&&u?.getExpression().getText()===r;if(m&&d===kn){t=p.getText();continue}if(m||g){e.push(d);continue}if(l!==n)continue;let _=t=>{let n=t.asKind(E.SyntaxKind.ObjectLiteralExpression);if((0,h.isDefined)(n))for(let t of n.getProperties()){if(t.getKind()===E.SyntaxKind.PropertyAssignment||t.getKind()===E.SyntaxKind.ShorthandPropertyAssignment||t.getKind()===E.SyntaxKind.MethodDeclaration){let n=t.getName();e.push(n)}if(t.getKind()===E.SyntaxKind.PropertyAssignment){let e=t.getInitializer();(0,h.isDefined)(e)&&_(e)}}},v=t=>{let n=t.asKind(E.SyntaxKind.FunctionDeclaration)?.getBody()?.asKind(E.SyntaxKind.Block);if((0,h.isDefined)(n))for(let t of n.getStatements()){let n=((t.asKind(E.SyntaxKind.ExpressionStatement)?.getExpression())?.asKind(E.SyntaxKind.BinaryExpression)?.getLeft())?.asKind(E.SyntaxKind.PropertyAccessExpression);n?.getExpression().getKind()===E.SyntaxKind.ThisKeyword&&e.push(n.getName())}},y=t=>{let n=t.asKind(E.SyntaxKind.FunctionDeclaration)?.getName();if((0,h.isDefined)(n))for(let t of this.sourceFile.getStatements()){let r=((t.asKind(E.SyntaxKind.ExpressionStatement)?.getExpression())?.asKind(E.SyntaxKind.BinaryExpression)?.getLeft())?.asKind(E.SyntaxKind.PropertyAccessExpression);r?.getExpression().getText()===`${n}.prototype`&&e.push(r.getName())}};if(p.getKind()===E.SyntaxKind.ObjectLiteralExpression){_(p);continue}if(p.getKind()===E.SyntaxKind.Identifier){let t=p.asKind(E.SyntaxKind.Identifier),n=t?.findReferences().map(e=>e.getDefinition().getNode().getParent()).filter(e=>(0,h.isDefined)(e)).filter(e=>e.getKind()===E.SyntaxKind.VariableDeclaration);if(!(0,h.isDefined)(n))continue;for(let t of n){let n=t.getInitializer()?.asKind(E.SyntaxKind.ObjectLiteralExpression);if((0,h.isDefined)(n)){for(let t of n.getProperties())if(t.getKind()===E.SyntaxKind.PropertyAssignment||t.getKind()===E.SyntaxKind.ShorthandPropertyAssignment){let n=t.getName();e.push(n)}}}let r=t?.findReferences().map(e=>e.getDefinition().getNode().getParent()).filter(e=>e?.getKind()===E.SyntaxKind.FunctionDeclaration);if(!(0,h.isDefined)(r))continue;for(let e of r)v(e),y(e)}if(p.isKind(E.SyntaxKind.NewExpression)){let e=p.asKind(E.SyntaxKind.NewExpression);(0,h.isDefined)(e)&&(t=e.getExpression().getText());continue}t=p.getText()}return{namedExports:e,defaultExport:t}}getESMExports(){let e=``,t=[],n=!1;for(let r of this.sourceFile.getExportAssignments()){r.isExportEquals()||(n=!0);let i=r.getExpression();if(i.getKind()===E.SyntaxKind.Identifier){e=i.getText();continue}let a=r.getFirstChildByKind(E.SyntaxKind.ObjectLiteralExpression);if((0,h.isDefined)(a)){for(let e of a.getProperties())if(e.getKind()===E.SyntaxKind.PropertyAssignment||e.getKind()===E.SyntaxKind.ShorthandPropertyAssignment||e.getKind()===E.SyntaxKind.MethodDeclaration){let n=e.getName();t.push(n)}}}let r=this.sourceFile.getExportedDeclarations();if(!(n&&r.size===1&&[...r.keys()][0]===kn))for(let[n,i]of r)if(n===kn){let t=(i[0]?.getFirstChildByKind(E.SyntaxKind.Identifier))?.getText()?.trim()??Dn;(0,h.isDefined)(t)&&(e=t)}else t.push(n);return{defaultExport:e,namedExports:t}}hasRequire(){return this.sourceFile.getDescendantsOfKind(E.SyntaxKind.CallExpression).some(e=>e.getExpression().getText()===`require`)}transformRequiresToImports(){let e=gn(this.sourceFile.getProject(),`transformRequiresToImports`,this.sourceFile.getFullText(),this.isUsingJSX),t;try{let n=e.getVariableStatements();for(let e of n){let t=e.getFirstDescendantByKind(E.SyntaxKind.CallExpression),n=t?.getExpression();if(!(0,h.isDefined)(t)||!(0,h.isDefined)(n)||n.getText()!==`require`)continue;let r=t.getFirstDescendantByKind(E.SyntaxKind.StringLiteral)?.getLiteralValue();if(!(0,h.isDefined)(r))continue;let i=e.getDeclarations()?.[0]?.getNameNode()?.getText();if(!(0,h.isDefined)(i))continue;let a=`import ${i} from "${r}";`;e.replaceWithText(a)}t=e.getFullText()}finally{e.getProject().removeSourceFile(e)}return t}getExports(){return this.isESM()?this.getESMExports():this.getCJSExports()}},jn=class{tests;constructor(e){this.sourceFile=e}getDescribes(){return $t(this.sourceFile).map(e=>{let t=W(e);return(0,h.isDefined)(t)?{node:e,name:t,location:mn(this.sourceFile,e),type:`describe`}:null}).filter(e=>(0,h.isDefined)(e))}getTests(){return(0,h.isDefined)(this.tests)||(this.tests=hn(this.sourceFile).map(e=>{let t=mn(this.sourceFile,e),n=fn(e);return(0,h.isDefined)(n)?{node:e,name:n,location:t,type:`test`}:null}).filter(e=>(0,h.isDefined)(e))),this.tests}getDescribeTests(e){return hn(e.node).map(e=>{let t=fn(e);return(0,h.isDefined)(t)?{node:e,name:t,location:mn(this.sourceFile,e),type:`test`}:null}).filter(e=>(0,h.isDefined)(e))}},Mn=class{sourceFile;tests;testables;moduleInfo;constructor(e,t){this.filePath=t;let n=!0;try{let t=new E.Project({useInMemoryFileSystem:!0,skipAddingFilesFromTsConfig:!0,skipFileDependencyResolution:!0,skipLoadingLibFiles:!0}),r=gn(t,`ast`,e,!0);wn(r)?this.sourceFile=r:(t.removeSourceFile(r),this.sourceFile=gn(t,`ast`,e,!1),n=!1)}catch{throw Error(`Cannot parse file content`)}this.moduleInfo=new An(this.sourceFile,n),this.testables=new On(this.sourceFile,this.moduleInfo),this.tests=new jn(this.sourceFile)}isReactFile(){let e=(0,f.extname)(this.filePath??this.sourceFile.getFilePath());return Dt.includes(e)||this.isFileContainsImport(`react`)}isFileContainsImport(e){return this.moduleInfo.getImports().some(t=>t.sourceValue.includes(e))}checkIsJSDoc(e,t,n){return t===E.SyntaxKind.MultiLineCommentTrivia?e.slice(n,n+3)===`/**`&&e.slice(n,n+5)!==`/***/`:!1}getLineRange(e,t){let n=this.sourceFile.compilerNode,r=n.getLineStarts(),{line:i}=n.getLineAndCharacterOfPosition(e),{line:a}=n.getLineAndCharacterOfPosition(t);return{start:r[i]??0,end:r[a+1]??this.sourceFile.getEnd()}}stripComments(e=()=>!0){let t=new Set,n=[],r=this.sourceFile.getFullText(),i=(e,r)=>{for(let i of[...e.getLeadingCommentRanges(),...e.getTrailingCommentRanges()]){let e=i.getPos(),a=i.getEnd(),o=e+`,`+a;if(t.has(o))continue;t.add(o);let s=i.getText(),c=this.checkIsJSDoc(r,i.getKind(),e);n.push({start:e,end:a,text:s,width:i.getWidth(),isJSDoc:c})}};i(this.sourceFile,r),this.sourceFile.forEachDescendant(e=>i(e,r));let a=n.filter(e).map(e=>{let{start:t,end:n}=this.getLineRange(e.start,e.end);return(0,h.isEmpty)(r.slice(t,e.start).trim())&&(0,h.isEmpty)(r.slice(e.end,n).trim())?{start:t,end:n}:{start:e.start,end:e.end}}).toSorted((e,t)=>t.start-e.start);for(let e of a)this.sourceFile.removeText(e.start,e.end);return this.sourceFile.getFullText()}};let Nn=e=>{let{node:t,parent:n,...r}=e;return r};var Pn=class{GITIGNORE_FILE_NAME=`.gitignore`;gitignorePath;constructor(e){this.gitignorePath=(0,f.join)(e,this.GITIGNORE_FILE_NAME)}async add(e){try{let t=await p.default.readFile(this.gitignorePath,`utf8`);t.includes(e)||await p.default.writeFile(this.gitignorePath,`${t}\n${e}`)}catch(e){let t=e instanceof Error?e.message:`Unknown error`;H.info.defaultLog(`Error reading gitignore file`,{message:t})}}};let Fn=`.early.coverage`;var In=class{getCoverageDirectoryPath(){let e=Ue().getRootPath();return f.default.join(e,Fn,`v8`)}getCoverageDirectoryForCommand(){return this.getCoverageDirectoryPath()}getExecutionCwd(){return Ue().getRootPath()}},Ln=class extends In{getCoverageDirectoryForCommand(){let e=Ue().getGitTopLevel(),t=Ue().getRootPath(),n=f.default.relative(e,t);return f.default.join(n,Fn,`v8`)}};function Rn(){let e=Ue().getCoverageCommand()?.split(/\s+/).includes(`nx`)??!1;return H.info.defaultLog(`Coverage path strategy: `+(e?`nx`:`standard`)),e?new Ln:new In}var zn=class{report={};constructor(e,t){for(let[n,r]of Object.entries(e)){let e=f.default.normalize(n);if(e.toLowerCase().startsWith(t.toLowerCase())){let n=e.slice(t.length);this.report[n]=r}}}getEntries(){return Object.entries(this.report)}getStatsForTestable(e,t,n){let r=this.report[e];if(!(0,h.isDefined)(r))return null;let i=this.findFunctionDefinition(t,r.fnMap,n);if(!(0,h.isDefined)(i))return null;let a=0,o=0;for(let[e,t]of Object.entries(r.statementMap))if(this.isStatementInFunction(t,i)||this.isFunctionInStatement(t,i)){o++;let t=r.s[e];(0,h.isDefined)(t)&&t>0&&a++}return{percentage:this.toPercentage(a,o),totalStatements:o,coveredStatements:a}}getStatsForFile(e){let t=this.report[e];if(!(0,h.isDefined)(t))return{percentage:null,totalStatements:0,coveredStatements:0};let n=0,r=0;for(let[e]of Object.entries(t.statementMap)){r++;let i=t.s[e];(0,h.isDefined)(i)&&i>0&&n++}return{percentage:this.toPercentage(n,r),totalStatements:r,coveredStatements:n}}getStatsForDirectory(e){let t=0,n=0;for(let[r,i]of Object.entries(this.report))if(this.isSubdirectory(e,r)){n+=Object.keys(i.statementMap).length;for(let[e]of Object.entries(i.statementMap)){let n=i.s[e];(0,h.isDefined)(n)&&n>0&&t++}}return{percentage:this.toPercentage(t,n),totalStatements:n,coveredStatements:t}}calculateCoverageForFiles(e){let t=0,n=0,r=new Set(e.map(e=>this.normalizeFilePath(e)));for(let[e,i]of Object.entries(this.report)){let a=this.normalizeFilePath(e);if(r.has(a)){let e=Object.keys(i.statementMap).length;t+=e;for(let[e]of Object.entries(i.statementMap)){let t=i.s[e];(0,h.isDefined)(t)&&t>0&&n++}}}return{percentage:this.toPercentage(n,t),totalStatements:t,coveredStatements:n}}normalizeFilePath(e){return e.startsWith(`/`)?e.slice(1):e}isSubdirectory(e,t){let n=f.default.relative(e,t);return(0,h.isDefined)(n)?!n.startsWith(`..`)&&!f.default.isAbsolute(n):!1}isStatementInFunction(e,t){return!(e.start.line<t.loc.start.line||e.end.line>t.loc.end.line||e.start.line===t.loc.start.line&&e.start.column<t.loc.start.column||e.end.line===t.loc.end.line&&e.end.column>t.loc.end.column)}isFunctionInStatement(e,t){return!(t.loc.start.line<e.start.line||t.loc.end.line>e.end.line||t.loc.start.line===e.start.line&&t.loc.start.column<e.start.column||t.loc.end.line===e.end.line&&t.loc.end.column>e.end.column)}findFunctionDefinition(e,t,n){for(let[,n]of Object.entries(t))if(n.name===e)return n;return null}toPercentage(e,t,n=0){if(t===0)return null;let r=e/t;return Number(Math.round(r*100).toFixed(n))}};async function Bn(e){let t=Ue().getRootPath(),n=[];try{let e=new et(`.gitignore`);await e.isFileExists()&&(n=(await e.getText()).split(`
|
|
32007
32007
|
`).map(e=>e.trim()).filter(e=>(0,h.isDefined)(e)&&!e.startsWith(`#`)))}catch{}let r=[`node_modules`,`*.config.ts`,`**/*.mock.ts`,`**/*.mocks.ts`,`**/*.test.ts`,`**/*.spec.ts`,...n];return(await(0,A.default)(e,{cwd:t,absolute:!0,ignore:r})).map(e=>`/${f.default.relative(t,e)}`)}var Vn=class{nextSource=null;setNext(e){return this.nextSource=e,e}async getFromNext(e){return this.nextSource?this.nextSource.getFiles(e):[]}},Hn=class extends Vn{async getFiles(e){return Bn(`**/*.{js,ts,jsx,tsx}`)}};let Un=/\.[jt]sx?$/;var Wn=class extends Vn{async getFiles(e){let t=Object.keys(e).filter(e=>Un.test(e));return t.length>0?t:this.getFromNext(e)}};function Gn(){let e=new Wn,t=new Hn;return e.setNext(t),e}let Kn=String.raw`.*\.early\.(spec|test)\.[tj]sx?$`;var qn=class{EXEC_TIMEOUT_IN_MS=12e5;MAX_BUFFER_SIZE=2e4*1024;DEFAULT_ROOT_PATH=`/`;COVERAGE_ROOT_DIRECTORY_NAME=`.early.coverage`;COVERAGE_REPORT_FILE_NAME=`coverage-final.json`;pathStrategy=null;async init(){this.pathStrategy=Rn()}getCoverageDirectoryPath(){if(!(0,h.isDefined)(this.pathStrategy))throw Error(`Provider not initialized. Call init() first.`);return this.pathStrategy.getCoverageDirectoryPath()}getCoverageDirectoryForCommand(){if(!(0,h.isDefined)(this.pathStrategy))throw Error(`Provider not initialized. Call init() first.`);return this.pathStrategy.getCoverageDirectoryForCommand()}getExecutionCwd(){if(!(0,h.isDefined)(this.pathStrategy))throw Error(`Provider not initialized. Call init() first.`);return this.pathStrategy.getExecutionCwd()}getCoverageReportPath(){return f.default.join(this.getCoverageDirectoryPath(),this.COVERAGE_REPORT_FILE_NAME)}async getCommand(){return(Ue().getCoverageCommand()??await this.buildJestCoverageCommand()).replaceAll(we,this.getCoverageDirectoryForCommand())}async isReportExists(){try{return await p.default.access(this.getCoverageReportPath(),p.constants.R_OK),!0}catch{return!1}}async removeReport(){try{let e=et.fromAbsolutePath(this.getCoverageReportPath());await e.isFileExists()&&await e.delete()}catch(e){H.error(`Error removing coverage report`,e)}}async getReport(){try{let e=await et.fromAbsolutePath(this.getCoverageReportPath()).getText(),t=JSON.parse(e);return this.calculateCoverage(t)}catch{throw Error(`Coverage report file could not be read: ${this.getCoverageReportPath()}`)}}async generateReport(){H.info.defaultLog(`Coverage: generation started`),await this.removeReport();let e=await this.getCommand();H.info.defaultLog(`Coverage command: ${e}`);try{await Nt(e,{cwd:this.getExecutionCwd(),timeout:this.EXEC_TIMEOUT_IN_MS,maxBuffer:this.MAX_BUFFER_SIZE}),H.info.defaultLog(`Coverage command generation success`)}catch(t){let n=t instanceof Error&&`code`in t?{code:t.code,signal:t.signal,killed:t.killed}:{code:`UNKNOWN_ERROR`};throw H.info.defaultLog(`Coverage generation exited with error: "${e}".`,n),Error(`Failed to generate coverage report: ${t.message}\nCoverage command: "${e}"`)}finally{await new Pn(Ue().getGitTopLevel()).add(this.COVERAGE_ROOT_DIRECTORY_NAME)}}calculateCoverage(e){let t=new zn(e,f.default.normalize(Ue().getRootPath()).toLowerCase()),n=new Map;for(let[e,r]of t.getEntries()){let i=t.getStatsForFile(e),a=e.split(`/`).slice(0,-1);for(;a.length>0;){let e=a.join(`/`)||this.DEFAULT_ROOT_PATH;if(!n.has(e)){let r=t.getStatsForDirectory(e);n.set(e,{percentage:r.percentage,totalStatements:r.totalStatements,coveredStatements:r.coveredStatements})}a.pop()}let o=[];for(let{name:n}of Object.values(r.fnMap)){let r=t.getStatsForTestable(e,n);o.push({name:n,percentage:r?.percentage??null,totalStatements:r?.totalStatements??null,coveredStatements:r?.coveredStatements??null})}n.set(e,{percentage:i.percentage,totalStatements:i.totalStatements,coveredStatements:i.coveredStatements,testables:o})}return Object.fromEntries(n.entries())}async hasJestConfig(){let e=Ft(Ue().getRootPath());return(0,h.isDefined)(e)}async buildJestCoverageCommand(){let e=[`node_modules`,`dist`];Ue().getIncludeEarlyTests()||e.push(Kn);let t=e.map(e=>`"${e}"`).join(` `),n=Ue().getRootPath();return await this.hasJestConfig()?`npx jest --coverage --coverageProvider=v8 --coveragePathIgnorePatterns ${t} --coverageReporters=json --coverageDirectory=${we} --silent --passWithNoTests --maxWorkers=2`:`npx jest --coverage --coverageProvider=v8 --coveragePathIgnorePatterns ${t} --coverageReporters=json --coverageDirectory=${we} --rootDir="${n}" --silent --passWithNoTests --maxWorkers=2`}async getCoverageTree(e){let t=await Gn().getFiles(e),n=new Map;for(let r of t){let t=new Mn(await new et(r).getText(),`getCoverageTree`).testables.getAllTestables(),i=r.split(`/`).slice(0,-1);for(;!(0,h.isEmpty)(i);){let t=i.join(`/`)||this.DEFAULT_ROOT_PATH,r=e[t];n.has(t)||n.set(t,{percentage:r?.percentage??null,totalStatements:r?.totalStatements??null,coveredStatements:r?.coveredStatements??null}),i.pop()}let a=[],o=t.map(e=>Nn(e)),s=e[r];for(let e of o){let{name:t}=e;if(!(0,h.isDefined)(t))continue;let n=e.type===`method`?e.parentName:void 0,r=s?.testables?.find(e=>e.name===t),i={name:t,...(0,h.isDefined)(n)&&{parentName:n},percentage:r?.percentage??null,totalStatements:r?.totalStatements??null,coveredStatements:r?.coveredStatements??null};a.push(i)}n.set(r,{percentage:s?.percentage??null,totalStatements:s?.totalStatements??null,coveredStatements:s?.coveredStatements??null,testables:a})}return Object.fromEntries(n.entries())}getCoverageForFiles(e,t){let n=0,r=0,i=new Set(e.map(e=>this.normalizeFilePath(e)));for(let[e,a]of Object.entries(t)){let t=this.normalizeFilePath(e);i.has(t)&&(n+=a.totalStatements??0,r+=a.coveredStatements??0)}return{percentage:this.toPercentage(r,n),totalStatements:n,coveredStatements:r}}normalizeFilePath(e){return e.startsWith(`/`)?e.slice(1):e}toPercentage(e,t,n=0){if(t===0)return null;let r=e/t;return Number(Math.round(r*100).toFixed(n))}},Jn=class extends zn{constructor(e,t){super(e,t)}findFunctionDefinition(e,t,n){for(let r of Object.values(t))if(r.name===e||(0,h.isDefined)(n)&&r.name.startsWith(`(anonymous`)&&r.loc.start.line===n)return r;return null}};let Yn=`npx vitest run --coverage.enabled --coverage.exclude="${Kn}" --coverage.reportsDirectory=${we} --coverage.reportOnFailure=true --coverage.reporter=json --maxWorkers=2 --passWithNoTests`;var Xn=class extends qn{async init(){await super.init()}async getCommand(){return(Ue().getCoverageCommand()??Yn).replaceAll(we,this.getCoverageDirectoryForCommand())}async getReport(){try{let e=await et.fromAbsolutePath(this.getCoverageReportPath()).getText(),t=JSON.parse(e);return await this.calculateCoverageWithVitest(t)}catch{throw Error(`Coverage report file could not be read: ${this.getCoverageReportPath()}`)}}async calculateCoverageWithVitest(e){let t=f.default.normalize(Ue().getRootPath()).toLowerCase(),n=new Jn(e,t),r=this.buildAbsolutePathMap(e,t),i=[...n.getEntries()];return this.processEntries(i,n,r)}buildAbsolutePathMap(e,t){let n=new Map;for(let r of Object.keys(e)){let e=f.default.normalize(r);if(e.toLowerCase().startsWith(t.toLowerCase())){let i=e.slice(t.length);n.set(i,r)}}return n}async processEntries(e,t,n){let r=new Map;for(let[i]of e)this.addDirectoryCoverage(i,t,r),await this.addFileCoverage(i,t,n,r);return Object.fromEntries(r.entries())}addDirectoryCoverage(e,t,n){let r=e.split(`/`).slice(0,-1);for(;r.length>0;){let e=r.join(`/`)||`/`;if(!n.has(e)){let r=t.getStatsForDirectory(e);n.set(e,{percentage:r.percentage,totalStatements:r.totalStatements,coveredStatements:r.coveredStatements})}r.pop()}}async addFileCoverage(e,t,n,r){let i=t.getStatsForFile(e),a=n.get(e);if(!(0,h.isDefined)(a))return;let o=await this.readFileText(a);if(!(0,h.isDefined)(o)){r.set(e,{percentage:i.percentage,totalStatements:i.totalStatements,coveredStatements:i.coveredStatements,testables:[]});return}let s=this.extractTestables(o,e,t);r.set(e,{percentage:i.percentage,totalStatements:i.totalStatements,coveredStatements:i.coveredStatements,testables:s})}async readFileText(e){try{return await et.fromAbsolutePath(e).getText()}catch{return null}}extractTestables(e,t,n){let r=new Mn(e,`getReport`).testables.getAllTestables(),i=[];for(let e of r){let r=e.name??``,a=e.type===`method`?e.parentName:void 0,o=n.getStatsForTestable(t,r,e.startLine);i.push({name:r,...(0,h.isDefined)(a)&&{parentName:a},percentage:o?.percentage??null,totalStatements:o?.totalStatements??null,coveredStatements:o?.coveredStatements??null})}return i}},Zn=function(e){return e.JEST=`jest`,e.VITEST=`vitest`,e}(Zn||{}),Qn=class{provider=null;async create(){let e=await this.detectProjectType();return H.info.defaultLog(`Coverage: project type`,e),e===Zn.JEST?this.provider=new qn:e===Zn.VITEST&&(this.provider=new Xn),this.provider&&await this.provider.init(),H.info.defaultLog(`Coverage Provider: `+(e??`null`)),this.provider}async detectProjectType(){return await this.checkFileExists([`vitest.config.ts`,`vitest.config.js`])?Zn.VITEST:await this.checkFileExists([`package.json`,`jest.config.js`,`jest.config.ts`,`tsconfig.json`])?Zn.JEST:null}async checkFileExists(e){H.info.defaultLog(`Coverage: checking files`,e);for(let t of e)if(await new et(t).isFileExists())return!0;return!1}};let $n={};var er=class{provider=null;coverage=null;async init(){(0,h.isDefined)(this.provider)||(this.provider=await new Qn().create())}async consumeReport(){if((0,h.isDefined)(this.provider))try{this.coverage=await this.provider.getReport(),await this.provider.removeReport()}catch(e){H.info.defaultLog(`Error reading coverage report`,{error:e})}}async generateCoverage(){if(!(0,h.isDefined)(this.provider))return $n;try{await this.provider.generateReport()}catch(e){let t=await this.provider.isReportExists();if(!Ue().shouldContinueOnTestErrors()||!t)throw e;H.info.defaultLog(`Coverage: report exists but test command failed, continuing...`)}let e=null;try{await this.consumeReport()}catch(t){e=t instanceof Error?t:Error(String(t))}if(!(0,h.isDefined)(this.coverage))throw(0,h.isDefined)(e)?Error(`Coverage report is not available. Reason: ${e.message}`):Error(`Coverage report is not available`);return this.coverage}getCoverage(){return this.coverage}async getCoverageTree(){return!(0,h.isDefined)(this.provider)||!(0,h.isDefined)(this.coverage)?$n:this.provider.getCoverageTree(this.coverage)}setCoverage(e){this.coverage=e}getCoverageForFiles(e){if(!(0,h.isDefined)(this.provider))throw Error(`Coverage provider not initialized`);if(!(0,h.isDefined)(this.coverage))throw Error(`Coverage report not available`);return this.provider.getCoverageForFiles(e,this.coverage)}},tr=l(Ie()),nr=l(Le());let rr=class{coverageService=new er;async generateCoverage(){try{await this.coverageService.init(),await this.coverageService.generateCoverage()}catch(e){throw H.info.failedLog(`Failed to generate coverage`,e),e}}async setCoverage(e){try{await this.coverageService.init(),await this.coverageService.setCoverage(e)}catch(e){throw H.info.failedLog(`Failed to set coverage`,e),e}}async getCoverageTree(){try{await this.coverageService.init(),H.info.startLog(`Getting coverage tree`);let e=await this.coverageService.getCoverageTree();return H.info.endLog(`Getting coverage tree`),e??null}catch(e){throw H.info.failedLog(`Failed to get coverage tree`,e),e}}async getCoverageForFiles(e){try{return await this.coverageService.init(),this.coverageService.getCoverageForFiles(e)}catch(e){throw H.info.failedLog(`Failed to get coverage for files`,e),e}}};(0,nr.default)([$e({category:Tt.GENERATE_COVERAGE}),(0,tr.default)(`design:type`,Function),(0,tr.default)(`design:paramtypes`,[]),(0,tr.default)(`design:returntype`,Promise)],rr.prototype,`generateCoverage`,null),(0,nr.default)([$e({category:Tt.SET_COVERAGE}),(0,tr.default)(`design:type`,Function),(0,tr.default)(`design:paramtypes`,[Object]),(0,tr.default)(`design:returntype`,Promise)],rr.prototype,`setCoverage`,null),(0,nr.default)([$e({category:Tt.GET_COVERAGE}),(0,tr.default)(`design:type`,Function),(0,tr.default)(`design:paramtypes`,[]),(0,tr.default)(`design:returntype`,Promise)],rr.prototype,`getCoverageTree`,null),(0,nr.default)([$e({category:Tt.GET_COVERAGE}),(0,tr.default)(`design:type`,Function),(0,tr.default)(`design:paramtypes`,[Array]),(0,tr.default)(`design:returntype`,Promise)],rr.prototype,`getCoverageForFiles`,null),rr=(0,nr.default)([(0,_.injectable)()],rr);let ir=new class{safeTrackEvent(e,t){}},ar={EMPTY_TEST:`0000`,DESCRIBE_NOT_FOUND:`0001`,TESTED_CODE_DATA_SOURCE_ERROR:`0002`,GENERATING_TESTS_REQUEST_ERROR:`0003`,GET_VERSION_REQUEST_ERROR:`0004`,GENERATING_HELPER_REQUEST_ERROR:`0005`,PREPARATIONS_FOR_GENERATING_TEST_DTO_ERROR:`0006`,ENHANCE_TESTS_REQUEST_ERROR:`0011`,EMPTY_FIXED_TESTS:`1000`,TESTABLE_NOT_FOUND:`1001`,TESTED_CODE_FILE_PATH_NOT_FOUND:`1002`,PREEN_TESTS_ERROR:`2001`,ORGANIZE_IMPORTS_ERROR:`2002`,NOT_ENOUGH_BALANCE_ERROR:`3000`,UNSUPPORTED_MODEL_ERROR:`4000`,TOO_MANY_USERS_ERROR:`4001`,PAYLOAD_TOO_LARGE_ERROR:`4002`,TEST_SUMMARY_DB_REQUEST_ERROR:`5000`,TEST_SUMMARY_INVALID_CREATED_BY_ERROR:`5001`,TEST_SUMMARY_INVALID_GIT_REMOTE_ERROR:`5002`,TEST_SUMMARY_INVALID_GIT_BRANCH_ERROR:`5003`,WS_DYNAMIC_PROMPT_GENERAL_ERROR:`6000`,WS_DYNAMIC_PROMPT_AUTH_ERROR:`6001`,PREPARATIONS_FOR_DYNAMIC_PROMPT_ERROR:`6002`,WS_DYNAMIC_PROMPT_VALIDATION_FAILED_ERROR:`6003`,WS_DYNAMIC_PROMPT_TIMEOUT_ERROR:`6004`,GITHUB_ACTION_TEST_SUMMARY_DB_REQUEST_ERROR:`7000`,GITHUB_ACTION_TEST_SUMMARY_READ_CONF_FILE:`7001`,GITHUB_ACTION_TEST_SUMMARY_INVALID_GIT_REMOTE_ERROR:`7002`,GITHUB_ACTION_TEST_SUMMARY_INVALID_GIT_BRANCH_ERROR:`7003`,GITHUB_ACTION_TEST_SUMMARY_READ_CONF_FILE_EMPTY_OPTIONS:`7004`,GITHUB_ACTION_TEST_SUMMARY_NO_COVERAGE_FOUND:`7005`},or={[ar.EMPTY_TEST]:`Oops! No tests were generated for "{{methodName}}". Code:{{code}} - We're on it!`,[ar.DESCRIBE_NOT_FOUND]:`Oops! Test suite not found for "{{methodName}}". Code:{{code}} - We're on it!`,[ar.TESTED_CODE_DATA_SOURCE_ERROR]:`Cannot get testable data for "{{methodName}}". Code:{{code}} - We're on it!`,[ar.GENERATING_TESTS_REQUEST_ERROR]:`Generating tests for method "{{methodName}}" - failed: "{{errorMessage}}". Code:{{code}} - We're on it!`,[ar.PREPARATIONS_FOR_GENERATING_TEST_DTO_ERROR]:`Generating tests for method "{{methodName}}" - failed: "{{errorMessage}}". Code:{{code}} - We're on it!`,[ar.GET_VERSION_REQUEST_ERROR]:`Failed to make request. Code:{{code}} - We're on it!`,[ar.GENERATING_HELPER_REQUEST_ERROR]:`Generating helpers for method "{{methodName}}" - failed: "{{errorMessage}}". Code:{{code}} - We're on it!`,[ar.ENHANCE_TESTS_REQUEST_ERROR]:`Enhance tests for method "{{methodName}}" - failed: "{{errorMessage}}". Code:{{code}} - We're on it!`,[ar.EMPTY_FIXED_TESTS]:`Oops! We got an empty API response for "{{methodName}}" test fixes. Code:{{code}} - We're on it!`,[ar.TESTABLE_NOT_FOUND]:`Oops! Testable code not found for "{{methodName}}". Code:{{code}} - We're on it!`,[ar.TESTED_CODE_FILE_PATH_NOT_FOUND]:`Oops! Testable code file path not found for "{{methodName}}". Code:{{code}}`,[ar.PREEN_TESTS_ERROR]:`Encountered a problem while processing "{{methodName}}". Code:{{code}} - We're on it!`,[ar.ORGANIZE_IMPORTS_ERROR]:`There was an issue with the processing "{{methodName}}". Code:{{code}} - We're on it!`,[ar.NOT_ENOUGH_BALANCE_ERROR]:`Usage test generation limit reached.`,[ar.UNSUPPORTED_MODEL_ERROR]:`We do not support this model at the moment.`,[ar.TOO_MANY_USERS_ERROR]:`Users limit reached. Please contact support.`,[ar.PAYLOAD_TOO_LARGE_ERROR]:`We could not generate tests due to code size.`,[ar.TEST_SUMMARY_DB_REQUEST_ERROR]:`We could not save test summary to database.`,[ar.TEST_SUMMARY_INVALID_CREATED_BY_ERROR]:`Invalid created by field.`,[ar.TEST_SUMMARY_INVALID_GIT_REMOTE_ERROR]:`Invalid git remote.`,[ar.TEST_SUMMARY_INVALID_GIT_BRANCH_ERROR]:`Invalid git branch.`,[ar.GITHUB_ACTION_TEST_SUMMARY_DB_REQUEST_ERROR]:`We could not save test summary to database.`,[ar.GITHUB_ACTION_TEST_SUMMARY_READ_CONF_FILE]:`Failed to read github action config file.`,[ar.GITHUB_ACTION_TEST_SUMMARY_INVALID_GIT_REMOTE_ERROR]:`Invalid git remote.`,[ar.GITHUB_ACTION_TEST_SUMMARY_INVALID_GIT_BRANCH_ERROR]:`Invalid git branch.`,[ar.GITHUB_ACTION_TEST_SUMMARY_READ_CONF_FILE_EMPTY_OPTIONS]:`Failed to parse options from github action conf file.`,[ar.GITHUB_ACTION_TEST_SUMMARY_NO_COVERAGE_FOUND]:`No coverage found. Please run coverage first.`,[ar.WS_DYNAMIC_PROMPT_GENERAL_ERROR]:`Failed initializing dynamic prompt.`,[ar.WS_DYNAMIC_PROMPT_AUTH_ERROR]:`Failed authorizing dynamic prompt.`,[ar.PREPARATIONS_FOR_DYNAMIC_PROMPT_ERROR]:`Failed preparing init dynamic prompt.`,[ar.WS_DYNAMIC_PROMPT_VALIDATION_FAILED_ERROR]:`Failed validating dynamic prompt dto.`,[ar.WS_DYNAMIC_PROMPT_TIMEOUT_ERROR]:`Dynamic prompt operation timed out.`};var sr=class extends Error{constructor(e,t){let n=cr(e,t);super(n),this.code=e}};let cr=(e,t)=>{let n=or[e];for(let[r,i]of Object.entries({...t,code:e}))n=n.replace(`{{${r}}}`,i);return n},lr=`x-request-id`;var ur=class extends Error{constructor(){super(`Not authorized`)}};new TextEncoder;let dr=new TextDecoder;function fr(e){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(e);let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}function pr(e){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(typeof e==`string`?e:dr.decode(e),{alphabet:`base64url`});let t=e;t instanceof Uint8Array&&(t=dr.decode(t)),t=t.replace(/-/g,`+`).replace(/_/g,`/`);try{return fr(t)}catch{throw TypeError(`The input to be decoded is not correctly encoded.`)}}var mr=class extends Error{static code=`ERR_JOSE_GENERIC`;code=`ERR_JOSE_GENERIC`;constructor(e,t){super(e,t),this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}},hr=class extends mr{static code=`ERR_JWT_INVALID`;code=`ERR_JWT_INVALID`};let gr=e=>typeof e==`object`&&!!e;function _r(e){if(!gr(e)||Object.prototype.toString.call(e)!==`[object Object]`)return!1;if(Object.getPrototypeOf(e)===null)return!0;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function vr(e){if(typeof e!=`string`)throw new hr(`JWTs must use Compact JWS serialization, JWT must be a string`);let{1:t,length:n}=e.split(`.`);if(n===5)throw new hr(`Only JWTs using Compact JWS serialization can be decoded`);if(n!==3)throw new hr(`Invalid JWT`);if(!t)throw new hr(`JWTs must contain a payload`);let r;try{r=pr(t)}catch{throw new hr(`Failed to base64url decode the payload`)}let i;try{i=JSON.parse(dr.decode(r))}catch{throw new hr(`Failed to parse the decoded payload as JSON`)}if(!_r(i))throw new hr(`Invalid JWT Claims Set`);return i}let yr=e=>{let t=vr(e).exp;return(0,h.isDefined)(t)?t*1e3:null},br=e=>{if(!(0,h.isDefined)(e))return!0;let t=yr(e);return(0,h.isDefined)(t)?t<Date.now():!0};var xr=l(Le());let Sr=class{jwtToken=null;refreshTokenCallback=null;observer=new h.Observer;refreshTokenMutex=new M.Mutex;setJWTToken(e){this.jwtToken=e,this.observer.notifyAll(e)}async getJWTToken(){return(0,h.isDefined)(this.jwtToken)?(this.isTokenValid()||await this.refreshTokenMutex.runExclusive(async()=>{if((0,h.isDefined)(this.refreshTokenCallback))return await this.refreshTokenCallback(),this.jwtToken}),this.jwtToken):null}async getJWTTokenOrThrow(){let e=await this.getJWTToken();if(!(0,h.isDefined)(e))throw new ur;return e}onJWTTokenSave(e){this.observer.addListener(e)}isTokenValid(){return!br(this.jwtToken)}setRefreshTokenCallback(e){this.refreshTokenCallback=e}};Sr=(0,xr.default)([(0,_.injectable)(`Singleton`)],Sr);var Cr=s(((e,t)=>{function n(e,t){return function(n,r){t(n,r,e)}}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports})),wr=l(Ie()),Tr=l(Cr()),Er=l(Le()),Dr,Or;let kr=class{axiosInstance;constructor(e,t){this.authStorage=e,this.globalConfigService=t,this.axiosInstance=j.default.create({baseURL:this.globalConfigService.getBackendURL(),headers:{"x-client-name":`ts-agent`,"x-client-version":xe,"Content-Type":`application/json`,"Content-Encoding":`gzip`},transformRequest:[e=>{if((0,h.isDefined)(e)){let t=ee.default.createGzip();return t.write(JSON.stringify(e)),t.end(),t}else return e}]}),(0,te.default)(this.axiosInstance)}async apiCall({url:e,method:t,data:n,config:r}){let i=new j.AxiosHeaders({"x-request-source":this.globalConfigService.getRequestSource(),...r?.headers});if(!r?.ignoreAuth){let e=await this.authStorage.getJWTToken();(0,h.isDefined)(e)&&!(0,h.isEmpty)(e)&&(i.authorization=`Bearer ${e}`)}let a={...r,method:t,url:e,data:n,headers:i};try{return await this.axiosInstance.request(a)}catch(t){this.handleError(e,t,n)}}async get(e,t){return(await this.apiCall({url:e,method:`GET`,config:t})).data}async post(e,t,n){return(await this.apiCall({url:e,method:`POST`,data:t,config:n})).data}async put(e,t,n){return(await this.apiCall({url:e,method:`PUT`,data:t,config:n})).data}async delete(e,t){return(await this.apiCall({url:e,method:`DELETE`,config:t})).data}async patch(e,t,n){return(await this.apiCall({url:e,method:`PATCH`,data:t,config:n})).data}async head(e,t){return this.apiCall({url:e,method:`HEAD`,config:t})}async options(e,t){return this.apiCall({url:e,method:`OPTIONS`,config:t})}handleError(e,t,n){if(j.default.isAxiosError(t))if((0,h.isDefined)(t.response)){let{status:e,statusText:n,data:r}=t.response;throw e===j.HttpStatusCode.PaymentRequired?new sr(ar.NOT_ENOUGH_BALANCE_ERROR):Error(`API request failed: ${e} ${n} - ${JSON.stringify(r)}`)}else if((0,h.isDefined)(t.request))throw Error(`API request failed: No response received from ${e}`);else throw Error(`API request failed: ${t instanceof Error?t.message:`Unknown error`}`);else if(t instanceof Error)throw TypeError(`API request failed: ${t.message}`);else throw TypeError(`API request failed: Unknown error occurred`)}onLogin(e){this.authStorage.onJWTTokenSave(t=>{(0,h.isDefined)(t)&&e()})}};kr=(0,Er.default)([(0,_.injectable)(),(0,Tr.default)(0,(0,_.inject)(Sr)),(0,Tr.default)(1,(0,_.inject)(He)),(0,wr.default)(`design:paramtypes`,[typeof(Dr=Sr!==void 0&&Sr)==`function`?Dr:Object,typeof(Or=He!==void 0&&He)==`function`?Or:Object])],kr);let Ar={SUPER_ADMIN:1,ADMIN:2,USER:3},jr=[Ar.ADMIN,Ar.SUPER_ADMIN];var Mr=l(Ie()),Nr=l(Cr()),Pr=l(Le()),Fr;let Ir=class{mutex=new M.Mutex;user=null;constructor(e){this.apiService=e}async fetchUser(){let e=await this.apiService.get(`/api/v1/user/me`);return this.setUser(e),e}setUser(e){this.user=e,H.addContext({userId:e.id})}async getUser(){return(0,h.isDefined)(this.user)?this.user:await this.mutex.runExclusive(async()=>await this.fetchUser())}async isAdminUser(){let e=await this.getUser();return(0,h.isDefined)(e)?jr.includes(e?.role):!1}async isInOrganization(){let e=await this.getUser();return(0,h.isDefined)(e?.organization)}};Ir=(0,Pr.default)([(0,_.injectable)(),(0,Nr.default)(0,(0,_.inject)(kr)),(0,Mr.default)(`design:paramtypes`,[typeof(Fr=kr!==void 0&&kr)==`function`?Fr:Object])],Ir);let Lr=e=>(0,y.createHash)(`md5`).update(String(e)).digest(`hex`),Rr=e=>({...zr(e),testFrameworkReceived:(0,h.isDefined)(e.testFrameworkReceived)?Lr(e.testFrameworkReceived):void 0,testFrameworkExpected:(0,h.isDefined)(e.testFrameworkExpected)?Lr(e.testFrameworkExpected):void 0}),zr=e=>({errorCode:e.errorCode,shortDescription:Lr(e.shortDescription),fullDescription:Lr(e.fullDescription)}),Br=e=>({name:Lr(e.name),code:Lr(e.code),status:e.status,errors:e.errors?.map(e=>Rr(e)),lintErrors:e.lintErrors?.map(e=>Vr(e))??null}),Vr=e=>({errorCode:e.errorCode,fullDescription:Lr(e.fullDescription),shortDescription:Lr(e.shortDescription),severity:e.severity,exactCode:Lr(e.exactCode)}),Hr=({describe:e,stdout:t})=>({describe:{path:e.path,code:Lr(e.code),fullCode:Lr(e.fullCode),status:e.status,errors:e.errors?.map(e=>zr(e)),tests:e.tests.map(e=>Br(e)),lintErrors:e.lintErrors?.map(e=>Vr(e))??null},stdout:t});var Ur=l(Ie()),Wr=l(Cr()),Gr=l(Le()),Kr,qr,Jr;let Yr=class{constructor(e,t,n){this.apiService=e,this.userService=t,this.globalConfigService=n}async saveTestMetrics({requestId:e,timeElapsed:t,validationReport:n,...r}){try{let i={timeElapsed:t,...n,...r};await this.userService.isInOrganization()&&(H.debug.defaultLog(`Filtering private data for B2B user`),i.testResult=(0,h.isDefined)(n?.testResult)?Hr(n.testResult):void 0),H.debug.startLog(`Sending metrics with request id ${e}`),await this.apiService.post(`/api/v1/tests/update-operation-metrics`,i,{headers:{[lr]:e}}),H.debug.defaultLog(`Test metrics have been saved`)}catch(e){H.error(`Test metrics cannot be saved`,e)}H.debug.endLog(`Sending metrics with request id ${e}`)}registerStartTime(e){let t=Date.now();return async({...n})=>{let r=Date.now()-t;return await this.saveTestMetrics({...n,requestId:e,timeElapsed:r}),r}}async logPackageDependencies(e){try{if(await this.userService.isInOrganization())return;let t=bt(e);if(!(0,h.isDefined)(t))return;await this.updateRepositoryPackageJson(t)}catch(e){H.info.defaultLog(`Failed to log package dependencies.`,e);return}}async saveOperationMetricsTrace(e){let{parentRequestId:t,llmModel:n,testResultIteration:r=0,toolsOutput:i,testFileContent:a}=e;try{H.debug.startLog(`Sending operation metrics trace for testResultIteration ${r}`),await this.apiService.post(`/api/v1/tests/operation-metrics-trace`,{parentRequestId:t,iteration:r,llmModel:n,toolsOutput:i,testFileContent:a}),H.debug.defaultLog(`Operation metrics trace saved for testResultIteration ${r}`)}catch(e){H.error(`Failed to save operation metrics trace for testResultIteration ${r}`,e)}H.debug.endLog(`Sending operation metrics trace for testResultIteration ${r}`)}async updateRepositoryPackageJson(e){try{let t=this.globalConfigService.getContext();if(!(0,h.isDefined)(t?.git?.owner)||!(0,h.isDefined)(t?.git?.repository)){H.debug.defaultLog(`No git context available, skipping package.json update`);return}let n={owner:t.git.owner,repo:t.git.repository,packageJson:JSON.stringify(e)};await this.apiService.patch(`/api/v1/github-repos/package-json`,n),H.debug.defaultLog(`Successfully updated repository package.json`)}catch(e){H.info.defaultLog(`Failed to update repository package.json`,e)}}};Yr=(0,Gr.default)([(0,_.injectable)(),(0,Wr.default)(0,(0,_.inject)(kr)),(0,Wr.default)(1,(0,_.inject)(Ir)),(0,Wr.default)(2,(0,_.inject)(He)),(0,Ur.default)(`design:paramtypes`,[typeof(Kr=kr!==void 0&&kr)==`function`?Kr:Object,typeof(qr=Ir!==void 0&&Ir)==`function`?qr:Object,typeof(Jr=He!==void 0&&He)==`function`?Jr:Object])],Yr);var Xr=class{queue;activeProcesses=[];itemAddedObserver=new h.Observer;itemExecutedObserver=new h.Observer;itemAbortedObserver=new h.Observer;abortControllers=new Map;getItemKey;constructor({concurrency:e,getItemKey:t}){this.queue=new ne.default({concurrency:e}),this.getItemKey=t}async add(e,t){let n=this.getItemKey(e);if(this.activeProcesses.includes(n))return;let r=new AbortController,i=H.captureContext({withNewRequestId:!0});return this.abortControllers.set(n,r),this.activeProcesses.push(n),this.itemAddedObserver.notifyAll(n),this.queue.add(async()=>{await H.runWithContext(i,async()=>{await t(r.signal)})},{signal:r.signal}).then(()=>{this.itemExecutedObserver.notifyAll(n)}).finally(()=>{this.activeProcesses=this.activeProcesses.filter(e=>e!==n),this.abortControllers.delete(n)})}shouldQueue(){return this.queue.pending>=this.queue.concurrency}onIdleEmit(e){this.queue.on(`idle`,()=>{e()})}has(e){let t=this.getItemKey(e);return this.activeProcesses.includes(t)}getActiveProcesses(){return this.activeProcesses}getProcessing(){return this.activeProcesses.slice(0,this.queue.concurrency)}getQueued(){return this.activeProcesses.slice(this.queue.concurrency)}onDone(e){this.itemExecutedObserver.addListener(e)}onAdded(e){this.itemAddedObserver.addListener(e)}onAborted(e){this.itemAbortedObserver.addListener(e)}abortAll(){this.queue.clear();for(let[,e]of this.abortControllers)e.abort();this.abortControllers.clear();for(let e of this.activeProcesses)this.itemAbortedObserver.notifyAll(e);this.activeProcesses=[]}abort(e){let t=this.getItemKey(e);this.activeProcesses=this.activeProcesses.filter(e=>e!==t),this.itemAbortedObserver.notifyAll(t);let n=this.abortControllers.get(t);(0,h.isDefined)(n)&&(n.abort(),this.abortControllers.delete(t))}clearQueued(){this.queue.clear();let e=this.getQueued();for(let t of e){let e=this.abortControllers.get(t);(0,h.isDefined)(e)&&(e.abort(),this.abortControllers.delete(t)),this.itemAbortedObserver.notifyAll(t)}this.activeProcesses=this.getProcessing()}getIdlePromise(){return this.queue.onIdle()}};let Zr=`npx jest ${Ce} --coverage=false --verbose=false --watchAll=false --silent --json --forceExit --testPathIgnorePatterns=// --maxWorkers=1`;var Qr=class{fulfill(e){if(Ue().getTestFramework()!==fe.JEST)return!1;let t=e,n=null,r=0;for(;r<25;){r++;let e=vt(t,`package.json`);if(!(0,h.isDefined)(e)||e===n)return!1;let i=bt(t);if((0,h.isDefined)(i)&&xt(i,`jest`))return!0;n=e,t=f.default.dirname(f.default.dirname(e))}return!1}getTestCommand(){return{command:Ue().getTestCommand()??Zr,framework:fe.JEST}}};let $r=`npx vitest run ${Ce} --reporter=junit --silent --pool=threads --maxWorkers=1 --coverage.enabled=false`,ei=new class{constructor(e){this.providers=e}getTestCommand(e){let t=this.getProvider(e);if(!(0,h.isDefined)(t))throw Error(`No CmdProvider found for file: ${e}`);return t.getTestCommand()}getProvider(e){return this.providers.find(t=>t.fulfill(e))}}([new class{fulfill(e){if(Ue().getTestFramework()!==fe.VITEST)return!1;let t=e,n=null,r=0;for(;r<25;){r++;let e=vt(t,`package.json`);if(!(0,h.isDefined)(e)||e===n)return!1;let i=bt(t);if((0,h.isDefined)(i)&&xt(i,`vitest`))return!0;n=e,t=f.default.dirname(f.default.dirname(e))}return!1}getTestCommand(){return{command:Ue().getTestCommand()??$r,framework:fe.VITEST}}},new Qr]);var ti=class e{static of(...t){return new e(...t)}static all=e.of();static success=e.of(0);static suppress_1=e.of(0,1);allow(e){return this.allowed.length===0||this.allowed.includes(e)}allowed;constructor(...e){this.allowed=e}};let ni=`validate-tests`,ri=e=>e instanceof Error&&`code`in e&&typeof e.code==`number`;var ii=class e{constructor(e){this.relativePath=e}async runCommandOnFile(e,t=ti.success,n=!1){let r=n?_t(f.default.normalize(this.relativePath)):f.default.normalize(this.relativePath),i=e.replaceAll(Ce,`"${r}"`);try{H.debug.startLog(`Command been executed on test-file ${this.relativePath} ${e}`),H.info.defaultLog(`Running command on file ${this.relativePath}`,{renderedCommand:i});let{stdout:t,stderr:n}=await Nt(i,{cwd:Ue().getRootPath(),timeout:3e5}),r=t||n;return H.debug.endLog(`Command been executed on test-file ${this.relativePath} ${e}: ${r}`),r}catch(n){if(!(ri(n)&&(0,h.isDefined)(n.code)&&t.allow(n.code))){let t=`Failed run command "${e}" on file ${this.relativePath}`;throw H.error(t,n),n}let r=n.stdout||n.stderr;return H.debug.endLog(`Command been executed on test-file ${this.relativePath} ${e}: ${r}`),r}}getTempFileName(e,t,n){if(t){let t=f.default.join(N.default.tmpdir(),`early`),n=`${e}-${(0,y.randomUUID)()}`;return f.default.join(t,n)}let r=(0,h.isDefined)(n)&&!(0,h.isEmpty)(n),i=r&&f.default.isAbsolute(n)?f.default.dirname(n):f.default.join(Ue().getRootPath(),f.default.dirname(n??``));if(!(0,h.isDefined)(i))throw Error(`Workspace root path is not defined`);let a=`.${e}-${(0,y.randomUUID)()}-${r?f.default.basename(n):`.ts`}`;return f.default.join(i,a)}async runCommandWithContent(t,n,r,i=!1){H.addContext({subCategory:Et.COMMAND_EXECUTION});let a={filePrefix:`generated-content`,useTemporaryOSFolder:!(0,h.isDefined)(r?.predefinedPath),validExitCodes:ti.success,...r},o=this.getTempFileName(a.filePrefix,a.useTemporaryOSFolder,a.predefinedPath);try{H.info.defaultLog(`Creating temp file ${o}`),await p.default.mkdir(f.default.dirname(o),{recursive:!0}),await p.default.writeFile(o,t);let r=new e(o);return H.info.defaultLog(`Running command "${n}" on temp file`),await r.runCommandOnFile(n,a.validExitCodes,i)}catch(e){return H.error(`Failed running command "${n}" on temp file`,e),``}finally{try{await p.default.unlink(o)}catch(e){H.info.defaultLog(`Failed removing temp file`,e)}}}async runTestCommand(){H.addContext({subCategory:Et.COMMAND_EXECUTION});let e;try{e=ei.getTestCommand(this.relativePath)}catch(e){return e instanceof Error?e.message:`Framework is not supported yet`}return await this.runCommandOnFile(e.command,ti.suppress_1,!0)}async runTestCommandOnTempFile(e){H.addContext({subCategory:Et.COMMAND_EXECUTION});let t;try{t=ei.getTestCommand(this.relativePath)}catch(e){return e instanceof Error?e.message:`Framework is not supported yet`}return await this.runCommandWithContent(e,t.command,{validExitCodes:ti.suppress_1,filePrefix:ni,predefinedPath:this.relativePath},!0)}async runFormatCommand(){H.addContext({subCategory:Et.COMMAND_EXECUTION});let e=Ue().getPrettierCommand();H.debug.startLog(`format command: ${e}`);let t=await this.runCommandOnFile(e,ti.all);return H.debug.endLog(`format command: ${e}`),t}async runLintCommand(e=[]){H.addContext({subCategory:Et.COMMAND_EXECUTION});let t=Ue().getLintCommand(),n=e.length>0?t+` `+e.join(` `):t;H.debug.startLog(`lint command: ${n}`);let r=await this.runCommandOnFile(n,ti.all);return H.debug.endLog(`lint command: ${n}`),r}};let ai=e=>{let t=e.name??``,n=e.type;return{methodType:n,methodName:t,parentName:n===`method`?e.parentName:void 0}};async function oi(e,{methodType:t,methodName:n,parentName:r}){let i=new Mn(await new et(e).getText()).testables.findTestable(t,n,r);if(!(0,h.isDefined)(i))throw new sr(ar.TESTABLE_NOT_FOUND,{methodName:n});return i}function si(e,t){return(0,h.isDefined)(t)&&!(0,h.isEmpty)(t)?`${t}.${e}`:e}function ci(e){if(!e||e.trim()===``)return[];let t=e.indexOf(`[`),n=e.lastIndexOf(`]`),r=t!==-1&&n!==-1&&n>t?e.slice(t,n+1):e;try{return JSON.parse(r)}catch(e){return H.error(`Failed to parse eslint JSON output`,e),null}}var li=l(Le());let ui=class{contentCache=new Map;filePathIndex=new Map;computeContentHash(e){return Lr(e)}getContentCacheKey(e,t){return`${e}:${t?`fix`:`nofix`}`}evictOldest(){let e=this.contentCache.keys().next().value;(0,h.isDefined)(e)&&(this.contentCache.delete(e),H.debug.defaultLog(`Lint cache evicted oldest entry (FIFO)`))}get(e,t,n){let r=this.computeContentHash(t),i=this.getContentCacheKey(r,n),a=this.contentCache.get(i);return(0,h.isDefined)(a)?(H.debug.defaultLog(`Lint cache hit for ${e}`),a.results):null}set(e,t,n,r){let i=this.computeContentHash(t),a=Date.now(),o=this.getContentCacheKey(i,n);if(!this.contentCache.has(o)&&this.contentCache.size>=100&&this.evictOldest(),this.contentCache.set(o,{results:r,contentHash:i,withFix:n,timestamp:a}),n){let e=this.getContentCacheKey(i,!1);!this.contentCache.has(e)&&this.contentCache.size>=100&&this.evictOldest(),this.contentCache.set(e,{results:r,contentHash:i,withFix:!1,timestamp:a})}this.filePathIndex.set(e,i)}invalidate(e){let t=this.filePathIndex.get(e);if(!(0,h.isDefined)(t))return;let n=this.getContentCacheKey(t,!0),r=this.getContentCacheKey(t,!1),i=this.contentCache.delete(n),a=this.contentCache.delete(r);this.filePathIndex.delete(e),(i||a)&&H.debug.defaultLog(`Lint cache invalidated for ${e}`)}invalidateAll(){let e=this.contentCache.size;this.contentCache.clear(),this.filePathIndex.clear(),e>0&&H.debug.defaultLog(`Lint cache cleared: ${e} entries removed`)}};ui=(0,li.default)([(0,_.injectable)()],ui);let di=function(e){return e[e.ERROR=2]=`ERROR`,e[e.WARN=1]=`WARN`,e[e.OFF=0]=`OFF`,e}({});var fi=l(Ie()),pi=l(Cr()),mi=l(Le()),hi,gi;let _i=class{constructor(e,t){this.globalConfigService=e,this.lintCacheService=t}async disableRules(e){let t=[this.globalConfigService.shouldIgnoreAsAnyLintErrors()?`@typescript-eslint/no-explicit-any`:void 0,...this.globalConfigService.allowUndefinedLintErrors()?Ct:[]].filter(h.isDefined);this.globalConfigService.shouldDisableLintRules()?await this.disableAllLintRules(e):(0,h.isEmpty)(t)||await this.disableLintRules(e,t),await Jt.refreshFromFileSystem(e)}async disableAllLintRules(e){let t=await this.getRulesToDisable(e);if((0,h.isDefined)(t)){if((0,h.isEmpty)(t)){H.info.defaultLog(`No lint rules needed to be disabled`);return}await this.addDisableComment(e,t),H.info.defaultLog(`Added eslint-disable comment for rules: ${t.join(`, `)}`)}}async lintFiles(e,t){let n=et.fromRelativePath(e),r=await n.getText(),i=this.lintCacheService.get(e,r,t);if((0,h.isDefined)(i))return i;let a=t?[`--format`,`json`,`--fix`]:[`--format`,`json`],o=ci(await new ii(e).runLintCommand(a));if(!(0,h.isDefined)(o))return null;if(t){await Jt.refreshFromFileSystem(e);let r=await n.getText();this.lintCacheService.set(e,r,t,o)}else this.lintCacheService.set(e,r,t,o);return o}async lint(e,t){try{return await this.lintFiles(e,t)}catch(e){return H.error(`Failed to get lint results:`,e),null}}async fixLint(e){try{return await this.lint(e,!0)}catch(e){return H.error(`Failed to fix lint:`,e),null}}async getLintResults(e){try{return await this.lint(e,!1)}catch(e){return H.error(`Failed to get lint results:`,e),null}}async getRulesToDisable(e){let t=await this.getLintResults(e);if(!(0,h.isDefined)(t))return null;let n=(t[0]?.messages??[]).filter(e=>e.severity===di.ERROR);return[...new Set(n.map(e=>e.ruleId).filter(h.isDefined))]}async addDisableComment(e,t){let n=et.fromRelativePath(e),r=await n.getText(),i=`/* eslint-disable ${t.join(`, `)} */\n\n`;await n.replace(i+r),this.lintCacheService.invalidate(e)}hasDisableCommentForRules(e,t){let n=e.split(`
|
|
32008
32008
|
`);for(let e of n){let n=e.indexOf(`/*`),r=e.indexOf(`*/`);if(n===-1||r===-1)continue;let i=e.slice(n+2,r).trim();if(i.startsWith(`eslint-disable`)&&i.replace(`eslint-disable`,``).trim().split(`,`).map(e=>e.trim()).every(e=>t.includes(e)))return!0}return!1}async disableLintRules(e,t){if(!this.globalConfigService.shouldIgnoreAsAnyLintErrors())return;let n=et.fromRelativePath(e),r=await n.getText();if(this.hasDisableCommentForRules(r,t))return;let i=await this.getLintResults(e);if(!(0,h.isDefined)(i)){H.info.defaultLog(`No lint results returned`);return}let a=i[0]?.messages??[],o=t.filter(e=>a.some(t=>t.severity===di.ERROR&&t.ruleId===e));if((0,h.isEmpty)(o))return;let s=`/* eslint-disable ${o.join(`, `)} */\n\n`;await n.replace(s+r),this.lintCacheService.invalidate(e),H.info.defaultLog(`Added eslint-disable comment for ${o.join(`, `)} in ${e}`)}};_i=(0,mi.default)([(0,_.injectable)(),(0,pi.default)(0,(0,_.inject)(He)),(0,pi.default)(1,(0,_.inject)(ui)),(0,fi.default)(`design:paramtypes`,[typeof(hi=He!==void 0&&He)==`function`?hi:Object,typeof(gi=ui!==void 0&&ui)==`function`?gi:Object])],_i);let vi="${methodName}";`${vi}`,`${vi}`;function yi(e,t,n){let r=e.split(`
|
|
@@ -32081,7 +32081,7 @@ it("placeholder", () => {
|
|
|
32081
32081
|
`)}function tm(e){return[``,`<environment>`,`Your working directory is: \`${e}\``,`All tools (Bash, Read, Glob, Grep, Edit) operate relative to this directory automatically.`,"- Do NOT use `cd` to change directories before running commands. Commands like `npm run test` already run from the project root.","- Prefer using relative paths (e.g. `src/services/foo.ts`) instead of absolute paths.",`</environment>`].join(`
|
|
32082
32082
|
`)}function nm(e){let t=[``,`<project-setup>`,`The following project tooling was verified. Use these commands directly.`,``];e.testCommand.status!==Qf.UNRESOLVED&&t.push(`- **Test command**: \`${e.testCommand.command}\``),e.buildCommand.status!==Qf.UNRESOLVED&&t.push(`- **Build command**: \`${e.buildCommand.command}\``),e.lintCommand.status!==Qf.UNRESOLVED&&t.push(`- **Lint command**: \`${e.lintCommand.command}\``),e.prettierCommand.status!==Qf.UNRESOLVED&&t.push(`- **Prettier command**: \`${e.prettierCommand.command}\``),t.push(`- **Package manager**: ${e.packageManager}`);let n=[];return e.testCommand.status===Qf.UNRESOLVED&&n.push(`testCommand`),e.buildCommand.status===Qf.UNRESOLVED&&n.push(`buildCommand`),e.lintCommand.status===Qf.UNRESOLVED&&n.push(`lintCommand`),e.prettierCommand.status===Qf.UNRESOLVED&&n.push(`prettierCommand`),(0,h.isEmpty)(n)||t.push(``,`The following commands could not be auto-discovered: ${n.join(`, `)}.`,`Search package.json and project config files to find these manually. Do NOT search for commands already listed above.`),t.push(`</project-setup>`),t.join(`
|
|
32083
32083
|
`)}function rm(e){let t=[[`testCommand`,e.testCommand],[`buildCommand`,e.buildCommand],[`lintCommand`,e.lintCommand],[`prettierCommand`,e.prettierCommand]],n=[``,`<verification-results>`];for(let[e,r]of t)r.status===$f.FAILED?n.push(`${e}: FAILED`,`Output:\n${r.output.trim()}`,``):r.status===$f.PASSED?n.push(`${e}: PASSED`):n.push(`${e}: SKIPPED (command not configured)`);return n.push(`</verification-results>`),n.join(`
|
|
32084
|
-
`)}let im=[`testCommand`,`buildCommand`,`lintCommand`,`prettierCommand`],am={testCommand:`test`,buildCommand:`build`,lintCommand:`lint`,prettierCommand:`format`};function om(e){return e===$f.PASSED?`✓`:e===$f.FAILED?`✗`:`-`}function sm(e){return im.map(t=>`${am[t]} ${om(e[t].status)}`).join(` `)}function cm(e){return(0,h.isDefined)(e)?` — ${e.greenTestsCount} green, ${e.redTestsCount} red`:``}function lm(e,t){for(let n of im){let r=t[n];r.status===$f.FAILED&&e.debug(` ${am[n]} output: ${r.output}`)}}function um(e,t,n){let r=f.default.relative(t,n),i=e.getTestCommand(),a=e.getLintCommand(),o=e.getPrettierCommand(),s=Bp(t,n);return(0,h.isDefined)(i)&&i!==Te&&(s.testCommand=i.replaceAll(Ce,r),s.missing=s.missing.filter(e=>e!==`testCommand`)),a!==Ee&&(s.lintCommand=a.replaceAll(Ce,r),s.missing=s.missing.filter(e=>e!==`lintCommand`)),o!==De&&(s.prettierCommand=o.replaceAll(Ce,r),s.missing=s.missing.filter(e=>e!==`prettierCommand`)),s}let dm=class{constructor(e,t,n,r,i){this.globalConfigService=e,this.authStorage=t,this.llmModelService=n,this.metricReportService=r,this.verificationService=i}async run(e){let t=new AbortController,n=this.globalConfigService.getProgressLogger((0,h.isDefined)(e.methodName)?{parentName:e.parentName,methodName:e.methodName}:void 0);e.abortSignal&&e.abortSignal.addEventListener(`abort`,()=>t.abort());let{modelName:r,capPrice:i}=await this.llmModelService.getAgentSdkConfig(),a=um(this.globalConfigService,e.workingDirectory,e.testFilePath);H.info.defaultLog(`[precalc] Project setup resolved:\n${JSON.stringify(a,null,2)}`);let o=[[`test`,a.testCommand],[`build`,a.typecheckCommand],[`lint`,a.lintCommand],[`format`,a.prettierCommand]];n.verbose(`Discovered commands:`);for(let[e,t]of o)n.verbose(` ${(0,h.isDefined)(t)?`✓`:`✗`} ${e}: ${t??`not found`}`);let s=H.getRequestId(),c=new ep(this.metricReportService,s,r,e.testFilePath),l=this.globalConfigService.getPerFunctionTimeout(),u=setTimeout(()=>{let e=(l/6e4).toFixed(1);n.info(`Testable reached timeout after ${e} minutes, aborting`),c.logSyntheticTool(`timeout-abort`,{timeoutMs:l},{reason:`timeout`}),c.flush(),t.abort()},l);try{let o=ap(a),s=rp(a.testRunner);await(0,p.mkdir)(f.default.dirname(e.testFilePath),{recursive:!0}),await(0,p.writeFile)(e.testFilePath,s,`utf8`);let l=await this.verificationService.verify({setup:o,testFilePath:e.testFilePath,workingDirectory:e.workingDirectory});H.info.defaultLog(`[verification] Pre-generation: ${JSON.stringify(l,null,2)}`),n.verbose(`Pre-verification:`,sm(l)),lm(n,l);let u=o;
|
|
32084
|
+
`)}let im=[`testCommand`,`buildCommand`,`lintCommand`,`prettierCommand`],am={testCommand:`test`,buildCommand:`build`,lintCommand:`lint`,prettierCommand:`format`};function om(e){return e===$f.PASSED?`✓`:e===$f.FAILED?`✗`:`-`}function sm(e){return im.map(t=>`${am[t]} ${om(e[t].status)}`).join(` `)}function cm(e){return(0,h.isDefined)(e)?` — ${e.greenTestsCount} green, ${e.redTestsCount} red`:``}function lm(e,t){for(let n of im){let r=t[n];r.status===$f.FAILED&&e.debug(` ${am[n]} output: ${r.output}`)}}function um(e,t,n){let r=f.default.relative(t,n),i=e.getTestCommand(),a=e.getLintCommand(),o=e.getPrettierCommand(),s=Bp(t,n);return(0,h.isDefined)(i)&&i!==Te&&(s.testCommand=i.replaceAll(Ce,r),s.missing=s.missing.filter(e=>e!==`testCommand`)),a!==Ee&&(s.lintCommand=a.replaceAll(Ce,r),s.missing=s.missing.filter(e=>e!==`lintCommand`)),o!==De&&(s.prettierCommand=o.replaceAll(Ce,r),s.missing=s.missing.filter(e=>e!==`prettierCommand`)),s}let dm=class{constructor(e,t,n,r,i){this.globalConfigService=e,this.authStorage=t,this.llmModelService=n,this.metricReportService=r,this.verificationService=i}async run(e){let t=new AbortController,n=this.globalConfigService.getProgressLogger((0,h.isDefined)(e.methodName)?{parentName:e.parentName,methodName:e.methodName}:void 0);e.abortSignal&&e.abortSignal.addEventListener(`abort`,()=>t.abort());let{modelName:r,capPrice:i}=await this.llmModelService.getAgentSdkConfig(),a=um(this.globalConfigService,e.workingDirectory,e.testFilePath);H.info.defaultLog(`[precalc] Project setup resolved:\n${JSON.stringify(a,null,2)}`);let o=[[`test`,a.testCommand],[`build`,a.typecheckCommand],[`lint`,a.lintCommand],[`format`,a.prettierCommand]];n.verbose(`Discovered commands:`);for(let[e,t]of o)n.verbose(` ${(0,h.isDefined)(t)?`✓`:`✗`} ${e}: ${t??`not found`}`);let s=H.getRequestId(),c=new ep(this.metricReportService,s,r,e.testFilePath),l=this.globalConfigService.getPerFunctionTimeout(),u=setTimeout(()=>{let e=(l/6e4).toFixed(1);n.info(`Testable reached timeout after ${e} minutes, aborting`),c.logSyntheticTool(`timeout-abort`,{timeoutMs:l},{reason:`timeout`}),c.flush(),t.abort()},l);try{let o=ap(a),s=rp(a.testRunner);await(0,p.mkdir)(f.default.dirname(e.testFilePath),{recursive:!0}),await(0,p.writeFile)(e.testFilePath,s,`utf8`);let l=await this.verificationService.verify({setup:o,testFilePath:e.testFilePath,workingDirectory:e.workingDirectory});H.info.defaultLog(`[verification] Pre-generation: ${JSON.stringify(l,null,2)}`),n.verbose(`Pre-verification:`,sm(l)),lm(n,l);let u=o;o=pp(o,l,e.testFilePath),c.addPreVerification(u,l,o),l.testCommand.status===$f.FAILED&&await this.handlePreVerificationFailure(l.testCommand.output,n,c,e.testFilePath),H.info.defaultLog(`[verification] Promoted setup: ${JSON.stringify(o,null,2)}`);let d=im.filter(e=>o[e].status!==Qf.UNRESOLVED).map(e=>am[e]),m=im.filter(e=>o[e].status===Qf.UNRESOLVED).map(e=>am[e]);n.verbose(`Verified:`,d.join(`, `)+((0,h.isEmpty)(m)?``:` (${m.join(`, `)} dropped)`));let g=await this.runGenerationQuery({...e,model:r,budget:i,verifiedSetup:o,abortController:t,metricsTracer:c,progressLogger:n}),_=await this.verificationService.verify({setup:o,testFilePath:e.testFilePath,workingDirectory:e.workingDirectory});if(H.info.defaultLog(`[verification] Post-generation: ${JSON.stringify(_,null,2)}`),n.verbose(`Post-verification ${_.passed?`passed`:`failed`}:`,sm(_)+cm(g.validationSummary)),_.passed)return g;H.default.warn(`[verification] Gates failed — running cleanup agent to salvage passing tests`),await this.runCleanupQuery({workingDirectory:e.workingDirectory,testFilePath:e.testFilePath,model:r,budget:i,verifiedSetup:o,abortController:t,postVerification:_});let v=await this.verificationService.verify({setup:o,testFilePath:e.testFilePath,workingDirectory:e.workingDirectory});return H.info.defaultLog(`[verification] Post-cleanup: ${JSON.stringify(v,null,2)}`),n.verbose(`Post-cleanup ${v.passed?`passed`:`failed`}:`,sm(v)),v.passed?{code:Qp(e.testFilePath),costUsd:g.costUsd,validationSummary:g.validationSummary}:(H.default.warn(`[verification] Cleanup failed — deleting test file: ${e.testFilePath}`),await(0,p.unlink)(e.testFilePath),{code:``,costUsd:g.costUsd,validationSummary:g.validationSummary})}catch(e){if(!t.signal.aborted)throw e;return H.info.defaultLog(`[generation] Aborted — returning partial result`),{code:``}}finally{clearTimeout(u)}}async handlePreVerificationFailure(e,t,n,r){throw t.verbose(`Test command failed on dummy test — aborting`),H.default.warn(`[verification] Test command failed on dummy test — aborting.\n${e}`),await n.flush(),await(0,p.unlink)(r),new tp(`test_command_failed`,[`Test command failed: ${e.length>200?e.slice(0,200)+`...(truncated ${e.length-200} chars)`:e}`],0)}async handleGenerationResult(e,t,n,r,i){if(await t.flush(),n.logResult(e),H.info.defaultLog(`SDK model usage: `,e.modelUsage),ef(e))throw new tp(e.subtype,e.errors,e.total_cost_usd);let a=Qp(i),o=r?.buildValidationSummary()??n.buildValidationSummary();if(H.info.defaultLog(`Validation summary: `,o),!(0,h.isEmpty)(a)){let t=$p(e)+a;return(0,w.writeFileSync)(i,t,`utf8`),{code:t,costUsd:e.total_cost_usd,validationSummary:o}}return{code:a,costUsd:e.total_cost_usd,validationSummary:o}}async runCleanupQuery(e){let t=ff(e.testFilePath,e.workingDirectory),n=await this.authStorage.getJWTToken()??``,r=Math.max(e.budget*.25,.25),i=[...yd],a=new Zf(!1),o=H.getRequestId(),s=new ep(this.metricReportService,o,e.model,e.testFilePath);a.logStart({model:e.model,budget:r,cwd:e.workingDirectory,testFile:e.testFilePath,tools:i,hooks:{pre:[`file-restriction`,`env-protection`,`dangerous-command`,`bash-exit-code`],post:[]},maxTurns:15});let c=[`You are a test cleanup agent.`,`The generated test file has failed quality checks (lint, typecheck, prettier, or test failures).`,`Your ONLY goal is to salvage passing tests by removing test cases that fail any check.`,`DO NOT generate new tests. DO NOT fix or modify the logic of any existing test.`,`DO NOT add new imports or describe blocks.`,`Run the available checks, identify failing test cases, and remove them from the file.`,`Keep all tests that pass every check. Leave the file with only clean, passing tests.`].join(` `),l=`The test file at ${e.testFilePath} has failed quality verification.\nThe verification results below were already collected — use them directly to identify failing tests.\nRemove only the failing test cases from the file. Do not generate new tests and do not fix any test.\nAfter removing failing tests, re-run all configured checks (all non-skipped commands) to confirm they all pass.`+rm(e.postVerification)+tm(e.workingDirectory)+nm(e.verifiedSetup),u=(0,oe.query)({prompt:l,options:{model:e.model,systemPrompt:c,allowedTools:[...yd],permissionMode:vd,allowDangerouslySkipPermissions:!0,maxBudgetUsd:r,maxTurns:15,cwd:e.workingDirectory,abortController:e.abortController,sessionId:(0,y.randomUUID)(),env:{...process.env,ANTHROPIC_BASE_URL:this.globalConfigService.getAnthropicProxyUrl(),ANTHROPIC_AUTH_TOKEN:n,ANTHROPIC_CUSTOM_HEADERS:[`x-request-id: `+H.getRequestId()].join(`
|
|
32085
32085
|
`)},hooks:{PreToolUse:[{matcher:`Write|Edit`,hooks:[t]},{matcher:`Read`,hooks:[df]},{matcher:`Bash`,hooks:[uf,lf]}]}}});for await(let e of u)if(a.logMessage(e),await s.processMessage(e),$d(e)){await s.flush(),a.logResult(e),H.info.defaultLog(`[cleanup] SDK model usage: `,e.modelUsage),ef(e)&&H.default.warn(`[cleanup] Agent finished with error: ${e.subtype}`);break}}async runGenerationQuery(e){let t=ff(e.testFilePath,e.workingDirectory),n=bd?new Wp({setup:e.verifiedSetup,testFilePath:e.testFilePath,workingDirectory:e.workingDirectory,progressLogger:e.progressLogger}):void 0,r=n?Mf(n):void 0,i=new Zf(!1),a=[...yd];i.logStart({model:e.model,budget:e.budget,cwd:e.workingDirectory,testFile:e.testFilePath,tools:a,hooks:{pre:[`file-restriction`,`env-protection`,`dangerous-command`,`bash-exit-code`],post:[`test-prune`],...bd&&{stop:[`verification-gates`]}}});let o=em(e.userPrompt,e.testFilePath)+tm(e.workingDirectory)+nm(e.verifiedSetup),s=await this.authStorage.getJWTToken()??``,{metricsTracer:c}=e,l=(0,oe.query)({prompt:o,options:{model:e.model,systemPrompt:e.systemPrompt,allowedTools:a,permissionMode:vd,allowDangerouslySkipPermissions:!0,maxBudgetUsd:e.budget,cwd:e.workingDirectory,abortController:e.abortController,sessionId:(0,y.randomUUID)(),env:{...process.env,ANTHROPIC_BASE_URL:this.globalConfigService.getAnthropicProxyUrl(),ANTHROPIC_AUTH_TOKEN:s,ANTHROPIC_CUSTOM_HEADERS:[`x-request-id: `+H.getRequestId()].join(`
|
|
32086
32086
|
`)},...n&&{mcpServers:{verification_gates:n.getServer()}},hooks:{PreToolUse:[{matcher:`Write|Edit`,hooks:[t]},{matcher:`Read`,hooks:[df]},{matcher:`Bash`,hooks:[uf,lf]}],PostToolUse:[{matcher:`Bash`,hooks:[Af]},{matcher:`${Sd}|${xd}`,hooks:[Af]}],...r&&{Stop:[{hooks:[r]}]}}}});for await(let t of l)if(i.logMessage(t),await c.processMessage(t),$d(t))return this.handleGenerationResult(t,c,i,n,e.testFilePath);return{code:Qp(e.testFilePath)}}};dm=(0,qp.default)([(0,_.injectable)(),(0,Kp.default)(0,(0,_.inject)(He)),(0,Kp.default)(1,(0,_.inject)(Sr)),(0,Kp.default)(2,(0,_.inject)(zf)),(0,Kp.default)(3,(0,_.inject)(Yr)),(0,Kp.default)(4,(0,_.inject)(fp)),(0,Gp.default)(`design:paramtypes`,[Object,typeof(Jp=Sr!==void 0&&Sr)==`function`?Jp:Object,typeof(Yp=zf!==void 0&&zf)==`function`?Yp:Object,typeof(Xp=Yr!==void 0&&Yr)==`function`?Xp:Object,typeof(Zp=fp!==void 0&&fp)==`function`?Zp:Object])],dm);var fm=class{execute(e){let t=!1,n=new Set(e.getKnownDependenciesSnapshot().flatMap(t=>e.getParentParameterRelations(t).filter(e=>e.depthLevelInParent>0).map(e=>e.parameterParentId)));for(let r of e.getKnownDependenciesSnapshot())e.getParentParameterRelations(r).every(e=>n.has(e.parameterParentId))&&(t||=e.moveKnownDependencyToMissing(r.name));let r=e.getDataSource().testedCodeDataSource.codeDependencies.length;return e.getDataSource().testedCodeDataSource.codeDependencies=e.getDataSource().testedCodeDataSource.codeDependencies.filter(t=>!e.getParentParameterRelations(t).every(e=>e.depthLevelInParent>0)),e.getDataSource().testedCodeDataSource.codeDependencies.length!==r&&(t=!0),t}},pm=class{kindsToRemove;constructor(...e){this.kindsToRemove=new Set(e)}execute(e){let t=!1;for(let n of e.getKnownDependenciesSnapshot())this.kindsToRemove.has(n.kind)&&(t||=e.moveKnownDependencyToMissing(n.name));return t}},mm=class{execute(e){let t=e.getDataSource().testedCodeDataSource.testedMethodClass,n=t?.constructorMetadata?.parameters??[],r=t?.properties??[],i=[...n,...r];return e.moveKnownDependencyToMissingByParameters(i)}},hm=class{kinds;constructor(...e){this.kinds=new Set(e)}execute(e){let t=!1,n=e.getMissingDependenciesSnapshot();for(let[r,i]of n.entries())this.kinds.has(i.kind)&&(t||=e.removeCodeInMissingDependencyByIndex(r));return t}},gm=class{execute(e){let t=e.getDataSource().testedCodeDataSource.testedMethod.parameters??[];return e.moveKnownDependencyToMissingByParameters(t)}},_m=class{execute(e){let t=e.getDataSourceSnapshot(),n=this.getParameters(t),r=!1;for(let i=0;i<t.testedCodeDataSource.missingDependencies.length;i++){let a=t.testedCodeDataSource.missingDependencies[i];(0,h.isDefined)(a.dependencyMetadata)&&(this.isMockDependencyKept(a.dependencyMetadata,n)||(r||=e.removeMockDependencyByIndex(i)))}return r}isMockDependencyKept(e,t){if((0,h.isEmpty)(t))return!1;let n=this.getParametersIdsFromMockDependency(e),r=(0,h.intersection)([...t],[...n]);return!(0,h.isEmpty)(r)}getParametersIdsFromMockDependency(e){let t=new h.SafeSet;if(!(0,h.isDefined)(e))return t.toSet();for(let n of e?.methodsMetadata??[]){for(let e of n.parameters)t.safeAdd(e.id);t.safeAdd(n?.returnParam?.id)}for(let n of e?.classMetadata?.properties??[])t.safeAdd(n?.id);for(let n of e?.classMetadata?.constructorMetadata?.parameters??[])t.safeAdd(n?.id);return t.toSet()}getParameters(e){let t=e.testedCodeDataSource.testedMethod.parameters.map(e=>e.id),n=e.testedCodeDataSource.testedMethod.returnParam?.id,r=e.testedCodeDataSource.testedMethodClass?.constructorMetadata?.parameters.map(e=>e.id)??[],i=e.testedCodeDataSource.testedMethodClass?.properties.map(e=>e.id)??[];return new h.SafeSet([...t,n,...r,...i]).toSet()}},vm=class{execute(e){let t=e.getDataSourceSnapshot(),n=t.testedCodeDataSource.testedMethod.parameters.map(e=>e.id),r=t.testedCodeDataSource.testedMethod.returnParam?.id,i=t.testedCodeDataSource.testedMethodClass?.constructorMetadata?.parameters.map(e=>e.id)??[],a=new Set([...n,r,...i].filter(e=>(0,h.isDefined)(e))),o=!1;for(let t of e.getKnownDependenciesSnapshot())this.isDependencyKept(t,a)||(o||=e.moveKnownDependencyToMissing(t.name));return o}isDependencyKept(e,t){return e.kind===`file`||e.kind===`enum`?!0:e.parentParameterRelations.some(e=>e.depthLevelInParent===0&&t.has(e.parameterParentId))}},ym=class{execute(e){let t=e.getDataSource().testedCodeDataSource.testedMethod.returnParam?.id;return(0,h.isDefined)(t)?e.moveKnowDependencyToMissingByParameterId(t):!1}},bm=class{dataSource;getKnownDependenciesSnapshot(){return this.getDataSourceSnapshot().testedCodeDataSource.codeDependencies}getMissingDependenciesSnapshot(){return this.getDataSourceSnapshot().testedCodeDataSource.missingDependencies}constructor(e){this.dataSource=e}getDataSourceSnapshot(){return structuredClone(this.dataSource)}getDataSource(){return this.dataSource}getParentParameterRelations(e){return e.kind===`file`?[]:e.parentParameterRelations}moveKnownDependencyToMissingByParameters(e){let t=e.map(e=>e.id).filter(e=>(0,h.isString)(e)),n=!1;for(let e of t)n||=this.moveKnowDependencyToMissingByParameterId(e);return n}moveKnownDependencyToMissing(e){let t=this.dataSource.testedCodeDataSource.codeDependencies.findIndex(t=>t.name===e);if(t===-1)return!1;let n=this.dataSource.testedCodeDataSource.codeDependencies[t],r=`parentParameterRelations`in n?n.parentParameterRelations:[];if(r.length>1)return!1;let i=r[0]?.parameterParentId;return(0,h.isDefined)(i)?this.moveKnowDependencyToMissingByParameterId(i):this.moveKnowDependencyToMissingByIndex(t)}moveKnowDependencyToMissingByParameterId(e){let t=this.dataSource.testedCodeDataSource.codeDependencies.filter(t=>{let n=this.getParentParameterRelations(t);return n.length===1&&n[0].parameterParentId===e}),n=!1;for(let e of t){this.getParentParameterRelations(e)[0].depthLevelInParent===0&&(this.dataSource.testedCodeDataSource.missingDependencies.push(this.convertCodeDependencyToMissingDependency(e)),n=!0);let t=this.dataSource.testedCodeDataSource.codeDependencies.length;this.dataSource.testedCodeDataSource.codeDependencies=this.dataSource.testedCodeDataSource.codeDependencies.filter(t=>t.name!==e.name),this.dataSource.testedCodeDataSource.codeDependencies.length!==t&&(n=!0)}return n}moveKnowDependencyToMissingByIndex(e){if(e<0||this.dataSource.testedCodeDataSource.codeDependencies.length<=e)return!1;let t=this.dataSource.testedCodeDataSource.codeDependencies[e],n=this.convertCodeDependencyToMissingDependency(t);return this.dataSource.testedCodeDataSource.codeDependencies.splice(e,1),this.dataSource.testedCodeDataSource.missingDependencies.push(n),!0}convertCodeDependencyToMissingDependency(e){let t=(e.kind===`file`?!1:e.containedInTestedFile)??!1;return{name:e.name,kind:e.kind,importPath:e.importPath,code:e.code,isCoreModule:!1,exportType:kt.Unknown,containedInTestedFile:t,isDataObject:e.isDataObject??!1,parentParameterRelations:e.kind===`file`?[]:e.parentParameterRelations,isGenerated:e.isGenerated,baseTypeNames:e.kind===`file`?[]:e.baseTypeNames,ancestorDepthFromTestedClass:e.kind===`file`?void 0:e.ancestorDepthFromTestedClass,importUsageMetadata:e.kind===`file`?void 0:e.importUsageMetadata}}removeMockDependencyByIndex(e){let t=this.dataSource.testedCodeDataSource.missingDependencies?.[e];if(!(0,h.isDefined)(t))return!1;let n=t.dependencyMetadata;return(0,h.isDefined)(n)?(t.dependencyMetadata=void 0,!0):!1}removeCodeInMissingDependencyByIndex(e){let t=this.dataSource.testedCodeDataSource.missingDependencies?.[e];return(0,h.isEmpty)(t?.code)?!1:(t.code=``,!0)}},xm=class{modifierHandlers=[];modifierCount;constructor(){let e=new hm(`react-class-component`,`react-hook`,`react-forward-ref-component`,`react-function-component`,`react-css-in-js`),t=new pm(`class`),n=new vm,r=new mm,i=new gm,a=new ym,o=new fm,s=new _m;this.modifierHandlers.push(e,t,n,r,i,a,o,s),this.modifierCount=this.modifierHandlers.length}refine(e){let t=new bm(e);for(let e of this.modifierHandlers)if(e.execute(t))return!0;return!1}},Sm=class e{testCodeDatasourceRefiner=new xm;sizeLimit=0;constructor(e){this.sizeLimit=e??this.sizeLimit}static async init(t){return new e(await t.getDataSourceOptimizerSizeLimit())}async optimize(e){if(this.sizeLimit===0)return e;try{let t=structuredClone(e);return await this.iterateOptimize(t,1)}catch{return e}}getSizeInKilobytes(e){let t=JSON.stringify(e);return Buffer.byteLength(t)/1024}async iterateOptimize(e,t){if(this.testCodeDatasourceRefiner.modifierCount<t||!this.testCodeDatasourceRefiner.refine(e))return e;let n=await this.iterateOptimize(e,t+1);return this.getSizeInKilobytes(n)<=this.sizeLimit?n:await this.iterateOptimize(e,t+1)}};let Cm=()=>Ue().getRequestSource()===ue.IDE;var wm=l(Ie()),Tm=l(Le()),Em=class{sourceFileCache=new Map;constructor(e,t){this.testable=e,this.filePath=t}async getReferences(e=2){let t=Jt.get(this.filePath),n=this.findTargetNode(t);if(!n)return[];let r=n.findReferences(),i=[];for(let e of r)for(let t of e.getReferences()){if(t.isDefinition()??!1)continue;let e=t.getSourceFile().getFilePath();if(!/\.spec|\.test/g.test(e)){let e=await this.getReferencedTestables(t);i.push(...e)}}return(0,h.uniqWith)(i,(e,t)=>e.node===t.node).slice(0,e).map(e=>e.node.getText())}findTargetNode(e){return e.getDescendantsOfKind(E.SyntaxKind.Identifier).find(e=>e.getText()===this.testable.name)}async getTestables(e){let t=e.getSourceFile(),n=t.getFilePath(),r=this.sourceFileCache.get(n);if((0,h.isDefined)(r))return r;let i=new Mn(await et.fromSourceFile(t).getText()).testables.getAllTestables();return this.sourceFileCache.set(n,i),i}async getReferencedTestables(e){try{let t=e.getNode(),[n,r]=[t.getStart(),t.getEnd()];return(await this.getTestables(e)).filter(({type:e,node:t})=>e===`class`||e===`object-method`?!1:t.containsRange(n,r))}catch(e){return H.error(`Error while getting js usage reference code`,e),[]}}};(0,Tm.default)([Yt,(0,wm.default)(`design:type`,Function),(0,wm.default)(`design:paramtypes`,[Object]),(0,wm.default)(`design:returntype`,Promise)],Em.prototype,`getReferences`,null);var Dm=l(Ie()),Om=l(Cr()),km=l(Le()),Am;let jm=class{constructor(e){this.dependenciesService=e}async getTestedCodeDataSource(e,t,n){await Jt.init(e);let{methodType:r,methodName:i,parentName:a}=ai(t);H.addContext({subCategory:Et.CODE_EXTRACTOR}),H.debug.defaultLog(`Get testable context for ${r} ${i}() in ${e}.`);try{let o=await new et(e).getText(),s=at((0,f.extname)(e)),c=zl(s),l=c.extract({methodName:i,methodType:r,parentName:a,filePath:e}),u=Cm(),d=await this.dependenciesService.getTestCodeDataSourceCore(l,e,u);if(s===`javascript`)return Wa(await this.getJsCodeDataSource(e,t,o,d,l,n));let p,m,g,_,v={name:`NA`,kind:`file`,code:o,importPath:e,dependencyType:`file`,isGenerated:!1},b=[];(0,h.isDefined)(d)?(p=d.codeDependencies,m=d.missingDependencies,g=d.testedMethod,_=d.testedMethodClass,v=d.fileCodeDependency,b=d.libraries):(H.info.defaultLog(`No data source for ${i} - ${r}`),m=[],p=[],g={name:i,isAsync:!1,isStatic:!1,parameters:[],decorators:[],code:o.slice(t.startIndex,t.endIndex),callExpressions:[],imports:[],accessModifierType:At.PUBLIC,extendedProperties:{},signature:``,parameterId:(0,y.randomUUID)(),kind:`any`,exportType:kt.Unknown});let x=await new Em(t,e).getReferences();return m=await this.reevaluateMissingDependencies(m,d,c),Wa({gitUrl:Ue().getGitURL(),filePath:e,relativePathToTestFile:this.getRelativePathToTestFile(e,n),testFramework:Ue().getTestFramework(),language:s,testedMethod:g,testedMethodClass:_,missingDependencies:m,codeDependencies:[v,...p],usages:x,libraries:b})}catch(e){throw H.error(`Error occurred during getTestedCodeDataSource ${i}`,e,i),new sr(ar.TESTED_CODE_DATA_SOURCE_ERROR,{methodName:i})}}async getJsCodeDataSource(e,t,n,r,i,a){let{methodName:o}=ai(t),s={name:o,isAsync:!1,isStatic:!1,parameters:[],decorators:[],code:n.slice(t.startIndex,t.endIndex),callExpressions:[],imports:r?.testedMethod.imports??[],exportType:r?.testedMethod.exportType??kt.Named,accessModifierType:r?.testedMethod.accessModifierType??At.PUBLIC,extendedProperties:r?.testedMethod.extendedProperties,signature:``,parameterId:(0,y.randomUUID)(),kind:`any`},c={name:`NA`,kind:`file`,code:n,importPath:e,dependencyType:`file`,isGenerated:!1},l=await new Em(t,e).getReferences(),u=[];if((0,h.isDefined)(i)){let t=await new sc(i,e).extract(),n=i.testedMethod.nestedReactComponents?.hooks??[],r=i.testedMethod.nestedReactComponents?.jsxElements??[],a=[...n,...r].map(t=>({name:t.name,kind:t.kind,importPath:t.importPath,isCoreModule:t.isCoreModule,code:t.code,containedInTestedFile:Za(e,t),exportType:t.exportType,isDataObject:!1,parentParameterIds:[],parentParameterRelations:[],dependenciesMetadata:[],isGenerated:t.isGenerated,baseTypeNames:[]})),o=t.filter(e=>[`function`,`react-function-component`].includes(e.kind)).map(e=>({name:e.name,kind:e.kind,importPath:e.importPath,isCoreModule:e.isCoreModule,code:e.code,containedInTestedFile:e.containedInTestedFile,exportType:e.exportType,isDataObject:!1,parentParameterIds:[],parentParameterRelations:[],dependenciesMetadata:[],isGenerated:e.isGenerated,baseTypeNames:[]}));u=(0,h.uniqWith)([...o,...a],(e,t)=>e.name===t.name)}return{gitUrl:Ue().getGitURL(),filePath:e,relativePathToTestFile:this.getRelativePathToTestFile(e,a),testFramework:Ue().getTestFramework(),language:`javascript`,testedMethod:s,testedMethodClass:void 0,missingDependencies:u,codeDependencies:[c],usages:l,libraries:r?.libraries??[]}}async getSecondLevelReactMissingDependencies(e,t){if(!(0,h.isDefined)(e))return[];let n=Cm(),r=e.missingDependencies.filter(e=>e.kind===`react-function-component`);return(await Promise.all(r.map(async e=>{let r=e.sourceFile;if(!(0,h.isDefined)(r))return null;let i=et.fromAbsolutePath(r.getFilePath()).getRelativeFilePath(),a=t.extract({methodName:e.name,methodType:`function`,filePath:i});return await this.dependenciesService.getTestCodeDataSourceCore(a,i,n)}))).filter(e=>(0,h.isDefined)(e))}async reevaluateMissingDependencies(e,t,n){if(!(0,h.isDefined)(t))return e;let r=t.testedMethod.parameterId,i=(e,t)=>({...e,parentParameterIds:[r,...e.parentParameterIds],parentParameterRelations:[{parameterParentId:r,depthLevelInParent:t},...e.parentParameterRelations]}),a=t.missingDependencies.map(e=>i(e,1)),o=(await this.getSecondLevelReactMissingDependencies(t,n)).flatMap(e=>e.missingDependencies.map(e=>i(e,2)));return(0,h.uniqWith)([...a,...o],(e,t)=>e.name===t.name&&e.kind===t.kind)}getRelativePathToTestFile(e,t){let n=Jt.get(e);return Jt.get(t).getRelativePathTo(n)}};(0,km.default)([Yt,(0,Dm.default)(`design:type`,Function),(0,Dm.default)(`design:paramtypes`,[String,Object,String]),(0,Dm.default)(`design:returntype`,Promise)],jm.prototype,`getTestedCodeDataSource`,null),jm=(0,km.default)([(0,_.injectable)(),(0,Om.default)(0,(0,_.inject)(Pc)),(0,Dm.default)(`design:paramtypes`,[typeof(Am=Pc!==void 0&&Pc)==`function`?Am:Object])],jm);var Mm=l(Ie()),Nm=l(Cr()),Pm=l(Le()),Fm,Im;let Lm=class{constructor(e,t,n){this.globalConfigService=e,this.featureFlagsService=t,this.testableContextService=n}async gatherDataSource(e){let t=await this.testableContextService.getTestedCodeDataSource(e.path,e.testable,e.testFilePath),n={...(0,h.isDefined)(this.globalConfigService.getGenerateTestsLLMModelName())&&{modelName:this.globalConfigService.getGenerateTestsLLMModelName()},...(0,h.isDefined)(this.globalConfigService.getLLMTemperature())&&{temperature:this.globalConfigService.getLLMTemperature()},...(0,h.isDefined)(this.globalConfigService.getLLMTopP())&&{topP:this.globalConfigService.getLLMTopP()}},r=H.getRequestId();return await this.prepareDTO({dataSource:t,llmConfig:n,userPrompt:(0,h.isDefined)(e.userPrompt)&&!(0,h.isEmpty)(e.userPrompt)?e.userPrompt:this.globalConfigService.getUserPrompt(),generatedTestStructure:this.globalConfigService.getGeneratedTestStructure()},r)}async prepareDTO(e,t){let n=e.dataSource.testedMethod.name;H.debug.defaultLog(`Preparing dto for method ${n}`);try{let t=Yl(e,await this.featureFlagsService.isRemovingDuplicatedCodeInDependencyMetadataEnabled());return(await Sm.init(this.featureFlagsService)).optimize(t)}catch(e){throw H.info.defaultLog(`Failed making preparations for generate test dto`,e,t),new sr(ar.PREPARATIONS_FOR_GENERATING_TEST_DTO_ERROR,{methodName:n,errorMessage:`Failed making preparations for generate test dto`})}}};Lm=(0,Pm.default)([(0,_.injectable)(),(0,Nm.default)(0,(0,_.inject)(He)),(0,Nm.default)(1,(0,_.inject)(kc)),(0,Nm.default)(2,(0,_.inject)(jm)),(0,Mm.default)(`design:paramtypes`,[typeof(Fm=He!==void 0&&He)==`function`?Fm:Object,Object,typeof(Im=jm!==void 0&&jm)==`function`?Im:Object])],Lm);var Rm=l(Ie()),zm=l(Cr()),Bm=l(Le()),Vm,Hm;let Um=class{constructor(e,t,n){this.apiService=e,this.globalConfigService=t,this.agentSdkRunner=n}async generate(e,t,n,r,i,a){let o={...e,testedCodeDataSource:{...e.testedCodeDataSource,metadataCollectionTime:n}};if(this.globalConfigService.getExperimentalAgentSdk()){H.info.defaultLog(`[experimental] Using generate-prompt endpoint`);let e;try{e=await this.generatePrompt(o,t,r)}catch(e){throw this.globalConfigService.getProgressLogger(a).verbose(`Failed to analyze function — skipping`),e}return this.generateTestViaClaudeAgentSdk(e,i,r,a)}return this.generateViaBackend(o,t,r)}async generateViaBackend(e,t,n){return this.apiService.post(`/api/v1/tests/generate-tests`,e,{headers:{[lr]:t},signal:n})}async generatePrompt(e,t,n){return await this.apiService.post(`/api/v1/tests/generate-prompt`,e,{headers:{[lr]:t},signal:n})}async generateTestViaClaudeAgentSdk(e,t,n,r){if(!(0,h.isDefined)(t)||(0,h.isEmpty)(t))throw Error(`[agent-sdk] testFilePath is required for experimental SDK flow`);H.info.defaultLog(`[agent-sdk] Running Claude Agent SDK locally...`);let i=this.globalConfigService.getRootPath(),a=(bd?`You are an expert unit test generation agent. Your goal is to produce 7-12 high-quality, passing, type-safe, lint-clean unit tests for a given function or method.
|
|
32087
32087
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@earlyai/cli",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.5",
|
|
4
4
|
"description": "early cli",
|
|
5
5
|
"main": "dist/index.cjs",
|
|
6
6
|
"bin": {
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@earlyai/core": "^1.5.0",
|
|
58
|
-
"@earlyai/ts-agent": "^0.75.
|
|
58
|
+
"@earlyai/ts-agent": "^0.75.2",
|
|
59
59
|
"@eslint/compat": "^1.3.2",
|
|
60
60
|
"@eslint/eslintrc": "^3.3.1",
|
|
61
61
|
"@eslint/js": "^9.34.0",
|