@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.
package/lib/src/http/index.d.mts
CHANGED
@@ -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
|
1190
|
-
tracing
|
1191
|
-
logging
|
1191
|
+
metrics?: boolean;
|
1192
|
+
tracing?: boolean;
|
1193
|
+
logging?: boolean;
|
1192
1194
|
};
|
1193
|
-
level:
|
1195
|
+
level: LevelWithSilentOrString;
|
1194
1196
|
};
|
1195
1197
|
|
1196
1198
|
declare function metricsDefinitions<T extends MetricsDefinition>(metrics: T): T;
|
package/lib/src/http/index.d.ts
CHANGED
@@ -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
|
1190
|
-
tracing
|
1191
|
-
logging
|
1191
|
+
metrics?: boolean;
|
1192
|
+
tracing?: boolean;
|
1193
|
+
logging?: boolean;
|
1192
1194
|
};
|
1193
|
-
level:
|
1195
|
+
level: LevelWithSilentOrString;
|
1194
1196
|
};
|
1195
1197
|
|
1196
1198
|
declare function metricsDefinitions<T extends MetricsDefinition>(metrics: T): T;
|
package/lib/src/http/index.js
CHANGED
@@ -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
|
-
|
916
|
-
responseMessage = generator;
|
933
|
+
sseEmitter: (generator) => {
|
934
|
+
responseMessage = generator();
|
917
935
|
}
|
918
936
|
};
|
919
937
|
let cursor = handlers.shift();
|