Try nested error logging
This commit is contained in:
42
src/utils.ts
42
src/utils.ts
@@ -381,7 +381,6 @@ const loadSecretsViaConnect = async (
|
|||||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||||
serverURL: host,
|
serverURL: host,
|
||||||
token,
|
token,
|
||||||
timeout: 30000,
|
|
||||||
});
|
});
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
const message = err instanceof Error ? err.message : String(err);
|
const message = err instanceof Error ? err.message : String(err);
|
||||||
@@ -395,25 +394,27 @@ const loadSecretsViaConnect = async (
|
|||||||
if (!ref) {
|
if (!ref) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
let parsed, vaultId, item, secretValue;
|
||||||
try {
|
try {
|
||||||
// Parse the op ref and get the item from the Connect SDK
|
parsed = parseOpRef(ref);
|
||||||
const parsed = parseOpRef(ref);
|
} catch (err) {
|
||||||
|
throw new Error(`Failed to parse ref "${ref}": ${getErrorMessage(err)}`);
|
||||||
const vaultId = await fetchVaultId(
|
}
|
||||||
client,
|
try {
|
||||||
parsed.vault,
|
vaultId = await fetchVaultId(client, parsed.vault, ref, vaultIdByQuery);
|
||||||
ref,
|
} catch (err) {
|
||||||
vaultIdByQuery,
|
throw new Error(`Failed to resolve vault for "${ref}": ${getErrorMessage(err)}`);
|
||||||
);
|
}
|
||||||
const item = await client.getItem(vaultId, parsed.item);
|
try {
|
||||||
|
item = await client.getItem(vaultId, parsed.item);
|
||||||
// Get the secret value from the item as Connect returns a full item object
|
} catch (err) {
|
||||||
const secretValue = await getSecretFromConnectItem(client, item, parsed);
|
throw new Error(`Failed to get item for "${ref}": ${getErrorMessage(err)}`);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
secretValue = await getSecretFromConnectItem(client, item, parsed);
|
||||||
setResolvedSecret(envName, secretValue, shouldExportEnv);
|
setResolvedSecret(envName, secretValue, shouldExportEnv);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
const msg = err instanceof Error ? err.message : String(err);
|
throw new Error(`Failed to get secret value for "${ref}": ${getErrorMessage(err)}`);
|
||||||
throw new Error(`Failed to load ref "${ref}": ${msg}`);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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
|
// Service Account loads secrets via the 1Password SDK
|
||||||
const loadSecretsViaServiceAccount = async (
|
const loadSecretsViaServiceAccount = async (
|
||||||
shouldExportEnv: boolean,
|
shouldExportEnv: boolean,
|
||||||
|
|||||||
Reference in New Issue
Block a user