UNPKG

@jsenv/core

Version:

Tool to develop, test and build js projects

43 lines (40 loc) 1.43 kB
// 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 // }