Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: remove Deno.resources() #25251

Merged
merged 2 commits into from
Aug 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 0 additions & 30 deletions cli/tsc/dts/lib.deno.ns.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4097,36 +4097,6 @@ declare namespace Deno {
*/
export function metrics(): Metrics;

/**
* A map of open resources that Deno is tracking. The key is the resource ID
* (_rid_) and the value is its representation.
*
* @deprecated This will be removed in Deno 2.0.
*
* @category Runtime */
export interface ResourceMap {
[rid: number]: unknown;
}

/** Returns a map of open resource IDs (_rid_) along with their string
* representations. This is an internal API and as such resource
* representation has `unknown` type; that means it can change any time and
* should not be depended upon.
*
* ```ts
* console.log(Deno.resources());
* // { 0: "stdin", 1: "stdout", 2: "stderr" }
* Deno.openSync('../test.file');
* console.log(Deno.resources());
* // { 0: "stdin", 1: "stdout", 2: "stderr", 3: "fsFile" }
* ```
*
* @deprecated This will be removed in Deno 2.0.
*
* @category Runtime
*/
export function resources(): ResourceMap;

/**
* Additional information for FsEvent objects with the "other" kind.
*
Expand Down
6 changes: 0 additions & 6 deletions runtime/js/99_main.js
Original file line number Diff line number Diff line change
Expand Up @@ -620,10 +620,6 @@ const internalSymbol = Symbol("Deno.internal");
const finalDenoNs = {
internal: internalSymbol,
[internalSymbol]: internals,
resources() {
internals.warnOnDeprecatedApi("Deno.resources()", new Error().stack);
return core.resources();
},
close(rid) {
internals.warnOnDeprecatedApi(
"Deno.close()",
Expand Down Expand Up @@ -951,7 +947,6 @@ function bootstrapMainRuntime(runtimeOptions, warmup = false) {
delete Deno.readAllSync;
delete Deno.read;
delete Deno.readSync;
delete Deno.resources;
delete Deno.seek;
delete Deno.seekSync;
delete Deno.shutdown;
Expand Down Expand Up @@ -1141,7 +1136,6 @@ function bootstrapWorkerRuntime(
delete Deno.readAllSync;
delete Deno.read;
delete Deno.readSync;
delete Deno.resources;
delete Deno.seek;
delete Deno.seekSync;
delete Deno.shutdown;
Expand Down
1 change: 0 additions & 1 deletion tests/specs/future/runtime_api/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ console.log("Deno.readAll is", Deno.readAll);
console.log("Deno.readAllSync is", Deno.readAllSync);
console.log("Deno.read is", Deno.read);
console.log("Deno.readSync is", Deno.readSync);
console.log("Deno.resources is", Deno.resources);
console.log("Deno.seek is", Deno.seek);
console.log("Deno.seekSync is", Deno.seekSync);
console.log("Deno.shutdown is", Deno.shutdown);
Expand Down
1 change: 0 additions & 1 deletion tests/specs/future/runtime_api/main.out
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ Deno.readAll is undefined
Deno.readAllSync is undefined
Deno.read is undefined
Deno.readSync is undefined
Deno.resources is undefined
Deno.seek is undefined
Deno.seekSync is undefined
Deno.shutdown is undefined
Expand Down
60 changes: 1 addition & 59 deletions tests/unit/resources_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,68 +2,10 @@

// deno-lint-ignore-file no-deprecated-deno-api

import {
assert,
assertEquals,
assertThrows,
DENO_FUTURE,
} from "./test_util.ts";

const listenPort = 4505;
import { assertThrows } from "./test_util.ts";

Deno.test(function resourcesCloseBadArgs() {
assertThrows(() => {
Deno.close((null as unknown) as number);
}, TypeError);
});

Deno.test({ ignore: DENO_FUTURE }, function resourcesStdio() {
const res = Deno.resources();

assertEquals(res[0], "stdin");
assertEquals(res[1], "stdout");
assertEquals(res[2], "stderr");
});

Deno.test(
{ ignore: DENO_FUTURE, permissions: { net: true } },
async function resourcesNet() {
const listener = Deno.listen({ port: listenPort });
const dialerConn = await Deno.connect({ port: listenPort });
const listenerConn = await listener.accept();

const res = Deno.resources();
assertEquals(
Object.values(res).filter((r): boolean => r === "tcpListener").length,
1,
);
const tcpStreams = Object.values(res).filter(
(r): boolean => r === "tcpStream",
);
assert(tcpStreams.length >= 2);

listenerConn.close();
dialerConn.close();
listener.close();
},
);

Deno.test(
{ ignore: DENO_FUTURE, permissions: { read: true } },
async function resourcesFile() {
const resourcesBefore = Deno.resources();
const f = await Deno.open("tests/testdata/assets/hello.txt");
const resourcesAfter = Deno.resources();
f.close();

// check that exactly one new resource (file) was added
assertEquals(
Object.keys(resourcesAfter).length,
Object.keys(resourcesBefore).length + 1,
);
const newRid = +Object.keys(resourcesAfter).find((rid): boolean => {
return !Object.prototype.hasOwnProperty.call(resourcesBefore, rid);
})!;
assertEquals(resourcesAfter[newRid], "fsFile");
},
);