aboutsummaryrefslogtreecommitdiffstats
path: root/extension
diff options
context:
space:
mode:
authorOmar Rizwan <omar@omar.website>2020-12-18 23:54:36 -0800
committerOmar Rizwan <omar@omar.website>2020-12-18 23:54:36 -0800
commitbb0376c407f0745e5bfc5c4d88fd5bc0a40a7d33 (patch)
tree8c6db4ed58ee839eb281e6687503789a9e0bcbf9 /extension
parentd21c9eace16593446cdedbd85ba780b7f4368b70 (diff)
checkpoint: starting work on truncate. more README stubs.
Diffstat (limited to 'extension')
-rw-r--r--extension/background.js17
1 files changed, 15 insertions, 2 deletions
diff --git a/extension/background.js b/extension/background.js
index e92069e..18848d7 100644
--- a/extension/background.js
+++ b/extension/background.js
@@ -142,15 +142,25 @@ const defineFile = (getData, setData) => ({
st_size: toArray(await getData(path)).length
};
},
+
async open({path}) { return { fh: Cache.storeObject(toArray(await getData(path))) }; },
async read({path, fh, size, offset}) {
return { buf: String.fromCharCode(...Cache.getObjectForHandle(fh).slice(offset, offset + size)) }
},
async write({path, buf}) {
// FIXME: patch
+ // I guess caller should override write() if they want to actually
+ // patch and not just re-set the whole string (for example,
+ // if they want to hot-reload just one function the user modified)
setData(path, buf); return { size: utf8(buf).length };
},
- async release({fh}) { Cache.removeObjectForHandle(fh); return {}; }
+ async release({fh}) { Cache.removeObjectForHandle(fh); return {}; },
+
+ async truncate({path, size}) {
+ // TODO: weird case if they truncate while the file is open
+ // (but `echo hi > foo.txt` uses O_TRUNC which doesn't do that)
+ setData(path, (await getData(path)).truncate(size)); return {};
+ }
});
router["/tabs/by-id"] = {
@@ -169,12 +179,15 @@ router["/tabs/by-id"] = {
// TODO: mem (?)
// TODO: cpu (?)
+// TODO: dom/ ?
+// TODO: globals/ ?
+
// screenshot.png (FIXME: how to keep from blocking when unfocused?)
// TODO: archive.mhtml ?
// TODO: printed.pdf
// control
// resources/
-// TODO: scripts/
+// TODO: scripts/ TODO: allow creation, eval immediately
(function() {
const withTab = (readHandler, writeHandler) => defineFile(async path => {