master-zapier-plan-draft/research/zapier/scratch/veraetime/src/middleware.ts
George Lambert b4150c8250 Milestone 0: import zappier billing, Verae middleware, and Zapier research
Compose-ready workspace: packages/zappier (rate card, portal, Stripe),
packages/verae-zapier-middleware (timestamp + NATS), packages/verae-zapier
(CLI app), vendor/zapier-platform, and research/zapier vendor corpus.

Gate 0 structure checks pass. Product code and research are not yet wired.
2026-09-09 02:37:36 -04:00

28 lines
829 B
TypeScript

import type {
AfterResponseMiddleware,
BeforeRequestMiddleware,
HttpResponse,
ZObject,
} from 'zapier-platform-core';
const includeBearer: BeforeRequestMiddleware = (request, _z, bundle) => {
const url = request.url || '';
if (url.includes('/auth/login') || url.includes('/zapier/v1/signup')) {
return request;
}
if (bundle.authData.sessionKey) {
request.headers = request.headers || {};
request.headers.Authorization = `Bearer ${bundle.authData.sessionKey}`;
}
return request;
};
const handleAuthErrors: AfterResponseMiddleware = (response: HttpResponse, z: ZObject) => {
if (response.status === 401) {
throw new z.errors.RefreshAuthError('Verae Time token expired or invalid');
}
return response;
};
export const befores = [includeBearer];
export const afters = [handleAuthErrors];