Skip to content

Commit 7053ea3

Browse files
committed
feat: add compilation variables report option
1 parent dafbdc2 commit 7053ea3

File tree

3 files changed

+34
-15
lines changed

3 files changed

+34
-15
lines changed

src/compiler/compile/Component.ts

Lines changed: 32 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -183,9 +183,12 @@ export default class Component {
183183
this.stylesheet.warn_on_unused_selectors(this);
184184
}
185185

186-
add_var(variable: Var) {
186+
add_var(variable: Var, add_to_lookup = true) {
187187
this.vars.push(variable);
188-
this.var_lookup.set(variable.name, variable);
188+
189+
if (add_to_lookup) {
190+
this.var_lookup.set(variable.name, variable);
191+
}
189192
}
190193

191194
add_reference(name: string) {
@@ -216,6 +219,10 @@ export default class Component {
216219
variable.subscribable = true;
217220
}
218221
} else {
222+
if (this.compile_options.varsReport === 'full') {
223+
this.add_var({ name, referenced: true }, false);
224+
}
225+
219226
this.used_names.add(name);
220227
}
221228
}
@@ -340,19 +347,7 @@ export default class Component {
340347
css,
341348
ast: this.original_ast,
342349
warnings: this.warnings,
343-
vars: this.vars
344-
.filter(v => !v.global && !v.internal)
345-
.map(v => ({
346-
name: v.name,
347-
export_name: v.export_name || null,
348-
injected: v.injected || false,
349-
module: v.module || false,
350-
mutated: v.mutated || false,
351-
reassigned: v.reassigned || false,
352-
referenced: v.referenced || false,
353-
writable: v.writable || false,
354-
referenced_from_script: v.referenced_from_script || false
355-
})),
350+
vars: this.get_vars_report(),
356351
stats: this.stats.render()
357352
};
358353
}
@@ -402,6 +397,28 @@ export default class Component {
402397
};
403398
}
404399

400+
get_vars_report(): Var[] {
401+
const { compile_options, vars } = this;
402+
403+
const vars_report = compile_options.varsReport === false
404+
? []
405+
: compile_options.varsReport === 'full'
406+
? vars
407+
: vars.filter(v => !v.global && !v.internal);
408+
409+
return vars_report.map(v => ({
410+
name: v.name,
411+
export_name: v.export_name || null,
412+
injected: v.injected || false,
413+
module: v.module || false,
414+
mutated: v.mutated || false,
415+
reassigned: v.reassigned || false,
416+
referenced: v.referenced || false,
417+
writable: v.writable || false,
418+
referenced_from_script: v.referenced_from_script || false
419+
}));
420+
}
421+
405422
error(
406423
pos: {
407424
start: number;

src/compiler/compile/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ const valid_options = [
1414
'filename',
1515
'sourcemap',
1616
'generate',
17+
'varsReport',
1718
'outputFilename',
1819
'cssOutputFilename',
1920
'sveltePath',

src/compiler/interfaces.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ export interface CompileOptions {
116116
name?: string;
117117
filename?: string;
118118
generate?: 'dom' | 'ssr' | false;
119+
varsReport?: 'full' | 'strict' | false;
119120

120121
sourcemap?: object | string;
121122
outputFilename?: string;

0 commit comments

Comments
 (0)