1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-22 07:14:47 -05:00

chore(runtime): deprecate Deno.copy (#11369)

This commit is contained in:
Luca Casonato 2021-07-12 19:44:42 +02:00 committed by GitHub
parent 00484d24ba
commit 51e0bfda3c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 29 additions and 15 deletions

View file

@ -90,7 +90,7 @@ jobs:
- name: Install Deno - name: Install Deno
if: matrix.kind == 'lint' if: matrix.kind == 'lint'
run: | 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 echo "$HOME/.deno/bin" >> $GITHUB_PATH
- name: Install Python - name: Install Python

View file

@ -1,5 +1,7 @@
// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. // Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
// Used for benchmarking Deno's tcp proxy performance. // 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 addr = Deno.args[0] || "127.0.0.1:4500";
const originAddr = Deno.args[1] || "127.0.0.1:4501"; const originAddr = Deno.args[1] || "127.0.0.1:4501";
@ -14,7 +16,7 @@ async function handle(conn: Deno.Conn): Promise<void> {
port: Number(originPort), port: Number(originPort),
}); });
try { try {
await Promise.all([Deno.copy(conn, origin), Deno.copy(origin, conn)]); await Promise.all([copy(conn, origin), copy(origin, conn)]);
} catch (e) { } catch (e) {
if ( if (
!(e instanceof Deno.errors.BrokenPipe) && !(e instanceof Deno.errors.BrokenPipe) &&

View file

@ -421,7 +421,11 @@ declare namespace Deno {
seekSync(offset: number, whence: SeekMode): number; 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 * an error occurs. It resolves to the number of bytes copied or rejects with
* the first error encountered while copying. * the first error encountered while copying.
* *

View file

@ -1,8 +1,9 @@
import { copy } from "../../test_util/std/io/util.ts";
async function main(): Promise<void> { async function main(): Promise<void> {
for (let i = 1; i < Deno.args.length; i++) { for (let i = 1; i < Deno.args.length; i++) {
const filename = Deno.args[i]; const filename = Deno.args[i];
const file = await Deno.open(filename); const file = await Deno.open(filename);
await Deno.copy(file, Deno.stdout); await copy(file, Deno.stdout);
} }
} }

View file

@ -1,10 +1,11 @@
import { copy } from "../../test_util/std/io/util.ts";
const addr = Deno.args[0] || "0.0.0.0:4544"; const addr = Deno.args[0] || "0.0.0.0:4544";
const [hostname, port] = addr.split(":"); const [hostname, port] = addr.split(":");
const listener = Deno.listen({ hostname, port: Number(port) }); const listener = Deno.listen({ hostname, port: Number(port) });
console.log("listening on", addr); console.log("listening on", addr);
listener.accept().then( listener.accept().then(
async (conn): Promise<void> => { async (conn): Promise<void> => {
console.log("received bytes:", await Deno.copy(conn, conn)); console.log("received bytes:", await copy(conn, conn));
conn.close(); conn.close();
listener.close(); listener.close();
}, },

View file

@ -8,6 +8,7 @@ import {
assertThrowsAsync, assertThrowsAsync,
unitTest, unitTest,
} from "./test_util.ts"; } from "./test_util.ts";
import { copy } from "../../../test_util/std/io/util.ts";
unitTest(function filesStdioFileDescriptors(): void { unitTest(function filesStdioFileDescriptors(): void {
assertEquals(Deno.stdin.rid, 0); assertEquals(Deno.stdin.rid, 0);
@ -21,7 +22,7 @@ unitTest({ perms: { read: true } }, async function filesCopyToStdout(): Promise<
const filename = "cli/tests/fixture.json"; const filename = "cli/tests/fixture.json";
const file = await Deno.open(filename); const file = await Deno.open(filename);
assert(file.rid > 2); 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; const fileSize = Deno.statSync(filename).size;
assertEquals(bytesWritten, fileSize); assertEquals(bytesWritten, fileSize);
file.close(); file.close();

View file

@ -4,8 +4,9 @@
- Listening for TCP port connections with - Listening for TCP port connections with
[Deno.listen](https://doc.deno.land/builtin/stable#Deno.listen). [Deno.listen](https://doc.deno.land/builtin/stable#Deno.listen).
- Use [Deno.copy](https://doc.deno.land/builtin/stable#Deno.copy) to take - Use
inbound data and redirect it to be outbound data. [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 ## Example
@ -16,10 +17,11 @@ returns to the client anything it sends.
/** /**
* echo_server.ts * echo_server.ts
*/ */
import { copy } from "https://deno.land/std@$STD_VERSION/io/util.ts";
const listener = Deno.listen({ port: 8080 }); const listener = Deno.listen({ port: 8080 });
console.log("listening on 0.0.0.0:8080"); console.log("listening on 0.0.0.0:8080");
for await (const conn of listener) { for await (const conn of listener) {
Deno.copy(conn, conn).finally(() => conn.close()); copy(conn, conn).finally(() => conn.close());
} }
``` ```

View file

@ -7,8 +7,8 @@
command line arguments. command line arguments.
- [Deno.open](https://doc.deno.land/builtin/stable#Deno.open) is used to get a - [Deno.open](https://doc.deno.land/builtin/stable#Deno.open) is used to get a
handle to a file. handle to a file.
- [Deno.copy](https://doc.deno.land/builtin/stable#Deno.copy) is used to - [copy](https://doc.deno.land/https/deno.land/std@$STD_VERSION/io/util.ts#copy)
transfer data from the file to the output stream. is used to transfer data from the file to the output stream.
- Files should be closed when you are finished with them - Files should be closed when you are finished with them
- Modules can be run directly from remote URLs. - Modules can be run directly from remote URLs.
@ -21,9 +21,10 @@ is opened, and printed to stdout (e.g. the console).
/** /**
* cat.ts * cat.ts
*/ */
import { copy } from "https://deno.land/std@$STD_VERSION/io/util.ts";
for (const filename of Deno.args) { for (const filename of Deno.args) {
const file = await Deno.open(filename); const file = await Deno.open(filename);
await Deno.copy(file, Deno.stdout); await copy(file, Deno.stdout);
file.close(); file.close();
} }
``` ```

View file

@ -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. is opened, and printed to stdout.
```ts ```ts
import { copy } from "https://deno.land/std@$STD_VERSION/io/util.ts";
const filenames = Deno.args; const filenames = Deno.args;
for (const filename of filenames) { for (const filename of filenames) {
const file = await Deno.open(filename); const file = await Deno.open(filename);
await Deno.copy(file, Deno.stdout); await copy(file, Deno.stdout);
file.close(); 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. returns to the client anything it sends.
```ts ```ts
import { copy } from "https://deno.land/std@$STD_VERSION/io/util.ts";
const hostname = "0.0.0.0"; const hostname = "0.0.0.0";
const port = 8080; const port = 8080;
const listener = Deno.listen({ hostname, port }); const listener = Deno.listen({ hostname, port });
console.log(`Listening on ${hostname}:${port}`); console.log(`Listening on ${hostname}:${port}`);
for await (const conn of listener) { for await (const conn of listener) {
Deno.copy(conn, conn); copy(conn, conn);
} }
``` ```

@ -1 +1 @@
Subproject commit 8467929052737f634eb8842a960093c686ae3b9b Subproject commit 81314bcab8b5dc2fef85ec65f8588cab17063378