/** * Shared route wrapper for the warehouse-layouts routes: standard try → refresh token → * retry → errorHandlingHelper pattern (see CLAUDE.md "Server API Route Pattern"). * Lives in server/utils so Nitro never mounts it as a route. */ import refreshTokenHelper from './refreshTokenHelper' import forceLogoutHelper from './forceLogoutHelper' import errorHandlingHelper from './errorHandlingHelper' import getTokenHelper from './getTokenHelper' export type Handler = (event: any, token: string) => Promise export const withIdempiere = (handler: Handler) => defineEventHandler(async (event) => { let data: any = {} try { data = await handler(event, await getTokenHelper(event)) } catch (err: any) { try { const authToken: any = await refreshTokenHelper(event) data = await handler(event, authToken) } catch (error: any) { data = errorHandlingHelper(err?.data ?? err, error?.data ?? error) forceLogoutHelper(event, data) } } return data })