1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-03 17:08:35 -05:00
Commit graph

9098 commits

Author SHA1 Message Date
Bartek Iwańczuk
8497cef156 refactor(ext/node): add NodeEnv::Fs associated type (#18484)
This commit adds associated type to "NodeEnv" trait, called "Fs".

The "Fs" type has a trait bound on "NodeFs", which specifies APIs
required for all ops and resolution APIs to function.

A "RealFs" implementation of "NodeFs" is exported from the "deno_node"
crate, that provides a default implementation for the trait.

All code in "deno_node" extension was changed to use the "NodeFs" trait
to handle file system operations, instead of relying on APIs from the
standard library.
2023-03-31 11:43:19 -06:00
David Sherret
e7b80efca1 refactor(lsp): remove boolean parameters on documents.documents(...) (#18493)
I think this makes things clearer at the call sites.
2023-03-31 11:43:19 -06:00
Andrew Nester
b5024c6998 test(ext/node): add timers_tests.ts from std/node (#18472) 2023-03-31 11:43:19 -06:00
Andrew Nester
c31ddbde4b test(ext/node): add string_decoder_test.ts from std/node (#18473) 2023-03-31 11:43:19 -06:00
David Sherret
dba4b6ca80 chore: fix flaky pty_internal_repl (#18486) 2023-03-31 11:43:19 -06:00
Christian Dürr
269af39082 fix: Add missing processenv winapi feature to deno_io (#18485)
Currently the `processenv` feature is not explicitly requested by
`deno_io`, however it is using the `processenv` module. This will
prevent downstream users from building on Windows.

I'd assume that this doesn't popup in Deno itself since another crate is
enabling this feature.
2023-03-31 11:43:19 -06:00
Bartek Iwańczuk
e9aa09bfd4 test(lsp): make lsp_completions_auto_import more robust (#18482)
A completely unrelated change in
https://github.com/denoland/deno/pull/18286 threw of this test.

These changes make it more robust and easier to update in such cases.
2023-03-31 11:43:19 -06:00
Bartek Iwańczuk
bd80ebffc4 refactor(ext/node): change extension type parameter (#18483)
This commit changes the type parameter for "deno_node" extension, from
`P: NodePermission` to `Env: NodeEnv`.

`NodeEnv` is a new trait that has associated type `P: NodePermission`.

This is a stepping stone to support swappable file system for the
extension, that will be added as a second associated type to the 
`NodeEnv` trait.
2023-03-31 11:43:19 -06:00
David Sherret
f861bd2337 chore: restore pty tests and make them run on the Linux CI (#18424)
1. Rewrites the tests to be more back and forth rather than getting the
output all at once (which I believe was causing the hangs on linux and
maybe mac)
2. Runs the pty tests on the linux ci.
3. Fixes a bunch of tests that were just wrong.
4. Adds timeouts on the pty tests.
2023-03-31 11:43:19 -06:00
Matt Mastracci
598e9be54e fix(core): restore cache journal mode to TRUNCATE and tweak tokio test in CacheDB (#18469)
Fast-follow on #18401 -- the reason that some tests were panicking in
the `CacheDB` `impl Drop` was that the cache itself was being dropped
during panic and the runtime may or may not still exist at that point.
We can reduce the actual tokio runtime testing to where it's needed.

In addition, we return the journal mode to `TRUNCATE` to avoid the risk
of data corruption.
2023-03-31 11:43:19 -06:00
Ryan Dahl
dcf384259f refactor: move shared library tests to their own file (#18479) 2023-03-31 11:43:19 -06:00
Kamal Singh
0df7e6636a test(node/fs): add fs.Dir tests (#18463)
Co-authored-by: Yoshiya Hinosawa <stibium121@gmail.com>
2023-03-31 11:43:19 -06:00
Yoshiya Hinosawa
b71b6665b3 fix(ext/node): implement crypto.Sign (RSA/PEM/SHA{224,256,384,512}) (#18471) 2023-03-31 11:43:19 -06:00
Bartek Iwańczuk
4e190bb537 Reland "refactor: remove Deno[Deno.internal].nodeUnstable namespace" (#18475)
This reverts commit 357bcfcf79.
2023-03-31 11:43:19 -06:00
Divy Srivastava
e40f44f79f feat(ext/node): add crypto.checkPrime API (#18465)
Towards #18455 

This commit implements `checkPrimeSync` and `checkPrime` in node:crypto
using the Miller-Rabin primality test (fun fact: it actually is a test
for composite numbers)

It first compares the candidate against many known small primes and if
not, proceeds to run the Miller-Rabin primality test.
http://nickle.org/examples/miller-rabin.5c used as reference
implementation.
2023-03-31 11:43:19 -06:00
Divy Srivastava
2d3be63153 chore(ext/node): port pbkdf2 to Rust (#18470)
Towards #18455
2023-03-31 11:43:19 -06:00
Andrew Nester
22f5c2504e chore: add test for Linux shared libraries (#18461)
Closes #18266
2023-03-31 11:43:19 -06:00
Bartek Iwańczuk
6c0df5e94e refactor(runtime): manual serialization of bootstrap data (#18448)
This commit changes how data required to bootstrap main and worker
runtime is serialized. 

Instead of relying on serde_v8 and using JSON object,
we're doing manual serialization to a "v8::Array". This limits number 
of V8 strings that need to be serialized by 16. 

It also made it clear that some data could be obtained during
snapshotting instead of during bootstrap.
2023-03-31 11:43:19 -06:00
Matt Mastracci
d23579fe6d feat(core): initialize SQLite off-main-thread (#18401)
This gets SQLite off the flamegraph and reduces initialization time by
somewhere between 0.2ms and 0.5ms. In addition, I took the opportunity
to move all the cache management code to a single place and reduce
duplication. While the PR has a net gain of lines, much of that is just
being a bit more deliberate with how we're recovering from errors.

The existing caches had various policies for dealing with cache
corruption, so I've unified them and tried to isolate the decisions we
make for recovery in a single place (see `open_connection` in
`CacheDB`). The policy I chose was:

 1. Retry twice to open on-disk caches
 2. If that fails, try to delete the file and recreate it on-disk
3. If we fail to delete the file or re-create a new cache, use a
fallback strategy that can be chosen per-cache: InMemory (temporary
cache for the process run), BlackHole (ignore writes, return empty
reads), or Error (fail on every operation).

The caches all use the same general code now, and share the cache
failure recovery policy.

In addition, it cleans up a TODO in the `NodeAnalysisCache`.
2023-03-31 11:43:19 -06:00
Marvin Hagemeister
f21d48bc0a fix(ext/node): add missing _preloadModules hook (#18447)
This internal node hook is used by libraries such as `ts-node` when used
as a require hook `node -r ts-node/register`. That combination is often
used with test frameworks like `mocha` or `jasmine`.

We had a reference to `Module._preloadModules` in our code, but the
implementation was missing. While fixing this I also noticed that the
`fakeParent` module that we create internally always threw because of
the `pathDirname` check on the module id in the constructor of `Mdoule`.
So this code path was probably broken for a while.

```txt
✖ ERROR: Error: Empty filepath.
    at pathDirname (ext:deno_node/01_require.js:245:11)
    at new Module (ext:deno_node/01_require.js:446:15)
    at Function.Module._resolveFilename (ext:deno_node/01_require.js:754:28)
    at Function.resolve (ext:deno_node/01_require.js:1015:19)
```
2023-03-31 11:43:19 -06:00
Bartek Iwańczuk
381a3c4369 refactor(cli): remove Lazy<String> and fix help outputs (#18462)
This `Lazy<String>` calls were showing up on flamegraph and there's
really no point in using them.
2023-03-31 11:43:19 -06:00
Divy Srivastava
c4ea1e3774 feat: port node:zlib to rust (#18291) 2023-03-31 11:43:19 -06:00
Divy Srivastava
7c6ef81267 fix(cli/bench): look for clone3 syscalls for thread count (#18456) 2023-03-31 11:43:18 -06:00
Bartek Iwańczuk
e3a104fdaa Revert "refactor: remove Deno[Deno.internal].nodeUnstable namespace (… (#18458)
…#18449)"

This reverts commit d1a9c4cd7c.

Appears this made CI very flaky on macOS, but I can't repeat it locally
yet
2023-03-31 11:43:18 -06:00
Kenta Moriuchi
5ef4cefa26 fix(streams): add support Float64Array to ReadableStreamByobReader (#18188) 2023-03-31 11:43:18 -06:00
Bartek Iwańczuk
8b7524bcef refactor: remove Deno[Deno.internal].nodeUnstable namespace (#18449)
Since we can preserve ops in the snapshot these days, we no longer
need to have "Deno[Deno.internal].nodeUnstable" namespace.

Instead, various built-in Node.js modules can use appropriate APIs
directly.
2023-03-31 11:43:18 -06:00
Marvin Hagemeister
e06bd19a69 fix(cli): add colors to "Module not found" error frame (#18437) 2023-03-31 11:43:18 -06:00
Max Dahlgren
2813a27364 test(ext/node): Port crypto tests from std/node (#18382) 2023-03-31 11:43:18 -06:00
Nayeem Rahman
9ee4e51ae4 fix(cli): don't store blob and data urls in the module cache (#18261) 2023-03-31 11:43:18 -06:00
Yoshiya Hinosawa
0389b7bbba chore: document Node.js compat test setup script (#18381) 2023-03-31 11:43:18 -06:00
Mike Mulchrone
02401b2891 chore: Improving FS Error Message for op_realpath_sync and op_realpath_async (#18404)
#17526
2023-03-31 11:43:18 -06:00
滑威
7fa2bf34eb fix(cli): deno upgrade file permission (#18427) 2023-03-31 11:43:18 -06:00
Bartek Iwańczuk
d676944536 refactor: use default implementation of BootstrapOptions (#18439)
Drive-by cleanup while I was looking into serialization of
BootstrapOptions.
There's no need to use non-default implementation in these places.
2023-03-31 11:43:18 -06:00
Leo Kettmeir
07f61c7535 chore: upgrade clap to v4 (#17333) 2023-03-31 11:43:18 -06:00
Nayeem Rahman
5882a468b0 feat(test): print pending tests on sigint (#18246) 2023-03-31 11:43:18 -06:00
Leo Kettmeir
a6dd700814 refactor: include mitata (#18426) 2023-03-31 11:43:18 -06:00
Geert-Jan Zwiers
585adcc362 chore(tests): enable single_compile_with_reload again (#18196) 2023-03-31 11:43:18 -06:00
Heyang Zhou
859cc700f6 chore(ext/kv): add limits (#18415) 2023-03-31 11:43:18 -06:00
Aapo Alasuutari
784914aa1d test(ext/ffi): Increase timeout value in event loop integration test callback (#18394) 2023-03-31 11:43:18 -06:00
Yoshiya Hinosawa
6374347f9a fix(ext/node): add aes-128-ecb algorithm support (#18412) 2023-03-31 11:43:18 -06:00
Kenta Moriuchi
733aae2abc chore: update wpt again (#18384)
This reverts commit 4c2269d64a.

> This update introduced more flakiness to the tests on CI, we are going
> to investigate and reland this update after Deno 1.32.0 is released.
2023-03-31 11:43:18 -06:00
David Sherret
e84f80405b ci: fix main (#18420) 2023-03-31 11:43:18 -06:00
David Sherret
a9e53df573 chore: fix located_script_name test (#18418)
Closes #18417
2023-03-31 11:43:18 -06:00
David Sherret
87e09da740 chore(types): fix type checking errors in 99_main_compiler.js (#18403) 2023-03-31 11:43:18 -06:00
Divy Srivastava
4f7b778700 feat(ext/node): implement crypto.createSecretKey (#18413)
This commit adds the `crypto.createSecretKey` API.

Key management: This follows the same approach as our WebCrypto
CryptoKey impl where we use WeakMap for storing key material and a
handle is passed around, such that (only internal) JS can access the key
material and we don't have to explicitly close a Rust resource.

As a result, `createHmac` now accepts a secret KeyObject.

Closes https://github.com/denoland/deno/issues/17844
2023-03-31 11:43:18 -06:00
Yoshiya Hinosawa
dc77002b99 fix(ext/node): make cipher/decipher transform stream (#18408) 2023-03-31 11:43:18 -06:00
Heyang Zhou
9c9bcfe4c9 fix(ext/kv): add missing getMany method (#18410)
The `getMany` method was missing from the implementation of the
`Deno.Kv` class. This patch fixes it.
2023-03-31 11:43:18 -06:00
Bartek Iwańczuk
c8f9d89756 refactor: make version and user_agent &'static str (#18400)
These caused a bunch of unnecessary allocations on each startup.
2023-03-31 11:43:18 -06:00
Matt Mastracci
0b05ee51a8 fix(core): located_script_name macro was using format syntax (#18388) 2023-03-31 11:43:18 -06:00
Matt Mastracci
1dec3a4936 fix(core): panic at build time if extension code contains anything other than 7-bit ASCII (#18372)
This will improve diagnostics and catch any non-ASCII extension code
early.

This will use `debug_assert!` rather than `assert!` to avoid runtime
costs, and ensures (in debug_assert mode only) that all extension source
files are ASCII as we load them.
2023-03-31 11:43:17 -06:00