@forklaunch/core 0.8.3 → 0.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,5 @@
1
1
  import { AnySchemaValidator, UnboxedObjectSchema, IdiomaticSchema, Schema } from '@forklaunch/validator';
2
2
  import { Counter, Gauge, Histogram, UpDownCounter, ObservableCounter, ObservableGauge, ObservableUpDownCounter, Span } from '@opentelemetry/api';
3
- import * as pino from 'pino';
4
3
  import { LevelWithSilentOrString, LevelWithSilent, Logger } from 'pino';
5
4
  import { UnionToIntersection, MimeType, Prettify, ExclusiveRecord, RemoveTrailingSlash, MakePropertyOptionalIfChildrenOptional } from '@forklaunch/common';
6
5
  import { ParsedQs } from 'qs';
@@ -622,6 +621,9 @@ type ExpressLikeSchemaHandler<SV extends AnySchemaValidator, P extends ParamsObj
622
621
  */
623
622
  type ExpressLikeSchemaAuthMapper<SV extends AnySchemaValidator, P extends ParamsObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, BaseRequest> = ExpressLikeAuthMapper<SV, MapParamsSchema<SV, P>, MapReqBodySchema<SV, ReqBody>, MapReqQuerySchema<SV, ReqQuery>, MapReqHeadersSchema<SV, ReqHeaders>, BaseRequest>;
624
623
  type ExpressLikeAuthMapper<SV extends AnySchemaValidator, P extends ParamsDictionary, ReqBody extends Record<string, unknown>, ReqQuery extends ParsedQs, ReqHeaders extends Record<string, string>, BaseRequest> = (sub: string, req?: ResolvedForklaunchRequest<SV, P, ReqBody, ReqQuery, ReqHeaders, BaseRequest>) => Set<string> | Promise<Set<string>>;
624
+ type RemapFileBody<T> = T extends Record<string, unknown> ? {
625
+ [K in keyof T]: T[K] extends (name: string, type: string) => infer R ? R : T[K] extends Record<string, unknown> ? RemapFileBody<T[K]> : T[K];
626
+ } : T extends (name: string, type: string) => infer R ? R : T;
625
627
  /**
626
628
  * Represents a live type function for the SDK.
627
629
  *
@@ -638,7 +640,7 @@ type ExpressLikeAuthMapper<SV extends AnySchemaValidator, P extends ParamsDictio
638
640
  type LiveTypeFunction<SV extends AnySchemaValidator, Route extends string, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>> = (ParamsObject<SV> extends P ? unknown : {
639
641
  params: MapSchema<SV, P>;
640
642
  }) & (Body<SV> extends ReqBody ? unknown : {
641
- body: MapSchema<SV, ReqBody>;
643
+ body: RemapFileBody<MapSchema<SV, ReqBody>>;
642
644
  }) & (QueryObject<SV> extends ReqQuery ? unknown : {
643
645
  query: MapSchema<SV, ReqQuery>;
644
646
  }) & (HeadersObject<SV> extends ReqHeaders ? unknown : {
@@ -1186,11 +1188,11 @@ declare const ATTR_CORRELATION_ID = "correlation.id";
1186
1188
 
1187
1189
  declare function evaluateTelemetryOptions(telemetryOptions: TelemetryOptions): {
1188
1190
  enabled: {
1189
- metrics: boolean | undefined;
1190
- tracing: boolean | undefined;
1191
- logging: boolean | undefined;
1191
+ metrics?: boolean;
1192
+ tracing?: boolean;
1193
+ logging?: boolean;
1192
1194
  };
1193
- level: pino.default.LevelWithSilentOrString;
1195
+ level: LevelWithSilentOrString;
1194
1196
  };
1195
1197
 
1196
1198
  declare function metricsDefinitions<T extends MetricsDefinition>(metrics: T): T;
@@ -1,6 +1,5 @@
1
1
  import { AnySchemaValidator, UnboxedObjectSchema, IdiomaticSchema, Schema } from '@forklaunch/validator';
2
2
  import { Counter, Gauge, Histogram, UpDownCounter, ObservableCounter, ObservableGauge, ObservableUpDownCounter, Span } from '@opentelemetry/api';
3
- import * as pino from 'pino';
4
3
  import { LevelWithSilentOrString, LevelWithSilent, Logger } from 'pino';
5
4
  import { UnionToIntersection, MimeType, Prettify, ExclusiveRecord, RemoveTrailingSlash, MakePropertyOptionalIfChildrenOptional } from '@forklaunch/common';
6
5
  import { ParsedQs } from 'qs';
@@ -622,6 +621,9 @@ type ExpressLikeSchemaHandler<SV extends AnySchemaValidator, P extends ParamsObj
622
621
  */
