diff options
Diffstat (limited to 'runtime/js')
-rw-r--r-- | runtime/js/90_deno_ns.js | 58 | ||||
-rw-r--r-- | runtime/js/99_main.js | 52 |
2 files changed, 92 insertions, 18 deletions
diff --git a/runtime/js/90_deno_ns.js b/runtime/js/90_deno_ns.js index c44c14bbe..ab2a5c308 100644 --- a/runtime/js/90_deno_ns.js +++ b/runtime/js/90_deno_ns.js @@ -154,6 +154,62 @@ const denoNs = { ChildProcess: process.ChildProcess, }; +// NOTE(bartlomieju): keep IDs in sync with `cli/main.rs` +const denoNsUnstableById = { + // BroadcastChannel is always available? + // 1: {}, + + // FFI + 2: { + dlopen: ffi.dlopen, + UnsafeCallback: ffi.UnsafeCallback, + UnsafePointer: ffi.UnsafePointer, + UnsafePointerView: ffi.UnsafePointerView, + UnsafeFnPointer: ffi.UnsafeFnPointer, + }, + + // FS + 3: { + flock: fs.flock, + flockSync: fs.flockSync, + funlock: fs.funlock, + funlockSync: fs.funlockSync, + umask: fs.umask, + }, + + // KV + 4: { + openKv: kv.openKv, + AtomicOperation: kv.AtomicOperation, + Kv: kv.Kv, + KvU64: kv.KvU64, + KvListIterator: kv.KvListIterator, + }, + + // net + 5: { + listenDatagram: net.createListenDatagram( + ops.op_net_listen_udp, + ops.op_net_listen_unixpacket, + ), + }, + + // HTTP + 6: { + HttpClient: httpClient.HttpClient, + createHttpClient: httpClient.createHttpClient, + // TODO(bartlomieju): why is it needed? + http, + upgradeHttp: http.upgradeHttp, + }, + // Worker options + // 7: {} + + 8: { + cron: cron.cron, + }, +}; + // when editing this list, also update unstableDenoProps in cli/tsc/99_main_compiler.js const denoNsUnstable = { listenDatagram: net.createListenDatagram( @@ -183,4 +239,4 @@ const denoNsUnstable = { cron: cron.cron, }; -export { denoNs, denoNsUnstable }; +export { denoNs, denoNsUnstable, denoNsUnstableById }; 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), |