@furystack/rest-service 13.0.0 → 14.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 (224) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +47 -28
  3. package/esm/actions/get-current-user.spec.js +10 -6
  4. package/esm/actions/get-current-user.spec.js.map +1 -1
  5. package/esm/actions/is-authenticated.spec.js +10 -6
  6. package/esm/actions/is-authenticated.spec.js.map +1 -1
  7. package/esm/actions/logout-action.spec.js +11 -9
  8. package/esm/actions/logout-action.spec.js.map +1 -1
  9. package/esm/actions/logout.js +1 -1
  10. package/esm/actions/logout.js.map +1 -1
  11. package/esm/actions/password-login-action.js +1 -1
  12. package/esm/actions/password-login-action.js.map +1 -1
  13. package/esm/actions/password-login-action.spec.js +23 -28
  14. package/esm/actions/password-login-action.spec.js.map +1 -1
  15. package/esm/authenticate.js +1 -1
  16. package/esm/authenticate.js.map +1 -1
  17. package/esm/authenticate.spec.js +41 -33
  18. package/esm/authenticate.spec.js.map +1 -1
  19. package/esm/authorize.spec.js +34 -29
  20. package/esm/authorize.spec.js.map +1 -1
  21. package/esm/endpoint-generators/create-delete-endpoint.d.ts +6 -11
  22. package/esm/endpoint-generators/create-delete-endpoint.d.ts.map +1 -1
  23. package/esm/endpoint-generators/create-delete-endpoint.js +7 -11
  24. package/esm/endpoint-generators/create-delete-endpoint.js.map +1 -1
  25. package/esm/endpoint-generators/create-delete-endpoint.spec.js +14 -21
  26. package/esm/endpoint-generators/create-delete-endpoint.spec.js.map +1 -1
  27. package/esm/endpoint-generators/create-get-collection-endpoint.d.ts +11 -11
  28. package/esm/endpoint-generators/create-get-collection-endpoint.d.ts.map +1 -1
  29. package/esm/endpoint-generators/create-get-collection-endpoint.js +13 -12
  30. package/esm/endpoint-generators/create-get-collection-endpoint.js.map +1 -1
  31. package/esm/endpoint-generators/create-get-collection-endpoint.spec.js +43 -70
  32. package/esm/endpoint-generators/create-get-collection-endpoint.spec.js.map +1 -1
  33. package/esm/endpoint-generators/create-get-entity-endpoint.d.ts +6 -11
  34. package/esm/endpoint-generators/create-get-entity-endpoint.d.ts.map +1 -1
  35. package/esm/endpoint-generators/create-get-entity-endpoint.js +7 -11
  36. package/esm/endpoint-generators/create-get-entity-endpoint.js.map +1 -1
  37. package/esm/endpoint-generators/create-get-entity-endpoint.spec.js +16 -33
  38. package/esm/endpoint-generators/create-get-entity-endpoint.spec.js.map +1 -1
  39. package/esm/endpoint-generators/create-get-openapi-document-action.d.ts +1 -1
  40. package/esm/endpoint-generators/create-get-openapi-document-action.d.ts.map +1 -1
  41. package/esm/endpoint-generators/create-get-openapi-document-action.js +1 -1
  42. package/esm/endpoint-generators/create-get-openapi-document-action.js.map +1 -1
  43. package/esm/endpoint-generators/create-get-schema-action.d.ts +1 -1
  44. package/esm/endpoint-generators/create-get-schema-action.d.ts.map +1 -1
  45. package/esm/endpoint-generators/create-get-schema-action.js.map +1 -1
  46. package/esm/endpoint-generators/create-patch-endpoint.d.ts +7 -13
  47. package/esm/endpoint-generators/create-patch-endpoint.d.ts.map +1 -1
  48. package/esm/endpoint-generators/create-patch-endpoint.js +8 -13
  49. package/esm/endpoint-generators/create-patch-endpoint.js.map +1 -1
  50. package/esm/endpoint-generators/create-patch-endpoint.spec.js +10 -17
  51. package/esm/endpoint-generators/create-patch-endpoint.spec.js.map +1 -1
  52. package/esm/endpoint-generators/create-post-endpoint.d.ts +7 -13
  53. package/esm/endpoint-generators/create-post-endpoint.d.ts.map +1 -1
  54. package/esm/endpoint-generators/create-post-endpoint.js +8 -13
  55. package/esm/endpoint-generators/create-post-endpoint.js.map +1 -1
  56. package/esm/endpoint-generators/create-post-endpoint.spec.js +41 -14
  57. package/esm/endpoint-generators/create-post-endpoint.spec.js.map +1 -1
  58. package/esm/endpoint-generators/utils.d.ts +17 -2
  59. package/esm/endpoint-generators/utils.d.ts.map +1 -1
  60. package/esm/endpoint-generators/utils.js +33 -20
  61. package/esm/endpoint-generators/utils.js.map +1 -1
  62. package/esm/get-schema-from-api.d.ts +1 -1
  63. package/esm/get-schema-from-api.d.ts.map +1 -1
  64. package/esm/get-schema-from-api.spec.js.map +1 -1
  65. package/esm/helpers.d.ts +53 -87
  66. package/esm/helpers.d.ts.map +1 -1
  67. package/esm/helpers.js +91 -92
  68. package/esm/helpers.js.map +1 -1
  69. package/esm/helpers.spec.d.ts +2 -1
  70. package/esm/helpers.spec.d.ts.map +1 -1
  71. package/esm/helpers.spec.js +41 -38
  72. package/esm/helpers.spec.js.map +1 -1
  73. package/esm/http-authentication-settings.d.ts +35 -12
  74. package/esm/http-authentication-settings.d.ts.map +1 -1
  75. package/esm/http-authentication-settings.js +21 -29
  76. package/esm/http-authentication-settings.js.map +1 -1
  77. package/esm/http-server-pool.d.ts +64 -0
  78. package/esm/http-server-pool.d.ts.map +1 -0
  79. package/esm/http-server-pool.js +95 -0
  80. package/esm/http-server-pool.js.map +1 -0
  81. package/esm/http-server-pool.spec.d.ts +2 -0
  82. package/esm/http-server-pool.spec.d.ts.map +1 -0
  83. package/esm/http-server-pool.spec.js +193 -0
  84. package/esm/http-server-pool.spec.js.map +1 -0
  85. package/esm/http-user-context.d.ts +31 -44
  86. package/esm/http-user-context.d.ts.map +1 -1
  87. package/esm/http-user-context.js +76 -95
  88. package/esm/http-user-context.js.map +1 -1
  89. package/esm/http-user-context.spec.d.ts +8 -2
  90. package/esm/http-user-context.spec.d.ts.map +1 -1
  91. package/esm/http-user-context.spec.js +189 -337
  92. package/esm/http-user-context.spec.js.map +1 -1
  93. package/esm/index.d.ts +6 -4
  94. package/esm/index.d.ts.map +1 -1
  95. package/esm/index.js +6 -4
  96. package/esm/index.js.map +1 -1
  97. package/esm/login-response-strategy.d.ts +11 -10
  98. package/esm/login-response-strategy.d.ts.map +1 -1
  99. package/esm/login-response-strategy.js +7 -6
  100. package/esm/login-response-strategy.js.map +1 -1
  101. package/esm/login-response-strategy.spec.js +25 -29
  102. package/esm/login-response-strategy.spec.js.map +1 -1
  103. package/esm/proxy-manager.spec.js +152 -176
  104. package/esm/proxy-manager.spec.js.map +1 -1
  105. package/esm/proxy-runtime.d.ts +27 -0
  106. package/esm/proxy-runtime.d.ts.map +1 -0
  107. package/esm/proxy-runtime.js +45 -0
  108. package/esm/proxy-runtime.js.map +1 -0
  109. package/esm/proxy-runtime.spec.d.ts +2 -0
  110. package/esm/proxy-runtime.spec.d.ts.map +1 -0
  111. package/esm/proxy-runtime.spec.js +39 -0
  112. package/esm/proxy-runtime.spec.js.map +1 -0
  113. package/esm/rest-api-runtime.d.ts +76 -0
  114. package/esm/rest-api-runtime.d.ts.map +1 -0
  115. package/esm/rest-api-runtime.js +131 -0
  116. package/esm/rest-api-runtime.js.map +1 -0
  117. package/esm/rest-api-runtime.spec.d.ts +2 -0
  118. package/esm/rest-api-runtime.spec.d.ts.map +1 -0
  119. package/esm/rest-api-runtime.spec.js +58 -0
  120. package/esm/rest-api-runtime.spec.js.map +1 -0
  121. package/esm/rest-service.integration.spec.d.ts +1 -1
  122. package/esm/rest-service.integration.spec.d.ts.map +1 -1
  123. package/esm/rest-service.integration.spec.js +57 -80
  124. package/esm/rest-service.integration.spec.js.map +1 -1
  125. package/esm/rest.integration.test.js +26 -84
  126. package/esm/rest.integration.test.js.map +1 -1
  127. package/esm/server-telemetry.d.ts +57 -0
  128. package/esm/server-telemetry.d.ts.map +1 -0
  129. package/esm/server-telemetry.js +26 -0
  130. package/esm/server-telemetry.js.map +1 -0
  131. package/esm/server-telemetry.spec.d.ts +2 -0
  132. package/esm/server-telemetry.spec.d.ts.map +1 -0
  133. package/esm/server-telemetry.spec.js +52 -0
  134. package/esm/server-telemetry.spec.js.map +1 -0
  135. package/esm/static-server-manager.spec.js +60 -125
  136. package/esm/static-server-manager.spec.js.map +1 -1
  137. package/esm/static-site-runtime.d.ts +21 -0
  138. package/esm/static-site-runtime.d.ts.map +1 -0
  139. package/esm/static-site-runtime.js +48 -0
  140. package/esm/static-site-runtime.js.map +1 -0
  141. package/esm/static-site-runtime.spec.d.ts +2 -0
  142. package/esm/static-site-runtime.spec.d.ts.map +1 -0
  143. package/esm/static-site-runtime.spec.js +30 -0
  144. package/esm/static-site-runtime.spec.js.map +1 -0
  145. package/esm/user-store.d.ts +39 -0
  146. package/esm/user-store.d.ts.map +1 -0
  147. package/esm/user-store.js +62 -0
  148. package/esm/user-store.js.map +1 -0
  149. package/esm/user-store.spec.d.ts +2 -0
  150. package/esm/user-store.spec.d.ts.map +1 -0
  151. package/esm/user-store.spec.js +72 -0
  152. package/esm/user-store.spec.js.map +1 -0
  153. package/esm/validate.integration.spec.js +26 -28
  154. package/esm/validate.integration.spec.js.map +1 -1
  155. package/package.json +8 -8
  156. package/src/actions/get-current-user.spec.ts +11 -10
  157. package/src/actions/is-authenticated.spec.ts +12 -7
  158. package/src/actions/logout-action.spec.ts +12 -12
  159. package/src/actions/logout.ts +1 -1
  160. package/src/actions/password-login-action.spec.ts +30 -30
  161. package/src/actions/password-login-action.ts +1 -1
  162. package/src/authenticate.spec.ts +45 -51
  163. package/src/authenticate.ts +1 -1
  164. package/src/authorize.spec.ts +37 -39
  165. package/src/endpoint-generators/create-delete-endpoint.spec.ts +16 -24
  166. package/src/endpoint-generators/create-delete-endpoint.ts +11 -17
  167. package/src/endpoint-generators/create-get-collection-endpoint.spec.ts +45 -78
  168. package/src/endpoint-generators/create-get-collection-endpoint.ts +17 -19
  169. package/src/endpoint-generators/create-get-entity-endpoint.spec.ts +17 -33
  170. package/src/endpoint-generators/create-get-entity-endpoint.ts +11 -17
  171. package/src/endpoint-generators/create-get-openapi-document-action.ts +2 -2
  172. package/src/endpoint-generators/create-get-schema-action.ts +1 -1
  173. package/src/endpoint-generators/create-patch-endpoint.spec.ts +11 -18
  174. package/src/endpoint-generators/create-patch-endpoint.ts +12 -23
  175. package/src/endpoint-generators/create-post-endpoint.spec.ts +45 -14
  176. package/src/endpoint-generators/create-post-endpoint.ts +13 -23
  177. package/src/endpoint-generators/utils.ts +36 -28
  178. package/src/get-schema-from-api.spec.ts +1 -1
  179. package/src/get-schema-from-api.ts +1 -1
  180. package/src/helpers.spec.ts +51 -41
  181. package/src/helpers.ts +140 -109
  182. package/src/http-authentication-settings.ts +51 -25
  183. package/src/http-server-pool.spec.ts +220 -0
  184. package/src/http-server-pool.ts +169 -0
  185. package/src/http-user-context.spec.ts +203 -383
  186. package/src/http-user-context.ts +114 -91
  187. package/src/index.ts +6 -4
  188. package/src/login-response-strategy.spec.ts +32 -31
  189. package/src/login-response-strategy.ts +13 -12
  190. package/src/proxy-manager.spec.ts +152 -182
  191. package/src/proxy-runtime.spec.ts +50 -0
  192. package/src/proxy-runtime.ts +75 -0
  193. package/src/rest-api-runtime.spec.ts +77 -0
  194. package/src/rest-api-runtime.ts +204 -0
  195. package/src/rest-service.integration.spec.ts +65 -85
  196. package/src/rest.integration.test.ts +27 -87
  197. package/src/server-telemetry.spec.ts +56 -0
  198. package/src/server-telemetry.ts +51 -0
  199. package/src/static-server-manager.spec.ts +63 -151
  200. package/src/static-site-runtime.spec.ts +39 -0
  201. package/src/static-site-runtime.ts +75 -0
  202. package/src/user-store.spec.ts +86 -0
  203. package/src/user-store.ts +68 -0
  204. package/src/validate.integration.spec.ts +39 -35
  205. package/esm/api-manager.d.ts +0 -104
  206. package/esm/api-manager.d.ts.map +0 -1
  207. package/esm/api-manager.js +0 -179
  208. package/esm/api-manager.js.map +0 -1
  209. package/esm/proxy-manager.d.ts +0 -53
  210. package/esm/proxy-manager.d.ts.map +0 -1
  211. package/esm/proxy-manager.js +0 -84
  212. package/esm/proxy-manager.js.map +0 -1
  213. package/esm/server-manager.d.ts +0 -48
  214. package/esm/server-manager.d.ts.map +0 -1
  215. package/esm/server-manager.js +0 -100
  216. package/esm/server-manager.js.map +0 -1
  217. package/esm/static-server-manager.d.ts +0 -19
  218. package/esm/static-server-manager.d.ts.map +0 -1
  219. package/esm/static-server-manager.js +0 -65
  220. package/esm/static-server-manager.js.map +0 -1
  221. package/src/api-manager.ts +0 -304
  222. package/src/proxy-manager.ts +0 -102
  223. package/src/server-manager.ts +0 -135
  224. package/src/static-server-manager.ts +0 -90