623
622
  type ExpressLikeSchemaAuthMapper<SV extends AnySchemaValidator, P extends ParamsObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, BaseRequest> = ExpressLikeAuthMapper<SV, MapParamsSchema<SV, P>, MapReqBodySchema<SV, ReqBody>, MapReqQuerySchema<SV, ReqQuery>, MapReqHeadersSchema<SV, ReqHeaders>, BaseRequest>;
624
623
  type ExpressLikeAuthMapper<SV extends AnySchemaValidator, P extends ParamsDictionary, ReqBody extends Record<string, unknown>, ReqQuery extends ParsedQs, ReqHeaders extends Record<string, string>, BaseRequest> = (sub: string, req?: ResolvedForklaunchRequest<SV, P, ReqBody, ReqQuery, ReqHeaders, BaseRequest>) => Set<string> | Promise<Set<string>>;
624
+ type RemapFileBody<T> = T extends Record<string, unknown> ? {
625
+ [K in keyof T]: T[K] extends (name: string, type: string) => infer R ? R : T[K] extends Record<string, unknown> ? RemapFileBody<T[K]> : T[K];
626
+ } : T extends (name: string, type: string) => infer R ? R : T;
625
627
  /**
626
628
  * Represents a live type function for the SDK.
627
629
  *
@@ -638,7 +640,7 @@ type ExpressLikeAuthMapper<SV extends AnySchemaValidator, P extends ParamsDictio
638
640
  type LiveTypeFunction<SV extends AnySchemaValidator, Route extends string, P extends ParamsObject<SV>, ResBodyMap extends ResponsesObject<SV>, ReqBody extends Body<SV>, ReqQuery extends QueryObject<SV>, ReqHeaders extends HeadersObject<SV>, ResHeaders extends HeadersObject<SV>> = (ParamsObject<SV> extends P ? unknown : {
639
641
  params: MapSchema<SV, P>;
640
642
  }) & (Body<SV> extends ReqBody ? unknown : {
641
- body: MapSchema<SV, ReqBody>;
643
+ body: RemapFileBody<MapSchema<SV, ReqBody>>;
642
644
  }) & (QueryObject<SV> extends ReqQuery ? unknown : {
643
645
  query: MapSchema<SV, ReqQuery>;
644
646
  }) & (HeadersObject<SV> extends ReqHeaders ? unknown : {
@@ -1186,11 +1188,11 @@ declare const ATTR_CORRELATION_ID = "correlation.id";
1186
1188
 
1187
1189
  declare function evaluateTelemetryOptions(telemetryOptions: TelemetryOptions): {
1188
1190
  enabled: {
1189
- metrics: boolean | undefined;
1190
- tracing: boolean | undefined;
1191
- logging: boolean | undefined;
1191
+ metrics?: boolean;
1192
+ tracing?: boolean;
1193
+ logging?: boolean;
1192
1194
  };
1193
- level: pino.default.LevelWithSilentOrString;
1195
+ level: LevelWithSilentOrString;
1194
1196
  };
1195
1197
 
1196
1198
  declare function metricsDefinitions<T extends MetricsDefinition>(metrics: T): T;
@@ -895,6 +895,24 @@ var ForklaunchExpressLikeRouter = class {
895
895
  body: discriminateBody(this.schemaValidator, request?.body)?.schema ?? {},
896
896
  path: route
897
897
  };
898
+ function remapFileBody(body) {
899
+ if (body instanceof File) {
900
+ return (name, contentType) => {
901
+ return new File([body], name, { type: contentType });
902
+ };
903
+ }
904
+ Object.entries(body).forEach(([key, value]) => {
905
+ if (value instanceof File) {
906
+ body[key] = (name, contentType) => {
907
+ return new File([value], name, { type: contentType });
908
+ };
909
+ } else if (typeof value === "object") {
910
+ body[key] = remapFileBody(value);
911
+ }
912
+ });
913
+ return body;
914
+ }
915
+ req.body = remapFileBody(req.body);
898
916
  const res = {
899
917
  status: (code) => {
900
918
  statusCode = code;
@@ -912,8 +930,8 @@ var ForklaunchExpressLikeRouter = class {
912
930
  setHeader: (key, value) => {
913
931
  responseHeaders[key] = value;
914
932
  },
915
- sseEmiter: (generator) => {
916
- responseMessage = generator;
933
+ sseEmitter: (generator) => {
934
+ responseMessage = generator();
917
935
  }
918
936
  };
919
937
  let cursor = handlers.shift();