fix(plugin-tools): prioritize prefixed plugin names over non-prefixed names when importing plugins

This is to not accidentally importing for instance the "pino" package if reporter is set to just "pino" and instead import the "@emigrate/reporter-pino" package if that's the case.
This commit is contained in:
Joakim Carlstein 2023-12-07 14:33:01 +01:00
parent 43a220d633
commit 20ed2e8a50
2 changed files with 6 additions and 1 deletions

View file

@ -0,0 +1,5 @@
---
'@emigrate/plugin-tools': patch
---
Try importing plugins (and reporters) using prefixes before importing without, this is to avoid issue with accidentaly importing other non-emigrate related packages. E.g. setting the reporter to "pino" would import the "pino" package without this fix and will import "@emigrate/reporter-pino" with this fix.

View file

@ -184,7 +184,7 @@ const load = async <T>(
): Promise<T | undefined> => { ): Promise<T | undefined> => {
const importFromEsm = await getImportFromEsm(); const importFromEsm = await getImportFromEsm();
const importsToTry = name.startsWith('.') ? [name] : [name, ...prefixes.map((prefix) => `${prefix}${name}`)]; const importsToTry = name.startsWith('.') ? [name] : [...prefixes.map((prefix) => `${prefix}${name}`), name];
for await (const importPath of importsToTry) { for await (const importPath of importsToTry) {
try { try {