mirror of
https://github.com/denoland/deno.git
synced 2025-08-04 19:08:15 +00:00
refactor: Rename runtime/rt to runtime/js (#8806)
This commit is contained in:
parent
55dc467b41
commit
ffb5f7a4e1
42 changed files with 5 additions and 12 deletions
54
runtime/js/40_fs_events.js
Normal file
54
runtime/js/40_fs_events.js
Normal file
|
@ -0,0 +1,54 @@
|
|||
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
|
||||
|
||||
((window) => {
|
||||
const core = window.Deno.core;
|
||||
const { errors } = window.__bootstrap.errors;
|
||||
|
||||
class FsWatcher {
|
||||
#rid = 0;
|
||||
|
||||
constructor(paths, options) {
|
||||
const { recursive } = options;
|
||||
this.#rid = core.jsonOpSync("op_fs_events_open", { recursive, paths });
|
||||
}
|
||||
|
||||
get rid() {
|
||||
return this.#rid;
|
||||
}
|
||||
|
||||
async next() {
|
||||
try {
|
||||
return await core.jsonOpAsync("op_fs_events_poll", {
|
||||
rid: this.rid,
|
||||
});
|
||||
} catch (error) {
|
||||
if (error instanceof errors.BadResource) {
|
||||
return { value: undefined, done: true };
|
||||
} else if (error instanceof errors.Interrupted) {
|
||||
return { value: undefined, done: true };
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
return(value) {
|
||||
core.close(this.rid);
|
||||
return Promise.resolve({ value, done: true });
|
||||
}
|
||||
|
||||
[Symbol.asyncIterator]() {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
function watchFs(
|
||||
paths,
|
||||
options = { recursive: true },
|
||||
) {
|
||||
return new FsWatcher(Array.isArray(paths) ? paths : [paths], options);
|
||||
}
|
||||
|
||||
window.__bootstrap.fsEvents = {
|
||||
watchFs,
|
||||
};
|
||||
})(this);
|
Loading…
Add table
Add a link
Reference in a new issue