Daniel Osvaldo R
0f0220e461
fix(ext/node): add fchmod
and fchmodSync
( #29791 )
...
ci / pre-build (push) Waiting to run
ci / test debug linux-aarch64 (push) Blocked by required conditions
ci / test release linux-aarch64 (push) Blocked by required conditions
ci / test debug macos-aarch64 (push) Blocked by required conditions
ci / test release macos-aarch64 (push) Blocked by required conditions
ci / bench release linux-x86_64 (push) Blocked by required conditions
ci / lint debug linux-x86_64 (push) Blocked by required conditions
ci / lint debug macos-x86_64 (push) Blocked by required conditions
ci / lint debug windows-x86_64 (push) Blocked by required conditions
ci / test debug linux-x86_64 (push) Blocked by required conditions
ci / test release linux-x86_64 (push) Blocked by required conditions
ci / test debug macos-x86_64 (push) Blocked by required conditions
ci / test release macos-x86_64 (push) Blocked by required conditions
ci / test debug windows-x86_64 (push) Blocked by required conditions
ci / test release windows-x86_64 (push) Blocked by required conditions
ci / build libs (push) Blocked by required conditions
ci / publish canary (push) Blocked by required conditions
This PR implements `node:fs` `fchmod` and `fchmodSync`.
Towards https://github.com/denoland/deno/issues/27664 .
2025-06-18 12:48:14 +02:00
Yoshiya Hinosawa
2572b8398b
fix(ext/node): fix input validation of crypto hkdf ( #29775 )
2025-06-18 09:49:14 +09:00
Divy Srivastava
02cff572b2
fix(ext/node): validate auth tag for GCM mode cipher ( #29739 )
...
Enables `parallel/test-crypto-gcm-explicit-short-tag.js`
Ref https://github.com/denoland/deno/issues/29637
2025-06-16 11:04:41 +09:00
Divy Srivastava
fa3208bf27
fix(ext/node): Fix crypto.pbkdf2
compat ( #29738 )
2025-06-13 09:10:41 -07:00
Divy Srivastava
cdf4834ba0
fix(ext/node): fix oneshot hash validation ( #29661 )
...
ci / test release linux-x86_64 (push) Blocked by required conditions
ci / test debug macos-x86_64 (push) Blocked by required conditions
ci / test release macos-x86_64 (push) Blocked by required conditions
ci / test debug windows-x86_64 (push) Blocked by required conditions
ci / test release windows-x86_64 (push) Blocked by required conditions
ci / pre-build (push) Waiting to run
ci / test debug linux-aarch64 (push) Blocked by required conditions
ci / test release linux-aarch64 (push) Blocked by required conditions
ci / test debug macos-aarch64 (push) Blocked by required conditions
ci / test release macos-aarch64 (push) Blocked by required conditions
ci / bench release linux-x86_64 (push) Blocked by required conditions
ci / lint debug linux-x86_64 (push) Blocked by required conditions
ci / lint debug macos-x86_64 (push) Blocked by required conditions
ci / lint debug windows-x86_64 (push) Blocked by required conditions
ci / test debug linux-x86_64 (push) Blocked by required conditions
ci / build wasm32 (push) Blocked by required conditions
ci / publish canary (push) Blocked by required conditions
Enables `parallel/test-crypto-oneshot-hash.js`
Ref https://github.com/denoland/deno/issues/29637
---------
Co-authored-by: Yoshiya Hinosawa <stibium121@gmail.com>
2025-06-13 10:12:10 +05:30
Kenta Moriuchi
28c62ff31b
fix(ext/node): process.loadEnvFile
returns undefined
( #29717 )
ci / lint debug macos-x86_64 (push) Blocked by required conditions
ci / pre-build (push) Waiting to run
ci / test debug linux-aarch64 (push) Blocked by required conditions
ci / test release linux-aarch64 (push) Blocked by required conditions
ci / test debug macos-aarch64 (push) Blocked by required conditions
ci / test release macos-aarch64 (push) Blocked by required conditions
ci / bench release linux-x86_64 (push) Blocked by required conditions
ci / lint debug linux-x86_64 (push) Blocked by required conditions
ci / lint debug windows-x86_64 (push) Blocked by required conditions
ci / test debug linux-x86_64 (push) Blocked by required conditions
ci / test release linux-x86_64 (push) Blocked by required conditions
ci / test debug macos-x86_64 (push) Blocked by required conditions
ci / test release macos-x86_64 (push) Blocked by required conditions
ci / test debug windows-x86_64 (push) Blocked by required conditions
ci / test release windows-x86_64 (push) Blocked by required conditions
ci / build wasm32 (push) Blocked by required conditions
ci / publish canary (push) Blocked by required conditions
2025-06-12 14:00:59 +09:00
Yoshiya Hinosawa
ff8160b594
fix(ext/node): support DEP0005 deprecation warning ( #29530 )
...
ci / test release linux-aarch64 (push) Blocked by required conditions
ci / test debug macos-aarch64 (push) Blocked by required conditions
ci / test release macos-aarch64 (push) Blocked by required conditions
ci / bench release linux-x86_64 (push) Blocked by required conditions
ci / lint debug linux-x86_64 (push) Blocked by required conditions
ci / lint debug macos-x86_64 (push) Blocked by required conditions
ci / lint debug windows-x86_64 (push) Blocked by required conditions
ci / test debug linux-x86_64 (push) Blocked by required conditions
ci / test release linux-x86_64 (push) Blocked by required conditions
ci / test debug macos-x86_64 (push) Blocked by required conditions
ci / test release macos-x86_64 (push) Blocked by required conditions
ci / test debug windows-x86_64 (push) Blocked by required conditions
ci / test release windows-x86_64 (push) Blocked by required conditions
ci / pre-build (push) Waiting to run
ci / test debug linux-aarch64 (push) Blocked by required conditions
ci / build wasm32 (push) Blocked by required conditions
ci / publish canary (push) Blocked by required conditions
This commit adds support of `DEP0005` warning which is emitted when the user
calls `Buffer` as constructor.
2025-06-04 12:25:32 +09:00
Yoshiya Hinosawa
01a6379505
fix(ext/node): print warnings to stderr ( #29527 )
ci / bench release linux-x86_64 (push) Blocked by required conditions
ci / lint debug linux-x86_64 (push) Blocked by required conditions
ci / test release macos-x86_64 (push) Blocked by required conditions
ci / test debug windows-x86_64 (push) Blocked by required conditions
ci / test release windows-x86_64 (push) Blocked by required conditions
ci / pre-build (push) Waiting to run
ci / test debug linux-aarch64 (push) Blocked by required conditions
ci / test release linux-aarch64 (push) Blocked by required conditions
ci / test debug macos-aarch64 (push) Blocked by required conditions
ci / test release macos-aarch64 (push) Blocked by required conditions
ci / lint debug macos-x86_64 (push) Blocked by required conditions
ci / lint debug windows-x86_64 (push) Blocked by required conditions
ci / test debug linux-x86_64 (push) Blocked by required conditions
ci / test release linux-x86_64 (push) Blocked by required conditions
ci / test debug macos-x86_64 (push) Blocked by required conditions
ci / build wasm32 (push) Blocked by required conditions
ci / publish canary (push) Blocked by required conditions
2025-06-02 11:36:47 +09:00
Yoshiya Hinosawa
e56dc01cb8
fix(ext/node): add "internal/http2/util" module ( #29474 )
2025-05-28 21:46:36 +09:00
Yoshiya Hinosawa
3de21f1b8d
fix(ext/node): add fchown
and fchownSync
to node:fs
( #29408 )
ci / pre-build (push) Has been cancelled
ci / test debug macos-x86_64 (push) Has been cancelled
ci / test release macos-x86_64 (push) Has been cancelled
ci / test debug windows-x86_64 (push) Has been cancelled
ci / test release windows-x86_64 (push) Has been cancelled
ci / test debug linux-aarch64 (push) Has been cancelled
ci / test release linux-aarch64 (push) Has been cancelled
ci / test debug macos-aarch64 (push) Has been cancelled
ci / test release macos-aarch64 (push) Has been cancelled
ci / bench release linux-x86_64 (push) Has been cancelled
ci / lint debug linux-x86_64 (push) Has been cancelled
ci / lint debug macos-x86_64 (push) Has been cancelled
ci / lint debug windows-x86_64 (push) Has been cancelled
ci / test debug linux-x86_64 (push) Has been cancelled
ci / test release linux-x86_64 (push) Has been cancelled
ci / build wasm32 (push) Has been cancelled
ci / publish canary (push) Has been cancelled
2025-05-23 15:00:39 +09:00
David Sherret
0d6fac61f0
fix(node): do not look up node_module paths when using global resolver ( #29398 )
...
It doesn't make sense for the global resolver to search for npm packages
because the structure of the folder there doesn't do node_resolution.
2025-05-21 13:52:23 -04:00
Bartek Iwańczuk
b41fe8c566
feat: use a single 'performance' global ( #29323 )
...
This commit changes how "performance" global is handled -
instead of having separate "performance" globals for user and npm
code, we now have a single implementation.
This implementation is a de facto Node.js implementation - ie. it
contains additional properties compared to the "Web" implementation.
The two global can be compared using these docs sites:
- Web - https://developer.mozilla.org/en-US/docs/Web/API/Performance
- Node.js https://nodejs.org/api/perf_hooks.html
The benefit of this change is that when you use `performance.now()` in a
tight loop, the actual runtime of the code significantly improves - this
is because the `performance` global doesn't have to be "looked up" and
decided which is to be used, the "Web" or the "Node.js" version.
2025-05-17 00:11:11 +02:00
David Sherret
c4412ffb13
refactor: add deno_npm_installer
crate ( #29319 )
...
More changes/improvements will following in follow-up PRs.
2025-05-16 18:11:05 -04:00
Bartek Iwańczuk
6bbba3c348
fix(ext/node): add assert.CallTracker ( #29226 )
2025-05-09 14:55:28 +00:00
Divy Srivastava
f334f903ef
fix(ext/node): arrayBufferViewHasBuffer
internal util ( #28827 )
2025-05-08 09:58:08 +05:30
Nathan Whitaker
c22d17824b
perf(fs): don't canonicalize path when opening file if --allow-all
is passed ( #28716 )
...
Fixes #28702 .
Super artificial benchmark:
```ts
const perf = performance;
async function asyncOpen() {
const start = perf.now();
for (let i = 0; i < 100_000; i++) {
const file = await Deno.open("./foo.txt");
file.close();
}
const end = perf.now();
console.log(end - start);
}
function syncOpen() {
const start = perf.now();
for (let i = 0; i < 100_000; i++) {
const file = Deno.openSync("./foo.txt");
file.close();
}
const end = perf.now();
console.log(end - start);
}
if (Deno.args[0]?.trim() === "async") {
await asyncOpen();
} else {
syncOpen();
}
```
Results (average of 10 for each):
```
deno sync 1785.59
deno-this-pr sync 491.69
deno async 1839.71
deno-this-pr async 528.78
```
---------
Co-authored-by: David Sherret <dsherret@users.noreply.github.com>
2025-04-29 23:16:24 +00:00
Divy Srivastava
01b6da9d9b
fix(ext/node): upgrade node:stream
( #28855 )
...
Ref https://github.com/denoland/deno/issues/28836
This PR replaces the _stream.mjs bundle with a file-by-file port instead. A codemod transpiles Node.js internals to ESM. The codemod performs three tasks: translating CJS to ESM, remapping internal dependencies, and hoisting lazy requires as imports.
The process is fully automated through the `update_node_stream.ts` script, simplifying future internal updates. The script checks out Node.js from a specific tag defined in the `tests/node_compat/runner`.
Additionally, the update enables new tests in our Node test runner and adds features (like compose()) that were missing from the outdated bundle.
## Performance
There is a 140KB+ binary size increase on aarch64-apple-darwin and nop startup time stays the same.
2025-04-14 21:35:34 +05:30
Divy Srivastava
d74a6943a5
fix(ext/node): verbose zlib error messages ( #28831 )
2025-04-11 17:17:32 +05:30
Divy Srivastava
1e50c7981b
refactor(ext/node): rewrite HandleWrap in Rust ( #28765 )
...
Ports `HandleWrap` and `AsyncWrap` to Rust.
2025-04-10 17:20:25 +05:30
Divy Srivastava
561097dd63
fix(ext/node): implement process.loadEnvFile
( #28824 )
...
Fixes https://github.com/denoland/deno/issues/28017
2025-04-10 07:43:29 +00:00
Yoshiya Hinosawa
f2d73abdd7
fix(ext/node): better dns.lookup compatibility ( #27936 )
2025-04-02 11:38:07 +09:00
Benjamin Swerdlow
cf4afb9c9c
refactor(ext/node): export GlobalsStorage
( #28683 )
2025-03-31 14:00:05 -04:00
Nathan Whitaker
ee4c14a550
chore: update to rust 1.85 ( #28236 )
...
Updates to use rust 1.85. Doesn't move to the 2024 edition, as that's a
fair bit more involved.
A nice side benefit is that the new rustc version seems to lead to a
slight reduction in binary size (at least on mac):
```
FILE SIZE
--------------
+4.3% +102Ki __DATA_CONST,__const
[NEW] +69.3Ki __TEXT,__literals
[NEW] +68.5Ki Rebase Info
+5.0% +39.9Ki __TEXT,__unwind_info
+57% +8.85Ki [__TEXT]
[NEW] +8.59Ki Lazy Binding Info
[NEW] +5.16Ki __TEXT,__stub_helper
[NEW] +3.58Ki Export Info
[NEW] +3.42Ki __DATA,__la_symbol_ptr
-0.1% -726 [12 Others]
-21.4% -3.10Ki [__DATA_CONST]
-95.8% -3.39Ki __DATA_CONST,__got
-20.9% -3.43Ki [__DATA]
-0.5% -4.52Ki Code Signature
-100.0% -11.6Ki [__LINKEDIT]
-1.0% -43.5Ki Symbol Table
-1.6% -44.0Ki __TEXT,__gcc_except_tab
-0.2% -48.1Ki __TEXT,__const
-3.3% -78.6Ki __TEXT,__eh_frame
-0.7% -320Ki __TEXT,__text
-1.5% -334Ki String Table
-0.5% -586Ki TOTAL
```
2025-02-25 08:50:01 -08:00
David Sherret
fe55e3e573
refactor: better sys trait impls ( #28140 )
2025-02-16 22:15:53 +01:00
Divy Srivastava
28834a89bb
fix(ext/node): implement SQLite Session API ( #27909 )
...
https://nodejs.org/api/sqlite.html#class-session
---------
Signed-off-by: Divy Srivastava <dj.srivastava23@gmail.com>
2025-02-04 21:59:13 +05:30
snek
02ed300525
feat(node:http): add http information support ( #27381 )
...
Implements some client and server events to improve compat.
Fixes: https://github.com/denoland/deno/issues/27239
2025-01-28 17:37:53 +00:00
Divy Srivastava
aeac5a6338
feat(ext/node): implement node:sqlite
( #27308 )
...
Depends on:
- https://github.com/denoland/deno_core/pull/994
- https://github.com/denoland/deno_core/pull/993
- https://github.com/denoland/deno_core/issues/999
- https://github.com/denoland/deno_core/pull/1000
- https://github.com/denoland/deno_core/pull/1001
Closes https://github.com/denoland/deno/issues/24828

---------
Signed-off-by: Divy Srivastava <dj.srivastava23@gmail.com>
2025-01-28 19:30:03 +05:30
Divy Srivastava
533993efcf
fix(ext/node): implement X509Certificate#checkHost ( #27821 )
...
Fixes https://github.com/denoland/deno/issues/27619
2025-01-27 16:33:03 +05:30
Divy Srivastava
802b9d6309
chore(ext/node): remove internal/streams/buffer_list.mjs ( #27822 )
...
This was never used internally and not supposed to be public either.
2025-01-27 09:13:06 +05:30
David Sherret
273ec9fbf2
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-23 18:52:55 -05:00
Divy Srivastava
4f27d7cdc0
fix(ext/node): GCM auth tag check on DechiperIv#final ( #27733 )
2025-01-20 18:16:44 +05:30
Bartek Iwańczuk
0050857f51
refactor: add 'deno_process' crate ( #27680 )
...
Untangled the whole `runtime/ops/process.rs` from `ext/node/` and moved
to a separate `ext/process` crate.
2025-01-17 13:30:14 +01:00
David Sherret
0b033140c0
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-14 10:01:05 -05:00
Aaron Ang
9cb089f6db
fix(ext/node): add writev
method to FileHandle
( #27563 )
...
Part of #25554
2025-01-14 18:01:14 +09:00
Leo Kettmeir
ea30e188a8
refactor: update deno_core for error refactor ( #26867 )
...
Closes #26171
---------
Co-authored-by: David Sherret <dsherret@gmail.com>
2025-01-08 14:52:32 -08:00
Kenta Moriuchi
8fb073d7b4
chore: Happy New Year 2025 ( #27509 )
2024-12-31 19:12:39 +00:00
David Sherret
4638caa740
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`.
2024-12-31 11:29:07 -05:00
Bartek Iwańczuk
1cd36009b0
fix(ext/node): support private key export in JWK format ( #27325 )
...
Closes https://github.com/denoland/deno/issues/26643
---------
Co-authored-by: Divy Srivastava <dj.srivastava23@gmail.com>
2024-12-31 13:49:02 +01:00
David Sherret
c391ad315e
refactor: use sys_traits ( #27480 )
2024-12-30 12:38:20 -05:00
Satya Rohith
960776cd32
fix(ext/node): support createConnection option in node:http.request() ( #25470 )
...
This commit changes "node:http" module to add support
for the "createConnection" option when the "request()"
API is called.
Closes https://github.com/denoland/deno/issues/19507
---------
Signed-off-by: Yoshiya Hinosawa <stibium121@gmail.com>
Signed-off-by: Satya Rohith <me@satyarohith.com>
Co-authored-by: Yoshiya Hinosawa <stibium121@gmail.com>
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
Co-authored-by: crowlkats <crowlkats@toaxl.com>
2024-12-13 01:44:42 +01:00
Bartek Iwańczuk
1d49b3cb0f
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-11-30 00:54:26 +01:00
David Sherret
f161adf19e
perf(compile): read embedded files as static references when UTF-8 and reading as strings ( #27033 )
2024-11-27 21:28:41 -05:00
Divy Srivastava
069bc15030
feat(ext/node): perf_hooks.monitorEventLoopDelay() ( #26905 )
...
Fixes https://github.com/denoland/deno/issues/20961
Depends on https://github.com/denoland/deno_core/pull/965 and
https://github.com/denoland/deno_core/pull/966
2024-11-19 16:49:25 +05:30
David Sherret
617350e79c
refactor(resolver): move more resolution code into deno_resolver ( #26873 )
...
Follow-up to cjs refactor.
This moves most of the resolution code into the deno_resolver crate.
Still pending is the npm resolution code.
2024-11-14 15:24:25 -05:00
David Sherret
f091d1ad69
feat(node): stabilize detecting if CJS via "type": "commonjs"
in a package.json ( #26439 )
...
This will respect `"type": "commonjs"` in a package.json to determine if
`.js`/`.jsx`/`.ts`/.tsx` files are CJS or ESM. If the file is found to
be ESM it will be loaded as ESM though.
2024-11-13 15:10:09 +00:00
Divy Srivastava
6a4c6d83ba
fix(ext/node): zlib.crc32() ( #26856 )
...
Fixes https://github.com/denoland/deno/issues/26845
2024-11-13 20:07:45 +05:30
snek
700f54a13c
fix(ext/node): better inspector support ( #26471 )
...
implement local inspector
future changes:
- wire up InspectorServer to enable open/close/url
- wire up connectToMainThread
Fixes https://github.com/denoland/deno/issues/25004
2024-11-06 14:08:26 +00:00
Leo Kettmeir
fe9f0ee593
refactor(runtime/permissions): use concrete error types ( #26464 )
2024-11-04 09:17:21 -08:00
David Sherret
826e42a5b5
fix: improved support for cjs and cts modules ( #26558 )
...
* cts support
* better cjs/cts type checking
* deno compile cjs/cts support
* More efficient detect cjs (going towards stabilization)
* Determination of whether .js, .ts, .jsx, or .tsx is cjs or esm is only
done after loading
* Support `import x = require(...);`
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2024-11-01 12:27:00 -04:00
Nathan Whitaker
6c6bbeb974
fix(node): Implement os.userInfo
properly, add missing toPrimitive
( #24702 )
...
Fixes the implementation of `os.userInfo`, and adds a missing
`toPrimitive` for `tmpdir`. This allows us to enable the corresponding
node_compat test.
2024-10-31 22:18:33 -07:00