@jsenv/core
Version:
Tool to develop, test and build js projects
43 lines (40 loc) • 1.43 kB
JavaScript
// the following apis are creating js entry points:
// - new Worker()
// - new SharedWorker()
// - navigator.serviceWorker.register()
export const isWebWorkerEntryPointReference = (reference) => {
if (reference.subtype === "new_url_first_arg") {
return ["worker", "service_worker", "shared_worker"].includes(
reference.expectedSubtype,
);
}
return [
"new_worker_first_arg",
"new_shared_worker_first_arg",
"service_worker_register_first_arg",
].includes(reference.subtype);
};
export const isWebWorkerUrlInfo = (urlInfo) => {
return (
urlInfo.subtype === "worker" ||
urlInfo.subtype === "service_worker" ||
urlInfo.subtype === "shared_worker"
);
};
// export const isEntryPoint = (urlInfo, urlGraph) => {
// if (urlInfo.data.isEntryPoint) {
// return true
// }
// if (isWebWorker(urlInfo)) {
// // - new Worker("a.js") -> "a.js" is an entry point
// // - self.importScripts("b.js") -> "b.js" is not an entry point
// // So the following logic applies to infer if the file is a web worker entry point
// // "When a non-webworker file references a worker file, the worker file is an entry point"
// const dependents = Array.from(urlInfo.dependents)
// return dependents.some((dependentUrl) => {
// const dependentUrlInfo = urlGraph.getUrlInfo(dependentUrl)
// return !isWebWorker(dependentUrlInfo)
// })
// }
// return false
// }