@furystack/rest-service 13.0.0 → 14.1.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 (311) hide show
  1. package/CHANGELOG.md +124 -0
  2. package/README.md +47 -28
  3. package/esm/actions/error-action.d.ts +7 -2
  4. package/esm/actions/error-action.d.ts.map +1 -1
  5. package/esm/actions/error-action.js +7 -2
  6. package/esm/actions/error-action.js.map +1 -1
  7. package/esm/actions/get-current-user.d.ts +1 -4
  8. package/esm/actions/get-current-user.d.ts.map +1 -1
  9. package/esm/actions/get-current-user.js +1 -4
  10. package/esm/actions/get-current-user.js.map +1 -1
  11. package/esm/actions/get-current-user.spec.js +10 -6
  12. package/esm/actions/get-current-user.spec.js.map +1 -1
  13. package/esm/actions/is-authenticated.d.ts +3 -4
  14. package/esm/actions/is-authenticated.d.ts.map +1 -1
  15. package/esm/actions/is-authenticated.js +3 -4
  16. package/esm/actions/is-authenticated.js.map +1 -1
  17. package/esm/actions/is-authenticated.spec.js +10 -6
  18. package/esm/actions/is-authenticated.spec.js.map +1 -1
  19. package/esm/actions/logout-action.spec.js +11 -9
  20. package/esm/actions/logout-action.spec.js.map +1 -1
  21. package/esm/actions/logout.d.ts +2 -6
  22. package/esm/actions/logout.d.ts.map +1 -1
  23. package/esm/actions/logout.js +3 -7
  24. package/esm/actions/logout.js.map +1 -1
  25. package/esm/actions/not-found-action.d.ts +1 -3
  26. package/esm/actions/not-found-action.d.ts.map +1 -1
  27. package/esm/actions/not-found-action.js +1 -3
  28. package/esm/actions/not-found-action.js.map +1 -1
  29. package/esm/actions/password-login-action.d.ts +5 -12
  30. package/esm/actions/password-login-action.d.ts.map +1 -1
  31. package/esm/actions/password-login-action.js +6 -13
  32. package/esm/actions/password-login-action.js.map +1 -1
  33. package/esm/actions/password-login-action.spec.js +23 -28
  34. package/esm/actions/password-login-action.spec.js.map +1 -1
  35. package/esm/authenticate.d.ts +5 -11
  36. package/esm/authenticate.d.ts.map +1 -1
  37. package/esm/authenticate.js +6 -12
  38. package/esm/authenticate.js.map +1 -1
  39. package/esm/authenticate.spec.js +41 -33
  40. package/esm/authenticate.spec.js.map +1 -1
  41. package/esm/authentication-providers/authentication-provider.d.ts +17 -0
  42. package/esm/authentication-providers/authentication-provider.d.ts.map +1 -1
  43. package/esm/authentication-providers/basic-auth-provider.d.ts +7 -0
  44. package/esm/authentication-providers/basic-auth-provider.d.ts.map +1 -1
  45. package/esm/authentication-providers/basic-auth-provider.js +7 -0
  46. package/esm/authentication-providers/basic-auth-provider.js.map +1 -1
  47. package/esm/authentication-providers/cookie-auth-provider.d.ts.map +1 -1
  48. package/esm/authentication-providers/cookie-auth-provider.js +8 -0
  49. package/esm/authentication-providers/cookie-auth-provider.js.map +1 -1
  50. package/esm/authorize.d.ts +5 -17
  51. package/esm/authorize.d.ts.map +1 -1
  52. package/esm/authorize.js +5 -17
  53. package/esm/authorize.js.map +1 -1
  54. package/esm/authorize.spec.js +34 -29
  55. package/esm/authorize.spec.js.map +1 -1
  56. package/esm/endpoint-generators/create-delete-endpoint.d.ts +6 -11
  57. package/esm/endpoint-generators/create-delete-endpoint.d.ts.map +1 -1
  58. package/esm/endpoint-generators/create-delete-endpoint.js +7 -11
  59. package/esm/endpoint-generators/create-delete-endpoint.js.map +1 -1
  60. package/esm/endpoint-generators/create-delete-endpoint.spec.js +14 -21
  61. package/esm/endpoint-generators/create-delete-endpoint.spec.js.map +1 -1
  62. package/esm/endpoint-generators/create-get-collection-endpoint.d.ts +11 -11
  63. package/esm/endpoint-generators/create-get-collection-endpoint.d.ts.map +1 -1
  64. package/esm/endpoint-generators/create-get-collection-endpoint.js +13 -12
  65. package/esm/endpoint-generators/create-get-collection-endpoint.js.map +1 -1
  66. package/esm/endpoint-generators/create-get-collection-endpoint.spec.js +43 -70
  67. package/esm/endpoint-generators/create-get-collection-endpoint.spec.js.map +1 -1
  68. package/esm/endpoint-generators/create-get-entity-endpoint.d.ts +6 -11
  69. package/esm/endpoint-generators/create-get-entity-endpoint.d.ts.map +1 -1
  70. package/esm/endpoint-generators/create-get-entity-endpoint.js +7 -11
  71. package/esm/endpoint-generators/create-get-entity-endpoint.js.map +1 -1
  72. package/esm/endpoint-generators/create-get-entity-endpoint.spec.js +16 -33
  73. package/esm/endpoint-generators/create-get-entity-endpoint.spec.js.map +1 -1
  74. package/esm/endpoint-generators/create-get-openapi-document-action.d.ts +1 -1
  75. package/esm/endpoint-generators/create-get-openapi-document-action.d.ts.map +1 -1
  76. package/esm/endpoint-generators/create-get-openapi-document-action.js +1 -1
  77. package/esm/endpoint-generators/create-get-openapi-document-action.js.map +1 -1
  78. package/esm/endpoint-generators/create-get-schema-action.d.ts +1 -1
  79. package/esm/endpoint-generators/create-get-schema-action.d.ts.map +1 -1
  80. package/esm/endpoint-generators/create-get-schema-action.js.map +1 -1
  81. package/esm/endpoint-generators/create-patch-endpoint.d.ts +7 -13
  82. package/esm/endpoint-generators/create-patch-endpoint.d.ts.map +1 -1
  83. package/esm/endpoint-generators/create-patch-endpoint.js +8 -13
  84. package/esm/endpoint-generators/create-patch-endpoint.js.map +1 -1
  85. package/esm/endpoint-generators/create-patch-endpoint.spec.js +10 -17
  86. package/esm/endpoint-generators/create-patch-endpoint.spec.js.map +1 -1
  87. package/esm/endpoint-generators/create-post-endpoint.d.ts +7 -13
  88. package/esm/endpoint-generators/create-post-endpoint.d.ts.map +1 -1
  89. package/esm/endpoint-generators/create-post-endpoint.js +8 -13
  90. package/esm/endpoint-generators/create-post-endpoint.js.map +1 -1
  91. package/esm/endpoint-generators/create-post-endpoint.spec.js +41 -14
  92. package/esm/endpoint-generators/create-post-endpoint.spec.js.map +1 -1
  93. package/esm/endpoint-generators/utils.d.ts +17 -2
  94. package/esm/endpoint-generators/utils.d.ts.map +1 -1
  95. package/esm/endpoint-generators/utils.js +33 -20
  96. package/esm/endpoint-generators/utils.js.map +1 -1
  97. package/esm/get-schema-from-api.d.ts +1 -1
  98. package/esm/get-schema-from-api.d.ts.map +1 -1
  99. package/esm/get-schema-from-api.js +1 -0
  100. package/esm/get-schema-from-api.js.map +1 -1
  101. package/esm/get-schema-from-api.spec.js.map +1 -1
  102. package/esm/helpers.d.ts +54 -88
  103. package/esm/helpers.d.ts.map +1 -1
  104. package/esm/helpers.js +90 -92
  105. package/esm/helpers.js.map +1 -1
  106. package/esm/helpers.spec.d.ts +2 -1
  107. package/esm/helpers.spec.d.ts.map +1 -1
  108. package/esm/helpers.spec.js +41 -38
  109. package/esm/helpers.spec.js.map +1 -1
  110. package/esm/http-authentication-settings.d.ts +56 -12
  111. package/esm/http-authentication-settings.d.ts.map +1 -1
  112. package/esm/http-authentication-settings.js +27 -29
  113. package/esm/http-authentication-settings.js.map +1 -1
  114. package/esm/http-server-pool.d.ts +64 -0
  115. package/esm/http-server-pool.d.ts.map +1 -0
  116. package/esm/http-server-pool.js +95 -0
  117. package/esm/http-server-pool.js.map +1 -0
  118. package/esm/http-server-pool.spec.d.ts +2 -0
  119. package/esm/http-server-pool.spec.d.ts.map +1 -0
  120. package/esm/http-server-pool.spec.js +193 -0
  121. package/esm/http-server-pool.spec.js.map +1 -0
  122. package/esm/http-user-context.d.ts +34 -44
  123. package/esm/http-user-context.d.ts.map +1 -1
  124. package/esm/http-user-context.js +75 -95
  125. package/esm/http-user-context.js.map +1 -1
  126. package/esm/http-user-context.spec.d.ts +8 -2
  127. package/esm/http-user-context.spec.d.ts.map +1 -1
  128. package/esm/http-user-context.spec.js +226 -332
  129. package/esm/http-user-context.spec.js.map +1 -1
  130. package/esm/identity-cache-keys.d.ts +28 -0
  131. package/esm/identity-cache-keys.d.ts.map +1 -0
  132. package/esm/identity-cache-keys.js +13 -0
  133. package/esm/identity-cache-keys.js.map +1 -0
  134. package/esm/identity-cache-keys.spec.d.ts +2 -0
  135. package/esm/identity-cache-keys.spec.d.ts.map +1 -0
  136. package/esm/identity-cache-keys.spec.js +21 -0
  137. package/esm/identity-cache-keys.spec.js.map +1 -0
  138. package/esm/identity-event-bus.d.ts +102 -0
  139. package/esm/identity-event-bus.d.ts.map +1 -0
  140. package/esm/identity-event-bus.js +151 -0
  141. package/esm/identity-event-bus.js.map +1 -0
  142. package/esm/identity-event-bus.spec.d.ts +2 -0
  143. package/esm/identity-event-bus.spec.d.ts.map +1 -0
  144. package/esm/identity-event-bus.spec.js +392 -0
  145. package/esm/identity-event-bus.spec.js.map +1 -0
  146. package/esm/index.d.ts +9 -4
  147. package/esm/index.d.ts.map +1 -1
  148. package/esm/index.js +9 -4
  149. package/esm/index.js.map +1 -1
  150. package/esm/login-response-strategy.d.ts +11 -10
  151. package/esm/login-response-strategy.d.ts.map +1 -1
  152. package/esm/login-response-strategy.js +7 -6
  153. package/esm/login-response-strategy.js.map +1 -1
  154. package/esm/login-response-strategy.spec.js +25 -29
  155. package/esm/login-response-strategy.spec.js.map +1 -1
  156. package/esm/openapi/generate-openapi-document.spec.js.map +1 -1
  157. package/esm/proxy-manager.spec.js +152 -176
  158. package/esm/proxy-manager.spec.js.map +1 -1
  159. package/esm/proxy-runtime.d.ts +27 -0
  160. package/esm/proxy-runtime.d.ts.map +1 -0
  161. package/esm/proxy-runtime.js +45 -0
  162. package/esm/proxy-runtime.js.map +1 -0
  163. package/esm/proxy-runtime.spec.d.ts +2 -0
  164. package/esm/proxy-runtime.spec.d.ts.map +1 -0
  165. package/esm/proxy-runtime.spec.js +39 -0
  166. package/esm/proxy-runtime.spec.js.map +1 -0
  167. package/esm/request-action-implementation.d.ts +25 -0
  168. package/esm/request-action-implementation.d.ts.map +1 -1
  169. package/esm/request-action-implementation.js +9 -0
  170. package/esm/request-action-implementation.js.map +1 -1
  171. package/esm/rest-api-runtime.d.ts +76 -0
  172. package/esm/rest-api-runtime.d.ts.map +1 -0
  173. package/esm/rest-api-runtime.js +131 -0
  174. package/esm/rest-api-runtime.js.map +1 -0
  175. package/esm/rest-api-runtime.spec.d.ts +2 -0
  176. package/esm/rest-api-runtime.spec.d.ts.map +1 -0
  177. package/esm/rest-api-runtime.spec.js +58 -0
  178. package/esm/rest-api-runtime.spec.js.map +1 -0
  179. package/esm/rest-service.integration.spec.d.ts +1 -1
  180. package/esm/rest-service.integration.spec.d.ts.map +1 -1
  181. package/esm/rest-service.integration.spec.js +57 -80
  182. package/esm/rest-service.integration.spec.js.map +1 -1
  183. package/esm/rest.integration.test.js +26 -84
  184. package/esm/rest.integration.test.js.map +1 -1
  185. package/esm/server-telemetry.d.ts +49 -0
  186. package/esm/server-telemetry.d.ts.map +1 -0
  187. package/esm/server-telemetry.js +25 -0
  188. package/esm/server-telemetry.js.map +1 -0
  189. package/esm/server-telemetry.spec.d.ts +2 -0
  190. package/esm/server-telemetry.spec.d.ts.map +1 -0
  191. package/esm/server-telemetry.spec.js +52 -0
  192. package/esm/server-telemetry.spec.js.map +1 -0
  193. package/esm/static-server-manager.spec.js +60 -125
  194. package/esm/static-server-manager.spec.js.map +1 -1
  195. package/esm/static-site-runtime.d.ts +21 -0
  196. package/esm/static-site-runtime.d.ts.map +1 -0
  197. package/esm/static-site-runtime.js +48 -0
  198. package/esm/static-site-runtime.js.map +1 -0
  199. package/esm/static-site-runtime.spec.d.ts +2 -0
  200. package/esm/static-site-runtime.spec.d.ts.map +1 -0
  201. package/esm/static-site-runtime.spec.js +30 -0
  202. package/esm/static-site-runtime.spec.js.map +1 -0
  203. package/esm/user-resolution-cache.d.ts +65 -0
  204. package/esm/user-resolution-cache.d.ts.map +1 -0
  205. package/esm/user-resolution-cache.js +101 -0
  206. package/esm/user-resolution-cache.js.map +1 -0
  207. package/esm/user-resolution-cache.spec.d.ts +2 -0
  208. package/esm/user-resolution-cache.spec.d.ts.map +1 -0
  209. package/esm/user-resolution-cache.spec.js +220 -0
  210. package/esm/user-resolution-cache.spec.js.map +1 -0
  211. package/esm/user-store.d.ts +39 -0
  212. package/esm/user-store.d.ts.map +1 -0
  213. package/esm/user-store.js +62 -0
  214. package/esm/user-store.js.map +1 -0
  215. package/esm/user-store.spec.d.ts +2 -0
  216. package/esm/user-store.spec.d.ts.map +1 -0
  217. package/esm/user-store.spec.js +72 -0
  218. package/esm/user-store.spec.js.map +1 -0
  219. package/esm/validate.d.ts +13 -12
  220. package/esm/validate.d.ts.map +1 -1
  221. package/esm/validate.integration.spec.js +27 -28
  222. package/esm/validate.integration.spec.js.map +1 -1
  223. package/esm/validate.js +12 -0
  224. package/esm/validate.js.map +1 -1
  225. package/package.json +14 -12
  226. package/src/actions/error-action.ts +7 -3
  227. package/src/actions/get-current-user.spec.ts +11 -10
  228. package/src/actions/get-current-user.ts +1 -4
  229. package/src/actions/is-authenticated.spec.ts +12 -7
  230. package/src/actions/is-authenticated.ts +3 -4
  231. package/src/actions/logout-action.spec.ts +12 -12
  232. package/src/actions/logout.ts +3 -7
  233. package/src/actions/not-found-action.ts +1 -3
  234. package/src/actions/password-login-action.spec.ts +30 -30
  235. package/src/actions/password-login-action.ts +6 -13
  236. package/src/authenticate.spec.ts +45 -51
  237. package/src/authenticate.ts +6 -12
  238. package/src/authentication-providers/authentication-provider.ts +17 -0
  239. package/src/authentication-providers/basic-auth-provider.ts +7 -0
  240. package/src/authentication-providers/cookie-auth-provider.ts +8 -0
  241. package/src/authorize.spec.ts +37 -39
  242. package/src/authorize.ts +6 -17
  243. package/src/endpoint-generators/create-delete-endpoint.spec.ts +16 -24
  244. package/src/endpoint-generators/create-delete-endpoint.ts +11 -17
  245. package/src/endpoint-generators/create-get-collection-endpoint.spec.ts +45 -78
  246. package/src/endpoint-generators/create-get-collection-endpoint.ts +17 -19
  247. package/src/endpoint-generators/create-get-entity-endpoint.spec.ts +17 -33
  248. package/src/endpoint-generators/create-get-entity-endpoint.ts +11 -17
  249. package/src/endpoint-generators/create-get-openapi-document-action.ts +2 -2
  250. package/src/endpoint-generators/create-get-schema-action.ts +1 -1
  251. package/src/endpoint-generators/create-patch-endpoint.spec.ts +11 -18
  252. package/src/endpoint-generators/create-patch-endpoint.ts +12 -23
  253. package/src/endpoint-generators/create-post-endpoint.spec.ts +45 -14
  254. package/src/endpoint-generators/create-post-endpoint.ts +13 -23
  255. package/src/endpoint-generators/utils.ts +36 -28
  256. package/src/get-schema-from-api.spec.ts +1 -1
  257. package/src/get-schema-from-api.ts +2 -1
  258. package/src/helpers.spec.ts +51 -41
  259. package/src/helpers.ts +140 -109
  260. package/src/http-authentication-settings.ts +78 -24
  261. package/src/http-server-pool.spec.ts +220 -0
  262. package/src/http-server-pool.ts +169 -0
  263. package/src/http-user-context.spec.ts +246 -378
  264. package/src/http-user-context.ts +122 -92
  265. package/src/identity-cache-keys.spec.ts +24 -0
  266. package/src/identity-cache-keys.ts +31 -0
  267. package/src/identity-event-bus.spec.ts +285 -0
  268. package/src/identity-event-bus.ts +230 -0
  269. package/src/index.ts +9 -4
  270. package/src/login-response-strategy.spec.ts +32 -31
  271. package/src/login-response-strategy.ts +14 -12
  272. package/src/openapi/generate-openapi-document.spec.ts +2 -2
  273. package/src/proxy-manager.spec.ts +158 -188
  274. package/src/proxy-runtime.spec.ts +50 -0
  275. package/src/proxy-runtime.ts +75 -0
  276. package/src/request-action-implementation.ts +25 -0
  277. package/src/rest-api-runtime.spec.ts +77 -0
  278. package/src/rest-api-runtime.ts +204 -0
  279. package/src/rest-service.integration.spec.ts +65 -85
  280. package/src/rest.integration.test.ts +27 -87
  281. package/src/server-telemetry.spec.ts +56 -0
  282. package/src/server-telemetry.ts +43 -0
  283. package/src/static-server-manager.spec.ts +63 -151
  284. package/src/static-site-runtime.spec.ts +39 -0
  285. package/src/static-site-runtime.ts +75 -0
  286. package/src/user-resolution-cache.spec.ts +241 -0
  287. package/src/user-resolution-cache.ts +164 -0
  288. package/src/user-store.spec.ts +86 -0
  289. package/src/user-store.ts +69 -0
  290. package/src/validate.integration.spec.ts +40 -35
  291. package/src/validate.ts +14 -12
  292. package/esm/api-manager.d.ts +0 -104
  293. package/esm/api-manager.d.ts.map +0 -1
  294. package/esm/api-manager.js +0 -179
  295. package/esm/api-manager.js.map +0 -1
  296. package/esm/proxy-manager.d.ts +0 -53
  297. package/esm/proxy-manager.d.ts.map +0 -1
  298. package/esm/proxy-manager.js +0 -84
  299. package/esm/proxy-manager.js.map +0 -1
  300. package/esm/server-manager.d.ts +0 -48
  301. package/esm/server-manager.d.ts.map +0 -1
  302. package/esm/server-manager.js +0 -100
  303. package/esm/server-manager.js.map +0 -1
  304. package/esm/static-server-manager.d.ts +0 -19
  305. package/esm/static-server-manager.d.ts.map +0 -1
  306. package/esm/static-server-manager.js +0 -65
  307. package/esm/static-server-manager.js.map +0 -1
  308. package/src/api-manager.ts +0 -304
  309. package/src/proxy-manager.ts +0 -102
  310. package/src/server-manager.ts +0 -135
  311. package/src/static-server-manager.ts +0 -90
