@furystack/rest-service 6.2.23 → 7.0.1

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 (292) hide show
  1. package/esm/actions/error-action.js +25 -0
  2. package/esm/actions/error-action.js.map +1 -0
  3. package/esm/actions/get-current-user.js +12 -0
  4. package/esm/actions/get-current-user.js.map +1 -0
  5. package/esm/actions/index.js +7 -0
  6. package/esm/actions/index.js.map +1 -0
  7. package/esm/actions/is-authenticated.js +13 -0
  8. package/esm/actions/is-authenticated.js.map +1 -0
  9. package/esm/actions/login.js +22 -0
  10. package/esm/actions/login.js.map +1 -0
  11. package/esm/actions/logout.js +15 -0
  12. package/esm/actions/logout.js.map +1 -0
  13. package/esm/actions/not-found-action.js +10 -0
  14. package/esm/actions/not-found-action.js.map +1 -0
  15. package/{dist → esm}/api-manager.js +29 -32
  16. package/esm/api-manager.js.map +1 -0
  17. package/esm/authenticate.js +16 -0
  18. package/esm/authenticate.js.map +1 -0
  19. package/esm/authorize.js +19 -0
  20. package/esm/authorize.js.map +1 -0
  21. package/esm/endpoint-generators/create-delete-endpoint.js +20 -0
  22. package/esm/endpoint-generators/create-delete-endpoint.js.map +1 -0
  23. package/esm/endpoint-generators/create-get-collection-endpoint.js +22 -0
  24. package/esm/endpoint-generators/create-get-collection-endpoint.js.map +1 -0
  25. package/esm/endpoint-generators/create-get-entity-endpoint.js +25 -0
  26. package/esm/endpoint-generators/create-get-entity-endpoint.js.map +1 -0
  27. package/esm/endpoint-generators/create-patch-endpoint.js +22 -0
  28. package/esm/endpoint-generators/create-patch-endpoint.js.map +1 -0
  29. package/esm/endpoint-generators/create-post-endpoint.js +25 -0
  30. package/esm/endpoint-generators/create-post-endpoint.js.map +1 -0
  31. package/esm/endpoint-generators/index.js +6 -0
  32. package/esm/endpoint-generators/index.js.map +1 -0
  33. package/esm/endpoint-generators/utils.js +23 -0
  34. package/esm/endpoint-generators/utils.js.map +1 -0
  35. package/esm/helpers.js +28 -0
  36. package/esm/helpers.js.map +1 -0
  37. package/{dist → esm}/http-authentication-settings.js +8 -11
  38. package/esm/http-authentication-settings.js.map +1 -0
  39. package/{dist → esm}/http-user-context.js +19 -25
  40. package/esm/http-user-context.js.map +1 -0
  41. package/esm/incoming-message-extensions.js +11 -0
  42. package/esm/incoming-message-extensions.js.map +1 -0
  43. package/esm/index.js +19 -0
  44. package/esm/index.js.map +1 -0
  45. package/{dist → esm}/mime-types.js +5 -12
  46. package/esm/mime-types.js.map +1 -0
  47. package/esm/models/cors-options.js +2 -0
  48. package/esm/models/default-session.js +6 -0
  49. package/{dist → esm}/models/default-session.js.map +1 -1
  50. package/esm/models/index.js +3 -0
  51. package/esm/models/index.js.map +1 -0
  52. package/esm/request-action-implementation.js +34 -0
  53. package/esm/request-action-implementation.js.map +1 -0
  54. package/esm/schema-validator/index.js +3 -0
  55. package/esm/schema-validator/index.js.map +1 -0
  56. package/esm/schema-validator/schema-validation-error.js +11 -0
  57. package/esm/schema-validator/schema-validation-error.js.map +1 -0
  58. package/{dist → esm}/schema-validator/schema-validator.js +7 -14
  59. package/esm/schema-validator/schema-validator.js.map +1 -0
  60. package/{dist → esm}/schema-validator/validate-examples.js +1 -4
  61. package/esm/schema-validator/validate-examples.js.map +1 -0
  62. package/{dist → esm}/server-manager.js +7 -13
  63. package/esm/server-manager.js.map +1 -0
  64. package/esm/server-response-extensions.js +12 -0
  65. package/esm/server-response-extensions.js.map +1 -0
  66. package/{dist → esm}/static-server-manager.js +16 -19
  67. package/esm/static-server-manager.js.map +1 -0
  68. package/{dist → esm}/utils.js +3 -8
  69. package/esm/utils.js.map +1 -0
  70. package/esm/validate.integration.schema.js +2 -0
  71. package/{dist → esm}/validate.js +3 -7
  72. package/esm/validate.js.map +1 -0
  73. package/package.json +30 -13
  74. package/src/actions/error-action.spec.ts +1 -0
  75. package/src/actions/get-current-user.spec.ts +1 -0
  76. package/src/actions/get-current-user.ts +0 -1
  77. package/src/actions/is-authenticated.spec.ts +1 -0
  78. package/src/actions/is-authenticated.ts +0 -1
  79. package/src/actions/login-action.spec.ts +3 -2
  80. package/src/actions/logout-action.spec.ts +2 -1
  81. package/src/actions/logout.ts +0 -1
  82. package/src/actions/not-found-action.spec.ts +1 -0
  83. package/src/add-cors-header.spec.ts +7 -6
  84. package/src/authenticate.spec.ts +7 -6
  85. package/src/authorize.spec.ts +7 -6
  86. package/src/endpoint-generators/create-delete-endpoint.spec.ts +1 -0
  87. package/src/endpoint-generators/create-delete-endpoint.ts +0 -1
  88. package/src/endpoint-generators/create-get-collection-endpoint.spec.ts +1 -0
  89. package/src/endpoint-generators/create-get-collection-endpoint.ts +0 -1
  90. package/src/endpoint-generators/create-get-entity-endpoint.spec.ts +1 -0
  91. package/src/endpoint-generators/create-get-entity-endpoint.ts +0 -1
  92. package/src/endpoint-generators/create-patch-endpoint.spec.ts +1 -0
  93. package/src/endpoint-generators/create-patch-endpoint.ts +0 -1
  94. package/src/endpoint-generators/create-post-endpoint.spec.ts +1 -0
  95. package/src/endpoint-generators/create-post-endpoint.ts +0 -1
  96. package/src/helpers.spec.ts +1 -0
  97. package/src/helpers.ts +2 -6
  98. package/src/http-user-context.spec.ts +15 -14
  99. package/src/http-user-context.ts +0 -3
  100. package/src/incoming-message-extensions.spec.ts +1 -0
  101. package/src/mime-types.spec.ts +1 -0
  102. package/src/rest-service.integration.spec.ts +1 -0
  103. package/src/rest.integration.test.ts +1 -0
  104. package/src/schema-validator/schema-validator.test.ts +1 -0
  105. package/src/server-manager.ts +2 -2
  106. package/src/server-response-extensions.spec.ts +23 -18
  107. package/src/static-server-manager.spec.ts +2 -2
  108. package/src/utils.ts +0 -2
  109. package/src/validate.integration.spec.ts +1 -0
  110. package/types/actions/get-current-user.d.ts +0 -1
  111. package/types/actions/get-current-user.d.ts.map +1 -1
  112. package/types/actions/is-authenticated.d.ts +0 -1
  113. package/types/actions/is-authenticated.d.ts.map +1 -1
  114. package/types/actions/logout.d.ts +0 -1
  115. package/types/actions/logout.d.ts.map +1 -1
  116. package/types/endpoint-generators/create-delete-endpoint.d.ts +0 -1
  117. package/types/endpoint-generators/create-delete-endpoint.d.ts.map +1 -1
  118. package/types/endpoint-generators/create-get-collection-endpoint.d.ts +0 -1
  119. package/types/endpoint-generators/create-get-collection-endpoint.d.ts.map +1 -1
  120. package/types/endpoint-generators/create-get-entity-endpoint.d.ts +0 -1
  121. package/types/endpoint-generators/create-get-entity-endpoint.d.ts.map +1 -1
  122. package/types/endpoint-generators/create-patch-endpoint.d.ts +0 -1
  123. package/types/endpoint-generators/create-patch-endpoint.d.ts.map +1 -1
  124. package/types/endpoint-generators/create-post-endpoint.d.ts +0 -1
  125. package/types/endpoint-generators/create-post-endpoint.d.ts.map +1 -1
  126. package/types/helpers.d.ts +2 -4
  127. package/types/helpers.d.ts.map +1 -1
  128. package/types/http-user-context.d.ts +0 -3
  129. package/types/http-user-context.d.ts.map +1 -1
  130. package/types/server-manager.d.ts.map +1 -1
  131. package/types/utils.d.ts +0 -2
  132. package/types/utils.d.ts.map +1 -1
  133. package/dist/actions/error-action.js +0 -29
  134. package/dist/actions/error-action.js.map +0 -1
  135. package/dist/actions/error-action.spec.js +0 -48
  136. package/dist/actions/error-action.spec.js.map +0 -1
  137. package/dist/actions/get-current-user.js +0 -16
  138. package/dist/actions/get-current-user.js.map +0 -1
  139. package/dist/actions/get-current-user.spec.js +0 -20
  140. package/dist/actions/get-current-user.spec.js.map +0 -1
  141. package/dist/actions/index.js +0 -23
  142. package/dist/actions/index.js.map +0 -1
  143. package/dist/actions/is-authenticated.js +0 -18
  144. package/dist/actions/is-authenticated.js.map +0 -1
  145. package/dist/actions/is-authenticated.spec.js +0 -19
  146. package/dist/actions/is-authenticated.spec.js.map +0 -1
  147. package/dist/actions/login-action.spec.js +0 -35
  148. package/dist/actions/login-action.spec.js.map +0 -1
  149. package/dist/actions/login.js +0 -26
  150. package/dist/actions/login.js.map +0 -1
  151. package/dist/actions/logout-action.spec.js +0 -23
  152. package/dist/actions/logout-action.spec.js.map +0 -1
  153. package/dist/actions/logout.js +0 -20
  154. package/dist/actions/logout.js.map +0 -1
  155. package/dist/actions/not-found-action.js +0 -14
  156. package/dist/actions/not-found-action.js.map +0 -1
  157. package/dist/actions/not-found-action.spec.js +0 -17
  158. package/dist/actions/not-found-action.spec.js.map +0 -1
  159. package/dist/add-cors-header.spec.js +0 -99
  160. package/dist/add-cors-header.spec.js.map +0 -1
  161. package/dist/api-manager.js.map +0 -1
  162. package/dist/authenticate.js +0 -20
  163. package/dist/authenticate.js.map +0 -1
  164. package/dist/authenticate.spec.js +0 -59
  165. package/dist/authenticate.spec.js.map +0 -1
  166. package/dist/authorize.js +0 -23
  167. package/dist/authorize.js.map +0 -1
  168. package/dist/authorize.spec.js +0 -55
  169. package/dist/authorize.spec.js.map +0 -1
  170. package/dist/endpoint-generators/create-delete-endpoint.js +0 -25
  171. package/dist/endpoint-generators/create-delete-endpoint.js.map +0 -1
  172. package/dist/endpoint-generators/create-delete-endpoint.spec.js +0 -35
  173. package/dist/endpoint-generators/create-delete-endpoint.spec.js.map +0 -1
  174. package/dist/endpoint-generators/create-get-collection-endpoint.js +0 -27
  175. package/dist/endpoint-generators/create-get-collection-endpoint.js.map +0 -1
  176. package/dist/endpoint-generators/create-get-collection-endpoint.spec.js +0 -157
  177. package/dist/endpoint-generators/create-get-collection-endpoint.spec.js.map +0 -1
  178. package/dist/endpoint-generators/create-get-entity-endpoint.js +0 -30
  179. package/dist/endpoint-generators/create-get-entity-endpoint.js.map +0 -1
  180. package/dist/endpoint-generators/create-get-entity-endpoint.spec.js +0 -75
  181. package/dist/endpoint-generators/create-get-entity-endpoint.spec.js.map +0 -1
  182. package/dist/endpoint-generators/create-patch-endpoint.js +0 -27
  183. package/dist/endpoint-generators/create-patch-endpoint.js.map +0 -1
  184. package/dist/endpoint-generators/create-patch-endpoint.spec.js +0 -38
  185. package/dist/endpoint-generators/create-patch-endpoint.spec.js.map +0 -1
  186. package/dist/endpoint-generators/create-post-endpoint.js +0 -30
  187. package/dist/endpoint-generators/create-post-endpoint.js.map +0 -1
  188. package/dist/endpoint-generators/create-post-endpoint.spec.js +0 -36
  189. package/dist/endpoint-generators/create-post-endpoint.spec.js.map +0 -1
  190. package/dist/endpoint-generators/index.js +0 -22
  191. package/dist/endpoint-generators/index.js.map +0 -1
  192. package/dist/endpoint-generators/utils.js +0 -28
  193. package/dist/endpoint-generators/utils.js.map +0 -1
  194. package/dist/helpers.js +0 -39
  195. package/dist/helpers.js.map +0 -1
  196. package/dist/helpers.spec.js +0 -35
  197. package/dist/helpers.spec.js.map +0 -1
  198. package/dist/http-authentication-settings.js.map +0 -1
  199. package/dist/http-user-context.js.map +0 -1
  200. package/dist/http-user-context.spec.js +0 -272
  201. package/dist/http-user-context.spec.js.map +0 -1
  202. package/dist/incoming-message-extensions.js +0 -16
  203. package/dist/incoming-message-extensions.js.map +0 -1
  204. package/dist/incoming-message-extensions.spec.js +0 -39
  205. package/dist/incoming-message-extensions.spec.js.map +0 -1
  206. package/dist/index.js +0 -35
  207. package/dist/index.js.map +0 -1
  208. package/dist/mime-types.js.map +0 -1
  209. package/dist/mime-types.spec.js +0 -15
  210. package/dist/mime-types.spec.js.map +0 -1
  211. package/dist/models/cors-options.js +0 -3
  212. package/dist/models/default-session.js +0 -10
  213. package/dist/models/index.js +0 -19
  214. package/dist/models/index.js.map +0 -1
  215. package/dist/request-action-implementation.js +0 -42
  216. package/dist/request-action-implementation.js.map +0 -1
  217. package/dist/rest-service.integration.spec.js +0 -143
  218. package/dist/rest-service.integration.spec.js.map +0 -1
  219. package/dist/rest.integration.test.js +0 -156
  220. package/dist/rest.integration.test.js.map +0 -1
  221. package/dist/schema-validator/index.js +0 -19
  222. package/dist/schema-validator/index.js.map +0 -1
  223. package/dist/schema-validator/schema-validation-error.js +0 -15
  224. package/dist/schema-validator/schema-validation-error.js.map +0 -1
  225. package/dist/schema-validator/schema-validator.js.map +0 -1
  226. package/dist/schema-validator/schema-validator.test.js +0 -62
  227. package/dist/schema-validator/schema-validator.test.js.map +0 -1
  228. package/dist/schema-validator/validate-examples.js.map +0 -1
  229. package/dist/server-manager.js.map +0 -1
  230. package/dist/server-response-extensions.js +0 -17
  231. package/dist/server-response-extensions.js.map +0 -1
  232. package/dist/server-response-extensions.spec.js +0 -49
  233. package/dist/server-response-extensions.spec.js.map +0 -1
  234. package/dist/static-server-manager.js.map +0 -1
  235. package/dist/static-server-manager.spec.js +0 -218
  236. package/dist/static-server-manager.spec.js.map +0 -1
  237. package/dist/utils.js.map +0 -1
  238. package/dist/validate.integration.schema.js +0 -3
  239. package/dist/validate.integration.spec.js +0 -216
  240. package/dist/validate.integration.spec.js.map +0 -1
  241. package/dist/validate.js.map +0 -1
  242. package/types/actions/error-action.spec.d.ts +0 -2
  243. package/types/actions/error-action.spec.d.ts.map +0 -1
  244. package/types/actions/get-current-user.spec.d.ts +0 -2
  245. package/types/actions/get-current-user.spec.d.ts.map +0 -1
  246. package/types/actions/is-authenticated.spec.d.ts +0 -2
  247. package/types/actions/is-authenticated.spec.d.ts.map +0 -1
  248. package/types/actions/login-action.spec.d.ts +0 -2
  249. package/types/actions/login-action.spec.d.ts.map +0 -1
  250. package/types/actions/logout-action.spec.d.ts +0 -2
  251. package/types/actions/logout-action.spec.d.ts.map +0 -1
  252. package/types/actions/not-found-action.spec.d.ts +0 -2
  253. package/types/actions/not-found-action.spec.d.ts.map +0 -1
  254. package/types/add-cors-header.spec.d.ts +0 -2
  255. package/types/add-cors-header.spec.d.ts.map +0 -1
  256. package/types/authenticate.spec.d.ts +0 -2
  257. package/types/authenticate.spec.d.ts.map +0 -1
  258. package/types/authorize.spec.d.ts +0 -2
  259. package/types/authorize.spec.d.ts.map +0 -1
  260. package/types/endpoint-generators/create-delete-endpoint.spec.d.ts +0 -2
  261. package/types/endpoint-generators/create-delete-endpoint.spec.d.ts.map +0 -1
  262. package/types/endpoint-generators/create-get-collection-endpoint.spec.d.ts +0 -2
  263. package/types/endpoint-generators/create-get-collection-endpoint.spec.d.ts.map +0 -1
  264. package/types/endpoint-generators/create-get-entity-endpoint.spec.d.ts +0 -2
  265. package/types/endpoint-generators/create-get-entity-endpoint.spec.d.ts.map +0 -1
  266. package/types/endpoint-generators/create-patch-endpoint.spec.d.ts +0 -2
  267. package/types/endpoint-generators/create-patch-endpoint.spec.d.ts.map +0 -1
  268. package/types/endpoint-generators/create-post-endpoint.spec.d.ts +0 -2
  269. package/types/endpoint-generators/create-post-endpoint.spec.d.ts.map +0 -1
  270. package/types/helpers.spec.d.ts +0 -2
  271. package/types/helpers.spec.d.ts.map +0 -1
  272. package/types/http-user-context.spec.d.ts +0 -3
  273. package/types/http-user-context.spec.d.ts.map +0 -1
  274. package/types/incoming-message-extensions.spec.d.ts +0 -2
  275. package/types/incoming-message-extensions.spec.d.ts.map +0 -1
  276. package/types/mime-types.spec.d.ts +0 -2
  277. package/types/mime-types.spec.d.ts.map +0 -1
  278. package/types/rest-service.integration.spec.d.ts +0 -2
  279. package/types/rest-service.integration.spec.d.ts.map +0 -1
  280. package/types/rest.integration.test.d.ts +0 -90
  281. package/types/rest.integration.test.d.ts.map +0 -1
  282. package/types/schema-validator/schema-validator.test.d.ts +0 -2
  283. package/types/schema-validator/schema-validator.test.d.ts.map +0 -1
  284. package/types/server-response-extensions.spec.d.ts +0 -2
  285. package/types/server-response-extensions.spec.d.ts.map +0 -1
  286. package/types/static-server-manager.spec.d.ts +0 -2
  287. package/types/static-server-manager.spec.d.ts.map +0 -1
  288. package/types/validate.integration.spec.d.ts +0 -2
  289. package/types/validate.integration.spec.d.ts.map +0 -1
  290. /package/{dist → esm}/models/cors-options.js.map +0 -0
  291. /package/{dist → esm}/validate.integration.schema.js.map +0 -0
  292. /package/{dist → esm}/validate.integration.spec.schema.json +0 -0
