468 Commits

Author SHA1 Message Date
Jake Bailey
4ac75fa2b6
Remove emitDeclarationOnly hack now that build mode supports it as a flag (#51795) 2022-12-06 16:02:23 -08:00
Jake Bailey
703652cebf
Remove some files from the repo root (#51446) 2022-12-06 13:42:54 -08:00
Jake Bailey
2d2a4343b8
Reformat imports to be one identifier per line (#51565) 2022-11-17 13:42:18 -08:00
Jake Bailey
8eed2ca2dd
Consistently respect --no-typecheck flag in build (#51575) 2022-11-17 12:44:39 -08:00
Ron Buckton
e67b06e909
Simplistic watch mode for runtests (#51461)
* Simplistic watch mode for runtests

* Use esbuild WatchMode object for testRunner updates

* switch AbortController to CancelToken
2022-11-09 15:07:08 -05:00
Jake Bailey
0993c017ba
Fix JSDoc eslint rule for properties and methods (#51462) 2022-11-08 16:35:10 -08:00
Jake Bailey
d237468cda
Add --no-typecheck option for runtests/runtests-parallel/min/local (#51460) 2022-11-08 15:39:04 -08:00
Jake Bailey
b4715d3891
Replace eslint-plugin-jsdoc by extending local jsdoc-format rule, saving ~20% of our linting time (#51438) 2022-11-08 13:59:48 -08:00
Jake Bailey
6a3b4991f0
Remove leftover todo from mjs/cjs transition (#51453) 2022-11-08 12:23:30 -08:00
Jake Bailey
acfe7ac6d2 Remove mkdirp
If our build scripts target Node 10+, we can use the builtin mkdir
function in recursive mode instead.
2022-11-07 13:35:48 -08:00
Jake Bailey
bbc906dea3 Don't use needsUpdate for quick tasks
needsUpdate may be wrong when the branch changes; these ones are now so
fast thanks to being pure JS that we can just always run their contents
and be sure that the outputs are right.
2022-11-07 13:35:48 -08:00
Jake Bailey
aec2761d31 Modernize localize script, use new XML library
This file is pretty much the same as it was when it was committed in
2017; these days, we can write clearer code with async/await and new FS
APIs.

Additionally, we can improve the performance of this script by using a
newer/faster/maintained XML library. This will enable us to run the
script unconditionally in a later commit.
2022-11-07 13:35:48 -08:00
Jake Bailey
394c4ae68b Use jsonc-parser instead of LKG compiler in build
Profiling the build roughly half of the time spent loading the
build is spent importing typescript.js, for this one function.

Since this stack is already adding required devDependencies, switch
readJson to use jsonc-parser (published by the VS Code team), rather
than importing the entire LKG typescript.js library.
2022-11-07 13:35:48 -08:00
Jake Bailey
3cd72e76b2 Change build system to hereby
This eliminates a significant number of dependencies, eliminating all
npm audit issues, speeding up `npm ci` by 20%, and overall making the
build faster (faster startup, direct code is faster than streams, etc)
and clearer to understand.

I'm finding it much easier to make build changes for the module
transform with this; I can more clearly indicate task dependencies and
prevent running tasks that don't need to be run.

Given we're changing our build process entirely (new deps, new steps),
it seems like this is a good time to change things up.
2022-11-07 13:35:48 -08:00
Jake Bailey
c65142244c Add dts bundling
This adds a "small" d.ts bundler script. This script is very basic,
using Node printing to produce its output. Generally speaking, this is
inadvisable as it completely disregards name shadowing, globals, etc.
However, in our case, we don't care about the globals, and we can opt to
restructure our codebase in order to avoid conflict, which we largely
had to do anyway when we were namespaces and everything was in scope.
2022-11-07 13:35:48 -08:00
Jake Bailey
4139807e75 Add build via esbuild
This configures the existing build tasks to use esbuild by default. If
using the plain files is desired, passing `--bundle=false` will build
using plain files and still produce a runnable system.

This is only a basic build; a more efficient build is provided later
when gulp is replaced by hereby.
2022-11-07 13:34:44 -08:00
Jake Bailey
6dfa4299d7 Remove typescriptServices, protocol.d.ts, typescript_standalone.d.ts
This is the same as TypeScript PR 51026.
2022-11-07 13:34:44 -08:00
Jake Bailey
d12116d8da Fix all internal JSDoc comments
If these are regular comments, then they won't appear in our d.ts files.
But, now we are relying on an external d.ts bundler to produce our final
merged, so they need to be present in the "input" d.ts files, meaning
they have to be JSDoc comments.

These comments only work today because all of our builds load their TS
files from scratch, so they see the actual source files and their
non-JSDoc comments.

The comments also need to be attached to a declaration, not floating,
otherwise they won't be used by api-extractor, so move them if needed.
2022-11-07 13:34:44 -08:00
Jake Bailey
231fa27f89 Add JSDoc eslint rule
See the next commit for a more fleshed-out description.
2022-11-07 13:33:08 -08:00
Jake Bailey
39e27fbb6b Fix up linting, make lint clean
Now that we are modules, there's no reason to ban multiple namespaces
per file; each file is its own scope and declaring a namespace won't
merge it into any other files.
2022-11-07 13:33:07 -08:00
Jake Bailey
180554c99e Make processDiagnosticMessages generate a module 2022-11-07 13:33:07 -08:00
Jake Bailey
754eeb2986
Update CodeQL workflow and configuration, fix found bugs (#51263) 2022-10-27 16:29:55 -07:00
Jake Bailey
a24201c8ef
Remove VSDevMode.ps1 and createPlaygroundBuild (#51166) 2022-10-13 14:39:25 -07:00
Jake Bailey
ad56b5ca56
Convert scripts/Gulpfile to checked mjs/cjs so they can run without compilation (#50988) 2022-10-07 09:50:46 -07:00
Jake Bailey
49533168db
Remove configureLanguageServiceBuild, instrumenter (#51048) 2022-10-04 10:36:57 -07:00
Jake Bailey
f16ca7dd36
Remove 'async' dependency, used only in errorCheck.ts, modernize file (#50667) 2022-09-23 09:54:36 -07:00
Jake Bailey
16156b1baf
Add rules from eslint's recommended set that triggered good lints (#50422) 2022-09-19 16:20:55 -07:00
Jake Bailey
68d526c200
Don't run linter after tests runs (#50597) 2022-09-12 13:30:18 -07:00
Ron Buckton
a4cabe725b
Support for auto-accessor fields from the Stage 3 Decorators proposal (#49705)
* Support for auto-accessor fields

* Add tests, ensure accessors are initialized in ctor

* classFields cleanup and PR feedback
2022-09-12 15:12:11 -04:00
Jake Bailey
3c3820b1a4
Simplify CI detection (#50661) 2022-09-06 16:36:37 -07:00
Jake Bailey
9ac1fce117
Fix eslint not looking at certain scripts, fix lints (#50660) 2022-09-06 16:05:47 -07:00
Jake Bailey
5c2f770d97
Remove unused cancellation from build (#50658) 2022-09-06 12:43:06 -07:00
Jake Bailey
e675ea8dd8
Remove AUTHORS.md, .mailmap, authors.ts script (#50410) 2022-08-25 15:38:09 -07:00
Jake Bailey
6362fb2dce
Replace eslint rulesdir with eslint-plugin-local, convert eslint rules to JS (#50380) 2022-08-22 13:46:03 -07:00
Jake Bailey
ef88fbb8ab
Remove some unused deps and dead code (#50367) 2022-08-19 09:42:14 -07:00
Jake Bailey
66d8b95941
Ensure all scripts are checked, fix errors (#50326) 2022-08-17 16:42:50 -07:00
Jake Bailey
9f7c0cbad7
Run ESLint over our JS files, fix all lints (#50172) 2022-08-15 08:42:26 -07:00
Jack Works
e2fbe19adf
fix: produceLKG does not work on Windows (#50140) 2022-08-10 20:12:17 -07:00
Jake Bailey
734b9828a6
Update all depedencies, including ESLint 8, refresh lockfile (#49550) 2022-06-16 13:39:42 -07:00
Jake Bailey
884f5ac258
Ensure scripts compile, are checked in strict mode (#49524) 2022-06-14 16:28:42 -07:00
Matt Bierner
3fc5f968ca
Enable TS Server plugins on web (#47377)
* Prototype TS plugins on web

This prototype allows service plugins to be loaded on web TSServer

Main changes:

- Adds a new host entryPoint called `importServicePlugin` for overriding how plugins can be loaded. This may be async
- Implement `importServicePlugin` for webServer
- The web server plugin implementation looks for a `browser` field in the plugin's `package.json`
- It then uses `import(...)` to load the plugin (the plugin source must be compiled to support being loaded as a module)

* use default export from plugins

This more or less matches how node plugins expect the plugin module to be an init function

* Allow configure plugin requests against any web servers in partial semantic mode

* Addressing some comments

- Use result value instead of try/catch (`ImportPluginResult`)
- Add awaits
- Add logging

* add tsserverWeb to patch in dynamic import

* Remove eval

We should throw instead when dynamic import is not implemented

* Ensure dynamically imported plugins are loaded in the correct order

* Add tests for async service plugin timing

* Update src/server/editorServices.ts

Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>

* Partial PR feedback

* Rename tsserverWeb to dynamicImportCompat

* Additional PR feedback

Co-authored-by: Ron Buckton <ron.buckton@microsoft.com>
Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>
2022-06-14 12:35:53 -07:00
Mateusz Burzyński
d337cbc19f
Run mocha using process.execPath instead of harcoding "node" (#48797) 2022-05-04 08:23:08 -07:00
Ryan Cavanaugh
9153eaaee0
Reserve a core in runtests-parallel on non-CI machines (#48502) 2022-03-31 21:27:58 -07:00
Jake Bailey
5fd0b6432e
Clean up a load of unused dependencies, broken jake script (#48214) 2022-03-11 09:36:03 -08:00
Alvin Ramskogler
0b9f8b4aa2
Fix confusing file name in generated diagnostics file (#46821)
* Fix confusing file name in generated diagnostics file

* Change "by" to "in"
2022-01-28 15:08:19 -08:00
Ron Buckton
c792a66065
Pin chalk to ^4.1 (#46985)
* Pin chalk to ^4.1

* Revert #46931
2021-12-02 11:05:17 -08:00
uhyo
04f831d795
Import chalk with import() syntax (#46931)
This makes code compatible with chalk v5.0.0.
2021-11-29 13:32:29 +00:00
Andrew Branch
7f8bf0b9c4
Fix git remote in cherry pick script (#46647) 2021-11-02 12:39:42 -07:00
Eli Barzilay
fa2ad1a35a Fix findUpDir.ts and uses
Missed a bunch of stuff in #46414 (556098e).
2021-11-01 16:45:49 -04:00
Eli Barzilay
556098ed50 Avoid hard-wired build-tree paths
Instead, search for stuff up the directory tree, with the main
functionality being to look for `Gulpfile.js` and assume the resulting
directory is the root.

(Unfortunatley, this is implemented twice, one in `scripts` and another
in `src`.  It's not possible to use a single implementation for both
since that would require assuming a directory structure which this is
intended to avoid.)

Also, in `scripts/build/projects.js`, abstracdt common exec
functionality into a local helper, and use full paths based on the above
search instead of assuming relative paths assuming CWD being in the
project root.
2021-10-18 17:43:45 -04:00