@@ -1,5 +1,5 @@
1
1
  import { AuthorizationError, IdentityContext } from '@furystack/core';
2
- import { Injector } from '@furystack/inject';
2
+ import { createInjector } from '@furystack/inject';
3
3
  import { usingAsync } from '@furystack/utils';
4
4
  import { describe, expect, it, vi } from 'vitest';
5
5
  import { Authorize } from './authorize.js';
@@ -7,43 +7,48 @@ import { EmptyResult } from './request-action-implementation.js';
7
7
  describe('Authorize', () => {
8
8
  const response = {};
9
9
  const request = { url: 'http://google.com' };
10
- it('Should return 403 when failed to get current user', async () => {
11
- await usingAsync(new Injector(), async (i) => {
12
- const isAuthorizedAction = vi.fn(async () => false);
13
- i.setExplicitInstance({ isAuthorized: isAuthorizedAction, getCurrentUser: () => Promise.reject(new Error(':(')) }, IdentityContext);
14
- const exampleAuthorizedAction = vi.fn(async () => EmptyResult());
15
- const authorized = Authorize('Role1')(exampleAuthorizedAction);
10
+ it('throws AuthorizationError when the current user cannot be resolved', async () => {
11
+ await usingAsync(createInjector(), async (i) => {
12
+ const isAuthorized = vi.fn(async () => false);
13
+ i.bind(IdentityContext, () => ({
14
+ isAuthorized,
15
+ getCurrentUser: () => Promise.reject(new Error(':(')),
16
+ isAuthenticated: () => Promise.resolve(false),
17
+ }));
18
+ const exampleAction = vi.fn(async () => EmptyResult());
19
+ const authorized = Authorize('Role1')(exampleAction);
16
20
  await expect(() => authorized({ injector: i, request, response })).rejects.toThrow(AuthorizationError);
17
- expect(exampleAuthorizedAction).not.toBeCalled();
21
+ expect(exampleAction).not.toHaveBeenCalled();
18
22
  });
19
23
  });
20
- it('Should return 403 if the current user does not have the role', async () => {
21
- await usingAsync(new Injector(), async (i) => {
22
- const isAuthorizedAction = vi.fn(async () => false);
23
- i.setExplicitInstance({
24
- isAuthorized: isAuthorizedAction,
25
- getCurrentUser: async () => Promise.resolve({ username: 'a', roles: ['Role1'] }),
26
- }, IdentityContext);
27
- const exampleAuthorizedAction = vi.fn(async () => EmptyResult());
28
- const authorized = Authorize('Role2')(exampleAuthorizedAction);
24
+ it('throws AuthorizationError when the current user does not have the required role', async () => {
25
+ await usingAsync(createInjector(), async (i) => {
26
+ const isAuthorized = vi.fn(async () => false);
27
+ i.bind(IdentityContext, () => ({
28
+ isAuthorized,
29
+ getCurrentUser: () => Promise.resolve({ username: 'a', roles: ['Role1'] }),
30
+ isAuthenticated: () => Promise.resolve(true),
31
+ }));
32
+ const exampleAction = vi.fn(async () => EmptyResult());
33
+ const authorized = Authorize('Role2')(exampleAction);
29
34
  await expect(() => authorized({ injector: i, request, response })).rejects.toThrow(AuthorizationError);
30
- expect(exampleAuthorizedAction).not.toBeCalled();
35
+ expect(exampleAction).not.toHaveBeenCalled();
31
36
  });
32
37
  });
33
- it('Should exec the original action if authorized', async () => {
34
- await usingAsync(new Injector(), async (i) => {
35
- const isAuthorizedAction = vi.fn(async () => true);
36
- i.setExplicitInstance({
37
- isAuthorized: isAuthorizedAction,
38
- getCurrentUser: async () => Promise.resolve({ username: 'a', roles: ['Role1'] }),
39
- }, IdentityContext);
40
- const exampleAuthorizedAction = vi.fn(async () => EmptyResult());
41
- const authorized = Authorize('Role1')(exampleAuthorizedAction);
42
- const params = { injector: i, body: undefined, query: undefined, request, response };
38
+ it('invokes the wrapped action when the current user holds the required role', async () => {
39
+ await usingAsync(createInjector(), async (i) => {
40
+ i.bind(IdentityContext, () => ({
41
+ isAuthorized: () => Promise.resolve(true),
42
+ getCurrentUser: () => Promise.resolve({ username: 'a', roles: ['Role1'] }),
43
+ isAuthenticated: () => Promise.resolve(true),
44
+ }));
45
+ const exampleAction = vi.fn(async () => EmptyResult());
46
+ const authorized = Authorize('Role1')(exampleAction);
47
+ const params = { injector: i, request, response };
43
48
  const result = await authorized(params);
44
49
  expect(result.statusCode).toBe(200);
45
50
  expect(result.chunk).toBe(undefined);
46
- expect(exampleAuthorizedAction).toBeCalledWith(params);
51
+ expect(exampleAction).toHaveBeenCalledWith(params);
47
52
  });
48
53
  });
49
54
  });
@@ -1 +1 @@
1
- {"version":3,"file":"authorize.spec.js","sourceRoot":"","sources":["../src/authorize.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authorize.spec.js","sourceRoot":"","sources":["../src/authorize.spec.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,10 @@
1
- import type { Constructable } from '@furystack/inject';
1
+ import type { DataSetToken } from '@furystack/repository';
2
2
  import type { DeleteEndpoint } from '@furystack/rest';
3
- import type { RequestAction } from '../request-action-implementation.js';
3
+ import { type RequestAction } from '../request-action-implementation.js';
4
4
  /**
5
- * Creates a DELETE endpoint for removing entities
6
- * @param options The options for endpoint creation
7
- * @param options.model The Model class
8
- * @param options.primaryKey The field used as primary key on the model
9
- * @returns a boolean that indicates the success
5
+ * Creates a DELETE endpoint that removes the entity identified by the URL's
6
+ * `:id` parameter. Returns `204 No Content` once the removal has been
7
+ * persisted to the underlying store.
10
8
  */
11
- export declare const createDeleteEndpoint: <T extends object, TPrimaryKey extends keyof T>(options: {
12
- model: Constructable<T>;
13
- primaryKey: TPrimaryKey;
14
- }) => RequestAction<DeleteEndpoint<T, TPrimaryKey>>;
9
+ export declare const createDeleteEndpoint: <T extends object, TPrimaryKey extends keyof T>(dataSet: DataSetToken<T, TPrimaryKey>) => RequestAction<DeleteEndpoint<T, TPrimaryKey>>;
15
10
  //# sourceMappingURL=create-delete-endpoint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-delete-endpoint.d.ts","sourceRoot":"","sources":["../../src/endpoint-generators/create-delete-endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AAIxE;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,MAAM,EAAE,WAAW,SAAS,MAAM,CAAC,EAAE,SAAS;IAC3F,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IACvB,UAAU,EAAE,WAAW,CAAA;CACxB,kDAQA,CAAA"}
1
+ {"version":3,"file":"create-delete-endpoint.d.ts","sourceRoot":"","sources":["../../src/endpoint-generators/create-delete-endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,qCAAqC,CAAA;AAEpF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,MAAM,EAAE,WAAW,SAAS,MAAM,CAAC,EAChF,SAAS,YAAY,CAAC,CAAC,EAAE,WAAW,CAAC,KACpC,aAAa,CAAC,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,CAO9C,CAAA"}
@@ -1,19 +1,15 @@
1
1
  import { JsonResult } from '../request-action-implementation.js';
2
- import { getRepository } from '@furystack/repository';
3
2
  /**
4
- * Creates a DELETE endpoint for removing entities
5
- * @param options The options for endpoint creation
6
- * @param options.model The Model class
7
- * @param options.primaryKey The field used as primary key on the model
8
- * @returns a boolean that indicates the success
3
+ * Creates a DELETE endpoint that removes the entity identified by the URL's
4
+ * `:id` parameter. Returns `204 No Content` once the removal has been
5
+ * persisted to the underlying store.
9
6
  */
10
- export const createDeleteEndpoint = (options) => {
11
- const endpoint = async ({ injector, getUrlParams }) => {
7
+ export const createDeleteEndpoint = (dataSet) => {
8
+ return async ({ injector, getUrlParams }) => {
12
9
  const { id } = getUrlParams();
13
- const dataSet = getRepository(injector).getDataSetFor(options.model, options.primaryKey);
14
- await dataSet.remove(injector, id);
10
+ const ds = injector.get(dataSet);
11
+ await ds.remove(injector, id);
15
12
  return JsonResult({}, 204);
16
13
  };
17
- return endpoint;
18
14
  };
19
15
  //# sourceMappingURL=create-delete-endpoint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-delete-endpoint.js","sourceRoot":"","sources":["../../src/endpoint-generators/create-delete-endpoint.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAgD,OAGnF,EAAE,EAAE;IACH,MAAM,QAAQ,GAAkD,KAAK,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE;QACnG,MAAM,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,CAAA;QAC7B,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;QACxF,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAClC,OAAO,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IAC5B,CAAC,CAAA;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA"}
1
+ {"version":3,"file":"create-delete-endpoint.js","sourceRoot":"","sources":["../../src/endpoint-generators/create-delete-endpoint.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAsB,MAAM,qCAAqC,CAAA;AAEpF;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,OAAqC,EACU,EAAE;IACjD,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE;QAC1C,MAAM,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,CAAA;QAC7B,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAChC,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAC7B,OAAO,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IAC5B,CAAC,CAAA;AACH,CAAC,CAAA"}
@@ -1,35 +1,28 @@
1
+ import { getPort } from '@furystack/core/port-generator';
2
+ import { createInjector } from '@furystack/inject';
1
3
  import { usingAsync } from '@furystack/utils';
2
- import { Injector } from '@furystack/inject';
3
- import { createDeleteEndpoint } from './create-delete-endpoint.js';
4
- import { MockClass, setupContext } from './utils.js';
4
+ import { describe, expect, it } from 'vitest';
5
5
  import { useRestService } from '../helpers.js';
6
- import { getDataSetFor } from '@furystack/repository';
7
- import { describe, it, expect } from 'vitest';
8
- import { getPort } from '@furystack/core/port-generator';
6
+ import { createDeleteEndpoint } from './create-delete-endpoint.js';
7
+ import { MockDataSet, setupContext } from './utils.js';
9
8
  describe('createDeleteEndpoint', () => {
10
- it('Should delete the entity and report the success', async () => {
11
- await usingAsync(new Injector(), async (i) => {
12
- const port = getPort();
9
+ it('deletes the entity and responds 204', async () => {
10
+ await usingAsync(createInjector(), async (i) => {
13
11
  setupContext(i);
12
+ const port = getPort();
14
13
  await useRestService({
15
14
  injector: i,
16
15
  root: '/api',
17
16
  port,
18
- api: {
19
- DELETE: {
20
- '/:id': createDeleteEndpoint({ model: MockClass, primaryKey: 'id' }),
21
- },
22
- },
17
+ api: { DELETE: { '/:id': createDeleteEndpoint(MockDataSet) } },
23
18
  });
24
- await getDataSetFor(i, MockClass, 'id').add(i, { id: 'mock', value: 'mock' });
25
- const countBeforeDelete = await getDataSetFor(i, MockClass, 'id').count(i);
26
- expect(countBeforeDelete).toBe(1);
19
+ const dataSet = i.get(MockDataSet);
20
+ await dataSet.add(i, { id: 'mock', value: 'mock' });
21
+ expect(await dataSet.count(i)).toBe(1);
27
22
  const response = await fetch(`http://127.0.0.1:${port}/api/mock`, { method: 'DELETE' });
28
23
  expect(response.status).toBe(204);
29
- const txt = await response.text();
30
- expect(txt).toBe('');
31
- const countAfterDelete = await getDataSetFor(i, MockClass, 'id').count(i);
32
- expect(countAfterDelete).toBe(0);
24
+ expect(await response.text()).toBe('');
25
+ expect(await dataSet.count(i)).toBe(0);
33
26
  });
34
27
  });
35
28
  });
@@ -1 +1 @@
1
- {"version":3,"file":"create-delete-endpoint.spec.js","sourceRoot":"","sources":["../../src/endpoint-generators/create-delete-endpoint.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAClE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAExD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;YACtB,YAAY,CAAC,CAAC,CAAC,CAAA;YACf,MAAM,cAAc,CAA0D;gBAC5E,QAAQ,EAAE,CAAC;gBACX,IAAI,EAAE,MAAM;gBACZ,IAAI;gBACJ,GAAG,EAAE;oBACH,MAAM,EAAE;wBACN,MAAM,EAAE,oBAAoB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;qBACrE;iBACF;aACF,CAAC,CAAA;YACF,MAAM,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;YAE7E,MAAM,iBAAiB,GAAG,MAAM,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC1E,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAEjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,WAAW,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;YACvF,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACjC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YACjC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAEpB,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACzE,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAClC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"create-delete-endpoint.spec.js","sourceRoot":"","sources":["../../src/endpoint-generators/create-delete-endpoint.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAElE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEtD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,UAAU,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC7C,YAAY,CAAC,CAAC,CAAC,CAAA;YACf,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;YACtB,MAAM,cAAc,CAA0D;gBAC5E,QAAQ,EAAE,CAAC;gBACX,IAAI,EAAE,MAAM;gBACZ,IAAI;gBACJ,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,oBAAoB,CAAC,WAAW,CAAC,EAAE,EAAE;aAC/D,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YAClC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;YACnD,MAAM,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAEtC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,WAAW,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;YACvF,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACjC,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACtC,MAAM,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,15 +1,15 @@
1
- import type { Constructable } from '@furystack/inject';
1
+ import type { DataSetToken } from '@furystack/repository';
2
2
  import type { GetCollectionEndpoint } from '@furystack/rest';
3
- import type { RequestAction } from '../request-action-implementation.js';
3
+ import { type RequestAction } from '../request-action-implementation.js';
4
4
  /**
5
- * Creates a GetCollection endpoint for the given model. The model should have a Repository DataSet
6
- * @param options The options for endpoint creation
7
- * @param options.model The Model class
8
- * @param options.primaryKey The field used as primary key on the model
9
- * @returns The created endpoint
5
+ * Creates a GetCollection endpoint backed by the DataSet resolved from the
6
+ * provided {@link DataSetToken}. The token carries the entity model and
7
+ * primary key, so callers no longer need to pass them separately.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * const endpoint = createGetCollectionEndpoint(UserDataSet)
12
+ * ```
10
13
  */
11
- export declare const createGetCollectionEndpoint: <T, TPrimaryKey extends keyof T>(options: {
12
- model: Constructable<T>;
13
- primaryKey: TPrimaryKey;
14
- }) => RequestAction<GetCollectionEndpoint<T>>;
14
+ export declare const createGetCollectionEndpoint: <T, TPrimaryKey extends keyof T>(dataSet: DataSetToken<T, TPrimaryKey>) => RequestAction<GetCollectionEndpoint<T>>;
15
15
  //# sourceMappingURL=create-get-collection-endpoint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-get-collection-endpoint.d.ts","sourceRoot":"","sources":["../../src/endpoint-generators/create-get-collection-endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AAIxE;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,GAAI,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,EAAE,SAAS;IACnF,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IACvB,UAAU,EAAE,WAAW,CAAA;CACxB,4CAWA,CAAA"}
1
+ {"version":3,"file":"create-get-collection-endpoint.d.ts","sourceRoot":"","sources":["../../src/endpoint-generators/create-get-collection-endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,qCAAqC,CAAA;AAEpF;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,GAAI,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,EACxE,SAAS,YAAY,CAAC,CAAC,EAAE,WAAW,CAAC,KACpC,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC,CASxC,CAAA"}
@@ -1,21 +1,22 @@
1
1
  import { JsonResult } from '../request-action-implementation.js';
2
- import { getRepository } from '@furystack/repository';
3
2
  /**
4
- * Creates a GetCollection endpoint for the given model. The model should have a Repository DataSet
5
- * @param options The options for endpoint creation
6
- * @param options.model The Model class
7
- * @param options.primaryKey The field used as primary key on the model
8
- * @returns The created endpoint
3
+ * Creates a GetCollection endpoint backed by the DataSet resolved from the
4
+ * provided {@link DataSetToken}. The token carries the entity model and
5
+ * primary key, so callers no longer need to pass them separately.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * const endpoint = createGetCollectionEndpoint(UserDataSet)
10
+ * ```
9
11
  */
10
- export const createGetCollectionEndpoint = (options) => {
11
- const endpoint = async ({ injector, getQuery }) => {
12
+ export const createGetCollectionEndpoint = (dataSet) => {
13
+ return async ({ injector, getQuery }) => {
12
14
  const { findOptions } = getQuery();
13
- const dataSet = getRepository(injector).getDataSetFor(options.model, options.primaryKey);
14
- const entriesPromise = dataSet.find(injector, findOptions || {});
15
- const countPromise = dataSet.count(injector, findOptions?.filter);
15
+ const ds = injector.get(dataSet);
16
+ const entriesPromise = ds.find(injector, findOptions || {});
17
+ const countPromise = ds.count(injector, findOptions?.filter);
16
18
  const [entries, count] = await Promise.all([entriesPromise, countPromise]);
17
19
  return JsonResult({ entries, count });
18
20
  };
19
- return endpoint;
20
21
  };
21
22
  //# sourceMappingURL=create-get-collection-endpoint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-get-collection-endpoint.js","sourceRoot":"","sources":["../../src/endpoint-generators/create-get-collection-endpoint.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAiC,OAG3E,EAAE,EAAE;IACH,MAAM,QAAQ,GAA4C,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;QACzF,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,EAAE,CAAA;QAClC,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;QACxF,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,IAAI,EAAE,CAAC,CAAA;QAChE,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;QACjE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAA;QAE1E,OAAO,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;IACvC,CAAC,CAAA;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA"}
1
+ {"version":3,"file":"create-get-collection-endpoint.js","sourceRoot":"","sources":["../../src/endpoint-generators/create-get-collection-endpoint.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAsB,MAAM,qCAAqC,CAAA;AAEpF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,OAAqC,EACI,EAAE;IAC3C,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;QACtC,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,EAAE,CAAA;QAClC,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAChC,MAAM,cAAc,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,IAAI,EAAE,CAAC,CAAA;QAC3D,MAAM,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;QAC5D,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAA;QAC1E,OAAO,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;IACvC,CAAC,CAAA;AACH,CAAC,CAAA"}
@@ -1,33 +1,29 @@
1
- import { usingAsync } from '@furystack/utils';
2
- import { Injector } from '@furystack/inject';
3
- import { MockClass, setupContext } from './utils.js';
4
- import { createGetCollectionEndpoint } from './create-get-collection-endpoint.js';
1
+ import { getPort } from '@furystack/core/port-generator';
2
+ import { createInjector } from '@furystack/inject';
5
3
  import { serializeToQueryString } from '@furystack/rest';
6
- import { getDataSetFor, getRepository } from '@furystack/repository';
4
+ import { usingAsync } from '@furystack/utils';
5
+ import { describe, expect, it } from 'vitest';
7
6
  import { useRestService } from '../helpers.js';
8
- import { describe, it, expect } from 'vitest';
9
- import { getPort } from '@furystack/core/port-generator';
10
- const addMockEntities = async (i) => await getRepository(i)
11
- .getDataSetFor(MockClass, 'id')
7
+ import { createGetCollectionEndpoint } from './create-get-collection-endpoint.js';
8
+ import { MockDataSet, setupContext } from './utils.js';
9
+ const addMockEntities = async (i) => i
10
+ .get(MockDataSet)
12
11
  .add(i, { id: 'mock1', value: '4' }, { id: 'mock2', value: '3' }, { id: 'mock3', value: '2' }, { id: 'mock4', value: '1' });
13
12
  describe('createGetCollectionEndpoint', () => {
14
- it('Should return the collection without filter / order', async () => {
15
- await usingAsync(new Injector(), async (i) => {
13
+ it('returns the collection without filter / order', async () => {
14
+ await usingAsync(createInjector(), async (i) => {
16
15
  setupContext(i);
17
16
  const port = getPort();
18
17
  await useRestService({
19
18
  injector: i,
20
19
  root: '/api',
21
20
  port,
22
- api: {
23
- GET: {
24
- '/entities': createGetCollectionEndpoint({ model: MockClass, primaryKey: 'id' }),
25
- },
26
- },
21
+ api: { GET: { '/entities': createGetCollectionEndpoint(MockDataSet) } },
27
22
  });
28
23
  await addMockEntities(i);
29
- const count = await getDataSetFor(i, MockClass, 'id').count(i);
30
- const allEntities = await getDataSetFor(i, MockClass, 'id').find(i, {});
24
+ const dataSet = i.get(MockDataSet);
25
+ const count = await dataSet.count(i);
26
+ const allEntities = await dataSet.find(i, {});
31
27
  const response = await fetch(`http://127.0.0.1:${port}/api/entities`, { method: 'GET' });
32
28
  expect(response.ok).toBe(true);
33
29
  const json = (await response.json());
@@ -36,24 +32,21 @@ describe('createGetCollectionEndpoint', () => {
36
32
  expect(json.entries).toEqual(allEntities);
37
33
  });
38
34
  });
39
- it('Should return entities in order', async () => {
40
- await usingAsync(new Injector(), async (i) => {
35
+ it('returns entities in the requested order', async () => {
36
+ await usingAsync(createInjector(), async (i) => {
41
37
  setupContext(i);
42
38
  const port = getPort();
43
39
  await useRestService({
44
40
  injector: i,
45
41
  root: '/api',
46
42
  port,
47
- api: {
48
- GET: {
49
- '/entities': createGetCollectionEndpoint({ model: MockClass, primaryKey: 'id' }),
50
- },
51
- },
43
+ api: { GET: { '/entities': createGetCollectionEndpoint(MockDataSet) } },
52
44
  });
53
45
  await addMockEntities(i);
54
46
  const findOptions = { order: { value: 'ASC' } };
55
- const count = await getDataSetFor(i, MockClass, 'id').count(i, findOptions.filter);
56
- const orderedEntities = await getDataSetFor(i, MockClass, 'id').find(i, findOptions);
47
+ const dataSet = i.get(MockDataSet);
48
+ const count = await dataSet.count(i, findOptions.filter);
49
+ const orderedEntities = await dataSet.find(i, findOptions);
57
50
  const response = await fetch(`http://127.0.0.1:${port}/api/entities?${serializeToQueryString({ findOptions })}`, {
58
51
  method: 'GET',
59
52
  });
@@ -64,27 +57,21 @@ describe('createGetCollectionEndpoint', () => {
64
57
  expect(json.entries).toEqual(orderedEntities);
65
58
  });
66
59
  });
67
- it('Should return entities with filtering', async () => {
68
- await usingAsync(new Injector(), async (i) => {
60
+ it('applies a supplied filter', async () => {
61
+ await usingAsync(createInjector(), async (i) => {
69
62
  setupContext(i);
70
63
  const port = getPort();
71
64
  await useRestService({
72
65
  injector: i,
73
66
  root: '/api',
74
67
  port,
75
- api: {
76
- GET: {
77
- '/entities': createGetCollectionEndpoint({ model: MockClass, primaryKey: 'id' }),
78
- },
79
- },
68
+ api: { GET: { '/entities': createGetCollectionEndpoint(MockDataSet) } },
80
69
  });
81
70
  await addMockEntities(i);
82
- const findOptions = {
83
- filter: { id: { $ne: 'mock2' } },
84
- };
85
- const count = await getDataSetFor(i, MockClass, 'id').count(i, findOptions.filter);
86
- const filteredEntities = await getDataSetFor(i, MockClass, 'id').find(i, findOptions);
87
- expect(filteredEntities).not.toContainEqual({ id: 'mock2', value: '3' });
71
+ const findOptions = { filter: { id: { $ne: 'mock2' } } };
72
+ const dataSet = i.get(MockDataSet);
73
+ const count = await dataSet.count(i, findOptions.filter);
74
+ const filteredEntities = await dataSet.find(i, findOptions);
88
75
  const response = await fetch(`http://127.0.0.1:${port}/api/entities?${serializeToQueryString({ findOptions })}`, {
89
76
  method: 'GET',
90
77
  });
@@ -95,27 +82,21 @@ describe('createGetCollectionEndpoint', () => {
95
82
  expect(json.entries).toEqual(filteredEntities);
96
83
  });
97
84
  });
98
- it('Should return entities with selecting specific fields', async () => {
99
- await usingAsync(new Injector(), async (i) => {
85
+ it('applies select projection', async () => {
86
+ await usingAsync(createInjector(), async (i) => {
100
87
  setupContext(i);
101
88
  const port = getPort();
102
89
  await useRestService({
103
90
  injector: i,
104
91
  root: '/api',
105
92
  port,
106
- api: {
107
- GET: {
108
- '/entities': createGetCollectionEndpoint({ model: MockClass, primaryKey: 'id' }),
109
- },
110
- },
93
+ api: { GET: { '/entities': createGetCollectionEndpoint(MockDataSet) } },
111
94
  });
112
95
  await addMockEntities(i);
113
- const findOptions = {
114
- select: ['id'],
115
- };
116
- const count = await getDataSetFor(i, MockClass, 'id').count(i, findOptions.filter);
117
- const selectedEntities = await getDataSetFor(i, MockClass, 'id').find(i, findOptions);
118
- selectedEntities.forEach((e) => expect(e.value).toBeUndefined());
96
+ const findOptions = { select: ['id'] };
97
+ const dataSet = i.get(MockDataSet);
98
+ const count = await dataSet.count(i, findOptions.filter);
99
+ const selected = await dataSet.find(i, findOptions);
119
100
  const response = await fetch(`http://127.0.0.1:${port}/api/entities?${serializeToQueryString({ findOptions })}`, {
120
101
  method: 'GET',
121
102
  });
@@ -123,39 +104,31 @@ describe('createGetCollectionEndpoint', () => {
123
104
  const json = (await response.json());
124
105
  expect(response.status).toBe(200);
125
106
  expect(json.count).toBe(count);
126
- expect(json.entries).toEqual(selectedEntities);
107
+ expect(json.entries).toEqual(selected);
127
108
  });
128
109
  });
129
- it('Should return entities with top/skip', async () => {
130
- await usingAsync(new Injector(), async (i) => {
110
+ it('honours top/skip', async () => {
111
+ await usingAsync(createInjector(), async (i) => {
131
112
  setupContext(i);
132
113
  const port = getPort();
133
114
  await useRestService({
134
115
  injector: i,
135
116
  root: '/api',
136
117
  port,
137
- api: {
138
- GET: {
139
- '/entities': createGetCollectionEndpoint({ model: MockClass, primaryKey: 'id' }),
140
- },
141
- },
118
+ api: { GET: { '/entities': createGetCollectionEndpoint(MockDataSet) } },
142
119
  });
143
120
  await addMockEntities(i);
144
- const findOptions = {
145
- skip: 1,
146
- top: 2,
147
- };
148
- const count = await getDataSetFor(i, MockClass, 'id').count(i, findOptions.filter);
149
- const topSkipEntities = await getDataSetFor(i, MockClass, 'id').find(i, findOptions);
150
- expect(topSkipEntities).not.toContainEqual({ id: 'mock1', value: '4' });
151
- expect(topSkipEntities).not.toContainEqual({ id: 'mock4', value: '1' });
121
+ const findOptions = { skip: 1, top: 2 };
122
+ const dataSet = i.get(MockDataSet);
123
+ const count = await dataSet.count(i, findOptions.filter);
124
+ const page = await dataSet.find(i, findOptions);
152
125
  const response = await fetch(`http://127.0.0.1:${port}/api/entities?${serializeToQueryString({ findOptions })}`, {
153
126
  method: 'GET',
154
127
  });
155
128
  expect(response.status).toBe(200);
156
129
  const json = (await response.json());
157
130
  expect(json.count).toBe(count);
158
- expect(json.entries).toEqual(topSkipEntities);
131
+ expect(json.entries).toEqual(page);
159
132
  });
160
133
  });
161
134
  });
@@ -1 +1 @@
1
- {"version":3,"file":"create-get-collection-endpoint.spec.js","sourceRoot":"","sources":["../../src/endpoint-generators/create-get-collection-endpoint.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-get-collection-endpoint.spec.js","sourceRoot":"","sources":["../../src/endpoint-generators/create-get-collection-endpoint.spec.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,10 @@
1
- import type { Constructable } from '@furystack/inject';
1
+ import type { DataSetToken } from '@furystack/repository';
2
2
  import type { GetEntityEndpoint } from '@furystack/rest';
3
- import type { RequestAction } from '../request-action-implementation.js';
3
+ import { type RequestAction } from '../request-action-implementation.js';
4
4
  /**
5
- * Creates a simple Get Entity endpoint for a specified model.
6
- * @param options The options for endpoint creation
7
- * @param options.model The entity model, should have a Repository DataSet
8
- * @param options.primaryKey The field name used as primary key on the model
9
- * @returns The generated endpoint
5
+ * Creates a GET entity endpoint backed by the DataSet resolved from the
6
+ * provided {@link DataSetToken}. Throws a 404 `RequestError` when the
7
+ * entity cannot be found.
10
8
  */
11
- export declare const createGetEntityEndpoint: <T extends object, TPrimaryKey extends keyof T>(options: {
12
- model: Constructable<T>;
13
- primaryKey: TPrimaryKey;
14
- }) => RequestAction<GetEntityEndpoint<T, TPrimaryKey>>;
9
+ export declare const createGetEntityEndpoint: <T extends object, TPrimaryKey extends keyof T>(dataSet: DataSetToken<T, TPrimaryKey>) => RequestAction<GetEntityEndpoint<T, TPrimaryKey>>;
15
10
  //# sourceMappingURL=create-get-entity-endpoint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-get-entity-endpoint.d.ts","sourceRoot":"","sources":["../../src/endpoint-generators/create-get-entity-endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AAIxE;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,MAAM,EAAE,WAAW,SAAS,MAAM,CAAC,EAAE,SAAS;IAC9F,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IACvB,UAAU,EAAE,WAAW,CAAA;CACxB,qDAYA,CAAA"}
1
+ {"version":3,"file":"create-get-entity-endpoint.d.ts","sourceRoot":"","sources":["../../src/endpoint-generators/create-get-entity-endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExD,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,qCAAqC,CAAA;AAEpF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,MAAM,EAAE,WAAW,SAAS,MAAM,CAAC,EACnF,SAAS,YAAY,CAAC,CAAC,EAAE,WAAW,CAAC,KACpC,aAAa,CAAC,iBAAiB,CAAC,CAAC,EAAE,WAAW,CAAC,CAWjD,CAAA"}