{"version":3,"sources":["../../src/validator/custom-resolver.ts"],"names":["builtinModules","join","existsSync","readFile","isDependencyPartOfPackage"],"mappings":"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","file":"custom-resolver.cjs","sourcesContent":["import { existsSync } from 'node:fs';\nimport { readFile } from 'node:fs/promises';\nimport type { LoadHookContext, ResolveHookContext } from 'node:module';\nimport { builtinModules } from 'node:module';\nimport { join } from 'node:path';\nimport { isDependencyPartOfPackage } from '../build/utils';\n\nconst STUB_PREFIX = 'mastra-stub:';\n\nlet _stubbedExternals: string[] | null = null;\nfunction getStubbedExternals(): string[] {\n if (_stubbedExternals === null) {\n try {\n _stubbedExternals = JSON.parse(process.env.STUBBED_EXTERNALS || '[]') as string[];\n } catch {\n _stubbedExternals = [];\n }\n }\n return _stubbedExternals;\n}\n\nconst cache = new Map>();\n\n/**\n * Check if a module is a Node.js builtin module\n * @param specifier - Module specifier\n * @returns True if it's a builtin module\n */\nfunction isBuiltinModule(specifier: string): boolean {\n return (\n builtinModules.includes(specifier) ||\n specifier.startsWith('node:') ||\n builtinModules.includes(specifier.replace(/^node:/, ''))\n );\n}\n\n/**\n * Check if a module specifier is a relative or absolute path\n * @param specifier - Module specifier\n * @returns True if it's a relative or absolute path\n */\nfunction isRelativePath(specifier: string): boolean {\n return (\n specifier.startsWith('./') ||\n specifier.startsWith('../') ||\n specifier.startsWith('/') ||\n /^[a-zA-Z]:\\\\/.test(specifier)\n ); // Windows absolute path\n}\n\n/**\n * Get the path to resolve any external packages from\n *\n * @param url\n * @returns\n */\nasync function getParentPath(specifier: string, url: string): Promise {\n if (!cache.size) {\n let moduleResolveMapLocation = process.env.MODULE_MAP;\n if (!moduleResolveMapLocation) {\n moduleResolveMapLocation = join(process.cwd(), 'module-resolve-map.json');\n }\n\n let moduleResolveMap: Record> = {};\n if (existsSync(moduleResolveMapLocation)) {\n moduleResolveMap = JSON.parse(await readFile(moduleResolveMapLocation, 'utf-8')) as Record<\n string,\n Record\n >;\n }\n\n for (const [id, rest] of Object.entries(moduleResolveMap)) {\n cache.set(id, rest);\n }\n }\n\n const importers = cache.get(url);\n if (!importers) {\n return null;\n }\n\n const matchedPackage = Object.keys(importers).find(external => isDependencyPartOfPackage(specifier, external));\n if (!matchedPackage) {\n return null;\n }\n const specifierParent = importers[matchedPackage]!;\n return specifierParent;\n}\n\nexport async function resolve(\n specifier: string,\n context: ResolveHookContext,\n nextResolve: (specifier: string, context: ResolveHookContext) => Promise<{ url: string }>,\n) {\n // Don't modify builtin modules\n if (isBuiltinModule(specifier)) {\n return nextResolve(specifier, context);\n }\n\n if (isRelativePath(specifier)) {\n return nextResolve(specifier, context);\n }\n\n // Stub GLOBAL_EXTERNALS packages during validation\n const stubbedExternals = getStubbedExternals();\n if (stubbedExternals.length > 0) {\n const isStubbed = stubbedExternals.some(ext => isDependencyPartOfPackage(specifier, ext));\n if (isStubbed) {\n return { url: `${STUB_PREFIX}${specifier}`, shortCircuit: true };\n }\n }\n\n if (context.parentURL) {\n const parentPath = await getParentPath(specifier, context.parentURL);\n\n if (parentPath) {\n return nextResolve(specifier, {\n ...context,\n parentURL: parentPath,\n });\n }\n }\n\n // Continue resolution with the modified path\n return nextResolve(specifier, context);\n}\n\nexport async function load(\n url: string,\n context: LoadHookContext,\n nextLoad: (url: string, context: LoadHookContext) => Promise<{ format: string; source: string }>,\n) {\n if (url.startsWith(STUB_PREFIX)) {\n return { format: 'module', source: 'export default {}', shortCircuit: true };\n }\n return nextLoad(url, context);\n}\n"]}