@furystack/rest-service 10.0.23 → 10.0.25

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 (66) hide show
  1. package/esm/api-manager.d.ts +47 -1
  2. package/esm/api-manager.d.ts.map +1 -1
  3. package/esm/api-manager.js +19 -5
  4. package/esm/api-manager.js.map +1 -1
  5. package/esm/authenticate.d.ts.map +1 -1
  6. package/esm/authenticate.js +3 -1
  7. package/esm/authenticate.js.map +1 -1
  8. package/esm/endpoint-generators/create-get-schema-action.d.ts +16 -0
  9. package/esm/endpoint-generators/create-get-schema-action.d.ts.map +1 -0
  10. package/esm/endpoint-generators/create-get-schema-action.js +21 -0
  11. package/esm/endpoint-generators/create-get-schema-action.js.map +1 -0
  12. package/esm/endpoint-generators/create-get-swagger-json-action.d.ts +14 -0
  13. package/esm/endpoint-generators/create-get-swagger-json-action.d.ts.map +1 -0
  14. package/esm/endpoint-generators/create-get-swagger-json-action.js +17 -0
  15. package/esm/endpoint-generators/create-get-swagger-json-action.js.map +1 -0
  16. package/esm/endpoint-generators/index.d.ts +1 -0
  17. package/esm/endpoint-generators/index.d.ts.map +1 -1
  18. package/esm/endpoint-generators/index.js +1 -0
  19. package/esm/endpoint-generators/index.js.map +1 -1
  20. package/esm/endpoint-generators/with-schema-and-swagger-action.d.ts +21 -0
  21. package/esm/endpoint-generators/with-schema-and-swagger-action.d.ts.map +1 -0
  22. package/esm/endpoint-generators/with-schema-and-swagger-action.js +2 -0
  23. package/esm/endpoint-generators/with-schema-and-swagger-action.js.map +1 -0
  24. package/esm/get-schema-from-api.d.ts +10 -0
  25. package/esm/get-schema-from-api.d.ts.map +1 -0
  26. package/esm/get-schema-from-api.js +55 -0
  27. package/esm/get-schema-from-api.js.map +1 -0
  28. package/esm/get-schema-from-api.spec.d.ts +2 -0
  29. package/esm/get-schema-from-api.spec.d.ts.map +1 -0
  30. package/esm/get-schema-from-api.spec.js +68 -0
  31. package/esm/get-schema-from-api.spec.js.map +1 -0
  32. package/esm/helpers.d.ts +4 -1
  33. package/esm/helpers.d.ts.map +1 -1
  34. package/esm/index.d.ts +10 -9
  35. package/esm/index.d.ts.map +1 -1
  36. package/esm/index.js +10 -9
  37. package/esm/index.js.map +1 -1
  38. package/esm/swagger/generate-swagger-json.d.ts +14 -0
  39. package/esm/swagger/generate-swagger-json.d.ts.map +1 -0
  40. package/esm/swagger/generate-swagger-json.js +106 -0
  41. package/esm/swagger/generate-swagger-json.js.map +1 -0
  42. package/esm/swagger/generate-swagger-json.spec.d.ts +2 -0
  43. package/esm/swagger/generate-swagger-json.spec.d.ts.map +1 -0
  44. package/esm/swagger/generate-swagger-json.spec.js +204 -0
  45. package/esm/swagger/generate-swagger-json.spec.js.map +1 -0
  46. package/esm/validate.d.ts.map +1 -1
  47. package/esm/validate.integration.spec.js +154 -2
  48. package/esm/validate.integration.spec.js.map +1 -1
  49. package/esm/validate.integration.spec.schema.json +0 -2
  50. package/esm/validate.js +4 -1
  51. package/esm/validate.js.map +1 -1
  52. package/package.json +10 -10
  53. package/src/api-manager.ts +68 -5
  54. package/src/authenticate.ts +5 -1
  55. package/src/endpoint-generators/create-get-schema-action.ts +29 -0
  56. package/src/endpoint-generators/create-get-swagger-json-action.ts +26 -0
  57. package/src/endpoint-generators/index.ts +1 -0
  58. package/src/endpoint-generators/with-schema-and-swagger-action.ts +11 -0
  59. package/src/get-schema-from-api.spec.ts +73 -0
  60. package/src/get-schema-from-api.ts +74 -0
  61. package/src/index.ts +10 -9
  62. package/src/swagger/generate-swagger-json.spec.ts +239 -0
  63. package/src/swagger/generate-swagger-json.ts +123 -0
  64. package/src/validate.integration.spec.schema.json +0 -2
  65. package/src/validate.integration.spec.ts +173 -2
  66. package/src/validate.ts +6 -1
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Converts a FuryStack API schema to an OpenAPI 3.1 compatible document
3
+ *
4
+ * @param schema - The FuryStack API schema to convert
5
+ * @returns A SwaggerDocument in OpenAPI 3.1 format
6
+ */
7
+ export const generateSwaggerJsonFromApiSchema = ({ api, title = 'FuryStack API', description = 'API documentation generated from FuryStack API schema', version = '1.0.0', }) => {
8
+ const swaggerJson = {
9
+ openapi: '3.1.0',
10
+ info: {
11
+ title,
12
+ version,
13
+ description,
14
+ },
15
+ jsonSchemaDialect: 'https://spec.openapis.org/oas/3.1/dialect/base',
16
+ servers: [{ url: '/' }],
17
+ tags: [],
18
+ paths: {},
19
+ components: {
20
+ schemas: {},
21
+ securitySchemes: {
22
+ cookieAuth: {
23
+ type: 'apiKey',
24
+ in: 'cookie',
25
+ name: 'session',
26
+ },
27
+ },
28
+ },
29
+ };
30
+ for (const [path, definition] of Object.entries(api)) {
31
+ // Normalize path to OpenAPI format (convert :param to {param})
32
+ const normalizedPath = path.replace(/:([^/]+)/g, '{$1}');
33
+ if (!swaggerJson.paths[normalizedPath]) {
34
+ swaggerJson.paths[normalizedPath] = {};
35
+ }
36
+ // Extract path parameters
37
+ const pathParams = Array.from(path.matchAll(/:([^/]+)/g), (m) => m[1]);
38
+ const parameters = pathParams.map((param) => ({
39
+ name: param,
40
+ in: 'path',
41
+ required: true,
42
+ description: `Path parameter: ${param}`,
43
+ schema: { type: 'string' },
44
+ }));
45
+ // Build operation
46
+ const method = definition.method.toLowerCase();
47
+ const operation = {
48
+ summary: `${definition.method} ${path}`,
49
+ description: `Endpoint for ${path}`,
50
+ operationId: `${method}${path.replace(/\//g, '_').replace(/:/g, '').replace(/-/g, '_')}`,
51
+ security: definition.isAuthenticated ? [{ cookieAuth: [] }] : [],
52
+ parameters,
53
+ responses: {
54
+ '200': {
55
+ description: 'Successful operation',
56
+ content: {
57
+ 'application/json': {
58
+ schema: definition.schemaName
59
+ ? { $ref: `#/components/schemas/${definition.schemaName}` }
60
+ : { type: 'object' },
61
+ },
62
+ },
63
+ },
64
+ '401': { description: 'Unauthorized' },
65
+ '500': { description: 'Internal server error' },
66
+ },
67
+ };
68
+ // Add schema to components if not already there
69
+ if (definition.schema && definition.schemaName) {
70
+ swaggerJson.components.schemas[definition.schemaName] = definition.schema;
71
+ }
72
+ // Assign the operation to the correct HTTP method property of PathItem
73
+ const pathItem = swaggerJson.paths[normalizedPath];
74
+ switch (method) {
75
+ case 'get':
76
+ pathItem.get = operation;
77
+ break;
78
+ case 'put':
79
+ pathItem.put = operation;
80
+ break;
81
+ case 'post':
82
+ pathItem.post = operation;
83
+ break;
84
+ case 'delete':
85
+ pathItem.delete = operation;
86
+ break;
87
+ case 'options':
88
+ pathItem.options = operation;
89
+ break;
90
+ case 'head':
91
+ pathItem.head = operation;
92
+ break;
93
+ case 'patch':
94
+ pathItem.patch = operation;
95
+ break;
96
+ case 'trace':
97
+ pathItem.trace = operation;
98
+ break;
99
+ default:
100
+ // Ignore unknown methods
101
+ break;
102
+ }
103
+ }
104
+ return swaggerJson;
105
+ };
106
+ //# sourceMappingURL=generate-swagger-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-swagger-json.js","sourceRoot":"","sources":["../../src/swagger/generate-swagger-json.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=generate-swagger-json.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-swagger-json.spec.d.ts","sourceRoot":"","sources":["../../src/swagger/generate-swagger-json.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,204 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { generateSwaggerJsonFromApiSchema } from './generate-swagger-json.js';
3
+ describe('generateSwaggerJsonFromApiSchema', () => {
4
+ it('Should generate a basic Swagger document with correct OpenAPI structure', () => {
5
+ const api = {
6
+ '/api/test': {
7
+ method: 'GET',
8
+ path: '/api/test',
9
+ isAuthenticated: false,
10
+ schemaName: 'Test',
11
+ schema: { type: 'object', properties: { id: { type: 'string' } } },
12
+ },
13
+ };
14
+ const result = generateSwaggerJsonFromApiSchema({ api });
15
+ // Check basic structure
16
+ expect(result.openapi).toBe('3.1.0');
17
+ expect(result.info.title).toBe('FuryStack API');
18
+ expect(result.info.version).toBe('1.0.0');
19
+ // Check security scheme is defined correctly for cookie-based auth
20
+ expect(result.components?.securitySchemes?.cookieAuth).toEqual({
21
+ type: 'apiKey',
22
+ in: 'cookie',
23
+ name: 'session',
24
+ });
25
+ });
26
+ it('Should convert API endpoints to OpenAPI paths correctly', () => {
27
+ const api = {
28
+ '/api/users': {
29
+ method: 'GET',
30
+ path: '/api/users',
31
+ isAuthenticated: true,
32
+ schemaName: 'UserCollection',
33
+ schema: { type: 'array', items: { type: 'object' } },
34
+ },
35
+ '/api/users/:id': {
36
+ method: 'GET',
37
+ path: '/api/users/:id',
38
+ isAuthenticated: true,
39
+ schemaName: 'User',
40
+ schema: { type: 'object', properties: { id: { type: 'string' } } },
41
+ },
42
+ };
43
+ const result = generateSwaggerJsonFromApiSchema({ api });
44
+ // Check paths
45
+ expect(result.paths?.['/api/users']).toBeDefined();
46
+ expect(result.paths?.['/api/users/{id}']).toBeDefined();
47
+ // Check methods
48
+ expect(result.paths?.['/api/users']?.get).toBeDefined();
49
+ expect(result.paths?.['/api/users/{id}']?.get).toBeDefined();
50
+ // Check security - should use cookieAuth for authenticated endpoints
51
+ expect(result.paths?.['/api/users']?.get?.security).toEqual([{ cookieAuth: [] }]);
52
+ expect(result.paths?.['/api/users/{id}']?.get?.security).toEqual([{ cookieAuth: [] }]);
53
+ });
54
+ it('Should extract path parameters correctly', () => {
55
+ const api = {
56
+ '/api/users/:userId/posts/:postId': {
57
+ method: 'GET',
58
+ path: '/api/users/:userId/posts/:postId',
59
+ isAuthenticated: false,
60
+ schemaName: 'Post',
61
+ schema: { type: 'object' },
62
+ },
63
+ };
64
+ const result = generateSwaggerJsonFromApiSchema({ api });
65
+ // Check path parameters
66
+ const parameters = result.paths?.['/api/users/{userId}/posts/{postId}']?.get?.parameters;
67
+ expect(parameters).toHaveLength(2);
68
+ expect(parameters?.[0].name).toBe('userId');
69
+ expect(parameters?.[0].in).toBe('path');
70
+ expect(parameters?.[0].required).toBe(true);
71
+ expect(parameters?.[1].name).toBe('postId');
72
+ expect(parameters?.[1].in).toBe('path');
73
+ expect(parameters?.[1].required).toBe(true);
74
+ });
75
+ it('Should handle different HTTP methods correctly', () => {
76
+ const api = {
77
+ '/api/resource-get': {
78
+ method: 'GET',
79
+ path: '/api/resource-get',
80
+ isAuthenticated: false,
81
+ schemaName: 'Resource',
82
+ schema: { type: 'object' },
83
+ },
84
+ '/api/resource-post': {
85
+ method: 'POST',
86
+ path: '/api/resource-post',
87
+ isAuthenticated: true,
88
+ schemaName: 'ResourceInput',
89
+ schema: { type: 'object' },
90
+ },
91
+ '/api/resource-put/:id': {
92
+ method: 'PUT',
93
+ path: '/api/resource-put/:id',
94
+ isAuthenticated: true,
95
+ schemaName: 'ResourceUpdate',
96
+ schema: { type: 'object' },
97
+ },
98
+ '/api/resource-delete/:id': {
99
+ method: 'DELETE',
100
+ path: '/api/resource-delete/:id',
101
+ isAuthenticated: true,
102
+ schemaName: 'ResourceDelete',
103
+ schema: { type: 'object' },
104
+ },
105
+ };
106
+ const result = generateSwaggerJsonFromApiSchema({ api });
107
+ // Check multiple methods
108
+ expect(result.paths?.['/api/resource-get'].get).toBeDefined();
109
+ expect(result.paths?.['/api/resource-post'].post).toBeDefined();
110
+ expect(result.paths?.['/api/resource-put/{id}'].put).toBeDefined();
111
+ expect(result.paths?.['/api/resource-delete/{id}'].delete).toBeDefined();
112
+ // Verify security is applied correctly based on isAuthenticated
113
+ expect(result.paths?.['/api/resource-get'].get?.security).toEqual([]);
114
+ expect(result.paths?.['/api/resource-post'].post?.security).toEqual([{ cookieAuth: [] }]);
115
+ });
116
+ it('Should include schemas in components', () => {
117
+ const testSchema = {
118
+ type: 'object',
119
+ properties: {
120
+ id: { type: 'string' },
121
+ name: { type: 'string' },
122
+ age: { type: 'number' },
123
+ },
124
+ };
125
+ const api = {
126
+ '/api/test': {
127
+ method: 'GET',
128
+ path: '/api/test',
129
+ isAuthenticated: false,
130
+ schemaName: 'TestModel',
131
+ schema: testSchema,
132
+ },
133
+ };
134
+ const result = generateSwaggerJsonFromApiSchema({ api });
135
+ // Check schema is included in components
136
+ expect(result.components?.schemas?.TestModel).toEqual(testSchema);
137
+ });
138
+ it('Should handle responses with correct status codes and content types', () => {
139
+ const api = {
140
+ '/api/test': {
141
+ method: 'GET',
142
+ path: '/api/test',
143
+ isAuthenticated: false,
144
+ schemaName: 'Test',
145
+ schema: { type: 'object' },
146
+ },
147
+ };
148
+ const result = generateSwaggerJsonFromApiSchema({ api });
149
+ // Check response structure
150
+ const responses = result.paths?.['/api/test'].get?.responses;
151
+ const response200 = responses?.['200'];
152
+ expect(response200).toBeDefined();
153
+ expect(response200.description).toBe('Successful operation');
154
+ expect((response200.content?.['application/json']?.schema).$ref).toBe('#/components/schemas/Test');
155
+ expect(responses?.['401']).toBeDefined();
156
+ expect(responses?.['500']).toBeDefined();
157
+ expect(responses?.['401'].description).toBe('Unauthorized');
158
+ expect(responses?.['500'].description).toBe('Internal server error');
159
+ });
160
+ it('Should use empty path object if it does not exist - for code coverage', () => {
161
+ const api = {
162
+ '/api/test': {
163
+ method: 'GET',
164
+ path: '/api/test',
165
+ isAuthenticated: false,
166
+ schemaName: 'Test',
167
+ schema: { type: 'object' },
168
+ },
169
+ };
170
+ const result = generateSwaggerJsonFromApiSchema({ api });
171
+ // This test is mainly for coverage, checking that the path initialization logic works
172
+ expect(result.paths?.['/api/test']).toBeDefined();
173
+ });
174
+ it('Should handle endpoints without schemas', () => {
175
+ const api = {
176
+ '/api/no-schema': {
177
+ method: 'GET',
178
+ path: '/api/no-schema',
179
+ isAuthenticated: false,
180
+ schemaName: 'EmptySchema',
181
+ schema: null,
182
+ },
183
+ };
184
+ const result = generateSwaggerJsonFromApiSchema({ api });
185
+ // Should still create the path without errors
186
+ expect(result.paths?.['/api/no-schema']).toBeDefined();
187
+ expect(result.paths?.['/api/no-schema'].get).toBeDefined();
188
+ });
189
+ it('Should use operationId based on method and path', () => {
190
+ const api = {
191
+ '/api/users/:id/profile': {
192
+ method: 'GET',
193
+ path: '/api/users/:id/profile',
194
+ isAuthenticated: false,
195
+ schemaName: 'UserProfile',
196
+ schema: { type: 'object' },
197
+ },
198
+ };
199
+ const result = generateSwaggerJsonFromApiSchema({ api });
200
+ // Check operationId format
201
+ expect(result.paths?.['/api/users/{id}/profile'].get?.operationId).toBe('get_api_users_id_profile');
202
+ });
203
+ });
204
+ //# sourceMappingURL=generate-swagger-json.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-swagger-json.spec.js","sourceRoot":"","sources":["../../src/swagger/generate-swagger-json.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAgB,aAAa,EAAwB,MAAM,oCAAoC,CAAA;AAG3G,eAAO,MAAM,QAAQ,GAClB,OAAO,SAAS;IAAE,WAAW,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;CAAE,EAAE,mBAAmB;IACzE;;OAEG;IACH,MAAM,EAAE,OAAO,CAAA;IACf;;OAEG;IACH,UAAU,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAA;CACzC,MACA,CAAC,SAAS;IAAE,MAAM,EAAE,GAAG,CAAA;CAAE,EAAE,QAAQ,aAAa,CAAC,CAAC,CAAC,KAAG,aAAa,CAAC,CAAC,CA8CrE,CAAA"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAgB,aAAa,EAAwB,MAAM,oCAAoC,CAAA;AAG3G,eAAO,MAAM,QAAQ,GAClB,OAAO,SAAS;IAAE,WAAW,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;CAAE,EAAE,mBAAmB;IACzE;;OAEG;IACH,MAAM,EAAE,OAAO,CAAA;IACf;;OAEG;IACH,UAAU,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAA;CACzC,MACA,CAAC,SAAS;IAAE,MAAM,EAAE,GAAG,CAAA;CAAE,EAAE,QAAQ,aAAa,CAAC,CAAC,CAAC,KAAG,aAAa,CAAC,CAAC,CAmDrE,CAAA"}
@@ -10,13 +10,20 @@ import { JsonResult } from './request-action-implementation.js';
10
10
  import schema from './validate.integration.spec.schema.json' with { type: 'json' };