@@ -0,0 +1,25 @@
1
+ import { RequestError } from '@furystack/rest';
2
+ import { AuthorizationError } from '@furystack/core';
3
+ import { JsonResult } from '../request-action-implementation';
4
+ import { SchemaValidationError } from '../schema-validator';
5
+ /**
6
+ * Action for unhandled (500) errors
7
+ * Returns a serialized error instance in JSON format.
8
+ */
9
+ export const ErrorAction = async ({ getBody }) => {
10
+ const body = await getBody();
11
+ if (body instanceof SchemaValidationError) {
12
+ return JsonResult({ message: body.message, errors: body.errors }, 400);
13
+ }
14
+ if (body instanceof RequestError) {
15
+ return JsonResult({ message: body.message }, body.responseCode);
16
+ }
17
+ if (body instanceof AuthorizationError) {
18
+ return JsonResult({ message: body.message }, 403);
19
+ }
20
+ if (body instanceof Error) {
21
+ return JsonResult({ message: body.message }, 500);
22
+ }
23
+ return JsonResult({ message: 'An unexpected error happened' }, 500);
24
+ };
25
+ //# sourceMappingURL=error-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-action.js","sourceRoot":"","sources":["../../src/actions/error-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAE3D;;;GAGG;AAEH,MAAM,CAAC,MAAM,WAAW,GAGnB,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;IACzB,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAA;IAE5B,IAAI,IAAI,YAAY,qBAAqB,EAAE;QACzC,OAAO,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAA;KACvE;IAED,IAAI,IAAI,YAAY,YAAY,EAAE;QAChC,OAAO,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;KAChE;IAED,IAAI,IAAI,YAAY,kBAAkB,EAAE;QACtC,OAAO,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAA;KAClD;IAED,IAAI,IAAI,YAAY,KAAK,EAAE;QACzB,OAAO,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAA;KAClD;IAED,OAAO,UAAU,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,EAAE,GAAG,CAAC,CAAA;AACrE,CAAC,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { getCurrentUser } from '@furystack/core';
2
+ import { Authenticate } from '../authenticate';
3
+ import { JsonResult } from '../request-action-implementation';
4
+ /**
5
+ * Action that returns the current authenticated user
6
+ * @param injector The injector from the current stack
7
+ */
8
+ export const GetCurrentUser = Authenticate()(async ({ injector }) => {
9
+ const user = await getCurrentUser(injector);
10
+ return JsonResult(user);
11
+ });
12
+ //# sourceMappingURL=get-current-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-current-user.js","sourceRoot":"","sources":["../../src/actions/get-current-user.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAE7D;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAEtB,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IACzC,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAA;IAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ export * from './error-action';
2
+ export * from './get-current-user';
3
+ export * from './is-authenticated';
4
+ export * from './login';
5
+ export * from './logout';
6
+ export * from './not-found-action';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,oBAAoB,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { isAuthenticated } from '@furystack/core';
2
+ import { JsonResult } from '../request-action-implementation';
3
+ /**
4
+ * Action that returns if the current user is authenticated
5
+ * @param options The options for the Custom Action
6
+ * @param options.injector The Injector from the current context
7
+ * @returns A standard authentication result
8
+ */
9
+ export const IsAuthenticated = async ({ injector }) => {
10
+ const isAuthenticatedResult = await isAuthenticated(injector);
11
+ return JsonResult({ isAuthenticated: isAuthenticatedResult });
12
+ };
13
+ //# sourceMappingURL=is-authenticated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-authenticated.js","sourceRoot":"","sources":["../../src/actions/is-authenticated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAE7D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAA4D,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC7G,MAAM,qBAAqB,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAA;IAC7D,OAAO,UAAU,CAAC,EAAE,eAAe,EAAE,qBAAqB,EAAE,CAAC,CAAA;AAC/D,CAAC,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { HttpUserContext } from '../http-user-context';
2
+ import '../helpers';
3
+ import { RequestError } from '@furystack/rest';
4
+ import { JsonResult } from '../request-action-implementation';
5
+ /**
6
+ * Action that logs in the current user
7
+ * Should be called with a JSON Post body with ``username`` and ``password`` fields.
8
+ * Returns the current user instance
9
+ */
10
+ export const LoginAction = async ({ injector, getBody, response }) => {
11
+ const userContext = injector.getInstance(HttpUserContext);
12
+ const body = await getBody();
13
+ try {
14
+ const user = await userContext.authenticateUser(body.username, body.password);
15
+ await userContext.cookieLogin(user, response);
16
+ return JsonResult(user, 200);
17
+ }
18
+ catch (error) {
19
+ throw new RequestError('Login Failed', 400);
20
+ }
21
+ };
22
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/actions/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,YAAY,CAAA;AAEnB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAE7D;;;;GAIG;AAEH,MAAM,CAAC,MAAM,WAAW,GAGnB,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC7C,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;IACzD,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAA;IAC5B,IAAI;QACF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC7E,MAAM,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC7C,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;KAC7B;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,IAAI,YAAY,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;KAC5C;AACH,CAAC,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { HttpUserContext } from '../http-user-context';
2
+ import { EmptyResult } from '../request-action-implementation';
3
+ /**
4
+ * Action that logs out the current user
5
+ * @param root0 The Options object
6
+ * @param root0.injector The injector from the context
7
+ * @param root0.request The current Request object
8
+ * @param root0.response The Response object
9
+ * @returns An empty result that indicates the success
10
+ */
11
+ export const LogoutAction = async ({ injector, request, response }) => {
12
+ await injector.getInstance(HttpUserContext).cookieLogout(request, response);
13
+ return EmptyResult();
14
+ };
15
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/actions/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAE9D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAuC,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxG,MAAM,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC3E,OAAO,WAAW,EAAE,CAAA;AACtB,CAAC,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { JsonResult } from '../request-action-implementation';
2
+ /**
3
+ * @returns The standard Not Found action result
4
+ */
5
+ export const NotFoundAction = async () => {
6
+ return JsonResult({
7
+ error: 'Content not found',
8
+ }, 404);
9
+ };
10
+ //# sourceMappingURL=not-found-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"not-found-action.js","sourceRoot":"","sources":["../../src/actions/not-found-action.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAiD,KAAK,IAAI,EAAE;IACrF,OAAO,UAAU,CACf;QACE,KAAK,EAAE,mBAAmB;KAC3B,EACD,GAAG,CACJ,CAAA;AACH,CAAC,CAAA"}
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
2
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
3
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -8,19 +7,17 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
7
  var __metadata = (this && this.__metadata) || function (k, v) {
9
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
9
  };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ApiManager = void 0;