@@ -0,0 +1,392 @@
1
+ var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
2
+ if (value !== null && value !== void 0) {
3
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
4
+ var dispose, inner;
5
+ if (async) {
6
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
7
+ dispose = value[Symbol.asyncDispose];
8
+ }
9
+ if (dispose === void 0) {
10
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
11
+ dispose = value[Symbol.dispose];
12
+ if (async) inner = dispose;
13
+ }
14
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
15
+ if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
16
+ env.stack.push({ value: value, dispose: dispose, async: async });
17
+ }
18
+ else if (async) {
19
+ env.stack.push({ async: true });
20
+ }
21
+ return value;
22
+ };
23
+ var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
24
+ return function (env) {
25
+ function fail(e) {
26
+ env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
27
+ env.hasError = true;
28
+ }
29
+ var r, s = 0;
30
+ function next() {
31
+ while (r = env.stack.pop()) {
32
+ try {
33
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
34
+ if (r.dispose) {
35
+ var result = r.dispose.call(r.value);
36
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
37
+ }
38
+ else s |= 1;
39
+ }
40
+ catch (e) {
41
+ fail(e);
42
+ }
43
+ }
44
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
45
+ if (env.hasError) throw env.error;
46
+ }
47
+ return next();
48
+ };
49
+ })(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
50
+ var e = new Error(message);
51
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
+ });
53
+ import { CrossNodeBus, defineInProcessCrossNodeBus } from '@furystack/cross-node-bus';
54
+ import { createInProcessBusNetwork } from '@furystack/cross-node-bus/testing';
55
+ import { createInjector } from '@furystack/inject';
56
+ import { usingAsync } from '@furystack/utils';
57
+ import { describe, expect, it, vi } from 'vitest';
58
+ import { sessionCacheKey, userCacheTag } from './identity-cache-keys.js';
59
+ import { applyLocalIdentityInvalidation, IDENTITY_EVENT_TOPIC, IdentityEventBus, } from './identity-event-bus.js';
60
+ import { UserResolutionCache } from './user-resolution-cache.js';
61
+ const userOf = (username, roles = []) => ({ username, roles: [...roles] });
62
+ const populateCache = async (cache, sessionId, user) => {
63
+ await cache.resolve(sessionCacheKey(sessionId), async () => user);
64
+ };
65
+ describe('IdentityEventBus', () => {
66
+ describe('applyLocalIdentityInvalidation', () => {
67
+ it('invalidates by session id for `userLoggedOut`', async () => {
68
+ await usingAsync(createInjector(), async (i) => {
69
+ const cache = i.get(UserResolutionCache);
70
+ await populateCache(cache, 's1', userOf('alice'));
71
+ expect(cache.size).toBe(1);
72
+ applyLocalIdentityInvalidation({ type: 'userLoggedOut', sessionId: 's1' }, cache);
73
+ expect(cache.size).toBe(0);
74
+ });
75
+ });
76
+ it('invalidates by session id for `sessionInvalidated`', async () => {
77
+ await usingAsync(createInjector(), async (i) => {
78
+ const cache = i.get(UserResolutionCache);
79
+ await populateCache(cache, 's2', userOf('alice'));
80
+ applyLocalIdentityInvalidation({ type: 'sessionInvalidated', sessionId: 's2' }, cache);
81
+ expect(cache.size).toBe(0);
82
+ });
83
+ });
84
+ for (const type of ['userRolesChanged', 'userDeleted', 'passwordChanged']) {
85
+ it(`invalidates every cached session for the named user on \`${type}\``, async () => {
86
+ await usingAsync(createInjector(), async (i) => {
87
+ const cache = i.get(UserResolutionCache);
88
+ await populateCache(cache, 's-a-1', userOf('alice'));
89
+ await populateCache(cache, 's-a-2', userOf('alice'));
90
+ await populateCache(cache, 's-b-1', userOf('bob'));
91
+ expect(cache.size).toBe(3);
92
+ applyLocalIdentityInvalidation({ type, username: 'alice' }, cache);
93
+ expect(cache.size).toBe(1);
94
+ // The remaining entry is bob's.
95
+ await populateCache(cache, 's-a-3', userOf('alice'));
96
+ expect(cache.size).toBe(2);
97
+ });
98
+ });
99
+ }
100
+ });
101
+ describe('publish', () => {
102
+ it('invalidates the local cache synchronously before awaiting the bus', async () => {
103
+ await usingAsync(createInjector(), async (i) => {
104
+ const cache = i.get(UserResolutionCache);
105
+ await populateCache(cache, 's1', userOf('alice'));
106
+ const bus = i.get(IdentityEventBus);
107
+ const pending = bus.publish({ type: 'userLoggedOut', sessionId: 's1' });
108
+ // Local invalidation must already be visible — the bus.publish promise
109
+ // is irrelevant for in-process correctness on the originating node.
110
+ expect(cache.size).toBe(0);
111
+ await pending;
112
+ });
113
+ });
114
+ it('fires local subscribers with the typed payload on every event variant', async () => {
115
+ await usingAsync(createInjector(), async (i) => {
116
+ const env_1 = { stack: [], error: void 0, hasError: false };
117
+ try {
118
+ const bus = i.get(IdentityEventBus);
119
+ const events = [];
120
+ const _u = __addDisposableResource(env_1, bus.subscribe('userLoggedOut', (event) => events.push(event)), false);
121
+ const _s = __addDisposableResource(env_1, bus.subscribe('sessionInvalidated', (event) => events.push(event)), false);
122
+ const _r = __addDisposableResource(env_1, bus.subscribe('userRolesChanged', (event) => events.push(event)), false);
123
+ const _d = __addDisposableResource(env_1, bus.subscribe('userDeleted', (event) => events.push(event)), false);
124
+ const _p = __addDisposableResource(env_1, bus.subscribe('passwordChanged', (event) => events.push(event)), false);
125
+ await bus.publish({ type: 'userLoggedOut', sessionId: 's1' });
126
+ await bus.publish({ type: 'sessionInvalidated', sessionId: 's2' });
127
+ await bus.publish({ type: 'userRolesChanged', username: 'alice' });
128
+ await bus.publish({ type: 'userDeleted', username: 'bob' });
129
+ await bus.publish({ type: 'passwordChanged', username: 'carol' });
130
+ expect(events).toEqual([
131
+ { type: 'userLoggedOut', sessionId: 's1' },
132
+ { type: 'sessionInvalidated', sessionId: 's2' },
133
+ { type: 'userRolesChanged', username: 'alice' },
134
+ { type: 'userDeleted', username: 'bob' },
135
+ { type: 'passwordChanged', username: 'carol' },
136
+ ]);
137
+ }
138
+ catch (e_1) {
139
+ env_1.error = e_1;
140
+ env_1.hasError = true;
141
+ }
142
+ finally {
143
+ __disposeResources(env_1);
144
+ }
145
+ });
146
+ });
147
+ it('does not fire subscribers for other event types', async () => {
148
+ await usingAsync(createInjector(), async (i) => {
149
+ const env_2 = { stack: [], error: void 0, hasError: false };
150
+ try {
151
+ const bus = i.get(IdentityEventBus);
152
+ const handler = vi.fn();
153
+ const _u = __addDisposableResource(env_2, bus.subscribe('userLoggedOut', handler), false);
154
+ await bus.publish({ type: 'sessionInvalidated', sessionId: 'x' });
155
+ await bus.publish({ type: 'userRolesChanged', username: 'alice' });
156
+ expect(handler).not.toHaveBeenCalled();
157
+ }
158
+ catch (e_2) {
159
+ env_2.error = e_2;
160
+ env_2.hasError = true;
161
+ }
162
+ finally {
163
+ __disposeResources(env_2);
164
+ }
165
+ });
166
+ });
167
+ it('rejects when called after dispose', async () => {
168
+ const injector = createInjector();
169
+ const bus = injector.get(IdentityEventBus);
170
+ await injector[Symbol.asyncDispose]();
171
+ await expect(bus.publish({ type: 'userLoggedOut', sessionId: 's1' })).rejects.toThrow(/disposed/);
172
+ });
173
+ it('publishes onto the underlying CrossNodeBus topic', async () => {
174
+ await usingAsync(createInjector(), async (i) => {
175
+ const env_3 = { stack: [], error: void 0, hasError: false };
176
+ try {
177
+ const crossNodeBus = i.get(CrossNodeBus);
178
+ const wireHandler = vi.fn();
179
+ const _sub = __addDisposableResource(env_3, crossNodeBus.subscribe(IDENTITY_EVENT_TOPIC, wireHandler), false);
180
+ await i.get(IdentityEventBus).publish({ type: 'userRolesChanged', username: 'alice' });
181
+ expect(wireHandler).toHaveBeenCalledTimes(1);
182
+ expect(wireHandler.mock.calls[0][0].payload).toEqual({ type: 'userRolesChanged', username: 'alice' });
183
+ }
184
+ catch (e_3) {
185
+ env_3.error = e_3;
186
+ env_3.hasError = true;
187
+ }
188
+ finally {
189
+ __disposeResources(env_3);
190
+ }
191
+ });
192
+ });
193
+ });
194
+ describe('subscribe', () => {
195
+ it('returns a Disposable that removes the listener', async () => {
196
+ await usingAsync(createInjector(), async (i) => {
197
+ const bus = i.get(IdentityEventBus);
198
+ const handler = vi.fn();
199
+ const sub = bus.subscribe('userLoggedOut', handler);
200
+ await bus.publish({ type: 'userLoggedOut', sessionId: 's1' });
201
+ sub[Symbol.dispose]();
202
+ await bus.publish({ type: 'userLoggedOut', sessionId: 's2' });
203
+ expect(handler).toHaveBeenCalledTimes(1);
204
+ });
205
+ });
206
+ it('isolates listener errors so peers still run', async () => {
207
+ await usingAsync(createInjector(), async (i) => {
208
+ const bus = i.get(IdentityEventBus);
209
+ const errorSpy = vi.spyOn(console, 'error').mockImplementation(() => undefined);
210
+ try {
211
+ const env_4 = { stack: [], error: void 0, hasError: false };
212
+ try {
213
+ const peer = vi.fn();
214
+ const _bad = __addDisposableResource(env_4, bus.subscribe('userLoggedOut', () => {
215
+ throw new Error('boom');
216
+ }), false);
217
+ const _good = __addDisposableResource(env_4, bus.subscribe('userLoggedOut', peer), false);
218
+ await bus.publish({ type: 'userLoggedOut', sessionId: 's1' });
219
+ expect(peer).toHaveBeenCalledTimes(1);
220
+ expect(errorSpy).toHaveBeenCalled();
221
+ }
222
+ catch (e_4) {
223
+ env_4.error = e_4;
224
+ env_4.hasError = true;
225
+ }
226
+ finally {
227
+ __disposeResources(env_4);
228
+ }
229
+ }
230
+ finally {
231
+ errorSpy.mockRestore();
232
+ }
233
+ });
234
+ });
235
+ it('lets a handler dispose its own subscription mid-emit without skipping peers', async () => {
236
+ await usingAsync(createInjector(), async (i) => {
237
+ const env_5 = { stack: [], error: void 0, hasError: false };
238
+ try {
239
+ const bus = i.get(IdentityEventBus);
240
+ const peer = vi.fn();
241
+ let selfDispose = null;
242
+ selfDispose = bus.subscribe('userLoggedOut', () => {
243
+ selfDispose?.[Symbol.dispose]();
244
+ });
245
+ const _peer = __addDisposableResource(env_5, bus.subscribe('userLoggedOut', peer), false);
246
+ await bus.publish({ type: 'userLoggedOut', sessionId: 's1' });
247
+ expect(peer).toHaveBeenCalledTimes(1);
248
+ }
249
+ catch (e_5) {
250
+ env_5.error = e_5;
251
+ env_5.hasError = true;
252
+ }
253
+ finally {
254
+ __disposeResources(env_5);
255
+ }
256
+ });
257
+ });
258
+ });
259
+ describe('cross-node delivery', () => {
260
+ it('logout on node A invalidates the cached session on node B', async () => {
261
+ const env_6 = { stack: [], error: void 0, hasError: false };
262
+ try {
263
+ const network = __addDisposableResource(env_6, createInProcessBusNetwork({ count: 2 }), false);
264
+ const [busA, busB] = network.buses;
265
+ await usingAsync(createInjector(), async (a) => {
266
+ await usingAsync(createInjector(), async (b) => {
267
+ a.bind(CrossNodeBus, defineInProcessCrossNodeBus({ broker: network.broker, nodeId: busA.nodeId }));
268
+ b.bind(CrossNodeBus, defineInProcessCrossNodeBus({ broker: network.broker, nodeId: busB.nodeId }));
269
+ const cacheA = a.get(UserResolutionCache);
270
+ const cacheB = b.get(UserResolutionCache);
271
+ await populateCache(cacheA, 's1', userOf('alice'));
272
+ await populateCache(cacheB, 's1', userOf('alice'));
273
+ // Force the bus singletons to materialise so subscriptions are live.
274
+ const facadeA = a.get(IdentityEventBus);
275
+ b.get(IdentityEventBus);
276
+ await facadeA.publish({ type: 'userLoggedOut', sessionId: 's1' });
277
+ expect(cacheA.size).toBe(0);
278
+ expect(cacheB.size).toBe(0);
279
+ });
280
+ });
281
+ }
282
+ catch (e_6) {
283
+ env_6.error = e_6;
284
+ env_6.hasError = true;
285
+ }
286
+ finally {
287
+ __disposeResources(env_6);
288
+ }
289
+ });
290
+ it('userRolesChanged on node A drops every alice entry on node B', async () => {
291
+ const env_7 = { stack: [], error: void 0, hasError: false };
292
+ try {
293
+ const network = __addDisposableResource(env_7, createInProcessBusNetwork({ count: 2 }), false);
294
+ const [busA, busB] = network.buses;
295
+ await usingAsync(createInjector(), async (a) => {
296
+ await usingAsync(createInjector(), async (b) => {
297
+ a.bind(CrossNodeBus, defineInProcessCrossNodeBus({ broker: network.broker, nodeId: busA.nodeId }));
298
+ b.bind(CrossNodeBus, defineInProcessCrossNodeBus({ broker: network.broker, nodeId: busB.nodeId }));
299
+ const cacheB = b.get(UserResolutionCache);
300
+ await populateCache(cacheB, 's-a-1', userOf('alice'));
301
+ await populateCache(cacheB, 's-a-2', userOf('alice'));
302
+ await populateCache(cacheB, 's-b-1', userOf('bob'));
303
+ a.get(IdentityEventBus);
304
+ b.get(IdentityEventBus);
305
+ await a.get(IdentityEventBus).publish({ type: 'userRolesChanged', username: 'alice' });
306
+ expect(cacheB.size).toBe(1);
307
+ });
308
+ });
309
+ }
310
+ catch (e_7) {
311
+ env_7.error = e_7;
312
+ env_7.hasError = true;
313
+ }
314
+ finally {
315
+ __disposeResources(env_7);
316
+ }
317
+ });
318
+ it('local subscribers on node A see the event before the bus broadcasts', async () => {
319
+ const env_8 = { stack: [], error: void 0, hasError: false };
320
+ try {
321
+ const network = __addDisposableResource(env_8, createInProcessBusNetwork({ count: 2 }), false);
322
+ const [busA, busB] = network.buses;
323
+ await usingAsync(createInjector(), async (a) => {
324
+ await usingAsync(createInjector(), async (b) => {
325
+ const env_9 = { stack: [], error: void 0, hasError: false };
326
+ try {
327
+ a.bind(CrossNodeBus, defineInProcessCrossNodeBus({ broker: network.broker, nodeId: busA.nodeId }));
328
+ b.bind(CrossNodeBus, defineInProcessCrossNodeBus({ broker: network.broker, nodeId: busB.nodeId }));
329
+ const order = [];
330
+ const _localA = __addDisposableResource(env_9, a.get(IdentityEventBus).subscribe('userDeleted', () => order.push('A-local')), false);
331
+ const _remoteB = __addDisposableResource(env_9, b.get(IdentityEventBus).subscribe('userDeleted', () => order.push('B-remote')), false);
332
+ await a.get(IdentityEventBus).publish({ type: 'userDeleted', username: 'bob' });
333
+ // A-local fires synchronously inside `publish`; B-remote fires after
334
+ // the bus accepts the message — same tick in-process, but ordering
335
+ // is guaranteed by the publish path's local-first contract.
336
+ expect(order).toEqual(['A-local', 'B-remote']);
337
+ }
338
+ catch (e_9) {
339
+ env_9.error = e_9;
340
+ env_9.hasError = true;
341
+ }
342
+ finally {
343
+ __disposeResources(env_9);
344
+ }
345
+ });
346
+ });
347
+ }
348
+ catch (e_8) {
349
+ env_8.error = e_8;
350
+ env_8.hasError = true;
351
+ }
352
+ finally {
353
+ __disposeResources(env_8);
354
+ }
355
+ });
356
+ it('drops malformed payloads received over the bus without invalidating the cache', async () => {
357
+ const env_10 = { stack: [], error: void 0, hasError: false };
358
+ try {
359
+ const network = __addDisposableResource(env_10, createInProcessBusNetwork({ count: 2 }), false);
360
+ const [busA, busB] = network.buses;
361
+ await usingAsync(createInjector(), async (a) => {
362
+ await usingAsync(createInjector(), async (b) => {
363
+ a.bind(CrossNodeBus, defineInProcessCrossNodeBus({ broker: network.broker, nodeId: busA.nodeId }));
364
+ b.bind(CrossNodeBus, defineInProcessCrossNodeBus({ broker: network.broker, nodeId: busB.nodeId }));
365
+ const cacheB = b.get(UserResolutionCache);
366
+ await populateCache(cacheB, 's1', userOf('alice'));
367
+ b.get(IdentityEventBus);
368
+ a.get(IdentityEventBus);
369
+ await a.get(CrossNodeBus).publish(IDENTITY_EVENT_TOPIC, { type: 'unknownEvent', sessionId: 's1' });
370
+ await a.get(CrossNodeBus).publish(IDENTITY_EVENT_TOPIC, null);
371
+ await a.get(CrossNodeBus).publish(IDENTITY_EVENT_TOPIC, { type: 'userLoggedOut' });
372
+ expect(cacheB.size).toBe(1);
373
+ });
374
+ });
375
+ }
376
+ catch (e_10) {
377
+ env_10.error = e_10;
378
+ env_10.hasError = true;
379
+ }
380
+ finally {
381
+ __disposeResources(env_10);
382
+ }
383
+ });
384
+ });
385
+ describe('shared helpers', () => {
386
+ it('exposes the cache-key shape used by the facade subscribers', () => {
387
+ expect(sessionCacheKey('s1')).toBe('cookie:s1');
388
+ expect(userCacheTag('alice')).toBe('user:alice');
389
+ });
390
+ });
391
+ });
392
+ //# sourceMappingURL=identity-event-bus.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-event-bus.spec.js","sourceRoot":"","sources":["../src/identity-event-bus.spec.ts"],"names":[],"mappings":"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"}
package/esm/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  export * from './actions/index.js';
2
2
  export * from './add-cors-header.js';
