eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.16 kB
JavaScript
import{dirname,isAbsolute,join,resolve}from"node:path";import{realpathSync,statSync}from"node:fs";import{CACHED_CHANNEL_PREFIX,isNodeModulesPath,isPathImport}from"#internal/authored-package-boundary.js";const PATH_IMPORT_FILTER=/^(?:\.|\/|[A-Za-z]:[\\/])/;function createAuthoredRelativeExtensionResolverPlugin(e){let t=createCachedFileProbe();return{name:`eve-authored-relative-extension-resolver`,resolveId:{filter:{id:PATH_IMPORT_FILTER},handler(n,r){if(r===void 0||r.startsWith(`\0`)||r.startsWith(CACHED_CHANNEL_PREFIX)||!isPathImport(n))return;let i=resolveExistingImportPath(isAbsolute(n)?n:resolve(dirname(r),n),e.extensions,t);if(i!==void 0)return{id:isNodeModulesPath(i)?toRealModulePath(i):i}}}}}function createCachedFileProbe(){let e=new Map;return t=>{let n=e.get(t);if(n!==void 0)return n;let r=!1;try{r=statSync(t).isFile()}catch{}return e.set(t,r),r}}function resolveExistingImportPath(e,t,n){if(n(e))return e;for(let r of t){let t=`${e}${r}`;if(n(t))return t}for(let r of t){let t=join(e,`index${r}`);if(n(t))return t}}function toRealModulePath(e){try{return realpathSync(e)}catch{return e}}export{createAuthoredRelativeExtensionResolverPlugin};