svelte-typecheck 0.1.0 → 0.1.1
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/README.md +1 -1
- package/cli.js +2 -2
- package/index.d.ts +146 -127
- package/index.js +1 -1
- package/package.json +1 -4
- package/shared-58j2f7by.js +2 -0
- package/{shared-3tqftqj3.js → shared-7zm6g9d3.js} +3 -3
- package/shared-9c39v7dt.js +1 -0
- package/CHANGELOG.md +0 -29
- package/shared-8s3qd7gw.js +0 -1
- package/shared-af1r7qrc.js +0 -2
package/README.md
CHANGED
|
@@ -116,7 +116,7 @@ What svelte-typecheck does that svelte-check doesn't:
|
|
|
116
116
|
| **Baselines** | `--update-baseline --baseline errors.json` records today's diagnostics; `--baseline errors.json` then reports, and fails on, only new ones. A diagnostic is known by its file, code, message and line's text, not its line number, so edits around it don't make it new; fixed ones are counted, to drop with `--update-baseline`. For turning on `strict`, a new rule, or a checker upgrade without fixing everything first. Its paths are the workspace's, so the file is the same on every machine. |
|
|
117
117
|
| **Changed files only** | `--changed` and `--since <ref>` report the files git sees changed and the files that import them, whose errors a change can cause. The whole program is still checked, so the errors are the same ones, fewer to read: for a pre-commit hook, or a PR's CI run. |
|
|
118
118
|
| **Speed and memory** | Up to 11× faster than svelte-check with `bun check` or tsrs, at about half its memory, and 1.2 to 2× with TypeScript 6's own `tsc`: one checker process over files on disk, beside the compiler pass, where svelte-check drives TypeScript's language service file by file. |
|
|
119
|
-
| **Zero dependencies** | One bundle
|
|
119
|
+
| **Zero dependencies** | One bundle: it uses the project's own Svelte and checker, and installs nothing else. |
|
|
120
120
|
| **Generated code you can read** | The TypeScript it writes and its tsconfig are plain files in `--out-dir`: open them, or run any checker on them yourself. They're kept between runs, with the checker's own build cache, so a run after a change rewrites and rechecks only what it touches (`--no-incremental` starts over). |
|
|
121
121
|
| **No silent passes** | Generated code that doesn't parse fails the run as a svelte-typecheck bug, and a checker error that names no file (a tsconfig option, a root file) is reported on the tsconfig. svelte-check's language service reads past broken generated code. |
|
|
122
122
|
|
package/cli.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import"./shared-
|
|
2
|
+
import"./shared-58j2f7by.js";import{EmitError,typecheck2,watch2,createBaseline2,applyBaseline2}from"./shared-7zm6g9d3.js";import{readFileSync as readFileSync2,writeFileSync}from"node:fs";import{resolve}from"node:path";import{parseArgs}from"node:util";import{readFileSync}from"node:fs";import{relative,sep}from"node:path";var OUTPUT_FORMATS=["human","human-verbose","machine","machine-verbose"];function colors(force){let env=process.env,enabled=force??(env.FORCE_COLOR!==void 0?env.FORCE_COLOR!=="0":env.NO_COLOR===void 0&&Boolean(process.stdout.isTTY)&&env.TERM!=="dumb"),paint=(open,close)=>(text)=>enabled?`\x1B[${open}m${text}\x1B[${close}m`:text;return{red:paint(31,39),yellow:paint(33,39),green:paint(32,39),cyan:paint(36,39),magenta:paint(35,39)}}function lineOf(text,line){return text.split(`
|
|
3
3
|
`)[line-1]??""}function codeFrame(d,c){let text;try{text=readFileSync(d.file,"utf-8")}catch{return""}let endLine=d.endLine??d.line,endColumn=d.endColumn??d.column,first=lineOf(text,d.line),last=lineOf(text,endLine),middle=d.line===endLine?first.slice(0,d.column-1)+c.magenta(first.slice(d.column-1,endColumn-1))+first.slice(endColumn-1):first.slice(0,d.column-1)+c.magenta([first.slice(d.column-1),...text.split(`
|
|
4
4
|
`).slice(d.line,endLine-1),last.slice(0,endColumn-1)].join(`
|
|
5
5
|
`))+last.slice(endColumn-1),before=d.line>1?`${lineOf(text,d.line-1)}
|
|
@@ -68,6 +68,6 @@ svelte-typecheck's own:
|
|
|
68
68
|
|
|
69
69
|
Exits 1 on an error, or a warning with --fail-on-warnings.`;async function main(argv){let values;try{values=parse(argv).values}catch(error){return console.error(`${error.message}
|
|
70
70
|
|
|
71
|
-
${HELP}`),1}if(values.help)return console.log(HELP),0;if(values.version){let{version}=await import("./shared-
|
|
71
|
+
${HELP}`),1}if(values.help)return console.log(HELP),0;if(values.version){let{version}=await import("./shared-9c39v7dt.js");return console.log(version),0}let format=formatOf(values.output),out=writer(format,(text)=>process.stdout.write(text),colors(colorFlag(values.color,values["no-color"]))),options={workspace:values.workspace??".",tsconfig:values["no-tsconfig"]?!1:values.tsconfig,ignore:values.ignore?.split(","),config:values.config,checker:values.checker??(values.tsgo||values["tsgo-experimental-api"]?"tsgo":void 0),components:values.components,outDir:values["out-dir"],declarations:!values["no-declarations"],svelte:values.svelte,diagnosticSources:values["diagnostic-sources"]?.split(",").map((source)=>source.trim()),compilerWarnings:parseCompilerWarnings(values["compiler-warnings"]),incremental:!values["no-incremental"]};if(values.changed||values.since)try{options.only=changedFiles(process.cwd(),values.since)}catch(error){return out.failure(error),1}let baselinePath=values.baseline&&resolve(values.baseline);if(values["update-baseline"]&&!baselinePath)return out.failure(Error("--update-baseline needs --baseline <file>")),1;if(values["update-baseline"]&&(values.changed||values.since))return out.failure(Error("--update-baseline takes every file's: drop --changed")),1;let baseline;if(baselinePath&&!values["update-baseline"])try{baseline=JSON.parse(readFileSync2(baselinePath,"utf-8"))}catch{return out.failure(Error(`No baseline at ${baselinePath}: write one with --update-baseline`)),1}let errorsOnly=values.threshold==="error",failOnWarnings=values["fail-on-warnings"],report=(result,watching)=>{if(result instanceof Error)return out.failure(result instanceof EmitError?Error(`${result.message}
|
|
72
72
|
This is a svelte-typecheck bug; please report it.`):result),1;if(baselinePath&&values["update-baseline"]){let written=createBaseline2(result.diagnostics,result.workspace);return writeFileSync(baselinePath,`${JSON.stringify(written,null,2)}
|
|
73
73
|
`),out.note(`Wrote ${result.diagnostics.length} diagnostics to ${baselinePath}`),0}let known=baseline?applyBaseline2(result.diagnostics,baseline,result.workspace):void 0,shown=known?known.diagnostics:result.diagnostics;out.start(result.workspace,watching&&!values.preserveWatchOutput);for(let d of shown)if(!errorsOnly||d.severity==="error")out.diagnostic(d,result.workspace);for(let f of result.failed)out.failure(Error(`${f.file}: failed to parse: ${f.message}`));let summary=summarize(shown,result.components);if(known?.known)out.note(`${known.known} more in the baseline, not shown`);if(known?.fixed)out.note(`${known.fixed} in the baseline are fixed: --update-baseline drops them`);if(result.skipped>0)out.note(`${result.skipped} more in files the changes don't reach, not shown`);return out.completion(summary,watching),summary.errors>0||result.failed.length>0||failOnWarnings&&summary.warnings>0?1:0};if(values.watch)return watch2(options,(result)=>report(result,!0)),new Promise(()=>{});try{return report(await typecheck2(options),!1)}catch(error){return report(error,!1)}}function formatOf(output){if(output&&OUTPUT_FORMATS.includes(output))return output;return process.env.CLAUDECODE==="1"?"machine":"human-verbose"}function parse(argv){return parseArgs({args:argv,options:{workspace:{type:"string"},output:{type:"string"},tsconfig:{type:"string"},"no-tsconfig":{type:"boolean",default:!1},ignore:{type:"string"},config:{type:"string"},"diagnostic-sources":{type:"string"},threshold:{type:"string"},"compiler-warnings":{type:"string"},"fail-on-warnings":{type:"boolean",default:!1},color:{type:"boolean",default:!1},"no-color":{type:"boolean",default:!1},tsgo:{type:"boolean",default:!1},incremental:{type:"boolean",default:!1},"no-incremental":{type:"boolean",default:!1},watch:{type:"boolean",default:!1},preserveWatchOutput:{type:"boolean",default:!1},"tsgo-experimental-api":{type:"boolean",default:!1},checker:{type:"string"},components:{type:"string",multiple:!0},"out-dir":{type:"string"},"no-declarations":{type:"boolean",default:!1},svelte:{type:"string"},changed:{type:"boolean",default:!1},baseline:{type:"string"},"update-baseline":{type:"boolean",default:!1},since:{type:"string"},help:{type:"boolean",short:"h",default:!1},version:{type:"boolean",short:"v",default:!1}}})}function parseCompilerWarnings(list){if(!list)return;let levels={};for(let entry of list.split(",")){let[code,level]=entry.trim().split(":");if(code&&(level==="ignore"||level==="error"))levels[code]=level}return levels}function colorFlag(on,off){if(on)return!0;if(off)return!1;return}process.exitCode=await main(process.argv.slice(2));
|
package/index.d.ts
CHANGED
|
@@ -1,145 +1,151 @@
|
|
|
1
|
+
// The package's public API, as consumers see it: the build copies this file
|
|
2
|
+
// as dist/index.d.ts, so it imports nothing and holds only declarations.
|
|
3
|
+
// tests/api.test.ts fails when an implementation's signature drifts from
|
|
4
|
+
// its declaration here.
|
|
5
|
+
|
|
1
6
|
/** A type checker that reads a tsconfig and prints errors as `tsc` does. */
|
|
2
7
|
export type Checker = "bun" | "tsrs" | "tsgo" | "tsc";
|
|
8
|
+
|
|
3
9
|
export interface TypecheckOptions {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
10
|
+
/** The project root the other paths resolve against. Default: `process.cwd()`. */
|
|
11
|
+
cwd?: string;
|
|
12
|
+
/** The project folder, relative to `cwd`. Default: `"."`. */
|
|
13
|
+
workspace?: string;
|
|
14
|
+
/**
|
|
15
|
+
* The tsconfig or jsconfig, relative to the workspace. With one, the
|
|
16
|
+
* components it includes are checked, and its TS and JS files' errors are
|
|
17
|
+
* reported too. Default: the nearest from the workspace up. `false`: none,
|
|
18
|
+
* so every component under the workspace, and only theirs.
|
|
19
|
+
*/
|
|
20
|
+
tsconfig?: string | false;
|
|
21
|
+
/**
|
|
22
|
+
* With no tsconfig: paths to skip, relative to the workspace, as
|
|
23
|
+
* svelte-check's `--ignore` (a prefix, or `**` at the start or end).
|
|
24
|
+
*/
|
|
25
|
+
ignore?: string[];
|
|
26
|
+
/** The svelte.config to read preprocessors from, relative to the workspace. Default: the nearest. */
|
|
27
|
+
config?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Default: the project's own TypeScript (`tsc`; native in TypeScript 7),
|
|
30
|
+
* then the first of `tsgo`, `tsrs` and `bun` that's installed.
|
|
31
|
+
*/
|
|
32
|
+
checker?: Checker;
|
|
33
|
+
/** Globs of the components to check, relative to the workspace, instead of the tsconfig's. */
|
|
34
|
+
components?: string[];
|
|
35
|
+
/** Where to write the generated code. Default: `node_modules/.cache/svelte-typecheck/<workspace>`. */
|
|
36
|
+
outDir?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Whether an import of a checked component resolves to its generated
|
|
39
|
+
* code (the default). With `false`, it resolves to the component's own
|
|
40
|
+
* `.svelte.d.ts`, as a library's generated declarations are.
|
|
41
|
+
*/
|
|
42
|
+
declarations?: boolean;
|
|
43
|
+
/** The Svelte package to check against. Default: `svelte`, resolved from `cwd`. */
|
|
44
|
+
svelte?: string;
|
|
45
|
+
/**
|
|
46
|
+
* What to report: `js` for type errors (in TS and JS), `svelte` for the
|
|
47
|
+
* compiler's warnings and errors. `css` is accepted, as svelte-check
|
|
48
|
+
* takes it, and reports nothing. Default: all.
|
|
49
|
+
*/
|
|
50
|
+
diagnosticSources?: DiagnosticSource[];
|
|
51
|
+
/** `error` reports errors only. Default: `warning`. */
|
|
52
|
+
threshold?: "warning" | "error";
|
|
53
|
+
/** Compiler warnings to drop (`ignore`) or report as errors, by code. */
|
|
54
|
+
compilerWarnings?: Record<string, "ignore" | "error">;
|
|
55
|
+
/**
|
|
56
|
+
* Keep the generated code between runs: rewrite only what changed, and
|
|
57
|
+
* let `tsc`, tsgo and tsrs reuse their last run. Default `true`.
|
|
58
|
+
*/
|
|
59
|
+
incremental?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Report only these files' diagnostics, and those of the files that
|
|
62
|
+
* import them, relative to `cwd`. The whole program is still checked.
|
|
63
|
+
* `--changed` and `--since` pass git's changed files.
|
|
64
|
+
*/
|
|
65
|
+
only?: string[];
|
|
60
66
|
}
|
|
67
|
+
|
|
61
68
|
/** A kind of check, as svelte-check's `--diagnostic-sources` names them. */
|
|
62
69
|
export type DiagnosticSource = "js" | "svelte" | "css";
|
|
70
|
+
|
|
63
71
|
/** An error or warning, at its line and column (both 1-based) in the source. */
|
|
64
72
|
export interface Diagnostic {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
73
|
+
/** An absolute path. */
|
|
74
|
+
file: string;
|
|
75
|
+
line: number;
|
|
76
|
+
column: number;
|
|
77
|
+
/** Where the range ends, when known. */
|
|
78
|
+
endLine?: number;
|
|
79
|
+
endColumn?: number;
|
|
80
|
+
severity: "error" | "warning";
|
|
81
|
+
/** `ts` or `js` for a type error (by the file's language), `svelte` for the compiler. */
|
|
82
|
+
source: "ts" | "js" | "svelte";
|
|
83
|
+
/** `TS2322`, or a compiler code such as `a11y_missing_attribute`. */
|
|
84
|
+
code: string;
|
|
85
|
+
message: string;
|
|
78
86
|
}
|
|
87
|
+
|
|
79
88
|
export interface TypecheckResult {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
checkerVersion?: string;
|
|
99
|
-
/** Milliseconds spent emitting, type-checking and compiling. */
|
|
100
|
-
timings: {
|
|
101
|
-
emit: number;
|
|
102
|
-
check: number;
|
|
103
|
-
compile: number;
|
|
104
|
-
};
|
|
89
|
+
diagnostics: Diagnostic[];
|
|
90
|
+
/** The workspace, as an absolute path. */
|
|
91
|
+
workspace: string;
|
|
92
|
+
/** The tsconfig used, if any. */
|
|
93
|
+
tsconfig?: string;
|
|
94
|
+
/** How many components were checked. */
|
|
95
|
+
components: number;
|
|
96
|
+
/** Diagnostics left out by `only`. */
|
|
97
|
+
skipped: number;
|
|
98
|
+
/** Errors in generated code, which map to no source. */
|
|
99
|
+
dropped: Diagnostic[];
|
|
100
|
+
/** Components that failed to parse. */
|
|
101
|
+
failed: { file: string; message: string }[];
|
|
102
|
+
checker: Checker;
|
|
103
|
+
/** The checker's version, when its package says. */
|
|
104
|
+
checkerVersion?: string;
|
|
105
|
+
/** Milliseconds spent emitting, type-checking and compiling. */
|
|
106
|
+
timings: { emit: number; check: number; compile: number };
|
|
105
107
|
}
|
|
108
|
+
|
|
106
109
|
/** A warning or error the Svelte compiler reports for a component. */
|
|
107
110
|
export interface CompilerDiagnostic {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
111
|
+
severity: "error" | "warning";
|
|
112
|
+
code: string;
|
|
113
|
+
message: string;
|
|
114
|
+
line: number;
|
|
115
|
+
column: number;
|
|
116
|
+
endLine?: number;
|
|
117
|
+
endColumn?: number;
|
|
115
118
|
}
|
|
119
|
+
|
|
116
120
|
/**
|
|
117
121
|
* Diagnostics a project accepts for now, to report only new ones. Each is
|
|
118
122
|
* known by its file, code, message and the text of its line, not the
|
|
119
123
|
* line's number, so an edit above it doesn't make it new.
|
|
120
124
|
*/
|
|
121
125
|
export interface Baseline {
|
|
122
|
-
|
|
123
|
-
|
|
126
|
+
version: 1;
|
|
127
|
+
diagnostics: BaselineEntry[];
|
|
124
128
|
}
|
|
129
|
+
|
|
125
130
|
export interface BaselineEntry {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
131
|
+
/** Relative to the workspace, `/`-separated. */
|
|
132
|
+
file: string;
|
|
133
|
+
code: string;
|
|
134
|
+
message: string;
|
|
135
|
+
/** The text of the diagnostic's line, trimmed. */
|
|
136
|
+
line: string;
|
|
137
|
+
/** How many such diagnostics there are. */
|
|
138
|
+
count: number;
|
|
134
139
|
}
|
|
140
|
+
|
|
135
141
|
/** What a baseline leaves of a run's diagnostics. */
|
|
136
142
|
export interface BaselineResult {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
+
/** The diagnostics the baseline doesn't have. */
|
|
144
|
+
diagnostics: Diagnostic[];
|
|
145
|
+
/** How many it has, and were left out. */
|
|
146
|
+
known: number;
|
|
147
|
+
/** How many it has that the run no longer reports. */
|
|
148
|
+
fixed: number;
|
|
143
149
|
}
|
|
144
150
|
|
|
145
151
|
/**
|
|
@@ -151,27 +157,40 @@ export interface BaselineResult {
|
|
|
151
157
|
* each error maps back to its `.svelte` line. Errors in generated code are
|
|
152
158
|
* dropped. Svelte's compiler reports its warnings in the same pass.
|
|
153
159
|
*/
|
|
154
|
-
export declare function typecheck(
|
|
160
|
+
export declare function typecheck(
|
|
161
|
+
options?: TypecheckOptions,
|
|
162
|
+
): Promise<TypecheckResult>;
|
|
155
163
|
|
|
156
164
|
/**
|
|
157
165
|
* Checks, then checks again whenever a component, TS or JS file, or a
|
|
158
166
|
* config under the workspace changes, as svelte-check `--watch` does. Runs
|
|
159
167
|
* are incremental. Returns a function that stops watching.
|
|
160
168
|
*/
|
|
161
|
-
export declare function watch(
|
|
169
|
+
export declare function watch(
|
|
170
|
+
options: TypecheckOptions,
|
|
171
|
+
onResult: (result: TypecheckResult | Error) => void,
|
|
172
|
+
): () => void;
|
|
162
173
|
|
|
163
174
|
/**
|
|
164
175
|
* What `svelte/compiler` reports for a component (a11y, unused CSS, invalid
|
|
165
176
|
* markup), without generating code. `<!-- svelte-ignore -->` applies, as in
|
|
166
177
|
* a build. A compile error comes back as one `error`.
|
|
167
178
|
*/
|
|
168
|
-
export declare function compilerDiagnostics(
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
/** A run's diagnostics less the baseline's: what's new since it. */
|
|
174
|
-
export declare function applyBaseline(diagnostics: Diagnostic[], baseline: Baseline, workspace: string): BaselineResult;
|
|
179
|
+
export declare function compilerDiagnostics(
|
|
180
|
+
source: string,
|
|
181
|
+
filename: string,
|
|
182
|
+
options?: { cwd?: string; svelte?: string },
|
|
183
|
+
): CompilerDiagnostic[];
|
|
175
184
|
|
|
176
185
|
/** A baseline of a run's diagnostics, sorted so it diffs well. */
|
|
177
|
-
export declare function createBaseline(
|
|
186
|
+
export declare function createBaseline(
|
|
187
|
+
diagnostics: Diagnostic[],
|
|
188
|
+
workspace: string,
|
|
189
|
+
): Baseline;
|
|
190
|
+
|
|
191
|
+
/** A run's diagnostics less the baseline's: what's new since it. */
|
|
192
|
+
export declare function applyBaseline(
|
|
193
|
+
diagnostics: Diagnostic[],
|
|
194
|
+
baseline: Baseline,
|
|
195
|
+
workspace: string,
|
|
196
|
+
): BaselineResult;
|
package/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./shared-
|
|
1
|
+
import"./shared-58j2f7by.js";import{compilerDiagnostics2,typecheck2,watch2,createBaseline2,applyBaseline2}from"./shared-7zm6g9d3.js";export{applyBaseline2 as applyBaseline,compilerDiagnostics2 as compilerDiagnostics,createBaseline2 as createBaseline,typecheck2 as typecheck,watch2 as watch};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svelte-typecheck",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "A drop-in svelte-check replacement that checks with tsc, tsgo, tsrs or bun check. Up to 11x faster, zero dependencies.",
|
|
6
6
|
"author": "Eric Liu (https://github.com/metonym)",
|
|
@@ -21,9 +21,6 @@
|
|
|
21
21
|
"engines": {
|
|
22
22
|
"node": ">=22"
|
|
23
23
|
},
|
|
24
|
-
"peerDependencies": {
|
|
25
|
-
"svelte": "^3.59.0 || ^4.0.0 || ^5.0.0"
|
|
26
|
-
},
|
|
27
24
|
"repository": {
|
|
28
25
|
"type": "git",
|
|
29
26
|
"url": "git+https://github.com/metonym/svelte-typecheck.git"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{version2}from"./shared-af1r7qrc.js";import{spawn}from"node:child_process";import{createHash}from"node:crypto";import{existsSync as existsSync4,readFileSync as readFileSync4,statSync}from"node:fs";import{mkdir,readFile,rm,writeFile}from"node:fs/promises";import{createRequire as createRequire4}from"node:module";import{basename as basename3,dirname as dirname5,join as join6,relative as relative2,resolve as resolve3,sep as sep2}from"node:path";import{fileURLToPath}from"node:url";var REGEX_LANG_ATTRIBUTE=/<!--[\s\S]*?-->|<script\s+(?:[^>]*|(?:[^=>'"/]+=(?:"[^"]*"|'[^']*'|[^>\s]+)\s+)*)lang=(["'])?([^"' >]+)\1[^>]*>/y;function withoutByteOrderMark(source){return source.charCodeAt(0)===65279?source.slice(1):source}function isDigit(code){return code>=48&&code<=57}function isWhitespace(code){if(code===32||code<=13&&code>=9)return!0;if(code<160)return!1;return code===160||code===5760||code>=8192&&code<=8202||code===8232||code===8233||code===8239||code===8287||code===12288||code===65279}function skipWhitespace(source,from){let index=from;while(index<source.length&&isWhitespace(source.charCodeAt(index)))index++;return index}function isTypeScript(source){let index=source.indexOf("<");while(index!==-1){let next=source.charCodeAt(index+1);if(next===33||next===115){REGEX_LANG_ATTRIBUTE.lastIndex=index;let match=REGEX_LANG_ATTRIBUTE.exec(source);if(match){if(next===115)return match[2]==="ts";index=source.indexOf("<",REGEX_LANG_ATTRIBUTE.lastIndex);continue}}index=source.indexOf("<",index+1)}return!1}function closingScriptTag(source,from){let close=source.indexOf("</script",from);while(close!==-1){if(source.charCodeAt(skipWhitespace(source,close+8))===GT)return close;close=source.indexOf("</script",close+8)}return-1}function closingScriptTagEnd(source,close){return skipWhitespace(source,close+8)+1}var VOID_ELEMENTS=new Set("area base br col command embed hr img input keygen link meta param source track wbr".split(" "));function isVoid(name){return VOID_ELEMENTS.has(name)||name.charCodeAt(0)===33&&name.toLowerCase()==="!doctype"}function styleContentEnd(source,from){let index=from;while(index<source.length){let code=source.charCodeAt(index);if(code===47&&source.charCodeAt(index+1)===42){let end=source.indexOf("*/",index+2);index=end===-1?source.length:end+2}else if(code===34||code===39){index++;while(index<source.length){let next=source.charCodeAt(index);if(next===code||next===10)break;index+=next===92?2:1}index++}else if(code===60&&source.startsWith("</style",index))break;else index++}return Math.min(index,source.length)}var DOUBLE_QUOTE=34,SINGLE_QUOTE=39,SLASH=47,EQUALS=61,GT=62,isQuote=(code)=>code===DOUBLE_QUOTE||code===SINGLE_QUOTE;function nameEnd(source,from,isAttribute){let i=from;for(;i<source.length;i++){let code=source.charCodeAt(i);if(isWhitespace(code)||code===SLASH||code===GT)break;if(isAttribute&&(isQuote(code)||code===EQUALS))break}return i}function endsUnquotedValue(source,i){let code=source.charCodeAt(i);return isWhitespace(code)||isQuote(code)||code===EQUALS||code===60||code===GT||code===96||code===SLASH&&source.charCodeAt(i+1)===GT}var STATEMENT_START=0,OPERATOR=1,BLOCK_OPENER=2,VALUE=3,PAREN=0,HEAD_PAREN=1,BLOCK=2,OBJECT=3,TEMPLATE=4,HEAD=4,IMPORT=5,EXPORT=6,REQUIRE=7,KEYWORDS={await:OPERATOR,case:OPERATOR,default:OPERATOR,delete:OPERATOR,extends:OPERATOR,in:OPERATOR,instanceof:OPERATOR,new:OPERATOR,of:OPERATOR,return:OPERATOR,throw:OPERATOR,typeof:OPERATOR,void:OPERATOR,yield:OPERATOR,do:BLOCK_OPENER,else:BLOCK_OPENER,finally:BLOCK_OPENER,try:BLOCK_OPENER,for:HEAD,if:HEAD,while:HEAD,with:HEAD,import:IMPORT,export:EXPORT,require:REQUIRE},LONGEST_KEYWORD=10,KEYWORDS_BY_KEY=Array(keywordKey(128,0)).fill(null);for(let entry of Object.entries(KEYWORDS)){let key=keywordKey(entry[0].charCodeAt(0),entry[0].length),entries=KEYWORDS_BY_KEY[key]??[];entries.push(entry),KEYWORDS_BY_KEY[key]=entries}function keywordKey(first,length){return first*(LONGEST_KEYWORD+1)+length}function wordKind(source,start,end){let first=source.charCodeAt(start);if(first>=128||end-start>LONGEST_KEYWORD)return VALUE;let key=keywordKey(first,end-start),entries=KEYWORDS_BY_KEY[key];if(entries===null)return VALUE;for(let i=0;i<entries.length;i++)if(source.startsWith(entries[i][0],start))return entries[i][1];return VALUE}var ASCII_WORD=new Uint8Array(128);for(let range of["az","AZ","09","__","$$","\\\\"])for(let code=range.charCodeAt(0);code<=range.charCodeAt(1);code++)ASCII_WORD[code]=1;function isWordCode(code){return code>=128?!isWhitespace(code):ASCII_WORD[code]===1}function scan(source,localExports,parseAt,exportLists=!1){tokenize(source,lastStatementKeyword(source,localExports,exportLists),localExports,exportLists,parseAt,void 0,void 0)}function tokenize(source,last,localExports,exportLists,parseAt,literal,call){let stack=[],pos=source.startsWith("#!")?lineEnd(source,2):0,prev=STATEMENT_START,afterDot=!1,head=!1,decorators=-1,statementEnd=()=>{if(prev=STATEMENT_START,stack.length===0)decorators=-1};while(pos<=last){let code=source.charCodeAt(pos);if(code===32||code===10||isWhitespace(code)){pos++;continue}if(code===47){let end=commentEnd(source,pos);if(end!==-1){pos=end;continue}}let wasAfterDot=afterDot,wasHead=head;if(afterDot=!1,head=!1,isWordCode(code)||code===35){let start=pos;pos=wordEnd(source,pos+1);let kind=wasAfterDot?VALUE:wordKind(source,start,pos);if(call!==void 0&&(kind===IMPORT||kind===REQUIRE))call(start,prev===STATEMENT_START||prev===VALUE);if(parseAt!==void 0&&stack.length===0&&(kind===EXPORT?localExports||isReexport(source,pos,exportLists):kind===IMPORT&&isImportDeclaration(source,pos)))pos=Math.max(pos,parseAt(decorators!==-1&&kind===EXPORT?decorators:start,start)),statementEnd();else if(kind===EXPORT)prev=BLOCK_OPENER;else if(kind===HEAD)head=!0,prev=VALUE;else prev=kind===OPERATOR||kind===BLOCK_OPENER?kind:VALUE;continue}switch(pos++,code){case 34:case 39:{let start=pos-1;pos=stringEnd(source,pos,code),literal?.(start,pos,!1),prev=VALUE;break}case 96:{let start=pos;pos=templateEnd(source,pos,stack),literal?.(start,quasiEnd(source,pos),!0),prev=source.charCodeAt(pos-1)===123?OPERATOR:VALUE;break}case 47:{let end=prev===VALUE?-1:regexEnd(source,pos);if(end===-1)prev=OPERATOR;else pos=wordCodesEnd(source,end),prev=VALUE;break}case 40:stack.push(wasHead?HEAD_PAREN:PAREN),prev=OPERATOR;break;case 41:prev=stack.pop()===HEAD_PAREN?BLOCK_OPENER:VALUE;break;case 123:stack.push(prev===OPERATOR?OBJECT:BLOCK),prev=STATEMENT_START;break;case 125:{let open=stack.pop();if(open===TEMPLATE){let start=pos;pos=templateEnd(source,pos,stack),literal?.(start,quasiEnd(source,pos),!0),prev=source.charCodeAt(pos-1)===123?OPERATOR:VALUE}else if(open===OBJECT)prev=VALUE;else statementEnd();break}case 59:statementEnd();break;case 44:prev=stack[stack.length-1]===OBJECT?STATEMENT_START:OPERATOR;break;case 93:prev=VALUE;break;case 46:if(isDigit(source.charCodeAt(pos)))pos=wordCodesEnd(source,pos),prev=VALUE;else if(source.startsWith("..",pos))pos+=2,prev=OPERATOR;else afterDot=!0,prev=OPERATOR;break;case 63:if(source.charCodeAt(pos)===46&&!isDigit(source.charCodeAt(pos+1)))pos++,afterDot=!0;prev=OPERATOR;break;case 33:prev=prev===VALUE&&!isWhitespace(source.charCodeAt(pos-2))?VALUE:OPERATOR;break;case 43:case 45:if(source.charCodeAt(pos)===code&&prev===VALUE)pos++;else prev=OPERATOR;break;case 61:if(prev=source.charCodeAt(pos)===62?BLOCK_OPENER:OPERATOR,prev===BLOCK_OPENER)pos++;break;case 64:if(stack.length===0&&decorators===-1)decorators=pos-1;prev=OPERATOR;break;default:prev=OPERATOR}}}function closingBracket(source,from,word){let length=source.length,stack=[],pos=from,prev=OPERATOR,afterDot=!1;while(pos<length){let code=source.charCodeAt(pos);if(code===32||code===10||isWhitespace(code)){pos++;continue}if(code===47){let end=commentEnd(source,pos);if(end!==-1){pos=end;continue}}let wasAfterDot=afterDot;if(afterDot=!1,isWordCode(code)||code===35){let start=pos;if(pos=wordEnd(source,pos+1),!wasAfterDot&&word?.(start,pos))return-1;let kind=wasAfterDot?VALUE:wordKind(source,start,pos);prev=kind===OPERATOR||kind===BLOCK_OPENER||kind===HEAD?OPERATOR:VALUE;continue}switch(pos++,code){case 34:case 39:pos=stringEnd(source,pos,code),prev=VALUE;break;case 96:pos=templateEnd(source,pos,stack),prev=source.charCodeAt(pos-1)===123?OPERATOR:VALUE;break;case 47:{let end=prev===VALUE?-1:regexEnd(source,pos);if(end===-1)prev=OPERATOR;else pos=wordCodesEnd(source,end),prev=VALUE;break}case 40:stack.push(PAREN),prev=OPERATOR;break;case 41:if(stack.length===0)return pos-1;stack.pop(),prev=VALUE;break;case 123:stack.push(prev===OPERATOR?OBJECT:BLOCK),prev=STATEMENT_START;break;case 125:{if(stack.length===0)return pos-1;let open=stack.pop();if(open===TEMPLATE)pos=templateEnd(source,pos,stack),prev=source.charCodeAt(pos-1)===123?OPERATOR:VALUE;else prev=open===OBJECT?VALUE:STATEMENT_START;break}case 93:prev=VALUE;break;case 46:if(isDigit(source.charCodeAt(pos)))pos=wordCodesEnd(source,pos),prev=VALUE;else if(source.startsWith("..",pos))pos+=2,prev=OPERATOR;else afterDot=!0,prev=OPERATOR;break;case 63:if(source.charCodeAt(pos)===46&&!isDigit(source.charCodeAt(pos+1)))pos++,afterDot=!0;prev=OPERATOR;break;case 33:prev=prev===VALUE&&!isWhitespace(source.charCodeAt(pos-2))?VALUE:OPERATOR;break;case 43:case 45:if(source.charCodeAt(pos)===code&&prev===VALUE)pos++;else prev=OPERATOR;break;case 61:if(source.charCodeAt(pos)===62)pos++;prev=OPERATOR;break;default:prev=OPERATOR}}return length}function isLineBreak(code){return code===10||code===13||code===8232||code===8233}function lineEnd(source,pos){for(let i=pos;i<source.length;i++)if(isLineBreak(source.charCodeAt(i)))return i;return source.length}function commentEnd(source,slash){let next=source.charCodeAt(slash+1);if(next===47)return lineEnd(source,slash+2);if(next!==42)return-1;let end=source.indexOf("*/",slash+2);return end===-1?source.length:end+2}function wordEnd(source,pos){let i=pos;while(i<source.length){let code=source.charCodeAt(i);if(code===92)i+=2;else if(isWordCode(code))i++;else break}return i}function wordCodesEnd(source,pos){let i=pos;while(i<source.length&&isWordCode(source.charCodeAt(i)))i++;return i}function stringEnd(source,pos,quote){for(let i=pos;i<source.length;i++){let code=source.charCodeAt(i);if(code===quote)return i+1;if(code===92)i+=source.startsWith(`\r
|
|
1
|
+
import{version2}from"./shared-58j2f7by.js";import{spawn}from"node:child_process";import{createHash}from"node:crypto";import{existsSync as existsSync4,readFileSync as readFileSync4,statSync}from"node:fs";import{mkdir,readFile,rm,writeFile}from"node:fs/promises";import{createRequire as createRequire4}from"node:module";import{basename as basename3,dirname as dirname5,join as join6,relative as relative2,resolve as resolve3,sep as sep2}from"node:path";import{fileURLToPath}from"node:url";var REGEX_LANG_ATTRIBUTE=/<!--[\s\S]*?-->|<script\s+(?:[^>]*|(?:[^=>'"/]+=(?:"[^"]*"|'[^']*'|[^>\s]+)\s+)*)lang=(["'])?([^"' >]+)\1[^>]*>/y;function withoutByteOrderMark(source){return source.charCodeAt(0)===65279?source.slice(1):source}function isDigit(code){return code>=48&&code<=57}function isWhitespace(code){if(code===32||code<=13&&code>=9)return!0;if(code<160)return!1;return code===160||code===5760||code>=8192&&code<=8202||code===8232||code===8233||code===8239||code===8287||code===12288||code===65279}function skipWhitespace(source,from){let index=from;while(index<source.length&&isWhitespace(source.charCodeAt(index)))index++;return index}function isTypeScript(source){let index=source.indexOf("<");while(index!==-1){let next=source.charCodeAt(index+1);if(next===33||next===115){REGEX_LANG_ATTRIBUTE.lastIndex=index;let match=REGEX_LANG_ATTRIBUTE.exec(source);if(match){if(next===115)return match[2]==="ts";index=source.indexOf("<",REGEX_LANG_ATTRIBUTE.lastIndex);continue}}index=source.indexOf("<",index+1)}return!1}function closingScriptTag(source,from){let close=source.indexOf("</script",from);while(close!==-1){if(source.charCodeAt(skipWhitespace(source,close+8))===GT)return close;close=source.indexOf("</script",close+8)}return-1}function closingScriptTagEnd(source,close){return skipWhitespace(source,close+8)+1}var VOID_ELEMENTS=new Set("area base br col command embed hr img input keygen link meta param source track wbr".split(" "));function isVoid(name){return VOID_ELEMENTS.has(name)||name.charCodeAt(0)===33&&name.toLowerCase()==="!doctype"}function styleContentEnd(source,from){let index=from;while(index<source.length){let code=source.charCodeAt(index);if(code===47&&source.charCodeAt(index+1)===42){let end=source.indexOf("*/",index+2);index=end===-1?source.length:end+2}else if(code===34||code===39){index++;while(index<source.length){let next=source.charCodeAt(index);if(next===code||next===10)break;index+=next===92?2:1}index++}else if(code===60&&source.startsWith("</style",index))break;else index++}return Math.min(index,source.length)}var DOUBLE_QUOTE=34,SINGLE_QUOTE=39,SLASH=47,EQUALS=61,GT=62,isQuote=(code)=>code===DOUBLE_QUOTE||code===SINGLE_QUOTE;function nameEnd(source,from,isAttribute){let i=from;for(;i<source.length;i++){let code=source.charCodeAt(i);if(isWhitespace(code)||code===SLASH||code===GT)break;if(isAttribute&&(isQuote(code)||code===EQUALS))break}return i}function endsUnquotedValue(source,i){let code=source.charCodeAt(i);return isWhitespace(code)||isQuote(code)||code===EQUALS||code===60||code===GT||code===96||code===SLASH&&source.charCodeAt(i+1)===GT}var STATEMENT_START=0,OPERATOR=1,BLOCK_OPENER=2,VALUE=3,PAREN=0,HEAD_PAREN=1,BLOCK=2,OBJECT=3,TEMPLATE=4,HEAD=4,IMPORT=5,EXPORT=6,REQUIRE=7,KEYWORDS={await:OPERATOR,case:OPERATOR,default:OPERATOR,delete:OPERATOR,extends:OPERATOR,in:OPERATOR,instanceof:OPERATOR,new:OPERATOR,of:OPERATOR,return:OPERATOR,throw:OPERATOR,typeof:OPERATOR,void:OPERATOR,yield:OPERATOR,do:BLOCK_OPENER,else:BLOCK_OPENER,finally:BLOCK_OPENER,try:BLOCK_OPENER,for:HEAD,if:HEAD,while:HEAD,with:HEAD,import:IMPORT,export:EXPORT,require:REQUIRE},LONGEST_KEYWORD=10,KEYWORDS_BY_KEY=Array(keywordKey(128,0)).fill(null);for(let entry of Object.entries(KEYWORDS)){let key=keywordKey(entry[0].charCodeAt(0),entry[0].length),entries=KEYWORDS_BY_KEY[key]??[];entries.push(entry),KEYWORDS_BY_KEY[key]=entries}function keywordKey(first,length){return first*(LONGEST_KEYWORD+1)+length}function wordKind(source,start,end){let first=source.charCodeAt(start);if(first>=128||end-start>LONGEST_KEYWORD)return VALUE;let key=keywordKey(first,end-start),entries=KEYWORDS_BY_KEY[key];if(entries===null)return VALUE;for(let i=0;i<entries.length;i++)if(source.startsWith(entries[i][0],start))return entries[i][1];return VALUE}var ASCII_WORD=new Uint8Array(128);for(let range of["az","AZ","09","__","$$","\\\\"])for(let code=range.charCodeAt(0);code<=range.charCodeAt(1);code++)ASCII_WORD[code]=1;function isWordCode(code){return code>=128?!isWhitespace(code):ASCII_WORD[code]===1}function scan(source,localExports,parseAt,exportLists=!1){tokenize(source,lastStatementKeyword(source,localExports,exportLists),localExports,exportLists,parseAt,void 0,void 0)}function tokenize(source,last,localExports,exportLists,parseAt,literal,call){let stack=[],pos=source.startsWith("#!")?lineEnd(source,2):0,prev=STATEMENT_START,afterDot=!1,head=!1,decorators=-1,statementEnd=()=>{if(prev=STATEMENT_START,stack.length===0)decorators=-1};while(pos<=last){let code=source.charCodeAt(pos);if(code===32||code===10||isWhitespace(code)){pos++;continue}if(code===47){let end=commentEnd(source,pos);if(end!==-1){pos=end;continue}}let wasAfterDot=afterDot,wasHead=head;if(afterDot=!1,head=!1,isWordCode(code)||code===35){let start=pos;pos=wordEnd(source,pos+1);let kind=wasAfterDot?VALUE:wordKind(source,start,pos);if(call!==void 0&&(kind===IMPORT||kind===REQUIRE))call(start,prev===STATEMENT_START||prev===VALUE);if(parseAt!==void 0&&stack.length===0&&(kind===EXPORT?localExports||isReexport(source,pos,exportLists):kind===IMPORT&&isImportDeclaration(source,pos)))pos=Math.max(pos,parseAt(decorators!==-1&&kind===EXPORT?decorators:start,start)),statementEnd();else if(kind===EXPORT)prev=BLOCK_OPENER;else if(kind===HEAD)head=!0,prev=VALUE;else prev=kind===OPERATOR||kind===BLOCK_OPENER?kind:VALUE;continue}switch(pos++,code){case 34:case 39:{let start=pos-1;pos=stringEnd(source,pos,code),literal?.(start,pos,!1),prev=VALUE;break}case 96:{let start=pos;pos=templateEnd(source,pos,stack),literal?.(start,quasiEnd(source,pos),!0),prev=source.charCodeAt(pos-1)===123?OPERATOR:VALUE;break}case 47:{let end=prev===VALUE?-1:regexEnd(source,pos);if(end===-1)prev=OPERATOR;else pos=wordCodesEnd(source,end),prev=VALUE;break}case 40:stack.push(wasHead?HEAD_PAREN:PAREN),prev=OPERATOR;break;case 41:prev=stack.pop()===HEAD_PAREN?BLOCK_OPENER:VALUE;break;case 123:stack.push(prev===OPERATOR?OBJECT:BLOCK),prev=STATEMENT_START;break;case 125:{let open=stack.pop();if(open===TEMPLATE){let start=pos;pos=templateEnd(source,pos,stack),literal?.(start,quasiEnd(source,pos),!0),prev=source.charCodeAt(pos-1)===123?OPERATOR:VALUE}else if(open===OBJECT)prev=VALUE;else statementEnd();break}case 59:statementEnd();break;case 44:prev=stack[stack.length-1]===OBJECT?STATEMENT_START:OPERATOR;break;case 93:prev=VALUE;break;case 46:if(isDigit(source.charCodeAt(pos)))pos=wordCodesEnd(source,pos),prev=VALUE;else if(source.startsWith("..",pos))pos+=2,prev=OPERATOR;else afterDot=!0,prev=OPERATOR;break;case 63:if(source.charCodeAt(pos)===46&&!isDigit(source.charCodeAt(pos+1)))pos++,afterDot=!0;prev=OPERATOR;break;case 33:prev=prev===VALUE&&!isWhitespace(source.charCodeAt(pos-2))?VALUE:OPERATOR;break;case 43:case 45:if(source.charCodeAt(pos)===code&&prev===VALUE)pos++;else prev=OPERATOR;break;case 61:if(prev=source.charCodeAt(pos)===62?BLOCK_OPENER:OPERATOR,prev===BLOCK_OPENER)pos++;break;case 64:if(stack.length===0&&decorators===-1)decorators=pos-1;prev=OPERATOR;break;default:prev=OPERATOR}}}function closingBracket(source,from,word){let length=source.length,stack=[],pos=from,prev=OPERATOR,afterDot=!1;while(pos<length){let code=source.charCodeAt(pos);if(code===32||code===10||isWhitespace(code)){pos++;continue}if(code===47){let end=commentEnd(source,pos);if(end!==-1){pos=end;continue}}let wasAfterDot=afterDot;if(afterDot=!1,isWordCode(code)||code===35){let start=pos;if(pos=wordEnd(source,pos+1),!wasAfterDot&&word?.(start,pos))return-1;let kind=wasAfterDot?VALUE:wordKind(source,start,pos);prev=kind===OPERATOR||kind===BLOCK_OPENER||kind===HEAD?OPERATOR:VALUE;continue}switch(pos++,code){case 34:case 39:pos=stringEnd(source,pos,code),prev=VALUE;break;case 96:pos=templateEnd(source,pos,stack),prev=source.charCodeAt(pos-1)===123?OPERATOR:VALUE;break;case 47:{let end=prev===VALUE?-1:regexEnd(source,pos);if(end===-1)prev=OPERATOR;else pos=wordCodesEnd(source,end),prev=VALUE;break}case 40:stack.push(PAREN),prev=OPERATOR;break;case 41:if(stack.length===0)return pos-1;stack.pop(),prev=VALUE;break;case 123:stack.push(prev===OPERATOR?OBJECT:BLOCK),prev=STATEMENT_START;break;case 125:{if(stack.length===0)return pos-1;let open=stack.pop();if(open===TEMPLATE)pos=templateEnd(source,pos,stack),prev=source.charCodeAt(pos-1)===123?OPERATOR:VALUE;else prev=open===OBJECT?VALUE:STATEMENT_START;break}case 93:prev=VALUE;break;case 46:if(isDigit(source.charCodeAt(pos)))pos=wordCodesEnd(source,pos),prev=VALUE;else if(source.startsWith("..",pos))pos+=2,prev=OPERATOR;else afterDot=!0,prev=OPERATOR;break;case 63:if(source.charCodeAt(pos)===46&&!isDigit(source.charCodeAt(pos+1)))pos++,afterDot=!0;prev=OPERATOR;break;case 33:prev=prev===VALUE&&!isWhitespace(source.charCodeAt(pos-2))?VALUE:OPERATOR;break;case 43:case 45:if(source.charCodeAt(pos)===code&&prev===VALUE)pos++;else prev=OPERATOR;break;case 61:if(source.charCodeAt(pos)===62)pos++;prev=OPERATOR;break;default:prev=OPERATOR}}return length}function isLineBreak(code){return code===10||code===13||code===8232||code===8233}function lineEnd(source,pos){for(let i=pos;i<source.length;i++)if(isLineBreak(source.charCodeAt(i)))return i;return source.length}function commentEnd(source,slash){let next=source.charCodeAt(slash+1);if(next===47)return lineEnd(source,slash+2);if(next!==42)return-1;let end=source.indexOf("*/",slash+2);return end===-1?source.length:end+2}function wordEnd(source,pos){let i=pos;while(i<source.length){let code=source.charCodeAt(i);if(code===92)i+=2;else if(isWordCode(code))i++;else break}return i}function wordCodesEnd(source,pos){let i=pos;while(i<source.length&&isWordCode(source.charCodeAt(i)))i++;return i}function stringEnd(source,pos,quote){for(let i=pos;i<source.length;i++){let code=source.charCodeAt(i);if(code===quote)return i+1;if(code===92)i+=source.startsWith(`\r
|
|
2
2
|
`,i+1)?2:1;else if(code===10||code===13)return i}return source.length}function templateEnd(source,pos,stack){for(let i=pos;i<source.length;i++){let code=source.charCodeAt(i);if(code===96)return i+1;if(code===92)i++;else if(code===36&&source.charCodeAt(i+1)===123)return stack.push(TEMPLATE),i+2}return source.length}function quasiEnd(source,pos){let code=source.charCodeAt(pos-1);if(code===96)return pos-1;if(code===123&&source.charCodeAt(pos-2)===36)return pos-2;return pos}function regexEnd(source,pos){let inClass=!1;for(let i=pos;i<source.length;i++){let code=source.charCodeAt(i);if(isLineBreak(code))return-1;if(code===92)i++;else if(code===91)inClass=!0;else if(code===93)inClass=!1;else if(code===47&&!inClass)return i+1}return-1}function skipTrivia(source,pos){let i=pos;while(i<source.length){let code=source.charCodeAt(i);if(isWhitespace(code)){i++;continue}let end=code===47?commentEnd(source,i):-1;if(end===-1)return i;i=end}return source.length}function isWordAt(source,pos,word){return source.charCodeAt(pos)===word.charCodeAt(0)&&source.startsWith(word,pos)&&!isWordCode(source.charCodeAt(pos+word.length))}function isImportDeclaration(source,pos){let code=source.charCodeAt(skipTrivia(source,pos));return code!==40&&code!==46}function isReexport(source,pos,lists){let i=skipTrivia(source,pos);if(isWordAt(source,i,"import"))return!0;if(isWordAt(source,i,"type"))i=skipTrivia(source,i+4);let code=source.charCodeAt(i);if(code===42)return!0;if(code!==123)return!1;if(lists)return!0;for(i++;i<source.length;i++){let inner=source.charCodeAt(i);if(inner===125)break;if(inner===34||inner===39)i=stringEnd(source,i+1,inner)-1;else if(inner===47)i=Math.max(i,skipTrivia(source,i)-1)}return isWordAt(source,skipTrivia(source,i+1),"from")}var STATEMENT_KEYWORD=/import|export/g;function lastStatementKeyword(source,localExports,exportLists){let last=-1;STATEMENT_KEYWORD.lastIndex=0;for(let match=STATEMENT_KEYWORD.exec(source);match!==null;match=STATEMENT_KEYWORD.exec(source)){let start=match.index,end=start+6;if(!isWordCode(source.charCodeAt(start-1))&&!isWordCode(source.charCodeAt(end))&&(source.charCodeAt(start)===105?isImportDeclaration(source,end):localExports||isReexport(source,end,exportLists)))last=start}return last}var AUTOCLOSING_CHILDREN={li:["li"],dt:["dt","dd"],dd:["dt","dd"],p:"address article aside blockquote div dl fieldset footer form h1 h2 h3 h4 h5 h6 header hgroup hr main menu nav ol p pre section table ul".split(" "),rt:["rt","rp"],rp:["rt","rp"],optgroup:["optgroup"],option:["option","optgroup"],thead:["tbody","tfoot"],tbody:["tbody","tfoot"],tfoot:["tbody"],tr:["tr","tbody"],td:["td","th","tr"],th:["td","th","tr"]};function closingTagOmitted(current,next){return Object.hasOwn(AUTOCLOSING_CHILDREN,current)&&AUTOCLOSING_CHILDREN[current].includes(next)}var BLOCK2="{",LT=60,GT2=62,SLASH2=47,EQUALS2=61,BRACE=123,REGEX_CLOSING_STYLE_TAG_END=/\s*>/y,REGEX_CLOSING_TEXTAREA=/<\/textarea(\s[^>]*)?>/iy,SECTION_TAG_NAMES=["cript","tyle","velte:options"],CLOSING_OPTIONS_TAG="</svelte:options";function lexComponent2(input){let source=withoutByteOrderMark(input).trimEnd();return lex(source,isTypeScript(source),null)}function topLevelTags(source){let found={tags:[],comments:[]};return lex(source,!1,found),found}function lex(source,typescript,found){let component={typescript,instance:null,module:null,css:null,options:null},last=lastSectionTag(source),stack=[],i=0;while(i<=last){let code=source.charCodeAt(i);if(code===LT)i=readTag(source,i,stack,component,found);else if(code===BRACE)i=readMustache(source,i,stack);else i++}return component}function lastSectionTag(source){let last=-1,i=source.indexOf("<s");while(i!==-1){let end=sectionTagNameEnd(source,i+2);if(end!==-1){let code=source.charCodeAt(end);if(end===source.length||isWhitespace(code)||code===SLASH2||code===GT2)last=i}i=source.indexOf("<s",i+2)}return last}function sectionTagNameEnd(source,from){for(let name of SECTION_TAG_NAMES)if(source.startsWith(name,from))return from+name.length;return-1}function expressionEnd(source,from){return Math.min(closingBracket(source,from)+1,source.length)}function readMustache(source,start,stack){let i=skipWhitespace(source,start+1),code=source.charCodeAt(i),next=source.charCodeAt(i+1);if(code===35||code===58||code===64||code===SLASH2&&next!==SLASH2&&next!==42){i++;while(i<source.length){let letter=source.charCodeAt(i);if(letter<97||letter>122)break;i++}if(code===35)stack.push(BLOCK2);else if(code===SLASH2){let open=stack.lastIndexOf(BLOCK2);if(open!==-1)stack.length=open}}return expressionEnd(source,i)}function readTag(source,start,stack,component,found){if(source.startsWith("!--",start+1)){let close=source.indexOf("-->",start+4),end=close===-1?source.length:close+3;if(found&&stack.length===0)found.comments.push(start,end);return end}if(source.charCodeAt(start+1)===SLASH2){let nameStart=start+2,name=source.slice(nameStart,nameEnd(source,nameStart,!1)),open=stack.lastIndexOf(name);if(open!==-1)stack.length=open;return eatGreaterThan(source,skipWhitespace(source,nameStart+name.length))}let name=source.slice(start+1,nameEnd(source,start+1,!1)),i=skipWhitespace(source,start+1+name.length),parent=stack[stack.length-1];if(parent!==void 0&&closingTagOmitted(parent,name))stack.pop();let topLevel=stack.length===0;if(found&&topLevel&&(name==="script"||name==="style"||name==="svelte:options"))found.tags.push(start);if(topLevel&&(name==="script"||name==="style")){let attributes=[];if(i=eatGreaterThan(source,readStaticAttributes(source,i,attributes)),name==="script"){let script=readScript(source,start,i,attributes);if(script.context==="module")component.module??=script;else component.instance??=script;return script.end}let css=readStyle(source,start,i,attributes);return component.css??=css,css.end}let attributes=topLevel&&name==="svelte:options"?[]:null;if(i=readAttributes(source,i,attributes),source.charCodeAt(i)===SLASH2||isVoid(name)){if(source.charCodeAt(i)===SLASH2)i++;i=eatGreaterThan(source,i)}else{if(i=eatGreaterThan(source,i),name==="textarea")return textareaEnd(source,i);if(name==="script"||name==="style"){let closer=`</${name}>`,close=source.indexOf(closer,i);return close===-1?source.length:close+closer.length}if(attributes&&source.startsWith(CLOSING_OPTIONS_TAG,i))i=eatGreaterThan(source,skipWhitespace(source,i+CLOSING_OPTIONS_TAG.length));else return stack.push(name),i}if(attributes)component.options??={start,end:i,attributes};return i}function eatGreaterThan(source,i){return source.charCodeAt(i)===GT2?i+1:i}function readScript(source,start,contentStart,attributes){let close=closingScriptTag(source,contentStart),contentEnd=close===-1?source.length:close,module=attributes.some((attribute)=>attribute.name==="module"||attribute.name==="context");return{start,end:close===-1?source.length:closingScriptTagEnd(source,close),context:module?"module":"default",attributes,content:{start:contentStart,end:contentEnd}}}function readStyle(source,start,contentStart,attributes){let contentEnd=styleContentEnd(source,contentStart),end=contentEnd;if(source.startsWith("</style",end)){end+=7,REGEX_CLOSING_STYLE_TAG_END.lastIndex=end;let close=REGEX_CLOSING_STYLE_TAG_END.exec(source);if(close)end+=close[0].length}return{start,end,attributes,content:{start:contentStart,end:contentEnd}}}function readStaticAttributes(source,from,into){let i=from;for(;;){let start=i,end=nameEnd(source,i,!0);if(end===start)return i;i=end;let value=!0;if(source.charCodeAt(i)===EQUALS2){let at=skipWhitespace(source,i+1),quote=source.charCodeAt(at),valueEnd=-1;if(isQuote(quote)){let close=source.indexOf(source[at],at+1);if(close!==-1)valueEnd=close+1}if(valueEnd===-1){valueEnd=at;while(valueEnd<source.length&&source.charCodeAt(valueEnd)!==GT2&&!isWhitespace(source.charCodeAt(valueEnd)))valueEnd++}let quotes=isQuote(quote)?1:0;value=source.slice(at+quotes,valueEnd-quotes),i=valueEnd}into.push({name:source.slice(start,end),value,start,end:i}),i=skipWhitespace(source,i)}}function readAttributes(source,from,into){let i=from;for(;;){for(;;){if(source.startsWith("/*",i)){let end=source.indexOf("*/",i+2);i=end===-1?source.length:end+2}else if(source.startsWith("//",i)){let end=source.indexOf(`
|
|
3
3
|
`,i+2);i=end===-1?source.length:end}else break;i=skipWhitespace(source,i)}let start=i;if(source.charCodeAt(i)===BRACE){i=skipWhitespace(source,expressionEnd(source,i+1));continue}let nameEndAt=nameEnd(source,i,!0);if(nameEndAt===start)return i;let end=nameEndAt,value=!0;if(i=skipWhitespace(source,nameEndAt),source.charCodeAt(i)===EQUALS2){let at=skipWhitespace(source,i+1);end=source.startsWith("/>",at)?at+1:attributeValueEnd(source,at),value=isQuote(source.charCodeAt(at))?source.slice(at+1,Math.max(at+1,end-1)):source.slice(at,end),i=skipWhitespace(source,end)}into?.push({name:source.slice(start,nameEndAt),value,start,end})}}function attributeValueEnd(source,from){let quote=source.charCodeAt(from);if(isQuote(quote)){let i=from+1;while(i<source.length){let code=source.charCodeAt(i);if(code===quote)return i+1;i=code===BRACE?expressionEnd(source,i+1):i+1}return source.length}let i=from;while(i<source.length&&!endsUnquotedValue(source,i))i=source.charCodeAt(i)===BRACE?expressionEnd(source,i+1):i+1;return i}function textareaEnd(source,from){let i=from;while(i<source.length){let code=source.charCodeAt(i);if(code===LT){if(REGEX_CLOSING_TEXTAREA.lastIndex=i,REGEX_CLOSING_TEXTAREA.test(source))return REGEX_CLOSING_TEXTAREA.lastIndex}i=code===BRACE?expressionEnd(source,i+1):i+1}return source.length}function lexImportsExports(source,options={}){let lexer=new Lexer(source);lexer.exportLists=options.exportLists??!1;let statements=[];return scan(source,!1,(_start,keyword)=>{let statement=lexer.statement(keyword);return statements.push(statement),statement.end},lexer.exportLists),statements}class Lexer{source;pos=0;end=0;escapeEnd=0;exportLists=!1;constructor(source){this.source=source}statement(keyword){this.pos=this.end=keyword+6;let statement={kind:this.source.charCodeAt(keyword)===105?"import":"export",start:keyword,end:0,source:null,typeOnly:!1,specifiers:[]};if(!(statement.kind==="import"?this.import(statement):this.export(statement)))statement.source=null,statement.specifiers=[];return statement.end=this.end,statement}import(statement){let module=this.string();if(module!==null)return statement.source=module,this.finish();if(this.isWord("type")){let next=this.peekAfter(4);if(next===123||next===42||isIdentifierStart(next)&&!this.isWordAfter(4,"from"))statement.typeOnly=!0,this.advance(4)}let{specifiers,typeOnly}=statement,next=this.at();if(next!==123&&next!==42){let start=this.pos,local=this.name();if(local===null)return!1;if(this.at()===61)return this.importEquals();if(specifiers.push({kind:"default",imported:"default",local,typeOnly,start,end:this.end}),!this.eat(44))return this.from(statement);next=this.at()}if(next===42){let start=this.pos;if(this.advance(1),!this.eatWord("as"))return!1;let local=this.name();if(local===null)return!1;return specifiers.push({kind:"namespace",imported:"*",local,typeOnly,start,end:this.end}),this.from(statement)}if(!this.eat(123))return!1;while(!this.eat(125)){let start=this.skip(),named=this.typeModifier()||typeOnly,name=this.name(),imported=name??this.string()?.value;if(imported===void 0)return!1;let local=name;if(this.eatWord("as"))local=this.name();if(local===null)return!1;if(specifiers.push({kind:"named",imported,local,typeOnly:named,start,end:this.end}),!this.eat(44)&&this.at()!==125)return!1}return this.from(statement)}export(statement){if(this.eatWord("import")){if(this.isWord("type")&&isIdentifierStart(this.peekAfter(4))&&!this.isWordAfter(4,"from"))statement.typeOnly=!0,this.advance(4);return this.name()!==null&&this.at()===61&&this.importEquals()}if(this.isWord("type")){let next=this.peekAfter(4);if(next===123||next===42)statement.typeOnly=!0,this.advance(4)}let{specifiers,typeOnly}=statement;if(this.at()===42){let start=this.pos;this.advance(1);let exported=null;if(this.eatWord("as")){if(exported=this.moduleExportName(),exported===null)return!1}return specifiers.push({kind:exported===null?"all":"namespace",local:"*",exported,typeOnly,start,end:this.end}),this.from(statement)}if(!this.eat(123))return!1;while(!this.eat(125)){let start=this.skip(),named=this.typeModifier()||typeOnly,local=this.moduleExportName();if(local===null)return!1;let exported=local;if(this.eatWord("as"))exported=this.moduleExportName();if(exported===null)return!1;if(specifiers.push({kind:"named",local,exported,typeOnly:named,start,end:this.end}),!this.eat(44)&&this.at()!==125)return!1}if(this.exportLists&&!this.isWord("from")){for(let specifier of specifiers)specifier.kind="local";return this.eat(59),!0}return this.from(statement)}dynamicImport(start,member){let isImport=this.source.charCodeAt(start)===105;this.pos=this.end=start+(isImport?6:7);let kind=isImport?"import":"require";if(isImport&&this.eat(46)){if(!this.eatWord("meta")||!this.eat(46)||!this.eatWord("glob")||!this.typeArguments())return null;kind="glob"}if(!this.eat(40))return null;let argument=this.skip(),source=this.string()??this.template(),close=this.at()===41?this.pos:-1;if(close===-1){if(this.at()!==44)source=null;close=closingBracket(this.source,argument)}if(member&&kind!=="glob"){let after=this.source.charCodeAt(skipTrivia(this.source,close+1));if(after===123||after===58)return null}return{kind,source,start,end:Math.min(close+1,this.source.length)}}typeArguments(){if(this.at()!==60)return!0;let source=this.source,depth=0;for(let i=this.pos;i<source.length;i=skipTrivia(source,i+1)){let code=source.charCodeAt(i);if(code===34||code===39||code===96){let end=source.indexOf(source[i],i+1);if(end===-1)return!1;i=end}else if(code===60)depth++;else if(code===62&&source.charCodeAt(i-1)!==61){if(--depth===0)return this.advance(i+1-this.pos),!0}}return!1}template(){let source=this.source,start=this.skip();if(source.charCodeAt(start)!==96)return null;for(let i=start+1;i<source.length;i++){let code=source.charCodeAt(i);if(code===96){let value=this.cooked(start+1,i,!0);if(value===null)return null;return this.advance(i+1-start),{value,start,end:i+1}}if(code===92)i++;else if(code===36&&source.charCodeAt(i+1)===123)return null}return null}typeModifier(){if(!this.isWord("type"))return!1;let next=this.peekAfter(4);if(next===34||next===39||isIdentifierStart(next)&&!this.isWordAfter(4,"as"))return this.advance(4),!0;return!1}importEquals(){if(this.advance(1),this.isWord("require")&&this.peekAfter(7)===40){if(this.advance(7),this.eat(40),this.string()===null||!this.eat(41))return!1}else do if(this.name()===null)return!1;while(this.eat(46));return this.eat(59),!0}from(statement){if(!this.eatWord("from"))return!1;return statement.source=this.string(),statement.source!==null&&this.finish()}finish(){let keyword=this.isWord("with")?4:0;if(this.isWord("assert")&&lineEnd(this.source,this.end)>=this.pos)keyword=6;if(keyword!==0&&this.peekAfter(keyword)===123){this.advance(keyword),this.eat(123);while(!this.eat(125))if(this.string()===null&&this.name()===null&&!this.eat(58)&&!this.eat(44))return!1}return this.eat(59),!0}skip(){return this.pos=skipTrivia(this.source,this.pos),this.pos}at(){return this.source.charCodeAt(this.skip())}advance(length){this.pos+=length,this.end=this.pos}peekAfter(length){return this.source.charCodeAt(skipTrivia(this.source,this.pos+length))}isWordAfter(length,word){return isWordAt(this.source,skipTrivia(this.source,this.pos+length),word)}eat(code){if(this.at()!==code)return!1;return this.advance(1),!0}isWord(word){return isWordAt(this.source,this.skip(),word)}eatWord(word){if(!this.isWord(word))return!1;return this.advance(word.length),!0}moduleExportName(){return this.name()??this.string()?.value??null}name(){let source=this.source,start=this.skip();if(!isWordCode(source.charCodeAt(start))||isDigit(source.charCodeAt(start)))return null;let value="",chunk=start,i=start;while(i<source.length){let code=source.charCodeAt(i);if(code===92){if(source.charCodeAt(i+1)!==117)return null;let escaped=this.unicodeEscape(i+2);if(escaped===null)return null;value+=source.slice(chunk,i)+escaped,i=chunk=this.escapeEnd}else if(isWordCode(code))i++;else break}return this.advance(i-start),value+source.slice(chunk,i)}string(){let source=this.source,start=this.skip(),quote=source.charCodeAt(start);if(quote!==34&"e!==39)return null;let value="",chunk=start+1;for(let i=chunk;i<source.length;){let code=source.charCodeAt(i);if(code===quote)return this.advance(i+1-start),{value:value+source.slice(chunk,i),start,end:i+1};if(code===10||code===13)return null;if(code===92){let escaped=this.escape(i+1);if(escaped===null)return null;value+=source.slice(chunk,i)+escaped,i=chunk=this.escapeEnd}else i++}return null}cooked(from,to,template){let source=this.source,value="",chunk=from;for(let i=from;i<to;){let code=source.charCodeAt(i);if(code===92){let escaped=this.escape(i+1);if(escaped===null)return null;value+=source.slice(chunk,i)+escaped,i=chunk=this.escapeEnd}else if(code===13&&template)value+=`${source.slice(chunk,i)}
|
|
4
4
|
`,i+=source.charCodeAt(i+1)===10?2:1,chunk=i;else i++}return value+source.slice(chunk,to)}escape(pos){let code=this.source.charCodeAt(pos);switch(this.escapeEnd=pos+1,code){case 110:return`
|
|
@@ -68,7 +68,7 @@ const $$Component = __sveltets_2_fn_component($$$render);
|
|
|
68
68
|
`),out.raw(isTs?`type $$Component = ReturnType<typeof $$Component>;
|
|
69
69
|
`:`/** @typedef {ReturnType<typeof $$Component>} $$Component */
|
|
70
70
|
`);out.raw(`export default $$Component;
|
|
71
|
-
`)}}import{readdirSync}from"node:fs";import{join as join4}from"node:path";var GLOB_LITERAL=/[.+^$()|[\]\\]/g,LEADING_DOT_SLASH=/^\.\//;function globToRegExp(pattern){let source="";for(let i=0;i<pattern.length;i++){let char=pattern[i]??"";if(char==="*"&&pattern[i+1]==="*"){let slash=pattern[i+2]==="/";source+=slash?"(?:.*/)?":".*",i+=slash?2:1}else if(char==="*")source+="[^/]*";else if(char==="?")source+="[^/]";else if(char==="{")source+="(?:";else if(char==="}")source+=")";else if(char===",")source+="|";else source+=char.replace(GLOB_LITERAL,String.raw`\$&`)}return new RegExp(`^${source}$`)}function matcher(globs){if(globs.length===0)return()=>!1;let res=globs.map((pattern)=>globToRegExp(pattern.replace(LEADING_DOT_SLASH,"")));return(path)=>res.some((re)=>re.test(path))}function glob(root,globs){let matches=matcher(globs),dotFolders=globs.some((g)=>g.startsWith(".")||g.includes("/.")),found=[],walk=(dir,prefix)=>{for(let entry of readdirSync(dir,{withFileTypes:!0})){let rel=prefix+entry.name;if(entry.isDirectory()){if(entry.name==="node_modules")continue;if(entry.name.startsWith(".")&&!dotFolders)continue;walk(join4(dir,entry.name),`${rel}/`)}else if(matches(rel))found.push(rel)}};return walk(root,""),found.sort()}import{existsSync as existsSync3,readFileSync as readFileSync3}from"node:fs";import{createRequire as createRequire3}from"node:module";import{basename as basename2,dirname as dirname4,isAbsolute,join as join5,relative,resolve as resolve2,sep}from"node:path";var LINE_COMMENT=/\/\/[^\n]*/g,BLOCK_COMMENT=/\/\*[\s\S]*?\*\//g,TRAILING_COMMA=/,(\s*[}\]])/g,STRING=/"(?:[^"\\]|\\.)*"/g,PLACEHOLDER=/"\0(\d+)"/g,WILDCARD=/[*?{]/,HAS_EXTENSION=/\.[^/\\]+$/,NODE_MODULES_JS=/\/node_modules\/.+\.[cm]?js$/,DEFAULT_EXCLUDE=["node_modules","bower_components","jspm_packages"];function parseJsonc(text){let strings=[],stripped=text.replace(STRING,(s)=>`"\x00${strings.push(s)-1}"`).replace(LINE_COMMENT,"").replace(BLOCK_COMMENT,"").replace(TRAILING_COMMA,"$1").replaceAll(PLACEHOLDER,(_,i)=>strings[Number(i)]??"");return JSON.parse(stripped)}function readInputs(path,read=[]){read.push(path);let config=parseJsonc(readFileSync3(path,"utf-8")),dir=dirname4(path),absolute=(list)=>list?.map((p)=>resolve2(dir,p)),inputs={},bases=typeof config.extends==="string"?[config.extends]:config.extends;for(let base of bases??[]){let basePath=base.startsWith(".")?resolve2(dir,base):createRequire3(path).resolve(base);inputs={...inputs,...defined(readInputs(basePath,read))}}let options=config.compilerOptions,baseUrl=options?.baseUrl?resolve2(dir,options.baseUrl):void 0,pathsBase=baseUrl??inputs.baseUrl??dir;return{...inputs,...defined({include:absolute(config.include),exclude:absolute(config.exclude),files:absolute(config.files),rootDirs:absolute(options?.rootDirs),checkJs:options?.checkJs,allowJs:options?.allowJs,baseUrl,paths:options?.paths&&Object.fromEntries(Object.entries(options.paths).map(([key,targets])=>[key,targets.map((t)=>resolve2(pathsBase,t))]))})}}function defined(inputs){return Object.fromEntries(Object.entries(inputs).filter(([,value])=>value!==void 0))}function findUp(from,name){for(let dir=from;;dir=dirname4(dir)){let path=join5(dir,name);if(existsSync3(path))return path;if(dirname4(dir)===dir)return}}function findTsconfig(dir){let ts=findUp(dir,"tsconfig.json"),js=findUp(dir,"jsconfig.json");return ts&&(!js||ts.length>=js.length)?ts:js}var toPosix=(path)=>path.split(sep).join("/");function splitGlob(pattern){let parts=toPosix(pattern).split("/"),at=parts.findIndex((part)=>WILDCARD.test(part));if(at===-1)return[pattern,""];return[parts.slice(0,at).join("/")||"/",parts.slice(at).join("/")]}function svelteGlobOf(pattern){if(pattern.endsWith(".svelte"))return pattern;if(WILDCARD.test(pattern))return pattern.endsWith("*")?`${pattern.slice(0,-1)}*.svelte`:void 0;return HAS_EXTENSION.test(pattern)?void 0:`${pattern}/**/*.svelte`}function absoluteMatcher(patterns){let globs=patterns.flatMap((p)=>{let posix=toPosix(p);return WILDCARD.test(posix)?[posix]:[posix,`${posix}/**`]}),matches=matcher(globs.map((g)=>g.replace(/^\//,"")));return(path)=>matches(toPosix(path).replace(/^\//,""))}function projectOf(options){let{workspace}=options,tsconfig=tsconfigOf(workspace,options.tsconfig);if(options.tsconfig&&tsconfig&&!existsSync3(tsconfig))throw Error(`Could not find tsconfig/jsconfig file at ${tsconfig}`);if(!tsconfig){let isIgnored=ignoreMatcher(options.ignore??[]);return{components:glob(workspace,options.components??["**/*.svelte"]).filter((rel)=>!isIgnored(rel)).map((rel)=>join5(workspace,rel)),files:[],include:[],exclude:[],rootDirs:[],configFiles:[],paths:{},checkJs:!0,allowJs:!0,raw:{},reports:()=>!1}}let configFiles=[],inputs=readInputs(tsconfig,configFiles),include=inputs.include??(inputs.files?[]:[join5(dirname4(tsconfig),"**/*")]),exclude=inputs.exclude??DEFAULT_EXCLUDE.map((p)=>join5(dirname4(tsconfig),p)),files=new Set(inputs.files??[]),isExcluded=absoluteMatcher(exclude),components;if(options.components)components=glob(workspace,options.components).map((rel)=>join5(workspace,rel));else{let found=new Set([...files].filter((f)=>f.endsWith(".svelte")));for(let pattern of include){let svelteGlob=svelteGlobOf(pattern);if(!svelteGlob)continue;let[base,rest]=splitGlob(svelteGlob);if(!rest){if(existsSync3(base))found.add(base);continue}if(!existsSync3(base))continue;for(let rel of glob(base,[rest]))found.add(join5(base,rel))}components=[...found].sort()}return components=components.filter((path)=>!isExcluded(path)),{tsconfig,components,files:inputs.files??[],include,exclude,rootDirs:inputs.rootDirs??[],configFiles,paths:{...importsOf(dirname4(tsconfig)),...inputs.paths},checkJs:inputs.checkJs??!1,allowJs:inputs.allowJs??basename2(tsconfig)==="jsconfig.json",raw:parseJsonc(readFileSync3(tsconfig,"utf-8")),reports:(path)=>!NODE_MODULES_JS.test(toPosix(path))}}function importsOf(dir){let path=findUp(dir,"package.json");if(!path)return{};let imports;try{({imports}=JSON.parse(readFileSync3(path,"utf-8")))}catch{return{}}let paths={};for(let[key,value]of Object.entries(imports??{})){let target=importTarget(value);if(key.startsWith("#")&&target?.startsWith("./"))paths[key]=[resolve2(dirname4(path),target)]}return paths}function importTarget(value){if(typeof value==="string")return value;if(Array.isArray(value))return importTarget(value[0]);if(!value||typeof value!=="object")return;let conditions=value;for(let condition of["types","import","default"])if(condition in conditions)return importTarget(conditions[condition]);return importTarget(Object.values(conditions)[0])}var PROGRAM_FILE=/\.(svelte|[cm]?[jt]sx?)$/,JS_FILE=/\.[cm]?jsx?$/;function byFolder(a,b){let pa=a.split(sep),pb=b.split(sep);for(let i=0;i<Math.min(pa.length,pb.length);i++){if(pa[i]===pb[i])continue;let aFile=i===pa.length-1,bFile=i===pb.length-1;if(aFile!==bFile)return aFile?-1:1;return(pa[i]??"")<(pb[i]??"")?-1:1}return pa.length-pb.length}function programFiles(project){let isExcluded=absoluteMatcher(project.exclude),found=new Set(project.files);for(let pattern of project.include){let fileGlob=WILDCARD.test(pattern)||HAS_EXTENSION.test(pattern)?pattern:`${pattern}/**/*`,[base,rest]=splitGlob(fileGlob);if(!rest){if(existsSync3(base)&&PROGRAM_FILE.test(base)&&(project.allowJs||!JS_FILE.test(base)))found.add(base);continue}if(!existsSync3(base))continue;let matched=glob(base,[rest]).map((rel)=>join5(base,rel)).filter((path)=>PROGRAM_FILE.test(path)&&(project.allowJs||!JS_FILE.test(path))&&!isExcluded(path)).sort(byFolder);for(let path of matched)found.add(path)}return[...found]}function scriptsOf(project,test){let isExcluded=absoluteMatcher(project.exclude),found=new Set;for(let pattern of project.include){let scriptGlob=WILDCARD.test(pattern)||HAS_EXTENSION.test(pattern)?pattern:`${pattern}/**/*`,[base,rest]=splitGlob(scriptGlob);if(!rest){if(existsSync3(base)&&test(base))found.add(base);continue}if(!existsSync3(base))continue;for(let rel of glob(base,[rest])){let path=join5(base,rel);if(test(path)&&!isExcluded(path))found.add(path)}}return[...found].sort()}function relativeTo(from,path){let rel=toPosix(relative(from,path));return rel.startsWith(".")||isAbsolute(rel)?rel:`./${rel}`}function ignoreMatcher(patterns){let tests=patterns.map((raw)=>{let pattern=raw.trim();if(pattern.endsWith("**"))pattern=pattern.slice(0,-2);if(pattern.startsWith("**")){let rest=pattern.slice(2);if(rest.includes("*"))throw Error(INVALID_IGNORE);return(path)=>path.includes(rest)}if(pattern.includes("*"))throw Error(INVALID_IGNORE);return(path)=>path.startsWith(pattern)});return(path)=>tests.some((test)=>test(path))}var INVALID_IGNORE="Invalid --ignore pattern: only ** at the start or end is supported";function tsconfigOf(workspace,option){if(option===!1)return;if(option)return resolve2(workspace,option);return findTsconfig(workspace)}var DIAGNOSTIC=/^(.+?)\((\d+),(\d+)\): error (TS\d+): (.*)$/,CONTINUATION=/^\s+\S/,GLOBAL_DIAGNOSTIC=/^error (TS\d+): (.*)$/,TS_MODULE=/\.[cm]?tsx?$/,LINE_BREAK2=/\r?\n/,JS_FILE2=/\.[cm]?jsx?$/,SYNTAX_CODE=/^TS[18]\d{3}$/,STOPPED=/Stopped before type checking/,TS_SCRIPT=/<script\b[^>]*\blang=["']?(ts|typescript)\b/,GENERATED_NAME=/(?:\+\+)?([^/\\]+?)(?:\.d\.svelte(?:\.ts)?|\.svelte\.[jt]s)$/,DRIVE_PATH=/\b[A-Z]:\//g,toPosix2=(path)=>path.split(sep2).join("/"),asTypeScriptPath=(path)=>toPosix2(path).replace(/^[A-Z]:/,(drive)=>drive.toLowerCase()),escapeRegExp=(text)=>text.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),TYPE_CODE=/^TS[2-7]\d{3}$/,TOKEN=/^(?:[\w$]+|"(?:[^"\\\n]|\\.)*"|'(?:[^'\\\n]|\\.)*'|`[^`]*`)/,STORE_ERROR=/^TS(2769|2345)$/,REACTIVE_NOISE=/^TS(7028|2695)$/,SHIMS=fileURLToPath(new URL("./shims/",import.meta.url)),CACHE_FORMAT=1,RESULT_CACHE="result.json",EMIT_CACHE="emit-cache.json",COMPILE_CACHE="compile-cache.json",hash=(text)=>createHash("sha1").update(text).digest("hex"),MANIFEST="manifest.json",DEFAULT_COMPILER_OPTIONS={allowJs:!0,noEmit:!0,declaration:!1,skipLibCheck:!0,maxNodeModuleJsDepth:2,allowSyntheticDefaultImports:!0,target:"esnext",module:"esnext",moduleResolution:"bundler"};class EmitError extends Error{}var SHELL_SPECIAL=/[\s"&|<>^()%!]/,quote=(arg)=>SHELL_SPECIAL.test(arg)?`"${arg.replaceAll('"','""')}"`:arg;function run2(command,args,cwd,shell=!1){return new Promise((done,fail)=>{let child=shell?spawn(quote(command),args.map(quote),{cwd,shell:!0}):spawn(command,args,{cwd}),output="";child.stdout.on("data",(chunk)=>{output+=chunk}),child.stderr.on("data",(chunk)=>{output+=chunk}),child.on("error",fail),child.on("close",()=>done(output))})}function parseDiagnostics(text){let found=[],continues=!1;for(let line of text.split(LINE_BREAK2)){let m=DIAGNOSTIC.exec(line),global=m?null:GLOBAL_DIAGNOSTIC.exec(line);if(m)found.push({file:m[1]??"",line:Number(m[2]),column:Number(m[3]),code:m[4]??"",message:m[5]??""});else if(global)found.push({file:"",line:1,column:1,code:global[1]??"",message:global[2]??""});else if(continues&&CONTINUATION.test(line)){let last=found.at(-1);if(last)last.message+=`
|
|
71
|
+
`)}}import{readdirSync}from"node:fs";import{join as join4}from"node:path";var GLOB_LITERAL=/[.+^$()|[\]\\]/g,LEADING_DOT_SLASH=/^\.\//;function globToRegExp(pattern){let source="";for(let i=0;i<pattern.length;i++){let char=pattern[i]??"";if(char==="*"&&pattern[i+1]==="*"){let slash=pattern[i+2]==="/";source+=slash?"(?:.*/)?":".*",i+=slash?2:1}else if(char==="*")source+="[^/]*";else if(char==="?")source+="[^/]";else if(char==="{")source+="(?:";else if(char==="}")source+=")";else if(char===",")source+="|";else source+=char.replace(GLOB_LITERAL,String.raw`\$&`)}return new RegExp(`^${source}$`)}function matcher(globs){if(globs.length===0)return()=>!1;let res=globs.map((pattern)=>globToRegExp(pattern.replace(LEADING_DOT_SLASH,"")));return(path)=>res.some((re)=>re.test(path))}function glob(root,globs){let matches=matcher(globs),dotFolders=globs.some((g)=>g.startsWith(".")||g.includes("/.")),found=[],walk=(dir,prefix)=>{for(let entry of readdirSync(dir,{withFileTypes:!0})){let rel=prefix+entry.name;if(entry.isDirectory()){if(entry.name==="node_modules")continue;if(entry.name.startsWith(".")&&!dotFolders)continue;walk(join4(dir,entry.name),`${rel}/`)}else if(matches(rel))found.push(rel)}};return walk(root,""),found.sort()}import{existsSync as existsSync3,readFileSync as readFileSync3}from"node:fs";import{createRequire as createRequire3}from"node:module";import{basename as basename2,dirname as dirname4,isAbsolute,join as join5,relative,resolve as resolve2,sep}from"node:path";var LINE_COMMENT=/\/\/[^\n]*/g,BLOCK_COMMENT=/\/\*[\s\S]*?\*\//g,TRAILING_COMMA=/,(\s*[}\]])/g,STRING=/"(?:[^"\\]|\\.)*"/g,PLACEHOLDER=/"\0(\d+)"/g,WILDCARD=/[*?{]/,HAS_EXTENSION=/\.[^/\\]+$/,NODE_MODULES_JS=/\/node_modules\/.+\.[cm]?js$/,DEFAULT_EXCLUDE=["node_modules","bower_components","jspm_packages"],CONFIG_DIR="${configDir}";function parseJsonc(text){let strings=[],stripped=text.replace(STRING,(s)=>`"\x00${strings.push(s)-1}"`).replace(LINE_COMMENT,"").replace(BLOCK_COMMENT,"").replace(TRAILING_COMMA,"$1").replaceAll(PLACEHOLDER,(_,i)=>strings[Number(i)]??"");return JSON.parse(stripped)}function readInputs(path,read=[]){read.push(path);let config=parseJsonc(readFileSync3(path,"utf-8")),dir=dirname4(path),absolute=(list)=>list?.map((p)=>resolve2(dir,p)),inputs={},bases=typeof config.extends==="string"?[config.extends]:config.extends;for(let base of bases??[]){let basePath=base.startsWith(".")?resolve2(dir,base):createRequire3(path).resolve(base),baseInputs=readInputs(basePath,read),difference=toPosix(relative(dir,dirname4(basePath))),rebase=(specs)=>specs?.map((spec)=>difference&&!isAbsolute(spec)&&!spec.startsWith(CONFIG_DIR)?`${difference}/${spec}`:spec);inputs={...inputs,...defined({...baseInputs,includeSpecs:rebase(baseInputs.includeSpecs),excludeSpecs:rebase(baseInputs.excludeSpecs)})}}let options=config.compilerOptions,baseUrl=options?.baseUrl?resolve2(dir,options.baseUrl):void 0,pathsBase=baseUrl??inputs.baseUrl??dir;return{...inputs,...defined({include:absolute(config.include),exclude:absolute(config.exclude),files:absolute(config.files),rootDirs:absolute(options?.rootDirs),checkJs:options?.checkJs,allowJs:options?.allowJs,includeSpecs:config.include,excludeSpecs:config.exclude,outDir:options?.outDir&&resolve2(dir,options.outDir),declarationDir:options?.declarationDir&&resolve2(dir,options.declarationDir),baseUrl,paths:options?.paths&&Object.fromEntries(Object.entries(options.paths).map(([key,targets])=>[key,targets.map((t)=>resolve2(pathsBase,t))]))})}}function defined(inputs){return Object.fromEntries(Object.entries(inputs).filter(([,value])=>value!==void 0))}function findUp(from,name){for(let dir=from;;dir=dirname4(dir)){let path=join5(dir,name);if(existsSync3(path))return path;if(dirname4(dir)===dir)return}}function findTsconfig(dir){let ts=findUp(dir,"tsconfig.json"),js=findUp(dir,"jsconfig.json");return ts&&(!js||ts.length>=js.length)?ts:js}var toPosix=(path)=>path.split(sep).join("/"),asTypeScriptPath=(path)=>toPosix(path).replace(/^[A-Z]:/,(drive)=>drive.toLowerCase());function splitGlob(pattern){let parts=toPosix(pattern).split("/"),at=parts.findIndex((part)=>WILDCARD.test(part));if(at===-1)return[pattern,""];return[parts.slice(0,at).join("/")||"/",parts.slice(at).join("/")]}function svelteGlobOf(pattern){if(pattern.endsWith(".svelte"))return pattern;if(WILDCARD.test(pattern))return pattern.endsWith("*")?`${pattern.slice(0,-1)}*.svelte`:void 0;return HAS_EXTENSION.test(pattern)?void 0:`${pattern}/**/*.svelte`}function absoluteMatcher(patterns){let globs=patterns.flatMap((p)=>{let posix=toPosix(p);return WILDCARD.test(posix)?[posix]:[posix,`${posix}/**`]}),matches=matcher(globs.map((g)=>g.replace(/^\//,"")));return(path)=>matches(toPosix(path).replace(/^\//,""))}function projectOf(options){let{workspace}=options,tsconfig=tsconfigOf(workspace,options.tsconfig);if(options.tsconfig&&tsconfig&&!existsSync3(tsconfig))throw Error(`Could not find tsconfig/jsconfig file at ${tsconfig}`);if(!tsconfig){let isIgnored=ignoreMatcher(options.ignore??[]);return{components:glob(workspace,options.components??["**/*.svelte"]).filter((rel)=>!isIgnored(rel)).map((rel)=>join5(workspace,rel)),files:[],include:[],exclude:[],rootDirs:[],configFiles:[],paths:{},checkJs:!0,allowJs:!0,raw:{},reports:()=>!1}}let configFiles=[],inputs=readInputs(tsconfig,configFiles),raw=parseJsonc(readFileSync3(tsconfig,"utf-8")),include=inputs.include??(inputs.files?[]:[join5(dirname4(tsconfig),"**/*")]),exclude=inputs.exclude??DEFAULT_EXCLUDE.map((p)=>join5(dirname4(tsconfig),p)),files=new Set(inputs.files??[]),isExcluded=absoluteMatcher(exclude),components;if(options.components)components=glob(workspace,options.components).map((rel)=>join5(workspace,rel));else{let found=new Set([...files].filter((f)=>f.endsWith(".svelte")));for(let pattern of include){let svelteGlob=svelteGlobOf(pattern);if(!svelteGlob)continue;let[base,rest]=splitGlob(svelteGlob);if(!rest){if(existsSync3(base))found.add(base);continue}if(!existsSync3(base))continue;for(let rel of glob(base,[rest]))found.add(join5(base,rel))}components=[...found].sort()}return components=components.filter((path)=>!isExcluded(path)),{tsconfig,components,files:inputs.files??[],include,exclude,rootDirs:inputs.rootDirs??[],configFiles,paths:{...importsOf(dirname4(tsconfig)),...inputs.paths},checkJs:inputs.checkJs??!1,allowJs:inputs.allowJs??basename2(tsconfig)==="jsconfig.json",raw,inputSpecs:inputs.files||raw.references?void 0:{include:inputs.includeSpecs??["**/*"],exclude:inputs.excludeSpecs??[inputs.outDir,inputs.declarationDir].flatMap((dir)=>dir?[asTypeScriptPath(dir)]:[])},reports:(path)=>!NODE_MODULES_JS.test(toPosix(path))}}function importsOf(dir){let path=findUp(dir,"package.json");if(!path)return{};let imports;try{({imports}=JSON.parse(readFileSync3(path,"utf-8")))}catch{return{}}let paths={};for(let[key,value]of Object.entries(imports??{})){let target=importTarget(value);if(key.startsWith("#")&&target?.startsWith("./"))paths[key]=[resolve2(dirname4(path),target)]}return paths}function importTarget(value){if(typeof value==="string")return value;if(Array.isArray(value))return importTarget(value[0]);if(!value||typeof value!=="object")return;let conditions=value;for(let condition of["types","import","default"])if(condition in conditions)return importTarget(conditions[condition]);return importTarget(Object.values(conditions)[0])}var PROGRAM_FILE=/\.(svelte|[cm]?[jt]sx?)$/,JS_FILE=/\.[cm]?jsx?$/;function byFolder(a,b){let pa=a.split(sep),pb=b.split(sep);for(let i=0;i<Math.min(pa.length,pb.length);i++){if(pa[i]===pb[i])continue;let aFile=i===pa.length-1,bFile=i===pb.length-1;if(aFile!==bFile)return aFile?-1:1;return(pa[i]??"")<(pb[i]??"")?-1:1}return pa.length-pb.length}function programFiles(project){let isExcluded=absoluteMatcher(project.exclude),found=new Set(project.files);for(let pattern of project.include){let fileGlob=WILDCARD.test(pattern)||HAS_EXTENSION.test(pattern)?pattern:`${pattern}/**/*`,[base,rest]=splitGlob(fileGlob);if(!rest){if(existsSync3(base)&&PROGRAM_FILE.test(base)&&(project.allowJs||!JS_FILE.test(base)))found.add(base);continue}if(!existsSync3(base))continue;let matched=glob(base,[rest]).map((rel)=>join5(base,rel)).filter((path)=>PROGRAM_FILE.test(path)&&(project.allowJs||!JS_FILE.test(path))&&!isExcluded(path)).sort(byFolder);for(let path of matched)found.add(path)}return[...found]}function scriptsOf(project,test){let isExcluded=absoluteMatcher(project.exclude),found=new Set;for(let pattern of project.include){let scriptGlob=WILDCARD.test(pattern)||HAS_EXTENSION.test(pattern)?pattern:`${pattern}/**/*`,[base,rest]=splitGlob(scriptGlob);if(!rest){if(existsSync3(base)&&test(base))found.add(base);continue}if(!existsSync3(base))continue;for(let rel of glob(base,[rest])){let path=join5(base,rel);if(test(path)&&!isExcluded(path))found.add(path)}}return[...found].sort()}function relativeTo(from,path){let rel=toPosix(relative(from,path));return rel.startsWith(".")||isAbsolute(rel)?rel:`./${rel}`}function ignoreMatcher(patterns){let tests=patterns.map((raw)=>{let pattern=raw.trim();if(pattern.endsWith("**"))pattern=pattern.slice(0,-2);if(pattern.startsWith("**")){let rest=pattern.slice(2);if(rest.includes("*"))throw Error(INVALID_IGNORE);return(path)=>path.includes(rest)}if(pattern.includes("*"))throw Error(INVALID_IGNORE);return(path)=>path.startsWith(pattern)});return(path)=>tests.some((test)=>test(path))}var INVALID_IGNORE="Invalid --ignore pattern: only ** at the start or end is supported";function tsconfigOf(workspace,option){if(option===!1)return;if(option)return resolve2(workspace,option);return findTsconfig(workspace)}var DIAGNOSTIC=/^(.+?)\((\d+),(\d+)\): error (TS\d+): (.*)$/,CONTINUATION=/^\s+\S/,GLOBAL_DIAGNOSTIC=/^error (TS\d+): (.*)$/,TS_MODULE=/\.[cm]?tsx?$/,LINE_BREAK2=/\r?\n/,JS_FILE2=/\.[cm]?jsx?$/,SYNTAX_CODE=/^TS[18]\d{3}$/,STOPPED=/Stopped before type checking/,TS_SCRIPT=/<script\b[^>]*\blang=["']?(ts|typescript)\b/,GENERATED_NAME=/(?:\+\+)?([^/\\]+?)(?:\.d\.svelte(?:\.ts)?|\.svelte\.[jt]s)$/,DRIVE_PATH=/\b[A-Z]:\//g,toPosix2=(path)=>path.split(sep2).join("/"),escapeRegExp=(text)=>text.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),TYPE_CODE=/^TS[2-7]\d{3}$/,TOKEN=/^(?:[\w$]+|"(?:[^"\\\n]|\\.)*"|'(?:[^'\\\n]|\\.)*'|`[^`]*`)/,STORE_ERROR=/^TS(2769|2345)$/,REACTIVE_NOISE=/^TS(7028|2695)$/,SHIMS=fileURLToPath(new URL("./shims/",import.meta.url)),CACHE_FORMAT=1,RESULT_CACHE="result.json",EMIT_CACHE="emit-cache.json",COMPILE_CACHE="compile-cache.json",hash=(text)=>createHash("sha1").update(text).digest("hex"),MANIFEST="manifest.json",DEFAULT_COMPILER_OPTIONS={allowJs:!0,noEmit:!0,declaration:!1,skipLibCheck:!0,maxNodeModuleJsDepth:2,allowSyntheticDefaultImports:!0,target:"esnext",module:"esnext",moduleResolution:"bundler"};class EmitError extends Error{}var SHELL_SPECIAL=/[\s"&|<>^()%!]/,quote=(arg)=>SHELL_SPECIAL.test(arg)?`"${arg.replaceAll('"','""')}"`:arg;function run2(command,args,cwd,shell=!1){return new Promise((done,fail)=>{let child=shell?spawn(quote(command),args.map(quote),{cwd,shell:!0}):spawn(command,args,{cwd}),output="";child.stdout.on("data",(chunk)=>{output+=chunk}),child.stderr.on("data",(chunk)=>{output+=chunk}),child.on("error",fail),child.on("close",()=>done(output))})}function parseDiagnostics(text){let found=[],continues=!1;for(let line of text.split(LINE_BREAK2)){let m=DIAGNOSTIC.exec(line),global=m?null:GLOBAL_DIAGNOSTIC.exec(line);if(m)found.push({file:m[1]??"",line:Number(m[2]),column:Number(m[3]),code:m[4]??"",message:m[5]??""});else if(global)found.push({file:"",line:1,column:1,code:global[1]??"",message:global[2]??""});else if(continues&&CONTINUATION.test(line)){let last=found.at(-1);if(last)last.message+=`
|
|
72
72
|
${line}`}continues=m!==null||global!==null||continues&&line.trim()!==""}return found}var STATIC_IMPORT=/(?:\bfrom\s*|^\s*import\s*)["']([^"']+)["']/gm,DYNAMIC_IMPORT=/\bimport\s*\(\s*["']([^"']+)["']\s*\)/g,JS_EXTENSION=/\.([cm]?)js(x?)$/;function programOrder(roots,specifiersOf,resolveImport,imports=new Map){let order=new Map,next=0,visit=(path)=>{if(order.has(path))return;order.set(path,Number.POSITIVE_INFINITY);for(let specifier of specifiersOf(path)){let target=resolveImport(path,specifier);if(!target)continue;imports.set(path,(imports.get(path)??new Set).add(target)),visit(target)}order.set(path,next++)};for(let root of roots)visit(root);return order}function importResolver(rootDirs,paths){let exists=new Map,isFile=(path)=>{let found=exists.get(path);if(found===void 0)found=statSync(path,{throwIfNoEntry:!1})?.isFile()??!1,exists.set(path,found);return found},fileAt=(target)=>[target,`${target}.ts`,`${target}.d.ts`,`${target}.js`,target.replace(JS_EXTENSION,".$1ts$2"),target.replace(JS_EXTENSION,".d.$1ts"),join6(target,"index.ts"),join6(target,"index.js")].find((path)=>!path.includes(`${sep2}node_modules${sep2}`)&&isFile(path)),throughRootDirs=(target)=>{let from=rootDirs.filter((dir)=>target.startsWith(`${dir}${sep2}`)).sort((a,b)=>b.length-a.length)[0];if(!from)return;let suffix=relative2(from,target);for(let dir of rootDirs){if(dir===from)continue;let found=fileAt(join6(dir,suffix));if(found)return found}return},patterns=Object.entries(paths).map(([key,targets])=>{let star=key.indexOf("*");return{key,star,targets}});return(from,specifier)=>{if(specifier.startsWith(".")){let target=resolve3(dirname5(from),specifier);return fileAt(target)??throughRootDirs(target)}for(let{key,star,targets}of patterns){let rest;if(star===-1){if(specifier!==key)continue;rest=""}else{let prefix=key.slice(0,star),suffix=key.slice(star+1);if(!specifier.startsWith(prefix)||!specifier.endsWith(suffix)||specifier.length<prefix.length+suffix.length)continue;rest=specifier.slice(prefix.length,specifier.length-suffix.length)}for(let target of targets){let found=fileAt(target.replace("*",rest));if(found)return found}}return}}var NON_BINDABLE=`Cannot use 'bind:' with this property. It is declared as non-bindable inside the component.
|
|
73
73
|
`;function nonBindableMessage(message){if(message.startsWith("Type '")&&message.includes("is not assignable to type '")){let at=message.indexOf(`Type '"`)+7,prop=message.slice(at,message.indexOf('"',at));return`${NON_BINDABLE}To mark a property as bindable: 'let { ${prop} = $bindable() } = $props()'`}return`${NON_BINDABLE}To mark a property as bindable: 'let { prop = $bindable() } = $props()'
|
|
74
74
|
|
|
@@ -79,5 +79,5 @@ export * from "./++${name}.svelte.js";
|
|
|
79
79
|
${syntax.slice(0,20).map((d)=>`${d.file}(${d.line},${d.column}): ${d.code} ${d.message}`).join(`
|
|
80
80
|
`)}`);let locators=new Map,locator=(key,content)=>{let found=locators.get(key);if(!found)found=createLocator(content()),locators.set(key,found);return found},endOf=(source,offset,file)=>{let length=TOKEN.exec(source.slice(offset))?.[0].length??0,end=locator(file,()=>source).position(offset+length);return{endLine:end.line,endColumn:end.column}},diagnostics=[],fileFacts=await factsCache(join6(outDir,FACTS_CACHE),incremental),dropped=[],seen=new Set;for(let d of raw){if(d.file===""){if(d.message.includes(outDir))throw new EmitError(`${d.code}: ${d.message}`);diagnostics.push({...d,file:project.tsconfig??workspace,severity:"error",source:"ts"});continue}let abs=resolve3(cwd,d.file),gen=outputs.get(abs),mapped;if(gen){let offset=locator(abs,()=>gen.output.code).offset(d.line,d.column),source=gen.output.toSource(offset);if(source===null){let store=STORE_ERROR.test(d.code)?gen.emitted.storeDeclarations.find((s)=>s.start<=offset&&offset<s.end):void 0;if(store){for(let use of store.uses){let at=locator(gen.svelte,()=>gen.source).position(use),end=locator(gen.svelte,()=>gen.source).position(use+store.name.length+1);diagnostics.push({...d,file:gen.svelte,line:at.line,column:at.column,endLine:end.line,endColumn:end.column,severity:"error",source:gen.isTs?"ts":"js",message:`Cannot use '${store.name}' as a store. '${store.name}' needs to be an object with a subscribe method on it.
|
|
81
81
|
|
|
82
|
-
${d.message}`})}continue}let binding=d.code==="TS2322"?gen.emitted.bindingChecks.find((b)=>b.start<=offset&&offset<b.end):void 0;if(binding){let at=locator(gen.svelte,()=>gen.source).position(binding.from),end=locator(gen.svelte,()=>gen.source).position(binding.to);diagnostics.push({...d,file:gen.svelte,line:at.line,column:at.column,endLine:end.line,endColumn:end.column,severity:"error",source:gen.isTs?"ts":"js",message:nonBindableMessage(d.message)});continue}dropped.push({...d,file:abs,severity:"error",source:"ts"});continue}let within=(ranges)=>ranges.some(([from,to])=>from<=source&&source<to);if(REACTIVE_NOISE.test(d.code)&&within(gen.emitted.reactive)||d.code==="TS2554"&&d.message.startsWith("Expected 3 arguments")&&within(gen.emitted.transitions))continue;let start=locator(gen.svelte,()=>gen.source).position(source);mapped={...d,file:gen.svelte,line:start.line,column:start.column,...endOf(gen.source,source,gen.svelte),severity:"error",source:gen.isTs?"ts":"js"}}else if(inOutput(d.file)||!project.reports(abs)){if(inOutput(d.file))dropped.push({...d,file:abs,severity:"error",source:"ts"});continue}else{let content=readFileSync4(abs,"utf-8"),offset=locator(abs,()=>content).offset(d.line,d.column);mapped={...d,file:abs,...endOf(content,offset,abs),severity:"error",source:JS_FILE2.test(abs)?"js":"ts"}}let key=`${mapped.file}:${mapped.line}:${mapped.column}:${mapped.code}`;if(seen.has(key))continue;seen.add(key),diagnostics.push(mapped)}let generatedPath=new RegExp(`${escapeRegExp(`${toPosix2(genDir)}/`)}[^"'\\s]*`,"gi");for(let d of diagnostics)if(d.message=d.message.replace(generatedPath,(path)=>asTypeScriptPath(join6(root,relative2(toPosix2(genDir),path)).replace(GENERATED_NAME,"$1.svelte"))),process.platform==="win32")d.message=d.message.replace(DRIVE_PATH,(drive)=>drive.toLowerCase());if(diagnostics.push(...compiled),sources.has("js"))diagnostics.push(...parseErrors);if(sources.has("js")&&project.tsconfig&&!project.allowJs){let untyped=new Set(files.filter((path,i)=>!TS_SCRIPT.test(texts[i]??"")&&!existsSync4(`${path}.d.ts`))),resolveImport=importResolver([root,...project.rootDirs],project.paths),svelteImportsOf=(content,component)=>{if(!content.includes(".svelte"))return[];let lexed=component?lexComponent2(content):void 0,ranges=lexed?[lexed.module,lexed.instance].flatMap((script)=>script?[[script.content.start,script.content.end]]:[]):[[0,content.length]],locate=createLocator(content);return ranges.flatMap(([start,end])=>lexImportsExports(content.slice(start,end)).flatMap((statement)=>{let specifier=statement.source?.value;if(!specifier?.endsWith(".svelte"))return[];let at=locate.position(start+(statement.source?.start??0));return[[specifier,at.line,at.column]]}))},tsSources=[...files.filter((_,i)=>TS_SCRIPT.test(texts[i]??"")),...listedFiles.filter((path)=>TS_MODULE.test(path))];for(let path of tsSources)for(let[specifier,line,column]of fileFacts.of(path,"svelteImports",(content)=>svelteImportsOf(content,path.endsWith(".svelte")))){let target=resolveImport(path,specifier);if(!target||!untyped.has(target))continue;diagnostics.push({file:path,line,column,severity:"error",source:"ts",code:"TS7016",message:`Could not find a declaration file for module '${specifier}'. '${asTypeScriptPath(target)}' implicitly has an 'any' type.`})}}if(project.tsconfig&&!options.components&&files.length===0)diagnostics.push({file:project.tsconfig,line:1,column:1,endLine:1,endColumn:1,severity:"warning",source:"svelte",code:"100001",message:`No svelte input files were found in config file '${asTypeScriptPath(project.tsconfig)}'. Did you forget to add svelte files to the 'include' in your ${basename3(project.tsconfig)}? Specified 'include' paths were '${JSON.stringify(project.raw.include)}' and 'exclude' paths were '${JSON.stringify(project.raw.exclude)}'`});let reported=errorsOnly?diagnostics.filter((d)=>d.severity==="error"):diagnostics,generatedOf=new Map([...outputs].map(([genPath,gen])=>[gen.svelte,genPath])),listed=listedFiles,listedSet=new Set(listed),imports=new Map,order=programOrder([...listed,...[...new Set(reported.map((d)=>d.file))].filter((file)=>!listedSet.has(file)).sort(byFolder)],(file)=>fileFacts.of(generatedOf.get(file)??file,"specifiers",(code)=>[...code.matchAll(STATIC_IMPORT),...code.matchAll(DYNAMIC_IMPORT)].map((m)=>m[1]??"")),importResolver([root,...project.rootDirs],project.paths),imports),skipped=0;if(options.only){let shown=new Set(options.only.map((path)=>resolve3(cwd,path)));for(let[file,targets]of imports)for(let target of targets)if(options.only.some((path)=>resolve3(cwd,path)===target))shown.add(file);let kept=reported.filter((d)=>shown.has(d.file));skipped=reported.length-kept.length,reported.length=0,reported.push(...kept)}let sourceRank=(d)=>d.source==="svelte"?0:1;reported.sort((a,b)=>(order.get(a.file)??0)-(order.get(b.file)??0)||sourceRank(a)-sourceRank(b));let result={diagnostics:reported,workspace,tsconfig:project.tsconfig,components:files.length,skipped,dropped,failed,checker,checkerVersion:command.version,timings:{emit:emitted-started,check:checked-emitted,compile:compiledAt-emitted}},inputs=[...order.keys()].filter((path)=>!under(path,outDir));if(incremental)await fileFacts.save();if(incremental)await writeFile(resultPath,JSON.stringify({key:runKey,inputs,inputsKey:hash(JSON.stringify(statsOf(inputs))),result}));return result}var FACTS_CACHE="files.json";async function factsCache(path,enabled){let entries=enabled?await readFile(path,"utf-8").then((text)=>{let cache=JSON.parse(text);return cache.format===CACHE_FORMAT?cache.entries:{}}).catch(()=>({})):{},used={};return{of(file,kind,compute){let stat=statsOf([file])[0]??"",facts=used[file]??entries[file];if(facts?.stat!==stat)facts={stat};return used[file]=facts,facts[kind]??=compute(readFileSync4(file,"utf-8")),facts[kind]},save:()=>writeFile(path,JSON.stringify({format:CACHE_FORMAT,entries:used}))}}function statsOf(paths){return paths.map((path)=>{let stat=statSync(path,{throwIfNoEntry:!1});return stat?`${path}:${stat.size}:${stat.mtimeMs}`:`${path}:-`})}var PACKAGE_FILES=["package.json","bun.lock","bun.lockb","package-lock.json","pnpm-lock.yaml","yarn.lock"];function packageFilesOf(dir){let found=[];for(let at=dir;;at=dirname5(at))if(found.push(...PACKAGE_FILES.map((name)=>join6(at,name))),dirname5(at)===at)return found}import{watch as watchFiles}from"node:fs";import{resolve as resolve4,sep as sep3}from"node:path";var WATCHED=/\.(?:svelte|[cm]?[jt]sx?|json)$/,DEBOUNCE_MS=100;function watch2(options,onResult){let cwd=resolve4(options.cwd??process.cwd()),workspace=resolve4(cwd,options.workspace??"."),run={...options,cwd,incremental:!0},timer,running=!1,again=!1,check=async()=>{if(running){again=!0;return}running=!0;try{onResult(await typecheck2(run))}catch(error){onResult(error)}if(running=!1,again)again=!1,await check()},ignored=(path)=>path.split(sep3).some((part)=>part==="node_modules"||part.startsWith(".")),watcher=watchFiles(workspace,{recursive:!0},(_,filename)=>{if(!filename||ignored(filename)||!WATCHED.test(filename))return;clearTimeout(timer),timer=setTimeout(check,DEBOUNCE_MS)});return check(),()=>{clearTimeout(timer),watcher.close()}}import{readFileSync as readFileSync5}from"node:fs";import{relative as relative3,sep as sep4}from"node:path";var LINE_BREAK3=/\r?\n/;function keyer(workspace){let lines=new Map,lineOf=(d)=>{let text=lines.get(d.file);if(!text){try{text=readFileSync5(d.file,"utf-8").split(LINE_BREAK3)}catch{text=[]}lines.set(d.file,text)}return(text[d.line-1]??"").trim()},prefix=`${workspace}${sep4}`;return(d)=>({file:relative3(workspace,d.file).split(sep4).join("/"),code:d.code,message:d.message.replaceAll(prefix,""),line:lineOf(d)})}var keyOf=(e)=>JSON.stringify([e.file,e.code,e.message,e.line]);function createBaseline2(diagnostics,workspace){let toEntry=keyer(workspace),entries=new Map;for(let d of diagnostics){let entry=toEntry(d),key=keyOf(entry),found=entries.get(key);if(found)found.count++;else entries.set(key,{...entry,count:1})}return{version:1,diagnostics:[...entries.entries()].sort(([a],[b])=>a<b?-1:Number(a>b)).map(([,entry])=>entry)}}function applyBaseline2(diagnostics,baseline,workspace){let toEntry=keyer(workspace),left=new Map(baseline.diagnostics.map((e)=>[keyOf(e),e.count])),fresh=[],known=0;for(let d of diagnostics){let key=keyOf(toEntry(d)),count=left.get(key)??0;if(count>0)left.set(key,count-1),known++;else fresh.push(d)}let fixed=0;for(let count of left.values())fixed+=count;return{diagnostics:fresh,known,fixed}}
|
|
82
|
+
${d.message}`})}continue}let binding=d.code==="TS2322"?gen.emitted.bindingChecks.find((b)=>b.start<=offset&&offset<b.end):void 0;if(binding){let at=locator(gen.svelte,()=>gen.source).position(binding.from),end=locator(gen.svelte,()=>gen.source).position(binding.to);diagnostics.push({...d,file:gen.svelte,line:at.line,column:at.column,endLine:end.line,endColumn:end.column,severity:"error",source:gen.isTs?"ts":"js",message:nonBindableMessage(d.message)});continue}dropped.push({...d,file:abs,severity:"error",source:"ts"});continue}let within=(ranges)=>ranges.some(([from,to])=>from<=source&&source<to);if(REACTIVE_NOISE.test(d.code)&&within(gen.emitted.reactive)||d.code==="TS2554"&&d.message.startsWith("Expected 3 arguments")&&within(gen.emitted.transitions))continue;let start=locator(gen.svelte,()=>gen.source).position(source);mapped={...d,file:gen.svelte,line:start.line,column:start.column,...endOf(gen.source,source,gen.svelte),severity:"error",source:gen.isTs?"ts":"js"}}else if(inOutput(d.file)||!project.reports(abs)){if(inOutput(d.file))dropped.push({...d,file:abs,severity:"error",source:"ts"});continue}else{let content=readFileSync4(abs,"utf-8"),offset=locator(abs,()=>content).offset(d.line,d.column);mapped={...d,file:abs,...endOf(content,offset,abs),severity:"error",source:JS_FILE2.test(abs)?"js":"ts"}}let key=`${mapped.file}:${mapped.line}:${mapped.column}:${mapped.code}`;if(seen.has(key))continue;seen.add(key),diagnostics.push(mapped)}let generatedPath=new RegExp(`${escapeRegExp(`${toPosix2(genDir)}/`)}[^"'\\s]*`,"gi");for(let d of diagnostics)if(d.message=d.message.replace(generatedPath,(path)=>asTypeScriptPath(join6(root,relative2(toPosix2(genDir),path)).replace(GENERATED_NAME,"$1.svelte"))),process.platform==="win32")d.message=d.message.replace(DRIVE_PATH,(drive)=>drive.toLowerCase());if(diagnostics.push(...compiled),sources.has("js"))diagnostics.push(...parseErrors);if(sources.has("js")&&project.tsconfig&&!project.allowJs){let untyped=new Set(files.filter((path,i)=>!TS_SCRIPT.test(texts[i]??"")&&!existsSync4(`${path}.d.ts`))),resolveImport=importResolver([root,...project.rootDirs],project.paths),svelteImportsOf=(content,component)=>{if(!content.includes(".svelte"))return[];let lexed=component?lexComponent2(content):void 0,ranges=lexed?[lexed.module,lexed.instance].flatMap((script)=>script?[[script.content.start,script.content.end]]:[]):[[0,content.length]],locate=createLocator(content);return ranges.flatMap(([start,end])=>lexImportsExports(content.slice(start,end)).flatMap((statement)=>{let specifier=statement.source?.value;if(!specifier?.endsWith(".svelte"))return[];let at=locate.position(start+(statement.source?.start??0));return[[specifier,at.line,at.column]]}))},tsSources=[...files.filter((_,i)=>TS_SCRIPT.test(texts[i]??"")),...listedFiles.filter((path)=>TS_MODULE.test(path))];for(let path of tsSources)for(let[specifier,line,column]of fileFacts.of(path,"svelteImports",(content)=>svelteImportsOf(content,path.endsWith(".svelte")))){let target=resolveImport(path,specifier);if(!target||!untyped.has(target))continue;diagnostics.push({file:path,line,column,severity:"error",source:"ts",code:"TS7016",message:`Could not find a declaration file for module '${specifier}'. '${asTypeScriptPath(target)}' implicitly has an 'any' type.`})}}if(project.tsconfig&&project.inputSpecs&&listedFiles.length===0)diagnostics.push({file:project.tsconfig,line:1,column:1,severity:"error",source:"ts",code:"TS18003",message:`No inputs were found in config file '${asTypeScriptPath(project.tsconfig)}'. Specified 'include' paths were '${JSON.stringify(project.inputSpecs.include)}' and 'exclude' paths were '${JSON.stringify(project.inputSpecs.exclude)}'.`});else if(project.tsconfig&&!options.components&&files.length===0)diagnostics.push({file:project.tsconfig,line:1,column:1,endLine:1,endColumn:1,severity:"warning",source:"svelte",code:"100001",message:`No svelte input files were found in config file '${asTypeScriptPath(project.tsconfig)}'. Did you forget to add svelte files to the 'include' in your ${basename3(project.tsconfig)}? Specified 'include' paths were '${JSON.stringify(project.raw.include)}' and 'exclude' paths were '${JSON.stringify(project.raw.exclude)}'`});let reported=errorsOnly?diagnostics.filter((d)=>d.severity==="error"):diagnostics,generatedOf=new Map([...outputs].map(([genPath,gen])=>[gen.svelte,genPath])),listed=listedFiles,listedSet=new Set(listed),imports=new Map,order=programOrder([...listed,...[...new Set(reported.map((d)=>d.file))].filter((file)=>!listedSet.has(file)).sort(byFolder)],(file)=>fileFacts.of(generatedOf.get(file)??file,"specifiers",(code)=>[...code.matchAll(STATIC_IMPORT),...code.matchAll(DYNAMIC_IMPORT)].map((m)=>m[1]??"")),importResolver([root,...project.rootDirs],project.paths),imports),skipped=0;if(options.only){let shown=new Set(options.only.map((path)=>resolve3(cwd,path)));for(let[file,targets]of imports)for(let target of targets)if(options.only.some((path)=>resolve3(cwd,path)===target))shown.add(file);let kept=reported.filter((d)=>shown.has(d.file));skipped=reported.length-kept.length,reported.length=0,reported.push(...kept)}let sourceRank=(d)=>d.source==="svelte"?0:1;reported.sort((a,b)=>(order.get(a.file)??0)-(order.get(b.file)??0)||sourceRank(a)-sourceRank(b));let result={diagnostics:reported,workspace,tsconfig:project.tsconfig,components:files.length,skipped,dropped,failed,checker,checkerVersion:command.version,timings:{emit:emitted-started,check:checked-emitted,compile:compiledAt-emitted}},inputs=[...order.keys()].filter((path)=>!under(path,outDir));if(incremental)await fileFacts.save();if(incremental)await writeFile(resultPath,JSON.stringify({key:runKey,inputs,inputsKey:hash(JSON.stringify(statsOf(inputs))),result}));return result}var FACTS_CACHE="files.json";async function factsCache(path,enabled){let entries=enabled?await readFile(path,"utf-8").then((text)=>{let cache=JSON.parse(text);return cache.format===CACHE_FORMAT?cache.entries:{}}).catch(()=>({})):{},used={};return{of(file,kind,compute){let stat=statsOf([file])[0]??"",facts=used[file]??entries[file];if(facts?.stat!==stat)facts={stat};return used[file]=facts,facts[kind]??=compute(readFileSync4(file,"utf-8")),facts[kind]},save:()=>writeFile(path,JSON.stringify({format:CACHE_FORMAT,entries:used}))}}function statsOf(paths){return paths.map((path)=>{let stat=statSync(path,{throwIfNoEntry:!1});return stat?`${path}:${stat.size}:${stat.mtimeMs}`:`${path}:-`})}var PACKAGE_FILES=["package.json","bun.lock","bun.lockb","package-lock.json","pnpm-lock.yaml","yarn.lock"];function packageFilesOf(dir){let found=[];for(let at=dir;;at=dirname5(at))if(found.push(...PACKAGE_FILES.map((name)=>join6(at,name))),dirname5(at)===at)return found}import{watch as watchFiles}from"node:fs";import{resolve as resolve4,sep as sep3}from"node:path";var WATCHED=/\.(?:svelte|[cm]?[jt]sx?|json)$/,DEBOUNCE_MS=100;function watch2(options,onResult){let cwd=resolve4(options.cwd??process.cwd()),workspace=resolve4(cwd,options.workspace??"."),run={...options,cwd,incremental:!0},timer,running=!1,again=!1,check=async()=>{if(running){again=!0;return}running=!0;try{onResult(await typecheck2(run))}catch(error){onResult(error)}if(running=!1,again)again=!1,await check()},ignored=(path)=>path.split(sep3).some((part)=>part==="node_modules"||part.startsWith(".")),watcher=watchFiles(workspace,{recursive:!0},(_,filename)=>{if(!filename||ignored(filename)||!WATCHED.test(filename))return;clearTimeout(timer),timer=setTimeout(check,DEBOUNCE_MS)});return check(),()=>{clearTimeout(timer),watcher.close()}}import{readFileSync as readFileSync5}from"node:fs";import{relative as relative3,sep as sep4}from"node:path";var LINE_BREAK3=/\r?\n/;function keyer(workspace){let lines=new Map,lineOf=(d)=>{let text=lines.get(d.file);if(!text){try{text=readFileSync5(d.file,"utf-8").split(LINE_BREAK3)}catch{text=[]}lines.set(d.file,text)}return(text[d.line-1]??"").trim()},prefix=`${workspace}${sep4}`;return(d)=>({file:relative3(workspace,d.file).split(sep4).join("/"),code:d.code,message:d.message.replaceAll(prefix,""),line:lineOf(d)})}var keyOf=(e)=>JSON.stringify([e.file,e.code,e.message,e.line]);function createBaseline2(diagnostics,workspace){let toEntry=keyer(workspace),entries=new Map;for(let d of diagnostics){let entry=toEntry(d),key=keyOf(entry),found=entries.get(key);if(found)found.count++;else entries.set(key,{...entry,count:1})}return{version:1,diagnostics:[...entries.entries()].sort(([a],[b])=>a<b?-1:Number(a>b)).map(([,entry])=>entry)}}function applyBaseline2(diagnostics,baseline,workspace){let toEntry=keyer(workspace),left=new Map(baseline.diagnostics.map((e)=>[keyOf(e),e.count])),fresh=[],known=0;for(let d of diagnostics){let key=keyOf(toEntry(d)),count=left.get(key)??0;if(count>0)left.set(key,count-1),known++;else fresh.push(d)}let fixed=0;for(let count of left.values())fixed+=count;return{diagnostics:fresh,known,fixed}}
|
|
83
83
|
export{compilerDiagnostics2,EmitError,typecheck2,watch2,createBaseline2,applyBaseline2};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{version2,package_default}from"./shared-58j2f7by.js";export{package_default as default,version2 as version};
|
package/CHANGELOG.md
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
## 0.1.0 — 2026-11-04
|
|
4
|
-
|
|
5
|
-
The first release of svelte-typecheck, the Svelte type checker extracted
|
|
6
|
-
from carbon-components-svelte's `scripts/typecheck`.
|
|
7
|
-
|
|
8
|
-
**Features**
|
|
9
|
-
|
|
10
|
-
- A drop-in for svelte-check: its options, its four output formats, its
|
|
11
|
-
exit codes, and its diagnostics, in its order, with its message rewrites
|
|
12
|
-
and filters.
|
|
13
|
-
- Svelte 3, 4 and 5: legacy syntax, `$$Props`/`$$Events`/`$$Slots`,
|
|
14
|
-
generics, and runes (`$props()`, `$bindable()`, snippets, `{@attach}`,
|
|
15
|
-
function bindings, `<svelte:boundary>`).
|
|
16
|
-
- SvelteKit: `./$types`, typed `load`, `actions`, page options, request
|
|
17
|
-
handlers, hooks and param matchers, and `paths` or `#imports` aliases.
|
|
18
|
-
- The Svelte config as svelte-check finds it: a `vite.config`, through
|
|
19
|
-
the project's own Vite, then a `svelte.config`, for its preprocessors
|
|
20
|
-
and `compilerOptions`.
|
|
21
|
-
- Any checker: the project's `tsc` (default), tsgo, tsrs or `bun check`.
|
|
22
|
-
- Incremental by default: a run regenerates and rechecks only what
|
|
23
|
-
changed, and returns the last result when nothing did;
|
|
24
|
-
`--no-incremental` starts over. `--watch` checks again on each change.
|
|
25
|
-
- Beyond svelte-check: `--baseline` and `--update-baseline` to fail only
|
|
26
|
-
on new errors, and `--changed` and `--since <ref>` to report only the
|
|
27
|
-
files a change reaches.
|
|
28
|
-
- No dependencies: sveast is bundled and Svelte is a peer. Node 22+ or
|
|
29
|
-
Bun, on macOS, Linux and Windows.
|
package/shared-8s3qd7gw.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{version2,package_default}from"./shared-af1r7qrc.js";export{package_default as default,version2 as version};
|
package/shared-af1r7qrc.js
DELETED