@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.
Files changed (106) hide show
  1. package/.dist/cjs/_virtual/jit-fns.cjs +315 -0
  2. package/.dist/cjs/_virtual/jit-fns.cjs.map +1 -0
  3. package/.dist/cjs/_virtual/pure-fns.cjs +56 -0
  4. package/.dist/cjs/_virtual/pure-fns.cjs.map +1 -0
  5. package/.dist/cjs/_virtual/router-cache.cjs +2 -0
  6. package/.dist/cjs/_virtual/router-cache.cjs.map +1 -0
  7. package/.dist/cjs/index.cjs +2 -0
  8. package/.dist/cjs/index.cjs.map +1 -0
  9. package/.dist/cjs/index.d.ts +11 -0
  10. package/.dist/cjs/package.json +1 -0
  11. package/.dist/cjs/src/aot/loadClientAOTCaches.cjs +2 -0
  12. package/.dist/cjs/src/aot/loadClientAOTCaches.cjs.map +1 -0
  13. package/.dist/cjs/src/aot/loadClientAOTCaches.d.ts +8 -0
  14. package/.dist/cjs/src/client.cjs +2 -0
  15. package/.dist/cjs/src/client.cjs.map +1 -0
  16. package/.dist/cjs/src/client.d.ts +28 -0
  17. package/.dist/cjs/src/clientMethodsMetadata.cjs +2 -0
  18. package/.dist/cjs/src/clientMethodsMetadata.cjs.map +1 -0
  19. package/.dist/cjs/src/clientMethodsMetadata.d.ts +10 -0
  20. package/.dist/cjs/src/constants.cjs +2 -0
  21. package/.dist/cjs/src/constants.cjs.map +1 -0
  22. package/.dist/cjs/src/constants.d.ts +6 -0
  23. package/.dist/cjs/src/handlersRegistry.cjs +2 -0
  24. package/.dist/cjs/src/handlersRegistry.cjs.map +1 -0
  25. package/.dist/cjs/src/handlersRegistry.d.ts +18 -0
  26. package/.dist/cjs/src/request.cjs +2 -0
  27. package/.dist/cjs/src/request.cjs.map +1 -0
  28. package/.dist/cjs/src/request.d.ts +30 -0
  29. package/.dist/cjs/src/routesFlow.cjs +2 -0
  30. package/.dist/cjs/src/routesFlow.cjs.map +1 -0
  31. package/.dist/cjs/src/routesFlow.d.ts +6 -0
  32. package/.dist/cjs/src/serializer.cjs +2 -0
  33. package/.dist/cjs/src/serializer.cjs.map +1 -0
  34. package/.dist/cjs/src/serializer.d.ts +13 -0
  35. package/.dist/cjs/src/storage.cjs +2 -0
  36. package/.dist/cjs/src/storage.cjs.map +1 -0
  37. package/.dist/cjs/src/storage.d.ts +11 -0
  38. package/.dist/cjs/src/subRequest.cjs +2 -0
  39. package/.dist/cjs/src/subRequest.cjs.map +1 -0
  40. package/.dist/cjs/src/subRequest.d.ts +23 -0
  41. package/.dist/cjs/src/testUtils.cjs +2 -0
  42. package/.dist/cjs/src/testUtils.cjs.map +1 -0
  43. package/.dist/cjs/src/testUtils.d.ts +1 -0
  44. package/.dist/cjs/src/typedEvent.cjs +2 -0
  45. package/.dist/cjs/src/typedEvent.cjs.map +1 -0
  46. package/.dist/cjs/src/typedEvent.d.ts +17 -0
  47. package/.dist/cjs/src/types.cjs +2 -0
  48. package/.dist/cjs/src/types.cjs.map +1 -0
  49. package/.dist/cjs/src/types.d.ts +152 -0
  50. package/.dist/cjs/src/validation.cjs +2 -0
  51. package/.dist/cjs/src/validation.cjs.map +1 -0
  52. package/.dist/cjs/src/validation.d.ts +4 -0
  53. package/.dist/esm/_virtual/jit-fns.js +1391 -0
  54. package/.dist/esm/_virtual/jit-fns.js.map +1 -0
  55. package/.dist/esm/_virtual/pure-fns.js +109 -0
  56. package/.dist/esm/_virtual/pure-fns.js.map +1 -0
  57. package/.dist/esm/_virtual/router-cache.js +5 -0
  58. package/.dist/esm/_virtual/router-cache.js.map +1 -0
  59. package/.dist/esm/index.d.ts +11 -0
  60. package/.dist/esm/index.js +80 -0
  61. package/.dist/esm/index.js.map +1 -0
  62. package/.dist/esm/src/aot/loadClientAOTCaches.d.ts +8 -0
  63. package/.dist/esm/src/aot/loadClientAOTCaches.js +19 -0
  64. package/.dist/esm/src/aot/loadClientAOTCaches.js.map +1 -0
  65. package/.dist/esm/src/client.d.ts +28 -0
  66. package/.dist/esm/src/client.js +185 -0
  67. package/.dist/esm/src/client.js.map +1 -0
  68. package/.dist/esm/src/clientMethodsMetadata.d.ts +10 -0
  69. package/.dist/esm/src/clientMethodsMetadata.js +162 -0
  70. package/.dist/esm/src/clientMethodsMetadata.js.map +1 -0
  71. package/.dist/esm/src/constants.d.ts +6 -0
  72. package/.dist/esm/src/constants.js +25 -0
  73. package/.dist/esm/src/constants.js.map +1 -0
  74. package/.dist/esm/src/handlersRegistry.d.ts +18 -0
  75. package/.dist/esm/src/handlersRegistry.js +70 -0
  76. package/.dist/esm/src/handlersRegistry.js.map +1 -0
  77. package/.dist/esm/src/request.d.ts +30 -0
  78. package/.dist/esm/src/request.js +289 -0
  79. package/.dist/esm/src/request.js.map +1 -0
  80. package/.dist/esm/src/routesFlow.d.ts +6 -0
  81. package/.dist/esm/src/routesFlow.js +61 -0
  82. package/.dist/esm/src/routesFlow.js.map +1 -0
  83. package/.dist/esm/src/serializer.d.ts +13 -0
  84. package/.dist/esm/src/serializer.js +139 -0
  85. package/.dist/esm/src/serializer.js.map +1 -0
  86. package/.dist/esm/src/storage.d.ts +11 -0
  87. package/.dist/esm/src/storage.js +48 -0
  88. package/.dist/esm/src/storage.js.map +1 -0
  89. package/.dist/esm/src/subRequest.d.ts +23 -0
  90. package/.dist/esm/src/subRequest.js +73 -0
  91. package/.dist/esm/src/subRequest.js.map +1 -0
  92. package/.dist/esm/src/testUtils.d.ts +1 -0
  93. package/.dist/esm/src/testUtils.js +48 -0
  94. package/.dist/esm/src/testUtils.js.map +1 -0
  95. package/.dist/esm/src/typedEvent.d.ts +17 -0
  96. package/.dist/esm/src/typedEvent.js +41 -0
  97. package/.dist/esm/src/typedEvent.js.map +1 -0
  98. package/.dist/esm/src/types.d.ts +152 -0
  99. package/.dist/esm/src/types.js +42 -0
  100. package/.dist/esm/src/types.js.map +1 -0
  101. package/.dist/esm/src/validation.d.ts +4 -0
  102. package/.dist/esm/src/validation.js +57 -0
  103. package/.dist/esm/src/validation.js.map +1 -0
  104. package/LICENSE +21 -0
  105. package/README.md +34 -0
  106. 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,42 @@