11
11
  import { Validate } from './validate.js';
12
12
  // To recreate: yarn ts-json-schema-generator -f tsconfig.json --no-type-check -p packages/rest-service/src/validate.integration.schema.ts -o packages/rest-service/src/validate.integration.spec.schema.json
13
- const createValidateApi = async () => {
13
+ const name = crypto.randomUUID();
14
+ const description = crypto.randomUUID();
15
+ const version = crypto.randomUUID();
16
+ const createValidateApi = async (options = { enableGetSchema: false }) => {
14
17
  const injector = new Injector();
15
18
  const port = getPort();
16
19
  getStoreManager(injector).addStore(new InMemoryStore({ model: User, primaryKey: 'username' }));
17
20
  getStoreManager(injector).addStore(new InMemoryStore({ model: DefaultSession, primaryKey: 'sessionId' }));
18
- await useRestService({
21
+ const api = await useRestService({
19
22
  injector,
23
+ enableGetSchema: options.enableGetSchema,
24
+ name,
25
+ description,
26
+ version,
20
27
  api: {
21
28
  GET: {
22
29
  '/validate-query': Validate({
@@ -59,10 +66,155 @@ const createValidateApi = async () => {
59
66
  });
60
67
  return {
61
68
  [Symbol.asyncDispose]: injector[Symbol.asyncDispose].bind(injector),
69
+ injector,
70
+ api,
62
71
  client,
63
72
  };
64
73
  };
65
74
  describe('Validation integration tests', () => {
75
+ describe('swagger.json schema definition', () => {
76
+ it('Should include name, description and version in the generated swagger.json', async () => {
77
+ await usingAsync(await createValidateApi({ enableGetSchema: true }), async ({ client }) => {
78
+ const result = await client({
79
+ method: 'GET',
80
+ action: '/swagger.json',
81
+ });
82
+ expect(result.response.status).toBe(200);
83
+ expect(result.result).toBeDefined();
84
+ // Verify swagger document structure
85
+ const swaggerJson = result.result;
86
+ expect(swaggerJson.openapi).toBe('3.1.0');
87
+ expect(swaggerJson.info).toBeDefined();
88
+ expect(swaggerJson.info?.title).toBe(name);
89
+ expect(swaggerJson.info?.description).toBe(description);
90
+ expect(swaggerJson.info?.version).toBe(version);
91
+ });
92
+ });
93
+ it('Should return a 404 when not enabled', async () => {
94
+ await usingAsync(await createValidateApi({ enableGetSchema: false }), async ({ client }) => {
95
+ try {
96
+ await client({
97
+ method: 'GET',
98
+ action: '/swagger.json',
99
+ });
100
+ expect.fail('Expected response error but got success');
101
+ }
102
+ catch (error) {
103
+ expect(error).toBeInstanceOf(ResponseError);
104
+ expect(error.response.status).toBe(404);
105
+ }
106
+ });
107
+ });
108
+ it('Should return a generated swagger.json when enabled', async () => {
109
+ await usingAsync(await createValidateApi({ enableGetSchema: true }), async ({ client }) => {
110
+ const result = await client({
111
+ method: 'GET',
112
+ action: '/swagger.json',
113
+ });
114
+ expect(result.response.status).toBe(200);
115
+ expect(result.result).toBeDefined();
116
+ // Verify swagger document structure
117
+ const swaggerJson = result.result;
118
+ expect(swaggerJson.openapi).toBe('3.1.0');
119
+ expect(swaggerJson.info).toBeDefined();
120
+ expect(swaggerJson.info?.title).toBe(name);
121
+ expect(swaggerJson.info?.description).toBe(description);
122
+ expect(swaggerJson.info?.version).toBe(version);
123
+ expect(swaggerJson.paths).toBeDefined();
124
+ // Verify our API endpoints are included
125
+ expect(swaggerJson.paths?.['/validate-query']).toBeDefined();
126
+ expect(swaggerJson.paths?.['/validate-url/{id}']).toBeDefined();
127
+ expect(swaggerJson.paths?.['/validate-headers']).toBeDefined();
128
+ expect(swaggerJson.paths?.['/validate-body']).toBeDefined();
129
+ // Verify components section
130
+ expect(swaggerJson.components).toBeDefined();
131
+ expect(swaggerJson.components?.schemas).toBeDefined();
132
+ expect(swaggerJson.components?.schemas?.ValidateQuery).toBeDefined();
133
+ expect(swaggerJson.components?.schemas?.ValidateUrl).toBeDefined();
134
+ expect(swaggerJson.components?.schemas?.ValidateHeaders).toBeDefined();
135
+ expect(swaggerJson.components?.schemas?.ValidateBody).toBeDefined();
136
+ });
137
+ });
138
+ });
139
+ describe('Validation metadata', () => {
140
+ it('Should return 404 when not enabled', async () => {
141
+ await usingAsync(await createValidateApi({ enableGetSchema: false }), async ({ client }) => {
142
+ try {
143
+ await client({
144
+ method: 'GET',
145
+ action: '/schema',
146
+ headers: {
147
+ accept: 'application/schema+json',
148
+ },
149
+ });
150
+ }
151
+ catch (error) {
152
+ expect(error).toBeInstanceOf(ResponseError);
153
+ expect(error.response.status).toBe(404);
154
+ }
155
+ });
156
+ });
157
+ it('Should return a 406 when the accept header is not supported', async () => {
158
+ expect.assertions(2);
159
+ await usingAsync(await createValidateApi({ enableGetSchema: true }), async ({ client }) => {
160
+ try {
161
+ await client({
162
+ method: 'GET',
163
+ action: '/schema',
164
+ headers: {
165
+ accept: 'text/plain',
166
+ },
167
+ });
168
+ }
169
+ catch (error) {
170
+ expect(error).toBeInstanceOf(ResponseError);
171
+ expect(error.response.status).toBe(406);
172
+ }
173
+ });
174
+ });
175
+ it('Should return the validation metadata', async () => {
176
+ await usingAsync(await createValidateApi({ enableGetSchema: true }), async ({ client }) => {
177
+ const result = await client({
178
+ method: 'GET',
179
+ action: '/schema',
180
+ headers: {
181
+ accept: 'application/schema+json',
182
+ },
183
+ });
184
+ expect(result.response.status).toBe(200);
185
+ expect(result.result).toBeDefined();
186
+ expect(result.result.name).toBe(name);
187
+ expect(result.result.description).toBe(description);
188
+ expect(result.result.version).toBe(version);
189
+ expect(result.result.endpoints['/validate-query']).toBeDefined();
190
+ expect(result.result.endpoints['/validate-query'].schema).toStrictEqual(schema);
191
+ expect(result.result.endpoints['/validate-query'].schemaName).toBe('ValidateQuery');
192
+ expect(result.result.endpoints['/validate-query'].method).toBe('GET');
193
+ expect(result.result.endpoints['/validate-query'].path).toBe('/validate-query');
194
+ expect(result.result.endpoints['/validate-query'].isAuthenticated).toBe(false);
195
+ expect(result.result.endpoints['/validate-url/:id']).toBeDefined();
196
+ expect(result.result.endpoints['/validate-url/:id'].schema).toStrictEqual(schema);
197
+ expect(result.result.endpoints['/validate-url/:id'].schemaName).toBe('ValidateUrl');
198
+ expect(result.result.endpoints['/validate-url/:id'].method).toBe('GET');
199
+ expect(result.result.endpoints['/validate-url/:id'].path).toBe('/validate-url/:id');
200
+ expect(result.result.endpoints['/validate-url/:id'].isAuthenticated).toBe(false);
201
+ expect(result.result.endpoints['/validate-headers']).toBeDefined();
202
+ expect(result.result.endpoints['/validate-headers'].schema).toStrictEqual(schema);
203
+ expect(result.result.endpoints['/validate-headers'].schemaName).toBe('ValidateHeaders');
204
+ expect(result.result.endpoints['/validate-headers'].method).toBe('GET');
205
+ expect(result.result.endpoints['/validate-headers'].path).toBe('/validate-headers');
206
+ expect(result.result.endpoints['/validate-headers'].isAuthenticated).toBe(false);
207
+ expect(result.result.endpoints['/validate-body']).toBeDefined();
208
+ expect(result.result.endpoints['/validate-body'].schema).toStrictEqual(schema);
209
+ expect(result.result.endpoints['/validate-body'].schemaName).toBe('ValidateBody');
210
+ expect(result.result.endpoints['/validate-body'].method).toBe('POST');
211
+ expect(result.result.endpoints['/validate-body'].path).toBe('/validate-body');
212
+ expect(result.result.endpoints['/validate-body'].isAuthenticated).toBe(false);
213
+ expect(result.result.endpoints['/mock']).toBeUndefined();
214
+ expect(result.result.endpoints['/mock/:id']).toBeUndefined();
215
+ });
216
+ });
217
+ });
66
218
  describe('Validation errors', () => {
67
219
  it('Should validate query', async () => {
68
220
  await usingAsync(await createValidateApi(), async ({ client }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"validate.integration.spec.js","sourceRoot":"","sources":["../src/validate.integration.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAA;AAE/D,OAAO,MAAM,MAAM,yCAAyC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,6MAA6M;AAE7M,MAAM,iBAAiB,GAAG,KAAK,IAAI,EAAE;IACnC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAA;IAC/B,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IAEtB,eAAe,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;IAC9F,eAAe,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;IAEzG,MAAM,cAAc,CAAgB;QAClC,QAAQ;QACR,GAAG,EAAE;YACH,GAAG,EAAE;gBACH,iBAAiB,EAAE,QAAQ,CAAC;oBAC1B,MAAM;oBACN,UAAU,EAAE,eAAe;iBAC5B,CAAC,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACzD,mBAAmB,EAAE,QAAQ,CAAC;oBAC5B,MAAM;oBACN,UAAU,EAAE,aAAa;iBAC1B,CAAC,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,YAAY,EAAE,EAAE,CAAC,CAAC;gBACjE,mBAAmB,EAAE,QAAQ,CAAC;oBAC5B,MAAM;oBACN,UAAU,EAAE,iBAAiB;iBAC9B,CAAC,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;gBACrD,OAAO,EAAE,SAAgB,EAAE,2BAA2B;gBACtD,WAAW,EAAE,SAAgB,EAAE,2BAA2B;aAC3D;YACD,IAAI,EAAE;gBACJ,gBAAgB,EAAE,QAAQ,CAAC;oBACzB,MAAM;oBACN,UAAU,EAAE,cAAc;iBAC3B,CAAC,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;oBACvB,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAA;oBAC5B,OAAO,UAAU,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;gBAChC,CAAC,CAAC;gBACF,OAAO,EAAE,SAAgB,EAAE,2BAA2B;aACvD;YACD,KAAK,EAAE;gBACL,WAAW,EAAE,SAAgB,EAAE,2BAA2B;aAC3D;YACD,MAAM,EAAE;gBACN,WAAW,EAAE,SAAgB,EAAE,2BAA2B;aAC3D;SACF;QACD,IAAI;QACJ,IAAI,EAAE,MAAM;KACb,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,YAAY,CAAgB;QACzC,WAAW,EAAE,oBAAoB,IAAI,MAAM;KAC5C,CAAC,CAAA;IAEF,OAAO;QACL,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnE,MAAM;KACP,CAAA;AACH,CAAC,CAAA;AAED,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;YACrC,MAAM,UAAU,CAAC,MAAM,iBAAiB,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC/D,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;gBACpB,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC;wBACX,MAAM,EAAE,KAAK;wBACb,MAAM,EAAE,iBAAiB;wBACzB,KAAK,EAAE,SAAgB;qBACxB,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;wBACnC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;wBACzC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;wBACxC,MAAM,YAAY,GAAkC,MAAM,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;wBAC/E,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;wBACpE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;wBACpE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;oBACtE,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;YACnC,MAAM,UAAU,CAAC,MAAM,iBAAiB,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC/D,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;gBACpB,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC;wBACX,MAAM,EAAE,KAAK;wBACb,MAAM,EAAE,mBAAmB;wBAC3B,GAAG,EAAE,SAAgB;qBACtB,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;wBACnC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;wBACzC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;wBACxC,MAAM,YAAY,GAAkC,MAAM,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;wBAC/E,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;wBAC5D,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;oBAChE,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;YACvC,MAAM,UAAU,CAAC,MAAM,iBAAiB,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC/D,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;gBACpB,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC;wBACX,MAAM,EAAE,KAAK;wBACb,MAAM,EAAE,mBAAmB;wBAC3B,OAAO,EAAE,SAAgB;qBAC1B,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;wBACnC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;wBACzC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;wBACxC,MAAM,YAAY,GAAkC,MAAM,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;wBAC/E,MAAM,CACJ,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,UAAU,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CACxF,CAAC,WAAW,EAAE,CAAA;oBACjB,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YACpC,MAAM,UAAU,CAAC,MAAM,iBAAiB,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC/D,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;gBACpB,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC;wBACX,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,gBAAgB;wBACxB,IAAI,EAAE,SAAgB;qBACvB,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;wBACnC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;wBACzC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;wBACxC,MAAM,YAAY,GAAkC,MAAM,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;wBAC/E,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;oBACvE,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;YACrC,MAAM,UAAU,CAAC,MAAM,iBAAiB,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC/D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;oBAC1B,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,iBAAiB;oBACzB,KAAK,EAAE;wBACL,GAAG,EAAE,KAAK;wBACV,GAAG,EAAE,CAAC;wBACN,GAAG,EAAE,KAAK;qBACX;iBACF,CAAC,CAAA;gBACF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACxC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACrC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACvC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;YACnC,MAAM,UAAU,CAAC,MAAM,iBAAiB,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC/D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;oBAC1B,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,mBAAmB;oBAC3B,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;iBACf,CAAC,CAAA;gBACF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACxC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAClC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;YACvC,MAAM,UAAU,CAAC,MAAM,iBAAiB,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC/D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;oBAC1B,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,mBAAmB;oBAC3B,OAAO,EAAE;wBACP,GAAG,EAAE,KAAK;wBACV,GAAG,EAAE,EAAE;wBACP,GAAG,EAAE,IAAI;qBACV;iBACF,CAAC,CAAA;gBACF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACxC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACrC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACtC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YACpC,MAAM,UAAU,CAAC,MAAM,iBAAiB,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC/D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;oBAC1B,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,gBAAgB;oBACxB,IAAI,EAAE;wBACJ,GAAG,EAAE,KAAK;wBACV,GAAG,EAAE,EAAE;wBACP,GAAG,EAAE,IAAI;qBACV;iBACF,CAAC,CAAA;gBAEF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACxC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACrC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACtC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"validate.integration.spec.js","sourceRoot":"","sources":["../src/validate.integration.spec.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,6 @@
6
6
  "description": "Endpoint model for deleting entities",
7
7
  "properties": {
8
8
  "result": {
9
- "additionalProperties": false,
10
9
  "type": "object"
11
10
  },
12
11
  "url": {
@@ -304,7 +303,6 @@
304
303
  "type": "object"
305
304
  },
306
305
  "result": {
307
- "additionalProperties": false,
308
306
  "type": "object"
309
307
  },
310
308
  "url": {
package/esm/validate.js CHANGED
@@ -11,7 +11,7 @@ export const Validate = (validationOptions) => (action) => {
11
11
  }
12
12
  });
13
13
  const validator = new SchemaValidator(schema, { coerceTypes: true, strict: false });
14
- return async (args) => {
14
+ const wrapped = async (args) => {
15
15
  const anyArgs = args;
16
16
  let body;
17
17
  const { headers } = anyArgs;
@@ -40,5 +40,8 @@ export const Validate = (validationOptions) => (action) => {
40
40
  getBody: () => Promise.resolve(body),
41
41
  });
42
42
  };
43
+ wrapped.schema = schema;
44
+ wrapped.schemaName = validationOptions.schemaName;
45
+ return wrapped;
43
46
  };
44
47
  //# sourceMappingURL=validate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AAExE,MAAM,CAAC,MAAM,QAAQ,GACnB,CAAwD,iBASvD,EAAE,EAAE,CACL,CAA4B,MAAwB,EAAoB,EAAE;IACxE,MAAM,MAAM,GAAG,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAA;IAE9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;QACvD,IAAI,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClE,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAA;QACtF,CAAC;QACD,UAAU,CAAC,oBAAoB,GAAG,IAAI,CAAA;QACtC,IAAI,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;YACnC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAA;QAC3D,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;IAEnF,OAAO,KAAK,EAAE,IAA6B,EAA4B,EAAE;QACvE,MAAM,OAAO,GAAG,IAAW,CAAA;QAC3B,IAAI,IAAU,CAAA;QACd,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;QAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAA;QAClC,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,EAAE,CAAA;QACpC,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,CAAA;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS;QACX,CAAC;QACD,SAAS,CAAC,OAAO,CACf;YACE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChC,EACD,EAAE,UAAU,EAAE,iBAAiB,CAAC,UAAU,EAAE,CAC7C,CAAA;QACD,mBAAmB;QACnB,OAAO,MAAM,MAAM,CAAC;YAClB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO;YACP,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK;YACrB,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG;YACvB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;SACrC,CAAC,CAAA;IACJ,CAAC,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AAExE,MAAM,CAAC,MAAM,QAAQ,GACnB,CAAwD,iBASvD,EAAE,EAAE,CACL,CAA4B,MAAwB,EAAoB,EAAE;IACxE,MAAM,MAAM,GAAG,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAA;IAE9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;QACvD,IAAI,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClE,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAA;QACtF,CAAC;QACD,UAAU,CAAC,oBAAoB,GAAG,IAAI,CAAA;QACtC,IAAI,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;YACnC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAA;QAC3D,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;IAEnF,MAAM,OAAO,GAAG,KAAK,EAAE,IAA6B,EAA4B,EAAE;QAChF,MAAM,OAAO,GAAG,IAAW,CAAA;QAC3B,IAAI,IAAU,CAAA;QACd,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;QAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAA;QAClC,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,EAAE,CAAA;QACpC,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,CAAA;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS;QACX,CAAC;QACD,SAAS,CAAC,OAAO,CACf;YACE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChC,EACD,EAAE,UAAU,EAAE,iBAAiB,CAAC,UAAU,EAAE,CAC7C,CAAA;QACD,mBAAmB;QACnB,OAAO,MAAM,MAAM,CAAC;YAClB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO;YACP,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK;YACrB,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG;YACvB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;SACrC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA;IACvB,OAAO,CAAC,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAA;IAEjD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}