@forklaunch/core 0.17.3 → 0.18.1
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/{contractDetails.types-BKkaBgAN.d.mts → apiDefinition.types-DnUkFmfT.d.mts} +905 -876
- package/lib/{contractDetails.types-BKkaBgAN.d.ts → apiDefinition.types-DnUkFmfT.d.ts} +905 -876
- package/lib/http/index.d.mts +2 -2
- package/lib/http/index.d.ts +2 -2
- package/lib/http/index.js +46 -0
- package/lib/http/index.js.map +1 -1
- package/lib/http/index.mjs +46 -0
- package/lib/http/index.mjs.map +1 -1
- package/lib/ws/index.d.mts +2 -2
- package/lib/ws/index.d.ts +2 -2
- package/package.json +12 -12
package/lib/http/index.d.mts
CHANGED
|
@@ -3,8 +3,8 @@ export { ParsedQs } from 'qs';
|
|
|
3
3
|
import { Prettify, SanitizePathSlashes, PrettyCamelCase, TypeSafeFunction, UnionToIntersection, EmptyObject } from '@forklaunch/common';
|
|
4
4
|
import { AnySchemaValidator } from '@forklaunch/validator';
|
|
5
5
|
import { ServerOptions, IncomingMessage, ServerResponse } from 'node:http';
|
|
6
|
-
import { M as Method, P as PathParamHttpContractDetails, H as HttpContractDetails, E as ExpressLikeRouterOptions, a as SessionObject, b as ParamsObject, R as ResponsesObject, B as Body, Q as QueryObject, c as HeadersObject, V as VersionSchema, d as SchemaAuthMethods, e as ExpressLikeSchemaHandler, f as ResolvedSessionObject, C as ContractDetails, g as PathMatch, L as LiveTypeFunction, h as LiveSdkFunction, A as AuthMethodsBase, O as OpenTelemetryCollector, i as MetricsDefinition, j as ExpressLikeApplicationOptions, k as ParamsDictionary, l as VersionedRequests, m as AuthMethods, D as DecodeResource, n as BasicAuthMethods, F as ForklaunchRequest, o as MiddlewareContractDetails, p as ExpressLikeSchemaAuthMapper, q as ForklaunchNextFunction, r as ForklaunchResponse, s as ForklaunchResHeaders, t as ForklaunchStatusResponse, u as ForklaunchSendableData, T as TelemetryOptions, v as LoggerMeta, w as LogFn } from '../
|
|
7
|
-
export { x as BodyObject, y as
|
|
6
|
+
import { M as Method, P as PathParamHttpContractDetails, H as HttpContractDetails, E as ExpressLikeRouterOptions, a as SessionObject, b as ParamsObject, R as ResponsesObject, B as Body, Q as QueryObject, c as HeadersObject, V as VersionSchema, d as SchemaAuthMethods, e as ExpressLikeSchemaHandler, f as ResolvedSessionObject, C as ContractDetails, g as PathMatch, L as LiveTypeFunction, h as LiveSdkFunction, A as AuthMethodsBase, O as OpenTelemetryCollector, i as MetricsDefinition, j as ExpressLikeApplicationOptions, k as ParamsDictionary, l as VersionedRequests, m as AuthMethods, D as DecodeResource, n as BasicAuthMethods, F as ForklaunchRequest, o as MiddlewareContractDetails, p as ExpressLikeSchemaAuthMapper, q as ForklaunchNextFunction, r as ForklaunchResponse, s as ForklaunchResHeaders, t as ForklaunchStatusResponse, u as ForklaunchSendableData, T as TelemetryOptions, v as LoggerMeta, w as LogFn } from '../apiDefinition.types-DnUkFmfT.mjs';
|
|
7
|
+
export { x as BodyObject, y as DefaultSubscriptionData, z as DocsConfiguration, G as ErrorContainer, I as ExpressLikeAuthMapper, J as ExpressLikeGlobalAuthOptions, K as ExpressLikeHandler, N as ExpressLikeSchemaGlobalAuthOptions, U as ExtractBody, W as ExtractContentType, X as ExtractResponseBody, Y as ExtractedParamsObject, Z as FileBody, _ as ForklaunchBaseRequest, $ as ForklaunchResErrors, a0 as HmacMethods, a1 as HttpMethod, a2 as JsonBody, a3 as JwtAuthMethods, a4 as LiveTypeFunctionRequestInit, a5 as MapParamsSchema, a6 as MapReqBodySchema, a7 as MapReqHeadersSchema, a8 as MapReqQuerySchema, a9 as MapResBodyMapSchema, aa as MapResHeadersSchema, ab as MapSchema, ac as MapSessionSchema, ad as MapVersionedReqsSchema, ae as MapVersionedRespsSchema, af as MetricType, ag as MultipartForm, ah as NumberOnlyObject, ai as PathParamMethod, aj as RawTypedResponseBody, ak as RequestContext, al as ResolvedForklaunchAuthRequest, am as ResolvedForklaunchRequest, an as ResolvedForklaunchResponse, ao as ResponseBody, ap as ResponseCompiledSchema, aq as ResponseShape, ar as ServerSentEventBody, S as StringOnlyObject, as as TextBody, at as TypedBody, au as TypedRequestBody, av as TypedResponseBody, aw as UnknownBody, ax as UnknownResponseBody, ay as UrlEncodedForm, az as VersionedResponses, aA as httpRequestsTotalCounter, aB as httpServerDurationHistogram } from '../apiDefinition.types-DnUkFmfT.mjs';
|
|
8
8
|
import { JWTPayload, JWK } from 'jose';
|
|
9
9
|
import { ZodSchemaValidator } from '@forklaunch/validator/zod';
|
|
10
10
|
import { FastMCP } from 'fastmcp';
|
package/lib/http/index.d.ts
CHANGED
|
@@ -3,8 +3,8 @@ export { ParsedQs } from 'qs';
|
|
|
3
3
|
import { Prettify, SanitizePathSlashes, PrettyCamelCase, TypeSafeFunction, UnionToIntersection, EmptyObject } from '@forklaunch/common';
|
|
4
4
|
import { AnySchemaValidator } from '@forklaunch/validator';
|
|
5
5
|
import { ServerOptions, IncomingMessage, ServerResponse } from 'node:http';
|
|
6
|
-
import { M as Method, P as PathParamHttpContractDetails, H as HttpContractDetails, E as ExpressLikeRouterOptions, a as SessionObject, b as ParamsObject, R as ResponsesObject, B as Body, Q as QueryObject, c as HeadersObject, V as VersionSchema, d as SchemaAuthMethods, e as ExpressLikeSchemaHandler, f as ResolvedSessionObject, C as ContractDetails, g as PathMatch, L as LiveTypeFunction, h as LiveSdkFunction, A as AuthMethodsBase, O as OpenTelemetryCollector, i as MetricsDefinition, j as ExpressLikeApplicationOptions, k as ParamsDictionary, l as VersionedRequests, m as AuthMethods, D as DecodeResource, n as BasicAuthMethods, F as ForklaunchRequest, o as MiddlewareContractDetails, p as ExpressLikeSchemaAuthMapper, q as ForklaunchNextFunction, r as ForklaunchResponse, s as ForklaunchResHeaders, t as ForklaunchStatusResponse, u as ForklaunchSendableData, T as TelemetryOptions, v as LoggerMeta, w as LogFn } from '../
|
|
7
|
-
export { x as BodyObject, y as
|
|
6
|
+
import { M as Method, P as PathParamHttpContractDetails, H as HttpContractDetails, E as ExpressLikeRouterOptions, a as SessionObject, b as ParamsObject, R as ResponsesObject, B as Body, Q as QueryObject, c as HeadersObject, V as VersionSchema, d as SchemaAuthMethods, e as ExpressLikeSchemaHandler, f as ResolvedSessionObject, C as ContractDetails, g as PathMatch, L as LiveTypeFunction, h as LiveSdkFunction, A as AuthMethodsBase, O as OpenTelemetryCollector, i as MetricsDefinition, j as ExpressLikeApplicationOptions, k as ParamsDictionary, l as VersionedRequests, m as AuthMethods, D as DecodeResource, n as BasicAuthMethods, F as ForklaunchRequest, o as MiddlewareContractDetails, p as ExpressLikeSchemaAuthMapper, q as ForklaunchNextFunction, r as ForklaunchResponse, s as ForklaunchResHeaders, t as ForklaunchStatusResponse, u as ForklaunchSendableData, T as TelemetryOptions, v as LoggerMeta, w as LogFn } from '../apiDefinition.types-DnUkFmfT.js';
|
|
7
|
+
export { x as BodyObject, y as DefaultSubscriptionData, z as DocsConfiguration, G as ErrorContainer, I as ExpressLikeAuthMapper, J as ExpressLikeGlobalAuthOptions, K as ExpressLikeHandler, N as ExpressLikeSchemaGlobalAuthOptions, U as ExtractBody, W as ExtractContentType, X as ExtractResponseBody, Y as ExtractedParamsObject, Z as FileBody, _ as ForklaunchBaseRequest, $ as ForklaunchResErrors, a0 as HmacMethods, a1 as HttpMethod, a2 as JsonBody, a3 as JwtAuthMethods, a4 as LiveTypeFunctionRequestInit, a5 as MapParamsSchema, a6 as MapReqBodySchema, a7 as MapReqHeadersSchema, a8 as MapReqQuerySchema, a9 as MapResBodyMapSchema, aa as MapResHeadersSchema, ab as MapSchema, ac as MapSessionSchema, ad as MapVersionedReqsSchema, ae as MapVersionedRespsSchema, af as MetricType, ag as MultipartForm, ah as NumberOnlyObject, ai as PathParamMethod, aj as RawTypedResponseBody, ak as RequestContext, al as ResolvedForklaunchAuthRequest, am as ResolvedForklaunchRequest, an as ResolvedForklaunchResponse, ao as ResponseBody, ap as ResponseCompiledSchema, aq as ResponseShape, ar as ServerSentEventBody, S as StringOnlyObject, as as TextBody, at as TypedBody, au as TypedRequestBody, av as TypedResponseBody, aw as UnknownBody, ax as UnknownResponseBody, ay as UrlEncodedForm, az as VersionedResponses, aA as httpRequestsTotalCounter, aB as httpServerDurationHistogram } from '../apiDefinition.types-DnUkFmfT.js';
|
|
8
8
|
import { JWTPayload, JWK } from 'jose';
|
|
9
9
|
import { ZodSchemaValidator } from '@forklaunch/validator/zod';
|
|
10
10
|
import { FastMCP } from 'fastmcp';
|
package/lib/http/index.js
CHANGED
|
@@ -502,6 +502,11 @@ async function discriminateAuthMethod(auth, openTelemetryCollector) {
|
|
|
502
502
|
return authMethod;
|
|
503
503
|
}
|
|
504
504
|
|
|
505
|
+
// src/http/guards/hasFeatureChecks.ts
|
|
506
|
+
function hasFeatureChecks(maybeFeatureAuth) {
|
|
507
|
+
return typeof maybeFeatureAuth === "object" && maybeFeatureAuth !== null && "requiredFeatures" in maybeFeatureAuth && Array.isArray(maybeFeatureAuth.requiredFeatures) && maybeFeatureAuth.requiredFeatures.length > 0;
|
|
508
|
+
}
|
|
509
|
+
|
|
505
510
|
// src/http/guards/hasPermissionChecks.ts
|
|
506
511
|
function hasPermissionChecks(maybePermissionedAuth) {
|
|
507
512
|
return typeof maybePermissionedAuth === "object" && maybePermissionedAuth !== null && ("allowedPermissions" in maybePermissionedAuth || "forbiddenPermissions" in maybePermissionedAuth);
|
|
@@ -517,6 +522,11 @@ function hasScopeChecks(maybePermissionedAuth) {
|
|
|
517
522
|
return typeof maybePermissionedAuth === "object" && maybePermissionedAuth !== null && "requiredScope" in maybePermissionedAuth && maybePermissionedAuth.requiredScope != null;
|
|
518
523
|
}
|
|
519
524
|
|
|
525
|
+
// src/http/guards/hasSubscriptionChecks.ts
|
|
526
|
+
function hasSubscriptionChecks(maybeSubscriptionAuth) {
|
|
527
|
+
return typeof maybeSubscriptionAuth === "object" && maybeSubscriptionAuth !== null && "requireActiveSubscription" in maybeSubscriptionAuth && maybeSubscriptionAuth.requireActiveSubscription === true;
|
|
528
|
+
}
|
|
529
|
+
|
|
520
530
|
// src/http/telemetry/pinoLogger.ts
|
|
521
531
|
var import_common5 = require("@forklaunch/common");
|
|
522
532
|
var import_api2 = require("@opentelemetry/api");
|
|
@@ -699,6 +709,14 @@ var invalidAuthorizationTokenRoles = [
|
|
|
699
709
|
403,
|
|
700
710
|
"Invalid Authorization roles."
|
|
701
711
|
];
|
|
712
|
+
var invalidAuthorizationTokenFeatures = [
|
|
713
|
+
403,
|
|
714
|
+
"Required features not available."
|
|
715
|
+
];
|
|
716
|
+
var invalidAuthorizationSubscription = [
|
|
717
|
+
403,
|
|
718
|
+
"Active subscription required."
|
|
719
|
+
];
|
|
702
720
|
var invalidAuthorizationToken = [
|
|
703
721
|
403,
|
|
704
722
|
"Invalid Authorization token."
|
|
@@ -906,6 +924,34 @@ async function checkAuthorizationToken(req, authorizationMethod, authorizationTo
|
|
|
906
924
|
} else {
|
|
907
925
|
return invalidAuthorizationMethod;
|
|
908
926
|
}
|
|
927
|
+
if (hasSubscriptionChecks(collapsedAuthorizationMethod)) {
|
|
928
|
+
if (!collapsedAuthorizationMethod.surfaceSubscription) {
|
|
929
|
+
return [500, "No subscription surfacing function provided."];
|
|
930
|
+
}
|
|
931
|
+
const subscription = await collapsedAuthorizationMethod.surfaceSubscription(
|
|
932
|
+
sessionPayload,
|
|
933
|
+
req
|
|
934
|
+
);
|
|
935
|
+
if (!subscription) {
|
|
936
|
+
return invalidAuthorizationSubscription;
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
if (hasFeatureChecks(collapsedAuthorizationMethod)) {
|
|
940
|
+
if (!collapsedAuthorizationMethod.surfaceFeatures) {
|
|
941
|
+
return [500, "No features surfacing function provided."];
|
|
942
|
+
}
|
|
943
|
+
const availableFeatures = await collapsedAuthorizationMethod.surfaceFeatures(
|
|
944
|
+
sessionPayload,
|
|
945
|
+
req
|
|
946
|
+
);
|
|
947
|
+
const requiredFeatures = collapsedAuthorizationMethod.requiredFeatures ?? [];
|
|
948
|
+
const missingFeatures = requiredFeatures.filter(
|
|
949
|
+
(feature) => !availableFeatures.has(feature)
|
|
950
|
+
);
|
|
951
|
+
if (missingFeatures.length > 0) {
|
|
952
|
+
return invalidAuthorizationTokenFeatures;
|
|
953
|
+
}
|
|
954
|
+
}
|
|
909
955
|
}
|
|
910
956
|
async function parseRequestAuth(req, res, next) {
|
|
911
957
|
const auth = req.contractDetails.auth;
|