summaryrefslogtreecommitdiff
path: root/u/server
diff options
context:
space:
mode:
authorElizabeth <lizhunt@amazon.com>2025-05-28 15:05:38 -0700
committerElizabeth <lizhunt@amazon.com>2025-05-28 15:05:38 -0700
commit3005cc83e605fb89b079cf0e6fd0ec95cd27b30e (patch)
tree992c5933f2ec4a75e32469ddd772c61dbcb2e2fd /u/server
parente3cf820b07e282221502cf2f116c9780b7375e0e (diff)
downloadci-3005cc83e605fb89b079cf0e6fd0ec95cd27b30e.tar.gz
ci-3005cc83e605fb89b079cf0e6fd0ec95cd27b30e.zip
Run prettier, add zed settings
Diffstat (limited to 'u/server')
-rw-r--r--u/server/activity/fourohfour.ts8
-rw-r--r--u/server/activity/health.ts58
-rw-r--r--u/server/filter/json.ts69
-rw-r--r--u/server/filter/method.ts40
-rw-r--r--u/server/filter/mod.ts10
-rw-r--r--u/server/request.ts19
-rw-r--r--u/server/response.ts16
7 files changed, 108 insertions, 112 deletions
diff --git a/u/server/activity/fourohfour.ts b/u/server/activity/fourohfour.ts
index 6449abd..c09aef6 100644
--- a/u/server/activity/fourohfour.ts
+++ b/u/server/activity/fourohfour.ts
@@ -23,13 +23,9 @@ export interface IFourOhFourActivity {
}
export class FourOhFourActivityImpl implements IFourOhFourActivity {
- public fourOhFour(
- req: ITraceable<PenguenoRequest, ServerTrace>,
- ) {
+ public fourOhFour(req: ITraceable<PenguenoRequest, ServerTrace>) {
return req
- .move(
- new JsonResponse(req, randomFourOhFour(), { status: 404 }),
- )
+ .move(new JsonResponse(req, randomFourOhFour(), { status: 404 }))
.map((resp) => Promise.resolve(resp.get()))
.get();
}
diff --git a/u/server/activity/health.ts b/u/server/activity/health.ts
index 0f54a99..83be399 100644
--- a/u/server/activity/health.ts
+++ b/u/server/activity/health.ts
@@ -23,45 +23,47 @@ export interface IHealthCheckActivity {
}
const healthCheckMetric = Metric.fromName("Health");
-export interface HealthChecker extends
- Mapper<
+export interface HealthChecker
+ extends Mapper<
ITraceable<HealthCheckInput, ServerTrace>,
Promise<IEither<Error, HealthCheckOutput>>
> {}
export class HealthCheckActivityImpl implements IHealthCheckActivity {
- constructor(
- private readonly check: HealthChecker,
- ) {}
+ constructor(private readonly check: HealthChecker) {}
public checkHealth(req: ITraceable<PenguenoRequest, ServerTrace>) {
return req
.bimap(TraceUtil.withFunctionTrace(this.checkHealth))
.bimap(TraceUtil.withMetricTrace(healthCheckMetric))
.flatMap((r) => r.move(HealthCheckInput.CHECK).map(this.check))
- .peek(TraceUtil.promiseify((h) =>
- h.get().fold((err) => {
- if (err) {
- h.trace.trace(healthCheckMetric.failure);
- h.trace.addTrace(LogLevel.ERROR).trace(`${err}`);
- return;
- }
- h.trace.trace(healthCheckMetric.success);
- })
- ))
- .map(TraceUtil.promiseify((h) =>
- h.get()
- .mapBoth(
- () => "oh no, i need to eat more vegetables (。•́︿•̀。)...",
- () => "think im healthy!! (✿˘◡˘) ready to do work~",
- )
- .fold((errMsg, okMsg) =>
- new JsonResponse(
- req,
- errMsg ?? okMsg,
- { status: errMsg ? 500 : 200 },
+ .peek(
+ TraceUtil.promiseify((h) =>
+ h.get().fold((err) => {
+ if (err) {
+ h.trace.trace(healthCheckMetric.failure);
+ h.trace.addTrace(LogLevel.ERROR).trace(`${err}`);
+ return;
+ }
+ h.trace.trace(healthCheckMetric.success);
+ }),
+ ),
+ )
+ .map(
+ TraceUtil.promiseify((h) =>
+ h
+ .get()
+ .mapBoth(
+ () => "oh no, i need to eat more vegetables (。•́︿•̀。)...",
+ () => "think im healthy!! (✿˘◡˘) ready to do work~",
)
- )
- ))
+ .fold(
+ (errMsg, okMsg) =>
+ new JsonResponse(req, errMsg ?? okMsg, {
+ status: errMsg ? 500 : 200,
+ }),
+ ),
+ ),
+ )
.get();
}
}
diff --git a/u/server/filter/json.ts b/u/server/filter/json.ts
index 4a2961e..79eabac 100644
--- a/u/server/filter/json.ts
+++ b/u/server/filter/json.ts
@@ -16,36 +16,39 @@ export interface JsonTransformer<R, ParsedJson = unknown> {
}
const ParseJsonMetric = Metric.fromName("JsonParse");
-export const jsonModel = <MessageT>(
- jsonTransformer: JsonTransformer<MessageT>,
-): RequestFilter<MessageT> =>
-(r: ITraceable<PenguenoRequest, ServerTrace>) =>
- r.bimap(TraceUtil.withMetricTrace(ParseJsonMetric))
- .map((j) =>
- Either.fromFailableAsync<Error, MessageT>(j.get().json())
- .then((either) =>
- either.mapLeft((errReason) => {
- j.trace.addTrace(LogLevel.WARN).trace(`${errReason}`);
- return new PenguenoError(
- "seems to be invalid JSON (>//<) can you fix?",
- 400,
- );
- })
- )
- )
- .peek(
- TraceUtil.promiseify((traceableEither) =>
- traceableEither.get().mapBoth(
- () => traceableEither.trace.trace(ParseJsonMetric.failure),
- () => traceableEither.trace.trace(ParseJsonMetric.success),
- )
- ),
- )
- .map(
- TraceUtil.promiseify((traceableEitherJson) =>
- traceableEitherJson.get()
- .mapRight(traceableEitherJson.move)
- .flatMap(jsonTransformer)
- ),
- )
- .get();
+export const jsonModel =
+ <MessageT>(
+ jsonTransformer: JsonTransformer<MessageT>,
+ ): RequestFilter<MessageT> =>
+ (r: ITraceable<PenguenoRequest, ServerTrace>) =>
+ r
+ .bimap(TraceUtil.withMetricTrace(ParseJsonMetric))
+ .map((j) =>
+ Either.fromFailableAsync<Error, MessageT>(j.get().json()).then(
+ (either) =>
+ either.mapLeft((errReason) => {
+ j.trace.addTrace(LogLevel.WARN).trace(`${errReason}`);
+ return new PenguenoError(
+ "seems to be invalid JSON (>//<) can you fix?",
+ 400,
+ );
+ }),
+ ),
+ )
+ .peek(
+ TraceUtil.promiseify((traceableEither) =>
+ traceableEither.get().mapBoth(
+ () => traceableEither.trace.trace(ParseJsonMetric.failure),
+ () => traceableEither.trace.trace(ParseJsonMetric.success),
+ ),
+ ),
+ )
+ .map(
+ TraceUtil.promiseify((traceableEitherJson) =>
+ traceableEitherJson
+ .get()
+ .mapRight(traceableEitherJson.move)
+ .flatMap(jsonTransformer),
+ ),
+ )
+ .get();
diff --git a/u/server/filter/method.ts b/u/server/filter/method.ts
index 6b0419d..9901c6f 100644
--- a/u/server/filter/method.ts
+++ b/u/server/filter/method.ts
@@ -20,22 +20,24 @@ type HttpMethod =
| "TRACE"
| "PATCH";
-export const requireMethod = (
- methods: Array<HttpMethod>,
-): RequestFilter<HttpMethod> =>
-(req: ITraceable<PenguenoRequest, ServerTrace>) =>
- req.bimap(TraceUtil.withFunctionTrace(requireMethod))
- .move(Promise.resolve(req.get()))
- .map(TraceUtil.promiseify((t) => {
- const { method: _method } = t.get();
- const method = <HttpMethod> _method;
- if (!methods.includes(method)) {
- const msg = "that's not how you pet me (⋟﹏⋞)~";
- t.trace.addTrace(LogLevel.WARN).trace(msg);
- return Either.left<PenguenoError, HttpMethod>(
- new PenguenoError(msg, 405),
- );
- }
- return Either.right<PenguenoError, HttpMethod>(method);
- }))
- .get();
+export const requireMethod =
+ (methods: Array<HttpMethod>): RequestFilter<HttpMethod> =>
+ (req: ITraceable<PenguenoRequest, ServerTrace>) =>
+ req
+ .bimap(TraceUtil.withFunctionTrace(requireMethod))
+ .move(Promise.resolve(req.get()))
+ .map(
+ TraceUtil.promiseify((t) => {
+ const { method: _method } = t.get();
+ const method = <HttpMethod>_method;
+ if (!methods.includes(method)) {
+ const msg = "that's not how you pet me (⋟﹏⋞)~";
+ t.trace.addTrace(LogLevel.WARN).trace(msg);
+ return Either.left<PenguenoError, HttpMethod>(
+ new PenguenoError(msg, 405),
+ );
+ }
+ return Either.right<PenguenoError, HttpMethod>(method);
+ }),
+ )
+ .get();
diff --git a/u/server/filter/mod.ts b/u/server/filter/mod.ts
index bbf37df..3b247fc 100644
--- a/u/server/filter/mod.ts
+++ b/u/server/filter/mod.ts
@@ -13,11 +13,13 @@ export enum ErrorSource {
export class PenguenoError extends Error {
public readonly source: ErrorSource;
- constructor(message: string, public readonly status: number) {
+ constructor(
+ message: string,
+ public readonly status: number,
+ ) {
super(message);
- this.source = Math.floor(status / 100) === 4
- ? ErrorSource.USER
- : ErrorSource.SYSTEM;
+ this.source =
+ Math.floor(status / 100) === 4 ? ErrorSource.USER : ErrorSource.SYSTEM;
}
}
diff --git a/u/server/request.ts b/u/server/request.ts
index 7aa9917..480ee69 100644
--- a/u/server/request.ts
+++ b/u/server/request.ts
@@ -33,25 +33,16 @@ export class PenguenoRequest extends Request {
ServerResponseTime,
DeltaTime,
Hai: penguenoGreeting(),
- }).reduce((acc, [key, val]) => ({ ...acc, [key]: (val.toString()) }), {});
+ }).reduce((acc, [key, val]) => ({ ...acc, [key]: val.toString() }), {});
}
- public static from(
- request: Request,
- ): LogMetricTraceable<PenguenoRequest> {
+ public static from(request: Request): LogMetricTraceable<PenguenoRequest> {
const id = crypto.randomUUID();
const url = new URL(request.url);
const { pathname } = url;
const traceSupplier = () => `[${id} <- ${request.method}'d @ ${pathname}]`;
- return LogMetricTraceable
- .from(
- new PenguenoRequest(
- url,
- { ...request },
- id,
- new Date(),
- ),
- )
- .bimap((_request) => [_request.get(), traceSupplier]);
+ return LogMetricTraceable.from(
+ new PenguenoRequest(url, { ...request }, id, new Date()),
+ ).bimap((_request) => [_request.get(), traceSupplier]);
}
}
diff --git a/u/server/response.ts b/u/server/response.ts
index c21819a..9022fed 100644
--- a/u/server/response.ts
+++ b/u/server/response.ts
@@ -20,19 +20,19 @@ const getResponse = (
return {
...opts,
headers: {
- ...(req.baseResponseHeaders()),
- ...(opts?.headers),
- "Content-Type": (opts?.headers?.["Content-Type"] ?? "text/plain") +
- "; charset=utf-8",
+ ...req.baseResponseHeaders(),
+ ...opts?.headers,
+ "Content-Type":
+ (opts?.headers?.["Content-Type"] ?? "text/plain") + "; charset=utf-8",
},
};
};
const ResponseCodeMetrics = [1, 2, 3, 4, 5].map((x) =>
- Metric.fromName(`response.${x}xx`)
+ Metric.fromName(`response.${x}xx`),
);
export const getResponseMetric = (status: number) => {
- const index = (Math.floor(status / 100)) + 1;
+ const index = Math.floor(status / 100) + 1;
return ResponseCodeMetrics[index] ?? ResponseCodeMetrics[5 - 1];
};
@@ -67,7 +67,7 @@ export class JsonResponse extends PenguenoResponse {
super(
req,
JSON.stringify(
- e.fold((err, ok) => err ? ({ error: err! }) : ({ ok: ok! })),
+ e.fold((err, ok) => (err ? { error: err! } : { ok: ok! })),
),
optsWithJsonContentType,
);
@@ -76,7 +76,7 @@ export class JsonResponse extends PenguenoResponse {
super(
req,
JSON.stringify(
- (Math.floor(opts.status / 100) < 4) ? { ok: e } : { error: e },
+ Math.floor(opts.status / 100) < 4 ? { ok: e } : { error: e },
),
optsWithJsonContentType,
);