summaryrefslogtreecommitdiff
path: root/cli/tools
AgeCommit message (Collapse)Author
2024-08-19feat(upgrade): support `deno upgrade 1.46.0` (#25096)Bartek Iwańczuk
This commit changes `deno upgrade` subcommand to accept a positional argument that can be either a version, release channel name or a git hash, making invocations of `deno upgrade` much more concise: ``` # before $ deno upgrade --version 1.46.0 # after $ deno upgrade 1.46.0 ``` ``` # before $ deno upgrade --canary # after $ deno upgrade canary ``` ``` # specific canary version before $ deno upgrade --canary --version f042c39180c1b345de8e7b5f0dfae5d0a49b161f # after $ deno upgrade f042c39180c1b345de8e7b5f0dfae5d0a49b161f ``` Old flags are still supported, but hidden from the help output.
2024-08-19fix(upgrade): support RC release with --version flag (#25091)Bartek Iwańczuk
This commit fixes scenarios like: ``` $ deno upgrade --version=v1.46.0-rc.0 Downloading https://github.com/denoland/deno/releases/download/v1.46.0-rc.0/deno-aarch64-apple-darwin.zip Download could not be found, aborting ``` Now: ``` $ target/debug/deno upgrade --version=v1.46.0-rc.0 Downloading https://dl.deno.land/release/v1.46.0-rc.0/deno-aarch64-apple-darwin.zip Deno is upgrading to version 1.46.0-rc.0 Upgraded successfully to Deno v1.46.0-rc.0 ``` Also some unneeded code was removed.
2024-08-18fix: clean up flag help output (#24686)Luca Casonato
Permission flags are unified in a clearer and concise output. Unstable flags are hidden by default with exception of the `unstable` flag itself. the remaining unstable flags can be seen with a `--help=unstable`. This also cleans up to show unstable flags only for subcommands that actually need them. Also sorts flags alphabetically, and gorups various flags together in a set of categories. --------- Co-authored-by: crowlkats <crowlkats@toaxl.com>
2024-08-19fix(upgrade): correctly compute latest version based on current release ↵Bartek Iwańczuk
channel (#25087) This commit fixes computation of the latest available version by taking into account which release channel the current binary is on. Before this commit, if user was on "RC" channel, calling `deno upgrade` would not switch back to the "stable" channel.
2024-08-18fix: log current version when using deno upgrade (#25079)HasanAlrimawi
This PR addresses a suggestion in issue #21417 --------- Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2024-08-18fix: make `deno add` output more deterministic (#25083)David Sherret
Will fix some flaky tests.
2024-08-16ci: add script to promote to RC release (#25072)Bartek Iwańczuk
This commits add a CI script that allows to promote a certain canary build to a "Release Candidate" release. This is done using `libsui` and `patchver` utilities.
2024-08-16refactor: show release channel in `deno --version` (#25061)Bartek Iwańczuk
Also simplifies handling of various release channels in `deno upgrade` subcommand.
2024-08-16feat(publish): suggest importing `jsr:@std/` for `deno.land/std` urls (#25046)David Sherret
2024-08-16feat(config/jsr): add license field (#25056)David Sherret
1. Adds a new "license" field. 1. Adds this field by default when doing `deno init --lib`
2024-08-15refactor: `version` module exports a single const struct (#25014)Bartek Iwańczuk
This commit rewrites the internal `version` module that exported various information about the current executable. Instead of exporting several consts, we are now exporting a single const structure that contains all the necessary information. This is the first step towards cleaning up how we use this information and should allow us to use SUI to be able to patch this information in already produced binary making it easier to cut new releases. --------- Co-authored-by: Divy Srivastava <dj.srivastava23@gmail.com>
2024-08-15feat(lint): Add lint for usage of node globals (with autofix) (#25048)Nathan Whitaker
From upgrading `deno_lint`. Previously if you had a node project that used a bunch of node globals (`process.env`, etc), you would have to fix the errors by hand. This PR includes a new lint that detects usages of node globals (`process`, `setImmediate`, `Buffer`, etc.) and provides an autofix to import the correct value. For instance: ```ts // main.ts const _foo = process.env.FOO; ``` `deno lint` gives you ```ts error[no-node-globals]: NodeJS globals are not available in Deno --> /home/foo.ts:1:14 | 1 | const _foo = process.env.FOO; | ^^^^^^^ = hint: Add `import process from "node:process";` docs: https://lint.deno.land/rules/no-node-globals Found 1 problem (1 fixable via --fix) Checked 1 file ``` And `deno lint --fix` adds the import for you: ```ts // main.ts import process from "node:process"; const _foo = process.env.FOO; ```
2024-08-15refactor: remove version::is_canary(), use ReleaseChannel instead (#25053)Bartek Iwańczuk
In preparation for https://github.com/denoland/deno/pull/25014, this commit removes public `is_canary()` method and instead uses an enum `ReleaseChannel` to be able to designate more "kinds" of builds.
2024-08-15feat: `deno compile --icon <ico>` (#25039)Divy Srivastava
Add `--icon` flag to set deno compile'd executable icon on Windows. ``` deno compile --icon icon.ico game.tsx ``` Depends on https://github.com/denoland/sui/pull/24 <img width="447" alt="image" src="https://github.com/user-attachments/assets/7f6f3aa0-6872-4975-ae9d-06701b7684b8"> Closes https://github.com/denoland/deno/issues/8912
2024-08-14feat(serve): Opt-in parallelism for `deno serve` (#24920)Nathan Whitaker
Adds a `parallel` flag to `deno serve`. When present, we spawn multiple workers to parallelize serving requests. ```bash deno serve --parallel main.ts ``` Currently on linux we use `SO_REUSEPORT` and rely on the fact that the kernel will distribute connections in a round-robin manner. On mac and windows, we sort of emulate this by cloning the underlying file descriptor and passing a handle to each worker. The connections will not be guaranteed to be fairly distributed (and in practice almost certainly won't be), but the distribution is still spread enough to provide a significant performance increase. --- (Run on an Macbook Pro with an M3 Max, serving `deno.com` baseline:: ``` ❯ wrk -d 30s -c 125 --latency http://127.0.0.1:8000 Running 30s test @ http://127.0.0.1:8000 2 threads and 125 connections Thread Stats Avg Stdev Max +/- Stdev Latency 239.78ms 13.56ms 330.54ms 79.12% Req/Sec 258.58 35.56 360.00 70.64% Latency Distribution 50% 236.72ms 75% 248.46ms 90% 256.84ms 99% 268.23ms 15458 requests in 30.02s, 2.47GB read Requests/sec: 514.89 Transfer/sec: 84.33MB ``` this PR (`with --parallel` flag) ``` ❯ wrk -d 30s -c 125 --latency http://127.0.0.1:8000 Running 30s test @ http://127.0.0.1:8000 2 threads and 125 connections Thread Stats Avg Stdev Max +/- Stdev Latency 117.40ms 142.84ms 590.45ms 79.07% Req/Sec 1.33k 175.19 1.77k 69.00% Latency Distribution 50% 22.34ms 75% 223.67ms 90% 357.32ms 99% 460.50ms 79636 requests in 30.07s, 12.74GB read Requests/sec: 2647.96 Transfer/sec: 433.71MB ```
2024-08-14feat(fmt): support HTML, Svelte, Vue, Astro and Angular (#25019)Pig Fang
This commit adds capability to format HTML, Svelte, Vue, Astro and Angular files. "--unstable-html" is required to format HTML files, and "--unstable-component" flag is needed to format other formats. These can also be specified in the config file. Close #25015
2024-08-14feat(clean): add progress bar (#25026)Bartek Iwańczuk
Closes https://github.com/denoland/deno/issues/25020
2024-08-14feat(coverage): add breadcrumbs to deno coverage `--html` report (#24860)Łukasz Czerniawski
2024-08-13fix(upgrade): use proper version display (#25029)Bartek Iwańczuk
This commit fixes output of `deno upgrade` subcommand, by displaying proper version numbers. Before this PR we were prepending "v" before the canary version hash, which was obviously wrong.
2024-08-12feat(publish): error on missing license file (#25011)David Sherret
Closes https://github.com/denoland/deno/issues/24676
2024-08-12fix(upgrade): return no RC versions if fetching fails (#25013)Bartek Iwańczuk
This commit fixes errors on CI like this: ``` ---- upgrade::upgrade_prompt stdout ---- command /home/runner/work/deno/deno/target/release/deno run --log-level=debug main.js command cwd /tmp/deno-cli-testqDw5UR command /home/runner/work/deno/deno/target/release/deno run --log-level=debug main.js command cwd /tmp/deno-cli-testqDw5UR ------ Start Full Text ------ "DEBUG RS - deno::args:620 - No .npmrc file found\r\nDEBUG RS - deno::args:909 - Finished config loading.\r\nDEBUG RS - deno::cache::cache_db:168 - Opening cache /tmp/deno-cli-testMKnYXP/dep_analysis_cache_v2...\r\nDEBUG RS - deno::cache::cache_db:168 - Opening cache /tmp/deno-cli-testMKnYXP/node_analysis_cache_v2...\r\nDEBUG RS - deno::cache::cache_db:168 - Opening cache /tmp/deno-cli-testMKnYXP/v8_code_cache_v2...\r\nDEBUG RS - deno::js:10 - Deno isolate init with snapshots.\r\nDEBUG RS - deno::worker:183 - main_module file:///tmp/deno-cli-testqDw5UR/main.js\r\nDEBUG RS - deno::module_loader:158 - Preparing module load.\r\nDEBUG RS - deno::module_loader:162 - Building module graph.\r\nDEBUG RS - deno::file_fetcher:573 - FileFetcher::fetch_no_follow_with_options - specifier: file:///tmp/deno-cli-testqDw5UR/main.js\r\nDEBUG RS - deno::module_loader:208 - Prepared module load.\r\nDEBUG RS - deno_runtime::worker:739 - received module evaluate Ok(\r\n (),\r\n)\r\nDEBUG RS - deno::module_loader:831 - Updating V8 code cache for ES module: file:///tmp/deno-cli-testqDw5UR/main.js, [1577979522354460122]\r\n" ------- End Full Text ------- Next text: "DEBUG RS - deno::args:620 - No .npmrc file found\r\nDEBUG RS - deno::args:909 - Finished config loading.\r\nDEBUG RS - deno::cache::cache_db:168 - Opening cache /tmp/deno-cli-testMKnYXP/dep_analysis_cache_v2...\r\nDEBUG RS - deno::cache::cache_db:168 - Opening cache /tmp/deno-cli-testMKnYXP/node_analysis_cache_v2...\r\nDEBUG RS - deno::cache::cache_db:168 - Opening cache /tmp/deno-cli-testMKnYXP/v8_code_cache_v2...\r\nDEBUG RS - deno::js:10 - Deno isolate init with snapshots.\r\nDEBUG RS - deno::worker:183 - main_module file:///tmp/deno-cli-testqDw5UR/main.js\r\nDEBUG RS - deno::module_loader:158 - Preparing module load.\r\nDEBUG RS - deno::module_loader:162 - Building module graph.\r\nDEBUG RS - deno::file_fetcher:573 - FileFetcher::fetch_no_follow_with_options - specifier: file:///tmp/deno-cli-testqDw5UR/main.js\r\nDEBUG RS - deno::module_loader:208 - Prepared module load.\r\nDEBUG RS - deno_runtime::worker:739 - received module evaluate Ok(\r\n (),\r\n)\r\nDEBUG RS - deno::module_loader:831 - Updating V8 code cache for ES module: file:///tmp/deno-cli-testqDw5UR/main.js, [1577979522354460122]\r\n" thread 'upgrade::upgrade_prompt' panicked at tests/integration/upgrade_tests.rs:251:9: Timed out. ``` These errors are caused by the fact that the test server doesn't have an endpoint to return RC releases. Which in turn causes an error to be raised which later just short-circuits logic for checking the version and storing it in file. Since fetching from a remote host is always fallible I elected to just return an empty vec of "rc" versions instead of erroring. This might lead to a slight mismatch in some situation when the request actually failed and user is prompted that there's a new canary version, but that is better than not displaying prompt at all. This issue will be fixed more robustly once we move to using SUI for specifying version of the binary.
2024-08-12feat: deno remove (#24952)David Sherret
Co-authored-by: Satya Rohith <me@satyarohith.com>
2024-08-12fix: update deno_doc (#24972)Leo Kettmeir
For Better HTML titles and custom JSDoc module resolving
2024-08-12feat: `deno upgrade --rc` (#24905)Bartek Iwańczuk
This commit adds the "--rc" flag to "deno upgrade" subcommand. This flag allows to upgrade to the latest "release candidate" release. The update checker was also updated to take this into account.
2024-08-12feat: Rename --unstable-hmr to --watch-hmr (#24975)Bartek Iwańczuk
This commit stabilizes HMR functionality and renames `--unstable-hmr` to `--watch-hmr`. The `--unstable-hmr` flag is still working, but hidden from the help output. It will be removed in Deno 2. Once https://github.com/denoland/deno/pull/24958 lands we should improve grouping of `--watch` and `--watch-hmr` flags.
2024-08-09feat(fmt): support CSS, SCSS, Sass and Less (#24870)Pig Fang
This PR integrates [Malva](https://github.com/g-plane/malva) into `deno fmt`, which introduces the ability to format CSS, SCSS, Sass and Less files. On Linux x64 6.10, this PR increases about 800KiB: ``` ❯ wc -c target/release/deno 125168728 target/release/deno ❯ wc -c target/release/deno 124349456 target/release/deno ```
2024-08-09fix(add): Better error message when missing npm specifier (#24970)Nathan Whitaker
Before: <img width="278" alt="Screenshot 2024-08-09 at 3 15 01 PM" src="https://github.com/user-attachments/assets/91b0ada6-93ee-4be6-a996-078aef98c2a9"> After: <img width="888" alt="Screenshot 2024-08-09 at 3 52 15 PM" src="https://github.com/user-attachments/assets/3c88a0e8-c761-4f70-88bf-109355ac12f0">
2024-08-09refactor(upgrade): cleanup pass (#24954)Bartek Iwańczuk
No functional changes, just factoring out some helpers to make it easier to update and test.
2024-08-08feat: `deno init --serve` (#24897)Bartek Iwańczuk
This commit adds "--serve" flag to "deno init" subcommand, that provides a template for quick starting a project using "deno serve". --------- Co-authored-by: Asher Gomez <ashersaupingomez@gmail.com>
2024-08-08chore: change property order in generated `deno.json` (#24953)Marvin Hagemeister
This moves all package-specific object keys right next to each other.
2024-08-08feat(install): change 'Add ...' message (#24949)Bartek Iwańczuk
Changes messages printed by `deno add` from `Add @oak/oak - jsr:@oak/oak^16.1.0` to `Add jsr:@oak/oak16.1.0`.
2024-08-08fix: Don't shell out to `unzip` in deno upgrade/compile (#24926)Nathan Whitaker
Use the `zip` crate instead Fixes #23988.
2024-08-07feat(upgrade): refresh output (#24911)Bartek Iwańczuk
This commit updates the output of "deno upgrade" subcommand.
2024-08-07refactor(upgrade): make fetching latest version async (#24919)Bartek Iwańczuk
Additionally some renames in preparation to support "LTS" and "RC" channels.
2024-08-07fix(compile): support workspace members importing other members (#24909)David Sherret
2024-08-06feat: deno run <task> (#24891)Satya Rohith
This PR updates `deno run` to fallback to executing tasks when there is no script with the specified name. If there are both script and a task with the same name then `deno run` will prioritise executing the script.
2024-08-06fix: update dry run success message (#24885)HasanAlrimawi
2024-08-02feat(unstable/fmt): move yaml formatting behind unstable flag (#24848)David Sherret
This moves YAML formatting behind an unstable flag for Deno 1.46. This will make it opt-in to start and then we can remove the flag to make it on by default in version of Deno after that. This can be specified by doing `deno fmt --unstable-yaml` or by specifying the following in a deno.json file: ```json { "unstable": ["fmt-yaml"] } ```
2024-08-02feat(fmt): support YAML (#24717)Pig Fang
2024-08-02docs: fix typos (#24820)Andreas Deininger
This PR fixes various typos I spotted in the project.
2024-08-01feat: codesign for deno compile binaries (#24604)Divy Srivastava
Uses [sui](https://github.com/littledivy/sui) to inject metadata as a custom section in the denort binary. Metadata is stored as a Mach-O segment on macOS and PE `RT_RCDATA` resource on Windows. Fixes #11154 Fixes https://github.com/denoland/deno/issues/17753 ```cpp deno compile app.tsx # on macOS codesign --sign - ./app # on Windows signtool sign /fd SHA256 .\app.exe ``` --------- Signed-off-by: Divy Srivastava <dj.srivastava23@gmail.com>
2024-07-31perf: update deno_ast to 0.41 (#24819)David Sherret
Some perf gains in swc (I measured formatting and it was slightly faster). Includes: * https://github.com/denoland/deno_graph/pull/508 * https://github.com/denoland/eszip/pull/193
2024-07-29chore: upgrade to rust 1.80 (#24778)Satya Rohith
2024-07-27refactor(lint): move reporters to separate module (#24757)David Sherret
2024-07-27fix: adapt to new jupyter runtime API and include session IDs (#24762)Kyle Kelley
Closes #24737, #24437.
2024-07-26fix(publish): workspace included license file had incorrect path (#24747)David Sherret
Also fixes the issue where we say a package was successfully published before it wasn't. Bug in https://github.com/denoland/deno/pull/24714
2024-07-25refactor: decouple node resolution from deno_core (#24724)David Sherret
2024-07-25fix(unstable): move sloppy-import warnings to lint rule (#24710)David Sherret
Adds a new `no-sloppy-imports` lint rule and cleans up the lint code. Closes #22844 Closes https://github.com/denoland/deno_lint/issues/1293
2024-07-25fix(workspaces/publish): include the license file from the workspace root if ↵David Sherret
not in pkg (#24714)
2024-07-24fix(future): Emit `deno install` warning less often, suggest `deno install` ↵Nathan Whitaker
in error message (#24706) Two small changes: - In our BYONM errors, suggest running `deno install` instead of `npm install` if `DENO_FUTURE` is set - Only emit warning about `deno install` changes if you do `deno install <foo>` with deno_future unset