eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.16 kB
JavaScript
import{realpathSync,statSync}from"node:fs";import{dirname,isAbsolute,join,resolve}from"node:path";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(i,a){if(a===void 0||a.startsWith(`\0`)||a.startsWith(CACHED_CHANNEL_PREFIX)||!isPathImport(i))return;let o=resolveExistingImportPath(isAbsolute(i)?i:resolve(dirname(a),i),e.extensions,t);if(o!==void 0)return{id:isNodeModulesPath(o)?toRealModulePath(o):o}}}}}function createCachedFileProbe(){let e=new Map;return n=>{let r=e.get(n);if(r!==void 0)return r;let i=!1;try{i=statSync(n).isFile()}catch{}return e.set(n,i),i}}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(t){try{return realpathSync(t)}catch{return t}}export{createAuthoredRelativeExtensionResolverPlugin};