svelte-typecheck 0.1.8 → 0.1.10
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 +3 -0
- package/cli.js +1 -74
- package/compile-worker.js +1 -1
- package/index.js +1 -1
- package/package.json +1 -1
- package/shared-08kjv74r.js +2 -0
- package/shared-0rqx0ctr.js +265 -0
- package/shared-cbz6rfgt.js +11 -0
- package/shared-ephganyk.js +83 -0
- package/shared-fn36rk9g.js +1 -0
- package/shared-javac3d2.js +10 -0
- package/{shared-ebbnnbmn.js → shared-kw5z6ysx.js} +1 -1
- package/{shared-xcpj2ac7.js → shared-sm8cekk0.js} +1 -1
- package/{shared-g75sf85w.js → shared-vkye6xwq.js} +5 -5
- package/shared-2ek7s6xw.js +0 -1
- package/shared-7cvnvjc0.js +0 -2
- package/shared-8badht7e.js +0 -4
- package/shared-atsj8zxq.js +0 -4
- package/shared-exams0w3.js +0 -6
- package/shared-msaa239m.js +0 -263
package/README.md
CHANGED
|
@@ -73,6 +73,9 @@ svelte-typecheck --baseline errors.json --strict-baseline
|
|
|
73
73
|
# Check again on every change
|
|
74
74
|
svelte-typecheck --watch
|
|
75
75
|
|
|
76
|
+
# Run on a process kept alive between runs, for agents and hooks
|
|
77
|
+
svelte-typecheck --daemon
|
|
78
|
+
|
|
76
79
|
# Ignore the cache from earlier runs
|
|
77
80
|
svelte-typecheck --no-incremental
|
|
78
81
|
```
|
package/cli.js
CHANGED
|
@@ -1,75 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import
|
|
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
|
-
`).slice(d.line,endLine-1),last.slice(0,endColumn-1)].join(`
|
|
5
|
-
`))+last.slice(endColumn-1),before=d.line>1?`${lineOf(text,d.line-1)}
|
|
6
|
-
`:"",after=lineOf(text,endLine+1);return`${before}${middle}
|
|
7
|
-
${after}`}function codeOf(d){if(d.code.startsWith("TS"))return Number(d.code.slice(2));return NUMERIC.test(d.code)?Number(d.code):d.code}var NUMERIC=/^-?\d+$/;function sourceOf(d){return d.file.endsWith(".svelte")||d.source==="svelte"?d.source:void 0}var COMPILER_CODE=/^[a-z][\w-]*[-_][\w-]*$/,DASH=/-/g;function codeDescriptionOf(d){if(d.source!=="svelte"||!COMPILER_CODE.test(d.code))return;return{href:`https://svelte.dev/docs/svelte/${d.severity==="warning"?"compiler-warnings":"compiler-errors"}#${d.code.replace(DASH,"_")}`}}function summarize(diagnostics,files){let errors=diagnostics.filter((d)=>d.severity==="error").length;return{files,errors,warnings:diagnostics.length-errors,filesWithProblems:new Set(diagnostics.map((d)=>d.file)).size}}var DRIVE=/^[A-Z]:/;function displayed(workspace){return process.platform==="win32"?workspace.replace(DRIVE,(drive)=>drive.toLowerCase()):workspace}function writer(format,write,c){let machine=format.startsWith("machine"),verbose=format.endsWith("verbose"),log=(message)=>write(`${Date.now()} ${message}
|
|
8
|
-
`);return{start(workspace,clearScreen=!1){if(!machine&&clearScreen&&process.stdout.isTTY)write("\x1B[2J\x1B[3J\x1B[H");if(machine)log(`START ${JSON.stringify(displayed(workspace))}`);else if(verbose)write(`Loading svelte-typecheck in workspace: ${displayed(workspace)}
|
|
9
|
-
Getting Svelte diagnostics...
|
|
10
|
-
|
|
11
|
-
`)},diagnostic(d,workspace){let filename=relative(workspace,d.file),type=d.severity==="error"?"ERROR":"WARNING";if(machine){if(verbose)log(JSON.stringify({type,filename,start:{line:d.line-1,character:d.column-1},end:{line:(d.endLine??d.line)-1,character:(d.endColumn??d.column)-1},message:d.message,code:codeOf(d),codeDescription:codeDescriptionOf(d),source:sourceOf(d)}));else log(`${type} ${JSON.stringify(filename)} ${d.line}:${d.column} ${JSON.stringify(d.message)}`);return}write(`${displayed(workspace)}${sep}${c.green(filename)}:${d.line}:${d.column}
|
|
12
|
-
`);let source=sourceOf(d)?`(${d.source})`:"",message=verbose?`${d.message} ${source}
|
|
13
|
-
${c.cyan(codeFrame(d,c).trimEnd())}`:`${d.message} ${source}`;write(`${d.severity==="error"?c.red("Error"):c.yellow("Warn")}: ${message}
|
|
14
|
-
|
|
15
|
-
`)},note(text){if(!machine)write(`${text}
|
|
16
|
-
`)},completion(summary,watching=!1){let{files,errors,warnings,filesWithProblems}=summary;if(machine){log(`COMPLETED ${files} FILES ${errors} ERRORS ${warnings} WARNINGS ${filesWithProblems} FILES_WITH_PROBLEMS`);return}if(filesWithProblems)write(`====================================
|
|
17
|
-
`);let message=`svelte-typecheck found ${errors} ${errors===1?"error":"errors"} and ${warnings} ${warnings===1?"warning":"warnings"}${filesWithProblems?` in ${filesWithProblems} ${filesWithProblems===1?"file":"files"}`:""}
|
|
18
|
-
`;if(errors)write(c.red(message));else if(warnings)write(c.yellow(message));else write(c.green(message));if(watching)write("Watching for file changes...")},failure(error){if(machine)log(`FAILURE ${JSON.stringify(error.message)}`);else write(`${error.message}
|
|
19
|
-
`)}}}import{spawnSync}from"node:child_process";import{join}from"node:path";var LINE_BREAK=/\r?\n/;function git(args,cwd){let result=spawnSync("git",args,{cwd,encoding:"utf-8"});if(result.status!==0)throw Error(`git ${args.join(" ")} failed: ${(result.stderr||result.error?.message||"").trim()}`);return result.stdout}function changedFiles(cwd,since){let top=git(["rev-parse","--show-toplevel"],cwd).trim(),base=since?git(["merge-base",since,"HEAD"],cwd).trim():"HEAD",lines=[...git(["diff","--name-only",base],cwd).split(LINE_BREAK),...git(["ls-files","--others","--exclude-standard"],top).split(LINE_BREAK)];return[...new Set(lines.filter(Boolean).map((line)=>join(top,line)))]}var HELP=`Usage: svelte-typecheck [options]
|
|
20
|
-
|
|
21
|
-
Type-checks Svelte components, as svelte-check does.
|
|
22
|
-
|
|
23
|
-
svelte-check's options:
|
|
24
|
-
--workspace <dir> Project folder (default: the current one)
|
|
25
|
-
--output <format> human, human-verbose, machine or machine-verbose
|
|
26
|
-
(default: human-verbose)
|
|
27
|
-
--tsconfig <path> tsconfig or jsconfig, relative to the workspace;
|
|
28
|
-
its TS and JS files' errors are reported too
|
|
29
|
-
(default: the nearest from the workspace up)
|
|
30
|
-
--no-tsconfig Check every component under the workspace, and
|
|
31
|
-
no TS or JS files
|
|
32
|
-
--ignore <list> With --no-tsconfig: paths to skip, relative to
|
|
33
|
-
the workspace, comma-separated
|
|
34
|
-
--config <path> vite.config or svelte.config to read preprocessors
|
|
35
|
-
and compilerOptions from (default: the nearest)
|
|
36
|
-
--diagnostic-sources <list>
|
|
37
|
-
js, svelte and css, comma-separated (default: all;
|
|
38
|
-
css reports nothing)
|
|
39
|
-
--threshold <level> error reports errors only (default: warning)
|
|
40
|
-
--compiler-warnings <list>
|
|
41
|
-
code:ignore or code:error, comma-separated
|
|
42
|
-
--fail-on-warnings Exit 1 on a warning too
|
|
43
|
-
--color, --no-color Force color on or off
|
|
44
|
-
--watch Check again when a file changes
|
|
45
|
-
--preserveWatchOutput Don't clear the screen between watch runs
|
|
46
|
-
--incremental Keep generated code between runs, and let the
|
|
47
|
-
checker reuse its last run (the default)
|
|
48
|
-
--no-incremental Start from nothing each run
|
|
49
|
-
--tsgo Check with tsgo (same as --checker tsgo)
|
|
50
|
-
-h, --help Show this help
|
|
51
|
-
-v, --version Show the version
|
|
52
|
-
|
|
53
|
-
svelte-typecheck's own:
|
|
54
|
-
--checker <name> tsc, tsgo, tsrs or bun (default: the project's
|
|
55
|
-
TypeScript, then the first installed)
|
|
56
|
-
--components <glob> Components to check, relative to the workspace,
|
|
57
|
-
instead of the tsconfig's; repeatable
|
|
58
|
-
--out-dir <dir> Where to write the generated code (default:
|
|
59
|
-
node_modules/.cache/svelte-typecheck/<workspace>)
|
|
60
|
-
--no-declarations Resolve component imports to their own
|
|
61
|
-
.svelte.d.ts
|
|
62
|
-
--svelte <dir> Svelte package to check against
|
|
63
|
-
--changed Report only files changed from HEAD (and
|
|
64
|
-
untracked), and the files that import them
|
|
65
|
-
--since <ref> As --changed, from where the branch left <ref>
|
|
66
|
-
--baseline <file> Report only diagnostics the baseline doesn't have
|
|
67
|
-
--update-baseline Write the run's diagnostics to the baseline
|
|
68
|
-
--strict-baseline Exit 1 when the baseline has fixed diagnostics,
|
|
69
|
-
so it only goes down
|
|
70
|
-
|
|
71
|
-
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}
|
|
72
|
-
|
|
73
|
-
${HELP}`),1}if(values.help)return console.log(HELP),0;if(values.version){let{version}=await import("./shared-2ek7s6xw.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;let strict=values["strict-baseline"];if(strict&&!baselinePath)return out.failure(Error("--strict-baseline needs --baseline <file>")),1;for(let flag of["update-baseline","strict-baseline"])if(values[flag]&&(values.changed||values.since))return out.failure(Error(`--${flag} 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}
|
|
74
|
-
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)}
|
|
75
|
-
`),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||strict&&(known?.fixed??0)>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},"strict-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));
|
|
2
|
+
import{wantsDaemon,runArguments,runThroughDaemon,daemonCommand}from"./shared-cbz6rfgt.js";var argv=process.argv.slice(2),command=argv.length===1?argv[0]:void 0,here=async(args)=>(await import("./shared-ephganyk.js")).main(args);if(command==="start"||command==="stop"||command==="status")process.exitCode=await daemonCommand(command);else if(wantsDaemon(argv)){let args=runArguments(argv);process.exitCode=await runThroughDaemon(args,()=>here(args))}else process.exitCode=await here(argv);
|
package/compile-worker.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{compileAll}from"./shared-
|
|
1
|
+
import{compileAll,compileFiles}from"./shared-javac3d2.js";import{parentPort}from"node:worker_threads";parentPort?.on("message",async(message)=>{let{id}=message;try{parentPort?.postMessage({id,result:"files"in message?await compileFiles(message.files):await compileAll(message.request)})}catch(error){parentPort?.postMessage({id,error:error instanceof Error?error.message:String(error)})}});
|
package/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import{typecheck2,watch2,createBaseline2,applyBaseline2}from"./shared-0rqx0ctr.js";import{compilerDiagnostics2}from"./shared-javac3d2.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.10",
|
|
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)",
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{existsSync,readFileSync,realpathSync}from"node:fs";import{createRequire}from"node:module";import{basename,dirname,join}from"node:path";import{pathToFileURL}from"node:url";var VITE_CONFIGS=["js","mjs","ts","cjs","mts","cts"].map((ext)=>`vite.config.${ext}`),SVELTE_CONFIGS=["js","cjs","mjs",...process.versions.bun||process.features.typescript?["ts","mts"]:[]].map((ext)=>`svelte.config.${ext}`),SVELTE_CONFIG=/^svelte\.config\./;async function svelteConfigOf(dir,explicit){let config=(explicit?await fromFile(explicit):await fromDir(dir))??{},{preprocess}=config;return{preprocess:preprocess&&(Array.isArray(preprocess)?preprocess:[preprocess]),compilerOptions:{dev:!0,...config.compilerOptions}}}function configFingerprint(dir,explicit){let parts=[],add=(path)=>{try{parts.push(path,readFileSync(path,"utf-8"))}catch{}};if(explicit)add(explicit);else for(let at=dir;;at=dirname(at)){for(let name of[...VITE_CONFIGS,...SVELTE_CONFIGS]){let path=join(at,name);if(existsSync(path))add(path)}if(dirname(at)===at)break}return JSON.stringify(parts)}function configNeedsChdir(dir,explicit){let cwd=realPath(process.cwd());if(explicit)return!SVELTE_CONFIG.test(basename(explicit))&&realPath(dirname(explicit))!==cwd;for(let at=realPath(dir);;at=dirname(at)){if(at!==cwd&&firstIn(at,VITE_CONFIGS))return!0;if(dirname(at)===at)return!1}}var realPath=(path)=>{try{return realpathSync(path)}catch{return path}},firstIn=(dir,names)=>names.map((name)=>join(dir,name)).find((path)=>existsSync(path));async function fromFile(path){if(SVELTE_CONFIG.test(basename(path)))return fromSvelteConfig(path);let result=await fromVite(dirname(path),path);return result==="error"?void 0:result??fromSvelteConfig(path)}async function fromDir(dir){for(let at=dir;;at=dirname(at)){let vite=firstIn(at,VITE_CONFIGS),result=vite?await fromVite(at,vite):void 0;if(result&&result!=="error")return result;let svelte=firstIn(at,SVELTE_CONFIGS);if(svelte)return fromSvelteConfig(svelte);if(result==="error"||dirname(at)===at)return}}async function fromSvelteConfig(path){try{return(await import(pathToFileURL(path).href)).default}catch{return}}var resolving=Promise.resolve();async function fromVite(root,configFile){let vite=await importVite(root);if(!vite)return;let previous=resolving,done=()=>{};resolving=new Promise((resolve)=>{done=resolve}),await previous;let cwd=process.cwd();try{process.chdir(root)}catch{}try{let{plugins}=await vite.resolveConfig({root,configFile,logLevel:"error"},"serve"),options=(name)=>plugins.find((p)=>p.name===name)?.api?.options;return options("vite-plugin-sveltekit-setup")??options("vite-plugin-svelte:config")}catch{return"error"}finally{try{process.chdir(cwd)}catch{}done()}}async function importVite(root){try{let pkgPath=createRequire(join(root,"package.json")).resolve("vite/package.json"),pkg=JSON.parse(readFileSync(pkgPath,"utf-8")),entry=importEntry(pkg.exports?.["."])??pkg.module??pkg.main;if(!entry)return;return await import(pathToFileURL(join(dirname(pkgPath),entry)).href)}catch{return}}function importEntry(entry){if(typeof entry==="string")return entry;if(!entry||typeof entry!=="object")return;let{import:imported,default:fallback}=entry;if(typeof imported==="string")return imported;if(imported&&typeof imported==="object"){let nested=imported.default;if(typeof nested==="string")return nested}return typeof fallback==="string"?fallback:void 0}
|
|
2
|
+
export{svelteConfigOf,configFingerprint,configNeedsChdir};
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import{lexComponent2,lexImportsExports,createLocator,svelteDirOf,compileAll,compileOffThread,compileKey,compileFilesOffThread,withEdits}from"./shared-javac3d2.js";import{configFingerprint}from"./shared-08kjv74r.js";import{spawn}from"node:child_process";import{createHash}from"node:crypto";import{existsSync as existsSync3,readFileSync as readFileSync3,statSync}from"node:fs";import{mkdir,readdir,readFile,rename,rm,writeFile}from"node:fs/promises";import{createRequire as createRequire2}from"node:module";import{basename as basename2,dirname as dirname3,join as join4,relative as relative2,resolve as resolve2,sep as sep2}from"node:path";var version2="0.1.10",package_default={version:version2};import{existsSync,readFileSync}from"node:fs";import{delimiter,dirname,join}from"node:path";import{pathToFileURL}from"node:url";var CHECKERS=["tsc","tsgo","tsrs","bun"],PACKAGES={tsc:["typescript","tsc"],tsgo:["@typescript/native-preview","tsgo"],tsrs:["tsrs","tsrs"]},NODE_SHEBANG=/^#!.*\bnode\b/,WINDOWS_SHIM=/\.(cmd|bat)$/i;function onPath(name,platform=process.platform){let extensions=platform==="win32"?(process.env.PATHEXT??".COM;.EXE;.BAT;.CMD").split(";").filter(Boolean).flatMap((ext)=>[ext.toLowerCase(),ext]):[""];for(let dir of(process.env.PATH??"").split(delimiter)){if(!dir)continue;for(let ext of extensions){let candidate=join(dir,name+ext);if(existsSync(candidate))return candidate}}return}function packageDir(name,cwd){for(let dir=cwd;;dir=dirname(dir)){let candidate=join(dir,"node_modules",name);if(existsSync(join(candidate,"package.json")))return candidate;if(dirname(dir)===dir)return}}function checkerCommand(checker,cwd){if(checker==="bun"){let bun=process.versions.bun?process.execPath:onPath("bun");return bun?{command:bun,prefix:[],version:process.versions.bun}:void 0}let[name,bin]=PACKAGES[checker],dir=packageDir(name,cwd);if(dir){let pkg=JSON.parse(readFileSync(join(dir,"package.json"),"utf-8")),relative=typeof pkg.bin==="string"?pkg.bin:pkg.bin?.[bin];if(relative){let path=join(dir,relative),head=readFileSync(path,"utf-8").slice(0,100);return NODE_SHEBANG.test(head)?{command:process.execPath,prefix:[path],version:pkg.version}:{command:path,prefix:[],version:pkg.version}}}let found=onPath(bin);if(!found)return;return WINDOWS_SHIM.test(found)?{command:found,prefix:[],shell:!0}:{command:found,prefix:[]}}async function nativeCommand(command){let[launcher,...rest]=command.prefix;if(!launcher||rest.length>0)return command;let lookup=join(dirname(launcher),"..","lib","getExePath.js");if(!existsSync(lookup))return command;try{let{default:getExePath}=await import(pathToFileURL(lookup).href);return{...command,command:getExePath(),prefix:[]}}catch{return command}}function checkerArgs(checker,tsconfig){return checker==="bun"?["check","-p",tsconfig,"--no-pretty","--all"]:["-p",tsconfig,"--pretty","false"]}import{readdirSync}from"node:fs";import{join as join2}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(join2(dir,entry.name),`${rel}/`)}else if(matches(rel))found.push(rel)}};return walk(root,""),found.sort()}import{existsSync as existsSync2,readFileSync as readFileSync2}from"node:fs";import{createRequire}from"node:module";import{basename,dirname as dirname2,isAbsolute,join as join3,relative,resolve,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(readFileSync2(path,"utf-8")),dir=dirname2(path),absolute=(list)=>list?.map((p)=>resolve(dir,p)),inputs={},bases=typeof config.extends==="string"?[config.extends]:config.extends;for(let base of bases??[]){let basePath=base.startsWith(".")?resolve(dir,base):createRequire(path).resolve(base),baseInputs=readInputs(basePath,read),difference=toPosix(relative(dir,dirname2(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?resolve(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,skipLibCheck:options?.skipLibCheck,moduleResolution:options?.moduleResolution,includeSpecs:config.include,excludeSpecs:config.exclude,outDir:options?.outDir&&resolve(dir,options.outDir),declarationDir:options?.declarationDir&&resolve(dir,options.declarationDir),baseUrl,paths:options?.paths&&Object.fromEntries(Object.entries(options.paths).map(([key,targets])=>[key,targets.map((t)=>resolve(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=dirname2(dir)){let path=join3(dir,name);if(existsSync2(path))return path;if(dirname2(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&&!existsSync2(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)=>join3(workspace,rel)),files:[],include:[],exclude:[],rootDirs:[],configFiles:[],paths:{},checkJs:!0,allowJs:!0,skipLibCheck:!0,selfExports:{},raw:{},reports:()=>!1}}let configFiles=[],inputs=readInputs(tsconfig,configFiles),raw=parseJsonc(readFileSync2(tsconfig,"utf-8")),include=inputs.include??(inputs.files?[]:[join3(dirname2(tsconfig),"**/*")]),exclude=inputs.exclude??DEFAULT_EXCLUDE.map((p)=>join3(dirname2(tsconfig),p)),files=new Set(inputs.files??[]),isExcluded=absoluteMatcher(exclude),components;if(options.components)components=glob(workspace,options.components).map((rel)=>join3(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(existsSync2(base))found.add(base);continue}if(!existsSync2(base))continue;for(let rel of glob(base,[rest]))found.add(join3(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(dirname2(tsconfig)),...inputs.paths},checkJs:inputs.checkJs??!1,allowJs:inputs.allowJs??basename(tsconfig)==="jsconfig.json",skipLibCheck:inputs.skipLibCheck??!1,selfExports:LEGACY_RESOLUTION.test(inputs.moduleResolution??"")?{}:exportsOf(dirname2(tsconfig)),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(readFileSync2(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]=[resolve(dirname2(path),target)]}return paths}function exportsOf(dir){let path=findUp(dir,"package.json");if(!path)return{};let name,exports;try{({name,exports}=JSON.parse(readFileSync2(path,"utf-8")))}catch{return{}}if(typeof name!=="string"||exports==null)return{};let subpaths=typeof exports==="object"&&!Array.isArray(exports)&&Object.keys(exports).some((key)=>key.startsWith("."))?exports:{".":exports},paths={};for(let[key,value]of Object.entries(subpaths)){if(!key.startsWith("."))continue;let targets=exportTargets(value).filter((target)=>target.startsWith("./")).map((target)=>resolve(dirname2(path),target));if(targets.length>0)paths[key==="."?name:`${name}/${key.slice(2)}`]=targets}return paths}function exportTargets(value){if(typeof value==="string")return[value];if(Array.isArray(value))return value.flatMap(exportTargets);if(!value||typeof value!=="object")return[];return Object.entries(value).flatMap(([condition,target])=>EXPORT_CONDITIONS.has(condition)?exportTargets(target):[])}var EXPORT_CONDITIONS=new Set(["types","import","default"]),LEGACY_RESOLUTION=/^(node|node10|classic)$/i;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(existsSync2(base)&&PROGRAM_FILE.test(base)&&(project.allowJs||!JS_FILE.test(base)))found.add(base);continue}if(!existsSync2(base))continue;let matched=glob(base,[rest]).map((rel)=>join3(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(existsSync2(base)&&test(base))found.add(base);continue}if(!existsSync2(base))continue;for(let rel of glob(base,[rest])){let path=join3(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 resolve(workspace,option);return findTsconfig(workspace)}var SHIMS={"shims.d.ts":`type SvelteStore<T> = {
|
|
2
|
+
subscribe: (run: (value: T) => any, invalidate?: any) => any;
|
|
3
|
+
};
|
|
4
|
+
type __sveltets_2_SvelteActionReturnType = {
|
|
5
|
+
update?: (args: any) => void;
|
|
6
|
+
destroy?: () => void;
|
|
7
|
+
$$_attributes?: Record<string, any>;
|
|
8
|
+
} | void;
|
|
9
|
+
type __sveltets_2_SvelteTransitionConfig = {
|
|
10
|
+
delay?: number;
|
|
11
|
+
duration?: number;
|
|
12
|
+
easing?: (t: number) => number;
|
|
13
|
+
css?: (t: number, u: number) => string;
|
|
14
|
+
tick?: (t: number, u: number) => void;
|
|
15
|
+
};
|
|
16
|
+
type __sveltets_2_SvelteTransitionReturnType =
|
|
17
|
+
| __sveltets_2_SvelteTransitionConfig
|
|
18
|
+
| (() => __sveltets_2_SvelteTransitionConfig);
|
|
19
|
+
type __sveltets_2_SvelteAnimationReturnType = {
|
|
20
|
+
delay?: number;
|
|
21
|
+
duration?: number;
|
|
22
|
+
easing?: (t: number) => number;
|
|
23
|
+
css?: (t: number, u: number) => string;
|
|
24
|
+
tick?: (t: number, u: number) => void;
|
|
25
|
+
};
|
|
26
|
+
declare type ConstructorOfATypedSvelteComponent = new (args: {
|
|
27
|
+
target: any;
|
|
28
|
+
props?: any;
|
|
29
|
+
}) => $$check.Typed;
|
|
30
|
+
interface __sveltets_2_IsomorphicComponent<
|
|
31
|
+
Props extends Record<string, any> = any,
|
|
32
|
+
Events extends Record<string, any> = any,
|
|
33
|
+
Slots extends Record<string, any> = any,
|
|
34
|
+
Exports = {},
|
|
35
|
+
Bindings = string,
|
|
36
|
+
> {
|
|
37
|
+
new (
|
|
38
|
+
options: import("svelte").ComponentConstructorOptions<Props>,
|
|
39
|
+
): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
40
|
+
$$bindings?: Bindings;
|
|
41
|
+
} & Exports;
|
|
42
|
+
(
|
|
43
|
+
internal: unknown,
|
|
44
|
+
props: Props extends Record<string, never>
|
|
45
|
+
? { $$events?: Events; $$slots?: Slots }
|
|
46
|
+
: Props & { $$events?: Events; $$slots?: Slots },
|
|
47
|
+
): Exports & { $set?: any; $on?: any };
|
|
48
|
+
z_$$bindings?: Bindings;
|
|
49
|
+
}
|
|
50
|
+
type __sveltets_2_PropsWithChildren<Props, Slots> = Props &
|
|
51
|
+
(Slots extends { default: any }
|
|
52
|
+
? Props extends Record<string, never>
|
|
53
|
+
? any
|
|
54
|
+
: { children?: any }
|
|
55
|
+
: {});
|
|
56
|
+
declare namespace $$check {
|
|
57
|
+
function any(...checked: any[]): any;
|
|
58
|
+
function none(...checked: any[]): {};
|
|
59
|
+
const children: () => any;
|
|
60
|
+
const target: any;
|
|
61
|
+
function props(): { [index: string]: any };
|
|
62
|
+
function reactive<T>(value: () => T): T;
|
|
63
|
+
function store<T = any>(store: SvelteStore<T>): T;
|
|
64
|
+
function store<Store extends SvelteStore<any> | undefined | null>(
|
|
65
|
+
store: Store,
|
|
66
|
+
): Store extends SvelteStore<infer T> ? T : Store;
|
|
67
|
+
function each<T extends ArrayLike<unknown> | Iterable<unknown>>(
|
|
68
|
+
array:
|
|
69
|
+
| T
|
|
70
|
+
| (typeof import("svelte") extends { mount: any }
|
|
71
|
+
? undefined | null
|
|
72
|
+
: never),
|
|
73
|
+
): T extends ArrayLike<infer U>
|
|
74
|
+
? U[]
|
|
75
|
+
: T extends Iterable<infer U>
|
|
76
|
+
? Iterable<U>
|
|
77
|
+
: any[];
|
|
78
|
+
function item<T>(array: ArrayLike<T>): T;
|
|
79
|
+
function action<T extends __sveltets_2_SvelteActionReturnType>(
|
|
80
|
+
returned: T,
|
|
81
|
+
): T extends { $$_attributes?: any } ? T["$$_attributes"] : {};
|
|
82
|
+
function attributes<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(
|
|
83
|
+
t1: T1,
|
|
84
|
+
t2?: T2,
|
|
85
|
+
t3?: T3,
|
|
86
|
+
t4?: T4,
|
|
87
|
+
t5?: T5,
|
|
88
|
+
t6?: T6,
|
|
89
|
+
t7?: T7,
|
|
90
|
+
t8?: T8,
|
|
91
|
+
t9?: T9,
|
|
92
|
+
t10?: T10,
|
|
93
|
+
): T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & T10;
|
|
94
|
+
function transition(returned: __sveltets_2_SvelteTransitionReturnType): {};
|
|
95
|
+
function animation(returned: __sveltets_2_SvelteAnimationReturnType): {};
|
|
96
|
+
const move: { from: DOMRect; to: DOMRect };
|
|
97
|
+
function domEvent<K extends keyof HTMLElementEventMap>(
|
|
98
|
+
event: K,
|
|
99
|
+
): HTMLElementEventMap[K];
|
|
100
|
+
function getSet<T>(get: (() => T) | null | undefined, set: (t: T) => void): T;
|
|
101
|
+
function elementTag<T extends string>(
|
|
102
|
+
tag: T | undefined | null,
|
|
103
|
+
): keyof HTMLElementTagNameMap extends T ? string : T;
|
|
104
|
+
function snippet(
|
|
105
|
+
// @ts-ignore Svelte 5 only
|
|
106
|
+
rendered: ReturnType<import("svelte").Snippet> | undefined | null,
|
|
107
|
+
): any;
|
|
108
|
+
function matches<Props>(props: Props): {};
|
|
109
|
+
type Details<T> = {
|
|
110
|
+
[K in KeysMatching<T, CustomEvent>]: T[K] extends CustomEvent
|
|
111
|
+
? T[K]["detail"]
|
|
112
|
+
: T[K];
|
|
113
|
+
};
|
|
114
|
+
type KeysMatching<T, V> = {
|
|
115
|
+
[K in keyof T]-?: T[K] extends V ? K : never;
|
|
116
|
+
}[keyof T];
|
|
117
|
+
function dispatched<Typings>(): {
|
|
118
|
+
[K in keyof Typings]: CustomEvent<Typings[K]>;
|
|
119
|
+
};
|
|
120
|
+
function slots<Slots = Record<string, Record<string, any>>>(): <
|
|
121
|
+
Name extends keyof Slots,
|
|
122
|
+
>(
|
|
123
|
+
slotName: Name,
|
|
124
|
+
attrs: Slots[Name],
|
|
125
|
+
) => Record<string, any>;
|
|
126
|
+
type Typed = {
|
|
127
|
+
$$prop_def: any;
|
|
128
|
+
$$events_def: any;
|
|
129
|
+
$$slot_def: any;
|
|
130
|
+
$on(event: string, handler: any): () => void;
|
|
131
|
+
};
|
|
132
|
+
function component<
|
|
133
|
+
T extends
|
|
134
|
+
| ConstructorOfATypedSvelteComponent
|
|
135
|
+
| (typeof import("svelte") extends { mount: any }
|
|
136
|
+
? // @ts-ignore svelte.Component doesn't exist in Svelte 4
|
|
137
|
+
import("svelte").Component<any, any, any>
|
|
138
|
+
: never)
|
|
139
|
+
| null
|
|
140
|
+
| undefined,
|
|
141
|
+
>(
|
|
142
|
+
type: T,
|
|
143
|
+
): NonNullable<
|
|
144
|
+
T extends ConstructorOfATypedSvelteComponent
|
|
145
|
+
? T
|
|
146
|
+
: typeof import("svelte") extends { mount: any }
|
|
147
|
+
? // @ts-ignore svelte.Component doesn't exist in Svelte 4
|
|
148
|
+
T extends import("svelte").Component<
|
|
149
|
+
infer Props extends Record<string, any>,
|
|
150
|
+
infer Exports extends Record<string, any>,
|
|
151
|
+
infer Bindings extends string
|
|
152
|
+
>
|
|
153
|
+
? new (
|
|
154
|
+
options: import("svelte").ComponentConstructorOptions<Props>,
|
|
155
|
+
) => import("svelte").SvelteComponent<
|
|
156
|
+
Props,
|
|
157
|
+
Props["$$events"],
|
|
158
|
+
Props["$$slots"]
|
|
159
|
+
> &
|
|
160
|
+
Exports & { $$bindings: Bindings }
|
|
161
|
+
: never
|
|
162
|
+
: never
|
|
163
|
+
>;
|
|
164
|
+
function bindings<B extends string[]>(...bindings: B): B[number];
|
|
165
|
+
type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never;
|
|
166
|
+
type Loose<Props> = {
|
|
167
|
+
[K in keyof Props]: Props[K] extends never
|
|
168
|
+
? never
|
|
169
|
+
: Props[K] extends undefined
|
|
170
|
+
? any
|
|
171
|
+
: Props[K];
|
|
172
|
+
};
|
|
173
|
+
type LooseSlots<Slots> = {
|
|
174
|
+
[K in keyof Slots]: {
|
|
175
|
+
[S in keyof Slots[K]]: Slots[K][S] extends undefined ? any : Slots[K][S];
|
|
176
|
+
};
|
|
177
|
+
};
|
|
178
|
+
type WithOptional<Props, Keys extends keyof Props> = Omit<Props, Keys> &
|
|
179
|
+
Partial<Pick<Props, Keys>>;
|
|
180
|
+
}`,"svelte3-elements.d.ts":`/// <reference lib="dom" />
|
|
181
|
+
// @ts-nocheck
|
|
182
|
+
declare namespace svelteHTML {
|
|
183
|
+
function mapElementTag<K extends keyof ElementTagNameMap>(
|
|
184
|
+
tag: K,
|
|
185
|
+
): ElementTagNameMap[K];
|
|
186
|
+
function mapElementTag<K extends keyof SVGElementTagNameMap>(
|
|
187
|
+
tag: K,
|
|
188
|
+
): SVGElementTagNameMap[K];
|
|
189
|
+
function mapElementTag(tag: any): any;
|
|
190
|
+
function createElement<
|
|
191
|
+
Elements extends IntrinsicElements,
|
|
192
|
+
Key extends keyof Elements,
|
|
193
|
+
>(
|
|
194
|
+
element: Key | undefined | null,
|
|
195
|
+
attrs: string extends Key
|
|
196
|
+
? import("svelte/elements").HTMLAttributes<any>
|
|
197
|
+
: Elements[Key],
|
|
198
|
+
): Key extends keyof ElementTagNameMap
|
|
199
|
+
? ElementTagNameMap[Key]
|
|
200
|
+
: Key extends keyof SVGElementTagNameMap
|
|
201
|
+
? SVGElementTagNameMap[Key]
|
|
202
|
+
: any;
|
|
203
|
+
function createElement<
|
|
204
|
+
Elements extends IntrinsicElements,
|
|
205
|
+
Key extends keyof Elements,
|
|
206
|
+
T,
|
|
207
|
+
>(
|
|
208
|
+
element: Key | undefined | null,
|
|
209
|
+
attrsEnhancers: T,
|
|
210
|
+
attrs: (string extends Key
|
|
211
|
+
? import("svelte/elements").HTMLAttributes<any>
|
|
212
|
+
: Elements[Key]) &
|
|
213
|
+
T,
|
|
214
|
+
): Key extends keyof ElementTagNameMap
|
|
215
|
+
? ElementTagNameMap[Key]
|
|
216
|
+
: Key extends keyof SVGElementTagNameMap
|
|
217
|
+
? SVGElementTagNameMap[Key]
|
|
218
|
+
: any;
|
|
219
|
+
interface HTMLAttributes<T extends EventTarget = any> {}
|
|
220
|
+
interface SVGAttributes<T extends EventTarget = any> {}
|
|
221
|
+
type HTMLProps<Property, Override> = Omit<
|
|
222
|
+
import("svelte/elements").SvelteHTMLElements[Property],
|
|
223
|
+
keyof Override
|
|
224
|
+
> &
|
|
225
|
+
Override;
|
|
226
|
+
type MappedElements = {
|
|
227
|
+
[
|
|
228
|
+
K in keyof import("svelte/elements").SvelteHTMLElements
|
|
229
|
+
]: K extends \`svelte:\${string}\`
|
|
230
|
+
? import("svelte/elements").SvelteHTMLElements[K]
|
|
231
|
+
: HTMLProps<
|
|
232
|
+
K,
|
|
233
|
+
K extends keyof HTMLElementTagNameMap
|
|
234
|
+
? HTMLAttributes
|
|
235
|
+
: K extends keyof SVGElementTagNameMap
|
|
236
|
+
? SVGAttributes
|
|
237
|
+
: HTMLAttributes
|
|
238
|
+
>;
|
|
239
|
+
};
|
|
240
|
+
interface IntrinsicElements extends MappedElements {}
|
|
241
|
+
}`};function shim(file){return SHIMS[file]}var DIAGNOSTIC=/^(.+?)\((\d+),(\d+)\): error (TS\d+): (.*)$/,CONTINUATION=/^\s+\S/,GLOBAL_DIAGNOSTIC=/^error (TS\d+): (.*)$/,TS_MODULE=/\.[cm]?tsx?$/,IDENTIFIER=/^[A-Za-z_$][\w$]*$/,DECLARATION_FILE=/\.d\.[cm]?ts$/,TS_DIRECTIVE=/^\s*\/\/\s*@ts-(ignore|expect-error)\b/,LINE_BREAK=/\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)$/,CACHE_FORMAT=2,RESULT_CACHE="result.json",EMIT_CACHE="emit-cache.json",COMPILE_CACHE="compile-cache.json",hash=(text)=>createHash("sha1").update(text).digest("hex"),TOOL_KEY=import.meta.url.endsWith(".ts")?hash(glob(import.meta.dirname,["**/*.ts"]).map((rel)=>readFileSync3(join4(import.meta.dirname,rel),"utf-8")).join("\x00")):version2,OFF_THREAD_AT=16,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 run(command,args,cwd,shell=!1){return new Promise((done,fail)=>{let env={...process.env,PWD:cwd},child=shell?spawn(quote(command),args.map(quote),{cwd,env,shell:!0}):spawn(command,args,{cwd,env}),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_BREAK)){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+=`
|
|
242
|
+
${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(specifiersOf,resolveImport){let order=new Map,imports=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++)};return{order,imports,add(roots){for(let root of roots)visit(root)}}}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"),join4(target,"index.ts"),join4(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(join4(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=resolve2(dirname3(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.
|
|
243
|
+
`;function withHint(d,svelteMajor){if(d.code==="TS2345"&&d.message.includes("ConstructorOfATypedSvelteComponent"))return{...d,message:`${d.message}
|
|
244
|
+
|
|
245
|
+
Possible causes:
|
|
246
|
+
- You use the instance type of a component where you should use the constructor type
|
|
247
|
+
- Type definitions are missing for this Svelte Component. ${svelteMajor>=5?"":`If you are using Svelte 3.31+, use SvelteComponentTyped to add a definition:
|
|
248
|
+
import type { SvelteComponentTyped } from "svelte";
|
|
249
|
+
class ComponentName extends SvelteComponentTyped<{propertyName: string;}> {}`}`};if(d.code==="TS1184")return{...d,message:`${d.message}
|
|
250
|
+
If this is a declare statement, move it into <script context="module">..</script>`};return d}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()'
|
|
251
|
+
|
|
252
|
+
${message}`}var NOTHING_EMITTED={reactive:[],transitions:[],storeDeclarations:[],bindingChecks:[]};function kitMajor(root){try{let path=createRequire2(join4(root,"package.json")).resolve("@sveltejs/kit/package.json"),{version}=JSON.parse(readFileSync3(path,"utf-8"));return Number.parseInt(version,10)}catch{return 0}}function commonDir(paths){let common=paths[0]??sep2;for(let path of paths)while(!`${path}${sep2}`.startsWith(`${common}${sep2}`)&&common!==sep2)common=dirname3(common);return common}async function typecheck2(options={}){let cwd=resolve2(options.cwd??process.cwd()),workspace=resolve2(cwd,options.workspace??"."),project=projectOf({workspace,tsconfig:options.tsconfig,ignore:options.ignore,components:options.components}),outDir=resolve2(cwd,options.outDir??join4("node_modules/.cache/svelte-typecheck",relative2(cwd,workspace))),genDir=join4(outDir,"svelte"),declarations=options.declarations??!0,svelteDir=svelteDirOf(cwd,options.svelte),sources=new Set(options.diagnosticSources??["js","svelte"]),errorsOnly=options.threshold==="error",{version}=JSON.parse(readFileSync3(join4(svelteDir,"package.json"),"utf-8")),svelteMajor=Number(version.split(".")[0]),svelteHtml=svelteMajor===3?join4(outDir,"svelte-html.d.ts"):join4(svelteDir,"svelte-html.d.ts"),checker=options.checker??CHECKERS.find((c)=>checkerCommand(c,workspace)!==void 0),command=checker&&checkerCommand(checker,workspace),native=command?nativeCommand(command):void 0;if(sources.has("js")&&!(checker&&command))throw Error(`No type checker found: install \`typescript\` (or one of ${CHECKERS.slice(1).join(", ")}), or name one with \`checker\`.`);let started=performance.now(),incremental=options.incremental??!0,configDir=options.config?dirname3(resolve2(workspace,options.config)):workspace,configFile=options.config?resolve2(workspace,options.config):void 0,compileStartedAt,compilingEarly=sources.has("svelte")&&sources.has("js")&&project.components.length>=OFF_THREAD_AT&&!(incremental&&existsSync3(join4(outDir,COMPILE_CACHE)))?compileFilesOffThread({svelteDir,configDir,configFile,files:project.components.map((path)=>({path,filename:relative2(cwd,path)}))}):void 0,previous=incremental?await readFile(join4(outDir,MANIFEST),"utf-8").then((text)=>new Set(JSON.parse(text))).catch(()=>new Set):new Set,cleared=incremental?void 0:await clearOutDir(outDir),files=project.components,listedFiles=project.tsconfig?programFiles(project):[...files].sort(byFolder),resultPath=join4(outDir,RESULT_CACHE),projectDir=project.tsconfig?dirname3(project.tsconfig):workspace,last=incremental?await readFile(resultPath,"utf-8").then((text)=>JSON.parse(text)).catch(()=>{return}):void 0,runKey=incremental?hash(JSON.stringify([TOOL_KEY,CACHE_FORMAT,version,checker,command?.version,cwd,options,configFingerprint(configDir,configFile),statsOf([...files,...listedFiles,...project.configFiles,...project.rootDirs.flatMap((dir)=>`${projectDir}${sep2}`.startsWith(`${dir}${sep2}`)||outDir.startsWith(`${dir}${sep2}`)||!existsSync3(dir)?[]:glob(dir,["**/*"]).map((rel)=>join4(dir,rel))),...packageFilesOf(projectDir)])])):"";if(last?.key===runKey&&Array.isArray(last.inputs)&&hash(JSON.stringify(statsOf(last.inputs)))===last.inputsKey)return{...last.result,timings:{emit:0,check:0,compile:0}};let texts=await Promise.all(files.map((path)=>readFile(path,"utf-8"))),root=commonDir([project.tsconfig?dirname3(project.tsconfig):workspace,...files.map((file)=>dirname3(file))]),cachePath=join4(outDir,COMPILE_CACHE),fingerprint=hash(JSON.stringify([TOOL_KEY,CACHE_FORMAT,version,configFingerprint(configDir,configFile)])),cache=incremental?await readFile(cachePath,"utf-8").then((text)=>JSON.parse(text)).then((c)=>c.fingerprint===fingerprint?c:void 0).catch(()=>{return})??{fingerprint,entries:{}}:{fingerprint,entries:{}},keys=files.map((path,i)=>compileKey(relative2(cwd,path),texts[i]??"")),missing=sources.has("svelte")?files.map((_,i)=>i).filter((i)=>cache.entries[keys[i]??""]===void 0):[],shapeKey=hash(JSON.stringify(statsOf(packageFilesOf(projectDir)))),compileRequest={svelteDir,configDir,configFile,shape:cache.shapeKey===shapeKey?cache.shape:void 0,components:missing.map((i)=>({source:texts[i]??"",filename:relative2(cwd,files[i]??"")}))},compilingOffThread;if(compilingEarly&&missing.length===files.length)compileStartedAt=compilingEarly.at,compilingOffThread=compilingEarly.wait().then((early)=>withEdits(early,keys,async(edited)=>{let request={...compileRequest,components:edited.map((i)=>({source:texts[i]??"",filename:relative2(cwd,files[i]??"")}))};return(await compileOffThread(request)??await compileAll(request)).results}));else if(missing.length>=OFF_THREAD_AT&&sources.has("js"))compileStartedAt=performance.now(),compilingOffThread=compileOffThread(compileRequest);compilingOffThread?.catch(()=>{});let compiledOffThreadAt=compilingOffThread?.then(()=>performance.now(),()=>{return}),outputs=new Map,writes=[],written=new Set,generated=new Map,folders=new Map,folder=(dir)=>{let made=folders.get(dir);if(!made)made=mkdir(dir,{recursive:!0}),folders.set(dir,made);return made},write=(path,content)=>{written.add(path),generated.set(path,content),writes.push((incremental?readFile(path,"utf-8").catch(()=>{return}):Promise.resolve(void 0)).then(async(old)=>{if(old===content)return;await folder(dirname3(path)),await writeFile(path,content)}))},failed=[],parseErrors=[],under=(path,dir)=>path.startsWith(`${dir}${sep2}`),tsconfig=join4(outDir,"tsconfig.json"),fileFacts=await factsCache(join4(outDir,FACTS_CACHE),incremental),untypedImports=await(async()=>{if(!(sources.has("js")&&project.tsconfig&&!project.allowJs))return[];let untyped=new Set(files.filter((path,i)=>!TS_SCRIPT.test(texts[i]??"")&&!existsSync3(`${path}.d.ts`)));if(untyped.size===0)return[];let resolvePath=importResolver([root,...project.rootDirs],project.paths),resolveSelf=importResolver([],project.selfExports),tsComponents=new Map(files.flatMap((path,i)=>{let text=texts[i]??"";return TS_SCRIPT.test(text)?[[path,text]]:[]})),tsModules=listedFiles.filter((path)=>TS_MODULE.test(path));return await fileFacts.read(tsModules),[...tsComponents.keys(),...tsModules].flatMap((path)=>fileFacts.of(path,"svelteImports",(content)=>svelteImportsOf(content,path.endsWith(".svelte")),tsComponents.get(path)).flatMap((i)=>{let target=resolvePath(path,i.specifier)??resolveSelf(path,i.specifier);return target&&untyped.has(target)?[{...i,path,target}]:[]}))})();if(sources.has("js")){let[{emit},{isKitFile,isKitRouteFile,kitFile}]=await Promise.all([import("./shared-vkye6xwq.js"),import("./shared-sm8cekk0.js")]),emitCachePath=join4(outDir,EMIT_CACHE),emitFingerprint=hash(JSON.stringify([TOOL_KEY,CACHE_FORMAT,svelteMajor,project.checkJs,project.allowJs,declarations,root,genDir])),emitCache=(incremental?await readFile(emitCachePath,"utf-8").then((text)=>JSON.parse(text)).then((c)=>c.fingerprint===emitFingerprint?c:void 0).catch(()=>{return}):void 0)??{fingerprint:emitFingerprint,entries:{}},nextEmitCache={fingerprint:emitFingerprint,entries:{}},emitFor=(i)=>{let path=files[i]??"",genFrom=join4(genDir,relative2(root,dirname3(path)));return emit(texts[i]??"",{svelte:svelteMajor,basename:basename2(path),checkJs:project.checkJs,rewriteImport(specifier){if(!specifier.startsWith("."))return;let target=resolve2(dirname3(path),specifier);if(target.startsWith(`${root}${sep2}`))return;return relativeTo(genFrom,target)}})},lazyOutput=(i,lang)=>{let result,get=()=>(result??=emitFor(i),result);return{source:texts[i]??"",svelte:files[i]??"",isTs:lang==="ts",get output(){return get().out},get emitted(){return get()}}};for(let[i,path]of files.entries()){let genFrom=join4(genDir,relative2(root,dirname3(path))),name=path.slice(path.lastIndexOf(sep2)+1,-7),typed=declarations&&!existsSync3(`${path}.d.ts`),key=hash(`${path}\x00${typed}\x00${texts[i]??""}`),cached=emitCache.entries[key];if(cached&&(!cached.genPath||existsSync3(cached.genPath))){for(let file of cached.files)written.add(file);if(parseErrors.push(...cached.diagnostics),cached.genPath&&cached.lang)outputs.set(cached.genPath,lazyOutput(i,cached.lang));nextEmitCache.entries[key]=cached;continue}let effects={files:[],diagnostics:[]};nextEmitCache.entries[key]=effects;let put=(file,content)=>{effects.files.push(file),write(file,content)},result;try{result=emitFor(i)}catch(error){let e=error;if(!e.start){failed.push({file:path,message:e.message}),delete nextEmitCache.entries[key];continue}let isTs=TS_SCRIPT.test(texts[i]??"");effects.diagnostics.push({file:path,line:e.start.line,column:e.start.column+1,endLine:e.start.line,endColumn:e.start.column+1,severity:"error",source:isTs?"ts":"js",code:"-1",message:e.message});let lexed=lexComponent2(texts[i]??""),stub=[lexed.instance,lexed.module].some((script)=>script&&lexImportsExports((texts[i]??"").slice(script.content.start,script.content.end)).length>0)?`export {};
|
|
253
|
+
`:"";if(put(join4(genFrom,`++${name}.svelte.${isTs?"ts":"js"}`),stub),declarations)put(join4(genFrom,`${name}.d.svelte.ts`),stub);parseErrors.push(...effects.diagnostics);continue}let locate=createLocator(texts[i]??"");for(let t of result.tsInJs){let at=locate.position(t.at);effects.diagnostics.push({file:path,line:at.line,column:at.column,severity:"error",source:"js",code:t.code,message:t.message})}if(parseErrors.push(...effects.diagnostics),result.lang==="js"&&!project.allowJs)continue;let genPath=join4(genFrom,`++${name}.svelte.${result.isTs?"ts":"js"}`);if(effects.genPath=genPath,effects.lang=result.lang==="ts"?"ts":"js",outputs.set(genPath,{output:result.out,source:texts[i]??"",svelte:path,isTs:result.lang==="ts",emitted:result}),put(genPath,result.out.code),typed)put(join4(genFrom,`${name}.d.svelte.ts`),`export { default } from "./++${name}.svelte.js";
|
|
254
|
+
export * from "./++${name}.svelte.js";
|
|
255
|
+
`)}if(incremental)write(emitCachePath,JSON.stringify(nextEmitCache));let untypedNames=new Map;for(let i of untypedImports){let names=untypedNames.get(i.target)??new Set;for(let name of i.names)names.add(name);untypedNames.set(i.target,names)}let untypedDeclarationOf=(target)=>join4(genDir,relative2(root,dirname3(target)),`${basename2(target,".svelte")}.d.svelte.ts`);if(declarations)for(let[target,names]of untypedNames)write(untypedDeclarationOf(target),untypedDeclaration(names));let mirror=(path)=>join4(genDir,relative2(root,path)),kitProject=project.tsconfig!==void 0&&(project.rootDirs.some((dir)=>dir.includes(".svelte-kit"))||files.some((path)=>isKitRouteFile(basename2(path)))),replaced=[];if(kitProject){let hooksModule=kitMajor(root)>=3?"@sveltejs/kit/hooks":"@sveltejs/kit";for(let path of scriptsOf(project,isKitFile)){if(!under(path,root))continue;let source=readFileSync3(path,"utf-8"),output=kitFile(path,source,hooksModule);if(!output)continue;replaced.push(path),outputs.set(mirror(path),{output,source,svelte:path,isTs:!JS_FILE2.test(path),emitted:NOTHING_EMITTED,kit:!0}),write(mirror(path),output.code)}}let rootDirs=[];for(let dir of project.rootDirs){if(dir===root||under(dir,outDir))continue;if(!(kitProject&&under(dir,root)&&existsSync3(dir))){rootDirs.push(dir);continue}replaced.push(dir),rootDirs.push(mirror(dir));for(let file of glob(dir,["**/*.{ts,js}"]))write(mirror(join4(dir,file)),readFileSync3(join4(dir,file),"utf-8"))}let paths=Object.fromEntries(Object.entries(project.paths).map(([key,targets])=>[key,targets.flatMap((t)=>under(t,root)?[mirror(t),t]:[t])]));if(declarations){for(let i of untypedImports)if(!i.specifier.startsWith("."))paths[i.specifier]=[untypedDeclarationOf(i.target)]}let shims=join4(outDir,"shims.d.ts");if(write(shims,shim("shims.d.ts")),svelteMajor===3)write(svelteHtml,shim("svelte3-elements.d.ts"));let rel=(path)=>relativeTo(outDir,path),generatedFor=new Map([...outputs].map(([genPath,gen])=>[gen.svelte,genPath])),replacedSet=new Set(replaced),rootFiles=[...new Set([...listedFiles.filter((path)=>path.endsWith(".svelte")).map((path)=>generatedFor.get(path)).filter((path)=>path!==void 0),...[...outputs].filter(([,gen])=>!gen.kit).map(([genPath])=>genPath),...listedFiles.filter((path)=>!path.endsWith(".svelte")).map((path)=>{if(replacedSet.has(path))return generatedFor.get(path);return replaced.find((d)=>under(path,d))?mirror(path):path}).filter((path)=>path!==void 0)])];write(tsconfig,JSON.stringify({...project.tsconfig?{extends:rel(project.tsconfig)}:{},compilerOptions:{...project.tsconfig?{}:DEFAULT_COMPILER_OPTIONS,rootDirs:[rel(root),"svelte",...rootDirs.map(rel)],...Object.keys(paths).length>0?{paths:Object.fromEntries(Object.entries(paths).map(([key,targets])=>[key,targets.map(rel)]))}:{},allowArbitraryExtensions:!0,noEmit:!0,composite:!1,incremental,...incremental?{tsBuildInfoFile:"./tsbuildinfo"}:{}},files:[...rootFiles,shims,svelteHtml,...svelteMajor>=5?[join4(svelteDir,"types/index.d.ts")]:[]].map(rel),include:[]},null,2)),write(join4(outDir,MANIFEST),JSON.stringify([...written].sort()));for(let path of previous)if(!written.has(path))writes.push(rm(path,{force:!0}))}if(await Promise.all(writes),incremental)await mkdir(outDir,{recursive:!0});let emitted=performance.now(),launch=checker&&native&&sources.has("js")?await native:void 0,checking=checker&&launch?run(launch.command,[...launch.prefix,...checkerArgs(checker,tsconfig)],cwd,launch.shell).then((output)=>({output,at:performance.now()})):Promise.resolve({output:"",at:emitted}),generatedOf=new Map([...outputs].map(([genPath,gen])=>[gen.svelte,genPath])),ordering=programOrder((file)=>{let path=generatedOf.get(file)??file;return fileFacts.of(path,"specifiers",(code)=>[...code.matchAll(STATIC_IMPORT),...code.matchAll(DYNAMIC_IMPORT)].map((m)=>m[1]??""),generated.get(path))},importResolver([root,...project.rootDirs],project.paths)),listedSet=new Set(listedFiles);if(compilingOffThread)ordering.add(listedFiles);let compiled=[],perFile=[];if(sources.has("svelte")){if(missing.length>0){let fresh=await compilingOffThread??await compileAll(compileRequest);for(let[n,i]of missing.entries())cache.entries[keys[i]??""]=fresh.results[n]??[];cache.shape=fresh.shape,cache.shapeKey=fresh.shape&&shapeKey}for(let key of keys)perFile.push(cache.entries[key]??[]);if(incremental){let kept=Object.fromEntries(keys.map((key)=>[key,cache.entries[key]??[]]));await writeFile(cachePath,JSON.stringify({fingerprint,entries:kept,shape:cache.shape,shapeKey:cache.shapeKey}))}}for(let[i,path]of files.entries())for(let d of perFile[i]??[]){let level=options.compilerWarnings?.[d.code];if(d.severity==="warning"&&level==="ignore")continue;compiled.push({file:path,...d,severity:level==="error"?"error":d.severity,source:"svelte"})}let compiledAt=await compiledOffThreadAt??performance.now();ordering.add(listedFiles);let{output:text,at:checked}=await checking,raw=parseDiagnostics(text),inOutput=(file)=>resolve2(cwd,file).startsWith(`${outDir}${sep2}`),syntax=raw.some((d)=>TYPE_CODE.test(d.code))?[]:raw.filter((d)=>inOutput(d.file)&&SYNTAX_CODE.test(d.code)&&!outputs.get(resolve2(cwd,d.file))?.kit);if(syntax.length>0||STOPPED.test(text))throw new EmitError(`Generated code has syntax errors:
|
|
256
|
+
${syntax.slice(0,20).map((d)=>`${d.file}(${d.line},${d.column}): ${d.code} ${d.message}`).join(`
|
|
257
|
+
`)}`);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=[],dropped=[],storeErrors=[],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=resolve2(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);storeErrors.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.
|
|
258
|
+
|
|
259
|
+
${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=withHint({...d,file:gen.svelte,line:start.line,column:start.column,...endOf(gen.source,source,gen.svelte),severity:"error",source:gen.isTs?"ts":"js"},svelteMajor)}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=readFileSync3(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)}diagnostics.push(...storeErrors);let generatedPath=new RegExp(`${escapeRegExp(`${toPosix2(genDir)}/`)}[^"'\\s]*`,"gi");for(let d of diagnostics)if(d.message=d.message.replace(generatedPath,(path)=>asTypeScriptPath(join4(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(untypedImports.length>0){let expected=new Set,untypedErrors=[];for(let i of untypedImports){if(project.skipLibCheck&&DECLARATION_FILE.test(i.path))continue;if(i.directive){if(i.directive==="expect-error")expected.add(`${i.path}:${i.line-1}`);continue}untypedErrors.push({file:i.path,line:i.line,column:i.column,severity:"error",source:"ts",code:"TS7016",message:`Could not find a declaration file for module '${i.specifier}'. '${asTypeScriptPath(i.target)}' implicitly has an 'any' type.`})}if(diagnostics.unshift(...untypedErrors),expected.size>0){let kept=diagnostics.filter((d)=>!(d.code==="TS2578"&&expected.has(`${d.file}:${d.line}`)));diagnostics.length=0,diagnostics.push(...kept)}}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 ${basename2(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;ordering.add([...new Set(reported.map((d)=>d.file))].filter((file)=>!listedSet.has(file)).sort(byFolder));let{order,imports}=ordering,skipped=0;if(options.only){let shown=new Set(options.only.map((path)=>resolve2(cwd,path)));for(let[file,targets]of imports)for(let target of targets)if(options.only.some((path)=>resolve2(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-(compileStartedAt??emitted)}},inputs=[...order.keys()].filter((path)=>!under(path,outDir)).flatMap((path)=>[path,...declarationsBeside(path)]);if(incremental)await fileFacts.save();if(incremental)await writeFile(resultPath,JSON.stringify({key:runKey,inputs,inputsKey:hash(JSON.stringify(statsOf(inputs))),result}));return await cleared?.deleted,result}var FACTS_CACHE="files.json";function 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),lines=content.split(`
|
|
260
|
+
`);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)),directive=TS_DIRECTIVE.exec(lines[at.line-2]??"")?.[1];return[{specifier,line:at.line,column:at.column,directive:directive==="ignore"||directive==="expect-error"?directive:null,names:statement.specifiers.flatMap((spec)=>{let name="imported"in spec?spec.imported:spec.local;return name==="*"?[]:[name]})}]}))}function untypedDeclaration(names){let declare=(name)=>`declare const ${name}: any;
|
|
261
|
+
type ${name}<${UNTYPED_PARAMS}> = any & [${UNTYPED_ARGS}];
|
|
262
|
+
`,named=[...names].filter((name)=>name!=="default"&&IDENTIFIER.test(name));return`${[UNTYPED,...named].map(declare).join("")}export default ${UNTYPED};
|
|
263
|
+
${named.length>0?`export { ${named.join(", ")} };
|
|
264
|
+
`:""}`}var UNTYPED="$$untyped",UNTYPED_ARGS="A, B, C, D, E, F, G, H",UNTYPED_PARAMS=UNTYPED_ARGS.split(", ").map((p)=>`${p} = any`).join(", ");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={},stats=new Map,statOf=(file)=>{let stat=stats.get(file);if(stat===void 0)stat=statsOf([file])[0]??"",stats.set(file,stat);return stat},texts=new Map;return{of(file,kind,compute,text){let stat=statOf(file),facts=used[file]??entries[file];if(facts?.stat!==stat)facts={stat};if(used[file]=facts,facts[kind]??=compute(text??texts.get(file)??readFileSync3(file,"utf-8")),facts.specifiers&&facts.svelteImports)texts.delete(file);return facts[kind]},async read(files){await Promise.all(files.map(async(file)=>{let facts=used[file]??entries[file];if(facts?.stat===statOf(file)&&facts.svelteImports)return;let text=await readFile(file,"utf-8").catch(()=>{return});if(text!==void 0)texts.set(file,text)}))},save:()=>writeFile(path,JSON.stringify({format:CACHE_FORMAT,entries:used}))}}function declarationsBeside(path){if(path.endsWith(".svelte"))return[`${path}.d.ts`];return JS_EXTENSION.test(path)?[path.replace(JS_EXTENSION,".d.$1ts")]:[]}async function clearOutDir(outDir){let parent=dirname3(outDir),prefix=`.${basename2(outDir)}.old-`;try{await rename(outDir,join4(parent,`${prefix}${process.pid}-${Date.now()}`))}catch(error){if(error.code!=="ENOENT")await rm(outDir,{recursive:!0,force:!0});return{deleted:Promise.resolve()}}let names=await readdir(parent).catch(()=>[]);return{deleted:Promise.all(names.filter((name)=>name.startsWith(prefix)).map((name)=>rm(join4(parent,name),{recursive:!0,force:!0}).catch(()=>{})))}}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=dirname3(at))if(found.push(...PACKAGE_FILES.map((name)=>join4(at,name))),dirname3(at)===at)return found}import{watch as watchFiles}from"node:fs";import{resolve as resolve3,sep as sep3}from"node:path";var WATCHED=/\.(?:svelte|[cm]?[jt]sx?|json)$/,DEBOUNCE_MS=100;function watch2(options,onResult){let cwd=resolve3(options.cwd??process.cwd()),workspace=resolve3(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 readFileSync4}from"node:fs";import{relative as relative3,sep as sep4}from"node:path";var LINE_BREAK2=/\r?\n/;function keyer(workspace){let lines=new Map,lineOf=(d)=>{let text=lines.get(d.file);if(!text){try{text=readFileSync4(d.file,"utf-8").split(LINE_BREAK2)}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}}
|
|
265
|
+
export{version2,package_default,EmitError,typecheck2,watch2,createBaseline2,applyBaseline2};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import{configFingerprint}from"./shared-08kjv74r.js";import{spawn}from"node:child_process";import{createHash}from"node:crypto";import{appendFileSync,existsSync,mkdirSync,realpathSync,statSync,writeFileSync}from"node:fs";import{rm}from"node:fs/promises";import{createRequire}from"node:module";import{connect,createServer}from"node:net";import{tmpdir,userInfo}from"node:os";import{dirname,join,resolve}from"node:path";var ENABLE="SVELTE_TYPECHECK_DAEMON",IDLE="SVELTE_TYPECHECK_DAEMON_IDLE",DIR="SVELTE_TYPECHECK_DAEMON_DIR",DEFAULT_IDLE_SECONDS=600,START_MS=1e4,LOCKFILES=["bun.lock","bun.lockb","package-lock.json","pnpm-lock.yaml","yarn.lock"],truthy=(value)=>value!==void 0&&value!==""&&value!=="0"&&value!=="false";function wantsDaemon(argv,env=process.env){if(argv.includes("--no-daemon")||argv.includes("--watch"))return!1;if(truthy(env.CI))return!1;return argv.includes("--daemon")||truthy(env[ENABLE])}var runArguments=(argv)=>argv.filter((arg)=>arg!=="--daemon"&&arg!=="--no-daemon");function buildKey(){let cli=process.argv[1]??"",mtime=0;try{mtime=statSync(cli).mtimeMs}catch{}return`${cli}\x00${mtime}\x00${process.execPath}`}function daemonPaths(cwd=process.cwd()){let id=createHash("sha1").update(`${realpathSync(cwd)}\x00${buildKey()}`).digest("hex").slice(0,16),{username}=userInfo(),dir=process.env[DIR]??join(process.env.XDG_RUNTIME_DIR??tmpdir(),`svelte-typecheck-${username}`);return mkdirSync(dir,{recursive:!0,mode:448}),{socket:process.platform==="win32"?`\\\\.\\pipe\\svelte-typecheck-${username}-${id}`:join(dir,`${id}.sock`),log:join(dir,`${id}.log`)}}function request(socket,message,onReply){return new Promise((done,fail)=>{let connection=connect(socket),buffer="",finished=!1;connection.on("error",fail),connection.on("connect",()=>connection.write(`${JSON.stringify(message)}
|
|
2
|
+
`)),connection.on("data",(chunk)=>{buffer+=chunk;for(let at=buffer.indexOf(`
|
|
3
|
+
`);at!==-1;at=buffer.indexOf(`
|
|
4
|
+
`)){let reply=JSON.parse(buffer.slice(0,at));if(buffer=buffer.slice(at+1),onReply(reply)){finished=!0,connection.end(),done();return}}}),connection.on("close",()=>{if(!finished)fail(Error("The daemon closed before replying"))})})}async function statusOf(socket){let found;try{await request(socket,{status:!0},(reply)=>{if("status"in reply)found=reply.status;return!0})}catch{return}return found}var pause=()=>new Promise((wait)=>setTimeout(wait,20));async function start(socket){spawn(process.execPath,[process.argv[1]??"","--serve-daemon",socket],{cwd:process.cwd(),detached:!0,stdio:"ignore"}).unref();let until=Date.now()+START_MS;for(;;){let running=await statusOf(socket);if(running)return running;if(Date.now()>until)throw Error("The daemon didn't start");await pause()}}async function stopped(socket){let until=Date.now()+START_MS;while(await statusOf(socket)&&Date.now()<until)await pause()}async function runThroughDaemon(argv,runHere){let message={run:argv,env:{...process.env},terminal:{isTTY:Boolean(process.stdout.isTTY),columns:process.stdout.columns},key:buildKey()},attempt=async(socket)=>{let printed=[],code="stale";return await request(socket,message,(reply)=>{if("out"in reply||"err"in reply)return printed.push(reply),!1;if("exit"in reply)code=reply.exit;return!0}),{code,printed}};try{let{socket}=daemonPaths();if(!await statusOf(socket))await start(socket);let result=await attempt(socket);if(result.code==="stale")await stopped(socket),await start(socket),result=await attempt(socket);if(result.code==="stale")return await runHere();for(let p of result.printed)if("out"in p)process.stdout.write(p.out);else process.stderr.write(p.err);return result.code}catch{return runHere()}}async function daemonCommand(command){let{socket}=daemonPaths(),running=await statusOf(socket),describe=(s)=>`the daemon for ${s.cwd} (pid ${s.pid}, log ${s.log})`;if(command==="start")return console.log(running?`Already running: ${describe(running)}`:`Started ${describe(await start(socket))}`),0;if(!running)return console.log(`No daemon runs for ${process.cwd()}`),0;if(command==="stop")return await request(socket,{stop:!0},()=>!0).catch(()=>{}),await stopped(socket),console.log(`Stopped ${describe(running)}`),0;let seconds=(ms)=>`${Math.round(ms/1000)} s`;return console.log(`Running: ${describe(running)}
|
|
5
|
+
${running.runs} runs, up ${seconds(Date.now()-running.started)}, idle ${seconds(running.idle)}`),0}function optionOf(argv,name){let at=argv.findIndex((a)=>a===name||a.startsWith(`${name}=`));if(at===-1)return;let arg=argv[at]??"";return arg.includes("=")?arg.slice(arg.indexOf("=")+1):argv[at+1]}function loadedState(argv){let cwd=process.cwd(),workspace=resolve(cwd,optionOf(argv,"--workspace")??"."),config=optionOf(argv,"--config"),configFile=config&&resolve(workspace,config),parts=[configFile?configFingerprint(dirname(configFile),configFile):configFingerprint(workspace)],stat=(path)=>{try{let{size,mtimeMs}=statSync(path);parts.push(path,`${size}:${mtimeMs}`)}catch{parts.push(path,"missing")}};for(let dir=workspace;;dir=dirname(dir)){let found=LOCKFILES.map((name)=>join(dir,name)).filter((path)=>existsSync(path));for(let path of found)stat(path);if(found.length>0||dirname(dir)===dir)break}let svelte=optionOf(argv,"--svelte");try{stat(svelte?join(resolve(cwd,svelte),"package.json"):createRequire(join(cwd,"package.json")).resolve("svelte/package.json"))}catch{parts.push("no svelte")}return createHash("sha1").update(parts.join("\x00")).digest("hex")}async function serveDaemon(socket,main){let{log}=daemonPaths();writeFileSync(log,"");let note=(line)=>appendFileSync(log,`${new Date().toISOString()} ${line}
|
|
6
|
+
`),key=buildKey(),started=Date.now(),runs=0,lastRun=started,idleMs=1000*(Number(process.env[IDLE])||DEFAULT_IDLE_SECONDS),states=new Map,queue=Promise.resolve(),idle,server=createServer((connection)=>{let buffer="";connection.on("data",(chunk)=>{buffer+=chunk;let at=buffer.indexOf(`
|
|
7
|
+
`);if(at===-1)return;let message=JSON.parse(buffer.slice(0,at));buffer="",queue=queue.then(()=>handle(message,connection))}),connection.on("error",()=>{})}),exit=(reason)=>{note(`exit: ${reason}`),server.close(()=>process.exit(0)),setTimeout(()=>process.exit(0),1000).unref()},resetIdle=()=>{clearTimeout(idle),idle=setTimeout(()=>exit("idle"),idleMs)},handle=async(message,connection)=>{let reply=(r)=>connection.write(`${JSON.stringify(r)}
|
|
8
|
+
`);if("status"in message){reply({status:{pid:process.pid,cwd:process.cwd(),started,runs,idle:Date.now()-lastRun,log}});return}if("stop"in message){reply({stopped:!0}),connection.end(),exit("stopped");return}resetIdle();let argv=message.run,scope=JSON.stringify(["--workspace","--config","--svelte"].map((n)=>optionOf(argv,n))),state=loadedState(argv);if(message.key!==key||(states.get(scope)??state)!==state){reply({stale:!0}),connection.end(),exit(message.key===key?"its loaded state changed":"another build");return}states.set(scope,state);let at=Date.now(),code=await asClient(message,reply,main);runs++,lastRun=Date.now(),note(`ran ${JSON.stringify(argv)}: exit ${code} in ${lastRun-at} ms`),reply({exit:code}),connection.end()};process.on("uncaughtException",(error)=>{note(`uncaught: ${error.stack??String(error)}`),process.exit(1)});let listen=()=>new Promise((done,fail)=>{server.once("error",fail),server.listen(socket,()=>{server.off("error",fail),done()})});try{await listen()}catch(error){if(error.code!=="EADDRINUSE")throw error;if(await statusOf(socket))process.exit(0);await rm(socket,{force:!0}),await listen()}server.on("error",(error)=>{note(`server: ${error.message}`),process.exit(1)}),note(`listening on ${socket} for ${process.cwd()}`),resetIdle()}async function asClient(message,reply,main){let{stdout,stderr}=process,saved={env:process.env,out:stdout.write,err:stderr.write,log:console.log,error:console.error,isTTY:Object.getOwnPropertyDescriptor(stdout,"isTTY"),columns:Object.getOwnPropertyDescriptor(stdout,"columns")},line=(args)=>`${args.map(String).join(" ")}
|
|
9
|
+
`;process.env={...message.env},Object.defineProperty(stdout,"isTTY",{value:message.terminal.isTTY,configurable:!0}),Object.defineProperty(stdout,"columns",{value:message.terminal.columns,configurable:!0}),stdout.write=(chunk)=>(reply({out:String(chunk)}),!0),stderr.write=(chunk)=>(reply({err:String(chunk)}),!0),console.log=(...args)=>reply({out:line(args)}),console.error=(...args)=>reply({err:line(args)});try{return await main(message.run)}catch(error){return reply({err:`${error.stack??String(error)}
|
|
10
|
+
`}),1}finally{process.env=saved.env,stdout.write=saved.out,stderr.write=saved.err,console.log=saved.log,console.error=saved.error;for(let name of["isTTY","columns"]){let descriptor=saved[name];if(descriptor)Object.defineProperty(stdout,name,descriptor);else Reflect.deleteProperty(stdout,name)}}}
|
|
11
|
+
export{wantsDaemon,runArguments,runThroughDaemon,daemonCommand,serveDaemon};
|