From b6278abdedcbb370c35deb51e17ca6a13adb1ed7 Mon Sep 17 00:00:00 2001 From: Paolo Ricciuti Date: Fri, 30 Jun 2023 19:02:52 +0200 Subject: [PATCH 1/6] Working but not cool --- .../repl/src/lib/Input/ModuleEditor.svelte | 15 ++-- packages/repl/src/routes/+page.svelte | 9 ++- pnpm-lock.yaml | 75 ------------------- 3 files changed, 15 insertions(+), 84 deletions(-) diff --git a/packages/repl/src/lib/Input/ModuleEditor.svelte b/packages/repl/src/lib/Input/ModuleEditor.svelte index 115818e4..85e51273 100644 --- a/packages/repl/src/lib/Input/ModuleEditor.svelte +++ b/packages/repl/src/lib/Input/ModuleEditor.svelte @@ -1,6 +1,6 @@
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..c9c2e48b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -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': @@ -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'} From e446db0c3a7327d8bba9bdc003d4027615294d95 Mon Sep 17 00:00:00 2001 From: Paolo Ricciuti Date: Fri, 30 Jun 2023 19:27:15 +0200 Subject: [PATCH 2/6] Fix it properly --- packages/repl/src/lib/CodeMirror.svelte | 8 ++++---- .../repl/src/lib/Input/ModuleEditor.svelte | 20 +++++++++---------- packages/repl/src/lib/Repl.svelte | 9 +++++++++ packages/repl/src/lib/types.d.ts | 2 ++ 4 files changed, 25 insertions(+), 14 deletions(-) diff --git a/packages/repl/src/lib/CodeMirror.svelte b/packages/repl/src/lib/CodeMirror.svelte index 7dcfabd6..1267d652 100644 --- a/packages/repl/src/lib/CodeMirror.svelte +++ b/packages/repl/src/lib/CodeMirror.svelte @@ -12,12 +12,13 @@ import { writable } from 'svelte/store'; import Message from './Message.svelte'; import { svelteTheme } from './theme.js'; + import { linter } from '@codemirror/lint'; /** @type {import('./types').StartOrEnd | null} */ export let errorLoc = null; - /** @type {import('@codemirror/lint').Diagnostic[]} */ - export let diagnostics = []; + /** @type {()=>Promise} */ + export let diagnostics = async () => []; export let readonly = false; export let tab = true; @@ -231,8 +232,7 @@ svelte: () => import('@replit/codemirror-lang-svelte').then((m) => m.svelte()) }, autocomplete, - extensions: [codeFolding(), watcher], - diagnostics, + extensions: [codeFolding(), watcher, linter(diagnostics)], instanceStore: cmInstance }} on:codemirror:textChange={({ detail: value }) => { diff --git a/packages/repl/src/lib/Input/ModuleEditor.svelte b/packages/repl/src/lib/Input/ModuleEditor.svelte index 85e51273..0151be66 100644 --- a/packages/repl/src/lib/Input/ModuleEditor.svelte +++ b/packages/repl/src/lib/Input/ModuleEditor.svelte @@ -1,6 +1,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; From 023e5a8598cc5311421aa136e9a5cd3bafc70999 Mon Sep 17 00:00:00 2001 From: Paolo Ricciuti Date: Fri, 30 Jun 2023 19:37:22 +0200 Subject: [PATCH 3/6] add changesets --- .changeset/sweet-pianos-sniff.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/sweet-pianos-sniff.md diff --git a/.changeset/sweet-pianos-sniff.md b/.changeset/sweet-pianos-sniff.md new file mode 100644 index 00000000..2a0eae62 --- /dev/null +++ b/.changeset/sweet-pianos-sniff.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/repl': patch +--- + +manage diagnostics asyncronously From b2fe6b0e3f8d1f5dc2fc88ea636cc96ae9acfbf2 Mon Sep 17 00:00:00 2001 From: Paolo Ricciuti Date: Fri, 30 Jun 2023 19:38:30 +0200 Subject: [PATCH 4/6] remove unused variable --- packages/repl/src/lib/Input/ModuleEditor.svelte | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/repl/src/lib/Input/ModuleEditor.svelte b/packages/repl/src/lib/Input/ModuleEditor.svelte index 0151be66..547889a8 100644 --- a/packages/repl/src/lib/Input/ModuleEditor.svelte +++ b/packages/repl/src/lib/Input/ModuleEditor.svelte @@ -34,8 +34,6 @@ } } - $: max_length = $selected?.source.length ?? 0; - async function diagnostics() { await $bundling; return $selected && error_file === get_full_filename($selected) From 7c25033589f0e165ad8bcdc4d3821b894757fcf4 Mon Sep 17 00:00:00 2001 From: Paolo Ricciuti Date: Fri, 30 Jun 2023 21:25:54 +0200 Subject: [PATCH 5/6] update changesets --- .changeset/sweet-pianos-sniff.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/sweet-pianos-sniff.md b/.changeset/sweet-pianos-sniff.md index 2a0eae62..e8b0c8e2 100644 --- a/.changeset/sweet-pianos-sniff.md +++ b/.changeset/sweet-pianos-sniff.md @@ -2,4 +2,4 @@ '@sveltejs/repl': patch --- -manage diagnostics asyncronously +manage diagnostics asyncronously with linter From bf7ec8855a59fca7511e8dde598eec93fb9f6058 Mon Sep 17 00:00:00 2001 From: Puru Vijay Date: Mon, 3 Jul 2023 00:16:45 +0530 Subject: [PATCH 6/6] neocodemirror 0.0.15 --- packages/repl/package.json | 2 +- packages/repl/src/lib/CodeMirror.svelte | 9 ++++----- pnpm-lock.yaml | 8 ++++---- 3 files changed, 9 insertions(+), 10 deletions(-) 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 1267d652..1976acde 100644 --- a/packages/repl/src/lib/CodeMirror.svelte +++ b/packages/repl/src/lib/CodeMirror.svelte @@ -4,7 +4,6 @@