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 +0 -1
- package/dist/loaders.js +71 -55
- package/package.json +1 -1
package/dist/loaders.d.ts
CHANGED
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
|
-
|
|
79
|
+
const content = fs.readFileSync(filename, 'utf8');
|
|
80
|
+
module.exports = content;
|
|
76
81
|
};
|
|
77
82
|
require.extensions['.txt'] = function (module, filename) {
|
|
78
|
-
|
|
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
|
-
|
|
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
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
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
|
-
|
|
127
|
-
|
|
128
|
-
|
|
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
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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
|
|
156
|
-
if (typeof _sfc_main !== 'undefined') {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
export default _sfc_main;
|
|
166
|
-
`;
|
|
167
|
-
// 5. Transformação para
|
|
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,
|
|
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.
|
|
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",
|