From 51e0bfda3c5df4fa1f1b36301193038ed6aaf7bf Mon Sep 17 00:00:00 2001 From: Luca Casonato Date: Mon, 12 Jul 2021 19:44:42 +0200 Subject: [PATCH] chore(runtime): deprecate `Deno.copy` (#11369) --- .github/workflows/ci.yml | 2 +- cli/bench/deno_tcp_proxy.ts | 4 +++- cli/dts/lib.deno.ns.d.ts | 6 +++++- cli/tests/cat.ts | 3 ++- cli/tests/echo_server.ts | 3 ++- cli/tests/unit/files_test.ts | 3 ++- docs/examples/tcp_echo.md | 8 +++++--- docs/examples/unix_cat.md | 7 ++++--- docs/getting_started/first_steps.md | 6 ++++-- test_util/std | 2 +- 10 files changed, 29 insertions(+), 15 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3e49b39756..1011052726 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -90,7 +90,7 @@ jobs: - name: Install Deno if: matrix.kind == 'lint' run: | - curl -fsSL https://deno.land/x/install/install.sh | sh -s v1.7.2 + curl -fsSL https://deno.land/x/install/install.sh | sh -s v1.11.3 echo "$HOME/.deno/bin" >> $GITHUB_PATH - name: Install Python diff --git a/cli/bench/deno_tcp_proxy.ts b/cli/bench/deno_tcp_proxy.ts index bab8eac192..df74de8c40 100644 --- a/cli/bench/deno_tcp_proxy.ts +++ b/cli/bench/deno_tcp_proxy.ts @@ -1,5 +1,7 @@ // Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. // Used for benchmarking Deno's tcp proxy performance. +import { copy } from "../../test_util/std/io/util.ts"; + const addr = Deno.args[0] || "127.0.0.1:4500"; const originAddr = Deno.args[1] || "127.0.0.1:4501"; @@ -14,7 +16,7 @@ async function handle(conn: Deno.Conn): Promise { port: Number(originPort), }); try { - await Promise.all([Deno.copy(conn, origin), Deno.copy(origin, conn)]); + await Promise.all([copy(conn, origin), copy(origin, conn)]); } catch (e) { if ( !(e instanceof Deno.errors.BrokenPipe) && diff --git a/cli/dts/lib.deno.ns.d.ts b/cli/dts/lib.deno.ns.d.ts index e1c558f379..b5b61cd16c 100644 --- a/cli/dts/lib.deno.ns.d.ts +++ b/cli/dts/lib.deno.ns.d.ts @@ -421,7 +421,11 @@ declare namespace Deno { seekSync(offset: number, whence: SeekMode): number; } - /** Copies from `src` to `dst` until either EOF (`null`) is read from `src` or + /** + * @deprecated Use `copy` from https://deno.land/std/io/util.ts instead. + * `Deno.copy` will be removed in Deno 2.0. + * + * Copies from `src` to `dst` until either EOF (`null`) is read from `src` or * an error occurs. It resolves to the number of bytes copied or rejects with * the first error encountered while copying. * diff --git a/cli/tests/cat.ts b/cli/tests/cat.ts index a5b38fccd1..0cfd99d22e 100644 --- a/cli/tests/cat.ts +++ b/cli/tests/cat.ts @@ -1,8 +1,9 @@ +import { copy } from "../../test_util/std/io/util.ts"; async function main(): Promise { for (let i = 1; i < Deno.args.length; i++) { const filename = Deno.args[i]; const file = await Deno.open(filename); - await Deno.copy(file, Deno.stdout); + await copy(file, Deno.stdout); } } diff --git a/cli/tests/echo_server.ts b/cli/tests/echo_server.ts index fcb157fdb2..7c8b0e42d4 100644 --- a/cli/tests/echo_server.ts +++ b/cli/tests/echo_server.ts @@ -1,10 +1,11 @@ +import { copy } from "../../test_util/std/io/util.ts"; const addr = Deno.args[0] || "0.0.0.0:4544"; const [hostname, port] = addr.split(":"); const listener = Deno.listen({ hostname, port: Number(port) }); console.log("listening on", addr); listener.accept().then( async (conn): Promise => { - console.log("received bytes:", await Deno.copy(conn, conn)); + console.log("received bytes:", await copy(conn, conn)); conn.close(); listener.close(); }, diff --git a/cli/tests/unit/files_test.ts b/cli/tests/unit/files_test.ts index 51ca1c5793..348d012b42 100644 --- a/cli/tests/unit/files_test.ts +++ b/cli/tests/unit/files_test.ts @@ -8,6 +8,7 @@ import { assertThrowsAsync, unitTest, } from "./test_util.ts"; +import { copy } from "../../../test_util/std/io/util.ts"; unitTest(function filesStdioFileDescriptors(): void { assertEquals(Deno.stdin.rid, 0); @@ -21,7 +22,7 @@ unitTest({ perms: { read: true } }, async function filesCopyToStdout(): Promise< const filename = "cli/tests/fixture.json"; const file = await Deno.open(filename); assert(file.rid > 2); - const bytesWritten = await Deno.copy(file, Deno.stdout); + const bytesWritten = await copy(file, Deno.stdout); const fileSize = Deno.statSync(filename).size; assertEquals(bytesWritten, fileSize); file.close(); diff --git a/docs/examples/tcp_echo.md b/docs/examples/tcp_echo.md index a66fe05edb..f016b8bd84 100644 --- a/docs/examples/tcp_echo.md +++ b/docs/examples/tcp_echo.md @@ -4,8 +4,9 @@ - Listening for TCP port connections with [Deno.listen](https://doc.deno.land/builtin/stable#Deno.listen). -- Use [Deno.copy](https://doc.deno.land/builtin/stable#Deno.copy) to take - inbound data and redirect it to be outbound data. +- Use + [copy](https://doc.deno.land/https/deno.land/std@$STD_VERSION/io/util.ts#copy) + to take inbound data and redirect it to be outbound data. ## Example @@ -16,10 +17,11 @@ returns to the client anything it sends. /** * echo_server.ts */ +import { copy } from "https://deno.land/std@$STD_VERSION/io/util.ts"; const listener = Deno.listen({ port: 8080 }); console.log("listening on 0.0.0.0:8080"); for await (const conn of listener) { - Deno.copy(conn, conn).finally(() => conn.close()); + copy(conn, conn).finally(() => conn.close()); } ``` diff --git a/docs/examples/unix_cat.md b/docs/examples/unix_cat.md index fc09d4e279..0ce28d718e 100644 --- a/docs/examples/unix_cat.md +++ b/docs/examples/unix_cat.md @@ -7,8 +7,8 @@ command line arguments. - [Deno.open](https://doc.deno.land/builtin/stable#Deno.open) is used to get a handle to a file. -- [Deno.copy](https://doc.deno.land/builtin/stable#Deno.copy) is used to - transfer data from the file to the output stream. +- [copy](https://doc.deno.land/https/deno.land/std@$STD_VERSION/io/util.ts#copy) + is used to transfer data from the file to the output stream. - Files should be closed when you are finished with them - Modules can be run directly from remote URLs. @@ -21,9 +21,10 @@ is opened, and printed to stdout (e.g. the console). /** * cat.ts */ +import { copy } from "https://deno.land/std@$STD_VERSION/io/util.ts"; for (const filename of Deno.args) { const file = await Deno.open(filename); - await Deno.copy(file, Deno.stdout); + await copy(file, Deno.stdout); file.close(); } ``` diff --git a/docs/getting_started/first_steps.md b/docs/getting_started/first_steps.md index 9a0fdab7cc..fda5bc47b9 100644 --- a/docs/getting_started/first_steps.md +++ b/docs/getting_started/first_steps.md @@ -86,10 +86,11 @@ In this program each command-line argument is assumed to be a filename, the file is opened, and printed to stdout. ```ts +import { copy } from "https://deno.land/std@$STD_VERSION/io/util.ts"; const filenames = Deno.args; for (const filename of filenames) { const file = await Deno.open(filename); - await Deno.copy(file, Deno.stdout); + await copy(file, Deno.stdout); file.close(); } ``` @@ -111,12 +112,13 @@ This is an example of a server which accepts connections on port 8080, and returns to the client anything it sends. ```ts +import { copy } from "https://deno.land/std@$STD_VERSION/io/util.ts"; const hostname = "0.0.0.0"; const port = 8080; const listener = Deno.listen({ hostname, port }); console.log(`Listening on ${hostname}:${port}`); for await (const conn of listener) { - Deno.copy(conn, conn); + copy(conn, conn); } ``` diff --git a/test_util/std b/test_util/std index 8467929052..81314bcab8 160000 --- a/test_util/std +++ b/test_util/std @@ -1 +1 @@ -Subproject commit 8467929052737f634eb8842a960093c686ae3b9b +Subproject commit 81314bcab8b5dc2fef85ec65f8588cab17063378