summaryrefslogtreecommitdiff
path: root/runtime/js
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/js')
-rw-r--r--runtime/js/11_workers.js15
-rw-r--r--runtime/js/40_permissions.js34
2 files changed, 46 insertions, 3 deletions
diff --git a/runtime/js/11_workers.js b/runtime/js/11_workers.js
index 602046a14..a0385357d 100644
--- a/runtime/js/11_workers.js
+++ b/runtime/js/11_workers.js
@@ -93,7 +93,16 @@
} else if (ArrayIsArray(value)) {
value = ArrayPrototypeMap(value, (route) => {
if (route instanceof URL) {
- route = pathFromURL(route);
+ if (permission === "net") {
+ route = route.host;
+ }
+ if (permission === "env") {
+ throw new Error(
+ `Expected 'string' for env permission, received 'URL'`,
+ );
+ } else {
+ route = pathFromURL(route);
+ }
}
return route;
});
@@ -115,12 +124,12 @@
write = "inherit",
}) {
return {
- env: parseUnitPermission(env, "env"),
+ env: parseArrayPermission(env, "env"),
hrtime: parseUnitPermission(hrtime, "hrtime"),
net: parseArrayPermission(net, "net"),
plugin: parseUnitPermission(plugin, "plugin"),
read: parseArrayPermission(read, "read"),
- run: parseUnitPermission(run, "run"),
+ run: parseArrayPermission(run, "run"),
write: parseArrayPermission(write, "write"),
};
}
diff --git a/runtime/js/40_permissions.js b/runtime/js/40_permissions.js
index 8e57a5b5a..019e65446 100644
--- a/runtime/js/40_permissions.js
+++ b/runtime/js/40_permissions.js
@@ -8,6 +8,7 @@
Deno: { core },
__bootstrap: { webUtil: { illegalConstructorKey } },
} = window;
+ const { pathFromURL } = window.__bootstrap.util;
const {
ArrayPrototypeIncludes,
Map,
@@ -161,6 +162,17 @@
),
);
}
+
+ if (desc.name === "read" || desc.name === "write") {
+ desc.path = pathFromURL(desc.path);
+ } else if (desc.name === "run") {
+ desc.command = pathFromURL(desc.command);
+ } else if (desc.name === "net") {
+ if (desc.host instanceof URL) {
+ desc.host = desc.host.host;
+ }
+ }
+
const state = opQuery(desc);
return PromiseResolve(cache(desc, state));
}
@@ -173,6 +185,17 @@
),
);
}
+
+ if (desc.name === "read" || desc.name === "write") {
+ desc.path = pathFromURL(desc.path);
+ } else if (desc.name === "run") {
+ desc.command = pathFromURL(desc.command);
+ } else if (desc.name === "net") {
+ if (desc.host instanceof URL) {
+ desc.host = desc.host.host;
+ }
+ }
+
const state = opRevoke(desc);
return PromiseResolve(cache(desc, state));
}
@@ -185,6 +208,17 @@
),
);
}
+
+ if (desc.name === "read" || desc.name === "write") {
+ desc.path = pathFromURL(desc.path);
+ } else if (desc.name === "run") {
+ desc.command = pathFromURL(desc.command);
+ } else if (desc.name === "net") {
+ if (desc.host instanceof URL) {
+ desc.host = desc.host.host;
+ }
+ }
+
const state = opRequest(desc);
return PromiseResolve(cache(desc, state));
}