vatts 1.2.0-test.2 → 1.2.0-test.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/loaders.d.ts CHANGED
@@ -1,2 +1 @@
1
1
  export = filename;
2
- export = filename;
package/dist/loaders.js CHANGED
@@ -13,11 +13,15 @@ let esbuild;
13
13
  try {
14
14
  sfcCompiler = require('vue/compiler-sfc');
15
15
  }
16
- catch (e) { }
16
+ catch (e) {
17
+ // Vue não instalado ou não encontrado
18
+ }
17
19
  try {
18
20
  esbuild = require('esbuild');
19
21
  }
20
- catch (e) { }
22
+ catch (e) {
23
+ // Esbuild não instalado
24
+ }
21
25
  const { loadTsConfigPaths, resolveTsConfigAlias, resolveWithNodeStyleExtensions } = require('./tsconfigPaths');
22
26
  /**
23
27
  * Carrega e processa o tsconfig.json para obter os aliases
@@ -72,10 +76,12 @@ function registerLoaders(options = {}) {
72
76
  }
73
77
  // --- File Handlers ---
74
78
  require.extensions['.md'] = function (module, filename) {
75
- module.exports = fs.readFileSync(filename, 'utf8');
79
+ const content = fs.readFileSync(filename, 'utf8');
80
+ module.exports = content;
76
81
  };
77
82
  require.extensions['.txt'] = function (module, filename) {
78
- module.exports = fs.readFileSync(filename, 'utf8');
83
+ const content = fs.readFileSync(filename, 'utf8');
84
+ module.exports = content;
79
85
  };
80
86
  const styleExtensions = ['.css', '.scss', '.sass', '.less'];
81
87
  styleExtensions.forEach(ext => {
@@ -95,6 +101,7 @@ function registerLoaders(options = {}) {
95
101
  throw new Error('Para carregar arquivos .vue no servidor, você precisa instalar "vue" e "esbuild".');
96
102
  }
97
103
  const source = fs.readFileSync(filename, 'utf8');
104
+ // Variável para armazenar o código final para fins de debug
98
105
  let finalEsm = '';
99
106
  try {
100
107
  // 1. Parse do SFC
@@ -105,66 +112,75 @@ function registerLoaders(options = {}) {
105
112
  if (errors.length > 0) {
106
113
  console.error(`Erro ao parsear ${filename}:`, errors);
107
114
  }
108
- // 2. Compilação do Script
109
- let scriptContent = '';
115
+ // 2. Compilação do Script (<script> ou <script setup>)
116
+ // Padrão: Se não houver script, definimos um objeto vazio
117
+ let scriptContent = 'const _sfc_main = {};';
110
118
  let bindings = undefined;
111
119
  if (descriptor.script || descriptor.scriptSetup) {
112
- const compiledScript = sfcCompiler.compileScript(descriptor, {
113
- id: filename,
114
- isProd: false,
115
- inlineTemplate: false
116
- });
117
- scriptContent = compiledScript.content;
118
- bindings = compiledScript.bindings;
119
- const hasSfcMain = /\bconst\s+_sfc_main\b/.test(scriptContent) ||
120
- /\blet\s+_sfc_main\b/.test(scriptContent) ||
121
- /\bvar\s+_sfc_main\b/.test(scriptContent);
122
- // Caso tenha "export default"
123
- if (/export\s+default/.test(scriptContent)) {
124
- scriptContent = scriptContent.replace(/export\s+default/, 'const _sfc_main =');
120
+ try {
121
+ const compiledScript = sfcCompiler.compileScript(descriptor, {
122
+ id: filename,
123
+ isProd: false,
124
+ inlineTemplate: false
125
+ });
126
+ // Lógica de substituição corrigida para evitar dupla declaração
127
+ if (compiledScript.content.includes('const _sfc_main =')) {
128
+ // O compilador do Vue já declarou o _sfc_main (comum no script setup)
129
+ scriptContent = compiledScript.content;
130
+ }
131
+ else if (compiledScript.content.match(/export\s+default/)) {
132
+ // Substitui export default tradicional
133
+ scriptContent = compiledScript.content.replace(/export\s+default/, 'const _sfc_main =');
134
+ }
135
+ else {
136
+ // Se não achou export default e o Vue não declarou o _sfc_main, nós criamos um vazio
137
+ scriptContent = compiledScript.content + '\nconst _sfc_main = {};';
138
+ }
139
+ bindings = compiledScript.bindings;
125
140
  }
126
- // Caso NÃO tenha export default e NÃO tenha _sfc_main
127
- else if (!hasSfcMain) {
128
- scriptContent += '\nconst _sfc_main = {};';
141
+ catch (e) {
142
+ console.error(`Erro ao compilar script Vue em ${filename}:`, e.message);
143
+ throw e;
129
144
  }
130
145
  }
131
- else {
132
- // Sem script nenhum
133
- scriptContent = 'const _sfc_main = {};';
134
- }
135
146
  // 3. Compilação do Template para SSR
136
147
  let templateContent = '';
137
148
  if (descriptor.template) {
138
- const templateResult = sfcCompiler.compileTemplate({
139
- source: descriptor.template.content,
140
- filename,
141
- id: filename,
142
- ssr: true,
143
- compilerOptions: {
144
- bindingMetadata: bindings
145
- },
146
- ssrCssVars: descriptor.cssVars || []
147
- });
148
- templateContent = templateResult.code;
149
+ try {
150
+ const templateResult = sfcCompiler.compileTemplate({
151
+ source: descriptor.template.content,
152
+ filename: filename,
153
+ id: filename,
154
+ ssr: true,
155
+ compilerOptions: {
156
+ bindingMetadata: bindings
157
+ },
158
+ ssrCssVars: descriptor.cssVars || []
159
+ });
160
+ templateContent = templateResult.code;
161
+ }
162
+ catch (e) {
163
+ console.error(`Erro ao compilar template Vue em ${filename}:`, e.message);
164
+ }
149
165
  }
150
- // 4. Montagem do Código Final
166
+ // 4. Montagem do Código Final (ESM Virtual)
151
167
  finalEsm = `
152
- ${scriptContent}
153
- ${templateContent}
154
-
155
- // Anexa render ao componente
156
- if (typeof _sfc_main !== 'undefined') {
157
- if (typeof ssrRender !== 'undefined') {
158
- _sfc_main.ssrRender = ssrRender;
159
- }
160
- if (typeof render !== 'undefined') {
161
- _sfc_main.render = render;
162
- }
163
- }
164
-
165
- export default _sfc_main;
166
- `;
167
- // 5. Transformação para CJS
168
+ ${scriptContent}
169
+ ${templateContent}
170
+
171
+ // Anexa a função de renderização SSR ao componente principal
172
+ if (typeof _sfc_main !== 'undefined') {
173
+ if (typeof ssrRender !== 'undefined') {
174
+ _sfc_main.ssrRender = ssrRender;
175
+ }
176
+ if (typeof render !== 'undefined') {
177
+ _sfc_main.render = render;
178
+ }
179
+ }
180
+
181
+ export default _sfc_main;
182
+ `;
183
+ // 5. Transformação final para CommonJS (Node.js) via Esbuild
168
184
  const result = esbuild.transformSync(finalEsm, {
169
185
  loader: 'ts',
170
186
  format: 'cjs',
@@ -180,7 +196,7 @@ export default _sfc_main;
180
196
  console.error(`Erro original: ${err.message}`);
181
197
  if (finalEsm) {
182
198
  console.error(`\n[DEBUG] Código gerado (Snippet):`);
183
- console.error(finalEsm.split('\n').slice(0, 40).join('\n') + '\n...');
199
+ console.error(finalEsm.split('\n').slice(0, 30).join('\n') + '\n...');
184
200
  }
185
201
  console.error(`--------------------------\n`);
186
202
  throw err;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vatts",
3
- "version": "1.2.0-test.2",
3
+ "version": "1.2.0-test.3",
4
4
  "description": "Vatts.js is a high-level framework for building web applications with ease and speed. It provides a robust set of tools and features to streamline development and enhance productivity.",
5
5
  "types": "dist/index.d.ts",
6
6
  "author": "itsmuzin",