versacompiler 2.0.8 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/compiler/compile.js +8 -9
  2. package/dist/compiler/error-reporter.js +2 -2
  3. package/dist/compiler/linter.js +1 -1
  4. package/dist/compiler/minify.js +1 -1
  5. package/dist/compiler/minifyTemplate.js +1 -0
  6. package/dist/compiler/module-resolution-optimizer.js +1 -1
  7. package/dist/compiler/parser.js +1 -1
  8. package/dist/compiler/performance-monitor.js +7 -7
  9. package/dist/compiler/tailwindcss.js +1 -1
  10. package/dist/compiler/transform-optimizer.js +1 -1
  11. package/dist/compiler/transformTStoJS.js +1 -1
  12. package/dist/compiler/transforms.js +1 -1
  13. package/dist/compiler/typescript-compiler.js +1 -1
  14. package/dist/compiler/typescript-error-parser.js +8 -8
  15. package/dist/compiler/typescript-manager.js +2 -2
  16. package/dist/compiler/typescript-sync-validator.js +2 -2
  17. package/dist/compiler/typescript-worker-pool.js +1 -1
  18. package/dist/compiler/typescript-worker-thread.cjs +3 -22
  19. package/dist/compiler/typescript-worker.js +1 -1
  20. package/dist/compiler/vuejs.js +22 -22
  21. package/dist/hrm/VueHRM.js +1 -1
  22. package/dist/hrm/initHRM.js +1 -1
  23. package/dist/main.js +3 -3
  24. package/dist/servicios/browserSync.js +2 -7
  25. package/dist/servicios/file-watcher.js +3 -3
  26. package/dist/servicios/readConfig.js +2 -54
  27. package/dist/utils/module-resolver.js +1 -1
  28. package/dist/utils/proxyValidator.js +1 -1
  29. package/dist/utils/resolve-bin.js +1 -1
  30. package/dist/utils/vue-types-setup.js +1 -1
  31. package/dist/wrappers/eslint-node.js +147 -1
  32. package/dist/wrappers/oxlint-node.js +1 -1
  33. package/dist/wrappers/tailwind-node.js +1 -1
  34. package/package.json +103 -109
@@ -1 +1 @@
1
- import{get as e}from"node:http";import{get as t}from"node:https";import{URL as n}from"node:url";export async function validateProxyAvailability(r,i=5e3){return new Promise(a=>{try{let o=new n(r),s=o.protocol===`https:`,c=s?t:e,l={hostname:o.hostname,port:o.port||(s?443:80),path:`/`,method:`HEAD`,timeout:i,headers:{"User-Agent":`VersaCompiler-ProxyValidator/1.0`}},u=c(l,e=>{a(!0)});u.on(`error`,()=>{a(!1)}),u.on(`timeout`,()=>{u.destroy(),a(!1)}),u.setTimeout(i),u.end()}catch{a(!1)}})}export function getProxyInfo(e){try{let t=new n(e);return{host:t.hostname,port:t.port||(t.protocol===`https:`?`443`:`80`),protocol:t.protocol.replace(`:`,``)}}catch{return{host:`unknown`,port:`unknown`,protocol:`unknown`}}}
1
+ import{get as e}from"node:http";import{get as t}from"node:https";import{URL as n}from"node:url";export async function validateProxyAvailability(r,i=5e3){return new Promise(a=>{try{let o=new n(r),s=o.protocol===`https:`,c=(s?t:e)({hostname:o.hostname,port:o.port||(s?443:80),path:`/`,method:`HEAD`,timeout:i,headers:{"User-Agent":`VersaCompiler-ProxyValidator/1.0`}},e=>{a(!0)});c.on(`error`,()=>{a(!1)}),c.on(`timeout`,()=>{c.destroy(),a(!1)}),c.setTimeout(i),c.end()}catch{a(!1)}})}export function getProxyInfo(e){try{let t=new n(e);return{host:t.hostname,port:t.port||(t.protocol===`https:`?`443`:`80`),protocol:t.protocol.replace(`:`,``)}}catch{return{host:`unknown`,port:`unknown`,protocol:`unknown`}}}
@@ -1 +1 @@
1
- import*as e from"node:path";import*as t from"node:process";import n from"find-root";import r from"fs-extra";function i(t,n){for(let i of n)try{let n=e.join(i,`node_modules`,t);if(r.existsSync(n))return n}catch{}throw Error(`Cannot resolve module ${t} from paths: ${n.join(`, `)}`)}export function resolveBin(a,{executable:o=a,paths:s=[t.cwd()]}={}){let c;try{let e=i(a,s);c=n(e)}catch{let n=s[0]||t.cwd(),i=e.join(n,`node_modules`,a,`package.json`);if(r.existsSync(i))c=e.dirname(i);else throw Error(`Cannot resolve module ${a}`)}let l=e.join(c,`package.json`),u=r.readJsonSync(l);if(!u.bin)throw Error(`no bin found in ${u.name}@${u.version} in path ${l}`);let d=typeof u.bin==`string`?u.bin:u.bin[o],f=e.join(c,d);return f}
1
+ import*as e from"node:path";import*as t from"node:process";import n from"find-root";import r from"fs-extra";function i(t,n){for(let i of n)try{let n=e.join(i,`node_modules`,t);if(r.existsSync(n))return n}catch{}throw Error(`Cannot resolve module ${t} from paths: ${n.join(`, `)}`)}export function resolveBin(a,{executable:o=a,paths:s=[t.cwd()]}={}){let c;try{c=n(i(a,s))}catch{let n=s[0]||t.cwd(),i=e.join(n,`node_modules`,a,`package.json`);if(r.existsSync(i))c=e.dirname(i);else throw Error(`Cannot resolve module ${a}`)}let l=e.join(c,`package.json`),u=r.readJsonSync(l);if(!u.bin)throw Error(`no bin found in ${u.name}@${u.version} in path ${l}`);let d=typeof u.bin==`string`?u.bin:u.bin[o];return e.join(c,d)}
@@ -245,4 +245,4 @@ declare module '*.module.styl' {
245
245
  }
