1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-24 15:19:26 -05:00

BREAKING(io): remove Deno.copy() (#25345)

Towards #22079

---------

Signed-off-by: Asher Gomez <ashersaupingomez@gmail.com>
This commit is contained in:
Asher Gomez 2024-09-03 20:46:13 +10:00 committed by GitHub
parent 241fa7bc97
commit 03d8e474d7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 0 additions and 139 deletions

View file

@ -1833,27 +1833,6 @@ declare namespace Deno {
seekSync(offset: number | bigint, whence: SeekMode): number;
}
/**
* 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.
*
* @deprecated This will be removed in Deno 2.0. See the
* {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
* for migration instructions.
*
* @category I/O
*
* @param src The source to copy from
* @param dst The destination to copy to
* @param options Can be used to tune size of the buffer. Default size is 32kB
*/
export function copy(
src: Reader,
dst: Writer,
options?: { bufSize?: number },
): Promise<number>;
/** Open a file and resolve to an instance of {@linkcode Deno.FsFile}. The
* file does not need to previously exist if using the `create` or `createNew`
* open options. The caller may have the resulting file automatically closed

View file

@ -20,7 +20,6 @@ import {
writableStreamForRid,
} from "ext:deno_web/06_streams.js";
const DEFAULT_BUFFER_SIZE = 32 * 1024;
// Seek whence values.
// https://golang.org/pkg/io/#pkg-constants
const SeekMode = {
@ -33,37 +32,6 @@ const SeekMode = {
End: 2,
};
async function copy(
src,
dst,
options,
) {
internals.warnOnDeprecatedApi(
"Deno.copy()",
new Error().stack,
"Use `copy()` from `https://jsr.io/@std/io/doc/copy/~` instead.",
);
let n = 0;
const bufSize = options?.bufSize ?? DEFAULT_BUFFER_SIZE;
const b = new Uint8Array(bufSize);
let gotEOF = false;
while (gotEOF === false) {
const result = await src.read(b);
if (result === null) {
gotEOF = true;
} else {
let nwritten = 0;
while (nwritten < result) {
nwritten += await dst.write(
TypedArrayPrototypeSubarray(b, nwritten, result),
);
}
n += nwritten;
}
}
return n;
}
function readSync(rid, buffer) {
if (buffer.length === 0) return 0;
const nread = core.readSync(rid, buffer);
@ -295,7 +263,6 @@ const stdout = new Stdout();
const stderr = new Stderr();
export {
copy,
read,
readAll,
readAllSync,

View file

@ -801,7 +801,6 @@ function bootstrapMainRuntime(runtimeOptions, warmup = false) {
if (future) {
delete globalThis.window;
delete Deno.Buffer;
delete Deno.copy;
delete Deno.File;
delete Deno.fstat;
delete Deno.fstatSync;
@ -979,7 +978,6 @@ function bootstrapWorkerRuntime(
if (future) {
delete Deno.Buffer;
delete Deno.copy;
delete Deno.File;
delete Deno.fstat;
delete Deno.fstatSync;

View file

@ -47,7 +47,6 @@ util::unit_test_factory!(
image_data_test,
internals_test,
intl_test,
io_test,
jupyter_test,
kv_test,
kv_queue_test_no_db_close,

View file

@ -1,6 +1,5 @@
console.log("window is", globalThis.window);
console.log("Deno.Buffer is", Deno.Buffer);
console.log("Deno.copy is", Deno.copy);
console.log("Deno.File is", Deno.File);
console.log("Deno.fstat is", Deno.fstat);
console.log("Deno.fstatSync is", Deno.fstatSync);

View file

@ -1,6 +1,5 @@
window is undefined
Deno.Buffer is undefined
Deno.copy is undefined
Deno.File is undefined
Deno.fstat is undefined
Deno.fstatSync is undefined

View file

@ -1,80 +0,0 @@
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
import { assertEquals, DENO_FUTURE } from "./test_util.ts";
import { Buffer } from "@std/io/buffer";
const DEFAULT_BUF_SIZE = 32 * 1024;
type Spy = { calls: number };
function repeat(c: string, bytes: number): Uint8Array {
assertEquals(c.length, 1);
const ui8 = new Uint8Array(bytes);
ui8.fill(c.charCodeAt(0));
return ui8;
}
function spyRead(obj: Buffer): Spy {
const spy: Spy = {
calls: 0,
};
const orig = obj.read.bind(obj);
obj.read = (p: Uint8Array): Promise<number | null> => {
spy.calls++;
return orig(p);
};
return spy;
}
Deno.test({ ignore: DENO_FUTURE }, async function copyWithDefaultBufferSize() {
const xBytes = repeat("b", DEFAULT_BUF_SIZE);
const reader = new Buffer(xBytes.buffer as ArrayBuffer);
const write = new Buffer();
const readSpy = spyRead(reader);
// deno-lint-ignore no-deprecated-deno-api
const n = await Deno.copy(reader, write);
assertEquals(n, xBytes.length);
assertEquals(write.length, xBytes.length);
assertEquals(readSpy.calls, 2); // read with DEFAULT_BUF_SIZE bytes + read with 0 bytes
});
Deno.test({ ignore: DENO_FUTURE }, async function copyWithCustomBufferSize() {
const bufSize = 1024;
const xBytes = repeat("b", DEFAULT_BUF_SIZE);
const reader = new Buffer(xBytes.buffer as ArrayBuffer);
const write = new Buffer();
const readSpy = spyRead(reader);
// deno-lint-ignore no-deprecated-deno-api
const n = await Deno.copy(reader, write, { bufSize });
assertEquals(n, xBytes.length);
assertEquals(write.length, xBytes.length);
assertEquals(readSpy.calls, DEFAULT_BUF_SIZE / bufSize + 1);
});
Deno.test(
{ ignore: DENO_FUTURE, permissions: { write: true } },
async function copyBufferToFile() {
const filePath = "test-file.txt";
// bigger than max File possible buffer 16kb
const bufSize = 32 * 1024;
const xBytes = repeat("b", bufSize);
const reader = new Buffer(xBytes.buffer as ArrayBuffer);
const write = await Deno.open(filePath, { write: true, create: true });
// deno-lint-ignore no-deprecated-deno-api
const n = await Deno.copy(reader, write, { bufSize });
assertEquals(n, xBytes.length);
write.close();
await Deno.remove(filePath);
},
);