3
- export * from './api-manager.js';
4
3
  export * from './authenticate.js';
5
4
  export * from './authentication-providers/index.js';
6
5
  export * from './authorize.js';
@@ -8,16 +7,22 @@ export * from './endpoint-generators/index.js';
8
7
  export * from './get-schema-from-api.js';
9
8
  export * from './helpers.js';
10
9
  export * from './http-authentication-settings.js';
10
+ export * from './http-server-pool.js';
11
11
  export * from './http-user-context.js';
12
+ export * from './identity-cache-keys.js';
13
+ export * from './identity-event-bus.js';
12
14
  export * from './login-response-strategy.js';
13
15
  export * from './mime-types.js';
14
16
  export * from './models/index.js';
15
- export * from './proxy-manager.js';
17
+ export * from './proxy-runtime.js';
16
18
  export * from './read-post-body.js';
17
19
  export * from './request-action-implementation.js';
20
+ export * from './rest-api-runtime.js';
18
21
  export * from './schema-validator/index.js';
19
- export * from './server-manager.js';
20
22
  export * from './server-response-extensions.js';
21
- export * from './static-server-manager.js';
23
+ export * from './server-telemetry.js';
24
+ export * from './static-site-runtime.js';
25
+ export * from './user-resolution-cache.js';
26
+ export * from './user-store.js';
22
27
  export * from './validate.js';
