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

12854 commits

Author SHA1 Message Date
Yusuke Tanaka
d5c00ef50e
feat(cli): evaluate code snippets in JSDoc and markdown (#25220)
This commit lets `deno test --doc` command actually evaluate code snippets in
JSDoc and markdown files.

## How it works

1. Extract code snippets from JSDoc or code fences
2. Convert them into pseudo files by wrapping them in `Deno.test(...)`
3. Register the pseudo files as in-memory files
4. Run type-check and evaluation

We apply some magic at the step 2 - let's say we have the following file named
`mod.ts` as an input:

````ts
/**
 * ```ts
 * import { assertEquals } from "jsr:@std/assert/equals";
 *
 * assertEquals(add(1, 2), 3);
 * ```
 */
export function add(a: number, b: number) {
  return a + b;
}
````

This is virtually transformed into:

```ts
import { assertEquals } from "jsr:@std/assert/equals";
import { add } from "files:///path/to/mod.ts";

Deno.test("mod.ts$2-7.ts", async () => {
  assertEquals(add(1, 2), 3);
});
```

Note that a new import statement is inserted here to make `add` function
available. In a nutshell, all items exported from `mod.ts` become available in
the generated pseudo file with this automatic import insertion.

The intention behind this design is that, from library user's standpoint, it
should be very obvious that this `add` function is what this example code is
attached to. Also, if there is an explicit import statement like
`import { add } from "./mod.ts"`, this import path `./mod.ts` is not helpful for
doc readers because they will need to import it in a different way.

The automatic import insertion has some edge cases, in particular where there is
a local variable in a snippet with the same name as one of the exported items.
This case is addressed by employing swc's scope analysis (see test cases for
more details).

## "type-checking only" mode stays around

This change will likely impact a lot of existing doc tests in the ecosystem
because some doc tests rely on the fact that they are not evaluated - some cause
side effects if executed, some throw errors at runtime although they do pass the
type check, etc. To help those tests gradually transition to the ones runnable
with the new `deno test --doc`, we will keep providing the ability to run
type-checking only via `deno check --doc`. Additionally there is a `--doc-only`
option added to the `check` subcommand too, which is useful when you want to
type-check on code snippets in markdown files, as normal `deno check` command
doesn't accept markdown.

## Demo

https://github.com/user-attachments/assets/47e9af73-d16e-472d-b09e-1853b9e8f5ce

---

