Commit graph

23 commits

Author SHA1 Message Date
Matt Bierner aab5c69c79
Fix reference to worker session (#198820) 2023-11-21 16:06:33 -08:00
Matt Bierner fbbdb7912e
Reduce direct dependencies on ts in web server (#198809)
Reduce direct dependencies on ts in web server

This reduces the number of direct imports of `ts` in `webServer.ts`. This sets us up so that we can eventually swap out the TS versions at runtime instead of being limited to the TS version webServer is bundled against
2023-11-21 15:31:10 -08:00
Matt Bierner fbfabc523d
Split up webServer.ts (#198802)
Refactors webServer.ts to split it into multiple files and encapsulate some functionality in classes
2023-11-21 12:06:47 -08:00
Matt Bierner 45e2e0bfd0
JS/TS package acquisition (#184438)
* Experiment with adding ata using `@types` packages shipped in an extension

* Use own file system instead of `https`

* JS/TS type support on web

* Tsconfig needs esModuleInterop not module:nodenext

We actually want webpack to emit commonjs, but need to write ES default
imports to use node-maintainer

* fix package.json indentation

* Adding setting to disable web type acquisition

* Fix merge of yarn lock

* Fixing merge errors

* Fixing errors

* Pick up package externally

* Fixing conflicts

* Bump version

---------

Co-authored-by: Kat Marchán <kzm@zkat.tech>
Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>
2023-08-28 00:49:40 -07:00
Alpha Romer Coma 7ef754c2f6
Fix supported markdown-lint violations in markdown files (#190750)
docs: fix supported markdownlint violations
2023-08-24 08:37:25 +00:00
Matt Bierner a4fde6f2eb
Add more specific error for TS web server (#187752)
This should help us better understand why the access failed
2023-07-12 14:09:01 -07:00
Matt Bierner e30b2359c5
Add logging for TS extension file watcher creation (#185813)
Add logging for extension file watcher creation
2023-06-21 15:36:39 -07:00
Matt Bierner 977ee8ca1e
Add logging of readDirectory (#184549) 2023-06-07 15:22:16 -07:00
Matt Bierner ea7d830fb4
Fix some errors for project wide JS/TS IntelliSense (#183482)
- Don't compute `semanticSupportedSchemes` early, as this may be incorrect if the script is loaded before there are workspace folders

- Handle exceptions when watching files by logging them but not crashing the server
2023-05-25 18:43:46 -07:00
Matt Bierner d948f68bd1
Skip watching lib files on web (#173601)
These files can never change on web so there is no point in creating a watcher for them
2023-02-06 14:01:53 -07:00
Matt Bierner eec5c907ea
Fix web TS Server trying to read files outside of project root (#173591)
There's a bug on the TS Server side that causes it to traverse out of the project root when checking for directories like `node_modules`. On web this ends up being super slow because it goes to the network

This fix blocks those reads
2023-02-06 11:17:21 -08:00
Matt Bierner e0ea3d9b11
Also route stdlib files through TS Server virtual file system (#172857)
This workaround doesn't seem to be needed any more
2023-01-30 14:14:21 -08:00
Matt Bierner f3edd0e0be
Fix TS Server always logging (#172562)
Fixes #172554
2023-01-30 09:39:19 -08:00
Matt Bierner 869f00e0c6
Restore slice call for decoding file contents (#172438)
We need to slice the bytes since we can't pass a shared array to text decoder
2023-01-25 20:59:20 +01:00
Matt Bierner d749617c78
Add more verbose logging to TS Server web calls (#172325) 2023-01-25 02:30:33 +01:00
Matt Bierner 983ee9c0f9
Make sure only lib files go through XMLHttpRequest in TS Server (#172327)
If project wide IntelliSense is enabled, we want to make sure only `lib` files do through the old `XMLHttpRequest` flow
2023-01-24 17:05:19 -08:00
Matt Bierner 1ec468f1d6
Small fixes to web server (#172295)
- Fix loading of `/lib.dom.d.ts` files
- Remove file content copies being made on read
- Extract encoder/decoder constants
- Small formatting cleanup
- Remove platform setting since it's not relevant
2023-01-24 15:26:27 -08:00
Matt Bierner 3e4a338c7a
Fix compile errors in webserver (#172083)
- Remove deprecated flag
- Use more explicit typings
2023-01-24 00:39:58 +01:00
Matt Bierner 848d300e8c
Use explicit flag to enable TS server project wide intellisense (#171208) 2023-01-12 23:15:18 +01:00
Nathan Shively-Sanders 3261c7d3af
Cross-file Typescript support in vscode-web (#169311)
* recreate logging from other machine

* comment out openSystemBrowser

Because I dont have the default browser set up correctnly on any of my
machiens

* Add vscode-wasm-typescript dep

And some logging as I figure out how to use it

* remove unused reference to module

* use require reference that linter allows

* Add vscode-wasm-typescript to tsserver.web.js

Use webpack's CopyPlugin transform pattern to do this manually. This is
probably a bad idea! It's just for prototyping purposes.

* Update vscode-wasm-typescript dependency

* Fix minor syntax in webpack hack

Nonetheless required for it to work!

* Fix another typo in webpack hack!

* Fix provided typescript path

Another typo. Guess my local test wasn't running the contents really

* Try to improve module.exports handling in webpack hac

* tsserver.web.js comes from local builds

Also:
- tsserver.js is no longer minified
- log crossOriginIsolated

* First attempt to set up server-side support

* Remove auto-imported identifier

* Move sync-api setup code to serverProcess.browser.ts

Because it's browser-specific

* Reorder webpack hack and clean up unused logging

* Update vscode-wasm/vscode-wasm-typescript dependencies

* Add file watching

* Extract webpack hack

Build only the ts parts of tsserver.web.js, don't rebuild the vscode
extension. This is a lot faster.

* Remove manual verbose logging

Sheetal showed me the correct way to create a verbose logger instead.

* Add vscode-test-web to semantic-supported schemes

And make isWeb support semantic mode.

* Also update the webpack-hack-only build

* Switch to tsserverlibrary

Also paste in some example code for cancellation, which is not finished
at all.

* Remove bogus auto-import and unneeded (?) dep

* remove webpack-like hack

* move code from vscode-wasm-typescript

* Initial prototype of cancellation

It compiles and looks kind of plausible. But I haven't tested it yet.

* Switch tsserver to separate MessageChannel

* Move watches to a separate MessagePort

Further simplifies the message dispatch code by shifting complexity to
setup. And the setup is straight-line code.

* switch vscode-web from in-memory to real filesystem

goto-def is currently broken because some part of main vscode still
needs treat the files as in-memory, though.

* Make toResource translate / -> vscode-test-web

* Encode scheme and authority in TS filenames

Like the previous host did, but without the leading ^ that TS hard-codes
as "in-memory".

The tsserver host needs to know about the encoding, but the translation
is in a single function. This also means that displayed file paths are
prefixed with /scheme/authority (/vscode-test-web/mount in my testing), but I think that's fine.

* Lift parseUri outside createServerHost

I'm not using it to set the schema/authority for getCurrentDirectory
right now, so there's no shared state to mutate.

* Special-case URI of lib*d.ts in webServer.toResource

Similar to the special-casing in typescriptServiceClient.toResource.
Also requires passing in the extensionUri. This feels like it's breaking
through at least one abstraction layer, which might be a problem.

* Improve cancellation

1. Simplify cancellation checking in web tsserver host to match the
checking in typescript's node host.
2. Move cancellation of request in the extension to tryCancelRequest
from sendNextRequests.
3. Only send cancellation via node or web cancellation, not both.

* Pass in current request instead of waiting for a fresh one.

* Address initial PR comments

Also add some TODO comments for the revision to watches.

* Add cancellation bit to each (cancellable) request, locally fix an issue with retrieving the cancellation bit

* Switch to per-file/directory watches

Watching the entire filesystem recursively is supposed to be
inefficient.

Not done yet: there is an error when watching directories, but it works.
And I can't tell whether watching files works yet.

* Parse --serverMode partialSemantic in webServer

Now the syntax server actually runs as a syntax server.

* Simplify logging code

* Cleanup in webServer

1. Remove a little logging.
2. Correct failure return value for getFileSize
3. Reorder some methods and parameters.

* Switch to markdown extension's FileWatcherManager

I'm not sure if it's OK to depend on a module from another extension;
it's probably better to include the files from a central place instead.

* Clean up host methods

1. Copy and adapt implementations from node host where possible.
2. Note questions for the PR elsewhere.
3. Remove logging except for caught exceptions.

* More logging/TODO cleanup

* Remove duplicate dependency

* Add setting to enable/disable semantic mode on web

Also gate it behind a check to `crossOriginIsolated`

* Re-order and re-arrange code to minimise PR diff

It won't minimise it *much*, but I also consolidated some
unnecessarily-spread-out code that will be easier to read in the long
term, and possibly easier to read in diff form as well.

* Copy fileWatchingManager to typescript extension

Copy from markdown extension to typescript extension. I used the
existing dependencies in the typescript extension, but verified that
they would work the same.

* Fix linting of webServer

* Align formatting of catch / else

* Extract isProjectWideIntellisenseOnWebEnabled and keep using in-memory prefix when project wide intellisense is disabled

* Make sure we still work if SharedArrayBuffers aren't supported

* Remove symlink support and fix typo

Symlinks are implicitly supported by the filesystem right now.

* Fix compile errors

Co-authored-by: Johannes <johannes.rieken@gmail.com>
Co-authored-by: Matt Bierner <matb@microsoft.com>
2023-01-12 11:54:39 -08:00
Matt Bierner d0d28a6295
Reapply building of web server (#166391)
* Reapply building of web server

Revert 8b4642ab23

* Fix critical dep error
2022-11-15 14:55:40 -08:00
Henning Dieterichs b11207c539 Revert "Copy webServer from Typescript to VS Code (#165771)"
This reverts commit cb43019d6a.
2022-11-15 14:45:32 +01:00
Nathan Shively-Sanders cb43019d6a
Copy webServer from Typescript to VS Code (#165771)
* Initial draft.

Not working.
Also not correctly formatted, I'll do that later.

* Various fixes

It works now

* A bit of cleanup

* Move webServer to its own directory

And prepare for getting rid of dynamicImportCompat.js hack

* Remove dynamicImportCompat.js hack

* Revert unrelated change

* Webpac tsserver.web.js with webServer.ts as entrypoint

Instead of using CopyPlugin.

1. Shipping multiple entrypoints in a single file required fixes to
build code.
2. There are a couple of warnings from `require` calls in
tsserverlibrary.js. Those are not relevant since they're in non-web
code, but I haven't figured how to turn them off; they are fully dynamic
so `externals` didn't work.

* Ignore warnings from dynamic import in tsserver

* Add to .vscodeignore files
2022-11-14 10:56:31 -08:00