diff options
Diffstat (limited to 'runtime/js/40_read_file.js')
-rw-r--r-- | runtime/js/40_read_file.js | 114 |
1 files changed, 53 insertions, 61 deletions
diff --git a/runtime/js/40_read_file.js b/runtime/js/40_read_file.js index 7c2898903..b7f0a7012 100644 --- a/runtime/js/40_read_file.js +++ b/runtime/js/40_read_file.js @@ -1,78 +1,70 @@ // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. -"use strict"; -((window) => { - const core = window.Deno.core; - const ops = core.ops; - const { pathFromURL } = window.__bootstrap.util; - const { abortSignal } = window.__bootstrap; +const core = globalThis.Deno.core; +const ops = core.ops; +import { pathFromURL } from "internal:runtime/js/06_util.js"; +import * as abortSignal from "internal:ext/web/03_abort_signal.js"; - function readFileSync(path) { - return ops.op_readfile_sync(pathFromURL(path)); +function readFileSync(path) { + return ops.op_readfile_sync(pathFromURL(path)); +} + +async function readFile(path, options) { + let cancelRid; + let abortHandler; + if (options?.signal) { + options.signal.throwIfAborted(); + cancelRid = ops.op_cancel_handle(); + abortHandler = () => core.tryClose(cancelRid); + options.signal[abortSignal.add](abortHandler); } - async function readFile(path, options) { - let cancelRid; - let abortHandler; + try { + const read = await core.opAsync( + "op_readfile_async", + pathFromURL(path), + cancelRid, + ); + return read; + } finally { if (options?.signal) { - options.signal.throwIfAborted(); - cancelRid = ops.op_cancel_handle(); - abortHandler = () => core.tryClose(cancelRid); - options.signal[abortSignal.add](abortHandler); - } + options.signal[abortSignal.remove](abortHandler); - try { - const read = await core.opAsync( - "op_readfile_async", - pathFromURL(path), - cancelRid, - ); - return read; - } finally { - if (options?.signal) { - options.signal[abortSignal.remove](abortHandler); - - // always throw the abort error when aborted - options.signal.throwIfAborted(); - } + // always throw the abort error when aborted + options.signal.throwIfAborted(); } } +} - function readTextFileSync(path) { - return ops.op_readfile_text_sync(pathFromURL(path)); +function readTextFileSync(path) { + return ops.op_readfile_text_sync(pathFromURL(path)); +} + +async function readTextFile(path, options) { + let cancelRid; + let abortHandler; + if (options?.signal) { + options.signal.throwIfAborted(); + cancelRid = ops.op_cancel_handle(); + abortHandler = () => core.tryClose(cancelRid); + options.signal[abortSignal.add](abortHandler); } - async function readTextFile(path, options) { - let cancelRid; - let abortHandler; + try { + const read = await core.opAsync( + "op_readfile_text_async", + pathFromURL(path), + cancelRid, + ); + return read; + } finally { if (options?.signal) { - options.signal.throwIfAborted(); - cancelRid = ops.op_cancel_handle(); - abortHandler = () => core.tryClose(cancelRid); - options.signal[abortSignal.add](abortHandler); - } + options.signal[abortSignal.remove](abortHandler); - try { - const read = await core.opAsync( - "op_readfile_text_async", - pathFromURL(path), - cancelRid, - ); - return read; - } finally { - if (options?.signal) { - options.signal[abortSignal.remove](abortHandler); - - // always throw the abort error when aborted - options.signal.throwIfAborted(); - } + // always throw the abort error when aborted + options.signal.throwIfAborted(); } } +} - window.__bootstrap.readFile = { - readFile, - readFileSync, - readTextFileSync, - readTextFile, - }; -})(this); +export { readFile, readFileSync, readTextFile, readTextFileSync }; |