1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-11 10:07:54 -05:00
Commit graph

4755 commits

Author SHA1 Message Date
Matt Mastracci
48df2f5e05
fix(ext/http): Ensure cancelled requests don't crash Deno.serve (#19154)
Fixes for various `Attemped to access invalid request` bugs (#19058,
#15427, #17213).

We did not wait for both a drop event and a completion event before
removing items from the slab table. This ensures that we do so.

In addition, the slab methods are refactored out into `slab.rs` for
maintainability.
2023-05-18 17:05:02 +02:00
Andreu Botella
5c117a9c15
fix(fetch): Correctly decode multipart/form-data names and filenames (#19145)
Currently the `multipart/form-data` parser in
`Request.prototype.formData` and `Response.prototype.formData` decodes
non-ASCII filenames incorrectly, as if they were encoded in Latin-1
rather than UTF-8. This happens because the header section of each
`multipart/form-data` entry is decoded as Latin-1 in order to be parsed
with `Headers`, which only allows `ByteString`s, but the names and
filenames are never decoded correctly. This PR fixes this as a
post-processing step.

Note that the `multipart/form-data` parsing for this APIs in the Fetch
spec is very much underspecified, and it does not specify that names and
filenames must be decoded as UTF-8. However, it does require that the
bodies of non-`File` entries are decoded as UTF-8, and in browsers,
names and filenames always use the same encoding as the body.

Closes #19142.
2023-05-18 17:05:02 +02:00
Lenni
d7361ed573
docs: fix typos (#19118) 2023-05-18 17:05:02 +02:00
Levente Kurusa
b25c716fab
fix(deno/upgrade): allow --version vX.Y.Z (#19139)
Instead of just supporting X.Y.Z, support vX.Y.Z. Otherwise we'll try to
download something like vvX.Y.Z
2023-05-18 17:05:02 +02:00
Levente Kurusa
4df46b7056
feat(node/crypto): Builtin Diffie-Hellman Groups (#19137)
Towards #18455
2023-05-18 17:05:02 +02:00
Levente Kurusa
b15cc76aba
feat(node/crypto): Diffie Hellman Support (#18943)
Support crypto.DiffieHellman class in ext/node/crypto
2023-05-18 17:05:02 +02:00
Matt Mastracci
3392a8e530
refactor(core): bake single-thread assumptions into spawn/spawn_blocking (#19056)
Partially supersedes #19016.

This migrates `spawn` and `spawn_blocking` to `deno_core`, and removes
the requirement for `spawn` tasks to be `Send` given our single-threaded
executor.

While we don't need to technically do anything w/`spawn_blocking`, this
allows us to have a single `JoinHandle` type that works for both cases,
and allows us to more easily experiment with alternative
`spawn_blocking` implementations that do not require tokio (ie: rayon).

Async ops (+~35%):

Before: 

```
time 1310 ms rate 763358
time 1267 ms rate 789265
time 1259 ms rate 794281
time 1266 ms rate 789889
```

After:

```
time 956 ms rate 1046025
time 954 ms rate 1048218
time 924 ms rate 1082251
time 920 ms rate 1086956
```

HTTP serve (+~4.4%):

Before:

```
Running 10s test @ http://localhost:4500
  2 threads and 10 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    68.78us   19.77us   1.43ms   86.84%
    Req/Sec    68.78k     5.00k   73.84k    91.58%
  1381833 requests in 10.10s, 167.36MB read
Requests/sec: 136823.29
Transfer/sec:     16.57MB
```

After:

```
Running 10s test @ http://localhost:4500
  2 threads and 10 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    63.12us   17.43us   1.11ms   85.13%
    Req/Sec    71.82k     3.71k   77.02k    79.21%
  1443195 requests in 10.10s, 174.79MB read
Requests/sec: 142921.99
Transfer/sec:     17.31MB
```

Suggested-By: alice@ryhl.io
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2023-05-18 17:05:01 +02:00
Yoshiya Hinosawa
e0b4ccab78
fix(dts): move BroadcastChannel type to lib.deno.unstable.d.ts (#19108) 2023-05-18 17:05:01 +02:00
Bartek Iwańczuk
6e655522cd
fix(lsp): increase default max heap size to 3Gb (#19115) 2023-05-18 17:05:01 +02:00
Yoshiya Hinosawa
070a100fa5
chore(ext/node): removed skipped compat test cases (#19109) 2023-05-18 17:05:01 +02:00
Yoshiya Hinosawa
7095e449cd
chore: fix & update node compat config (#19106) 2023-05-18 17:05:01 +02:00
David Sherret
995b1e683f
refactor(lsp): make RequestMethod private (#19114) 2023-05-18 17:04:49 +02:00
denobot
12ba2d311b
1.33.3 (#19110)
Bumped versions for 1.33.3

Please ensure:
- [x] Target branch is correct (`vX.XX` if a patch release, `main` if
minor)
- [x] Crate versions are bumped correctly
- [x] deno_std version is incremented in the code (see
`cli/deno_std.rs`)
- [x] Releases.md is updated correctly (think relevancy and remove
reverts)

To make edits to this PR:
```shell
git fetch upstream release_1_33.3 && git checkout -b release_1_33.3 upstream/release_1_33.3
```

cc @levex

---------

Co-authored-by: levex <levex@users.noreply.github.com>
Co-authored-by: Levente Kurusa <lkurusa@kernelstuff.org>
2023-05-12 13:06:53 +02:00
David Sherret
8ca92f5ca2 fix(lsp): preload documents when deno.documentPreloadLimit changes (#19103) 2023-05-11 21:53:36 -04:00
David Sherret
a193794eab feat(lsp): ability to configure document pre-load limit (#19097)
Adds a `deno.preloadLimit` option (ex. `"deno.preloadLimit": 2000`)
which specifies how many file entries to traverse on the file system
when the lsp loads or its configuration changes.

Closes #18955
2023-05-11 17:26:32 -04:00
David Sherret
90ed487965 fix(lsp): hard to soft error when unable to get completion info (#19091) 2023-05-11 17:26:31 -04:00
David Sherret
ba7fd57616 fix(cli): upgrade to Typescript 5.0.4 (#19090) 2023-05-11 17:26:31 -04:00
Nayeem Rahman
14bf8dc506 fix(console): handle error when inspecting promise-like (#19083)
Fixes
https://discord.com/channels/684898665143206084/684911491035430919/1105900195406958672.

This was caused by: 
- A `TypeError` from `core.getPromiseDetails()` for promise-likes which
also lead to that code path.
- Swallowing internal formatting errors by returning `undefined`. I've
made it so that a special message is formatted in that case instead
(note that this case is fixed now):
![image](https://github.com/denoland/deno/assets/29990554/65bb9612-60b2-4e31-bf5e-e20976601593)
2023-05-11 17:26:30 -04:00
Nayeem Rahman
89d0f0c4e3 fix(runtime): ChildProcess::kill() doesn't require additional perms (#15339)
Fixes #15217.
2023-05-11 17:26:30 -04:00
Marvin Hagemeister
ff1403c0a1 fix(node): expose channels in worker_threads (#19086)
This PR ensures that node's `worker_threads` module exports
`MessageChannel`, `MessagePort` and the `BroadcastChannel` API. Fixing
these won't make `esbuild` work, but brings us one step closer 🎉

Fixes #19028 .
2023-05-11 17:26:30 -04:00
David Sherret
75735fbf7f feat(compile): unstable npm and node specifier support (#19005)
This is the initial support for npm and node specifiers in `deno
compile`. The npm packages are included in the binary and read from it via
a virtual file system. This also supports the `--node-modules-dir` flag,
dependencies specified in a package.json, and npm binary commands (ex.
`deno compile --unstable npm:cowsay`)

Closes #16632
2023-05-11 17:26:30 -04:00
Marvin Hagemeister
56a9a2a990 feat(node): add Module.runMain() (#19080)
This PR adds the missing `Module.runMain()` function which is required
for tools like `ts-node`.

Fixes #19033
2023-05-11 17:26:29 -04:00
Bartek Iwańczuk
610936f5b2 fix(node): conditional exports edge case (#19082)
Fixes https://github.com/denoland/deno/issues/18743
2023-05-11 17:26:29 -04:00
David Sherret
72512c95c1 fix(dts): align seekSync position arg with seek (#19077)
Closes #19060
2023-05-11 17:26:29 -04:00
Matt Mastracci
e6e0fa752d refactor(core): http_next generic over request extractor (#19071) 2023-05-11 17:26:28 -04:00
Matt Mastracci
a650318c0c feat(ext/http): Automatic compression for Deno.serve (#19031)
`Content-Encoding: gzip` support for `Deno.serve`. This doesn't support
Brotli (`br`) yet, however it should not be difficult to add. Heuristics
for compression are modelled after those in `Deno.serveHttp`.

Tests are provided to ensure that the gzip compression is correct. We
chunk a number of different streams (zeros, hard-to-compress data,
already-gzipped data) in a number of different ways (regular, random,
large/small, small/large).
2023-05-11 17:26:28 -04:00
David Sherret
69aea93d54 fix(vendor): better handling of redirects (#19063)
Closes #17582
Closes #19057
2023-05-11 17:26:28 -04:00
Luca Casonato
575150b463 fix(core): let V8 drive extension ESM loads (#18997)
This now allows circular imports across extensions.

Instead of load + eval of all ESM files in declaration order, all files
are only loaded. Eval is done recursively by V8, only evaluating
files that are listed in `Extension::esm_entry_point` fields.

---------

Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2023-05-11 17:26:27 -04:00
David Sherret
65e5d884d8 perf(fmt): faster formatting for minified object literals (#19050)
Has fix for
https://github.com/dprint/dprint-plugin-typescript/issues/520
2023-05-11 17:26:27 -04:00
Matt Mastracci
5e848f0d1b fix(ext/http): Ensure Deno.serve works across --watch restarts (#18998)
Fixes #16699 and #18960 by ensuring that we release our HTTP
`spawn_local` tasks when the HTTP resource is dropped.

Because our cancel handle was being projected from the resource via
`RcMap`, the resource was never `Drop`ped. By splitting the handle out
into its own `Rc`, we can avoid keeping the resource alive and let it
drop to cancel everything.
2023-05-11 17:26:26 -04:00
David Sherret
6ced6c8e85 refactor(ext/node): combine deno_node::Fs with deno_fs::FileSystem (#18991) 2023-05-11 17:26:25 -04:00
David Sherret
59fbdc4a93 refactor(ext/fs): boxed deno_fs::FileSystem (#18945)
1. Boxed `File` and `FileSystem` to allow more easily passing this
through the CLI code (as shown within this pr).
2. `StdFileResource` is now `FileResource`. `FileResource` now contains
an `Rc<dyn File>`.
2023-05-11 17:26:25 -04:00
denobot
c2a61a4192
1.33.2 (#18988)
Bumped versions for 1.33.2

Please ensure:
- [x] Target branch is correct (`vX.XX` if a patch release, `main` if
minor)
- [x] Crate versions are bumped correctly
- [x] deno_std version is incremented in the code (see
`cli/deno_std.rs`)
- [ ] Releases.md is updated correctly (think relevancy and remove
reverts)

To make edits to this PR:
```shell
git fetch upstream release_1_33.2 && git checkout -b release_1_33.2 upstream/release_1_33.2
```

cc @levex

---------

Co-authored-by: levex <levex@users.noreply.github.com>
Co-authored-by: Levente Kurusa <lkurusa@kernelstuff.org>
2023-05-04 16:39:05 +02:00
Bartek Iwańczuk
d59ace37e4
docs: update Deno.Writer docstring (#18987)
Closes
https://github.com/denoland/deno/issues/18985#issuecomment-1534493623
2023-05-04 16:19:39 +02:00
Luca Casonato
22f4385301
refactor(ext/node): remove NodeEnv trait (#18986) 2023-05-04 16:19:37 +02:00
Nayeem Rahman
979742dee5
fix(core): allow esm extensions not included in snapshot (#18980)
Fixes #18979.

This changes the predicate for allowing `ext:` specifier resolution from
`snapshot_loaded_and_not_snapshotting` to `ext_resolution_allowed` which
is only set to true during the extension module loading phase. Module
loaders as used in core
are now declared as `ExtModuleLoader` rather than `dyn ModuleLoader`.
2023-05-04 16:19:31 +02:00
Nayeem Rahman
434c80bd62
fix(test): disable preventDefault() for beforeunload event (#18911)
Fixes #18910.
2023-05-04 16:19:29 +02:00
Luca Casonato
675aa94d12
fix(ext/kv): throw on the Kv constructor (#18978)
Closes #18963

---------

Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2023-05-04 16:19:27 +02:00
kang
69732aeb6d
fix(docs): replace "e.g." with "i.e." in seek()/seekSync() comment (#18964)
Clarify calculation of number "9" in `seek()`/`seekSync()` comment of
lib.deno.ns.d.ts by replacing "e.g." with "i.e."
2023-05-04 16:19:24 +02:00
Luca Casonato
3b5adb13de
fix(ext/kv): KvU64#valueOf and KvU64 inspect (#18656)
`new Deno.KvU64(1n) + 2n == 3n` is now true.

`new Deno.KvU64(1n)` is now inspected as `[Deno.KvU64: 1n]`
(`Object(1n)` is inspected as `[BigInt: 1n]`).

---------

Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2023-05-04 16:19:17 +02:00
Bartek Iwańczuk
3b36c36715
perf: use jemalloc as global allocator (#18957)
Follow up to https://github.com/denoland/deno/pull/18875 that enables
`jemalloc` as a global allocator for the Deno CLI.
2023-05-04 16:19:14 +02:00
Yarden Shoham
4ab6c672d4
docs(lib): document Deno.Command requires the allow-run permission (#18958) 2023-05-04 16:19:09 +02:00
Bartek Iwańczuk
8f46dc2c0f
chore: release extension crates, unpin tokio (#18954) 2023-05-04 16:19:04 +02:00
Kenta Moriuchi
ec1fb08a88
refactor(core): Use ObjectHasOwn instead of ObjectPrototypeHasOwnProperty (#18952)
ES2022 `Object.hasOwn` can be used in snapshot, so I migrate to use it.
2023-05-04 16:19:02 +02:00
Bartek Iwańczuk
797f0ef42e
fix(npm): canonicalize filename before returning (#18948)
This commit changes how paths for npm packages are handled,
by canonicalizing them when resolving. This is done so that instead
of returning
"node_modules/<package_name>@<version>/node_modules/<dep>/index.js"
(which is a symlink) we "node_modules/<dep>@<dep_version>/index.js.

Fixes https://github.com/denoland/deno/issues/18924
Fixes https://github.com/bluwy/create-vite-extra/issues/31

---------

Co-authored-by: David Sherret <dsherret@gmail.com>
2023-05-04 16:18:57 +02:00
Michael Lazarev
fae7643648
docs: correct example of piping the output of a subprocess to a file (#18933)
Fixes #18909
2023-05-04 16:18:52 +02:00
David Sherret
9c646ac6ed
perf: lazily create RootCertStore (#18938) 2023-05-04 16:18:49 +02:00
David Sherret
6df6024506
refactor(cli): remove ProcState - add CliFactory (#18900)
This removes `ProcState` and replaces it with a new `CliFactory` which
initializes our "service structs" on demand. This isn't a performance
improvement at the moment for `deno run`, but might unlock performance
improvements in the future.
2023-05-04 16:18:43 +02:00
David Sherret
2fed39ebf9
perf: lazily retrieve ppid (#18940)
This is very apparent on Windows.

Before: 45.74ms (Hello world)
After: 33.92ms

Closes #18939
2023-05-04 16:18:40 +02:00
David Sherret
0ddad2486c
refactor(cli): use CliMainWorker in standalone (#18880)
Uses `CliMainWorker` in all the cli code.
2023-05-04 16:18:32 +02:00