mirror of https://github.com/sveltejs/svelte
including css-unused-selector, unused-export-let, module-script-reactive-declaration Fixes #5954 Related to #5281pull/6504/head
parent
b662c7fd41
commit
39fab6ee8b
@ -0,0 +1,12 @@
|
||||
import { flatten } from "./flatten";
|
||||
|
||||
const pattern = /^\s*svelte-ignore\s+([\s\S]+)\s*$/m;
|
||||
|
||||
export function extract_svelte_ignore(text: string): string[] {
|
||||
const match = pattern.exec(text);
|
||||
return match ? match[1].split(/[^\S]/).map(x => x.trim()).filter(Boolean) : [];
|
||||
}
|
||||
|
||||
export function extract_svelte_ignore_from_comments<Node extends { leadingComments?: Array<{value: string}> }>(node: Node): string[] {
|
||||
return flatten((node.leadingComments || []).map(comment => extract_svelte_ignore(comment.value)));
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
export function flatten<T>(nodes: T[][], target?: T[]): T[];
|
||||
export function flatten<T>(nodes: T[], target?: T[]): T[];
|
||||
export function flatten(nodes: any[], target: any[] = []): any[] {
|
||||
for (let i = 0; i < nodes.length; i += 1) {
|
||||
const node = nodes[i];
|
||||
if (Array.isArray(node)) {
|
||||
flatten(node, target);
|
||||
} else {
|
||||
target.push(node);
|
||||
}
|
||||
}
|
||||
|
||||
return target;
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
<script context="module">
|
||||
let foo;
|
||||
</script>
|
||||
|
||||
<script>
|
||||
// svelte-ignore unused-export-let
|
||||
export let unused;
|
||||
// svelte-ignore module-script-reactive-declaration
|
||||
$: reactive = foo;
|
||||
</script>
|
||||
|
||||
<!-- svelte-ignore css-unused-selector -->
|
||||
<style>
|
||||
.unused {}
|
||||
</style>
|
||||
@ -0,0 +1 @@
|
||||
[]
|
||||
Loading…
Reference in new issue