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:
parent
241fa7bc97
commit
03d8e474d7
7 changed files with 0 additions and 139 deletions
21
cli/tsc/dts/lib.deno.ns.d.ts
vendored
21
cli/tsc/dts/lib.deno.ns.d.ts
vendored
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
},
|
||||
);
|
Loading…
Reference in a new issue