13
- const utils_1 = require("@furystack/utils");
14
- const rest_1 = require("@furystack/rest");
15
- const inject_1 = require("@furystack/inject");
16
- const server_manager_1 = require("./server-manager");
17
- const path_to_regexp_1 = require("path-to-regexp");
18
- const not_found_action_1 = require("./actions/not-found-action");
19
- const utils_2 = require("./utils");
20
- const error_action_1 = require("./actions/error-action");
21
- require("./server-response-extensions");
22
- const core_1 = require("@furystack/core");
23
- const http_user_context_1 = require("./http-user-context");
10
+ import { PathHelper, usingAsync } from '@furystack/utils';
11
+ import { deserializeQueryString } from '@furystack/rest';
12
+ import { Injectable, Injected } from '@furystack/inject';
13
+ import { ServerManager } from './server-manager';
14
+ import { match } from 'path-to-regexp';
15
+ import { NotFoundAction } from './actions/not-found-action';
16
+ import { Utils } from './utils';
17
+ import { ErrorAction } from './actions/error-action';
18
+ import './server-response-extensions';
19
+ import { IdentityContext } from '@furystack/core';
20
+ import { HttpUserContext } from './http-user-context';
24
21
  let ApiManager = class ApiManager {
25
22
  constructor() {
26
23
  this.apis = new Map();
@@ -37,8 +34,8 @@ let ApiManager = class ApiManager {
37
34
  supportedMethods.forEach((method) => {
38
35
  compiledApi[method] = [
39
36
  ...Object.entries(api[method]).map(([path, action]) => {
40
- const fullPath = `/${utils_1.PathHelper.normalize(utils_1.PathHelper.joinPaths(root, path))}`;
41
- const matcher = (0, path_to_regexp_1.match)(fullPath, { decode: decodeURIComponent });
37
+ const fullPath = `/${PathHelper.normalize(PathHelper.joinPaths(root, path))}`;
38
+ const matcher = match(fullPath, { decode: decodeURIComponent });
42
39
  return { method, fullPath, matcher, action: action };
43
40
  }),
44
41
  ];
@@ -47,7 +44,7 @@ let ApiManager = class ApiManager {
47
44
  }
48
45
  async addApi({ api, hostName, port, root, cors, injector, deserializeQueryParams, }) {
49
46
  const supportedMethods = this.getSuportedMethods(api);
50
- const rootApiPath = utils_1.PathHelper.normalize(root);
47
+ const rootApiPath = PathHelper.normalize(root);
51
48
  const server = await this.serverManager.getOrCreate({ hostName, port });
52
49
  const compiledApi = this.compileApi(api, root);
53
50
  server.apis.push({
@@ -56,7 +53,7 @@ let ApiManager = class ApiManager {
56
53
  method: msg.req.method?.toUpperCase(),
57
54
  rootApiPath,
58
55
  supportedMethods,
59
- url: utils_1.PathHelper.normalize(msg.req.url || ''),
56
+ url: PathHelper.normalize(msg.req.url || ''),
60
57
  }),
61
58
  onRequest: (msg) => this.onMessage({
62
59
  ...msg,
@@ -75,7 +72,7 @@ let ApiManager = class ApiManager {
75
72
  return options.method &&
76
73
  options.url &&
77
74
  (options.supportedMethods.includes(options.method) || options.method === 'OPTIONS') &&
78
- utils_1.PathHelper.normalize(options.url).startsWith(options.rootApiPath)
75
+ PathHelper.normalize(options.url).startsWith(options.rootApiPath)
79
76
  ? true
80
77
  : false;
81
78
  }
@@ -94,14 +91,14 @@ let ApiManager = class ApiManager {
94
91
  });
95
92
  }
96
93
  async executeAction({ injector, req, res, fullUrl, action, deserializeQueryParams, params, }) {
97
- await (0, utils_1.usingAsync)(injector.createChild(), async (i) => {
98
- const utils = i.getInstance(utils_2.Utils);
99
- const httpUserContext = i.getInstance(http_user_context_1.HttpUserContext);
94
+ await usingAsync(injector.createChild(), async (i) => {
95
+ const utils = i.getInstance(Utils);
96
+ const httpUserContext = i.getInstance(HttpUserContext);
100
97
  i.setExplicitInstance({
101
98
  getCurrentUser: () => httpUserContext.getCurrentUser(req),
102
99
  isAuthorized: (...roles) => httpUserContext.isAuthorized(req, ...roles),
103
100
  isAuthenticated: () => httpUserContext.isAuthenticated(req),
104
- }, core_1.IdentityContext);
101
+ }, IdentityContext);
105
102
  try {
106
103
  const actionResult = await action({
107
104
  request: req,
@@ -109,7 +106,7 @@ let ApiManager = class ApiManager {
109
106
  injector: i,
110
107
  getBody: () => utils.readPostBody(req),
111
108
  headers: req.headers,
112
- getQuery: () => deserializeQueryParams ? deserializeQueryParams(fullUrl.search) : (0, rest_1.deserializeQueryString)(fullUrl.search),
109
+ getQuery: () => deserializeQueryParams ? deserializeQueryParams(fullUrl.search) : deserializeQueryString(fullUrl.search),
113
110
  getUrlParams: () => {
114
111
  return params;
115
112
  },
@@ -117,7 +114,7 @@ let ApiManager = class ApiManager {
117
114
  res.sendActionResult(actionResult);
118
115
  }
119
116
  catch (error) {
120
- const errorActionResult = await (0, error_action_1.ErrorAction)({
117
+ const errorActionResult = await ErrorAction({
121
118
  request: req,
122
119
  response: res,
123
120
  injector: i,
@@ -129,8 +126,8 @@ let ApiManager = class ApiManager {
129
126
  });
130
127
  }
131
128
  async onMessage(options) {
132
- const fullUrl = new URL(utils_1.PathHelper.joinPaths('http://', `${options.hostName || server_manager_1.ServerManager.DEFAULT_HOST}:${options.port}`, options.req.url));
133
- options.cors && options.injector.getInstance(utils_2.Utils).addCorsHeaders(options.cors, options.req, options.res);
129
+ const fullUrl = new URL(PathHelper.joinPaths('http://', `${options.hostName || ServerManager.DEFAULT_HOST}:${options.port}`, options.req.url));
130
+ options.cors && options.injector.getInstance(Utils).addCorsHeaders(options.cors, options.req, options.res);
134
131
  if (options.req.method === 'OPTIONS') {
135
132
  options.res.writeHead(200);
136
133
  options.res.end();
@@ -141,16 +138,16 @@ let ApiManager = class ApiManager {
141
138
  await this.executeAction({ ...options, ...action, fullUrl });
142
139
  }
143
140
  else {
144
- options.res.sendActionResult(await (0, not_found_action_1.NotFoundAction)({ injector: options.injector, request: options.req, response: options.res }));
141
+ options.res.sendActionResult(await NotFoundAction({ injector: options.injector, request: options.req, response: options.res }));
145
142
  }
146
143
  }
147
144
  };
148
145
  __decorate([
149
- (0, inject_1.Injected)(server_manager_1.ServerManager),
150
- __metadata("design:type", server_manager_1.ServerManager)
146
+ Injected(ServerManager),
147
+ __metadata("design:type", ServerManager)
151
148
  ], ApiManager.prototype, "serverManager", void 0);
152
149
  ApiManager = __decorate([
153
- (0, inject_1.Injectable)({ lifetime: 'singleton' })
150
+ Injectable({ lifetime: 'singleton' })
154
151
  ], ApiManager);
155
- exports.ApiManager = ApiManager;
152
+ export { ApiManager };
156
153
  //# sourceMappingURL=api-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-manager.js","sourceRoot":"","sources":["../src/api-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { isAuthenticated } from '@furystack/core';
2
+ import { sleepAsync } from '@furystack/utils';
3
+ import { HttpUserContext } from './http-user-context';
4
+ import { JsonResult } from './request-action-implementation';
5
+ export const Authenticate = () => (action) => {
6
+ return async (args) => {
7
+ const { injector } = args;
8
+ const authenticated = await isAuthenticated(injector);
9
+ if (!authenticated) {
10
+ await sleepAsync(Math.random() * 1000);
11
+ return JsonResult({ error: 'unauthorized' }, 401, injector.getInstance(HttpUserContext).authentication.enableBasicAuth ? { 'WWW-Authenticate': 'Basic' } : {});
12
+ }
13
+ return (await action(args));
14
+ };
15
+ };
16
+ //# sourceMappingURL=authenticate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authenticate.js","sourceRoot":"","sources":["../src/authenticate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAE5D,MAAM,CAAC,MAAM,YAAY,GACvB,GAAG,EAAE,CACL,CAAgC,MAAwB,EAAoB,EAAE;IAC5E,OAAO,KAAK,EAAE,IAA6B,EAA4B,EAAE;QACvE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QACzB,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAA;QACrD,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAA;YACtC,OAAO,UAAU,CACf,EAAE,KAAK,EAAE,cAAc,EAAE,EACzB,GAAG,EACH,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAC9E,CAAA;SAChC;QACD,OAAO,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAQ,CAAA;IACpC,CAAC,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { isAuthorized } from '@furystack/core';
2
+ import { sleepAsync } from '@furystack/utils';
3
+ import { JsonResult } from './request-action-implementation';
4
+ export const Authorize = (...roles) => (action) => {
5
+ return async (options) => {
6
+ try {
7
+ const authorized = await isAuthorized(options.injector, ...roles);
8
+ if (!authorized) {
9
+ await sleepAsync(Math.random() * 1000);
10
+ return JsonResult({ error: 'forbidden' }, 403);
11
+ }
12
+ }
13
+ catch (error) {
14
+ return JsonResult({ error: 'forbidden' }, 403);
15
+ }
16
+ return (await action(options));
17
+ };
18
+ };
19
+ //# sourceMappingURL=authorize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authorize.js","sourceRoot":"","sources":["../src/authorize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAE5D,MAAM,CAAC,MAAM,SAAS,GACpB,CAAC,GAAG,KAAe,EAAE,EAAE,CACvB,CAAgC,MAAwB,EAAoB,EAAE;IAC5E,OAAO,KAAK,EAAE,OAAgC,EAA4B,EAAE;QAC1E,IAAI;YACF,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAA;YACjE,IAAI,CAAC,UAAU,EAAE;gBACf,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAA;gBACtC,OAAO,UAAU,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,GAAG,CAAQ,CAAA;aACtD;SACF;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,UAAU,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,GAAG,CAAQ,CAAA;SACtD;QACD,OAAO,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAQ,CAAA;IACvC,CAAC,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,20 @@
1
+ import '@furystack/repository';
2
+ import { JsonResult } from '../request-action-implementation';
3
+ import { getRepository } from '@furystack/repository';
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
10
+ */
11
+ export const createDeleteEndpoint = (options) => {
12
+ const endpoint = async ({ injector, getUrlParams }) => {
13
+ const { id } = getUrlParams();
14
+ const dataSet = getRepository(injector).getDataSetFor(options.model, options.primaryKey);
15
+ await dataSet.remove(injector, id);
16
+ return JsonResult({}, 204);
17
+ };
18
+ return endpoint;
19
+ };
20
+ //# sourceMappingURL=create-delete-endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-delete-endpoint.js","sourceRoot":"","sources":["../../src/endpoint-generators/create-delete-endpoint.ts"],"names":[],"mappings":"AAEA,OAAO,uBAAuB,CAAA;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAC7D,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"}
@@ -0,0 +1,22 @@
1
+ import '@furystack/repository';
2
+ import { JsonResult } from '../request-action-implementation';
3
+ import { getRepository } from '@furystack/repository';
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
10
+ */
11
+ export const createGetCollectionEndpoint = (options) => {
12
+ const endpoint = async ({ injector, getQuery }) => {
13
+ const { findOptions } = getQuery();
14
+ const dataSet = getRepository(injector).getDataSetFor(options.model, options.primaryKey);
15
+ const entriesPromise = dataSet.find(injector, findOptions || {});
16
+ const countPromise = dataSet.count(injector, findOptions?.filter);
17
+ const [entries, count] = await Promise.all([entriesPromise, countPromise]);
18
+ return JsonResult({ entries, count });
19
+ };
20
+ return endpoint;
21
+ };
22
+ //# sourceMappingURL=create-get-collection-endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-get-collection-endpoint.js","sourceRoot":"","sources":["../../src/endpoint-generators/create-get-collection-endpoint.ts"],"names":[],"mappings":"AAEA,OAAO,uBAAuB,CAAA;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAC7D,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,CAAM,QAAQ,EAAE,WAAW,IAAI,EAAE,CAAC,CAAA;QACrE,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"}
@@ -0,0 +1,25 @@
1
+ import { RequestError } from '@furystack/rest';
2
+ import '@furystack/repository';
3
+ import { JsonResult } from '../request-action-implementation';
4
+ import { getRepository } from '@furystack/repository';
5
+ /**
6
+ * Creates a simple Get Entity endpoint for a specified model.
7
+ * @param options The options for endpoint creation
8
+ * @param options.model The entity model, should have a Repository DataSet
9
+ * @param options.primaryKey The field name used as primary key on the model
10
+ * @returns The generated endpoint
11
+ */
12
+ export const createGetEntityEndpoint = (options) => {
13
+ const endpoint = async ({ injector, getUrlParams, getQuery }) => {
14
+ const { id } = getUrlParams();
15
+ const { select } = getQuery();
16
+ const dataSet = getRepository(injector).getDataSetFor(options.model, options.primaryKey);
17
+ const entry = await dataSet.get(injector, id, select);
18
+ if (!entry) {
19
+ throw new RequestError('Entity not found', 404);
20
+ }
21
+ return JsonResult(entry);
22
+ };
23
+ return endpoint;
24
+ };
25
+ //# sourceMappingURL=create-get-entity-endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-get-entity-endpoint.js","sourceRoot":"","sources":["../../src/endpoint-generators/create-get-entity-endpoint.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,uBAAuB,CAAA;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAgD,OAGtF,EAAE,EAAE;IACH,MAAM,QAAQ,GAAqD,KAAK,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE;QAChH,MAAM,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,CAAA;QAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;QAC7B,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;QACxF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;QACrD,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,YAAY,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAA;SAChD;QACD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC,CAAA;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA"}
@@ -0,0 +1,22 @@
1
+ import '@furystack/repository';
2
+ import '../incoming-message-extensions';
3
+ import { JsonResult } from '../request-action-implementation';
4
+ import { getRepository } from '@furystack/repository';
5
+ /**
6
+ * Creates a PATCH endpoint for updating entities
7
+ * @param options The options for endpoint creation
8
+ * @param options.model The Model class
9
+ * @param options.primaryKey The field name that is used as primary key on the model
10
+ * @returns a boolean that indicates the success
11
+ */
12
+ export const createPatchEndpoint = (options) => {
13
+ const endpoint = async ({ injector, request, getUrlParams, }) => {
14
+ const { id } = getUrlParams();
15
+ const patchData = await request.readPostBody();
16
+ const dataSet = getRepository(injector).getDataSetFor(options.model, options.primaryKey);
17
+ await dataSet.update(injector, id, patchData);
18
+ return JsonResult({});
19
+ };
20
+ return endpoint;
21
+ };
22
+ //# sourceMappingURL=create-patch-endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-patch-endpoint.js","sourceRoot":"","sources":["../../src/endpoint-generators/create-patch-endpoint.ts"],"names":[],"mappings":"AAEA,OAAO,uBAAuB,CAAA;AAC9B,OAAO,gCAAgC,CAAA;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAGrD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAIjC,OAGD,EAAE,EAAE;IACH,MAAM,QAAQ,GAAgE,KAAK,EAAE,EACnF,QAAQ,EACR,OAAO,EACP,YAAY,GACb,EAAE,EAAE;QACH,MAAM,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,CAAA;QAC7B,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,YAAY,EAAK,CAAA;QACjD,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,EAAE,SAAS,CAAC,CAAA;QAC7C,OAAO,UAAU,CAAC,EAAE,CAAC,CAAA;IACvB,CAAC,CAAA;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA"}
@@ -0,0 +1,25 @@
1
+ import { RequestError } from '@furystack/rest';
2
+ import '@furystack/repository';
3
+ import '../incoming-message-extensions';
4
+ import { JsonResult } from '../request-action-implementation';
5
+ import { getRepository } from '@furystack/repository';
6
+ /**
7
+ * Creates a POST endpoint for updating entities
8
+ * @param options The options for endpoint creation
9
+ * @param options.model The Model class
10
+ * @param options.primaryKey The field name used as primary key
11
+ * @returns a boolean that indicates the success
12
+ */
13
+ export const createPostEndpoint = (options) => {
14
+ const endpoint = async ({ injector, request }) => {
15
+ const dataSet = getRepository(injector).getDataSetFor(options.model, options.primaryKey);
16
+ const entityToCreate = await request.readPostBody();
17
+ const { created } = await dataSet.add(injector, entityToCreate);
18
+ if (!created || !created.length) {
19
+ throw new RequestError('Entity not found', 404);
20
+ }
21
+ return JsonResult(created[0], 201);
22
+ };
23
+ return endpoint;
24
+ };
25
+ //# sourceMappingURL=create-post-endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-post-endpoint.js","sourceRoot":"","sources":["../../src/endpoint-generators/create-post-endpoint.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,uBAAuB,CAAA;AAC9B,OAAO,gCAAgC,CAAA;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAIhC,OAGD,EAAE,EAAE;IACH,MAAM,QAAQ,GAA+D,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAC3G,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,aAAa,CACnD,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,UAAU,CACnB,CAAA;QAED,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,YAAY,EAAiB,CAAA;QAClE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;QAC/D,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAC/B,MAAM,IAAI,YAAY,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAA;SAChD;QACD,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACpC,CAAC,CAAA;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ export * from './create-delete-endpoint';
2
+ export * from './create-get-collection-endpoint';
3
+ export * from './create-get-entity-endpoint';
4
+ export * from './create-patch-endpoint';
5
+ export * from './create-post-endpoint';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/endpoint-generators/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,kCAAkC,CAAA;AAChD,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA"}
@@ -0,0 +1,23 @@
1
+ import { addStore, InMemoryStore, User } from '@furystack/core';
2
+ import { DefaultSession } from '../models/default-session';
3
+ import '@furystack/repository';
4
+ import '../helpers';
5
+ import { getRepository } from '@furystack/repository';
6
+ export class MockClass {
7
+ }
8
+ export const setupContext = (i) => {
9
+ addStore(i, new InMemoryStore({
10
+ model: MockClass,
11
+ primaryKey: 'id',
12
+ }))
13
+ .addStore(new InMemoryStore({
14
+ model: User,
15
+ primaryKey: 'username',
16
+ }))
17
+ .addStore(new InMemoryStore({
18
+ model: DefaultSession,
19
+ primaryKey: 'sessionId',
20
+ }));
21
+ getRepository(i).createDataSet(MockClass, 'id');
22
+ };
23
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/endpoint-generators/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,uBAAuB,CAAA;AAC9B,OAAO,YAAY,CAAA;AACnB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAErD,MAAM,OAAO,SAAS;CAGrB;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAW,EAAE,EAAE;IAC1C,QAAQ,CACN,CAAC,EACD,IAAI,aAAa,CAAC;QAChB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,IAAI;KACjB,CAAC,CACH;SACE,QAAQ,CACP,IAAI,aAAa,CAAC;QAChB,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,UAAU;KACvB,CAAC,CACH;SACA,QAAQ,CACP,IAAI,aAAa,CAAC;QAChB,KAAK,EAAE,cAAc;QACrB,UAAU,EAAE,WAAW;KACxB,CAAC,CACH,CAAA;IACH,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AACjD,CAAC,CAAA"}
package/esm/helpers.js ADDED
@@ -0,0 +1,28 @@
1
+ import { HttpAuthenticationSettings } from './http-authentication-settings';
2
+ import { ApiManager } from './api-manager';
3
+ import { StaticServerManager } from './static-server-manager';
4
+ /**
5
+ * Sets up the @furystack/rest-service with the provided settings
6
+ * @param api The API implementation details
7
+ * @returns a promise that resolves when the API is added to the server
8
+ */
9
+ export const useRestService = async (api) => await api.injector.getInstance(ApiManager).addApi({ ...api });
10
+ /**
11
+ * Sets up the HTTP Authentication
12
+ * @param injector The Injector instance
13
+ * @param settings Settings for HTTP Authentication
14
+ * @returns void
15
+ */
16
+ export const useHttpAuthentication = (injector, settings) => injector.setExplicitInstance({ ...new HttpAuthenticationSettings(), ...settings }, HttpAuthenticationSettings);
17
+ /**
18
+ * Sets up a static file server
19
+ * @param options The settings for the static file server
20
+ * @param options.injector The Injector instance
21
+ * @param options.settings Settings for the static file server
22
+ * @returns a promise that resolves when the server is ready
23
+ */
24
+ export const useStaticFiles = (options) => {
25
+ const { injector, ...settings } = options;
26
+ return injector.getInstance(StaticServerManager).addStaticSite(settings);
27
+ };
28
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAA;AAG3E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAqB,GAA2B,EAAE,EAAE,CACrF,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAA;AAE/D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,QAAkB,EAClB,QAA+D,EAC/D,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,GAAG,IAAI,0BAA0B,EAAE,EAAE,GAAG,QAAQ,EAAE,EAAE,0BAA0B,CAAC,CAAA;AAEnH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAqD,EAAE,EAAE;IACtF,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAA;IACzC,OAAO,QAAQ,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;AAC1E,CAAC,CAAA"}
@@ -1,29 +1,26 @@
1
- "use strict";
2
1
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
2
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
3
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
6
  };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.HttpAuthenticationSettings = void 0;
10
- const core_1 = require("@furystack/core");
11
- const inject_1 = require("@furystack/inject");
12
- const default_session_1 = require("./models/default-session");
7
+ import { User } from '@furystack/core';
8
+ import { Injectable } from '@furystack/inject';
9
+ import { DefaultSession } from './models/default-session';
13
10
  /**
14
11
  * Authentication settings object for FuryStack HTTP Api
15
12
  */
16
13
  let HttpAuthenticationSettings = class HttpAuthenticationSettings {
17
14
  constructor() {
18
- this.model = core_1.User;
19
- this.getUserStore = (sm) => sm.getStoreFor(core_1.User, 'username');
20
- this.getSessionStore = (sm) => sm.getStoreFor(default_session_1.DefaultSession, 'sessionId');
15
+ this.model = User;
16
+ this.getUserStore = (sm) => sm.getStoreFor(User, 'username');
17
+ this.getSessionStore = (sm) => sm.getStoreFor(DefaultSession, 'sessionId');
21
18
  this.cookieName = 'fss';
22
19
  this.enableBasicAuth = true;
23
20
  }
24
21
  };
25
22
  HttpAuthenticationSettings = __decorate([
26
- (0, inject_1.Injectable)({ lifetime: 'singleton' })
23
+ Injectable({ lifetime: 'singleton' })
27
24
  ], HttpAuthenticationSettings);
28
- exports.HttpAuthenticationSettings = HttpAuthenticationSettings;
25
+ export { HttpAuthenticationSettings };
29
26
  //# sourceMappingURL=http-authentication-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-authentication-settings.js","sourceRoot":"","sources":["../src/http-authentication-settings.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAEzD;;GAEG;AAEH,IAAa,0BAA0B,GAAvC,MAAa,0BAA0B;IAAvC;QACS,UAAK,GAAyB,IAA4B,CAAA;QAE1D,iBAAY,GAAsE,CAAC,EAAE,EAAE,EAAE,CAC9F,EAAE,CAAC,WAAW,CAAqB,IAAW,EAAE,UAAU,CAAC,CAAA;QAEtD,oBAAe,GAA4E,CAAC,EAAE,EAAE,EAAE,CACvG,EAAE,CAAC,WAAW,CAAC,cAAc,EAAE,WAAW,CAAuD,CAAA;QAE5F,eAAU,GAAG,KAAK,CAAA;QAClB,oBAAe,GAAG,IAAI,CAAA;IAC/B,CAAC;CAAA,CAAA;AAXY,0BAA0B;IADtC,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;GACzB,0BAA0B,CAWtC;SAXY,0BAA0B"}