23
28
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,qCAAqC,CAAA;AACnD,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,cAAc,CAAA;AAC5B,cAAc,mCAAmC,CAAA;AACjD,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oCAAoC,CAAA;AAClD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qBAAqB,CAAA;AACnC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,qCAAqC,CAAA;AACnD,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,cAAc,CAAA;AAC5B,cAAc,mCAAmC,CAAA;AACjD,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oCAAoC,CAAA;AAClD,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA"}
package/esm/index.js CHANGED
@@ -1,6 +1,5 @@
1
1
  export * from './actions/index.js';
2
2
  export * from './add-cors-header.js';
3
- export * from './api-manager.js';
4
3
  export * from './authenticate.js';
5
4
  export * from './authentication-providers/index.js';
6
5
  export * from './authorize.js';
@@ -8,16 +7,22 @@ export * from './endpoint-generators/index.js';
8
7
  export * from './get-schema-from-api.js';
9
8
  export * from './helpers.js';
10
9
  export * from './http-authentication-settings.js';
10
+ export * from './http-server-pool.js';
11
11
  export * from './http-user-context.js';
12
+ export * from './identity-cache-keys.js';
13
+ export * from './identity-event-bus.js';
12
14
  export * from './login-response-strategy.js';
13
15
  export * from './mime-types.js';
