@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.
Files changed (67) hide show
  1. package/CHANGELOG.md +36 -76
  2. package/README.md +10 -2
  3. package/esm/authenticate.d.ts +19 -0
  4. package/esm/authenticate.d.ts.map +1 -1
  5. package/esm/authenticate.js +19 -0
  6. package/esm/authenticate.js.map +1 -1
  7. package/esm/authorize.d.ts +19 -0
  8. package/esm/authorize.d.ts.map +1 -1
  9. package/esm/authorize.js +19 -0
  10. package/esm/authorize.js.map +1 -1
  11. package/esm/endpoint-generators/create-get-entity-endpoint.spec.js +9 -9
  12. package/esm/endpoint-generators/create-get-entity-endpoint.spec.js.map +1 -1
  13. package/esm/endpoint-generators/create-get-swagger-json-action.d.ts +2 -2
  14. package/esm/endpoint-generators/create-get-swagger-json-action.d.ts.map +1 -1
  15. package/esm/endpoint-generators/create-patch-endpoint.spec.js +6 -6
  16. package/esm/endpoint-generators/create-patch-endpoint.spec.js.map +1 -1
  17. package/esm/endpoint-generators/create-post-endpoint.spec.js +6 -6
  18. package/esm/endpoint-generators/create-post-endpoint.spec.js.map +1 -1
  19. package/esm/get-schema-from-api.d.ts.map +1 -1
  20. package/esm/get-schema-from-api.js +6 -3
  21. package/esm/get-schema-from-api.js.map +1 -1
  22. package/esm/get-schema-from-api.spec.js +14 -12
  23. package/esm/get-schema-from-api.spec.js.map +1 -1
  24. package/esm/proxy-manager.spec.js +1 -1
  25. package/esm/proxy-manager.spec.js.map +1 -1
  26. package/esm/read-post-body.js.map +1 -1
  27. package/esm/rest-service.integration.spec.js +10 -10
  28. package/esm/rest-service.integration.spec.js.map +1 -1
  29. package/esm/server-response-extensions.js.map +1 -1
  30. package/esm/server-response-extensions.spec.d.ts.map +1 -1
  31. package/esm/server-response-extensions.spec.js +3 -3
  32. package/esm/server-response-extensions.spec.js.map +1 -1
  33. package/esm/swagger/generate-swagger-json.d.ts +2 -2
  34. package/esm/swagger/generate-swagger-json.d.ts.map +1 -1
  35. package/esm/swagger/generate-swagger-json.js +71 -69
  36. package/esm/swagger/generate-swagger-json.js.map +1 -1
  37. package/esm/swagger/generate-swagger-json.spec.js +97 -86
  38. package/esm/swagger/generate-swagger-json.spec.js.map +1 -1
  39. package/esm/validate.d.ts +27 -6
  40. package/esm/validate.d.ts.map +1 -1
  41. package/esm/validate.integration.schema.d.ts +10 -5
  42. package/esm/validate.integration.schema.d.ts.map +1 -1
  43. package/esm/validate.integration.spec.js +76 -31
  44. package/esm/validate.integration.spec.js.map +1 -1
  45. package/esm/validate.integration.spec.schema.json +24 -31
  46. package/esm/validate.js +24 -22
  47. package/esm/validate.js.map +1 -1
  48. package/package.json +11 -11
  49. package/src/authenticate.ts +19 -0
  50. package/src/authorize.ts +19 -0
  51. package/src/endpoint-generators/create-get-entity-endpoint.spec.ts +9 -9
  52. package/src/endpoint-generators/create-get-swagger-json-action.ts +2 -2
  53. package/src/endpoint-generators/create-patch-endpoint.spec.ts +6 -6
  54. package/src/endpoint-generators/create-post-endpoint.spec.ts +6 -6
  55. package/src/get-schema-from-api.spec.ts +14 -12
  56. package/src/get-schema-from-api.ts +13 -8
  57. package/src/proxy-manager.spec.ts +4 -4
  58. package/src/read-post-body.ts +1 -1
  59. package/src/rest-service.integration.spec.ts +10 -10
  60. package/src/server-response-extensions.spec.ts +8 -8
  61. package/src/server-response-extensions.ts +1 -1
  62. package/src/swagger/generate-swagger-json.spec.ts +107 -96
  63. package/src/swagger/generate-swagger-json.ts +80 -71
  64. package/src/validate.integration.schema.ts +11 -5
  65. package/src/validate.integration.spec.schema.json +24 -31
  66. package/src/validate.integration.spec.ts +84 -36
  67. 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': undefined, // ToDo: Generator and test
42
- '/mock/:id': undefined, // ToDo: Generator and test
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': undefined, // ToDo: Generator and test
65
+ '/mock': Validate({
66
+ schema,
67
+ schemaName: 'PostMockEndpoint',
68
+ })(createPostEndpoint({ model: MockClass, primaryKey: 'id' })),
53
69
  },
54
70
  PATCH: {
55
- '/mock/:id': undefined, // ToDo: Generator and test
71
+ '/mock/:id': Validate({
72
+ schema,
73
+ schemaName: 'PatchMockEndpoint',
74
+ })(createPatchEndpoint({ model: MockClass, primaryKey: 'id' })),
56
75
  },
57
76
  DELETE: {
58
- '/mock/:id': undefined, // ToDo: Generator and test
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
- 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();
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
- "additionalProperties": false,
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
- "PostEndpoint<Mock,\"id\">": {
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/WithOptionalId%3CMock%2C%22id%22%3E"
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/DeleteEndpoint%3CMock%2C%22id%22%3E"
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/GetCollectionEndpoint%3CMock%3E"
659
+ "$ref": "#/definitions/GetMockCollectionEndpoint"
654
660
  },
655
661
  "/mock/:id": {
656
- "$ref": "#/definitions/GetEntityEndpoint%3CMock%2C%22id%22%3E"
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/PatchEndpoint%3CMock%2C%22id%22%3E"
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/PostEndpoint%3CMock%2C%22id%22%3E"
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 && definition.required.includes('result')) {
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 anyArgs = args;
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
- body = await anyArgs.getBody?.();
20
+ if ('getBody' in args) {
21
+ body = await args.getBody();
22
+ }
22
23
  }
23
- catch (error) {
24
- // ignore
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
- // @ts-expect-error
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.schema = schema;
44
- wrapped.schemaName = validationOptions.schemaName;
45
- return wrapped;
44
+ return Object.assign(wrapped, {
45
+ schema,
46
+ schemaName: validationOptions.schemaName,
47
+ });
46
48
  };
47
49
  //# 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,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"}
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": "10.1.2",
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.30",
41
- "@furystack/inject": "^12.0.24",
42
- "@furystack/repository": "^10.0.30",
43
- "@furystack/rest": "^8.0.30",
44
- "@furystack/security": "^6.0.30",
45
- "@furystack/utils": "^8.1.6",
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.30",
53
- "@types/node": "^25.0.2",
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.15",
57
- "ws": "^8.18.3"
56
+ "vitest": "^4.0.17",
57
+ "ws": "^8.19.0"
58
58
  },
59
59
  "gitHead": "1045d854bfd8c475b7035471d130d401417a2321"
60
60
  }
@@ -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 { usingAsync } from '@furystack/utils'
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 { MockClass, setupContext } from './utils.js'
6
- import { createGetEntityEndpoint } from './create-get-entity-endpoint.js'
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 { describe, it, expect } from 'vitest'
10
- import { getPort } from '@furystack/core/port-generator'
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 ApiEndpointDefinition, type SwaggerDocument } from '@furystack/rest'
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 = Record<string, ApiEndpointDefinition>
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.