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

FUTURE(ext/fs): make Deno.FsFile constructor illegal (#23235)

I'm unsure whether we're planning to make the `Deno.FsFile` constructor
illegal or remove `FsFile` from the `Deno.*` namspace in Deno 2. Either
way, this PR works towards the former. I'll create a superceding PR if
the latter is planned instead.

Towards #23089
This commit is contained in:
Asher Gomez 2024-04-07 15:42:53 +10:00 committed by GitHub
parent b74a4f29f2
commit d3f3e0d717
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 29 additions and 0 deletions

View file

@ -90,6 +90,7 @@ const {
SymbolAsyncIterator,
SymbolIterator,
SymbolFor,
TypeError,
Uint32Array,
} = primordials;
@ -673,6 +674,11 @@ class FsFile {
new Error().stack,
"Use `Deno.open` or `Deno.openSync` instead.",
);
if (internals.future) {
throw new TypeError(
"`Deno.FsFile` cannot be constructed, use `Deno.open()` or `Deno.openSync()` instead.",
);
}
}
}

View file

@ -678,6 +678,11 @@ function bootstrapMainRuntime(runtimeOptions, warmup = false) {
9: future,
} = runtimeOptions;
// TODO(iuioiua): remove in Deno v2. This allows us to dynamically delete
// class properties within constructors for classes that are not defined
// within the Deno namespace.
internals.future = future;
removeImportedOps();
deprecatedApiWarningDisabled = shouldDisableDeprecatedApiWarning;
@ -840,6 +845,11 @@ function bootstrapWorkerRuntime(
9: future,
} = runtimeOptions;
// TODO(iuioiua): remove in Deno v2. This allows us to dynamically delete
// class properties within constructors for classes that are not defined
// within the Deno namespace.
internals.future = future;
deprecatedApiWarningDisabled = shouldDisableDeprecatedApiWarning;
verboseDeprecatedApiWarning = shouldUseVerboseDeprecatedApiWarning;
performance.setTimeOrigin(DateNow());

View file

@ -31,4 +31,16 @@ console.log("Deno.writeAllSync is", Deno.writeAllSync);
console.log("Deno.write is", Deno.write);
console.log("Deno.writeSync is", Deno.writeSync);
try {
new Deno.FsFile(0);
} catch (error) {
if (
error instanceof TypeError &&
error.message ===
"`Deno.FsFile` cannot be constructed, use `Deno.open()` or `Deno.openSync()` instead."
) {
console.log("Deno.FsFile constructor is illegal");
}
}
self.close();

View file

@ -27,3 +27,4 @@ Deno.writeAll is undefined
Deno.writeAllSync is undefined
Deno.write is undefined
Deno.writeSync is undefined
Deno.FsFile constructor is illegal