Try nested error logging

This commit is contained in:
Jill Regan
2026-02-20 17:47:00 -05:00
parent 6490b7af0e
commit b590204659

View File

@@ -381,7 +381,6 @@ const loadSecretsViaConnect = async (
// eslint-disable-next-line @typescript-eslint/naming-convention
serverURL: host,
token,
timeout: 30000,
});
} catch (err) {
const message = err instanceof Error ? err.message : String(err);
@@ -395,25 +394,27 @@ const loadSecretsViaConnect = async (
if (!ref) {
continue;
}
let parsed, vaultId, item, secretValue;
try {
// Parse the op ref and get the item from the Connect SDK
const parsed = parseOpRef(ref);
const vaultId = await fetchVaultId(
client,
parsed.vault,
ref,
vaultIdByQuery,
);
const item = await client.getItem(vaultId, parsed.item);
// Get the secret value from the item as Connect returns a full item object
const secretValue = await getSecretFromConnectItem(client, item, parsed);
parsed = parseOpRef(ref);
} catch (err) {
throw new Error(`Failed to parse ref "${ref}": ${getErrorMessage(err)}`);
}
try {
vaultId = await fetchVaultId(client, parsed.vault, ref, vaultIdByQuery);
} catch (err) {
throw new Error(`Failed to resolve vault for "${ref}": ${getErrorMessage(err)}`);
}
try {
item = await client.getItem(vaultId, parsed.item);
} catch (err) {
throw new Error(`Failed to get item for "${ref}": ${getErrorMessage(err)}`);
}
try {
secretValue = await getSecretFromConnectItem(client, item, parsed);
setResolvedSecret(envName, secretValue, shouldExportEnv);
} catch (err) {
const msg = err instanceof Error ? err.message : String(err);
throw new Error(`Failed to load ref "${ref}": ${msg}`);
throw new Error(`Failed to get secret value for "${ref}": ${getErrorMessage(err)}`);
}
}
@@ -422,6 +423,13 @@ const loadSecretsViaConnect = async (
}
};
function getErrorMessage(err: unknown): string {
if (err instanceof Error) return err.message;
if (err && typeof (err as { message?: unknown }).message === "string")
return (err as { message: string }).message;
return String(err);
}
// Service Account loads secrets via the 1Password SDK
const loadSecretsViaServiceAccount = async (
shouldExportEnv: boolean,