@furystack/rest-service 10.1.2 → 11.0.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/CHANGELOG.md +36 -76
- package/README.md +10 -2
- package/esm/authenticate.d.ts +19 -0
- package/esm/authenticate.d.ts.map +1 -1
- package/esm/authenticate.js +19 -0
- package/esm/authenticate.js.map +1 -1
- package/esm/authorize.d.ts +19 -0
- package/esm/authorize.d.ts.map +1 -1
- package/esm/authorize.js +19 -0
- package/esm/authorize.js.map +1 -1
- package/esm/endpoint-generators/create-get-entity-endpoint.spec.js +9 -9
- package/esm/endpoint-generators/create-get-entity-endpoint.spec.js.map +1 -1
- package/esm/endpoint-generators/create-get-swagger-json-action.d.ts +2 -2
- package/esm/endpoint-generators/create-get-swagger-json-action.d.ts.map +1 -1
- package/esm/endpoint-generators/create-patch-endpoint.spec.js +6 -6
- package/esm/endpoint-generators/create-patch-endpoint.spec.js.map +1 -1
- package/esm/endpoint-generators/create-post-endpoint.spec.js +6 -6
- package/esm/endpoint-generators/create-post-endpoint.spec.js.map +1 -1
- package/esm/get-schema-from-api.d.ts.map +1 -1
- package/esm/get-schema-from-api.js +6 -3
- package/esm/get-schema-from-api.js.map +1 -1
- package/esm/get-schema-from-api.spec.js +14 -12
- package/esm/get-schema-from-api.spec.js.map +1 -1
- package/esm/proxy-manager.spec.js +1 -1
- package/esm/proxy-manager.spec.js.map +1 -1
- package/esm/read-post-body.js.map +1 -1
- package/esm/rest-service.integration.spec.js +10 -10
- package/esm/rest-service.integration.spec.js.map +1 -1
- package/esm/server-response-extensions.js.map +1 -1
- package/esm/server-response-extensions.spec.d.ts.map +1 -1
- package/esm/server-response-extensions.spec.js +3 -3
- package/esm/server-response-extensions.spec.js.map +1 -1
- package/esm/swagger/generate-swagger-json.d.ts +2 -2
- package/esm/swagger/generate-swagger-json.d.ts.map +1 -1
- package/esm/swagger/generate-swagger-json.js +71 -69
- package/esm/swagger/generate-swagger-json.js.map +1 -1
- package/esm/swagger/generate-swagger-json.spec.js +97 -86
- package/esm/swagger/generate-swagger-json.spec.js.map +1 -1
- package/esm/validate.d.ts +27 -6
- package/esm/validate.d.ts.map +1 -1
- package/esm/validate.integration.schema.d.ts +10 -5
- package/esm/validate.integration.schema.d.ts.map +1 -1
- package/esm/validate.integration.spec.js +76 -31
- package/esm/validate.integration.spec.js.map +1 -1
- package/esm/validate.integration.spec.schema.json +24 -31
- package/esm/validate.js +24 -22
- package/esm/validate.js.map +1 -1
- package/package.json +11 -11
- package/src/authenticate.ts +19 -0
- package/src/authorize.ts +19 -0
- package/src/endpoint-generators/create-get-entity-endpoint.spec.ts +9 -9
- package/src/endpoint-generators/create-get-swagger-json-action.ts +2 -2
- package/src/endpoint-generators/create-patch-endpoint.spec.ts +6 -6
- package/src/endpoint-generators/create-post-endpoint.spec.ts +6 -6
- package/src/get-schema-from-api.spec.ts +14 -12
- package/src/get-schema-from-api.ts +13 -8
- package/src/proxy-manager.spec.ts +4 -4
- package/src/read-post-body.ts +1 -1
- package/src/rest-service.integration.spec.ts +10 -10
- package/src/server-response-extensions.spec.ts +8 -8
- package/src/server-response-extensions.ts +1 -1
- package/src/swagger/generate-swagger-json.spec.ts +107 -96
- package/src/swagger/generate-swagger-json.ts +80 -71
- package/src/validate.integration.schema.ts +11 -5
- package/src/validate.integration.spec.schema.json +24 -31
- package/src/validate.integration.spec.ts +84 -36
- package/src/validate.ts +61 -32
|
@@ -1,9 +1,16 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
1
2
|
import { getStoreManager, InMemoryStore, User } from '@furystack/core';
|
|
2
3
|
import { getPort } from '@furystack/core/port-generator';
|
|
3
4
|
import { Injector } from '@furystack/inject';
|
|
4
5
|
import { createClient, ResponseError } from '@furystack/rest-client-fetch';
|
|
5
6
|
import { usingAsync } from '@furystack/utils';
|
|
6
7
|
import { describe, expect, it } from 'vitest';
|
|
8
|
+
import { createDeleteEndpoint } from './endpoint-generators/create-delete-endpoint.js';
|
|
9
|
+
import { createGetCollectionEndpoint } from './endpoint-generators/create-get-collection-endpoint.js';
|
|
10
|
+
import { createGetEntityEndpoint } from './endpoint-generators/create-get-entity-endpoint.js';
|
|
11
|
+
import { createPatchEndpoint } from './endpoint-generators/create-patch-endpoint.js';
|
|
12
|
+
import { createPostEndpoint } from './endpoint-generators/create-post-endpoint.js';
|
|
13
|
+
import { MockClass } from './endpoint-generators/utils.js';
|
|
7
14
|
import { useRestService } from './helpers.js';
|
|
8
15
|
import { DefaultSession } from './models/default-session.js';
|
|
9
16
|
import { JsonResult } from './request-action-implementation.js';
|
|
@@ -38,8 +45,14 @@ const createValidateApi = async (options = { enableGetSchema: false }) => {
|
|
|
38
45
|
schema,
|
|
39
46
|
schemaName: 'ValidateHeaders',
|
|
40
47
|
})(async ({ headers }) => JsonResult({ ...headers })),
|
|
41
|
-
'/mock':
|
|
42
|
-
|
|
48
|
+
'/mock': Validate({
|
|
49
|
+
schema,
|
|
50
|
+
schemaName: 'GetMockCollectionEndpoint',
|
|
51
|
+
})(createGetCollectionEndpoint({ model: MockClass, primaryKey: 'id' })),
|
|
52
|
+
'/mock/:id': Validate({
|
|
53
|
+
schema,
|
|
54
|
+
schemaName: 'GetMockEntityEndpoint',
|
|
55
|
+
})(createGetEntityEndpoint({ model: MockClass, primaryKey: 'id' })),
|
|
43
56
|
},
|
|
44
57
|
POST: {
|
|
45
58
|
'/validate-body': Validate({
|
|
@@ -49,13 +62,22 @@ const createValidateApi = async (options = { enableGetSchema: false }) => {
|
|
|
49
62
|
const body = await getBody();
|
|
50
63
|
return JsonResult({ ...body });
|
|
51
64
|
}),
|
|
52
|
-
'/mock':
|
|
65
|
+
'/mock': Validate({
|
|
66
|
+
schema,
|
|
67
|
+
schemaName: 'PostMockEndpoint',
|
|
68
|
+
})(createPostEndpoint({ model: MockClass, primaryKey: 'id' })),
|
|
53
69
|
},
|
|
54
70
|
PATCH: {
|
|
55
|
-
'/mock/:id':
|
|
71
|
+
'/mock/:id': Validate({
|
|
72
|
+
schema,
|
|
73
|
+
schemaName: 'PatchMockEndpoint',
|
|
74
|
+
})(createPatchEndpoint({ model: MockClass, primaryKey: 'id' })),
|
|
56
75
|
},
|
|
57
76
|
DELETE: {
|
|
58
|
-
'/mock/:id':
|
|
77
|
+
'/mock/:id': Validate({
|
|
78
|
+
schema,
|
|
79
|
+
schemaName: 'DeleteMockEndpoint',
|
|
80
|
+
})(createDeleteEndpoint({ model: MockClass, primaryKey: 'id' })),
|
|
59
81
|
},
|
|
60
82
|
},
|
|
61
83
|
port,
|
|
@@ -186,32 +208,55 @@ describe('Validation integration tests', () => {
|
|
|
186
208
|
expect(result.result.name).toBe(name);
|
|
187
209
|
expect(result.result.description).toBe(description);
|
|
188
210
|
expect(result.result.version).toBe(version);
|
|
189
|
-
|
|
190
|
-
expect(result.result.endpoints['/validate-query']
|
|
191
|
-
expect(result.result.endpoints['/validate-query']
|
|
192
|
-
expect(result.result.endpoints['/validate-query']
|
|
193
|
-
expect(result.result.endpoints['/validate-query']
|
|
194
|
-
expect(result.result.endpoints['/validate-query']
|
|
195
|
-
expect(result.result.endpoints['/validate-url/:id']).toBeDefined();
|
|
196
|
-
expect(result.result.endpoints['/validate-url/:id']
|
|
197
|
-
expect(result.result.endpoints['/validate-url/:id']
|
|
198
|
-
expect(result.result.endpoints['/validate-url/:id']
|
|
199
|
-
expect(result.result.endpoints['/validate-url/:id']
|
|
200
|
-
expect(result.result.endpoints['/validate-
|
|
201
|
-
expect(result.result.endpoints['/validate-headers']).
|
|
202
|
-
expect(result.result.endpoints['/validate-headers']
|
|
203
|
-
expect(result.result.endpoints['/validate-headers']
|
|
204
|
-
expect(result.result.endpoints['/validate-headers']
|
|
205
|
-
expect(result.result.endpoints['/
|
|
206
|
-
expect(result.result.endpoints['/
|
|
207
|
-
expect(result.result.endpoints['/
|
|
208
|
-
expect(result.result.endpoints['/
|
|
209
|
-
expect(result.result.endpoints['/
|
|
210
|
-
expect(result.result.endpoints['/
|
|
211
|
-
expect(result.result.endpoints['/
|
|
212
|
-
expect(result.result.endpoints['/
|
|
213
|
-
expect(result.result.endpoints['/mock']).
|
|
214
|
-
expect(result.result.endpoints['/mock/:id']).
|
|
211
|
+
// GET endpoints
|
|
212
|
+
expect(result.result.endpoints.GET?.['/validate-query']).toBeDefined();
|
|
213
|
+
expect(result.result.endpoints.GET?.['/validate-query']?.schema).toStrictEqual(schema);
|
|
214
|
+
expect(result.result.endpoints.GET?.['/validate-query']?.schemaName).toBe('ValidateQuery');
|
|
215
|
+
expect(result.result.endpoints.GET?.['/validate-query']?.path).toBe('/validate-query');
|
|
216
|
+
expect(result.result.endpoints.GET?.['/validate-query']?.isAuthenticated).toBe(false);
|
|
217
|
+
expect(result.result.endpoints.GET?.['/validate-url/:id']).toBeDefined();
|
|
218
|
+
expect(result.result.endpoints.GET?.['/validate-url/:id']?.schema).toStrictEqual(schema);
|
|
219
|
+
expect(result.result.endpoints.GET?.['/validate-url/:id']?.schemaName).toBe('ValidateUrl');
|
|
220
|
+
expect(result.result.endpoints.GET?.['/validate-url/:id']?.path).toBe('/validate-url/:id');
|
|
221
|
+
expect(result.result.endpoints.GET?.['/validate-url/:id']?.isAuthenticated).toBe(false);
|
|
222
|
+
expect(result.result.endpoints.GET?.['/validate-headers']).toBeDefined();
|
|
223
|
+
expect(result.result.endpoints.GET?.['/validate-headers']?.schema).toStrictEqual(schema);
|
|
224
|
+
expect(result.result.endpoints.GET?.['/validate-headers']?.schemaName).toBe('ValidateHeaders');
|
|
225
|
+
expect(result.result.endpoints.GET?.['/validate-headers']?.path).toBe('/validate-headers');
|
|
226
|
+
expect(result.result.endpoints.GET?.['/validate-headers']?.isAuthenticated).toBe(false);
|
|
227
|
+
expect(result.result.endpoints.GET?.['/mock']).toBeDefined();
|
|
228
|
+
expect(result.result.endpoints.GET?.['/mock']?.schema).toStrictEqual(schema);
|
|
229
|
+
expect(result.result.endpoints.GET?.['/mock']?.schemaName).toBe('GetMockCollectionEndpoint');
|
|
230
|
+
expect(result.result.endpoints.GET?.['/mock']?.path).toBe('/mock');
|
|
231
|
+
expect(result.result.endpoints.GET?.['/mock']?.isAuthenticated).toBe(false);
|
|
232
|
+
expect(result.result.endpoints.GET?.['/mock/:id']).toBeDefined();
|
|
233
|
+
expect(result.result.endpoints.GET?.['/mock/:id']?.schema).toStrictEqual(schema);
|
|
234
|
+
expect(result.result.endpoints.GET?.['/mock/:id']?.schemaName).toBe('GetMockEntityEndpoint');
|
|
235
|
+
expect(result.result.endpoints.GET?.['/mock/:id']?.path).toBe('/mock/:id');
|
|
236
|
+
expect(result.result.endpoints.GET?.['/mock/:id']?.isAuthenticated).toBe(false);
|
|
237
|
+
// POST endpoints
|
|
238
|
+
expect(result.result.endpoints.POST?.['/validate-body']).toBeDefined();
|
|
239
|
+
expect(result.result.endpoints.POST?.['/validate-body']?.schema).toStrictEqual(schema);
|
|
240
|
+
expect(result.result.endpoints.POST?.['/validate-body']?.schemaName).toBe('ValidateBody');
|
|
241
|
+
expect(result.result.endpoints.POST?.['/validate-body']?.path).toBe('/validate-body');
|
|
242
|
+
expect(result.result.endpoints.POST?.['/validate-body']?.isAuthenticated).toBe(false);
|
|
243
|
+
expect(result.result.endpoints.POST?.['/mock']).toBeDefined();
|
|
244
|
+
expect(result.result.endpoints.POST?.['/mock']?.schema).toStrictEqual(schema);
|
|
245
|
+
expect(result.result.endpoints.POST?.['/mock']?.schemaName).toBe('PostMockEndpoint');
|
|
246
|
+
expect(result.result.endpoints.POST?.['/mock']?.path).toBe('/mock');
|
|
247
|
+
expect(result.result.endpoints.POST?.['/mock']?.isAuthenticated).toBe(false);
|
|
248
|
+
// PATCH endpoints
|
|
249
|
+
expect(result.result.endpoints.PATCH?.['/mock/:id']).toBeDefined();
|
|
250
|
+
expect(result.result.endpoints.PATCH?.['/mock/:id']?.schema).toStrictEqual(schema);
|
|
251
|
+
expect(result.result.endpoints.PATCH?.['/mock/:id']?.schemaName).toBe('PatchMockEndpoint');
|
|
252
|
+
expect(result.result.endpoints.PATCH?.['/mock/:id']?.path).toBe('/mock/:id');
|
|
253
|
+
expect(result.result.endpoints.PATCH?.['/mock/:id']?.isAuthenticated).toBe(false);
|
|
254
|
+
// DELETE endpoints
|
|
255
|
+
expect(result.result.endpoints.DELETE?.['/mock/:id']).toBeDefined();
|
|
256
|
+
expect(result.result.endpoints.DELETE?.['/mock/:id']?.schema).toStrictEqual(schema);
|
|
257
|
+
expect(result.result.endpoints.DELETE?.['/mock/:id']?.schemaName).toBe('DeleteMockEndpoint');
|
|
258
|
+
expect(result.result.endpoints.DELETE?.['/mock/:id']?.path).toBe('/mock/:id');
|
|
259
|
+
expect(result.result.endpoints.DELETE?.['/mock/:id']?.isAuthenticated).toBe(false);
|
|
215
260
|
});
|
|
216
261
|
});
|
|
217
262
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.integration.spec.js","sourceRoot":"","sources":["../src/validate.integration.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validate.integration.spec.js","sourceRoot":"","sources":["../src/validate.integration.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,9 @@
|
|
|
22
22
|
"required": ["url", "result"],
|
|
23
23
|
"type": "object"
|
|
24
24
|
},
|
|
25
|
+
"DeleteMockEndpoint": {
|
|
26
|
+
"$ref": "#/definitions/DeleteEndpoint%3CMock%2C%22id%22%3E"
|
|
27
|
+
},
|
|
25
28
|
"FilterType<Mock>": {
|
|
26
29
|
"additionalProperties": false,
|
|
27
30
|
"properties": {
|
|
@@ -273,6 +276,12 @@
|
|
|
273
276
|
"required": ["query", "url", "result"],
|
|
274
277
|
"type": "object"
|
|
275
278
|
},
|
|
279
|
+
"GetMockCollectionEndpoint": {
|
|
280
|
+
"$ref": "#/definitions/GetCollectionEndpoint%3CMock%3E"
|
|
281
|
+
},
|
|
282
|
+
"GetMockEntityEndpoint": {
|
|
283
|
+
"$ref": "#/definitions/GetEntityEndpoint%3CMock%2C%22id%22%3E"
|
|
284
|
+
},
|
|
276
285
|
"Mock": {
|
|
277
286
|
"additionalProperties": false,
|
|
278
287
|
"properties": {
|
|
@@ -286,21 +295,12 @@
|
|
|
286
295
|
"required": ["id", "value"],
|
|
287
296
|
"type": "object"
|
|
288
297
|
},
|
|
289
|
-
"PatchEndpoint<Mock,\"id\">": {
|
|
298
|
+
"PatchEndpoint<Mock,\"id\",Mock>": {
|
|
290
299
|
"additionalProperties": false,
|
|
291
300
|
"description": "Endpoint model for updating entities",
|
|
292
301
|
"properties": {
|
|
293
302
|
"body": {
|
|
294
|
-
"
|
|
295
|
-
"properties": {
|
|
296
|
-
"id": {
|
|
297
|
-
"type": "string"
|
|
298
|
-
},
|
|
299
|
-
"value": {
|
|
300
|
-
"type": "string"
|
|
301
|
-
}
|
|
302
|
-
},
|
|
303
|
-
"type": "object"
|
|
303
|
+
"$ref": "#/definitions/Mock"
|
|
304
304
|
},
|
|
305
305
|
"result": {
|
|
306
306
|
"type": "object"
|
|
@@ -319,12 +319,15 @@
|
|
|
319
319
|
"required": ["body", "url", "result"],
|
|
320
320
|
"type": "object"
|
|
321
321
|
},
|
|
322
|
-
"
|
|
322
|
+
"PatchMockEndpoint": {
|
|
323
|
+
"$ref": "#/definitions/PatchEndpoint%3CMock%2C%22id%22%2CMock%3E"
|
|
324
|
+
},
|
|
325
|
+
"PostEndpoint<Mock,\"id\",Mock>": {
|
|
323
326
|
"additionalProperties": false,
|
|
324
327
|
"description": "Endpoint model for creating new entities",
|
|
325
328
|
"properties": {
|
|
326
329
|
"body": {
|
|
327
|
-
"$ref": "#/definitions/
|
|
330
|
+
"$ref": "#/definitions/Mock"
|
|
328
331
|
},
|
|
329
332
|
"result": {
|
|
330
333
|
"$ref": "#/definitions/Mock"
|
|
@@ -333,6 +336,9 @@
|
|
|
333
336
|
"required": ["body", "result"],
|
|
334
337
|
"type": "object"
|
|
335
338
|
},
|
|
339
|
+
"PostMockEndpoint": {
|
|
340
|
+
"$ref": "#/definitions/PostEndpoint%3CMock%2C%22id%22%2CMock%3E"
|
|
341
|
+
},
|
|
336
342
|
"RestApi": {
|
|
337
343
|
"additionalProperties": false,
|
|
338
344
|
"properties": {
|
|
@@ -640,7 +646,7 @@
|
|
|
640
646
|
"additionalProperties": false,
|
|
641
647
|
"properties": {
|
|
642
648
|
"/mock/:id": {
|
|
643
|
-
"$ref": "#/definitions/
|
|
649
|
+
"$ref": "#/definitions/DeleteMockEndpoint"
|
|
644
650
|
}
|
|
645
651
|
},
|
|
646
652
|
"required": ["/mock/:id"],
|
|
@@ -650,10 +656,10 @@
|
|
|
650
656
|
"additionalProperties": false,
|
|
651
657
|
"properties": {
|
|
652
658
|
"/mock": {
|
|
653
|
-
"$ref": "#/definitions/
|
|
659
|
+
"$ref": "#/definitions/GetMockCollectionEndpoint"
|
|
654
660
|
},
|
|
655
661
|
"/mock/:id": {
|
|
656
|
-
"$ref": "#/definitions/
|
|
662
|
+
"$ref": "#/definitions/GetMockEntityEndpoint"
|
|
657
663
|
},
|
|
658
664
|
"/validate-headers": {
|
|
659
665
|
"$ref": "#/definitions/ValidateHeaders"
|
|
@@ -702,7 +708,7 @@
|
|
|
702
708
|
"additionalProperties": false,
|
|
703
709
|
"properties": {
|
|
704
710
|
"/mock/:id": {
|
|
705
|
-
"$ref": "#/definitions/
|
|
711
|
+
"$ref": "#/definitions/PatchMockEndpoint"
|
|
706
712
|
}
|
|
707
713
|
},
|
|
708
714
|
"required": ["/mock/:id"],
|
|
@@ -712,7 +718,7 @@
|
|
|
712
718
|
"additionalProperties": false,
|
|
713
719
|
"properties": {
|
|
714
720
|
"/mock": {
|
|
715
|
-
"$ref": "#/definitions/
|
|
721
|
+
"$ref": "#/definitions/PostMockEndpoint"
|
|
716
722
|
},
|
|
717
723
|
"/validate-body": {
|
|
718
724
|
"$ref": "#/definitions/ValidateBody"
|
|
@@ -754,19 +760,6 @@
|
|
|
754
760
|
},
|
|
755
761
|
"required": ["GET", "POST", "PATCH", "DELETE"],
|
|
756
762
|
"type": "object"
|
|
757
|
-
},
|
|
758
|
-
"WithOptionalId<Mock,\"id\">": {
|
|
759
|
-
"additionalProperties": false,
|
|
760
|
-
"properties": {
|
|
761
|
-
"id": {
|
|
762
|
-
"type": "string"
|
|
763
|
-
},
|
|
764
|
-
"value": {
|
|
765
|
-
"type": "string"
|
|
766
|
-
}
|
|
767
|
-
},
|
|
768
|
-
"required": ["value"],
|
|
769
|
-
"type": "object"
|
|
770
763
|
}
|
|
771
764
|
}
|
|
772
765
|
}
|
package/esm/validate.js
CHANGED
|
@@ -2,7 +2,7 @@ import { SchemaValidator } from './schema-validator/schema-validator.js';
|
|
|
2
2
|
export const Validate = (validationOptions) => (action) => {
|
|
3
3
|
const schema = { ...validationOptions.schema };
|
|
4
4
|
Object.values(schema.definitions).forEach((definition) => {
|
|
5
|
-
if (definition.required
|
|
5
|
+
if (definition.required?.includes('result')) {
|
|
6
6
|
definition.required = definition.required.filter((value) => value !== 'result');
|
|
7
7
|
}
|
|
8
8
|
definition.additionalProperties = true;
|
|
@@ -12,36 +12,38 @@ export const Validate = (validationOptions) => (action) => {
|
|
|
12
12
|
});
|
|
13
13
|
const validator = new SchemaValidator(schema, { coerceTypes: true, strict: false });
|
|
14
14
|
const wrapped = async (args) => {
|
|
15
|
-
const
|
|
15
|
+
const headers = 'headers' in args ? args.headers : undefined;
|
|
16
|
+
const query = 'getQuery' in args ? args.getQuery() : undefined;
|
|
17
|
+
const url = 'getUrlParams' in args ? args.getUrlParams() : undefined;
|
|
16
18
|
let body;
|
|
17
|
-
const { headers } = anyArgs;
|
|
18
|
-
const query = anyArgs.getQuery?.();
|
|
19
|
-
const url = anyArgs.getUrlParams?.();
|
|
20
19
|
try {
|
|
21
|
-
|
|
20
|
+
if ('getBody' in args) {
|
|
21
|
+
body = await args.getBody();
|
|
22
|
+
}
|
|
22
23
|
}
|
|
23
|
-
catch
|
|
24
|
-
//
|
|
24
|
+
catch {
|
|
25
|
+
// Body parsing may fail for requests without body
|
|
25
26
|
}
|
|
26
27
|
validator.isValid({
|
|
27
|
-
...(query ? { query } : {}),
|
|
28
|
-
...(body ? { body } : {}),
|
|
29
|
-
...(url ? { url } : {}),
|
|
30
|
-
...(headers ? { headers } : {}),
|
|
28
|
+
...(query !== undefined ? { query } : {}),
|
|
29
|
+
...(body !== undefined ? { body } : {}),
|
|
30
|
+
...(url !== undefined ? { url } : {}),
|
|
31
|
+
...(headers !== undefined ? { headers } : {}),
|
|
31
32
|
}, { schemaName: validationOptions.schemaName });
|
|
32
|
-
|
|
33
|
-
return await action({
|
|
33
|
+
const validatedArgs = {
|
|
34
34
|
request: args.request,
|
|
35
35
|
response: args.response,
|
|
36
36
|
injector: args.injector,
|
|
37
|
-
headers,
|
|
38
|
-
getQuery: () => query,
|
|
39
|
-
getUrlParams: () => url,
|
|
40
|
-
getBody: () => Promise.resolve(body),
|
|
41
|
-
}
|
|
37
|
+
...(headers !== undefined && { headers }),
|
|
38
|
+
...(query !== undefined && { getQuery: () => query }),
|
|
39
|
+
...(url !== undefined && { getUrlParams: () => url }),
|
|
40
|
+
...(body !== undefined && { getBody: () => Promise.resolve(body) }),
|
|
41
|
+
};
|
|
42
|
+
return await action(validatedArgs);
|
|
42
43
|
};
|
|
43
|
-
wrapped
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
return Object.assign(wrapped, {
|
|
45
|
+
schema,
|
|
46
|
+
schemaName: validationOptions.schemaName,
|
|
47
|
+
});
|
|
46
48
|
};
|
|
47
49
|
//# sourceMappingURL=validate.js.map
|
package/esm/validate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@furystack/rest-service",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "11.0.0",
|
|
4
4
|
"description": "Repository implementation for FuryStack",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -37,24 +37,24 @@
|
|
|
37
37
|
},
|
|
38
38
|
"homepage": "https://github.com/furystack/furystack",
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@furystack/core": "^15.0.
|
|
41
|
-
"@furystack/inject": "^12.0.
|
|
42
|
-
"@furystack/repository": "^10.0.
|
|
43
|
-
"@furystack/rest": "^8.0.
|
|
44
|
-
"@furystack/security": "^6.0.
|
|
45
|
-
"@furystack/utils": "^8.1.
|
|
40
|
+
"@furystack/core": "^15.0.32",
|
|
41
|
+
"@furystack/inject": "^12.0.26",
|
|
42
|
+
"@furystack/repository": "^10.0.32",
|
|
43
|
+
"@furystack/rest": "^8.0.32",
|
|
44
|
+
"@furystack/security": "^6.0.32",
|
|
45
|
+
"@furystack/utils": "^8.1.8",
|
|
46
46
|
"ajv": "^8.17.1",
|
|
47
47
|
"ajv-formats": "^3.0.1",
|
|
48
48
|
"path-to-regexp": "^8.3.0",
|
|
49
49
|
"semaphore-async-await": "^1.5.1"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@furystack/rest-client-fetch": "^8.0.
|
|
53
|
-
"@types/node": "^25.0.
|
|
52
|
+
"@furystack/rest-client-fetch": "^8.0.32",
|
|
53
|
+
"@types/node": "^25.0.10",
|
|
54
54
|
"@types/ws": "^8.18.1",
|
|
55
55
|
"typescript": "^5.9.3",
|
|
56
|
-
"vitest": "^4.0.
|
|
57
|
-
"ws": "^8.
|
|
56
|
+
"vitest": "^4.0.17",
|
|
57
|
+
"ws": "^8.19.0"
|
|
58
58
|
},
|
|
59
59
|
"gitHead": "1045d854bfd8c475b7035471d130d401417a2321"
|
|
60
60
|
}
|
package/src/authenticate.ts
CHANGED
|
@@ -4,6 +4,25 @@ import { HttpUserContext } from './http-user-context.js'
|
|
|
4
4
|
import type { ActionResult, RequestAction, RequestActionOptions } from './request-action-implementation.js'
|
|
5
5
|
import { JsonResult } from './request-action-implementation.js'
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Higher-order function that wraps a request action to require authentication.
|
|
9
|
+
* If the user is not authenticated, returns a 401 Unauthorized response.
|
|
10
|
+
* Includes a random delay on unauthorized requests to mitigate timing attacks.
|
|
11
|
+
*
|
|
12
|
+
* @returns A function that wraps the provided action with authentication check
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* // Wrap an endpoint to require authentication
|
|
16
|
+
* const protectedEndpoint = Authenticate()(myEndpoint)
|
|
17
|
+
*
|
|
18
|
+
* // Or use directly in API definition
|
|
19
|
+
* api: {
|
|
20
|
+
* GET: {
|
|
21
|
+
* '/users': Authenticate()(getUsersEndpoint)
|
|
22
|
+
* }
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
7
26
|
export const Authenticate =
|
|
8
27
|
() =>
|
|
9
28
|
<T extends { result: unknown }>(action: RequestAction<T>): RequestAction<T> => {
|
package/src/authorize.ts
CHANGED
|
@@ -2,6 +2,25 @@ import { AuthorizationError, isAuthorized } from '@furystack/core'
|
|
|
2
2
|
import { sleepAsync } from '@furystack/utils'
|
|
3
3
|
import type { ActionResult, RequestAction, RequestActionOptions } from './request-action-implementation.js'
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Higher-order function that wraps a request action to require specific roles.
|
|
7
|
+
* If the user does not have the required roles, throws an AuthorizationError.
|
|
8
|
+
* Includes a random delay on unauthorized requests to mitigate timing attacks.
|
|
9
|
+
*
|
|
10
|
+
* @param roles - The roles required to access the endpoint
|
|
11
|
+
* @returns A function that wraps the provided action with authorization check
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* // Require 'admin' role
|
|
15
|
+
* const adminEndpoint = Authorize('admin')(myEndpoint)
|
|
16
|
+
*
|
|
17
|
+
* // Require multiple roles (user must have ALL specified roles)
|
|
18
|
+
* const superAdminEndpoint = Authorize('admin', 'superuser')(myEndpoint)
|
|
19
|
+
*
|
|
20
|
+
* // Chain with Authenticate for authentication + authorization
|
|
21
|
+
* const protectedEndpoint = Authenticate()(Authorize('admin')(myEndpoint))
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
5
24
|
export const Authorize =
|
|
6
25
|
(...roles: string[]) =>
|
|
7
26
|
<T extends { result: unknown }>(action: RequestAction<T>): RequestAction<T> => {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getPort } from '@furystack/core/port-generator'
|
|
2
2
|
import { Injector } from '@furystack/inject'
|
|
3
|
+
import { getDataSetFor } from '@furystack/repository'
|
|
3
4
|
import type { GetEntityEndpoint } from '@furystack/rest'
|
|
4
5
|
import { serializeToQueryString } from '@furystack/rest'
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { getDataSetFor } from '@furystack/repository'
|
|
6
|
+
import { usingAsync } from '@furystack/utils'
|
|
7
|
+
import { describe, expect, it } from 'vitest'
|
|
8
8
|
import { useRestService } from '../helpers.js'
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
9
|
+
import { createGetEntityEndpoint } from './create-get-entity-endpoint.js'
|
|
10
|
+
import { MockClass, setupContext } from './utils.js'
|
|
11
11
|
|
|
12
12
|
describe('createGetEntityEndpoint', () => {
|
|
13
13
|
it('Should return the entity', async () => {
|
|
@@ -29,7 +29,7 @@ describe('createGetEntityEndpoint', () => {
|
|
|
29
29
|
|
|
30
30
|
const response = await fetch(`http://127.0.0.1:${port}/api/mock`, { method: 'GET' })
|
|
31
31
|
expect(response.status).toBe(200)
|
|
32
|
-
const body = await response.json()
|
|
32
|
+
const body = (await response.json()) as MockClass
|
|
33
33
|
expect(body).toEqual(mockEntity)
|
|
34
34
|
})
|
|
35
35
|
})
|
|
@@ -55,7 +55,7 @@ describe('createGetEntityEndpoint', () => {
|
|
|
55
55
|
method: 'GET',
|
|
56
56
|
})
|
|
57
57
|
expect(response.status).toBe(200)
|
|
58
|
-
const body = await response.json()
|
|
58
|
+
const body = (await response.json()) as { id: string }
|
|
59
59
|
expect(body).toEqual({ id: mockEntity.id })
|
|
60
60
|
})
|
|
61
61
|
})
|
|
@@ -76,7 +76,7 @@ describe('createGetEntityEndpoint', () => {
|
|
|
76
76
|
})
|
|
77
77
|
const result = await fetch(`http://127.0.0.1:${port}/api/mock`, { method: 'GET' })
|
|
78
78
|
expect(result.status).toBe(404)
|
|
79
|
-
const body = await result.json()
|
|
79
|
+
const body = (await result.json()) as { message: string }
|
|
80
80
|
expect(body).toEqual({ message: 'Entity not found' })
|
|
81
81
|
})
|
|
82
82
|
})
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type ApiEndpointSchema, type SwaggerDocument } from '@furystack/rest'
|
|
2
2
|
import type { RestApiImplementation } from '../api-manager.js'
|
|
3
3
|
import { getSchemaFromApi } from '../get-schema-from-api.js'
|
|
4
4
|
import { JsonResult, type RequestAction } from '../request-action-implementation.js'
|
|
5
5
|
import { generateSwaggerJsonFromApiSchema } from '../swagger/generate-swagger-json.js'
|
|
6
6
|
|
|
7
|
-
export type GetSchemaResult =
|
|
7
|
+
export type GetSchemaResult = ApiEndpointSchema['endpoints']
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Generates a RequestAction that retrieves the Swagger JSON schema from a FuryStack API implementation.
|