0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-02-23 05:33:33 -05:00
Commit graph

1501 commits

Author SHA1 Message Date
Nathan Whitaker
f32b5f1ad1
fix(lsp): ignore a few more diagnostics for ambient modules (#27949)
Missed a few resolution errors
2025-02-12 10:03:32 +01:00
Rano | Ranadeep
80bf743d01
fix(node): resolve module as maybe CJS when it's missing a file extension (#27904) 2025-02-12 10:01:20 +01:00
David Sherret
72cf2b16fe
fix(node): show directory import and missing extension suggestions (#27905)
Shows directory import and missing extension suggestions in error
messages similar but not exactly to node.

Closes #26802

Co-authored-by: Hajime-san <Hajime-san@users.noreply.github.com>
2025-02-12 10:01:20 +01:00
David Sherret
dbc14295e7
chore: fix some broken pty tests on windows (#27899)
These have been failing locally for some time.
2025-02-12 10:01:19 +01:00
Yoshiya Hinosawa
f43e121020
chore: update std in test util (#27892) 2025-02-12 10:01:19 +01:00
Yoshiya Hinosawa
55dd527341
fix(ext/node): support proxy http request (#27871) 2025-02-12 10:01:19 +01:00
Divy Srivastava
8d3a95170c
fix(ext/node): set process.env as own property (#27891)
Fixes `gcp-metadata@6.1.1`

```
% deno eval "import 'npm:gcp-metadata@6.1.1'" # main
error: Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'GOOGLE_SDK_NODE_LOGGING')
    at Object.log (file:///Users/divy/Library/Caches/deno/npm/registry.npmjs.org/google-logging-utils/0.0.2/build/src/logging-utils.js:356:36)
    at Object.<anonymous> (file:///Users/divy/Library/Caches/deno/npm/registry.npmjs.org/gcp-metadata/6.1.1/build/src/index.js:52:20)
    at Object.<anonymous> (file:///Users/divy/Library/Caches/deno/npm/registry.npmjs.org/gcp-metadata/6.1.1/build/src/index.js:409:4)
    at Module._compile (node:module:745:34)
    at loadMaybeCjs (node:module:770:10)
    at Object.Module._extensions..js (node:module:755:12)
    at Module.load (node:module:662:32)
    at Function.Module._load (node:module:534:12)
    at Module.require (node:module:681:19)
    at require (node:module:812:16)

% target/debug/deno eval "import 'npm:gcp-metadata@6.1.1'" # this PR
```

---------

Signed-off-by: Divy Srivastava <dj.srivastava23@gmail.com>
Co-authored-by: Yoshiya Hinosawa <stibium121@gmail.com>
2025-02-12 10:01:19 +01:00
snek
b4b02576d0
fix(ext/node): add http information support (#27381)
Implements some client and server events to improve compat.
This change makes AWS SDKs more reliable and faster in Deno.

Fixes: https://github.com/denoland/deno/issues/27239
2025-01-30 23:28:55 +01:00
denobot
318646f767
2.1.8 (#27878)
Bumped versions for 2.1.8

---------

Co-authored-by: bartlomieju <bartlomieju@users.noreply.github.com>
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2025-01-30 19:19:27 +01:00
Nathan Whitaker
c31b670323
fix(lsp): ignore errors on ambient module imports (#27855)
This makes it so imports of ambient modules (e.g. `$app/environment` in
svelte, any virtual module in vite, or other module provided by a
bundler) don't error in the LSP.

The way this works is that when we request diagnostics from TSC, we also
respond with the list of ambient modules. Then, in the diagnostics code,
we save diagnostics (produced by deno) that may be invalidated as an
ambient module and wait to publish the diagnostics until we've received
the ambient modules from TSC.

The actual ambient modules you get from TSC can contain globs, e.g.
`*.css`. So when we get new ambient modules, we compile them all into a
regex and check erroring imports against that regex. Ambient modules
should change rarely, so in most cases we should be using a pre-compiled
regex, which executes in linear time (wrt the specifier length).

TODO:
- Ideally we should only publish once, right now we publish with the
filtered specifiers and then the TSC ones
- deno check (#27633)
2025-01-30 15:34:59 +01:00
Divy Srivastava
ee4ae8bd6b
fix(ext/node): implement crypto.hash (#27858)
Implement
[`crypto.hash`](https://nodejs.org/api/crypto.html#cryptohashalgorithm-data-outputencoding)
- one-shot version of `createHash`

Fixes #24945
2025-01-30 15:34:58 +01:00
David Sherret
157feb9b7d
fix(check): better handling of TypeScript in npm packages for type checking (#27853)
1. Allows resolving to `.ts` files for type checking.
2. Probes for `.ts` files to use for type checking.

To emphasize, this is only for type checking.
2025-01-30 15:34:58 +01:00
David Sherret
7dd8e40f60
fix(check): compiler options from workspace members (#27785)
Co-authored-by: Nayeem Rahman <nayeemrmn99@gmail.com>
2025-01-30 15:34:58 +01:00
David Sherret
97e1f4b374
chore: fix two locally failing on windows tests (#27845) 2025-01-30 15:34:58 +01:00
David Sherret
5212dc37c5
fix(process/windows): correct command resolution when PATH env var not uppercase (#27846)
Closes #27768
2025-01-30 15:34:58 +01:00
jia wei
3097d99d76
fix(npmrc): merge .npmrc in user's homedir and project (#27119) 2025-01-30 15:34:57 +01:00
Divy Srivastava
d58c70fbd1
fix(ext/node): clear tz cache when setting process.env.TZ (#27826) 2025-01-30 15:34:57 +01:00
Divy Srivastava
fc14bd93ff
fix(ext/crypto): fix jwk key_ops validation (#27827) 2025-01-30 15:34:57 +01:00
Nathan Whitaker
b8e2a73ce7
fix(ext/node): implement aes-128-ctr, aes-192-ctr, and aes-256-ctr (#27630)
Fixes https://github.com/denoland/deno/issues/24864

Need to add some tests, also unsure about the right counter size (went
with 128 bit to be safe)

---------

Co-authored-by: Yoshiya Hinosawa <stibium121@gmail.com>
2025-01-30 15:34:57 +01:00
Yoshiya Hinosawa
41406d6cfd
fix(ext/node): do not apply socket-init-workaround to ipc socket (#27779)
This PR resolves 2 issues of Socket class of node compat (both are
related to playwright)

Currently `browser.launch()` of playwright is not working.
`browser.launch` opens PipeTransport (which is based on Pipe/IPC socket)
with the browser process. But that pipe doesn't start reading the data
because of the workaround #27662 (which pauses the socket at the
beginning if it's from playwright-core). This PR fixes this issue by
checking whether the given handle is `ipc` handle or not.

Another issue is that sock-init-workaround for TLS connection stopped
working at #27707 because of the changes of TLS socket initialization
steps. This change fixes the issue by correctly returning the function
in workaround path.

The added case `specs::npm::playwright_compat` checks both fixes with
actual playwright and playwright-core packages.

`browser.launch` issues
closes #16899
closes #27623 

`https.request` issue
closes #27658
2025-01-30 15:34:57 +01:00
Yoshiya Hinosawa
86a79f499d
chore: remove unused npm package fixtures (#27835) 2025-01-30 15:34:57 +01:00
David Sherret
690da479dd
fix(install/global): warn about not including auto-discovered config file (#27745)
Closes #17855
2025-01-30 15:34:56 +01:00
Divy Srivastava
14081fb953
fix(ext/crypto): export private x25519 JWK key (#27828)
Ref https://github.com/denoland/deno/issues/26431
2025-01-30 15:34:56 +01:00
Divy Srivastava
6fe2341897
fix(ext/node): implement X509Certificate#checkHost (#27821)
Fixes https://github.com/denoland/deno/issues/27619
2025-01-30 15:34:56 +01:00
Divy Srivastava
2b27d342d8
fix(ext/node): fix panic when invalid AES GCM key size (#27818)
Fixes https://github.com/denoland/deno/issues/27807
2025-01-30 15:34:56 +01:00
Divy Srivastava
2f13542b69
fix(ext/node): fix async variant of brotliDecompress (#27815)
Fixes https://github.com/denoland/deno/issues/27729
2025-01-30 15:34:55 +01:00
Divy Srivastava
b3c7ee4504
fix(ext/node): scrypt panic when log_n > 64 (#27816)
Throws an error instead of panic. Ref
https://github.com/denoland/deno/issues/27716
2025-01-30 15:34:55 +01:00
Yoshiya Hinosawa
1baa33f1ee
fix(ext/node): npm:mqtt compatibility (#27792) 2025-01-30 15:34:55 +01:00
Kenta Moriuchi
77f6bd0db3
chore: remove LSP global symbols count tests (#27806)
Closes #23102
2025-01-30 15:34:54 +01:00
David Sherret
20a910e5f8
fix(node): align type stripping in node_modules error message with Node (#27809) 2025-01-30 15:34:54 +01:00
Kenta Moriuchi
84429352da
fix(types): Deno.readDirSync's type returns an IteratorObject (#27805) 2025-01-30 15:34:54 +01:00
Yoshiya Hinosawa
134f5e1282
chore: update ensure_registry_files_local to handle scoped packages (#27801) 2025-01-30 15:34:54 +01:00
Yoshiya Hinosawa
d06e41ea9d
chore: trim registry.json files in tests/registry/npm (#27798) 2025-01-30 15:34:53 +01:00
David Sherret
a63f614ba1
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-30 15:34:53 +01:00
Luca Casonato
e01719ba60
fix(publish): unfurl sloppy imports in d.ts files and type imports (#27793)
Fixes a bug discovered while trying to publish a package with .js +
.d.ts with sloppy imports.
2025-01-30 15:34:53 +01:00
Divy Srivastava
7ec06b541e
fix(ext/node): reference error in zlib.crc32 (#27777)
Fixes https://github.com/denoland/deno/issues/27774
2025-01-30 15:34:52 +01:00
snek
9ddb8315a5
feat(unstable): support https otlp endpoints (#27743)
Support HTTPS protocol for otel exporting. Includes support for
`OTEL_EXPORTER_OTLP_CERTIFICATE`, `OTEL_EXPORTER_OTLP_CLIENT_KEY`, and
`OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE`

Fixes: https://github.com/denoland/deno/issues/27703
2025-01-30 15:34:52 +01:00
Yoshiya Hinosawa
73691487e7
fix(ext/node): fix formatting of debug logs (#27772) 2025-01-30 15:34:51 +01:00
Ian Bull
0589e7d73f
chore: note in flags output that unstable is deprecated (#27334) 2025-01-30 15:34:51 +01:00
ZYSzys
ddaf2955c4
fix(ext/node): add FileHandle#sync (#27677)
(cherry picked from commit 4e0bf4b093)
2025-01-22 00:24:24 +01:00
Dimitris Apostolou
96feacd9b8
fix(deps): update yanked crates (#27512)
Update yanked crates `bytemuck`, `futures-util`, `pest`, `pest_derive`
and `url`.

(cherry picked from commit 6ba99be819)
2025-01-22 00:24:23 +01:00
David Sherret
a4476b4677
fix(install/global): remove importMap field from specified config file (#27744)
Closes https://github.com/denoland/deno/issues/27734

(cherry picked from commit 0d3d4f5466)
2025-01-22 00:24:23 +01:00
Divy Srivastava
a4003a5292
fix(ext/node): GCM auth tag check on DechiperIv#final (#27733)
(cherry picked from commit 4f27d7cdc0)
2025-01-22 00:24:22 +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
Yoshiya Hinosawa
b4ea2fdf8d
fix(ext/node): tls.connect regression (#27707)
The TLS start sequence has been broken since #26661 because of the way
how we wrap TCP handle to create TLS handle.

#26661 introduced happy-eyeballs algorithm and some connection could be
dropped because of happy-eyeball attempt timeout. The current
implementation doesn't consider that case and it could start TLS
handshake with timed out TCP connection. That caused #27652 .

This PR fixes it by changing the initialization steps. Now `wrapHandle`
of TLSSocket set up `afterConnectTls` callback in TCP handle, and
`afterConnect` of TCP handle calls it at `connect` event timing if it
exists. This avoids starting TLS session with timed out connection.

closes #27652

(cherry picked from commit b55451b178)
2025-01-22 00:24:18 +01:00
Yoshiya Hinosawa
bde9515fdc
fix(ext/node): propagate socket error to client request object (#27678)
Co-authored-by: Satya Rohith <me@satyarohith.com>
(cherry picked from commit 339bc44c58)
2025-01-22 00:24:12 +01:00
Nathan Whitaker
5ed8092948
fix(outdated): Use latest tag even when it's the same as the current version (#27699)
Fixes https://github.com/denoland/deno/issues/27696.

Just a `>` that should've been a `>=`. Also made sure to filter out
deprecated versions.
2025-01-16 23:32:14 +01:00
Nathan Whitaker
4fb82de38e
fix(outdated): retain strict semver specifier when updating (#27701)
Fixes https://github.com/denoland/deno/issues/27697

If it's a strict bound (e.g. `1.0.0` as opposed to `^1.0.0` or other),
retain the strictness when we update
2025-01-16 23:32:13 +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
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