Skip to content

Commit

Permalink
BREAKING CHANGE: change order of args in Deno.copy()
Browse files Browse the repository at this point in the history
  • Loading branch information
bartlomieju committed Apr 24, 2020
1 parent 6efdacd commit eba56e3
Show file tree
Hide file tree
Showing 13 changed files with 18 additions and 19 deletions.
3 changes: 1 addition & 2 deletions cli/js/io.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,7 @@ export interface ReadWriteCloser extends Reader, Writer, Closer {}
// https://golang.org/pkg/io/#ReadWriteSeeker
export interface ReadWriteSeeker extends Reader, Writer, Seeker {}

// https://golang.org/pkg/io/#Copy
export async function copy(dst: Writer, src: Reader): Promise<number> {
export async function copy(src: Reader, dst: Writer): Promise<number> {
let n = 0;
const b = new Uint8Array(32 * 1024);
let gotEOF = false;
Expand Down
8 changes: 4 additions & 4 deletions cli/js/lib.deno.ns.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -565,16 +565,16 @@ declare namespace Deno {
*
* const source = await Deno.open("my_file.txt");
* const buffer = new Deno.Buffer()
* const bytesCopied1 = await Deno.copy(Deno.stdout, source);
* const bytesCopied2 = await Deno.copy(buffer, source);
* const bytesCopied1 = await Deno.copy(source, Deno.stdout);
* const bytesCopied2 = await Deno.copy(source, buffer);
*
* Because `copy()` is defined to read from `src` until `EOF`, it does not
* treat an `EOF` from `read()` as an error to be reported.
*
* @param dst The destination to copy to
* @param src The source to copy from
* @param dst The destination to copy to
*/
export function copy(dst: Writer, src: Reader): Promise<number>;
export function copy(src: Reader, dst: Writer): Promise<number>;

/** **UNSTABLE**: new API, yet to be vetted
* Turns a Reader, `r`, into an async iterator.
Expand Down
2 changes: 1 addition & 1 deletion cli/js/tests/files_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,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(Deno.stdout, file);
const bytesWritten = await Deno.copy(file, Deno.stdout);
const fileSize = Deno.statSync(filename).size;
assertEquals(bytesWritten, fileSize);
console.log("bytes written", bytesWritten);
Expand Down
2 changes: 1 addition & 1 deletion cli/tests/cat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ async function main(): Promise<void> {
for (let i = 1; i < args.length; i++) {
const filename = args[i];
const file = await open(filename);
await copy(stdout, file);
await copy(file, stdout);
}
}

Expand Down
2 changes: 1 addition & 1 deletion std/archive/tar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -470,7 +470,7 @@ export class Untar {
while (rest > 0) {
await this.reader.readFull(this.block);
const arr = rest < recordSize ? this.block.subarray(0, rest) : this.block;
await Deno.copy(writer, new Deno.Buffer(arr));
await Deno.copy(new Deno.Buffer(arr), writer);
rest -= recordSize;
}

Expand Down
4 changes: 2 additions & 2 deletions std/archive/tar_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ Deno.test(async function createTarArchive(): Promise<void> {
await tar.append("dir/tar.ts", { filePath });

// write tar data to a buffer
const writer = new Deno.Buffer(),
wrote = await Deno.copy(writer, tar.getReader());
const writer = new Deno.Buffer();
const wrote = await Deno.copy(tar.getReader(), writer);

/**
* 3072 = 512 (header) + 512 (content) + 512 (header) + 512 (content)
Expand Down
2 changes: 1 addition & 1 deletion std/examples/cat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
const filenames = Deno.args;
for (const filename of filenames) {
const file = await Deno.open(filename);
await Deno.copy(Deno.stdout, file);
await Deno.copy(file, Deno.stdout);
file.close();
}
2 changes: 1 addition & 1 deletion std/examples/curl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ const url_ = Deno.args[0];
const res = await fetch(url_);

// TODO(ry) Re-enable streaming in this example.
// Originally we did: await Deno.copy(Deno.stdout, res.body);
// Originally we did: await Deno.copy(res.body, Deno.stdout);
// But maybe more JS-y would be: res.pipeTo(Deno.stdout);

const body = new Uint8Array(await res.arrayBuffer());
Expand Down
2 changes: 1 addition & 1 deletion std/http/io.ts
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ export async function writeResponse(
const contentLength = headers.get("content-length");
assert(contentLength != null);
const bodyLength = parseInt(contentLength);
const n = await Deno.copy(writer, r.body);
const n = await Deno.copy(r.body, writer);
assert(n === bodyLength);
} else {
await writeChunkedBody(writer, r.body);
Expand Down
2 changes: 1 addition & 1 deletion std/io/readers_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,6 @@ test(async function ioMultiReader(): Promise<void> {
const n = await copyN(w, r, 4);
assertEquals(n, 4);
assertEquals(w.toString(), "abcd");
await copy(w, r);
await copy(r, w);
assertEquals(w.toString(), "abcdef");
});
2 changes: 1 addition & 1 deletion std/io/writers_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ test(async function ioStringWriter(): Promise<void> {
const r = new StringReader("0123456789");
await copyN(w, r, 4);
assertEquals(w.toString(), "base0123");
await copy(w, r);
await copy(r, w);
assertEquals(w.toString(), "base0123456789");
});
4 changes: 2 additions & 2 deletions std/mime/multipart.ts
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,7 @@ export class MultipartReader {
}
// file
let formFile: FormFile | undefined;
const n = await copy(buf, p);
const n = await copy(p, buf);
const contentType = p.headers.get("content-type");
assert(contentType != null, "content-type must be set");
if (n > maxMemory) {
Expand Down Expand Up @@ -573,7 +573,7 @@ export class MultipartWriter {
file: Reader
): Promise<void> {
const f = await this.createFormFile(field, filename);
await copy(f, file);
await copy(file, f);
}

private flush(): Promise<void> {
Expand Down
2 changes: 1 addition & 1 deletion std/mime/multipart_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ test({
assert(file.tempfile != null);
const f = await open(file.tempfile);
const w = new StringWriter();
await copy(w, f);
await copy(f, w);
const json = JSON.parse(w.toString());
assertEquals(json["compilerOptions"]["target"], "es2018");
f.close();
Expand Down

0 comments on commit eba56e3

Please sign in to comment.