| 14 | }; |
| 15 | |
| 16 | export function resolve(specifier, context, nextResolve) { |
| 17 | const { drizzle, clean } = parse(specifier); |
| 18 | if (drizzle && !clean.endsWith('.ts') && !clean.endsWith('.mts')) { |
| 19 | return nextResolve(clean); |
| 20 | } |
| 21 | |
| 22 | if (drizzle) { |
| 23 | return { |
| 24 | shortCircuit: true, |
| 25 | url: `file://${specifier}`, |
| 26 | }; |
| 27 | } |
| 28 | |
| 29 | const parsedParent = parse(context.parentURL); |
| 30 | const parentURL = parsedParent.drizzle |
| 31 | ? new URL(`file://${path.resolve(parsedParent.clean)}`) |
| 32 | : context.parentURL; |
| 33 | |
| 34 | // Let Node.js handle all other specifiers. |
| 35 | return nextResolve(specifier, { ...context, parentURL }); |
| 36 | } |
| 37 | |
| 38 | export async function load(url, context, defaultLoad) { |
| 39 | const { drizzle, clean } = parse(url); |