14
16
  export * from './models/index.js';
15
- export * from './proxy-manager.js';
17
+ export * from './proxy-runtime.js';
16
18
  export * from './read-post-body.js';
17
19
  export * from './request-action-implementation.js';
20
+ export * from './rest-api-runtime.js';
18
21
  export * from './schema-validator/index.js';
19
- export * from './server-manager.js';
20
22
  export * from './server-response-extensions.js';
21
- export * from './static-server-manager.js';
23
+ export * from './server-telemetry.js';
24
+ export * from './static-site-runtime.js';
25
+ export * from './user-resolution-cache.js';
26
+ export * from './user-store.js';
22
27
  export * from './validate.js';
23
28
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,qCAAqC,CAAA;AACnD,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,cAAc,CAAA;AAC5B,cAAc,mCAAmC,CAAA;AACjD,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oCAAoC,CAAA;AAClD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qBAAqB,CAAA;AACnC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,qCAAqC,CAAA;AACnD,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,cAAc,CAAA;AAC5B,cAAc,mCAAmC,CAAA;AACjD,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oCAAoC,CAAA;AAClD,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA"}
@@ -3,14 +3,14 @@ import type { Injector } from '@furystack/inject';
3
3
  import type { ActionResult } from './request-action-implementation.js';
4
4
  /**
5
5
  * A pluggable strategy that turns an authenticated {@link User} into an
6
- * {@link ActionResult} containing the session/token data for the client.
6
+ * {@link ActionResult} carrying the session/token payload for the client.
7
7
  *
8
- * Pass a concrete strategy to action factories like
9
- * {@link createPasswordLoginAction} or `createGoogleLoginAction` to
10
- * decouple the authentication mechanism from the session/token mechanism.
8
+ * Pass a concrete strategy to action factories such as
9
+ * {@link createPasswordLoginAction} or `createGoogleLoginAction` to decouple
10
+ * the authentication mechanism from the session/token mechanism.
11
11
  *
12
- * @typeParam TResult The shape of the response body (e.g. `User` for cookies,
13
- * `{ accessToken: string; refreshToken: string }` for JWT)
12
+ * @typeParam TResult The shape of the response body — e.g. `User` for
13
+ * cookies, `{ accessToken, refreshToken }` for JWT.
14
14
  */
