snap-on-openapi 1.0.18 → 1.0.20
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 -2
- package/dist/OpenApi.js +3 -3
- package/dist/index.d.ts +1 -0
- package/dist/services/ConfigBuilder/types/DefaultRouteContextMap.d.ts +0 -1
- package/dist/services/ConfigBuilder/types/DefaultRouteContextMap.js +0 -1
- package/dist/services/DescriptionChecker/DescriptionChecker.js +1 -1
- package/dist/services/Logger/Logger.d.ts +2 -1
- package/dist/services/Logger/types/ILogger.d.ts +7 -0
- package/dist/services/SchemaGenerator/SchemaGenerator.d.ts +3 -3
- package/dist/services/TestUtils/utils/TestLogger.d.ts +0 -5
- package/dist/services/TestUtils/utils/TestLogger.js +0 -3
- package/dist/types/config/Config.d.ts +2 -2
- package/dist/types/config/ContextParams.d.ts +2 -2
- package/dist/types/events/OnErrorEvent.d.ts +2 -2
- package/dist/types/events/OnRequestEvent.d.ts +2 -2
- package/package.json +1 -1
- package/dist/services/ValidationUtils/transformers/stringDateTimeTransformer.test copy.js +0 -13
- /package/dist/services/{ValidationUtils/transformers/stringDateTimeTransformer.test copy.d.ts → Logger/types/ILogger.js} +0 -0
package/dist/OpenApi.d.ts
CHANGED
|
@@ -5,7 +5,6 @@ import { RoutingFactory } from './services/RoutingFactory/RoutingFactory.js';
|
|
|
5
5
|
import { RouteMap } from './types/RouteMap.js';
|
|
6
6
|
import { SchemaGenerator } from './services/SchemaGenerator/SchemaGenerator.js';
|
|
7
7
|
import { AnyConfig } from './types/config/AnyConfig.js';
|
|
8
|
-
import { Logger } from './services/Logger/Logger.js';
|
|
9
8
|
import { DescriptionChecker } from './services/DescriptionChecker/DescriptionChecker.js';
|
|
10
9
|
import { DevelopmentUtils } from './services/DevelopmentUtils/DevelopmentUtils.js';
|
|
11
10
|
import { ClientGenerator } from './services/ClientGenerator/ClientGenerator.js';
|
|
@@ -24,6 +23,7 @@ import { DefaultRouteParamsMap } from './services/ConfigBuilder/types/DefaultRou
|
|
|
24
23
|
import z from 'zod';
|
|
25
24
|
import { OnResponseEvent } from './types/events/OnResponseEvent.js';
|
|
26
25
|
import { RouteResponse } from './types/RouteResponse.js';
|
|
26
|
+
import { ILogger } from './services/Logger/types/ILogger.js';
|
|
27
27
|
export declare class OpenApi<TRouteTypes extends string, TErrorCodes extends string, TConfig extends AnyConfig<TRouteTypes, TErrorCodes>> {
|
|
28
28
|
static readonly builder: InitialBuilder;
|
|
29
29
|
readonly validators: ValidationUtils;
|
|
@@ -32,7 +32,7 @@ export declare class OpenApi<TRouteTypes extends string, TErrorCodes extends str
|
|
|
32
32
|
readonly clientGenerator: ClientGenerator<TRouteTypes, TErrorCodes, TConfig>;
|
|
33
33
|
readonly wrappers: Wrappers<TRouteTypes, TErrorCodes, TConfig>;
|
|
34
34
|
protected routes: AnyRoute<TRouteTypes>[];
|
|
35
|
-
protected logger:
|
|
35
|
+
protected logger: ILogger;
|
|
36
36
|
protected basePath: RoutePath;
|
|
37
37
|
protected developmentUtils: DevelopmentUtils;
|
|
38
38
|
protected config: TConfig;
|
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;
|
package/dist/index.d.ts
CHANGED
|
@@ -41,5 +41,6 @@ export { ValidationUtils as OpenApiValidationUtils } from './services/Validation
|
|
|
41
41
|
export { TanstackStartWrapper as OpenApiTanstackStartWrapper } from './services/TanstackStartWrapper/TanstackStartWrapper.js';
|
|
42
42
|
export { ExpressWrapper as OpenApiExpressWrapper } from './services/ExpressWrapper/ExpressWrapper.js';
|
|
43
43
|
export { Logger as OpenApiLogger } from './services/Logger/Logger.js';
|
|
44
|
+
export type { ILogger as IOpenApiLogger } from './services/Logger/types/ILogger.js';
|
|
44
45
|
export { LogLevel as OpenApiLogLevel } from './services/Logger/types/LogLevel.js';
|
|
45
46
|
export { ConfigBuilder as OpenApiConfigBuilder } from './services/ConfigBuilder/ConfigBuilder.js';
|
|
@@ -3,5 +3,4 @@ import { RouteContextMap } from '../../../types/config/RouteContextMap.js';
|
|
|
3
3
|
import { DefaultRouteParamsMap } from './DefaultRouteParamsMap.js';
|
|
4
4
|
export declare class DefaultRouteContextMap implements RouteContextMap<SampleRouteType, DefaultRouteParamsMap> {
|
|
5
5
|
Public: () => Promise<{}>;
|
|
6
|
-
User: () => Promise<{}>;
|
|
7
6
|
}
|
|
@@ -16,7 +16,7 @@ export class DescriptionChecker {
|
|
|
16
16
|
if (!route.description || route.description.length < minimalLength) {
|
|
17
17
|
throw new Error(`Description for ${route.path} is missing or too small`);
|
|
18
18
|
}
|
|
19
|
-
this.checkValidatorDescriptions(route, 'responseValidator', 'responseValidator', route.validators.response ?? z.undefined());
|
|
19
|
+
this.checkValidatorDescriptions(route, 'responseValidator', 'responseValidator', route.validators.response ?? z.undefined(), !!route.validators.response);
|
|
20
20
|
this.checkValidatorDescriptions(route, 'pathValidator', 'pathValidator', route.validators.path ?? z.object({}), false);
|
|
21
21
|
this.checkValidatorDescriptions(route, 'queryValidator', 'queryValidator', route.validators.query ?? z.object({}), false);
|
|
22
22
|
this.checkValidatorDescriptions(route, 'bodyValidator', 'bodyValidator', route.validators.body ?? z.object({}), false);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface ILogger {
|
|
2
|
+
info(message: string, data?: Record<string, unknown>): void;
|
|
3
|
+
debug(message: string, data?: object): void;
|
|
4
|
+
error(message: string | null, error: unknown, data?: object): void;
|
|
5
|
+
getInvoker(): string;
|
|
6
|
+
derrive(invoker: string): ILogger;
|
|
7
|
+
}
|
|
@@ -2,16 +2,16 @@ import 'zod-openapi/extend';
|
|
|
2
2
|
import { createDocument, ZodOpenApiOperationObject } from 'zod-openapi';
|
|
3
3
|
import { AnyRoute } from '../../types/AnyRoute.js';
|
|
4
4
|
import { AnyConfig } from '../../types/config/AnyConfig.js';
|
|
5
|
-
import { Logger } from '../Logger/Logger.js';
|
|
6
5
|
import { Server } from '../../types/config/Server.js';
|
|
7
6
|
import { Info } from '../../types/config/Info.js';
|
|
7
|
+
import { ILogger } from '../Logger/types/ILogger.js';
|
|
8
8
|
export declare class SchemaGenerator<TRouteTypes extends string, TErrorCodes extends string, TConfig extends AnyConfig<TRouteTypes, TErrorCodes>> {
|
|
9
|
-
protected logger:
|
|
9
|
+
protected logger: ILogger;
|
|
10
10
|
protected info: Info;
|
|
11
11
|
protected routes: AnyRoute<TRouteTypes>[];
|
|
12
12
|
protected servers: Server[];
|
|
13
13
|
protected routeSpec: TConfig;
|
|
14
|
-
constructor(logger:
|
|
14
|
+
constructor(logger: ILogger, info: Info, spec: TConfig, routes: AnyRoute<TRouteTypes>[], servers: Server[]);
|
|
15
15
|
getYaml(): string;
|
|
16
16
|
getJson(): string;
|
|
17
17
|
saveJson(path: string): void;
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import { Logger } from '../../Logger/Logger.js';
|
|
2
2
|
export declare class TestLogger extends Logger {
|
|
3
3
|
private messages;
|
|
4
|
-
popMessage(): {
|
|
5
|
-
message: string;
|
|
6
|
-
level: string;
|
|
7
|
-
data?: object;
|
|
8
|
-
} | undefined;
|
|
9
4
|
shiftMessage(): {
|
|
10
5
|
message: string;
|
|
11
6
|
level: string;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ZodOpenApiVersion } from 'zod-openapi';
|
|
2
|
-
import { Logger } from '../../services/Logger/Logger.js';
|
|
3
2
|
import { LogLevel } from '../../services/Logger/types/LogLevel.js';
|
|
4
3
|
import { RoutePath } from '../RoutePath.js';
|
|
5
4
|
import { ErrorConfigMap } from './ErrorConfigMap.js';
|
|
@@ -13,9 +12,10 @@ import { OnHandlerEvent } from '../events/OnHandlerEvent.js';
|
|
|
13
12
|
import { OnRequestEvent } from '../events/OnRequestEvent.js';
|
|
14
13
|
import { OnResponseEvent } from '../events/OnResponseEvent.js';
|
|
15
14
|
import { OnRouteEvent } from '../events/OnRouteEvent.js';
|
|
15
|
+
import { ILogger } from '../../services/Logger/types/ILogger.js';
|
|
16
16
|
export type Config<TRouteTypes extends string, TErrorCodes extends string, TErrorConfigMap extends ErrorConfigMap<TErrorCodes>, TRouteParamMap extends RouteExtraPropsMap<TRouteTypes>, TRouteContextMap extends RouteContextMap<TRouteTypes, TRouteParamMap>, TRouteConfigMap extends RouteConfigMap<TRouteTypes, TErrorCodes, TRouteParamMap, TRouteContextMap>> = {
|
|
17
17
|
disableResponseValidation?: boolean;
|
|
18
|
-
logger?:
|
|
18
|
+
logger?: ILogger;
|
|
19
19
|
basePath: RoutePath;
|
|
20
20
|
routes: TRouteConfigMap;
|
|
21
21
|
generator?: {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { ZodObject, ZodRawShape } from 'zod';
|
|
2
2
|
import { AnyRoute } from '../AnyRoute.js';
|
|
3
3
|
import { RouteExtraProps } from './RouteExtraProps.js';
|
|
4
|
-
import {
|
|
4
|
+
import { ILogger } from '../../services/Logger/types/ILogger.js';
|
|
5
5
|
export type ContextParams<TRouteType extends string, TExtraProps extends ZodObject<ZodRawShape> | undefined> = {
|
|
6
6
|
route: AnyRoute<TRouteType> & RouteExtraProps<TExtraProps>;
|
|
7
7
|
request: Request;
|
|
8
|
-
logger:
|
|
8
|
+
logger: ILogger;
|
|
9
9
|
params: {
|
|
10
10
|
body: unknown;
|
|
11
11
|
query: unknown;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
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
4
|
export interface OnErrorEvent<TRouteType extends string, TContextMap extends RouteExtraPropsMap<TRouteType>> extends Partial<OnResponseEvent<TRouteType, TContextMap>> {
|
|
5
5
|
request: Request;
|
|
6
|
-
logger:
|
|
6
|
+
logger: ILogger;
|
|
7
7
|
error: unknown;
|
|
8
8
|
}
|
package/package.json
CHANGED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { describe, expect, test } from 'vitest';
|
|
2
|
-
import { stringDateTimeTransformer } from './stringDateTimeTransformer.js';
|
|
3
|
-
describe('stringDateTimeTransformer', () => {
|
|
4
|
-
test('Can parse ISO datetime', async () => {
|
|
5
|
-
const result = stringDateTimeTransformer.safeParse('2025-07-03T08:33:32.442Z');
|
|
6
|
-
expect(result.success).toBe(true);
|
|
7
|
-
expect(result.data?.toISOString()).toBe('2025-07-03T08:33:32.442Z');
|
|
8
|
-
});
|
|
9
|
-
test("Doesn't throw on bad input", async () => {
|
|
10
|
-
const result = stringDateTimeTransformer.safeParse('jibberish');
|
|
11
|
-
expect(result.success).toBe(false);
|
|
12
|
-
});
|
|
13
|
-
});
|