@mionjs/client 0.8.0-alpha.0
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/.dist/cjs/_virtual/jit-fns.cjs +315 -0
- package/.dist/cjs/_virtual/jit-fns.cjs.map +1 -0
- package/.dist/cjs/_virtual/pure-fns.cjs +56 -0
- package/.dist/cjs/_virtual/pure-fns.cjs.map +1 -0
- package/.dist/cjs/_virtual/router-cache.cjs +2 -0
- package/.dist/cjs/_virtual/router-cache.cjs.map +1 -0
- package/.dist/cjs/index.cjs +2 -0
- package/.dist/cjs/index.cjs.map +1 -0
- package/.dist/cjs/index.d.ts +11 -0
- package/.dist/cjs/package.json +1 -0
- package/.dist/cjs/src/aot/loadClientAOTCaches.cjs +2 -0
- package/.dist/cjs/src/aot/loadClientAOTCaches.cjs.map +1 -0
- package/.dist/cjs/src/aot/loadClientAOTCaches.d.ts +8 -0
- package/.dist/cjs/src/client.cjs +2 -0
- package/.dist/cjs/src/client.cjs.map +1 -0
- package/.dist/cjs/src/client.d.ts +28 -0
- package/.dist/cjs/src/clientMethodsMetadata.cjs +2 -0
- package/.dist/cjs/src/clientMethodsMetadata.cjs.map +1 -0
- package/.dist/cjs/src/clientMethodsMetadata.d.ts +10 -0
- package/.dist/cjs/src/constants.cjs +2 -0
- package/.dist/cjs/src/constants.cjs.map +1 -0
- package/.dist/cjs/src/constants.d.ts +6 -0
- package/.dist/cjs/src/handlersRegistry.cjs +2 -0
- package/.dist/cjs/src/handlersRegistry.cjs.map +1 -0
- package/.dist/cjs/src/handlersRegistry.d.ts +18 -0
- package/.dist/cjs/src/request.cjs +2 -0
- package/.dist/cjs/src/request.cjs.map +1 -0
- package/.dist/cjs/src/request.d.ts +30 -0
- package/.dist/cjs/src/routesFlow.cjs +2 -0
- package/.dist/cjs/src/routesFlow.cjs.map +1 -0
- package/.dist/cjs/src/routesFlow.d.ts +6 -0
- package/.dist/cjs/src/serializer.cjs +2 -0
- package/.dist/cjs/src/serializer.cjs.map +1 -0
- package/.dist/cjs/src/serializer.d.ts +13 -0
- package/.dist/cjs/src/storage.cjs +2 -0
- package/.dist/cjs/src/storage.cjs.map +1 -0
- package/.dist/cjs/src/storage.d.ts +11 -0
- package/.dist/cjs/src/subRequest.cjs +2 -0
- package/.dist/cjs/src/subRequest.cjs.map +1 -0
- package/.dist/cjs/src/subRequest.d.ts +23 -0
- package/.dist/cjs/src/testUtils.cjs +2 -0
- package/.dist/cjs/src/testUtils.cjs.map +1 -0
- package/.dist/cjs/src/testUtils.d.ts +1 -0
- package/.dist/cjs/src/typedEvent.cjs +2 -0
- package/.dist/cjs/src/typedEvent.cjs.map +1 -0
- package/.dist/cjs/src/typedEvent.d.ts +17 -0
- package/.dist/cjs/src/types.cjs +2 -0
- package/.dist/cjs/src/types.cjs.map +1 -0
- package/.dist/cjs/src/types.d.ts +152 -0
- package/.dist/cjs/src/validation.cjs +2 -0
- package/.dist/cjs/src/validation.cjs.map +1 -0
- package/.dist/cjs/src/validation.d.ts +4 -0
- package/.dist/esm/_virtual/jit-fns.js +1391 -0
- package/.dist/esm/_virtual/jit-fns.js.map +1 -0
- package/.dist/esm/_virtual/pure-fns.js +109 -0
- package/.dist/esm/_virtual/pure-fns.js.map +1 -0
- package/.dist/esm/_virtual/router-cache.js +5 -0
- package/.dist/esm/_virtual/router-cache.js.map +1 -0
- package/.dist/esm/index.d.ts +11 -0
- package/.dist/esm/index.js +80 -0
- package/.dist/esm/index.js.map +1 -0
- package/.dist/esm/src/aot/loadClientAOTCaches.d.ts +8 -0
- package/.dist/esm/src/aot/loadClientAOTCaches.js +19 -0
- package/.dist/esm/src/aot/loadClientAOTCaches.js.map +1 -0
- package/.dist/esm/src/client.d.ts +28 -0
- package/.dist/esm/src/client.js +185 -0
- package/.dist/esm/src/client.js.map +1 -0
- package/.dist/esm/src/clientMethodsMetadata.d.ts +10 -0
- package/.dist/esm/src/clientMethodsMetadata.js +162 -0
- package/.dist/esm/src/clientMethodsMetadata.js.map +1 -0
- package/.dist/esm/src/constants.d.ts +6 -0
- package/.dist/esm/src/constants.js +25 -0
- package/.dist/esm/src/constants.js.map +1 -0
- package/.dist/esm/src/handlersRegistry.d.ts +18 -0
- package/.dist/esm/src/handlersRegistry.js +70 -0
- package/.dist/esm/src/handlersRegistry.js.map +1 -0
- package/.dist/esm/src/request.d.ts +30 -0
- package/.dist/esm/src/request.js +289 -0
- package/.dist/esm/src/request.js.map +1 -0
- package/.dist/esm/src/routesFlow.d.ts +6 -0
- package/.dist/esm/src/routesFlow.js +61 -0
- package/.dist/esm/src/routesFlow.js.map +1 -0
- package/.dist/esm/src/serializer.d.ts +13 -0
- package/.dist/esm/src/serializer.js +139 -0
- package/.dist/esm/src/serializer.js.map +1 -0
- package/.dist/esm/src/storage.d.ts +11 -0
- package/.dist/esm/src/storage.js +48 -0
- package/.dist/esm/src/storage.js.map +1 -0
- package/.dist/esm/src/subRequest.d.ts +23 -0
- package/.dist/esm/src/subRequest.js +73 -0
- package/.dist/esm/src/subRequest.js.map +1 -0
- package/.dist/esm/src/testUtils.d.ts +1 -0
- package/.dist/esm/src/testUtils.js +48 -0
- package/.dist/esm/src/testUtils.js.map +1 -0
- package/.dist/esm/src/typedEvent.d.ts +17 -0
- package/.dist/esm/src/typedEvent.js +41 -0
- package/.dist/esm/src/typedEvent.js.map +1 -0
- package/.dist/esm/src/types.d.ts +152 -0
- package/.dist/esm/src/types.js +42 -0
- package/.dist/esm/src/types.js.map +1 -0
- package/.dist/esm/src/validation.d.ts +4 -0
- package/.dist/esm/src/validation.js +57 -0
- package/.dist/esm/src/validation.js.map +1 -0
- package/LICENSE +21 -0
- package/README.md +34 -0
- package/package.json +74 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { RpcError, CoreRouterOptions, Prettify, RunTypeError, SerializerMode, ValidationError } from '@mionjs/core';
|
|
2
|
+
import { PublicHeadersFn, PublicMiddleFn, RemoteApi, PublicRoute } from '@mionjs/router';
|
|
3
|
+
import { TypedEvent } from './typedEvent.ts';
|
|
4
|
+
export type Result<RouteSuccess, RouteError, MiddleFnsResults extends Record<string, unknown> = Record<string, unknown>, MiddleFnsErrors extends Record<string, RpcError<string, unknown>> = Record<string, RpcError<string, unknown>>> = [RouteSuccess | undefined, RouteError | undefined, MiddleFnsResults | undefined, MiddleFnsErrors | undefined];
|
|
5
|
+
export type MiddleFnSuccess<H> = H extends HSubRequest<infer PH> ? HandlerSuccessResponse<PH> : never;
|
|
6
|
+
export type MiddleFnError<H> = H extends HSubRequest<infer PH> ? Simplify<HandlerErrors<PH>> : never;
|
|
7
|
+
export type CallWithMiddleFnsResult<RouteSuccess, RouteError, MiddleFns extends Record<string, HSubRequest<any>>> = [
|
|
8
|
+
RouteSuccess | undefined,
|
|
9
|
+
RouteError | ValidationError | undefined,
|
|
10
|
+
{
|
|
11
|
+
[K in keyof MiddleFns]?: MiddleFnSuccess<MiddleFns[K]>;
|
|
12
|
+
} | undefined,
|
|
13
|
+
{
|
|
14
|
+
[K in keyof MiddleFns]?: MiddleFnError<MiddleFns[K]>;
|
|
15
|
+
} | undefined
|
|
16
|
+
];
|
|
17
|
+
export type WorkflowResult<Routes extends RSubRequest<any>[], MiddleFns extends Record<string, HSubRequest<any>> = Record<string, HSubRequest<any>>> = [
|
|
18
|
+
WorkflowRouteResults<Routes>,
|
|
19
|
+
WorkflowRouteErrors<Routes>,
|
|
20
|
+
{
|
|
21
|
+
[K in keyof MiddleFns]?: MiddleFnSuccess<MiddleFns[K]>;
|
|
22
|
+
} | undefined,
|
|
23
|
+
{
|
|
24
|
+
[K in keyof MiddleFns]?: MiddleFnError<MiddleFns[K]>;
|
|
25
|
+
} | undefined
|
|
26
|
+
];
|
|
27
|
+
export type WorkflowRouteResults<Routes extends RSubRequest<any>[]> = {
|
|
28
|
+
[K in keyof Routes]: Routes[K] extends RSubRequest<infer PH> ? HandlerSuccessResponse<PH> | undefined : never;
|
|
29
|
+
};
|
|
30
|
+
export type WorkflowRouteErrors<Routes extends RSubRequest<any>[]> = {
|
|
31
|
+
[K in keyof Routes]: Routes[K] extends RSubRequest<infer PH> ? Simplify<HandlerErrors<PH>> | undefined : never;
|
|
32
|
+
};
|
|
33
|
+
export interface ClientOptions extends CoreRouterOptions {
|
|
34
|
+
baseURL: string;
|
|
35
|
+
basePath: string;
|
|
36
|
+
suffix: string;
|
|
37
|
+
autoGenerateErrorId: boolean;
|
|
38
|
+
fetchOptions: RequestInit;
|
|
39
|
+
validateParams: boolean;
|
|
40
|
+
serializer: SerializerMode;
|
|
41
|
+
}
|
|
42
|
+
type PublicHandler = (...args: any[]) => Promise<any>;
|
|
43
|
+
type PublicMethod = PublicRoute | PublicMiddleFn | PublicHeadersFn;
|
|
44
|
+
type ExtractHandler<PM extends PublicMethod> = PM extends {
|
|
45
|
+
handler: infer H;
|
|
46
|
+
} ? H : never;
|
|
47
|
+
export type InitClientOptions = Partial<ClientOptions> & {
|
|
48
|
+
baseURL: string;
|
|
49
|
+
};
|
|
50
|
+
export type RequestHeaders = {
|
|
51
|
+
[key: string]: string;
|
|
52
|
+
};
|
|
53
|
+
export type RequestBody = {
|
|
54
|
+
[key: string]: any[];
|
|
55
|
+
};
|
|
56
|
+
export type RouteParamsType<PM extends PublicMethod> = Parameters<ExtractHandler<PM>>;
|
|
57
|
+
export type RouteParamType<PM extends PublicMethod, Index extends number> = Parameters<ExtractHandler<PM>>[Index];
|
|
58
|
+
export type HeadersParamsType<PM extends PublicHeadersFn> = Parameters<ExtractHandler<PM>>[0];
|
|
59
|
+
export type RouteReturnType<PM extends PublicMethod> = HandlerSuccessResponse<ExtractHandler<PM>>;
|
|
60
|
+
export type HandlerResponse<PH extends PublicHandler> = Awaited<ReturnType<PH>>;
|
|
61
|
+
export type HandlerSuccessResponse<PH extends PublicHandler> = Exclude<HandlerResponse<PH>, RpcError<string>>;
|
|
62
|
+
export type HandlerFailResponse<PH extends PublicHandler> = Extract<HandlerResponse<PH>, RpcError<string>>;
|
|
63
|
+
export type SuccessResponse<MR extends SubRequest<any>> = Required<MR>['resolvedValue'];
|
|
64
|
+
export type SuccessResponses<List extends SubRequest<any>[]> = {
|
|
65
|
+
[P in keyof List]: SuccessResponse<List[P]>;
|
|
66
|
+
};
|
|
67
|
+
export type FailResponse<MR extends SubRequest<any>> = Required<MR>['error'];
|
|
68
|
+
export type FailResponses<List extends SubRequest<any>[]> = {
|
|
69
|
+
[P in keyof List]: FailResponse<List[P]>;
|
|
70
|
+
};
|
|
71
|
+
export type RequestErrors = Map<string, RpcError<string>>;
|
|
72
|
+
export type ErrorHandler<E extends RpcError<string, any>> = (error: E) => void;
|
|
73
|
+
export type UnknownErrorHandler = (error: RpcError<string, any>) => void;
|
|
74
|
+
export type SuccessHandler<S> = (result: S) => void;
|
|
75
|
+
type Simplify<T> = T extends any ? T : never;
|
|
76
|
+
export type HandlerErrors<PH extends (...args: any[]) => Promise<any>> = Simplify<Extract<HandlerResponse<PH>, RpcError<string, any>> | ValidationError>;
|
|
77
|
+
export interface SubRequest<PH extends PublicHandler> {
|
|
78
|
+
pointer: string[];
|
|
79
|
+
id: string;
|
|
80
|
+
isResolved: boolean;
|
|
81
|
+
params: Parameters<PH>;
|
|
82
|
+
resolvedValue?: HandlerSuccessResponse<PH>;
|
|
83
|
+
error?: HandlerFailResponse<PH>;
|
|
84
|
+
serializedParams?: any[];
|
|
85
|
+
}
|
|
86
|
+
export interface RSubRequest<PH extends PublicHandler> extends SubRequest<PH> {
|
|
87
|
+
typeErrors: () => Promise<RunTypeError[]>;
|
|
88
|
+
call: () => Promise<Result<HandlerSuccessResponse<PH>, Simplify<HandlerErrors<PH>>, Record<string, unknown>, Record<string, RpcError<string, unknown> | ValidationError>>>;
|
|
89
|
+
callWithMiddleFns: <H extends Record<string, HSubRequest<any>>>(middleFns: H) => Promise<CallWithMiddleFnsResult<HandlerSuccessResponse<PH>, Simplify<HandlerErrors<PH>>, H>>;
|
|
90
|
+
callWithWorkflow: <OtherRoutes extends RSubRequest<any>[], H extends Record<string, HSubRequest<any>>>(otherRoutes: [...OtherRoutes], middleFns?: H) => Promise<WorkflowResult<any, H>>;
|
|
91
|
+
}
|
|
92
|
+
export interface HSubRequest<PH extends PublicHandler> extends SubRequest<PH> {
|
|
93
|
+
typeErrors: () => Promise<RunTypeError[]>;
|
|
94
|
+
prefill: () => TypedEvent<HandlerSuccessResponse<PH>, Simplify<HandlerErrors<PH>>>;
|
|
95
|
+
removePrefill: () => Promise<void>;
|
|
96
|
+
}
|
|
97
|
+
export type NonClientRoute = never | PublicMiddleFn | PublicHeadersFn;
|
|
98
|
+
export type ClientRoutes<RA extends RemoteApi> = Prettify<{
|
|
99
|
+
[Property in keyof RA as RA[Property] extends NonClientRoute ? never : Property]: RA[Property] extends PublicRoute ? (...params: Parameters<RA[Property]['handler']>) => RSubRequest<RA[Property]['handler']> : RA[Property] extends RemoteApi ? ClientRoutes<RA[Property]> : never;
|
|
100
|
+
}>;
|
|
101
|
+
export type NonClientMiddleFn = never | PublicRoute | {
|
|
102
|
+
[key: string]: PublicRoute;
|
|
103
|
+
};
|
|
104
|
+
export type ClientMiddleFns<RA extends RemoteApi> = Prettify<{
|
|
105
|
+
[Property in keyof RA as RA[Property] extends NonClientMiddleFn ? never : Property]: RA[Property] extends PublicMiddleFn | PublicHeadersFn ? (...params: Parameters<RA[Property]['handler']>) => HSubRequest<RA[Property]['handler']> : RA[Property] extends RemoteApi ? ClientMiddleFns<RA[Property]> : never;
|
|
106
|
+
}>;
|
|
107
|
+
export type Cleaned<RMS extends RemoteApi> = {
|
|
108
|
+
[Property in keyof RMS as RMS[Property] extends never ? never : Property]: RMS[Property];
|
|
109
|
+
};
|
|
110
|
+
export type SuccessClientResponse<RS extends RSubRequest<any>, RHList extends HSubRequest<any>[]> = [
|
|
111
|
+
SuccessResponse<RS>,
|
|
112
|
+
...SuccessResponses<RHList>
|
|
113
|
+
];
|
|
114
|
+
export type PrefilledMiddleFnsCache = Map<string, SubRequest<any>>;
|
|
115
|
+
export {};
|
|
116
|
+
export declare type __ΩResult = any[];
|
|
117
|
+
export declare type __ΩMiddleFnSuccess = any[];
|
|
118
|
+
export declare type __ΩMiddleFnError = any[];
|
|
119
|
+
export declare type __ΩCallWithMiddleFnsResult = any[];
|
|
120
|
+
export declare type __ΩWorkflowResult = any[];
|
|
121
|
+
export declare type __ΩWorkflowRouteResults = any[];
|
|
122
|
+
export declare type __ΩWorkflowRouteErrors = any[];
|
|
123
|
+
export declare type __ΩClientOptions = any[];
|
|
124
|
+
export declare type __ΩInitClientOptions = any[];
|
|
125
|
+
export declare type __ΩRequestHeaders = any[];
|
|
126
|
+
export declare type __ΩRequestBody = any[];
|
|
127
|
+
export declare type __ΩRouteParamsType = any[];
|
|
128
|
+
export declare type __ΩRouteParamType = any[];
|
|
129
|
+
export declare type __ΩHeadersParamsType = any[];
|
|
130
|
+
export declare type __ΩRouteReturnType = any[];
|
|
131
|
+
export declare type __ΩHandlerResponse = any[];
|
|
132
|
+
export declare type __ΩHandlerSuccessResponse = any[];
|
|
133
|
+
export declare type __ΩHandlerFailResponse = any[];
|
|
134
|
+
export declare type __ΩSuccessResponse = any[];
|
|
135
|
+
export declare type __ΩSuccessResponses = any[];
|
|
136
|
+
export declare type __ΩFailResponse = any[];
|
|
137
|
+
export declare type __ΩFailResponses = any[];
|
|
138
|
+
export declare type __ΩRequestErrors = any[];
|
|
139
|
+
export declare type __ΩErrorHandler = any[];
|
|
140
|
+
export declare type __ΩUnknownErrorHandler = any[];
|
|
141
|
+
export declare type __ΩSuccessHandler = any[];
|
|
142
|
+
export declare type __ΩHandlerErrors = any[];
|
|
143
|
+
export declare type __ΩSubRequest = any[];
|
|
144
|
+
export declare type __ΩRSubRequest = any[];
|
|
145
|
+
export declare type __ΩHSubRequest = any[];
|
|
146
|
+
export declare type __ΩNonClientRoute = any[];
|
|
147
|
+
export declare type __ΩClientRoutes = any[];
|
|
148
|
+
export declare type __ΩNonClientMiddleFn = any[];
|
|
149
|
+
export declare type __ΩClientMiddleFns = any[];
|
|
150
|
+
export declare type __ΩCleaned = any[];
|
|
151
|
+
export declare type __ΩSuccessClientResponse = any[];
|
|
152
|
+
export declare type __ΩPrefilledMiddleFnsCache = any[];
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const core=require("@mionjs/core"),src_types=require("./types.cjs");function __assignType(fn,args){return fn.__type=args,fn}function validateSubRequests(subRequestIds,req,errors,validateRouteMiddleFns=!0){req.options.validateParams&&subRequestIds.forEach(__assignType(id=>{const subRequest=req.subRequestList[id];validateSubRequest(id,subRequest,errors);const methodMeta=core.routesCache.getMetadata(id);if(validateRouteMiddleFns&&methodMeta?.middleFnIds?.length){const validMiddleFnIds=methodMeta.middleFnIds.filter(__assignType(middleFnId=>middleFnId!=null,["middleFnId","",'P"2!"/"']));validateSubRequests(validMiddleFnIds,req,errors,validateRouteMiddleFns)}},["id","",'P"2!"/"']))}validateSubRequests.__type=["subRequestIds","MionClientRequest","req",()=>src_types.__ΩRequestErrors,"errors","validateRouteMiddleFns","validateSubRequests",`P&F2!"w"2#n$2%"2&$/'`];function validateSubRequest(id,subRequest,errors){if(subRequest?.error||subRequest?.isResolved)return;const mappings=subRequest?.mappings;if(Array.isArray(mappings)&&mappings.length>0)return;const params=subRequest?.params||[],validationResponse=getTypeErrors(id,params);if(!validationResponse)return;const error=validationResponse;errors.set(id,error),subRequest&&(subRequest.error=error,subRequest.isResolved=!0)}validateSubRequest.__type=["id",()=>src_types.__ΩSubRequest,"subRequest",()=>src_types.__ΩRequestErrors,"errors","validateSubRequest",'P&2!"o""2#n$2%$/&'];function getTypeErrors(id,params){const method=core.routesCache.useMethodJitFns(id);if(!method.paramNames||method.paramNames.length===0)return;const paramsJit=method.paramsJitFns;if(!paramsJit.typeErrors.isNoop)try{const validationsResponse=paramsJit.isType.fn(params)||paramsJit.typeErrors.fn(params);if(validationsResponse?.length)return new core.RpcError({type:"validation-error",publicMessage:`Invalid params for Route or MiddleFn '${method.id}', validation failed.`,errorData:validationsResponse})}catch(e){return new core.RpcError({type:"unexpected-validation-error",publicMessage:`Could not validate params for Route or MiddleFn '${method.id}': ${e.message} `})}}getTypeErrors.__type=["id","params","validation-error","unexpected-validation-error",()=>core.RpcError,"getTypeErrors",'P&2!"F2"P$PP.#.$J7%J/&'];exports.validateSubRequest=validateSubRequest;exports.validateSubRequests=validateSubRequests;
|
|
2
|
+
//# sourceMappingURL=validation.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { RequestErrors, SubRequest } from './types.ts';
|
|
2
|
+
import { MionClientRequest } from './request.ts';
|
|
3
|
+
export declare function validateSubRequests(subRequestIds: string[], req: MionClientRequest<any, any>, errors: RequestErrors, validateRouteMiddleFns?: boolean): void;
|
|
4
|
+
export declare function validateSubRequest(id: string, subRequest: SubRequest<any>, errors: RequestErrors): void;
|