summaryrefslogtreecommitdiff
path: root/runtime/js/99_main.js
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2023-11-01 23:15:08 +0100
committerGitHub <noreply@github.com>2023-11-01 23:15:08 +0100
commit24c3c9695865bb478f5651da4982b7e0a34afc72 (patch)
tree5afe78a8c67bb9e9c1cd69d56a9a0c68bca67515 /runtime/js/99_main.js
parent42c426e7695a0037032d1ac5237830800eeaaed4 (diff)
feat: granular --unstable-* flags (#20968)
This commit adds granular `--unstable-*` flags: - "--unstable-broadcast-channel" - "--unstable-ffi" - "--unstable-fs" - "--unstable-http" - "--unstable-kv" - "--unstable-net" - "--unstable-worker-options" - "--unstable-cron" These flags are meant to replace a "catch-all" flag - "--unstable", that gives a binary control whether unstable features are enabled or not. The downside of this flag that allowing eg. Deno KV API also enables the FFI API (though the latter is still gated with a permission). These flags can also be specified in `deno.json` file under `unstable` key. Currently, "--unstable" flag works the same way - I will open a follow up PR that will print a warning when using "--unstable" and suggest to use concrete "--unstable-*" flag instead. We plan to phase out "--unstable" completely in Deno 2.
Diffstat (limited to 'runtime/js/99_main.js')
-rw-r--r--runtime/js/99_main.js52
1 files changed, 35 insertions, 17 deletions
diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js
index ac1f52e74..b06cef651 100644
--- a/runtime/js/99_main.js
+++ b/runtime/js/99_main.js
@@ -57,7 +57,11 @@ import * as performance from "ext:deno_web/15_performance.js";
import * as url from "ext:deno_url/00_url.js";
import * as fetch from "ext:deno_fetch/26_fetch.js";
import * as messagePort from "ext:deno_web/13_message_port.js";
-import { denoNs, denoNsUnstable } from "ext:runtime/90_deno_ns.js";
+import {
+ denoNs,
+ denoNsUnstable,
+ denoNsUnstableById,
+} from "ext:runtime/90_deno_ns.js";
import { errors } from "ext:runtime/01_errors.js";
import * as webidl from "ext:deno_webidl/00_webidl.js";
import DOMException from "ext:deno_web/01_dom_exception.js";
@@ -467,14 +471,15 @@ function bootstrapMainRuntime(runtimeOptions) {
7: isTty,
8: tsVersion,
9: unstableFlag,
- 10: pid,
- 11: target,
- 12: v8Version,
- 13: userAgent,
- 14: inspectFlag,
- // 15: enableTestingFeaturesFlag
- 16: hasNodeModulesDir,
- 17: maybeBinaryNpmCommandName,
+ 10: unstableFeatures,
+ 11: pid,
+ 12: target,
+ 13: v8Version,
+ 14: userAgent,
+ 15: inspectFlag,
+ // 16: enableTestingFeaturesFlag
+ 17: hasNodeModulesDir,
+ 18: maybeBinaryNpmCommandName,
} = runtimeOptions;
performance.setTimeOrigin(DateNow());
@@ -557,6 +562,7 @@ function bootstrapMainRuntime(runtimeOptions) {
mainModule: util.getterOnly(opMainModule),
});
+ // TODO(bartlomieju): deprecate --unstable
if (unstableFlag) {
ObjectAssign(finalDenoNs, denoNsUnstable);
// TODO(bartlomieju): this is not ideal, but because we use `ObjectAssign`
@@ -576,6 +582,11 @@ function bootstrapMainRuntime(runtimeOptions) {
jupyterNs = val;
},
});
+ } else {
+ for (let i = 0; i <= unstableFeatures.length; i++) {
+ const id = unstableFeatures[i];
+ ObjectAssign(finalDenoNs, denoNsUnstableById[id]);
+ }
}
// Setup `Deno` global - we're actually overriding already existing global
@@ -611,14 +622,15 @@ function bootstrapWorkerRuntime(
7: isTty,
8: tsVersion,
9: unstableFlag,
- 10: pid,
- 11: target,
- 12: v8Version,
- 13: userAgent,
- // 14: inspectFlag,
- 15: enableTestingFeaturesFlag,
- 16: hasNodeModulesDir,
- 17: maybeBinaryNpmCommandName,
+ 10: unstableFeatures,
+ 11: pid,
+ 12: target,
+ 13: v8Version,
+ 14: userAgent,
+ // 15: inspectFlag,
+ 16: enableTestingFeaturesFlag,
+ 17: hasNodeModulesDir,
+ 18: maybeBinaryNpmCommandName,
} = runtimeOptions;
performance.setTimeOrigin(DateNow());
@@ -688,8 +700,14 @@ function bootstrapWorkerRuntime(
globalThis.pollForMessages = pollForMessages;
+ // TODO(bartlomieju): deprecate --unstable
if (unstableFlag) {
ObjectAssign(finalDenoNs, denoNsUnstable);
+ } else {
+ for (let i = 0; i <= unstableFeatures.length; i++) {
+ const id = unstableFeatures[i];
+ ObjectAssign(finalDenoNs, denoNsUnstableById[id]);
+ }
}
ObjectDefineProperties(finalDenoNs, {
pid: util.readOnly(pid),