// audit-middleware.ts
export const auditMiddleware = experimental_standaloneMiddleware<{
ctx,
meta
}>().create(async ({ next, ctx, meta, rawInput }) => {
const result = await next({ ctx });
if (result.ok && meta?.auditProxy) {
await meta.auditProxy(ctx, result.data, rawInput);
}
return result;
});
// procedure.ts
const protectedUserCommandProcedure = <TAuditData, TData>(mapper: (data: TAuditData) => TData) => procedure.use(auditMiddleware.unsable_pipe(async({ctx, next}) => {
const result = await next({ ctx });
if (result.ok) {
result.data = mapper(result.data as TAuditData);
return result;
}
return result;
})
// audit-middleware.ts
export const auditMiddleware = experimental_standaloneMiddleware<{
ctx,
meta
}>().create(async ({ next, ctx, meta, rawInput }) => {
const result = await next({ ctx });
if (result.ok && meta?.auditProxy) {
await meta.auditProxy(ctx, result.data, rawInput);
}
return result;
});
// procedure.ts
const protectedUserCommandProcedure = <TAuditData, TData>(mapper: (data: TAuditData) => TData) => procedure.use(auditMiddleware.unsable_pipe(async({ctx, next}) => {
const result = await next({ ctx });
if (result.ok) {
result.data = mapper(result.data as TAuditData);
return result;
}
return result;
})