0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-03-09 13:49:37 -04:00
Commit graph

940 commits

Author SHA1 Message Date
Bartek Iwańczuk
9b36c6f218
Merge branch 'main' into lint_plugins 2025-01-27 00:13:41 +01:00
Bartek Iwańczuk
23adf99e83
perf(lsp): cache completion item resolution during request (#27831)
This commit adds a simple HashMap cache to completion requests.

On a test project the time to compute completions went from 1200ms
to 75ms and the cache contained ~300 entries when 8000 completion
items were produced by the TSC.

This is a short-lived cache and is discarded once the completion
request is finished. In a follow up commits we could make it persist
between requests.
2025-01-26 22:40:53 +01:00
David Sherret
e475749935
refactor: make PackageJsonCache injectable (#27800)
This used to be complicated to do, but is now trivial.
2025-01-24 09:50:25 -05:00
David Sherret
273ec9fbf2
refactor: add WorkspaceFactory and ResolverFactory (#27766)
Allows easily constructing a `DenoResolver` using the exact same logic
that we use in the CLI (useful for dnt and for external bundlers). This
code is then used in the CLI to ensure the logic is always up-to-date.

```rs
use std::rc::Rc;

use deno_resolver:🏭:ResolverFactory;
use deno_resolver:🏭:WorkspaceFactory;
use sys_traits::impls::RealSys;

let sys = RealSys;
let cwd = sys.env_current_dir()?;
let workspace_factory = Rc::new(WorkspaceFactory::new(sys, cwd, Default::default()));
let resolver_factory = ResolverFactory::new(workspace_factory.clone(), Default::default());
let deno_resolver = resolver_factory.deno_resolver().await?;
```
2025-01-23 18:52:55 -05:00
David Sherret
563a7c284e
refactor: use DataUrl from deno_media_type (#27783)
This was moved from deno_graph to deno_media_type.
2025-01-22 20:35:16 +00:00
Nayeem Rahman
7b11670e13
fix(lsp): silence debug error for 'move to a new file' action (#27780) 2025-01-22 17:21:58 +00:00
David Sherret
57dd66ec3d
refactor: move denort to separate crate (#27688)
This slightly degrades the performance of CJS export analysis on
subsequent runs because I changed it to no longer cache in the DENO_DIR
with this PR (denort now properly has no idea about the DENO_DIR). We'll
have to change it to embed this data in the binary and that will also
allow us to get rid of swc in denort (will do that in a follow-up PR).
2025-01-17 20:39:29 +00:00
Nathan Whitaker
464ee9155e
fix(check/lsp): fix bugs with tsc type resolution, allow npm packages to augment ImportMeta (#27690)
Fixes #26224.
Fixes #27042.

There were three bugs here:
- we were only resolving `/// <reference types` directives starting with
`npm:`, which meant we failed to resolve bare specifiers (this broke the
`/// <reference types="vite/client">` directive in most of the vite
templates)
- the `$node_modules` workaround caused us to fail to read files for
tsc. For instance tsc would construct new paths based on specifiers
containing `$node_modules`, and since we hadn't created those we weren't
mapping them back to the original (this broke some type resolution
within `vite/client`)
- our separation of `ImportMeta` across node and deno globals in tsc
meant that npm packages couldn't augment `ImportMeta` (this broke
`vite/client`'s augmentation to add `import.meta.env` and others)


After this, the only remaining issue in the vanilla vite template is our
error on `/vite.svg` (which is an ambient module), and I'll look into
that next.
2025-01-16 19:20:04 +00:00
Jo Franchetti
17d6e66ee3
docs: adding jsdocs info for console interface (#27666)
Signed-off-by: Jo Franchetti <jofranchetti@gmail.com>
Co-authored-by: Marvin Hagemeister <marvin@deno.com>
2025-01-16 14:48:13 +00:00
Nathan Whitaker
32708213d5
fix(check/lsp): correctly resolve compilerOptions.types (#27686)
Fixes https://github.com/denoland/deno/issues/27062

In the LSP we were passing `npm` specifiers to TSC as roots, but TSC
needs fully resolved specifiers (like the actual file path).

In `deno check` we were often excluding the specifiers entirely from the
roots.

In both cases, we need to resolve the specifiers fully and then pass
them to tsc
2025-01-15 18:48:10 -08:00
David Sherret
05dc69932d
refactor: create deno_lib crate (#27673)
Shifts just some code down for now. I'll do the rest of the refactor in
the next pr, but didn't want to drop a huge refactor.
2025-01-15 09:35:46 -05:00
David Sherret
0b033140c0
refactor: move CliNpmResolver to deno_resolver::npm::NpmResolver (#27659)
As title. After this PR all npm resolution will be out of the CLI crate.
2025-01-14 10:01:05 -05:00
Bartek Iwańczuk
a8c647e0ec
Merge branch 'main' into lint_plugins 2025-01-14 15:02:22 +01:00
David Sherret
1e95c20561
refactor: deno_config 0.45 (#27660) 2025-01-14 13:00:31 +01:00
David Sherret
9dbb99a83c
refactor: create NpmInstaller (#27626)
This separates npm resolution code from npm installation (more work
towards moving resolution code out of the CLI and cleaning up this
code).
2025-01-13 17:35:18 -05:00
Benjamin Swerdlow
714b40262e
refactor(node_resolver): make conditions_from_resolution_mode configurable (#27596) 2025-01-13 11:34:37 -05:00
Nayeem Rahman
f912aac2cb
fix(lsp): handle pathless untitled URIs (#27637) 2025-01-13 15:31:08 +00:00
Nathan Whitaker
70c822bfe2
fix(lsp/check): don't resolve unknown media types to a .js extension (#27631)
Fixes https://github.com/denoland/deno/issues/25762. Note that some of
the things in that issue are not resolved (vite/client types not working
properly which has other root causes), but the wildcard module
augmentation specifically is fixed by this.

We were telling TSC that files with unknown media types had an extension
of `.js`, so the ambient module declarations weren't applying. Instead,
just don't resolve them, so the ambient declaration applies.
2025-01-11 03:26:01 +00:00
David Sherret
c27248a8f3
refactor: remove CliNpmReqResolver trait in deno_resolver (#27616) 2025-01-10 14:48:43 -05:00
Bartek Iwańczuk
67f77579e8
Merge branch 'main' into lint_plugins 2025-01-10 13:51:22 +01:00
Bartek Iwańczuk
0486303c59
lsp 2025-01-10 02:02:55 +01:00
Bartek Iwańczuk
714ed55473
show errors with cause raised in JS 2025-01-10 01:28:29 +01:00
David Sherret
34beeb7703
refactor(npm): move SloppyImportsCachedFs to deno_resolver (#27610) 2025-01-09 18:30:48 -05:00
David Sherret
966370c908
refactor(npm): move InNpmPackageChecker code to deno_resolver (#27609)
As title. Will allow consumers to create this struct and use our
behaviour.

Closes #27409
2025-01-09 14:04:52 -05:00
Nayeem Rahman
318f524c5c
fix(lsp): use verbatim specifier for URL auto-imports (#27605) 2025-01-09 17:54:14 +00:00
Bartek Iwańczuk
807cf19157
Merge branch 'main' into lint_plugins 2025-01-09 15:13:39 +01:00
Leo Kettmeir
ea30e188a8
refactor: update deno_core for error refactor (#26867)
Closes #26171

---------

Co-authored-by: David Sherret <dsherret@gmail.com>
2025-01-08 14:52:32 -08:00
Nayeem Rahman
b5e4a303d5
fix(lsp): don't skip dirs with enabled subdirs (#27580) 2025-01-07 19:04:06 +00:00
Bartek Iwańczuk
37207e5914
Merge branch 'main' into lint_plugins 2025-01-06 23:14:19 +01:00
Bartek Iwańczuk
7b3cdf1322
wire up CancellationToken 2025-01-03 23:52:51 +01:00
Bartek Iwańczuk
ebb6b60012
lint 2025-01-03 23:25:31 +01:00
Marvin Hagemeister
adc25f85a1 feat: support excluding rules from lint plugins 2025-01-03 11:03:28 +01:00
Nayeem Rahman
79c0b2ce73
fix(lsp): css preprocessor formatting (#27526) 2025-01-02 13:31:47 +00:00
Bartek Iwańczuk
554bce98b5
Merge branch 'main' into lint_plugins 2025-01-02 10:35:12 +01:00
Kenta Moriuchi
8fb073d7b4
chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
David Sherret
ac7b33a340
chore: cargo fmt - turn on group_imports=StdExternalCrate (#26646) 2024-12-31 12:13:39 -05:00
David Sherret
4638caa740
refactor: do not use deno_fs::FileSystem everywhere (#27508)
This changes the cli to mostly use `std::fs` via `sys_traits` instead of
the implemention of `deno_fs::FileSystem`.
2024-12-31 11:29:07 -05:00
David Sherret
c391ad315e
refactor: use sys_traits (#27480) 2024-12-30 12:38:20 -05:00
Bartek Iwańczuk
1a0a61d059
cleanup 2024-12-26 11:26:04 +01:00
Bartek Iwańczuk
f8e8f251a4
smaller diff 2024-12-26 11:19:34 +01:00
Bartek Iwańczuk
05a89f5ffb
add PluginLogger, finally works in the LSP 2024-12-25 15:18:50 +01:00
Bartek Iwańczuk
f55dd0d0bb
wire up in the lsp 2024-12-24 16:22:09 +01:00
Bartek Iwańczuk
3bea4cfa18
load plugins relative to the config file 2024-12-22 21:46:49 +01:00
Bartek Iwańczuk
d3e41a770a
Merge branch 'main' into lint_plugins 2024-12-21 02:28:39 +01:00
David Sherret
ece718eb3e
perf: upgrade to deno_semver 0.7 (#27426) 2024-12-20 21:14:37 +00:00
Nayeem Rahman
feb94d09e7
fix(lsp): rewrite imports for 'Move to a new file' action (#27427) 2024-12-20 02:33:35 +00:00
Marvin Hagemeister
351e79642a
fix(task): support tasks without commands (#27191)
Support running tasks that have no command and only dependencies. This
is useful for when you want to group tasks only.
2024-12-19 18:10:58 +00:00
Bartek Iwańczuk
53a680bded
Merge branch 'main' into lint_plugins 2024-12-18 05:35:56 +01:00
Nayeem Rahman
2820ba1e22
fix(lsp): include "node:" prefix for node builtin auto-imports (#27404) 2024-12-17 18:55:17 +00:00
Bartek Iwańczuk
f9add94e17
refactor(lint): renames and code flattening (#27386)
Working on loading plugin configuration for
https://github.com/denoland/deno/pull/27203
I encountered a lot of complexity, so did some drive-by cleanups to make
it easier to grok the code and have fewer duplicate names.
2024-12-17 01:35:26 +00:00