0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-02-01 20:25:12 -05:00
Commit graph

918 commits

Author SHA1 Message Date
David Sherret
d29d4ca648
refactor: use DataUrl from deno_media_type (#27783)
This was moved from deno_graph to deno_media_type.
2025-01-30 15:34:52 +01:00
Nayeem Rahman
984a775f89
fix(lsp): silence debug error for 'move to a new file' action (#27780) 2025-01-30 15:34:52 +01:00
David Sherret
39d9047834
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).

(cherry picked from commit 57dd66ec3d)
2025-01-22 00:24:19 +01:00
Nathan Whitaker
56fd15d92e
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 23:32:13 +01:00
Jo Franchetti
9534112073
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 23:32:13 +01:00
Nathan Whitaker
d2a3319939
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-16 23:32:12 +01:00
David Sherret
7e495dde58
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-16 23:32:12 +01:00
David Sherret
1bd66b09cc
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-16 23:32:11 +01:00
David Sherret
f6820dec52
refactor: deno_config 0.45 (#27660) 2025-01-16 23:32:11 +01:00
David Sherret
8b5b6cd561
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-16 23:32:10 +01:00
Benjamin Swerdlow
428456681f
refactor(node_resolver): make conditions_from_resolution_mode configurable (#27596) 2025-01-16 23:32:09 +01:00
Nayeem Rahman
6fc6f5ebee
fix(lsp): handle pathless untitled URIs (#27637) 2025-01-16 23:32:09 +01:00
Nathan Whitaker
53d7f039ef
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-16 23:32:09 +01:00
David Sherret
62cf8fca69
refactor: remove CliNpmReqResolver trait in deno_resolver (#27616) 2025-01-16 23:32:09 +01:00
David Sherret
a9da90a44d
refactor(npm): move SloppyImportsCachedFs to deno_resolver (#27610) 2025-01-16 23:32:08 +01:00
David Sherret
0e42884a4c 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 15:19:21 -05:00
Nayeem Rahman
2a508da4d4 fix(lsp): use verbatim specifier for URL auto-imports (#27605) 2025-01-09 15:19:21 -05:00
Leo Kettmeir
5064e9051b refactor: update deno_core for error refactor (#26867)
Closes #26171

---------

Co-authored-by: David Sherret <dsherret@gmail.com>
2025-01-09 15:19:21 -05:00
Nayeem Rahman
94796063f7 fix(lsp): don't skip dirs with enabled subdirs (#27580) 2025-01-09 15:19:20 -05:00
Nayeem Rahman
adaa1f52e3 fix(lsp): css preprocessor formatting (#27526) 2025-01-09 15:19:17 -05:00
Kenta Moriuchi
a39c83170f chore: Happy New Year 2025 (#27509) 2025-01-09 15:19:16 -05:00
David Sherret
0bbb302318 chore: cargo fmt - turn on group_imports=StdExternalCrate (#26646) 2025-01-09 15:19:15 -05:00
David Sherret
118fd69988 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`.
2025-01-09 15:19:15 -05:00
David Sherret
68287ab9b1 refactor: use sys_traits (#27480) 2025-01-09 15:19:14 -05:00
David Sherret
e417475a0c perf: upgrade to deno_semver 0.7 (#27426) 2025-01-09 15:19:12 -05:00
Nayeem Rahman
cffee2c719 fix(lsp): rewrite imports for 'Move to a new file' action (#27427) 2025-01-09 15:19:11 -05:00
Marvin Hagemeister
f0f605ce7b 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.
2025-01-09 15:19:11 -05:00
Nayeem Rahman
28fb691f4e fix(lsp): include "node:" prefix for node builtin auto-imports (#27404) 2025-01-09 15:19:10 -05:00
Bartek Iwańczuk
18304a674d 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.
2025-01-09 15:19:09 -05:00
David Sherret
48b760c38b refactor: extract out FileFetcher to deno_cache_dir (#27263) 2025-01-09 15:19:09 -05:00
Nayeem Rahman
83c00ea092 fix(lsp): respect "typescript.suggestionActions.enabled" setting (#27373) 2025-01-09 15:19:09 -05:00
Divy Srivastava
2e0c4a38d6 fix: FastString v8_string() should error when cannot allocated (#27375)
Upgrades deno_core to 0.326.0
2025-01-09 15:19:08 -05:00
Nathan Whitaker
457f64a6c6 fix(lockfile): include dependencies listed in external import map in lockfile (#27337) 2025-01-09 15:19:08 -05:00
Nayeem Rahman
cb36d8a606 fix(lsp): sql and component file formatting (#27350) 2025-01-09 15:19:08 -05:00
Nathan Whitaker
5279eac4f4
feat(unstable): support caching npm dependencies only as they're needed (#27300)
Currently deno eagerly caches all npm packages in the workspace's npm
resolution. So, for instance, running a file `foo.ts` that imports
`npm:chalk` will also install all dependencies listed in `package.json`
and all `npm` dependencies listed in the lockfile.

This PR refactors things to give more control over when and what npm
packages are automatically cached while building the module graph.

After this PR, by default the current behavior is unchanged _except_ for
`deno install --entrypoint`, which will only cache npm packages used by
the given entrypoint. For the other subcommands, this behavior can be
enabled with `--unstable-npm-lazy-caching`


Fixes #25782.

---------

Signed-off-by: Nathan Whitaker <17734409+nathanwhit@users.noreply.github.com>
Co-authored-by: Luca Casonato <hello@lcas.dev>
2024-12-11 03:37:34 +01:00
Mohammad Sulaiman
e24d9531c1
fix: replace the @deno-types with @ts-types (#27310) 2024-12-11 03:37:33 +01:00
Nathan Whitaker
d6c98c0e4b
fix(node): update list of builtin node modules, add missing export to _http_common (#27294)
Fixes https://github.com/denoland/deno/issues/27289

We exported these but forgot to add them to the list of builtins used by
the resolver, so we weren't resolving bare imports of some modules (e.g.
`"_http_common"`)

Also adds a missing export of `HTTPParser` from `_http_common`
2024-12-11 03:37:32 +01:00
David Sherret
f71fe37b81
refactor: remove usages of deno_core::resolve_import for resolving redirects (#27234)
This was doing an allocation for reparsing the specifier. Might as well
do `.join` here and it means I can extract out this file fetcher code to
deno_cache_dir more easily.
2024-12-05 23:03:54 +01:00
David Sherret
a34839e9d0
fix: improve auto-imports for npm packages (#27224)
Improves auto-imports when using `"nodeModulesDir": "auto"`
2024-12-05 23:03:54 +01:00
David Sherret
66f5d4b7e6
refactor: remove CliNpmRegistryApi (#27222)
Extracts more code out of the CLI.
2024-12-05 23:03:53 +01:00
Bartek Iwańczuk
6cac2ab63f
fix: support workspace:^ and workspace:~ version constraints (#27096)
This commit adds support for understanding "workpace:^"
and "workspace:~" version constraints in npm/pnpm workspaces.

This is done by upgrading various crates to their latest versions.

Closes https://github.com/denoland/deno/issues/26726

---------

Co-authored-by: David Sherret <dsherret@gmail.com>
2024-12-05 23:03:51 +01:00
David Sherret
3678eff0cb
fix(task): forward signals to spawned sub-processes on unix (#27141)
Closes https://github.com/denoland/deno/issues/18445
2024-12-05 23:03:51 +01:00
David Sherret
bb3e918f4a
feat(unstable): repurpose --unstable-detect-cjs to attempt loading more modules as cjs (#27094)
This resurrects the `--unstable-detect-cjs` flag (which became stable),
and repurposes it to attempt loading .js/.jsx/.ts/.tsx files as CJS in
the following additional scenarios:

1. There is no package.json
1. There is a package.json without a "type" field

Also cleans up the implementation of this in the LSP a lot by hanging
`resolution_mode()` off `Document` (didn't think about doing that until
now).
2024-11-28 15:47:28 +01:00
David Sherret
8cd9fa6aae
fix(node): correct resolution of dynamic import of esm from cjs (#27071)
Ensures a dynamic import in a CJS file will consider the referrer as an import for node resolution.

Also adds fixes (adds) support for `"resolution-mode"` in TypeScript.
2024-11-28 15:47:26 +01:00
Nayeem Rahman
ec81cbbd86
fix(lsp): support task object notation for tasks request (#27076) 2024-11-28 15:47:25 +01:00
Nayeem Rahman
3bec83cf91
fix(lsp): remove stray debug output (#27010) 2024-11-28 15:47:22 +01:00
David Sherret
8be2bbf074
feat: Wasm module support (#26668)
Support for Wasm modules.

Note this implements the standard where the default export is the
instance (not the module). The module will come later with source phase
imports.

```ts
import { add } from "./math.wasm";

console.log(add(1, 2));
```
2024-11-19 18:59:23 -05:00
João Baptista
c55e936be0
feat(fmt): support SQL (#26750)
This commit adds support for .sql files in "deno fmt" subcommand.

Closes: https://github.com/denoland/deno/issues/25024
---------

Signed-off-by: m4rc3l05 <15786310+M4RC3L05@users.noreply.github.com>
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2024-11-19 21:01:16 +00:00
Nayeem Rahman
c36f877f8d
fix(lsp): ignore editor indent settings if deno.json is present (#26912) 2024-11-18 21:45:34 +00:00
Bartek Iwańczuk
84e1238648
feat(task): support object notation, remove support for JSDocs (#26886)
This commit changes three aspects of `deno task`:
1. Tasks can now be written using object notation like so:
```jsonc
{
  "tasks": {
     "foo": "deno run foo.js",
     "bar": {
        "command": "deno run bar.js"
     }
}
```
2. Support for comments for tasks is now removed. Comments above tasks
will
no longer be printed when running `deno task`.
3. Tasks written using object notation can have "description" field that
replaces
support for comments above tasks:
```jsonc
{
  "tasks": {
     "bar": {
        "description": "This is a bar task"
        "command": "deno run bar.js"
     }
}
```
```
$ deno task
Available tasks:
- bar
    // This is a bar task
    deno run bar.js
```

Pulled most of the changes from
https://github.com/denoland/deno/pull/26467 to
support "dependencies" in tasks. Additionally some cleanup was performed
to make code easier to read.

---------

Co-authored-by: David Sherret <dsherret@gmail.com>
2024-11-16 12:18:17 +01:00