Next.js website for Rocky Mountain Vending company featuring: - Product catalog with Stripe integration - Service areas and parts pages - Admin dashboard with Clerk authentication - SEO optimized pages with JSON-LD structured data Co-authored-by: Cursor <cursoragent@cursor.com>
21 lines
579 B
Text
21 lines
579 B
Text
import { ProviderError } from "./ProviderError";
|
|
export const chain = (...providers) => async () => {
|
|
if (providers.length === 0) {
|
|
throw new ProviderError("No providers in chain");
|
|
}
|
|
let lastProviderError;
|
|
for (const provider of providers) {
|
|
try {
|
|
const credentials = await provider();
|
|
return credentials;
|
|
}
|
|
catch (err) {
|
|
lastProviderError = err;
|
|
if (err?.tryNextLink) {
|
|
continue;
|
|
}
|
|
throw err;
|
|
}
|
|
}
|
|
throw lastProviderError;
|
|
};
|