diff --git a/.changeset/sweet-pianos-sniff.md b/.changeset/sweet-pianos-sniff.md
new file mode 100644
index 00000000..e8b0c8e2
--- /dev/null
+++ b/.changeset/sweet-pianos-sniff.md
@@ -0,0 +1,5 @@
+---
+'@sveltejs/repl': patch
+---
+
+manage diagnostics asyncronously with linter
diff --git a/packages/repl/package.json b/packages/repl/package.json
index 8c8ec09b..25293d2d 100644
--- a/packages/repl/package.json
+++ b/packages/repl/package.json
@@ -73,7 +73,7 @@
"@codemirror/view": "^6.14.0",
"@jridgewell/sourcemap-codec": "^1.4.15",
"@lezer/highlight": "^1.1.6",
- "@neocodemirror/svelte": "0.0.14",
+ "@neocodemirror/svelte": "0.0.15",
"@replit/codemirror-lang-svelte": "^6.0.0",
"@rich_harris/svelte-split-pane": "^1.1.1",
"@rollup/browser": "^3.25.3",
diff --git a/packages/repl/src/lib/CodeMirror.svelte b/packages/repl/src/lib/CodeMirror.svelte
index 7dcfabd6..1976acde 100644
--- a/packages/repl/src/lib/CodeMirror.svelte
+++ b/packages/repl/src/lib/CodeMirror.svelte
@@ -4,7 +4,6 @@
diff --git a/packages/repl/src/lib/Repl.svelte b/packages/repl/src/lib/Repl.svelte
index 80eacdfd..15a73b39 100644
--- a/packages/repl/src/lib/Repl.svelte
+++ b/packages/repl/src/lib/Repl.svelte
@@ -150,12 +150,16 @@
/** @type {ReplContext['bundler']} */
const bundler = writable(null);
+ /** @type {ReplContext['bundling']} */
+ const bundling = writable(new Promise(() => {}));
+
set_repl_context({
files,
selected_name,
selected,
bundle,
bundler,
+ bundling,
compile_options,
cursor_pos,
module_editor,
@@ -175,8 +179,13 @@
let current_token;
async function rebundle() {
const token = (current_token = Symbol());
+ let resolver = () => {};
+ $bundling = new Promise((resolve) => {
+ resolver = resolve;
+ });
const result = await $bundler?.bundle($files);
if (result && token === current_token) $bundle = result;
+ resolver();
}
let is_select_changing = false;
diff --git a/packages/repl/src/lib/types.d.ts b/packages/repl/src/lib/types.d.ts
index 5ab3b933..e1a1ce01 100644
--- a/packages/repl/src/lib/types.d.ts
+++ b/packages/repl/src/lib/types.d.ts
@@ -54,6 +54,7 @@ export type ReplState = {
selected_name: string;
selected: File | null;
bundle: Bundle | null;
+ bundling: Promise;
bundler: import('./Bundler').default | null;
compile_options: CompileOptions;
cursor_pos: number;
@@ -67,6 +68,7 @@ export type ReplContext = {
selected_name: Writable;
selected: Readable;
bundle: Writable;
+ bundling: Writable;
bundler: Writable;
compile_options: Writable;
cursor_pos: Writable;
diff --git a/packages/repl/src/routes/+page.svelte b/packages/repl/src/routes/+page.svelte
index 7cbf6f5e..bd260e2f 100644
--- a/packages/repl/src/routes/+page.svelte
+++ b/packages/repl/src/routes/+page.svelte
@@ -15,17 +15,20 @@
source:
`
- import B from './B.svelte';
let name = 'world';
-Hello {name}!
`
+Hello {name}!
+
+
+`
},
{
name: 'B',
type: 'svelte',
- source: `B`
+ source: `
+`
}
]
});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9744390f..e6008dfd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -51,8 +51,8 @@ importers:
specifier: ^1.1.6
version: 1.1.6
'@neocodemirror/svelte':
- specifier: 0.0.14
- version: 0.0.14(@codemirror/autocomplete@6.8.1)(@codemirror/commands@6.2.4)(@codemirror/language@6.8.0)(@codemirror/lint@6.3.0)(@codemirror/search@6.5.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.0)
+ specifier: 0.0.15
+ version: 0.0.15(@codemirror/autocomplete@6.8.1)(@codemirror/commands@6.2.4)(@codemirror/language@6.8.0)(@codemirror/lint@6.3.0)(@codemirror/search@6.5.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.0)
'@replit/codemirror-lang-svelte':
specifier: ^6.0.0
version: 6.0.0(@codemirror/autocomplete@6.8.1)(@codemirror/lang-css@6.2.0)(@codemirror/lang-html@6.4.5)(@codemirror/lang-javascript@6.1.9)(@codemirror/language@6.8.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.0)(@lezer/common@1.0.3)(@lezer/highlight@1.1.6)(@lezer/javascript@1.4.3)(@lezer/lr@1.3.7)
@@ -121,31 +121,6 @@ importers:
specifier: ^4.3.9
version: 4.3.9
- packages/site-kit:
- dependencies:
- golden-fleece:
- specifier: ^1.0.9
- version: 1.0.9
- devDependencies:
- '@sveltejs/kit':
- specifier: ^1.0.0
- version: 1.20.5(svelte@3.55.0)(vite@4.3.9)
- '@sveltejs/package':
- specifier: ^1.0.0
- version: 1.0.0(svelte@3.55.0)(typescript@4.5.5)
- svelte:
- specifier: ^3.55.0
- version: 3.55.0
- svelte2tsx:
- specifier: ^0.4.14
- version: 0.4.14(svelte@3.55.0)(typescript@4.5.5)
- typescript:
- specifier: ^4.5.5
- version: 4.5.5
- vite:
- specifier: ^4.0.1
- version: 4.3.9
-
sites/hn.svelte.dev:
devDependencies:
'@sveltejs/adapter-auto':
@@ -790,8 +765,8 @@ packages:
read-yaml-file: 1.1.0
dev: true
- /@neocodemirror/svelte@0.0.14(@codemirror/autocomplete@6.8.1)(@codemirror/commands@6.2.4)(@codemirror/language@6.8.0)(@codemirror/lint@6.3.0)(@codemirror/search@6.5.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.0):
- resolution: {integrity: sha512-1kHm3IyBJJyRfItxodSbbLxBknYGKLahaiF6Vb/BcVfdwwFLLj4dvWKY78ep1YQIhDhklgBQztjRMuLn9tTTWg==}
+ /@neocodemirror/svelte@0.0.15(@codemirror/autocomplete@6.8.1)(@codemirror/commands@6.2.4)(@codemirror/language@6.8.0)(@codemirror/lint@6.3.0)(@codemirror/search@6.5.0)(@codemirror/state@6.2.1)(@codemirror/view@6.14.0):
+ resolution: {integrity: sha512-MCux+QCR40CboJu/TFwnqK7gYQ3fvtvHX8F/mk85DRH7vMoG3VDjJhqneAITX5IzohWKeP36hzcV+oHC2LYJqA==}
peerDependencies:
'@codemirror/autocomplete': ^6.7.1
'@codemirror/commands': ^6.2.4
@@ -938,22 +913,6 @@ packages:
transitivePeerDependencies:
- supports-color
- /@sveltejs/package@1.0.0(svelte@3.55.0)(typescript@4.5.5):
- resolution: {integrity: sha512-YTTzhbOtmyq342S3tTYRJ9QQntRlukWieP5gQmqTMxdn1Ztr93pzR9vLCZ0q/pV4sqmEllc70lHJX/iV5uEYEg==}
- engines: {node: '>=16.14'}
- hasBin: true
- peerDependencies:
- svelte: ^3.44.0
- dependencies:
- chokidar: 3.5.3
- kleur: 4.1.5
- sade: 1.8.1
- svelte: 3.55.0
- svelte2tsx: 0.5.23(svelte@3.55.0)(typescript@4.5.5)
- transitivePeerDependencies:
- - typescript
- dev: true
-
/@sveltejs/package@2.1.0(svelte@4.0.0)(typescript@5.1.3):
resolution: {integrity: sha512-c6PLH9G2YLQ48kqrS2XX422BrLNABBstSiapamchVJaQnOTXyJmUR8KmoCCySnzVy3PiYL6jg12UnoPmjW3SwA==}
engines: {node: ^16.14 || >=18}
@@ -1816,10 +1775,6 @@ packages:
slash: 3.0.0
dev: true
- /golden-fleece@1.0.9:
- resolution: {integrity: sha512-YSwLaGMOgSBx9roJlNLL12c+FRiw7VECphinc6mGucphc/ZxTHgdEz6gmJqH6NOzYEd/yr64hwjom5pZ+tJVpg==}
- dev: false
-
/gopd@1.0.1:
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
dependencies:
@@ -3026,30 +2981,6 @@ packages:
typescript: 5.1.3
dev: true
- /svelte2tsx@0.4.14(svelte@3.55.0)(typescript@4.5.5):
- resolution: {integrity: sha512-udF0Z/DA98OfjPFBU1GBJRpYHEvsxA8ozwYVN08AOWMnQyxoSyWWlYspiq2m9xAjLo/pWnhec9z1d6jc9umqjA==}
- peerDependencies:
- svelte: ^3.24
- typescript: ^4.1.2
- dependencies:
- dedent-js: 1.0.1
- pascal-case: 3.1.2
- svelte: 3.55.0
- typescript: 4.5.5
- dev: true
-
- /svelte2tsx@0.5.23(svelte@3.55.0)(typescript@4.5.5):
- resolution: {integrity: sha512-jYFnugTQRFmUpvLXPQrKzVYcW5ErT+0QCxg027Zx9BuvYefMZFuoBSTDYe7viPEFGrPPiLgT2m7f5n9khE7f7Q==}
- peerDependencies:
- svelte: ^3.24
- typescript: ^4.1.2
- dependencies:
- dedent-js: 1.0.1
- pascal-case: 3.1.2
- svelte: 3.55.0
- typescript: 4.5.5
- dev: true
-
/svelte2tsx@0.6.16(svelte@4.0.0)(typescript@5.1.3):
resolution: {integrity: sha512-AX2iYEvQdd4tq5BokRdOOA0N/nD37ZnhXAomrAG9EEGl2cjkvoQUwe1Aluo6FSzA684WJjhxW+1ZXmveCmvDrA==}
peerDependencies:
@@ -3154,12 +3085,6 @@ packages:
is-typed-array: 1.1.10
dev: true
- /typescript@4.5.5:
- resolution: {integrity: sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==}
- engines: {node: '>=4.2.0'}
- hasBin: true
- dev: true
-
/typescript@5.1.3:
resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==}
engines: {node: '>=14.17'}