1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-01-23 15:39:49 -05:00
Commit graph

7009 commits

Author SHA1 Message Date
Marvin Hagemeister
3b02d9b603 fix(unstable): don't error on non-existing attrs or type attr (#27456)
When running selectors for JS linting plugins we would error when
encountering an unknown attribute name:

```js
// selector
Foo[non-existant]

// error
Error: Missing string id: <number>
```

This was caused by using `0` as the invalid marker, but also overloading
`0` with an actual node type. So the fix is to reserve `0` as the
invalid marker and move the property type to the next index.
2025-01-09 15:19:14 -05:00
Luca Casonato
7ad45db55f feat(unstable): add OTEL MeterProvider (#27240)
This commit replaces `Deno.telemetry.MetricsExporter` with
`Deno.telemetry.MeterProvider`.

Signed-off-by: Luca Casonato <hello@lcas.dev>
Co-authored-by: snek <snek@deno.com>
2025-01-09 15:19:13 -05:00
Marvin Hagemeister
9bea68b51a feat(unstable): support selectors in JS lint plugins (#27452)
This PR adds support for using selectors in the JS linting plugin API.
Supported at the moment are:

- `Foo Bar` (descendant)
- `Foo > Bar` (child combinator)
- `Foo + Foo` (next sibling)
- `Foo ~ Foo` (subsequent sibling)
- `[attr]`, `[attr=value]` (attribute selectors, supported operators:
`=`, `!=`, `<`, `>`, `<=`, `>=`)
- `:first-child`
- `:last-child`
- `:nth-child(2)`, `:nth-child(2n + 1)`
2025-01-09 15:19:13 -05:00
Marvin Hagemeister
ae83bdf86f feat(unstable): add JS linting plugin infrastructure (#27416)
This PR extracts the core part of
https://github.com/denoland/deno/pull/27203 to make it easier to review
and land in parts.

It contains:
-  The JS plugin code the deserializes and walks the buffer
- The Rust portion to serialize SWC to the buffer format (a bunch of
nodes are still todos, but imo these can land anytime later)
- Basic lint plugin types, without the AST node types to make this PR
easier to review
- Added more code comments to explain the format etc.


More fixes and changes will be done in follow-up PRs.

---------

Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2025-01-09 15:19:12 -05:00
David Sherret
e417475a0c perf: upgrade to deno_semver 0.7 (#27426) 2025-01-09 15:19:12 -05:00
Bartek Iwańczuk
bd1437d5ec perf: don't store duplicate info for ops in the snapshot (#27430)
Mostly for changes from https://github.com/denoland/deno_core/pull/1010

---------

Co-authored-by: David Sherret <dsherret@gmail.com>
2025-01-09 15:19:12 -05:00
snek
39e319e33f feat(unstable): Implement QUIC (#21942)
Implements a QUIC interface, loosely based on the WebTransport API (a
future change could add the WebTransport API, built on top of this one).

[quinn](https://docs.rs/quinn/latest/quinn/) is used for the underlying
QUIC implementation, for a few reasons:
- A cloneable "handle" api which fits quite nicely into deno resources.
- Good collaboration with the rust ecosystem, especially rustls.
- I like it.

<!--
Before submitting a PR, please read https://deno.com/manual/contributing

1. Give the PR a descriptive title.

  Examples of good title:
    - fix(std/http): Fix race condition in server
    - docs(console): Update docstrings
    - feat(doc): Handle nested reexports

  Examples of bad title:
    - fix #7123
    - update docs
    - fix bugs

2. Ensure there is a related issue and it is referenced in the PR text.
3. Ensure there are tests that cover the changes.
4. Ensure `cargo test` passes.
5. Ensure `./tools/format.js` passes without changing files.
6. Ensure `./tools/lint.js` passes.
7. Open as a draft PR if your work is still in progress. The CI won't
run
   all steps, but you can add '[ci]' to a commit message to force it to.
8. If you would like to run the benchmarks on the CI, add the 'ci-bench'
label.
-->
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
David Sherret
e73627958d fix(publish): infer literal types in const contexts (#27425)
* https://github.com/denoland/deno_graph/pull/555
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
David Sherret
f003040df5 fix(compile): be more deterministic when compiling the same code in different directories (#27395)
Additionaly, this no longer unnecessarily stores the source twice for
file specifiers and fixes some sourcemap issues.

Closes https://github.com/denoland/deno/issues/27284
2025-01-09 15:19:11 -05:00
Yoshiya Hinosawa
cc8e339c25 fix(ext/node): do not exit worker thread when there is pending async op (#27378)
This change fixes the premature exit of worker threads when there are still
remaining pending ops.

This change reuses the idea of #22647 (unref'ing `op_worker_recv_message` in
worker threads if closeOnIdle specified) and uses
`web_worker.has_message_event_listener` check in the opposite way as
#22944. (Now we continue the worker when `has_message_event_listener` is
true instead of stopping it when `has_message_event_listener` is false.

closes #23061
closes #26154
2025-01-09 15:19:11 -05:00
Sean McArthur
e943e4287f fix(ext/fetch): retry some http/2 errors (#27417)
This brings some of the HTTP/2 retry behavior from reqwest to
`ext/fetch`. It will retry very specific HTTP/2 errors once, if the body
is able to be used again.

Closes #27332
2025-01-09 15:19:10 -05:00
Bartek Iwańczuk
2c3e31bc10 fix(task): properly handle task name wildcards with --recursive (#27396)
This commit fixes `deno task` by checking if the provided
task name actually has a wildcard char ("*").

Previously, if the "--recursive" flag was passed, the task name
was treated as a regex, which lead to a situation where exact task
name resulted in a regex that matched all tasks with the specific
prefix.

This commit fixes it, by checking if the provided task name, is an exact
name, or is it a wildcard match.

Closes https://github.com/denoland/deno/issues/27370
Closes https://github.com/denoland/deno/issues/27401
Closes https://github.com/denoland/deno/issues/27408
2025-01-09 15:19:10 -05:00
Nathan Whitaker
3b66473981 fix(outdated): ensure "Latest" version is greater than "Update" version (#27390)
Fixes #27038.

Previously, for NPM packages the latest version was the version with the
"latest" tag. For JSR packages, the latest version was the greatest
version that matched a `*` version requirement. Unfortunately, that
doesn't work well with pre-release versions.

This PR changes it so that the latest version is always > the currently
requested version.
For NPM: if "latest" tag > current then "latest" tag; otherwise the
greatest version that is >= current
For JSR: greatest version >= current

This is the most reasonable behavior I could come up with. For example,

```
versions:
2.0.0-beta.2
2.0.0-beta.1
1.0.0 => "latest" tag

with a version req `^2.0.0-beta.1`

previously:
"Update" column => 2.0.0-beta.2
"Latest" column => 1.0.0

now:
"Update" column => 2.0.0-beta.2
"Latest" column => 2.0.0-beta.2
```
2025-01-09 15:19:10 -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
d7e93cfff6 refactor: use capacity_builder for writing deno compile data section (#27393) 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
0ac82d6fea fix: upgrade deno_doc to 0.161.3 (#27377)
upgrades itoa requirement to `1.0.14`. needed for #27308
2025-01-09 15:19:09 -05:00
David Sherret
c85e9ffbc6 fix(compile): display embedded file sizes and total (#27360)
Merging as a fix so that LTS gets this as it's a useful diagnostic tool.

The 1MB unique is because we deduplicate files that we store (ex. some
packages have the same file multiple times so we store that once).
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
Bartek Iwańczuk
fbf569fdfa refactor: add 'sync' feature to deno_resolver crate (#27357) 2025-01-09 15:19:08 -05:00
Nathan Whitaker
d373e2fb93 fix(outdated): support updating dependencies in external import maps (#27339)
Fixes #27331.

The support for it was already in `outdated`, but forgot to wire up the
updating part

Needs #27337
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
David Sherret
8381d4a950 fix(compile): analyze modules in directory specified in --include (#27296)
I ended up changing the file system implementation to determine
its root directory as the last step of building it instead of being the
first step which makes it much more reliable.
2025-01-09 15:19:06 -05:00
snek
26266045d4 refactor(unstable): otel configuration (#27333)
split up otel config into user configurable and runtime configurable
parts. user configurable part is now set via env vars parsed according
to the otel spec. otel is now enabled via `OTEL_DENO=true`, and
`--unstable-otel` only acts as a guard.

Fixes: https://github.com/denoland/deno/issues/27273
2025-01-09 15:19:06 -05:00
David Sherret
f2034e8daa fix(compile): output contents of embedded file system (#27302) 2025-01-09 15:19:06 -05:00
denobot
b32ed7516c
2.1.4 (#27327)
Bumped versions for 2.1.4

Co-authored-by: bartlomieju <bartlomieju@users.noreply.github.com>
2024-12-11 04:31:27 +01: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
Bartek Iwańczuk
31dbe08ef8
refactor(lint): manage schema files for linter in Deno repo (#27324)
This commit provides schema files for lint rules and lint tags
in this repo instead of pulling them from `deno_lint` repository.

A unit test was added to ensure all available rules are listed
in the schema file. A unit test for tags can be done once 
https://github.com/denoland/deno/pull/27162 lands.
2024-12-11 03:37:34 +01:00
Bartek Iwańczuk
340bcb1ba5
fix(outdated): error when there are no config files (#27306)
This commit changes "deno outdated" subcommand to
error out if run in a directory that has no config file 
(including parent directories). This matches
"pnpm" behavior.

Also added tests for filtering that yields no results,
to ensure that it exists cleanly, that also matches "pnpm"
behavior.

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

---------

Signed-off-by: Bartek Iwańczuk <biwanczuk@gmail.com>
Co-authored-by: David Sherret <dsherret@users.noreply.github.com>
2024-12-11 03:37:34 +01:00
David Sherret
5da4db0a37
fix(lint): do not error providing --allow-import (#27321)
Closes https://github.com/denoland/deno/issues/27318
2024-12-11 03:37:34 +01:00
Bartek Iwańczuk
16c2fd8317
fix(outdated): respect --quiet flag for hints (#27317) 2024-12-11 03:37:34 +01:00
David Sherret
2403198876
perf(compile): improve FileBackedVfsFile (#27299) 2024-12-11 03:37:33 +01:00
Mohammad Sulaiman
e24d9531c1
fix: replace the @deno-types with @ts-types (#27310) 2024-12-11 03:37:33 +01:00
Bartek Iwańczuk
da81fb4a5b
fix(outdated): show a suggestion for updating (#27304)
Show command to update dependencies based on the output
of "deno outdated" command.

Closes https://github.com/denoland/deno/issues/27256
2024-12-11 03:37:33 +01:00
David Sherret
24bb69be67
fix(compile): correct read length for transpiled typescript files (#27301)
Extracted out of https://github.com/denoland/deno/pull/27296/files

It's hard to test for this, but a test for this is in that other PR.
2024-12-11 03:37:33 +01:00
David Sherret
c402448061
chore: reduce allocations in a few places (#27288)
Probably doesn't have much impact. I didn't measure any of these, but
reducing allocations should always be good.
2024-12-11 03:37:33 +01:00
David Sherret
71ee3d7f38
fix: do not error when subpath has an @ symbol (#27290)
Closes https://github.com/denoland/deno/issues/27243
2024-12-11 03:37:32 +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
e7606429b0
fix(task): do not always kill child on ctrl+c on windows (#27269)
We don't need to forward the kill signal because ctrl+c events are sent
to the process group.

Closes https://github.com/denoland/deno/issues/27266
2024-12-11 03:37:32 +01:00
denobot
7f9b1ff30f
2.1.3 (#27244)
Bumped versions for 2.1.3

Co-authored-by: bartlomieju <bartlomieju@users.noreply.github.com>
2024-12-06 00:36:23 +01:00
Nathan Whitaker
79aca5c2ca
fix(install): use locked version of jsr package when fetching exports (#27237)
Fixes #27193.
2024-12-05 23:03:56 +01:00
Marvin Hagemeister
5e809f9720
fix(task): --recursive option not working (#27183)
We didn't handle the `--recursive` option properly in `deno task`. This
PR addresses that.

Fixes https://github.com/denoland/deno/issues/27174
2024-12-05 23:03:55 +01:00
Bartek Iwańczuk
65d01262f0
fix: clear dep analysis when module loading is done (#27204)
Closes https://github.com/denoland/deno/issues/26663
2024-12-05 23:03:55 +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
Nathan Whitaker
eae78b9b05
fix(outdated): allow --latest without --update (#27227)
Ref #27025.

it does nothing (it's the default behavior) but it doesn't hurt to allow
it
2024-12-05 23:03:54 +01:00