Closes #4716
2024-09-17 21:35:48 -07:00
Asher Gomez
3731591762
chore: bump deno_lint to 0.66.0 (#25697) 2024-09-18 01:48:37 +00:00
Bartek Iwańczuk
a7d67e3a7a
feat: update warning message for --allow-run with no list (#25693)
Ref https://github.com/denoland/deno/pull/25215#discussion_r1762064605
2024-09-18 00:32:52 +02:00
Ian Bull
97b8c9be38
refactor(ext/websocket): align error messages (#25622)
Aligns the error messages in the ext/websocket folder to be in-line with
the Deno style guide.

https://github.com/denoland/deno/issues/25269
2024-09-17 15:32:12 -07:00
Nayeem Rahman
f360cae9dd
fix(lsp): properly resolve jsxImportSource for caching (#25688) 2024-09-17 18:29:19 +01:00
Nayeem Rahman
d4a06251c5
feat(lsp): auto-import types with 'import type' (#25662) 2024-09-17 18:28:51 +01:00
Divy Srivastava
b4faf60948
perf: fast path for cached dyn imports (#25636)
Ref https://github.com/denoland/deno_core/pull/906
2024-09-17 22:57:37 +05:30
Divy Srivastava
063f427ddf
fix(ext/node): stub inspector/promises (#25635)
Signed-off-by: Divy Srivastava <dj.srivastava23@gmail.com>
2024-09-17 22:57:19 +05:30
David Sherret
a14e9f55b4
feat(fmt): sort type-only named import/exports last (#25690)
Closes #22583
2024-09-17 18:26:23 +01:00
Bartek Iwańczuk
915b73571c
ci: fix releasing canary (#25689) 2024-09-17 16:53:32 +00:00
Bartek Iwańczuk
039e15fc84
ci: make canary uploads less racy (#25671)
Closes https://github.com/denoland/deno/issues/25464

Only uploads canary git hash if the one in the bucket is present
in the current action Git history.
2024-09-17 13:31:46 +02:00
Bartek Iwańczuk
aaf2bf4bfb
chore: upgrade deno_core (#25674)
No functional changes, just removes dead code.
2024-09-17 01:13:34 +00:00
Asher Gomez
01b5dfd9ea
chore: remove warnOnDeprecatedApi() (#25673) 2024-09-16 23:43:36 +00:00
David Sherret
b0525edd6f
feat: warn when using --allow-run with no allow list (#25215) 2024-09-16 23:08:02 +00:00
Asher Gomez
f7ddea3af7
chore: lint 40_fs_events.js (#25672)
Fixes CI
https://github.com/denoland/deno/actions/runs/10892648144/job/30225971485
2024-09-16 22:54:57 +00:00
Asher Gomez
51d926ac30
chore(fs): undeprecate Deno.FsWatcher.prototype.return() (#25623) 2024-09-17 07:57:53 +10:00
David Sherret
8fe90d2861
fix(npm): better error handling for remote npm deps (#25670)
* https://github.com/denoland/deno_npm/pull/68
2024-09-16 21:23:40 +00:00
Nathan Whitaker
e81c67ba22
feat(permissions): Deno.mainModule doesn't require permissions (#25667)
Closes https://github.com/denoland/deno/issues/7315.
2024-09-16 13:43:52 -07:00
David Sherret
62e952559f
refactor(permissions): split up Descriptor into Allow, Deny, and Query (#25508)
This makes the permission system more versatile.
2024-09-16 21:39:37 +01:00
HasanAlrimawi
e0b9c745c1
chore: deprecate test itests (#25512)
This PR is part of #22907

---------

Signed-off-by: HasanAlrimawi <141642411+HasanAlrimawi@users.noreply.github.com>
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2024-09-16 19:38:40 +00:00
David Sherret
6ce16145dd
chore: maybe fix flaky serve_parallel test (#25668) 2024-09-16 18:55:49 +00:00
HasanAlrimawi
36a1a79f17
chore: deprecate lint itests (#25655) 2024-09-16 17:45:25 +00:00
Mohammad Sulaiman
acc32e1cee
chore: move info itests (#25659) 2024-09-16 17:08:00 +00:00
David Sherret
e47606a554
fix(lockfile): use loose deserialization for version constraints (#25660)
* https://github.com/denoland/deno_lockfile/pull/39

Closes https://github.com/denoland/deno/issues/25649
2024-09-16 15:29:21 +00:00
Bartek Iwańczuk
968f441da3
test: rewrite some ignored tests to spec tests (#25652)
Ref https://github.com/denoland/deno/issues/25241

Rewritten these tests:
- check::package_json_basic
- check::package_json_fail_check
- check::package_json_with_deno_json
- info::package_json_basic
- test::package_json_basic
- run::package_json_auto_discovered_for_npm_binary
- run::package_json_with_deno_json
2024-09-16 15:39:58 +02:00
Luca Casonato
8fa92228bb
fix(types): simplify mtls related types (#25658)
Instead of two overloads for `Deno.connectTls` and
`Deno.createHttpClient`, there is now just one.
2024-09-16 14:35:55 +02:00
Luca Casonato
74069add3f
fix(runtime): don't error child.output() on consumed stream (#25657)
This fixes the fast path for `readableStreamCollectIntoUint8Array` to
only trigger if the readable stream has not yet been disturbed -
because otherwise we may not be able to close it if the
read errors.
2024-09-16 14:23:40 +02:00
Aapo Alasuutari
f8547e2617
BREAKING(ext/ffi): remove deprecated UnsafeFnPointer constructor type with untyped Deno.PointerObject parameter (#25577) 2024-09-16 22:08:36 +10:00
Luca Casonato
81c9e0ba25
fix(ext/crypto): support md4 digest algorithm (#25656)
Fixes #25646
2024-09-16 11:04:40 +00:00
Mohammad Sulaiman
eb8ee95f08
chore: deprecate node compat itests (#25573) 2024-09-16 09:53:20 +01:00
Asher Gomez
e4ea9be874
chore: cleanup remaining internals.future code (#25624) 2024-09-16 09:28:35 +10:00
Divy Srivastava
a666c8c9f9
fix(cli): deno task exit with status 0 (#25637)
Fixes https://github.com/denoland/deno/issues/25632

Exit code 1 indiciates some sort of failure but `deno task` (without
arguments) is used to list available commands.

---------

Co-authored-by: Yoshiya Hinosawa <stibium121@gmail.com>
2024-09-15 11:29:24 +05:30
Divy Srivastava
db6fc12b9e
fix(ext/node): add vm.constants (#25630) 2024-09-15 08:15:28 +05:30
Divy Srivastava
4655172c0b
fix(ext/node): export process.allowedNodeEnvironmentFlags (#25629) 2024-09-15 08:15:19 +05:30
Divy Srivastava
ccd1ca8a8b
fix(ext/node): add stubs for node:trace_events (#25628) 2024-09-15 08:15:09 +05:30
Marvin Hagemeister
597f2d8d4d
feat: print Listening on messages on stderr instead of stdout (#25491)
Fixes https://github.com/denoland/deno/issues/25114

---------

Signed-off-by: Leo Kettmeir <crowlkats@toaxl.com>
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
Co-authored-by: crowlkats <crowlkats@toaxl.com>
Co-authored-by: Nathan Whitaker <17734409+nathanwhit@users.noreply.github.com>
2024-09-14 23:30:06 +02:00
David Sherret
af2d992ecd
feat: TypeScript 5.6 and npm:@types/node@22 (#25614) 2024-09-14 11:58:47 +01:00
snek
2c0bf6fd65
fix(ext/node): attach console stream properties (#25617)
`kBindStreamsLazy` should be called with `process` during init, but it
never was.
2024-09-13 17:28:35 -07:00
Jake Abed
d162733db2
fix(ext/node): use primordials in ext/node/polyfills/wasi.ts (#25608)
Toward #24236
2024-09-13 22:31:07 +05:30
David Sherret
8539cacbbe
chore: update more registry.json files (#25615)
Extracted out of https://github.com/denoland/deno/pull/25614

It's better for these to be non-minified because then diffs are better
when adding new versions.
2024-09-13 15:27:20 +01:00
David Sherret
1270d9bc93
fix(check): move is cjs check from resolving to loading (#25597)
This is required to do when loading because TypeScript handles and
resolves `/// <reference path="..." />` internally.
2024-09-13 14:36:26 +01:00
Leo Kettmeir
f2b53d42ac
feat(flags): support user provided args in repl subcommand (#25605)
closes https://github.com/denoland/deno/issues/11547
2024-09-13 05:17:46 -07:00
Asher Gomez
394a620da3
chore: enable specs::run::workspaces::explicit_import_map test (#25611)
Towards #25241
2024-09-13 11:52:48 +02:00
Ian Bull
606b7b17c6
refactor(runtime): align error messages (#25563)
Aligns the error messages in the runtime folder to be in-line with the
Deno style guide.

https://github.com/denoland/deno/issues/25269
2024-09-13 11:38:45 +02:00
Nathan Whitaker
7477c2d706
feat(serve): Support second parameter in deno serve (#25606)
Closes #24099
2024-09-12 23:32:28 +00:00
Luca Casonato
018329a4d3
fix: no cmd prefix in help output go links (#25459) 2024-09-12 22:44:43 +00:00
David Sherret
c9c2531ff0
feat(upgrade): support LTS release channel (#25123)
Signed-off-by: David Sherret <dsherret@users.noreply.github.com>
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2024-09-12 23:52:39 +02:00
Bartek Iwańczuk
71d5d47ca9
feat(ext/node): export 'promises' symbol from 'node:timers' (#25589) 2024-09-12 20:30:49 +00:00
Bartek Iwańczuk
e2875aee74
ci: Add action to cut LTS release (#25590)
Factored from https://github.com/denoland/deno/pull/25123.

---------

Signed-off-by: David Sherret <dsherret@users.noreply.github.com>
Co-authored-by: David Sherret <dsherret@gmail.com>
Co-authored-by: David Sherret <dsherret@users.noreply.github.com>
2024-09-12 22:06:59 +02:00
Nathan Whitaker
18b89d948d
fix(ext/node): Implement detached option in child_process (#25218)
Fixes https://github.com/denoland/deno/issues/25193.
2024-09-12 19:24:58 +00:00