From fa17f688e15203d6e531e7683cd8632be2e9efd1 Mon Sep 17 00:00:00 2001 From: sutne Date: Tue, 5 May 2026 21:38:18 +0200 Subject: [PATCH] perf: re-use psn auth-token request Instead of re-exchanging it for all sub-requests in the same serverless function call. --- src/playstation/middleware.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/playstation/middleware.ts b/src/playstation/middleware.ts index dfbaa06..7e9969e 100644 --- a/src/playstation/middleware.ts +++ b/src/playstation/middleware.ts @@ -4,10 +4,20 @@ import { getNpServiceName } from './util/platforms'; const REFRESH_TOKEN = process.env.PLAYSTATION_REFRESH_TOKEN?.trim() ?? ''; -async function getAuth(): Promise { +let authPromise: Promise | null = null; + +async function getAuth(): Promise { if (!REFRESH_TOKEN) throw new Error('No refresh token provided.'); - const auth = await psn.exchangeRefreshTokenForAuthTokens(REFRESH_TOKEN); - return auth; + if (!authPromise) { + authPromise = (async () => { + const authorization = await psn.exchangeRefreshTokenForAuthTokens(REFRESH_TOKEN); + return authorization; + })().catch((err) => { + authPromise = null; + throw err; + }); + } + return authPromise; } export async function getProfile(