15
15
  export type LoginResponseStrategy<TResult> = {
16
16
  createLoginResponse: (user: User, injector: Injector) => Promise<ActionResult<TResult>>;
@@ -18,11 +18,12 @@ export type LoginResponseStrategy<TResult> = {
18
18
  /**
19
19
  * Creates a cookie-based {@link LoginResponseStrategy}.
20
20
  *
21
- * On each login it generates a random session ID, persists it in the session
22
- * DataSet, and returns the user with a `Set-Cookie` header.
21
+ * On each login it generates a random session id, persists it via the
22
+ * configured session DataSet and returns the user with a `Set-Cookie`
23
+ * response header.
23
24
  *
24
- * @param injector The root injector (must have {@link HttpAuthenticationSettings} configured)
25
- * @returns A strategy that returns `ActionResult<User>`
25
+ * @param injector - The injector scope (typically the root) that carries
26
+ * `HttpAuthenticationSettings` and a persistent session store.
26
27
  */
27
28
  export declare const createCookieLoginStrategy: (injector: Injector) => LoginResponseStrategy<User>;
28
29
  //# sourceMappingURL=login-response-strategy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"login-response-strategy.d.ts","sourceRoot":"","sources":["../src/login-response-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAIjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AAGtE;;;;;;;;;;GAUG;AACH,MAAM,MAAM,qBAAqB,CAAC,OAAO,IAAI;IAC3C,mBAAmB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAA;CACxF,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,GAAI,UAAU,QAAQ,KAAG,qBAAqB,CAAC,IAAI,CAcxF,CAAA"}
1
+ {"version":3,"file":"login-response-strategy.d.ts","sourceRoot":"","sources":["../src/login-response-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAKjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AAGtE;;;;;;;;;;GAUG;AACH,MAAM,MAAM,qBAAqB,CAAC,OAAO,IAAI;IAC3C,mBAAmB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAA;CACxF,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,GAAI,UAAU,QAAQ,KAAG,qBAAqB,CAAC,IAAI,CAcxF,CAAA"}
@@ -5,18 +5,19 @@ import { JsonResult } from './request-action-implementation.js';
5
5
  /**
6
6
  * Creates a cookie-based {@link LoginResponseStrategy}.
7
7
  *
8
- * On each login it generates a random session ID, persists it in the session
9
- * DataSet, and returns the user with a `Set-Cookie` header.
8
+ * On each login it generates a random session id, persists it via the
9
+ * configured session DataSet and returns the user with a `Set-Cookie`
10
+ * response header.
10
11
  *
11
- * @param injector The root injector (must have {@link HttpAuthenticationSettings} configured)
12
- * @returns A strategy that returns `ActionResult<User>`
12
+ * @param injector - The injector scope (typically the root) that carries
13
+ * `HttpAuthenticationSettings` and a persistent session store.
13
14
  */
14
15
  export const createCookieLoginStrategy = (injector) => {
15
- const settings = injector.getInstance(HttpAuthenticationSettings);
16
+ const settings = injector.get(HttpAuthenticationSettings);
16
17
  const systemInjector = useSystemIdentityContext({ injector, username: 'CookieLoginStrategy' });
18
+ const sessionDataSet = systemInjector.get(settings.sessionDataSet);
17
19
  return {
18
20
  createLoginResponse: async (user) => {
19
- const sessionDataSet = settings.getSessionDataSet(systemInjector);
20
21
  const sessionId = randomBytes(32).toString('hex');
21
22
  await sessionDataSet.add(systemInjector, { sessionId, username: user.username });
22
23
  return JsonResult(user, 200, {
@@ -1 +1 @@
1
- {"version":3,"file":"login-response-strategy.js","sourceRoot":"","sources":["../src/login-response-strategy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAEpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAA;AAiB/D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,QAAkB,EAA+B,EAAE;IAC3F,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAA;IACjE,MAAM,cAAc,GAAG,wBAAwB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,qBAAqB,EAAE,CAAC,CAAA;IAE9F,OAAO;QACL,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAClC,MAAM,cAAc,GAAG,QAAQ,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAA;YACjE,MAAM,SAAS,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YACjD,MAAM,cAAc,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;YAChF,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE;gBAC3B,YAAY,EAAE,GAAG,QAAQ,CAAC,UAAU,IAAI,SAAS,oBAAoB;aACtE,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"login-response-strategy.js","sourceRoot":"","sources":["../src/login-response-strategy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAGpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAA;AAiB/D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,QAAkB,EAA+B,EAAE;IAC3F,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;IACzD,MAAM,cAAc,GAAG,wBAAwB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,qBAAqB,EAAE,CAAC,CAAA;IAC9F,MAAM,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;IAElE,OAAO;QACL,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAClC,MAAM,SAAS,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YACjD,MAAM,cAAc,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;YAChF,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE;gBAC3B,YAAY,EAAE,GAAG,QAAQ,CAAC,UAAU,IAAI,SAAS,oBAAoB;aACtE,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC,CAAA"}