From 7aa11b7a8abacf81dec20fff21216df35d333756 Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Sun, 27 Jul 2025 18:50:33 -0700 Subject: Pulls in pengueno from npm --- u/server/filter/index.ts | 34 ---------------------------------- u/server/filter/json.ts | 42 ------------------------------------------ u/server/filter/method.ts | 30 ------------------------------ 3 files changed, 106 deletions(-) delete mode 100644 u/server/filter/index.ts delete mode 100644 u/server/filter/json.ts delete mode 100644 u/server/filter/method.ts (limited to 'u/server/filter') diff --git a/u/server/filter/index.ts b/u/server/filter/index.ts deleted file mode 100644 index 75168c7..0000000 --- a/u/server/filter/index.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { - type IEither, - type ITraceable, - LogLevel, - type PenguenoRequest, - type ServerTrace, -} from '@emprespresso/pengueno'; - -export enum ErrorSource { - USER = LogLevel.WARN, - SYSTEM = LogLevel.ERROR, -} - -export class PenguenoError extends Error { - public readonly source: ErrorSource; - constructor( - override readonly message: string, - public readonly status: number, - ) { - super(message); - this.source = Math.floor(status / 100) === 4 ? ErrorSource.USER : ErrorSource.SYSTEM; - } -} - -export interface RequestFilter< - T, - Err extends PenguenoError = PenguenoError, - RIn = ITraceable, -> { - (req: RIn): IEither | Promise>; -} - -export * from './method.js'; -export * from './json.js'; diff --git a/u/server/filter/json.ts b/u/server/filter/json.ts deleted file mode 100644 index bc53d47..0000000 --- a/u/server/filter/json.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { - Either, - type IEither, - type ITraceable, - LogLevel, - Metric, - PenguenoError, - type PenguenoRequest, - type RequestFilter, - type ServerTrace, - TraceUtil, -} from '@emprespresso/pengueno'; - -export interface JsonTransformer { - (json: ITraceable): IEither; -} - -const ParseJsonMetric = Metric.fromName('JsonParse').asResult(); -export const jsonModel = - (jsonTransformer: JsonTransformer): RequestFilter => - (r: ITraceable) => - r - .flatMap(TraceUtil.withFunctionTrace(jsonModel)) - .flatMap(TraceUtil.withMetricTrace(ParseJsonMetric)) - .map((j) => - Either.fromFailableAsync(>j.get().req.json()).then((either) => - either.mapLeft((errReason) => { - j.trace.traceScope(LogLevel.WARN).trace(errReason); - return new PenguenoError('seems to be invalid JSON (>//<) can you fix?', 400); - }), - ), - ) - .flatMapAsync(TraceUtil.promiseify(TraceUtil.traceResultingEither(ParseJsonMetric))) - .map( - TraceUtil.promiseify((traceableEitherJson) => - traceableEitherJson - .get() - .mapRight((j) => traceableEitherJson.move(j)) - .flatMap(jsonTransformer), - ), - ) - .get(); diff --git a/u/server/filter/method.ts b/u/server/filter/method.ts deleted file mode 100644 index 7d6aa76..0000000 --- a/u/server/filter/method.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { - Either, - HttpMethod, - IEither, - type ITraceable, - LogLevel, - PenguenoError, - type PenguenoRequest, - type RequestFilter, - type ServerTrace, - TraceUtil, -} from '@emprespresso/pengueno'; - -export const requireMethod = - (methods: Array): RequestFilter => - (req: ITraceable) => - req - .flatMap(TraceUtil.withFunctionTrace(requireMethod)) - .map((t): IEither => { - const { - req: { method }, - } = t.get(); - if (!methods.includes(method)) { - const msg = "that's not how you pet me (â‹Ÿīšâ‹ž)~"; - t.trace.traceScope(LogLevel.WARN).trace(msg); - return Either.left(new PenguenoError(msg, 405)); - } - return Either.right(method); - }) - .get(); -- cgit v1.2.3-70-g09d2