246
246
 
247
247
  export {};
248
- `;export const hasVueTypesSetup=n=>{let r=t.join(n,`src/types`),i=t.join(r,`vue-shims.d.ts`);return e.existsSync(i)};export const autoSetupVueTypes=async r=>{let i=t.join(r,`package.json`);if(!e.existsSync(i))return!1;try{let a=JSON.parse(e.readFileSync(i,`utf-8`)),s=a.dependencies?.vue||a.devDependencies?.vue;if(!s)return!1;if(hasVueTypesSetup(r))return!0;let c=a.dependencies?.[`vue-router`]||a.devDependencies?.[`vue-router`],l=a.dependencies?.pinia||a.devDependencies?.pinia;return await setupVueTypes(r,{createTsConfig:!e.existsSync(t.join(r,`tsconfig.json`)),includeRouterTypes:!!c,includePiniaTypes:!!l})}catch(e){return console.error(`Error in auto-setup Vue types:`,e),!1}};
248
+ `;export const hasVueTypesSetup=n=>{let r=t.join(n,`src/types`),i=t.join(r,`vue-shims.d.ts`);return e.existsSync(i)};export const autoSetupVueTypes=async r=>{let i=t.join(r,`package.json`);if(!e.existsSync(i))return!1;try{let a=JSON.parse(e.readFileSync(i,`utf-8`));if(!(a.dependencies?.vue||a.devDependencies?.vue))return!1;if(hasVueTypesSetup(r))return!0;let s=a.dependencies?.[`vue-router`]||a.devDependencies?.[`vue-router`],c=a.dependencies?.pinia||a.devDependencies?.pinia;return await setupVueTypes(r,{createTsConfig:!e.existsSync(t.join(r,`tsconfig.json`)),includeRouterTypes:!!s,includePiniaTypes:!!c})}catch(e){return console.error(`Error in auto-setup Vue types:`,e),!1}};
@@ -1 +1,147 @@
1
- import e from"node:path";import{cwd as t}from"node:process";import{execa as n}from"execa";import{resolveBin as r}from"../utils/resolve-bin.js";export class ESLintNode{binPath;fix;configFile;quiet;deny;allow;noIgnore;ignorePath;ignorePattern;formats;additionalArgs;constructor(e={}){this.binPath=e.binPath||ESLintNode.getDefaultBinPath(),this.fix=e.fix||!1,this.configFile=e.configFile,this.quiet=e.quiet||!1,this.deny=e.deny,this.allow=e.allow,this.noIgnore=e.noIgnore||!1,this.ignorePath=e.ignorePath,this.ignorePattern=e.ignorePattern,this.formats=e.formats||[`json`],this.additionalArgs=e.additionalArgs}static getDefaultBinPath(){try{return r(`eslint`,{executable:`eslint`})}catch(e){throw console.error(`Error al resolver el binario de ESLint. Asegúrate de que 'eslint' esté instalado y en el PATH, o provee la opción 'binPath'.`,e),Error(`Error al resolver el binario de ESLint.`)}}async version(){let{stdout:e}=await n(this.binPath,[`--version`]);return e}async run(r=[]){let i={},a=r.length>0?r:[`.`],o=t();return await Promise.all(this.formats.map(async t=>{let r=this.toCliArgs(t,a);try{let{stdout:a,stderr:s,exitCode:c}=await n(this.binPath,r,{reject:!1});if(c!==0&&t!==`json`&&t!==`sarif`&&s&&!a&&console.warn(`ESLint para formato '${t}' finalizó con código ${c} y stderr: ${s}`),t===`json`){let n=JSON.parse(a||`[]`),r=[];for(let t of n)for(let n of t.messages||[]){let i=e.relative(o,t.filePath).replace(/\\/g,`/`);r.push({filePath:i,file:i,message:n.message,severity:n.severity,ruleId:n.ruleId,line:n.line,column:n.column})}i[t]=r}else t===`sarif`?i[t]=JSON.parse(a||`{}`):i[t]=a}catch(e){console.error(`Error ejecutando ESLint para formato '${t}':`,e.shortMessage||e.message),i[t]={error:e.shortMessage||e.message,details:e}}})),i}toCliArgs(e,t){let n=[];return this.fix&&n.push(`--fix`),this.configFile&&n.push(`--config`,this.configFile),this.quiet&&n.push(`--quiet`),this.noIgnore&&n.push(`--no-ignore`),this.ignorePath&&n.push(`--ignore-path`,this.ignorePath),this.deny&&this.deny.forEach(e=>n.push(`--rule`,`${e}:error`)),this.allow&&this.allow.forEach(e=>n.push(`--rule`,`${e}:off`)),this.ignorePattern&&this.ignorePattern.forEach(e=>n.push(`--ignore-pattern`,e)),e!==`stylish`&&n.push(`--format`,e),this.additionalArgs&&n.push(...this.additionalArgs),n.push(...t),n}static create(e){return new ESLintNode(e)}}
1
+ import path from 'node:path'; // Añadir importación de path
2
+ import { cwd } from 'node:process'; // Añadir importación de cwd
3
+ import { execa } from 'execa';
4
+ import { resolveBin } from '../utils/resolve-bin.js';
5
+ export class ESLintNode {
6
+ binPath;
7
+ fix;
8
+ configFile;
9
+ quiet;
10
+ deny;
11
+ allow;
12
+ noIgnore;
13
+ ignorePath;
14
+ ignorePattern;
15
+ formats;
16
+ additionalArgs;
17
+ constructor(options = {}) {
18
+ this.binPath = options.binPath || ESLintNode.getDefaultBinPath();
19
+ this.fix = options.fix || false;
20
+ this.configFile = options.configFile;
21
+ this.quiet = options.quiet || false;
22
+ this.deny = options.deny;
23
+ this.allow = options.allow;
24
+ this.noIgnore = options.noIgnore || false;
25
+ this.ignorePath = options.ignorePath;
26
+ this.ignorePattern = options.ignorePattern;
27
+ this.formats = options.formats || ['json']; // Por defecto, solo 'json'
28
+ this.additionalArgs = options.additionalArgs;
29
+ }
30
+ static getDefaultBinPath() {
31
+ try {
32
+ return resolveBin('eslint', { executable: 'eslint' });
33
+ }
34
+ catch (error) {
35
+ console.error("Error al resolver el binario de ESLint. Asegúrate de que 'eslint' esté instalado y en el PATH, o provee la opción 'binPath'.", error);
36
+ throw new Error('Error al resolver el binario de ESLint.', {
37
+ cause: error,
38
+ });
39
+ }
40
+ }
41
+ async version() {
42
+ const { stdout: version } = await execa(this.binPath, ['--version']);
43
+ return version;
44
+ }
45
+ /**
46
+ * Ejecuta ESLint para los formatos configurados y devuelve los resultados.
47
+ * @param paths Rutas o patrones glob para los archivos a lint.
48
+ * @returns Un objeto donde cada clave es un formato y el valor es el resultado (parseado si es JSON).
49
+ */
50
+ async run(paths = []) {
51
+ const results = {};
52
+ const targetPaths = paths.length > 0 ? paths : ['.'];
53
+ const projectRoot = cwd(); // Obtener la ruta raíz del proyecto
54
+ await Promise.all(this.formats.map(async (format) => {
55
+ const cliArgs = this.toCliArgs(format, targetPaths);
56
+ try {
57
+ const { stdout, stderr, exitCode } = await execa(this.binPath, cliArgs, { reject: false });
58
+ if (exitCode !== 0 &&
59
+ format !== 'json' &&
60
+ format !== 'sarif') {
61
+ if (stderr && !stdout) {
62
+ console.warn(`ESLint para formato '${format}' finalizó con código ${exitCode} y stderr: ${stderr}`);
63
+ }
64
+ }
65
+ if (format === 'json') {
66
+ // ESLint devuelve un array de archivos con mensajes anidados
67
+ // Necesitamos aplanar esta estructura para que coincida con lo que espera el compilador
68
+ const eslintOutput = JSON.parse(stdout || '[]');
69
+ const flattenedResults = [];
70
+ for (const fileResult of eslintOutput) {
71
+ for (const message of fileResult.messages || []) {
72
+ // Calcular ruta relativa
73
+ const relativeFilePath = path
74
+ .relative(projectRoot, fileResult.filePath)
75
+ .replace(/\\/g, '/');
76
+ flattenedResults.push({
77
+ filePath: relativeFilePath, // Usar ruta relativa
78
+ file: relativeFilePath, // Alias para compatibilidad
79
+ message: message.message,
80
+ severity: message.severity,
81
+ ruleId: message.ruleId,
82
+ line: message.line,
83
+ column: message.column,
84
+ });
85
+ }
86
+ }
87
+ results[format] = flattenedResults;
88
+ }
89
+ else if (format === 'sarif') {
90
+ results[format] = JSON.parse(stdout || '{}');
91
+ }
92
+ else {
93
+ results[format] = stdout;
94
+ }
95
+ }
96
+ catch (error) {
97
+ console.error(`Error ejecutando ESLint para formato '${format}':`, error.shortMessage || error.message);
98
+ results[format] = {
99
+ error: error.shortMessage || error.message,
100
+ details: error,
101
+ };
102
+ }
103
+ }));
104
+ return results;
105
+ }
106
+ /**
107
+ * Construye el array de argumentos para pasar al CLI de ESLint para un formato específico.
108
+ */
109
+ toCliArgs(format, paths) {
110
+ const args = [];
111
+ // Opciones directas
112
+ if (this.fix)
113
+ args.push('--fix');
114
+ if (this.configFile)
115
+ args.push('--config', this.configFile);
116
+ if (this.quiet)
117
+ args.push('--quiet');
118
+ if (this.noIgnore)
119
+ args.push('--no-ignore');
120
+ if (this.ignorePath)
121
+ args.push('--ignore-path', this.ignorePath);
122
+ if (this.deny)
123
+ this.deny.forEach(rule => args.push('--rule', `${rule}:error`));
124
+ if (this.allow)
125
+ this.allow.forEach(rule => args.push('--rule', `${rule}:off`));
126
+ if (this.ignorePattern)
127
+ this.ignorePattern.forEach(pattern => args.push('--ignore-pattern', pattern));
128
+ // Formato
129
+ if (format !== 'stylish') {
130
+ args.push('--format', format);
131
+ }
132
+ // Argumentos adicionales
133
+ if (this.additionalArgs)
134
+ args.push(...this.additionalArgs);
135
+ // Rutas/patrones
136
+ args.push(...paths);
137
+ return args;
138
+ }
139
+ /**
140
+ * Método estático para crear una instancia de ESLintNode, similar al código de referencia.
141
+ * @param options Opciones de configuración.
142
+ */
143
+ static create(options) {
144
+ return new ESLintNode(options);
145
+ }
146
+ }
147
+ //# sourceMappingURL=eslint-node.js.map
@@ -1 +1 @@
1
- import{execa as e}from"execa";import{resolveBin as t}from"../utils/resolve-bin.js";export class OxlintNode{binPath;fix;configFile;tsconfigPath;quiet;deny;allow;noIgnore;ignorePath;ignorePattern;formats;additionalArgs;constructor(e={}){this.binPath=e.binPath||OxlintNode.getDefaultBinPath(),this.fix=e.fix||!1,this.configFile=e.configFile,this.tsconfigPath=e.tsconfigPath,this.quiet=e.quiet||!1,this.deny=e.deny,this.allow=e.allow,this.noIgnore=e.noIgnore||!1,this.ignorePath=e.ignorePath,this.ignorePattern=e.ignorePattern,this.formats=e.formats||[`json`],this.additionalArgs=e.additionalArgs}static getDefaultBinPath(){try{return t(`oxlint`,{executable:`oxlint`})}catch(e){throw console.error(`Error al resolver el binario de Oxlint. Asegúrate de que 'oxlint' esté instalado y en el PATH, o provee la opción 'binPath'.`,e),Error(`Error al resolver el binario de Oxlint.`)}}async version(){let{stdout:t}=await e(this.binPath,[`--version`]);return t}async run(t=[]){let n={},r=t.length>0?t:[`.`];return await Promise.all(this.formats.map(async t=>{let i=this.toCliArgs(t,r);try{let{stdout:r,stderr:a,exitCode:o}=await e(this.binPath,i,{reject:!1});o!==0&&t!==`json`&&t!==`sarif`&&a&&!r&&console.warn(`Oxlint para formato '${t}' finalizó con código ${o} y stderr: ${a}`),n[t]=t===`json`||t===`sarif`?JSON.parse(r||`{}`):r}catch(e){console.error(`Error ejecutando Oxlint para formato '${t}':`,e.shortMessage||e.message),n[t]={error:e.shortMessage||e.message,details:e}}})),n}toCliArgs(e,t){let n=[];return this.fix&&n.push(`--fix`),this.configFile&&n.push(`--config`,this.configFile),this.tsconfigPath&&n.push(`--tsconfig`,this.tsconfigPath),this.quiet&&n.push(`--quiet`),this.noIgnore&&n.push(`--no-ignore`),this.ignorePath&&n.push(`--ignore-path`,this.ignorePath),this.deny&&this.deny.forEach(e=>n.push(`--deny`,e)),this.allow&&this.allow.forEach(e=>n.push(`--allow`,e)),this.ignorePattern&&this.ignorePattern.forEach(e=>n.push(`--ignore-pattern`,e)),e!==`default`&&n.push(`--format`,e),this.additionalArgs&&n.push(...this.additionalArgs),n.push(...t),n}static create(e){return new OxlintNode(e)}}
1
+ import{execa as e}from"execa";import{resolveBin as t}from"../utils/resolve-bin.js";export class OxlintNode{binPath;fix;configFile;tsconfigPath;quiet;deny;allow;noIgnore;ignorePath;ignorePattern;formats;additionalArgs;constructor(e={}){this.binPath=e.binPath||OxlintNode.getDefaultBinPath(),this.fix=e.fix||!1,this.configFile=e.configFile,this.tsconfigPath=e.tsconfigPath,this.quiet=e.quiet||!1,this.deny=e.deny,this.allow=e.allow,this.noIgnore=e.noIgnore||!1,this.ignorePath=e.ignorePath,this.ignorePattern=e.ignorePattern,this.formats=e.formats||[`json`],this.additionalArgs=e.additionalArgs}static getDefaultBinPath(){try{return t(`oxlint`,{executable:`oxlint`})}catch(e){throw console.error(`Error al resolver el binario de Oxlint. Asegúrate de que 'oxlint' esté instalado y en el PATH, o provee la opción 'binPath'.`,e),Error(`Error al resolver el binario de Oxlint.`,{cause:e})}}async version(){let{stdout:t}=await e(this.binPath,[`--version`]);return t}async run(t=[]){let n={},r=t.length>0?t:[`.`];return await Promise.all(this.formats.map(async t=>{let i=this.toCliArgs(t,r);try{let{stdout:r,stderr:a,exitCode:o}=await e(this.binPath,i,{reject:!1});o!==0&&t!==`json`&&t!==`sarif`&&a&&!r&&console.warn(`Oxlint para formato '${t}' finalizó con código ${o} y stderr: ${a}`),n[t]=t===`json`||t===`sarif`?JSON.parse(r||`{}`):r}catch(e){console.error(`Error ejecutando Oxlint para formato '${t}':`,e.shortMessage||e.message),n[t]={error:e.shortMessage||e.message,details:e}}})),n}toCliArgs(e,t){let n=[];return this.fix&&n.push(`--fix`),this.configFile&&n.push(`--config`,this.configFile),this.tsconfigPath&&n.push(`--tsconfig`,this.tsconfigPath),this.quiet&&n.push(`--quiet`),this.noIgnore&&n.push(`--no-ignore`),this.ignorePath&&n.push(`--ignore-path`,this.ignorePath),this.deny&&this.deny.forEach(e=>n.push(`--deny`,e)),this.allow&&this.allow.forEach(e=>n.push(`--allow`,e)),this.ignorePattern&&this.ignorePattern.forEach(e=>n.push(`--ignore-pattern`,e)),e!==`default`&&n.push(`--format`,e),this.additionalArgs&&n.push(...this.additionalArgs),n.push(...t),n}static create(e){return new OxlintNode(e)}}
@@ -1 +1 @@
1
- import{execa as e}from"execa";import{resolveBin as t}from"../utils/resolve-bin.js";export class TailwindNode{binPath;input;output;content;minify;additionalArgs;configFile;constructor(e){if(!e.input)throw Error(`La opción "input" es requerida.`);if(!e.output)throw Error(`La opción "output" es requerida.`);this.binPath=e.binPath||TailwindNode.getDefaultBinPath(),this.input=e.input,this.output=e.output,this.content=e.content,this.minify=e.minify||!1,this.additionalArgs=e.additionalArgs,this.configFile=e.configFile}static getDefaultBinPath(){try{return t(`tailwindcss`,{executable:`tailwindcss`})}catch(e){throw console.error(`Error al resolver el binario de Tailwind CSS. Asegúrate de que esté instalado y en el PATH, o provee la opción 'binPath'.`,e),Error(`Error al resolver el binario de Tailwind CSS.`)}}async run(){let t=this.toCliArgs();try{let n=await e(this.binPath,t);return{success:!0,message:`Tailwind CSS compilado exitosamente desde ${this.input} a ${this.output}`,details:n}}catch(e){let t=e;return console.error(`Error en la compilación de Tailwind CSS: ${t.message}`),t.stderr&&console.error(`Stderr: ${t.stderr}`),{success:!1,message:`Error en la compilación de Tailwind CSS: ${t.shortMessage||t.message}`,details:t}}}toCliArgs(){let e=[`-i`,this.input,`-o`,this.output];return this.configFile&&e.push(`--config`,this.configFile),this.content&&this.content.length>0&&(e.push(`--content`),e.push(...this.content)),this.minify&&e.push(`--minify`),this.additionalArgs&&this.additionalArgs.length>0&&e.push(...this.additionalArgs),e}}
1
+ import{execa as e}from"execa";import{resolveBin as t}from"../utils/resolve-bin.js";export class TailwindNode{binPath;input;output;content;minify;additionalArgs;configFile;constructor(e){if(!e.input)throw Error(`La opción "input" es requerida.`);if(!e.output)throw Error(`La opción "output" es requerida.`);this.binPath=e.binPath||TailwindNode.getDefaultBinPath(),this.input=e.input,this.output=e.output,this.content=e.content,this.minify=e.minify||!1,this.additionalArgs=e.additionalArgs,this.configFile=e.configFile}static getDefaultBinPath(){try{return t(`tailwindcss`,{executable:`tailwindcss`})}catch(e){throw console.error(`Error al resolver el binario de Tailwind CSS. Asegúrate de que esté instalado y en el PATH, o provee la opción 'binPath'.`,e),Error(`Error al resolver el binario de Tailwind CSS.`,{cause:e})}}async run(){let t=this.toCliArgs();try{let n=await e(this.binPath,t);return{success:!0,message:`Tailwind CSS compilado exitosamente desde ${this.input} a ${this.output}`,details:n}}catch(e){let t=e;return console.error(`Error en la compilación de Tailwind CSS: ${t.message}`),t.stderr&&console.error(`Stderr: ${t.stderr}`),{success:!1,message:`Error en la compilación de Tailwind CSS: ${t.shortMessage||t.message}`,details:t}}}toCliArgs(){let e=[`-i`,this.input,`-o`,this.output];return this.configFile&&e.push(`--config`,this.configFile),this.content&&this.content.length>0&&(e.push(`--content`),e.push(...this.content)),this.minify&&e.push(`--minify`),this.additionalArgs&&this.additionalArgs.length>0&&e.push(...this.additionalArgs),e}}
package/package.json CHANGED
@@ -1,110 +1,104 @@
1
1
  {
2
- "name": "versacompiler",
3
- "version": "2.0.8",
4
- "description": "Una herramienta para compilar y minificar archivos .vue, .js y .ts para proyectos de Vue 3 con soporte para TypeScript.",
5
- "main": "dist/main.js",
6
- "bin": {
7
- "versacompiler": "dist/main.js"
8
- },
9
- "publishConfig": {
10
- "access": "public"
11
- },
12
- "files": [
13
- "dist",
14
- "LICENSE",
15
- "README.md"
16
- ],
17
- "type": "module",
18
- "scripts": {
19
- "dev": "tsx --watch src/main.ts --watch --verbose --tailwind",
20
- "file": "tsx src/main.ts ",
21
- "compile": "tsx src/main.ts --all",
22
- "test": "jest --config jest.config.js",
23
- "build": "tsx src/main.ts --all -t --cc --co -y --verbose",
24
- "lint": "oxlint --fix --config .oxlintrc.json",
25
- "lint:eslint": "eslint --ext .js,.ts,.vue src/ --fix",
26
- "perf": "scripts\\run-performance.bat",
27
- "perf:test": "jest tests/performance.test.ts --config jest.config.js --testTimeout=300000",
28
- "perf:report": "node scripts/generate-performance-report.js",
29
- "perf:open": "start performance-results/dashboard.html",
30
- "perf:clean": "rmdir /s /q performance-results 2>nul || echo 'Performance results cleaned'"
31
- },
32
- "keywords": [
33
- "vue",
34
- "compiler",
35
- "minifier",
36
- "vue3",
37
- "versacompiler",
38
- "typescript",
39
- "linter"
40
- ],
41
- "author": "Jorge Jara H (kriollone@gmail.com)",
42
- "license": "MIT",
43
- "repository": {
44
- "type": "git",
45
- "url": "git+https://github.com/kriollo/versaCompiler.git"
46
- },
47
- "bugs": {
48
- "url": "https://github.com/kriollo/versaCompiler/issues"
49
- },
50
- "homepage": "https://github.com/kriollo/versaCompiler#readme",
51
- "dependencies": {
52
- "@vue/compiler-dom": "^3.5.20",
53
- "@vue/reactivity": "^3.5.20",
54
- "@vue/runtime-core": "^3.5.20",
55
- "@vue/runtime-dom": "^3.5.20",
56
- "browser-sync": "^3.0.4",
57
- "chalk": "5.6.0",
58
- "chokidar": "^4.0.3",
59
- "enhanced-resolve": "^5.18.3",
60
- "execa": "^9.6.0",
61
- "find-root": "^1.1.0",
62
- "fs-extra": "^11.3.1",
63
- "get-port": "^7.1.0",
64
- "minimatch": "^10.0.3",
65
- "oxc-minify": "^0.82.3",
66
- "oxc-parser": "^0.82.3",
67
- "oxc-transform": "^0.82.3",
68
- "resolve": "^1.22.10",
69
- "tsx": "^4.20.5",
70
- "typescript": "^5.9.2",
71
- "vue": "3.5.20",
72
- "yargs": "^18.0.0"
73
- },
74
- "devDependencies": {
75
- "@eslint/eslintrc": "^3.3.1",
76
- "@tailwindcss/cli": "^4.1.12",
77
- "@types/browser-sync": "^2.29.0",
78
- "@types/find-root": "^1.1.4",
79
- "@types/fs-extra": "^11.0.4",
80
- "@types/jest": "^30.0.0",
81
- "@types/mocha": "^10.0.10",
82
- "@types/node": "^24.3.0",
83
- "@types/resolve": "^1.20.6",
84
- "@types/yargs": "^17.0.33",
85
- "@typescript-eslint/eslint-plugin": "^8.41.0",
86
- "@typescript-eslint/parser": "^8.41.0",
87
- "@vue/eslint-config-typescript": "^14.6.0",
88
- "@vue/test-utils": "^2.4.6",
89
- "code-tag": "^1.2.0",
90
- "eslint": "^9.34.0",
91
- "eslint-import-resolver-typescript": "^4.4.4",
92
- "eslint-plugin-import": "^2.32.0",
93
- "eslint-plugin-oxlint": "^1.13.0",
94
- "eslint-plugin-promise": "^7.2.1",
95
- "eslint-plugin-unicorn": "^60.0.0",
96
- "eslint-plugin-vue": "^10.4.0",
97
- "happy-dom": "^18.0.1",
98
- "jest": "^30.1.1",
99
- "jest-environment-jsdom": "30.1.1",
100
- "jest-environment-node": "30.1.1",
101
- "oxlint": "^1.13.0",
102
- "prettier": "3.6.2",
103
- "rimraf": "^6.0.1",
104
- "sweetalert2": "^11.22.5",
105
- "tailwindcss": "^4.1.12",
106
- "ts-jest": "^29.4.1",
107
- "vue-eslint-parser": "^10.2.0"
108
- },
109
- "packageManager": "pnpm@10.15.0+sha512.486ebc259d3e999a4e8691ce03b5cac4a71cbeca39372a9b762cb500cfdf0873e2cb16abe3d951b1ee2cf012503f027b98b6584e4df22524e0c7450d9ec7aa7b"
110
- }
2
+ "name": "versacompiler",
3
+ "version": "2.1.0",
4
+ "description": "Una herramienta para compilar y minificar archivos .vue, .js y .ts para proyectos de Vue 3 con soporte para TypeScript.",
5
+ "main": "dist/main.js",
6
+ "bin": {
7
+ "versacompiler": "dist/main.js"
8
+ },
9
+ "publishConfig": {
10
+ "access": "public"
11
+ },
12
+ "files": [
13
+ "dist",
14
+ "LICENSE",
15
+ "README.md"
16
+ ],
17
+ "type": "module",
18
+ "keywords": [
19
+ "vue",
20
+ "compiler",
21
+ "minifier",
22
+ "vue3",
23
+ "versacompiler",
24
+ "typescript",
25
+ "linter"
26
+ ],
27
+ "author": "Jorge Jara H (kriollone@gmail.com)",
28
+ "license": "MIT",
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "git+https://github.com/kriollo/versaCompiler.git"
32
+ },
33
+ "bugs": {
34
+ "url": "https://github.com/kriollo/versaCompiler/issues"
35
+ },
36
+ "homepage": "https://github.com/kriollo/versaCompiler#readme",
37
+ "dependencies": {
38
+ "@vue/compiler-dom": "^3.5.24",
39
+ "@vue/reactivity": "^3.5.24",
40
+ "@vue/runtime-core": "^3.5.24",
41
+ "@vue/runtime-dom": "^3.5.24",
42
+ "browser-sync": "^3.0.4",
43
+ "chalk": "5.6.2",
44
+ "chokidar": "^4.0.3",
45
+ "enhanced-resolve": "^5.18.3",
46
+ "execa": "^9.6.0",
47
+ "find-root": "^1.1.0",
48
+ "fs-extra": "^11.3.2",
49
+ "get-port": "^7.1.0",
50
+ "minify-html-literals": "^1.3.5",
51
+ "minimatch": "^10.1.1",
52
+ "oxc-minify": "^0.97.0",
53
+ "oxc-parser": "^0.97.0",
54
+ "oxc-transform": "^0.97.0",
55
+ "resolve": "^1.22.11",
56
+ "tsx": "^4.20.6",
57
+ "typescript": "^5.9.3",
58
+ "vue": "3.5.24",
59
+ "yargs": "^18.0.0"
60
+ },
61
+ "devDependencies": {
62
+ "@eslint/eslintrc": "^3.3.1",
63
+ "@tailwindcss/cli": "^4.1.17",
64
+ "@types/browser-sync": "^2.29.1",
65
+ "@types/find-root": "^1.1.4",
66
+ "@types/fs-extra": "^11.0.4",
67
+ "@types/jest": "^30.0.0",
68
+ "@types/mocha": "^10.0.10",
69
+ "@types/node": "^24.10.1",
70
+ "@types/resolve": "^1.20.6",
71
+ "@types/yargs": "^17.0.34",
72
+ "@typescript-eslint/eslint-plugin": "^8.46.4",
73
+ "@typescript-eslint/parser": "^8.46.4",
74
+ "@vue/eslint-config-typescript": "^14.6.0",
75
+ "@vue/test-utils": "^2.4.6",
76
+ "code-tag": "^1.2.0",
77
+ "eslint": "^9.39.1",
78
+ "eslint-import-resolver-typescript": "^4.4.4",
79
+ "eslint-plugin-import": "^2.32.0",
80
+ "eslint-plugin-oxlint": "^1.28.0",
81
+ "eslint-plugin-promise": "^7.2.1",
82
+ "eslint-plugin-unicorn": "^62.0.0",
83
+ "eslint-plugin-vue": "^10.5.1",
84
+ "jest": "^30.2.0",
85
+ "jest-environment-jsdom": "30.1.2",
86
+ "jest-environment-node": "30.1.2",
87
+ "oxlint": "^1.28.0",
88
+ "prettier": "3.6.2",
89
+ "rimraf": "^6.1.0",
90
+ "sweetalert2": "^11.26.3",
91
+ "tailwindcss": "^4.1.17",
92
+ "ts-jest": "^29.4.5",
93
+ "vue-eslint-parser": "^10.2.0"
94
+ },
95
+ "scripts": {
96
+ "dev": "tsx --watch src/main.ts --watch --verbose --tailwind",
97
+ "file": "tsx src/main.ts ",
98
+ "compile": "tsx src/main.ts --all",
99
+ "test": "jest --config jest.config.js",
100
+ "build": "tsx src/main.ts --all -t --cc --co -y --verbose",
101
+ "lint": "oxlint --fix --config .oxlintrc.json",
102
+ "lint:eslint": "eslint --ext .js,.ts,.vue src/ --fix"
103
+ }
104
+ }