1
+ import { RpcError } from "@mionjs/core";
2
+ const __ΩRecord = ["K", "T", "Record", `l'e#"Rb!b"Pde"!N#!w#y`], __ΩPartial = ["T", "Partial", 'l+e#!e"!fRb!Pde"!gN#"w"y'], __ΩParameters = ["T", "args", "", "Parameters", `l>e"!R!RPde#!Ph"!@2""/#qk#'QRb!Pde"!p)w$y`], __ΩAwaited = ["T", "onfulfilled", "args", "then", "value", "", 0, "Awaited", `lŒe$!Re"!o'"R!RPde#!Ph"!2%h&"@2#"/&qk'.QRPde#!p0Re$!RPdde#!P%PPh$!2"h$"@2#"1$MKqkJRQRPde%!pVRPe#!P,-Jqk#vQRb!Pde"!p~w(y`], __ΩReturnType = ["T", "args", "", "ReturnType", `l>e"!R"RPde#!P"@2"h"!/#qk#'QRb!Pde"!p)w$y`], __ΩExclude = ["T", "U", "Exclude", 'l6!Re$!RPe#!e$"qk#%QRb!b"Pde"!p)w#y'], __ΩExtract = ["T", "U", "Extract", `l6e$!R!RPe#!e$"qk#'QRb!b"Pde"!p)w#y`], __ΩRequired = ["T", "Required", 'l+e#!e"!fRb!Pde"!gN##w"y'], __ΩResult = ["RouteSuccess", "RouteError", () => __ΩRecord, "MiddleFnsResults", () => __ΩRecord, () => RpcError, "MiddleFnsErrors", "Result", `b!b"&#o##c$&P&#7&o%#c'PPe#!-JPe#"-JPe##-JPe#$-JGw(y`], __ΩMiddleFnSuccess = ["H", () => __ΩHSubRequest, () => __ΩHandlerSuccessResponse, "MiddleFnSuccess", 'l=e"!o#"R!RPde#!h!!o""qk#*QRb!Pde"!p,w$y'], __ΩMiddleFnError = ["H", () => __ΩHSubRequest, () => __ΩSimplify, () => __ΩHandlerErrors, "MiddleFnError", 'l@e"!o$"o#"R!RPde#!h!!o""qk#-QRb!Pde"!p/w%y'], __ΩCallWithMiddleFnsResult = ["RouteSuccess", "RouteError", "MiddleFns", "ValidationError", () => __ΩMiddleFnSuccess, () => __ΩMiddleFnError, "CallWithMiddleFnsResult", `l9e%#e"!fo%"Re%#e"!fo&"Rb!b"b#PPe#!-JPe#""w$-JPPde$#gN#"-JPPde$#gN."-JGw'y`], __ΩWorkflowResult = ["Routes", () => __ΩRecord, () => __ΩHSubRequest, "MiddleFns", () => __ΩWorkflowRouteResults, () => __ΩWorkflowRouteErrors, () => __ΩMiddleFnSuccess, () => __ΩMiddleFnError, "WorkflowResult", `l9e%"e"!fo'"Re%"e"!fo("Rb!&"o#"o"#c$Pe"!o%"e"!o&"PPde$"gN#"-JPPde$"gN."-JGw)y`], __ΩWorkflowRouteResults = ["Routes", () => __ΩRSubRequest, () => __ΩHandlerSuccessResponse, "WorkflowRouteResults", 'lDPe#!o#"-JR!RPde$!e#!fh!!o""qk#-QRb!Pde"!gN/!w$y'], __ΩWorkflowRouteErrors = ["Routes", () => __ΩRSubRequest, () => __ΩSimplify, () => __ΩHandlerErrors, "WorkflowRouteErrors", 'lGPe#!o$"o#"-JR!RPde$!e#!fh!!o""qk#0QRb!Pde"!gN2!w%y'], __ΩClientOptions = ["CoreRouterOptions", "baseURL", "basePath", "suffix", "autoGenerateErrorId", "fetchOptions", "validateParams", "SerializerMode", "serializer", "ClientOptions", `P"w!&4"&4#&4$)4%!4&)4'"w(4)Mw*y`], __ΩExtractHandler = ["PM", "handler", "ExtractHandler", `l;e"!R!RPde#!Ph"!4"Mqk#'QRb!Pde"!p)w#y`], __ΩInitClientOptions = [() => __ΩPartial, () => __ΩClientOptions, "baseURL", "InitClientOptions", 'Pn"o!"P&4#MKw$y'], __ΩRequestHeaders = ["RequestHeaders", "P&&LMw!y"], __ΩRequestBody = ["RequestBody", 'P&"FLMw!y'], __ΩRouteParamsType = ["PM", () => __ΩParameters, () => __ΩExtractHandler, "RouteParamsType", 'b!e!!o#"o""w$y'], __ΩRouteParamType = ["PM", "Index", () => __ΩParameters, () => __ΩExtractHandler, "RouteParamType", 'b!b"e!!o$"o#"e!"fw%y'], __ΩHeadersParamsType = ["PM", () => __ΩParameters, () => __ΩExtractHandler, 0, "HeadersParamsType", 'b!e!!o#"o"".$fw%y'], __ΩRouteReturnType = ["PM", () => __ΩHandlerSuccessResponse, () => __ΩExtractHandler, "RouteReturnType", 'b!e!!o#"o""w$y'], __ΩHandlerResponse = ["PH", () => __ΩAwaited, () => __ΩReturnType, "HandlerResponse", 'b!e!!o#"o""w$y'], __ΩHandlerSuccessResponse = ["PH", () => __ΩExclude, () => __ΩHandlerResponse, () => RpcError, "HandlerSuccessResponse", 'b!e!!o#"P&7$o"#w%y'], __ΩHandlerFailResponse = ["PH", () => __ΩExtract, () => __ΩHandlerResponse, () => RpcError, "HandlerFailResponse", 'b!e!!o#"P&7$o"#w%y'], __ΩSuccessResponse = ["MR", () => __ΩRequired, "resolvedValue", "SuccessResponse", 'b!e!!o"".#fw$y'], __ΩSuccessResponses = ["List", () => __ΩSuccessResponse, "SuccessResponses", 'l.e#!e"!fo""Rb!Pde"!gN#!w#y'], __ΩFailResponse = ["MR", () => __ΩRequired, "error", "FailResponse", 'b!e!!o"".#fw$y'], __ΩFailResponses = ["List", () => __ΩFailResponse, "FailResponses", 'l.e#!e"!fo""Rb!Pde"!gN#!w#y'], __ΩRequestErrors = [() => RpcError, "RequestErrors", '&P&7!Ew"y'], __ΩErrorHandler = ["E", "error", "", "ErrorHandler", 'b!Pe"!2"$/#w$y'], __ΩUnknownErrorHandler = [() => RpcError, "error", "", "UnknownErrorHandler", 'PP&"7!2"$/#w$y'], __ΩSuccessHandler = ["S", "result", "", "SuccessHandler", 'b!Pe"!2"$/#w$y'], __ΩSimplify = ["T", "Simplify", `l4e$!R!RPe#!"qk#'QRb!Pde"!p)w"y`], __ΩHandlerErrors = ["PH", () => __ΩSimplify, () => __ΩExtract, () => __ΩHandlerResponse, () => RpcError, "ValidationError", "HandlerErrors", `b!Pe"!o$"P&"7%o##"w&Jo""w'y`], __ΩSubRequest = ["PH", "pointer", "id", "isResolved", () => __ΩParameters, "params", () => __ΩHandlerSuccessResponse, "resolvedValue", () => __ΩHandlerFailResponse, "error", "serializedParams", "SubRequest", `b!P&F4"&4#)4$e"!o%"4&e"!o'"4(8e"!o)"4*8"F4+8Mw,y`], __ΩRSubRequest = ["PH", () => __ΩSubRequest, "RunTypeError", "", "typeErrors", () => __ΩResult, () => __ΩHandlerSuccessResponse, () => __ΩSimplify, () => __ΩHandlerErrors, () => __ΩRecord, () => __ΩRecord, () => RpcError, "ValidationError", "call", "middleFns", () => __ΩCallWithMiddleFnsResult, () => __ΩHandlerSuccessResponse, () => __ΩSimplify, () => __ΩHandlerErrors, "callWithMiddleFns", "otherRoutes", () => __ΩWorkflowResult, "callWithWorkflow", "RSubRequest", 'b!Pe"!o""P"w#F`/$4%Pe#!o\'"e#!o)"o("&#o*#&PP&#7,"w-Jo+#o&%`/$4.P"2/e#!o1"e#!o3"o2""o0$`/$44PP"@G25"2/8""o6#`/$47Mw8y'], __ΩHSubRequest = ["PH", () => __ΩSubRequest, "RunTypeError", "", "typeErrors", "TypedEvent", "prefill", "removePrefill", "HSubRequest", 'b!Pe"!o""P"w#F`/$4%P"w&/$4\'P$`/$4(Mw)y'], __ΩNonClientRoute = ["PublicMiddleFn", "PublicHeadersFn", "NonClientRoute", 'P!"w!"w"Jw#y'], __ΩClientRoutes = ["RA", "Prettify", "ClientRoutes", 'b!"w"w#y'], __ΩNonClientMiddleFn = ["PublicRoute", "NonClientMiddleFn", 'P!"w!P&"w!LMJw"y'], __ΩClientMiddleFns = ["RA", "Prettify", "ClientMiddleFns", 'b!"w"w#y'], __ΩCleaned = ["RMS", "Cleaned", 'lA!Re%!RPe$!e#!fPe%!e$!f!qk#%QGRb!Pde"!gt)!w"y'], __ΩSuccessClientResponse = ["RS", "RHList", () => __ΩSuccessResponse, () => __ΩSuccessResponses, "SuccessClientResponse", 'b!b"Pe"!o#"e""o$"@Gw%y'], __ΩPrefilledMiddleFnsCache = [() => __ΩSubRequest, "PrefilledMiddleFnsCache", '&"o!"Ew"y'];
3
+ export {
4
+ __ΩCallWithMiddleFnsResult,
5
+ __ΩCleaned,
6
+ __ΩClientMiddleFns,
7
+ __ΩClientOptions,
8
+ __ΩClientRoutes,
9
+ __ΩErrorHandler,
10
+ __ΩFailResponse,
11
+ __ΩFailResponses,
12
+ __ΩHSubRequest,
13
+ __ΩHandlerErrors,
14
+ __ΩHandlerFailResponse,
15
+ __ΩHandlerResponse,
16
+ __ΩHandlerSuccessResponse,
17
+ __ΩHeadersParamsType,
18
+ __ΩInitClientOptions,
19
+ __ΩMiddleFnError,
20
+ __ΩMiddleFnSuccess,
21
+ __ΩNonClientMiddleFn,
22
+ __ΩNonClientRoute,
23
+ __ΩPrefilledMiddleFnsCache,
24
+ __ΩRSubRequest,
25
+ __ΩRequestBody,
26
+ __ΩRequestErrors,
27
+ __ΩRequestHeaders,
28
+ __ΩResult,
29
+ __ΩRouteParamType,
30
+ __ΩRouteParamsType,
31
+ __ΩRouteReturnType,
32
+ __ΩSubRequest,
33
+ __ΩSuccessClientResponse,
34
+ __ΩSuccessHandler,
35
+ __ΩSuccessResponse,
36
+ __ΩSuccessResponses,
37
+ __ΩUnknownErrorHandler,
38
+ __ΩWorkflowResult,
39
+ __ΩWorkflowRouteErrors,
40
+ __ΩWorkflowRouteResults
41
+ };
42
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","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;
@@ -0,0 +1,57 @@
1
+ import { routesCache, RpcError } from "@mionjs/core";
2
+ import { __ΩRequestErrors as ___RequestErrors, __ΩSubRequest as ___SubRequest } from "./types.js";
3
+ function __assignType(fn, args) {
4
+ return fn.__type = args, fn;
5
+ }
6
+ function validateSubRequests(subRequestIds, req, errors, validateRouteMiddleFns = !0) {
7
+ req.options.validateParams && subRequestIds.forEach(__assignType((id) => {
8
+ const subRequest = req.subRequestList[id];
9
+ validateSubRequest(id, subRequest, errors);
10
+ const methodMeta = routesCache.getMetadata(id);
11
+ if (validateRouteMiddleFns && methodMeta?.middleFnIds?.length) {
12
+ const validMiddleFnIds = methodMeta.middleFnIds.filter(__assignType((middleFnId) => middleFnId != null, ["middleFnId", "", 'P"2!"/"']));
13
+ validateSubRequests(validMiddleFnIds, req, errors, validateRouteMiddleFns);
14
+ }
15
+ }, ["id", "", 'P"2!"/"']));
16
+ }
17
+ validateSubRequests.__type = ["subRequestIds", "MionClientRequest", "req", () => ___RequestErrors, "errors", "validateRouteMiddleFns", "validateSubRequests", `P&F2!"w"2#n$2%"2&$/'`];
18
+ function validateSubRequest(id, subRequest, errors) {
19
+ if (subRequest?.error || subRequest?.isResolved)
20
+ return;
21
+ const mappings = subRequest?.mappings;
22
+ if (Array.isArray(mappings) && mappings.length > 0)
23
+ return;
24
+ const params = subRequest?.params || [], validationResponse = getTypeErrors(id, params);
25
+ if (!validationResponse)
26
+ return;
27
+ const error = validationResponse;
28
+ errors.set(id, error), subRequest && (subRequest.error = error, subRequest.isResolved = !0);
29
+ }
30
+ validateSubRequest.__type = ["id", () => ___SubRequest, "subRequest", () => ___RequestErrors, "errors", "validateSubRequest", 'P&2!"o""2#n$2%$/&'];
31
+ function getTypeErrors(id, params) {
32
+ const method = routesCache.useMethodJitFns(id);
33
+ if (!method.paramNames || method.paramNames.length === 0)
34
+ return;
35
+ const paramsJit = method.paramsJitFns;
36
+ if (!paramsJit.typeErrors.isNoop)
37
+ try {
38
+ const validationsResponse = paramsJit.isType.fn(params) || paramsJit.typeErrors.fn(params);
39
+ if (validationsResponse?.length)
40
+ return new RpcError({
41
+ type: "validation-error",
42
+ publicMessage: `Invalid params for Route or MiddleFn '${method.id}', validation failed.`,
43
+ errorData: validationsResponse
44
+ });
45
+ } catch (e) {
46
+ return new RpcError({
47
+ type: "unexpected-validation-error",
48
+ publicMessage: `Could not validate params for Route or MiddleFn '${method.id}': ${e.message} `
49
+ });
50
+ }
51
+ }
52
+ getTypeErrors.__type = ["id", "params", "validation-error", "unexpected-validation-error", () => RpcError, "getTypeErrors", 'P&2!"F2"P$PP.#.$J7%J/&'];
53
+ export {
54
+ validateSubRequest,
55
+ validateSubRequests
56
+ };
57
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Mion
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,34 @@
1
+ <p align="center">
2
+ <picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/MionKit/mion/master/assets/public/bannerx90-dark.png">
4
+ <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/MionKit/mion/master/assets/public/bannerx90.png">
5
+ <img alt='mion, a mikro kit for Typescript Serverless APIs' src='https://raw.githubusercontent.com/MionKit/mion/master/assets/public/bannerx90.png'>
6
+ </picture>
7
+ </p>
8
+ <p align="center">
9
+ <strong>Fully typed client for mion APIs
10
+ </strong>
11
+ </p>
12
+ <p align=center>
13
+ <img src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square&maxAge=99999999" alt="npm" style="max-width:100%;">
14
+ <img src="https://img.shields.io/badge/license-MIT-97ca00.svg?style=flat-square&maxAge=99999999" alt="npm" style="max-width:100%;">
15
+ </p>
16
+
17
+ # `@mionjs/client`
18
+
19
+ Modern client for mion APIs:
20
+
21
+ - Strongly typed apis with autocompletion ans static type checking.
22
+ - Fully typed list of remote methods with it's parameters and return values.
23
+ - Automattic Validation and Serialization out of the box.
24
+ - Local Validation (no need to make a server request to validate parameters)
25
+ - Prefill request data to persist across multiple calls.
26
+ - No compilation needed
27
+
28
+ ## Check Out The [Website And Documentation](http://mion.io) 📚
29
+
30
+ [![mion-website-banner](https://raw.githubusercontent.com/MionKit/mion/master/assets/public/mion-website-banner.png)](http://mion.io)
31
+
32
+ ---
33
+
34
+ _[MIT](../../LICENSE) LICENSE_
package/package.json ADDED
@@ -0,0 +1,74 @@
1
+ {
2
+ "name": "@mionjs/client",
3
+ "version": "0.8.0-alpha.0",
4
+ "type": "module",
5
+ "description": "Browser client for mion Apps.",
6
+ "keywords": [
7
+ "typescript",
8
+ "API",
9
+ "RPC",
10
+ "json",
11
+ "schema",
12
+ "generate",
13
+ "server",
14
+ "serverless",
15
+ "framework",
16
+ "node"
17
+ ],
18
+ "author": "ma jerez",
19
+ "homepage": "https://mion.io/",
20
+ "license": "MIT",
21
+ "exports": {
22
+ ".": {
23
+ "source": "./index.ts",
24
+ "types": "./.dist/esm/index.d.ts",
25
+ "require": "./.dist/cjs/index.cjs",
26
+ "default": "./.dist/esm/index.js"
27
+ },
28
+ "./aot": {
29
+ "source": "./src/aot/loadClientAOTCaches.ts",
30
+ "types": "./.dist/esm/src/aot/loadClientAOTCaches.d.ts",
31
+ "require": "./.dist/cjs/src/aot/loadClientAOTCaches.cjs",
32
+ "default": "./.dist/esm/src/aot/loadClientAOTCaches.js"
33
+ }
34
+ },
35
+ "directories": {
36
+ "lib": ".dist"
37
+ },
38
+ "files": [
39
+ ".dist"
40
+ ],
41
+ "repository": {
42
+ "type": "git",
43
+ "url": "git+https://github.com/MionKit/mion.git"
44
+ },
45
+ "publishConfig": {
46
+ "access": "public"
47
+ },
48
+ "scripts": {
49
+ "test": "vitest run && npm run test:e2e:ssr",
50
+ "test:e2e:ssr": "node --experimental-strip-types src/aot/aotSSR.e2e.test.ts",
51
+ "dev": "vite build --watch",
52
+ "dev:test": "vitest watch",
53
+ "lint": "npx eslint src",
54
+ "format": "prettier --write src/**/*.ts",
55
+ "build": "vite build",
56
+ "clean": "rimraf .dist & rimraf .coverage",
57
+ "fresh-start": "npm run clean && rimraf node_modules",
58
+ "run-test-server": "ts-node --project test/tsconfig.json test/test-server.ts"
59
+ },
60
+ "bugs": {
61
+ "url": "https://github.com/MionKit/mion/issues"
62
+ },
63
+ "gitHead": "5d2ec524ba39d040338ce8946d8edf78aa7291a3",
64
+ "devDependencies": {
65
+ "@mionjs/platform-node": "^0.8.0-alpha.0",
66
+ "@mionjs/router": "^0.8.0-alpha.0",
67
+ "@mionjs/run-types": "^0.8.0-alpha.0",
68
+ "@mionjs/test-server": "^0.7.2",
69
+ "jest-environment-jsdom": "^29.6.2"
70
+ },
71
+ "dependencies": {
72
+ "@mionjs/core": "^0.8.0-alpha.0"
73
+ }
74
+ }