0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-03-04 09:57:11 -05:00
Commit graph

7030 commits

Author SHA1 Message Date
David Sherret
4279c2d78a fix(jsr): Wasm imports fail to load (#27594)
* https://github.com/denoland/deno_graph/pull/562

Closes https://github.com/denoland/deno/issues/27593
2025-01-09 15:19:20 -05:00
Marvin Hagemeister
6b9f627d73 fix(lint): fix single char selectors being ignored (#27576)
The selector splitting code that's used for JS linting plugins didn't
properly account for selectors being a single character. This can happen
in the case of `*`.

Instead of comparing against the length, we'll now check if the
remaining string portion is not empty, which is more robust. It also
allows us to detect trailing whitespace, which we didn't before.
2025-01-09 15:19:20 -05:00
David Sherret
b93f118428 fix(no-slow-types): handle rest param with internal assignments (#27581)
Closes #27575
2025-01-09 15:19:20 -05:00
Nayeem Rahman
94796063f7 fix(lsp): don't skip dirs with enabled subdirs (#27580) 2025-01-09 15:19:20 -05:00
Bartek Iwańczuk
153b6f0365 refactor: make IncrementalCache accept a CacheDBHash (#27570) 2025-01-09 15:19:19 -05:00
Luca Casonato
00719ecef7 feat(unstable): no config npm:@opentelemetry/api integration (#27541)
After this PR, one does not need to import `jsr:@deno/otel` anymore.
2025-01-09 15:19:19 -05:00
Luca Casonato
2a54c08182 feat(unstable): replace SpanExporter with TracerProvider (#27473) 2025-01-09 15:19:18 -05:00
Kitson Kelly
2c001851fe fix(kv): improve backoff error message and inline documentation (#27537)
Ref: #27536
2025-01-09 15:19:18 -05:00
David Sherret
bb233b1ab1 fix(check): move module not found errors to typescript diagnostics (#27533)
Instead of hard erroring, we now surface module not found errors as
TypeScript diagnostics (we have yet to show the source code of the
error, but something we can improve over time).
2025-01-09 15:19:18 -05:00
Nayeem Rahman
4640a34453 fix(check): line-break between diagnostic message chain entries (#27543) 2025-01-09 15:19:18 -05:00
David Sherret
e99d3ad74d fix(permissions): implicit --allow-import when using --cached-only (#27530)
`--cached-only` cannot communicate with a remote server

Closes https://github.com/denoland/deno/issues/27498
2025-01-09 15:19:18 -05:00
David Sherret
888f40983e refactor: update some fs_util functions to use sys_traits (#27515)
This is in preparation for extracting out these functions from the CLI
crate.

A side benefit is these functions will now work in Wasm.
2025-01-09 15:19:17 -05:00
David Sherret
1b6d7910cd refactor(node/npm): separate out permission check from npm resolvers (#27511)
Decouples permissions from the npm resolvers (towards moving the
resolvers out of the cli crate)
2025-01-09 15:19:17 -05:00
Nayeem Rahman
adaa1f52e3 fix(lsp): css preprocessor formatting (#27526) 2025-01-09 15:19:17 -05:00
David Sherret
0718771a8a fix(npm): deterministically output tags to initialized file (#27514)
The tags were being sorted in a random order due to the package_reqs
hashmap
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
Je Xia
1dd49e2875 fix(node): Add missing inspector/promises (#27491)
Add missing `inspector/promises` in node builtin module list, that
causes types checking error.
2025-01-09 15:19:14 -05:00
Marvin Hagemeister
4d95005c0d chore(lint): remove manual AST field counter (#27449)
Addresses the review feedback in
https://github.com/denoland/deno/pull/27416 .

- Hoist the buffer max size variable to make it less confusing
- Remove manual AST field counter in favour of an explicit "commit
schema" step which writes the actual field count.
2025-01-09 15:19:14 -05:00
David Sherret
68287ab9b1 refactor: use sys_traits (#27480) 2025-01-09 15:19:14 -05:00
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