UNPKG

eve

Version:

Filesystem-first framework for durable backend AI agents that run anywhere.

1 lines • 1.73 kB
import{createRequire}from"node:module";import{dirname,join,resolve}from"node:path";import{existsSync,readFileSync,realpathSync}from"node:fs";function createExtensionExternalDependencyPlugin(e){let t=collectDependencyAnchors(e);return t.size===0?null:{name:`eve-extension-external-dependency`,resolveId(e){return[...t.keys()].find(t=>e===t||e.startsWith(`${t}/`))===void 0?null:{external:!0,id:e}}}}function resolveExtensionExternalDependencyPaths(e){let t={};for(let[n,r]of collectDependencyAnchors(e)){for(let e of r)try{t[n]=resolveDependencyEntry(n,e);break}catch{}if(t[n]===void 0)throw Error(`Cannot resolve extension external dependency "${n}" from its mounted extension package.`)}return t}function resolveDependencyEntry(e,t){let n=createRequire(t);try{return n.resolve(e)}catch(t){let r=n.resolve.paths(e)?.map(t=>join(t,e,`package.json`)).find(existsSync);if(r===void 0)throw t;let i=JSON.parse(readFileSync(r,`utf8`)),a=resolveImportExport(i.exports)??stringValue(i.module)??stringValue(i.main);if(a===void 0)throw t;return resolve(dirname(r),a)}}function resolveImportExport(e){if(typeof e==`string`)return e;if(Array.isArray(e))return e.map(resolveImportExport).find(e=>e!==void 0);if(typeof e!=`object`||!e)return;let t=e;if(`.`in t)return resolveImportExport(t[`.`]);for(let e of[`node`,`import`,`default`]){let n=resolveImportExport(t[e]);if(n!==void 0)return n}}function stringValue(e){return typeof e==`string`?e:void 0}function collectDependencyAnchors(e){let t=new Map;for(let n of e)for(let e of n.externalDependencies){let r=t.get(e)??[];r.push(join(realpathSync(n.sourceRoot),`_manifest.json`)),t.set(e,r)}return t}export{createExtensionExternalDependencyPlugin,resolveExtensionExternalDependencyPaths};