snap-on-openapi 1.0.19 → 1.0.21
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/OpenApi.d.ts +2 -1
- package/dist/OpenApi.js +7 -3
- package/dist/services/ConfigBuilder/types/DefaultConfig.d.ts +2 -2
- package/dist/services/TestUtils/utils/TestLogger.d.ts +5 -0
- package/dist/services/TestUtils/utils/TestLogger.js +3 -0
- package/dist/types/config/Config.d.ts +3 -3
- package/dist/types/config/RouteContext.d.ts +2 -0
- package/dist/types/config/RouteContext.js +1 -0
- package/dist/types/events/OnErrorEvent.d.ts +1 -1
- package/dist/types/events/OnHandlerEvent.d.ts +2 -1
- package/dist/types/events/OnResponseEvent.d.ts +1 -1
- package/dist/types/events/OnRouteEvent.d.ts +2 -2
- package/package.json +1 -1
package/dist/OpenApi.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ import z from 'zod';
|
|
|
24
24
|
import { OnResponseEvent } from './types/events/OnResponseEvent.js';
|
|
25
25
|
import { RouteResponse } from './types/RouteResponse.js';
|
|
26
26
|
import { ILogger } from './services/Logger/types/ILogger.js';
|
|
27
|
+
import { RouteContext } from './types/config/RouteContext.js';
|
|
27
28
|
export declare class OpenApi<TRouteTypes extends string, TErrorCodes extends string, TConfig extends AnyConfig<TRouteTypes, TErrorCodes>> {
|
|
28
29
|
static readonly builder: InitialBuilder;
|
|
29
30
|
readonly validators: ValidationUtils;
|
|
@@ -49,7 +50,7 @@ export declare class OpenApi<TRouteTypes extends string, TErrorCodes extends str
|
|
|
49
50
|
addServer(url: string, description: string): void;
|
|
50
51
|
protected getRouteForPath(path: string, method: string): AnyRoute<TRouteTypes> | null;
|
|
51
52
|
processRootRoute(originalReq: Request): Promise<RouteResponse>;
|
|
52
|
-
protected handleError(e: unknown, req: Request, eventPieces?: Partial<OnResponseEvent<TRouteTypes, TConfig['routes'][TRouteTypes]['extraProps']
|
|
53
|
+
protected handleError(e: unknown, req: Request, eventPieces?: Partial<OnResponseEvent<TRouteTypes, TConfig['routes'][TRouteTypes]['extraProps'], RouteContext<TRouteTypes, TConfig>>>): Promise<{
|
|
53
54
|
status: number;
|
|
54
55
|
body: z.TypeOf<import("./index.js").OpenApiErrorConfigMap<TErrorCodes>[TErrorCodes]["responseValidator"]>;
|
|
55
56
|
headers: {};
|
package/dist/OpenApi.js
CHANGED
|
@@ -154,7 +154,7 @@ export class OpenApi {
|
|
|
154
154
|
if (!pathParts[i]) {
|
|
155
155
|
throw new Error(`Can't find '${name}' param in path`);
|
|
156
156
|
}
|
|
157
|
-
pathParams[name] = pathParts[i];
|
|
157
|
+
pathParams[name] = decodeURIComponent(pathParts[i]);
|
|
158
158
|
continue;
|
|
159
159
|
}
|
|
160
160
|
}
|
|
@@ -169,10 +169,10 @@ export class OpenApi {
|
|
|
169
169
|
for (const [key, val] of queryEntries) {
|
|
170
170
|
if (reqQuery[key] !== undefined) {
|
|
171
171
|
if (Array.isArray(reqQuery[key])) {
|
|
172
|
-
reqQuery[key].push(val);
|
|
172
|
+
reqQuery[key].push(decodeURIComponent(val));
|
|
173
173
|
continue;
|
|
174
174
|
}
|
|
175
|
-
reqQuery[key] = [reqQuery[key], val];
|
|
175
|
+
reqQuery[key] = [reqQuery[key], decodeURIComponent(val)];
|
|
176
176
|
continue;
|
|
177
177
|
}
|
|
178
178
|
reqQuery[key] = val;
|
|
@@ -228,6 +228,7 @@ export class OpenApi {
|
|
|
228
228
|
});
|
|
229
229
|
onHandler = {
|
|
230
230
|
...onRoute,
|
|
231
|
+
context,
|
|
231
232
|
validated: {
|
|
232
233
|
query: query.data,
|
|
233
234
|
path: path.data,
|
|
@@ -246,6 +247,9 @@ export class OpenApi {
|
|
|
246
247
|
});
|
|
247
248
|
return response;
|
|
248
249
|
};
|
|
250
|
+
if (this.config.onHandler) {
|
|
251
|
+
await this.config.onHandler(onHandler);
|
|
252
|
+
}
|
|
249
253
|
const response = await wrapper(handler, {
|
|
250
254
|
route: route,
|
|
251
255
|
request: originalReq,
|
|
@@ -23,7 +23,7 @@ export declare class DefaultConfig implements Config<SampleRouteType, ErrorCode,
|
|
|
23
23
|
onRequest?: () => Promise<void>;
|
|
24
24
|
onRoute?: (e: OnRouteEvent<SampleRouteType, DefaultRouteParamsMap>) => Promise<void>;
|
|
25
25
|
onHandler?: () => Promise<void>;
|
|
26
|
-
onResponse?: (e: OnResponseEvent<SampleRouteType, DefaultRouteParamsMap>) => Promise<void>;
|
|
27
|
-
onError?: (e: OnErrorEvent<SampleRouteType, DefaultRouteParamsMap>) => Promise<ErrorResponse<ErrorCode, DefaultErrorMap>>;
|
|
26
|
+
onResponse?: (e: OnResponseEvent<SampleRouteType, DefaultRouteParamsMap, object>) => Promise<void>;
|
|
27
|
+
onError?: (e: OnErrorEvent<SampleRouteType, DefaultRouteParamsMap, object>) => Promise<ErrorResponse<ErrorCode, DefaultErrorMap>>;
|
|
28
28
|
skipDescriptionsCheck?: boolean;
|
|
29
29
|
}
|
|
@@ -6,5 +6,10 @@ export declare class TestLogger extends Logger {
|
|
|
6
6
|
level: string;
|
|
7
7
|
data?: object;
|
|
8
8
|
} | undefined;
|
|
9
|
+
popMessage(): {
|
|
10
|
+
message: string;
|
|
11
|
+
level: string;
|
|
12
|
+
data?: object;
|
|
13
|
+
} | undefined;
|
|
9
14
|
protected log(message: string, level: string, data?: object): void;
|
|
10
15
|
}
|
|
@@ -34,7 +34,7 @@ export type Config<TRouteTypes extends string, TErrorCodes extends string, TErro
|
|
|
34
34
|
logLevel?: LogLevel;
|
|
35
35
|
onRequest?: (e: OnRequestEvent) => Promise<void>;
|
|
36
36
|
onRoute?: (e: OnRouteEvent<TRouteTypes, TRouteParamMap>) => Promise<void>;
|
|
37
|
-
onHandler?: (e: OnHandlerEvent<TRouteTypes, TRouteParamMap
|
|
38
|
-
onResponse?: (e: OnResponseEvent<TRouteTypes, TRouteParamMap
|
|
39
|
-
onError?: (e: OnErrorEvent<TRouteTypes, TRouteParamMap
|
|
37
|
+
onHandler?: (e: OnHandlerEvent<TRouteTypes, TRouteParamMap, Awaited<ReturnType<TRouteContextMap[TRouteTypes]>>>) => Promise<void>;
|
|
38
|
+
onResponse?: (e: OnResponseEvent<TRouteTypes, TRouteParamMap, Awaited<ReturnType<TRouteContextMap[TRouteTypes]>>>) => Promise<void>;
|
|
39
|
+
onError?: (e: OnErrorEvent<TRouteTypes, TRouteParamMap, Awaited<ReturnType<TRouteContextMap[TRouteTypes]>>>) => Promise<ErrorResponse<TErrorCodes, TErrorConfigMap>>;
|
|
40
40
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ILogger } from '../../services/Logger/types/ILogger.js';
|
|
2
2
|
import { RouteExtraPropsMap } from '../config/RouteExtraPropsMap.js';
|
|
3
3
|
import { OnResponseEvent } from './OnResponseEvent.js';
|
|
4
|
-
export interface OnErrorEvent<TRouteType extends string, TContextMap extends RouteExtraPropsMap<TRouteType
|
|
4
|
+
export interface OnErrorEvent<TRouteType extends string, TContextMap extends RouteExtraPropsMap<TRouteType>, TContext extends object> extends Partial<OnResponseEvent<TRouteType, TContextMap, TContext>> {
|
|
5
5
|
request: Request;
|
|
6
6
|
logger: ILogger;
|
|
7
7
|
error: unknown;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { RouteExtraPropsMap } from '../config/RouteExtraPropsMap.js';
|
|
2
2
|
import { OnRouteEvent } from './OnRouteEvent.js';
|
|
3
|
-
export interface OnHandlerEvent<TRouteType extends string, TContextMap extends RouteExtraPropsMap<TRouteType
|
|
3
|
+
export interface OnHandlerEvent<TRouteType extends string, TContextMap extends RouteExtraPropsMap<TRouteType>, TContext extends object> extends OnRouteEvent<TRouteType, TContextMap> {
|
|
4
4
|
validated: {
|
|
5
5
|
query: Record<string, unknown>;
|
|
6
6
|
path: Record<string, unknown>;
|
|
7
7
|
body: unknown;
|
|
8
8
|
};
|
|
9
|
+
context: TContext;
|
|
9
10
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RouteExtraPropsMap } from '../config/RouteExtraPropsMap.js';
|
|
2
2
|
import { RouteResponse } from '../RouteResponse.js';
|
|
3
3
|
import { OnHandlerEvent } from './OnHandlerEvent.js';
|
|
4
|
-
export interface OnResponseEvent<TRouteType extends string, TContextMap extends RouteExtraPropsMap<TRouteType
|
|
4
|
+
export interface OnResponseEvent<TRouteType extends string, TContextMap extends RouteExtraPropsMap<TRouteType>, TContext extends object> extends OnHandlerEvent<TRouteType, TContextMap, TContext> {
|
|
5
5
|
response: RouteResponse;
|
|
6
6
|
}
|
|
@@ -2,11 +2,11 @@ import { AnyRoute } from '../AnyRoute.js';
|
|
|
2
2
|
import { RouteExtraProps } from '../config/RouteExtraProps.js';
|
|
3
3
|
import { RouteExtraPropsMap } from '../config/RouteExtraPropsMap.js';
|
|
4
4
|
import { OnRequestEvent } from './OnRequestEvent.js';
|
|
5
|
-
export interface OnRouteEvent<TRouteType extends string,
|
|
5
|
+
export interface OnRouteEvent<TRouteType extends string, TExtraPropsMap extends RouteExtraPropsMap<TRouteType>> extends OnRequestEvent {
|
|
6
6
|
path: string;
|
|
7
7
|
method: string;
|
|
8
8
|
params: Record<string, string>;
|
|
9
9
|
query: Record<string, string | string[]>;
|
|
10
10
|
body: unknown;
|
|
11
|
-
route: AnyRoute<TRouteType> & RouteExtraProps<
|
|
11
|
+
route: AnyRoute<TRouteType> & RouteExtraProps<TExtraPropsMap[TRouteType]>;
|
|
12
12
|
}
|
package/package.json
CHANGED