@atlasauth/emulator-core 0.2.0 → 0.3.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 (248) hide show
  1. package/LICENSE +21 -0
  2. package/dist/custom-html.d.ts +57 -0
  3. package/dist/custom-html.js +491 -0
  4. package/dist/custom-html.js.map +1 -0
  5. package/dist/engine.d.ts +1 -1
  6. package/dist/engine.js +5 -1
  7. package/dist/engine.js.map +1 -1
  8. package/dist/error-catalog.js +8 -0
  9. package/dist/error-catalog.js.map +1 -1
  10. package/dist/event-gate.js +60 -2
  11. package/dist/event-gate.js.map +1 -1
  12. package/dist/generic.js +5 -1
  13. package/dist/generic.js.map +1 -1
  14. package/dist/handlers/access-signals.d.ts +48 -0
  15. package/dist/handlers/access-signals.js +76 -0
  16. package/dist/handlers/access-signals.js.map +1 -0
  17. package/dist/handlers/approvals.js +54 -1
  18. package/dist/handlers/approvals.js.map +1 -1
  19. package/dist/handlers/authz-data.d.ts +2 -0
  20. package/dist/handlers/authz-data.js +627 -0
  21. package/dist/handlers/authz-data.js.map +1 -0
  22. package/dist/handlers/authz-layers.d.ts +229 -0
  23. package/dist/handlers/authz-layers.js +786 -0
  24. package/dist/handlers/authz-layers.js.map +1 -0
  25. package/dist/handlers/authz-state.d.ts +80 -0
  26. package/dist/handlers/authz-state.js +175 -0
  27. package/dist/handlers/authz-state.js.map +1 -0
  28. package/dist/handlers/authz.js +240 -177
  29. package/dist/handlers/authz.js.map +1 -1
  30. package/dist/handlers/billing.d.ts +99 -1
  31. package/dist/handlers/billing.js +556 -77
  32. package/dist/handlers/billing.js.map +1 -1
  33. package/dist/handlers/cedar-ext.d.ts +35 -0
  34. package/dist/handlers/cedar-ext.js +174 -0
  35. package/dist/handlers/cedar-ext.js.map +1 -0
  36. package/dist/handlers/cedar.d.ts +146 -0
  37. package/dist/handlers/cedar.js +689 -0
  38. package/dist/handlers/cedar.js.map +1 -0
  39. package/dist/handlers/connections.d.ts +4 -1
  40. package/dist/handlers/connections.js +267 -38
  41. package/dist/handlers/connections.js.map +1 -1
  42. package/dist/handlers/control.js +6 -1
  43. package/dist/handlers/control.js.map +1 -1
  44. package/dist/handlers/device.js +18 -1
  45. package/dist/handlers/device.js.map +1 -1
  46. package/dist/handlers/emu3-misc.d.ts +38 -0
  47. package/dist/handlers/emu3-misc.js +1056 -0
  48. package/dist/handlers/emu3-misc.js.map +1 -0
  49. package/dist/handlers/emu4-actions-access.d.ts +46 -0
  50. package/dist/handlers/emu4-actions-access.js +107 -0
  51. package/dist/handlers/emu4-actions-access.js.map +1 -0
  52. package/dist/handlers/emu4-actions-catalog-extra.d.ts +3 -0
  53. package/dist/handlers/emu4-actions-catalog-extra.js +204 -0
  54. package/dist/handlers/emu4-actions-catalog-extra.js.map +1 -0
  55. package/dist/handlers/emu4-actions-catalog.d.ts +3 -0
  56. package/dist/handlers/emu4-actions-catalog.js +143 -0
  57. package/dist/handlers/emu4-actions-catalog.js.map +1 -0
  58. package/dist/handlers/emu4-actions-def.d.ts +50 -0
  59. package/dist/handlers/emu4-actions-def.js +250 -0
  60. package/dist/handlers/emu4-actions-def.js.map +1 -0
  61. package/dist/handlers/emu4-actions-sandbox.d.ts +36 -0
  62. package/dist/handlers/emu4-actions-sandbox.js +318 -0
  63. package/dist/handlers/emu4-actions-sandbox.js.map +1 -0
  64. package/dist/handlers/emu4-actions-typegen.d.ts +5 -0
  65. package/dist/handlers/emu4-actions-typegen.js +73 -0
  66. package/dist/handlers/emu4-actions-typegen.js.map +1 -0
  67. package/dist/handlers/emu4-actions.d.ts +2 -0
  68. package/dist/handlers/emu4-actions.js +506 -0
  69. package/dist/handlers/emu4-actions.js.map +1 -0
  70. package/dist/handlers/emu4-authz-trust.d.ts +40 -0
  71. package/dist/handlers/emu4-authz-trust.js +488 -0
  72. package/dist/handlers/emu4-authz-trust.js.map +1 -0
  73. package/dist/handlers/emu4-authz.d.ts +2 -0
  74. package/dist/handlers/emu4-authz.js +752 -0
  75. package/dist/handlers/emu4-authz.js.map +1 -0
  76. package/dist/handlers/emu4-billing-core.d.ts +23 -0
  77. package/dist/handlers/emu4-billing-core.js +22 -0
  78. package/dist/handlers/emu4-billing-core.js.map +1 -0
  79. package/dist/handlers/emu4-billing-x.d.ts +2 -0
  80. package/dist/handlers/emu4-billing-x.js +489 -0
  81. package/dist/handlers/emu4-billing-x.js.map +1 -0
  82. package/dist/handlers/emu4-billing.d.ts +14 -0
  83. package/dist/handlers/emu4-billing.js +846 -0
  84. package/dist/handlers/emu4-billing.js.map +1 -0
  85. package/dist/handlers/emu4-clones.d.ts +2 -0
  86. package/dist/handlers/emu4-clones.js +322 -0
  87. package/dist/handlers/emu4-clones.js.map +1 -0
  88. package/dist/handlers/emu4-compliance.d.ts +8 -0
  89. package/dist/handlers/emu4-compliance.js +39 -0
  90. package/dist/handlers/emu4-compliance.js.map +1 -0
  91. package/dist/handlers/emu4-config.d.ts +14 -0
  92. package/dist/handlers/emu4-config.js +148 -0
  93. package/dist/handlers/emu4-config.js.map +1 -0
  94. package/dist/handlers/emu4-cookies.d.ts +8 -0
  95. package/dist/handlers/emu4-cookies.js +248 -0
  96. package/dist/handlers/emu4-cookies.js.map +1 -0
  97. package/dist/handlers/emu4-erasure.d.ts +2 -0
  98. package/dist/handlers/emu4-erasure.js +587 -0
  99. package/dist/handlers/emu4-erasure.js.map +1 -0
  100. package/dist/handlers/emu4-federation.d.ts +8 -0
  101. package/dist/handlers/emu4-federation.js +18 -0
  102. package/dist/handlers/emu4-federation.js.map +1 -0
  103. package/dist/handlers/emu4-journey-math.d.ts +42 -0
  104. package/dist/handlers/emu4-journey-math.js +99 -0
  105. package/dist/handlers/emu4-journey-math.js.map +1 -0
  106. package/dist/handlers/emu4-messaging.d.ts +21 -0
  107. package/dist/handlers/emu4-messaging.js +595 -0
  108. package/dist/handlers/emu4-messaging.js.map +1 -0
  109. package/dist/handlers/emu4-minors.d.ts +7 -0
  110. package/dist/handlers/emu4-minors.js +408 -0
  111. package/dist/handlers/emu4-minors.js.map +1 -0
  112. package/dist/handlers/emu4-oauth-audit.d.ts +5 -0
  113. package/dist/handlers/emu4-oauth-audit.js +17 -0
  114. package/dist/handlers/emu4-oauth-audit.js.map +1 -0
  115. package/dist/handlers/emu4-oauth-auth.d.ts +83 -0
  116. package/dist/handlers/emu4-oauth-auth.js +363 -0
  117. package/dist/handlers/emu4-oauth-auth.js.map +1 -0
  118. package/dist/handlers/emu4-oauth-delivery.d.ts +68 -0
  119. package/dist/handlers/emu4-oauth-delivery.js +207 -0
  120. package/dist/handlers/emu4-oauth-delivery.js.map +1 -0
  121. package/dist/handlers/emu4-oauth-keys.d.ts +11 -0
  122. package/dist/handlers/emu4-oauth-keys.js +268 -0
  123. package/dist/handlers/emu4-oauth-keys.js.map +1 -0
  124. package/dist/handlers/emu4-oauth-pub.d.ts +36 -0
  125. package/dist/handlers/emu4-oauth-pub.js +420 -0
  126. package/dist/handlers/emu4-oauth-pub.js.map +1 -0
  127. package/dist/handlers/emu4-oauth.d.ts +10 -0
  128. package/dist/handlers/emu4-oauth.js +23 -0
  129. package/dist/handlers/emu4-oauth.js.map +1 -0
  130. package/dist/handlers/emu4-policies.d.ts +2 -0
  131. package/dist/handlers/emu4-policies.js +408 -0
  132. package/dist/handlers/emu4-policies.js.map +1 -0
  133. package/dist/handlers/emu4-region.d.ts +2 -0
  134. package/dist/handlers/emu4-region.js +189 -0
  135. package/dist/handlers/emu4-region.js.map +1 -0
  136. package/dist/handlers/emu4-saml.d.ts +12 -0
  137. package/dist/handlers/emu4-saml.js +532 -0
  138. package/dist/handlers/emu4-saml.js.map +1 -0
  139. package/dist/handlers/emu4-shared.d.ts +44 -0
  140. package/dist/handlers/emu4-shared.js +90 -0
  141. package/dist/handlers/emu4-shared.js.map +1 -0
  142. package/dist/handlers/emu4-snapshots.d.ts +38 -0
  143. package/dist/handlers/emu4-snapshots.js +231 -0
  144. package/dist/handlers/emu4-snapshots.js.map +1 -0
  145. package/dist/handlers/emu4-sns.d.ts +9 -0
  146. package/dist/handlers/emu4-sns.js +21 -0
  147. package/dist/handlers/emu4-sns.js.map +1 -0
  148. package/dist/handlers/emu4-trust-binding.d.ts +27 -0
  149. package/dist/handlers/emu4-trust-binding.js +344 -0
  150. package/dist/handlers/emu4-trust-binding.js.map +1 -0
  151. package/dist/handlers/emu4-trust.d.ts +35 -0
  152. package/dist/handlers/emu4-trust.js +543 -0
  153. package/dist/handlers/emu4-trust.js.map +1 -0
  154. package/dist/handlers/fga-engine.d.ts +78 -0
  155. package/dist/handlers/fga-engine.js +663 -0
  156. package/dist/handlers/fga-engine.js.map +1 -0
  157. package/dist/handlers/governance.js +3 -2
  158. package/dist/handlers/governance.js.map +1 -1
  159. package/dist/handlers/hooks.js +13 -0
  160. package/dist/handlers/hooks.js.map +1 -1
  161. package/dist/handlers/index.js +14 -1
  162. package/dist/handlers/index.js.map +1 -1
  163. package/dist/handlers/machines.js +6 -0
  164. package/dist/handlers/machines.js.map +1 -1
  165. package/dist/handlers/messaging.d.ts +3 -1
  166. package/dist/handlers/messaging.js +455 -48
  167. package/dist/handlers/messaging.js.map +1 -1
  168. package/dist/handlers/oauth-adv.d.ts +191 -0
  169. package/dist/handlers/oauth-adv.js +1305 -0
  170. package/dist/handlers/oauth-adv.js.map +1 -0
  171. package/dist/handlers/oauth-flows.d.ts +25 -1
  172. package/dist/handlers/oauth-flows.js +111 -50
  173. package/dist/handlers/oauth-flows.js.map +1 -1
  174. package/dist/handlers/oauth.d.ts +24 -3
  175. package/dist/handlers/oauth.js +245 -60
  176. package/dist/handlers/oauth.js.map +1 -1
  177. package/dist/handlers/orgs.js +6 -0
  178. package/dist/handlers/orgs.js.map +1 -1
  179. package/dist/handlers/platform.d.ts +5 -0
  180. package/dist/handlers/platform.js +33 -15
  181. package/dist/handlers/platform.js.map +1 -1
  182. package/dist/handlers/scim.d.ts +2 -0
  183. package/dist/handlers/scim.js +198 -11
  184. package/dist/handlers/scim.js.map +1 -1
  185. package/dist/handlers/sessions.d.ts +2 -0
  186. package/dist/handlers/sessions.js +24 -16
  187. package/dist/handlers/sessions.js.map +1 -1
  188. package/dist/handlers/users.js +3 -0
  189. package/dist/handlers/users.js.map +1 -1
  190. package/dist/jwe.d.ts +18 -0
  191. package/dist/jwe.js +101 -0
  192. package/dist/jwe.js.map +1 -0
  193. package/dist/jws.js +2 -0
  194. package/dist/jws.js.map +1 -1
  195. package/dist/messaging-callbacks.d.ts +100 -0
  196. package/dist/messaging-callbacks.js +767 -0
  197. package/dist/messaging-callbacks.js.map +1 -0
  198. package/dist/openapi.d.ts +1 -0
  199. package/dist/openapi.js +44 -2
  200. package/dist/openapi.js.map +1 -1
  201. package/dist/parity-emu3-authz.d.ts +3 -0
  202. package/dist/parity-emu3-authz.js +61 -0
  203. package/dist/parity-emu3-authz.js.map +1 -0
  204. package/dist/parity-emu3-billing.d.ts +3 -0
  205. package/dist/parity-emu3-billing.js +25 -0
  206. package/dist/parity-emu3-billing.js.map +1 -0
  207. package/dist/parity-emu3-messaging.d.ts +3 -0
  208. package/dist/parity-emu3-messaging.js +27 -0
  209. package/dist/parity-emu3-messaging.js.map +1 -0
  210. package/dist/parity-emu3-misc.d.ts +2 -0
  211. package/dist/parity-emu3-misc.js +63 -0
  212. package/dist/parity-emu3-misc.js.map +1 -0
  213. package/dist/parity-emu3-oauth.d.ts +2 -0
  214. package/dist/parity-emu3-oauth.js +39 -0
  215. package/dist/parity-emu3-oauth.js.map +1 -0
  216. package/dist/parity-emu4-actions.d.ts +2 -0
  217. package/dist/parity-emu4-actions.js +38 -0
  218. package/dist/parity-emu4-actions.js.map +1 -0
  219. package/dist/parity-emu4-authz.d.ts +3 -0
  220. package/dist/parity-emu4-authz.js +68 -0
  221. package/dist/parity-emu4-authz.js.map +1 -0
  222. package/dist/parity-emu4-billing.d.ts +6 -0
  223. package/dist/parity-emu4-billing.js +44 -0
  224. package/dist/parity-emu4-billing.js.map +1 -0
  225. package/dist/parity-emu4-compliance.d.ts +2 -0
  226. package/dist/parity-emu4-compliance.js +92 -0
  227. package/dist/parity-emu4-compliance.js.map +1 -0
  228. package/dist/parity-emu4-federation.d.ts +2 -0
  229. package/dist/parity-emu4-federation.js +33 -0
  230. package/dist/parity-emu4-federation.js.map +1 -0
  231. package/dist/parity-emu4-messaging.d.ts +3 -0
  232. package/dist/parity-emu4-messaging.js +42 -0
  233. package/dist/parity-emu4-messaging.js.map +1 -0
  234. package/dist/parity-emu4-oauth.d.ts +2 -0
  235. package/dist/parity-emu4-oauth.js +55 -0
  236. package/dist/parity-emu4-oauth.js.map +1 -0
  237. package/dist/parity-emu4-trust.d.ts +2 -0
  238. package/dist/parity-emu4-trust.js +41 -0
  239. package/dist/parity-emu4-trust.js.map +1 -0
  240. package/dist/parity-routes.js +19 -1
  241. package/dist/parity-routes.js.map +1 -1
  242. package/dist/sns-cert.d.ts +9 -0
  243. package/dist/sns-cert.js +101 -0
  244. package/dist/sns-cert.js.map +1 -0
  245. package/dist/tokens.d.ts +69 -4
  246. package/dist/tokens.js +164 -38
  247. package/dist/tokens.js.map +1 -1
  248. package/package.json +2 -2
package/dist/tokens.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { Engine } from './engine';
2
2
  import type { Obj } from './openapi';
3
+ import { type OpDecryptAlg } from './jwe';
3
4
  /** The issuer used when none is given: a reserved `.invalid` host, so no production verifier can ever be configured with it. */
4
5
  export declare const DEFAULT_TEST_ISSUER = "https://emulator.atlas.invalid";
5
6
  export interface MintSessionInput {
@@ -9,17 +10,29 @@ export interface MintSessionInput {
9
10
  claims?: Obj;
10
11
  ttlSeconds?: number;
11
12
  }
13
+ /** The algorithms an instance key may use (the same list the real provider publishes). */
14
+ export declare const SIGNING_ALGS: readonly ["RS256", "ES256", "ES384", "PS256", "EdDSA"];
15
+ export type SigningAlg = (typeof SIGNING_ALGS)[number];
16
+ export declare const isSigningAlg: (v: unknown) => v is SigningAlg;
17
+ /** How long the previous key stays published after a rotation unless the caller says otherwise. */
18
+ export declare const DEFAULT_KEY_GRACE_S = 86400;
12
19
  /**
13
20
  * Real signed tokens. Keys are generated in memory on first use and never written anywhere, so a token
14
21
  * this engine signs can only verify against this engine's own JWKS. Every token also carries
15
22
  * `atlas_emulator: true`, and the issuer defaults to a reserved host.
23
+ *
24
+ * The key set follows the real provider: one current key signs, a staged key is published before it signs, a previous
25
+ * key stays published until its grace ends (the engine clock), an emergency rotation publishes only the new key.
16
26
  */
17
27
  export declare class TokenService {
18
28
  private readonly engine;
19
- private issuers;
29
+ private keys;
20
30
  private initializing;
21
31
  private issuerUrl;
22
32
  private rotations;
33
+ private enc;
34
+ /** Keys for the algorithms the OP signs responses with that differ from the instance key (as the real provider's OP key table). */
35
+ private opKeys;
23
36
  constructor(engine: Engine);
24
37
  get issuer(): string;
25
38
  /** The HTTP server calls this once it knows its origin. Drops keys made for the old issuer. */
@@ -27,15 +40,59 @@ export declare class TokenService {
27
40
  reset(): void;
28
41
  private make;
29
42
  private ensure;
43
+ /** Start signing with a staged key that is due, and drop previous keys whose grace has ended. */
44
+ private settle;
45
+ /** The clock-driven transitions, when a key exists already (an engine that never signed is left alone). */
46
+ settleIfStarted(): Promise<void>;
47
+ /** Make sure the first key exists and the clock-driven transitions have run; every entry point calls this first. */
48
+ ready(): Promise<void>;
30
49
  private current;
50
+ private currentRec;
31
51
  jwks(): Promise<{
32
52
  keys: Obj[];
33
53
  }>;
34
- /** Publish a new signing key and sign with it from now on. The old key stays in the JWKS, so tokens already out keep verifying. */
35
- rotate(alg?: 'RS256' | 'ES256'): Promise<{
54
+ /** The published key set a relying party reads: the signing keys, plus the encryption key once a client registered for encrypted request objects. */
55
+ publishedJwks(): Promise<{
56
+ keys: Obj[];
57
+ }>;
58
+ /** Make the key clients encrypt request objects to (and publish it). Idempotent per algorithm. */
59
+ ensureEncryptionKey(alg: OpDecryptAlg): Promise<Obj>;
60
+ /** The plaintext of a JWE addressed to one of this engine's encryption keys (by `kid`, else by `alg`); null when it cannot be decrypted. */
61
+ decryptEncrypted(jwe: string): Promise<string | null>;
62
+ /**
63
+ * Publish a new signing key. Immediately it signs and the old key stays published for `graceSeconds` (default 24 h);
64
+ * `emergency` publishes only the new key; `staged` publishes it now and starts signing at `activatesAt`.
65
+ * The caller checks the real provider's one-key-at-a-time rules (`keyState`).
66
+ */
67
+ rotate(alg?: SigningAlg, opts?: {
68
+ graceSeconds?: number;
69
+ emergency?: boolean;
70
+ staged?: boolean;
71
+ activatesAt?: number;
72
+ trigger?: string;
73
+ }): Promise<{
36
74
  kid: string;
75
+ alg: SigningAlg;
37
76
  previous_kid: string;
77
+ previous_retires_at: number | null;
78
+ emergency: boolean;
79
+ staged?: true;
80
+ activates_at?: number;
38
81
  }>;
82
+ /** The staged key, unpublished; null when none is staged. */
83
+ cancelStaged(): Promise<string | null>;
84
+ /** The key set as the rotation rules see it. */
85
+ keyState(): Promise<{
86
+ currentKid: string;
87
+ alg: SigningAlg;
88
+ staged: {
89
+ kid: string;
90
+ alg: string;
91
+ activatesAt: number;
92
+ } | null;
93
+ previousRetiresAt: number | null;
94
+ }>;
95
+ /** The published keys, newest first, with their state. */
39
96
  signingKeys(): Promise<Obj[]>;
40
97
  mintSession(input: MintSessionInput): Promise<{
41
98
  jwt: string;
@@ -47,6 +104,12 @@ export declare class TokenService {
47
104
  * `idToken` uses the OIDC ID-token minting path (aud, nonce, auth_time stay as given).
48
105
  */
49
106
  signClaims(claims: Obj, ttlSeconds?: number): Promise<string>;
107
+ /**
108
+ * Sign claims in a chosen algorithm (an authorization response or ID token the client registered an algorithm for).
109
+ * The instance key signs when it already has that algorithm (or none is asked); otherwise a key of that algorithm is
110
+ * made once and published beside it.
111
+ */
112
+ signClaimsAs(alg: string | null | undefined, claims: Obj, ttlSeconds?: number): Promise<string>;
50
113
  /** Verify as a resource server would: against the engine JWKS, issuer and clock. */
51
114
  verify(token: string): Promise<{
52
115
  ok: true;
@@ -60,7 +123,9 @@ export declare class TokenService {
60
123
  * the JWKS, issuer, `exp` and `nbf`. `verify` is the session-only check a resource server would run; this one is
61
124
  * for the engine's own routes (machine verify, introspection, token exchange).
62
125
  */
63
- verifyAny(token: string): Promise<{
126
+ verifyAny(token: string, opts?: {
127
+ ignoreExp?: boolean;
128
+ }): Promise<{
64
129
  ok: true;
65
130
  claims: Obj;
66
131
  } | {
package/dist/tokens.js CHANGED
@@ -1,22 +1,37 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TokenService = exports.DEFAULT_TEST_ISSUER = void 0;
3
+ exports.TokenService = exports.DEFAULT_KEY_GRACE_S = exports.isSigningAlg = exports.SIGNING_ALGS = exports.DEFAULT_TEST_ISSUER = void 0;
4
4
  /* eslint-disable @typescript-eslint/no-explicit-any */
5
5
  const backend_1 = require("@atlasauth/backend");
6
6
  const store_1 = require("./store");
7
+ const jws_1 = require("./jws");
8
+ const jwe_1 = require("./jwe");
9
+ const emu4_oauth_audit_1 = require("./handlers/emu4-oauth-audit");
7
10
  /** The issuer used when none is given: a reserved `.invalid` host, so no production verifier can ever be configured with it. */
8
11
  exports.DEFAULT_TEST_ISSUER = 'https://emulator.atlas.invalid';
12
+ /** The algorithms an instance key may use (the same list the real provider publishes). */
13
+ exports.SIGNING_ALGS = ['RS256', 'ES256', 'ES384', 'PS256', 'EdDSA'];
14
+ const isSigningAlg = (v) => exports.SIGNING_ALGS.includes(v);
15
+ exports.isSigningAlg = isSigningAlg;
16
+ /** How long the previous key stays published after a rotation unless the caller says otherwise. */
17
+ exports.DEFAULT_KEY_GRACE_S = 86_400;
9
18
  /**
10
19
  * Real signed tokens. Keys are generated in memory on first use and never written anywhere, so a token
11
20
  * this engine signs can only verify against this engine's own JWKS. Every token also carries
12
21
  * `atlas_emulator: true`, and the issuer defaults to a reserved host.
22
+ *
23
+ * The key set follows the real provider: one current key signs, a staged key is published before it signs, a previous
24
+ * key stays published until its grace ends (the engine clock), an emergency rotation publishes only the new key.
13
25
  */
14
26
  class TokenService {
15
27
  engine;
16
- issuers = [];
28
+ keys = [];
17
29
  initializing = null;
18
30
  issuerUrl;
19
31
  rotations = 0;
32
+ enc = new Map();
33
+ /** Keys for the algorithms the OP signs responses with that differ from the instance key (as the real provider's OP key table). */
34
+ opKeys = new Map();
20
35
  constructor(engine) {
21
36
  this.engine = engine;
22
37
  this.issuerUrl = engine.options.issuer ?? exports.DEFAULT_TEST_ISSUER;
@@ -29,48 +44,148 @@ class TokenService {
29
44
  if (issuer === this.issuerUrl)
30
45
  return;
31
46
  this.issuerUrl = issuer;
32
- this.issuers = [];
33
- this.initializing = null;
34
- this.rotations = 0;
47
+ this.reset();
35
48
  }
36
49
  reset() {
37
- this.issuers = [];
50
+ this.keys = [];
38
51
  this.initializing = null;
39
52
  this.rotations = 0;
53
+ this.enc.clear();
54
+ this.opKeys.clear();
40
55
  }
41
56
  async make(alg) {
42
57
  const kid = `emu-${this.engine.instanceId}-${++this.rotations}`;
43
- return (0, backend_1.createTestIssuer)({ alg, issuer: this.issuerUrl, kid, now: this.engine.clock.now });
58
+ // The test issuer is typed for RS256 and ES256; its key generation and signing take every algorithm of the list.
59
+ return (0, backend_1.createTestIssuer)({ alg: alg, issuer: this.issuerUrl, kid, now: this.engine.clock.now });
44
60
  }
45
61
  async ensure() {
46
- this.initializing ??= this.make('RS256').then((i) => void this.issuers.push(i));
62
+ this.initializing ??= this.make('RS256').then((i) => void this.keys.push({ issuer: i, alg: 'RS256', activatesAt: null, graceMs: exports.DEFAULT_KEY_GRACE_S * 1000, retiresAt: null, trigger: null }));
47
63
  await this.initializing;
48
64
  }
65
+ /** Start signing with a staged key that is due, and drop previous keys whose grace has ended. */
66
+ settle() {
67
+ const now = this.engine.clock.now();
68
+ for (const k of this.keys) {
69
+ if (k.activatesAt === null || k.activatesAt > now)
70
+ continue;
71
+ const prev = this.keys.filter((x) => x !== k && x.activatesAt === null).pop();
72
+ const at = k.activatesAt;
73
+ k.activatesAt = null;
74
+ if (prev && prev.retiresAt === null)
75
+ prev.retiresAt = at + k.graceMs;
76
+ const data = { object: 'signing_key', kid: k.issuer.kid, alg: k.alg, previous_kid: prev?.issuer.kid ?? null, previous_retires_at: prev?.retiresAt ?? null };
77
+ this.engine.webhooks.emit('signing_key.activated', data);
78
+ (0, emu4_oauth_audit_1.recordAudit)(this.engine, 'signing_key.activated', 'system', 'instance', this.engine.instanceId, data);
79
+ }
80
+ this.keys = this.keys.filter((k) => k.retiresAt === null || k.retiresAt > now);
81
+ }
82
+ /** The clock-driven transitions, when a key exists already (an engine that never signed is left alone). */
83
+ async settleIfStarted() {
84
+ if (this.initializing)
85
+ await this.ready();
86
+ }
87
+ /** Make sure the first key exists and the clock-driven transitions have run; every entry point calls this first. */
88
+ async ready() {
89
+ await this.ensure();
90
+ this.settle();
91
+ }
49
92
  current() {
50
- const cur = this.issuers[this.issuers.length - 1];
93
+ const cur = this.keys.filter((k) => k.activatesAt === null).pop();
51
94
  if (!cur)
52
95
  throw new Error('token service not initialised');
53
- return cur;
96
+ return cur.issuer;
97
+ }
98
+ currentRec() {
99
+ return this.keys.filter((k) => k.activatesAt === null).pop();
54
100
  }
55
101
  async jwks() {
56
- await this.ensure();
57
- return { keys: this.issuers.flatMap((i) => i.jwks.keys) };
102
+ await this.ready();
103
+ return { keys: [...this.keys.flatMap((k) => k.issuer.jwks.keys), ...[...this.opKeys.values()].flatMap((i) => i.jwks.keys)] };
58
104
  }
59
- /** Publish a new signing key and sign with it from now on. The old key stays in the JWKS, so tokens already out keep verifying. */
60
- async rotate(alg = 'RS256') {
61
- await this.ensure();
62
- const previous = this.current().kid;
63
- const next = await this.make(alg);
64
- this.issuers.push(next);
65
- return { kid: next.kid, previous_kid: previous };
105
+ /** The published key set a relying party reads: the signing keys, plus the encryption key once a client registered for encrypted request objects. */
106
+ async publishedJwks() {
107
+ const sig = await this.jwks();
108
+ return { keys: [...sig.keys, ...[...this.enc.values()].map((k) => k.publicJwk)] };
109
+ }
110
+ /** Make the key clients encrypt request objects to (and publish it). Idempotent per algorithm. */
111
+ async ensureEncryptionKey(alg) {
112
+ let k = this.enc.get(alg);
113
+ if (!k)
114
+ this.enc.set(alg, (k = await (0, jwe_1.generateEncKey)(alg, `emu-enc-${this.engine.instanceId}-${alg.toLowerCase()}`)));
115
+ return k.publicJwk;
116
+ }
117
+ /** The plaintext of a JWE addressed to one of this engine's encryption keys (by `kid`, else by `alg`); null when it cannot be decrypted. */
118
+ async decryptEncrypted(jwe) {
119
+ try {
120
+ const header = JSON.parse(new TextDecoder().decode(Uint8Array.from(atob(jwe.split('.')[0].replace(/-/g, '+').replace(/_/g, '/')), (c) => c.charCodeAt(0))));
121
+ const key = [...this.enc.values()].find((k) => (header.kid ? k.kid === header.kid : k.alg === header.alg));
122
+ return key ? await (0, jwe_1.decryptJwe)(jwe, key) : null;
123
+ }
124
+ catch {
125
+ return null;
126
+ }
127
+ }
128
+ /**
129
+ * Publish a new signing key. Immediately it signs and the old key stays published for `graceSeconds` (default 24 h);
130
+ * `emergency` publishes only the new key; `staged` publishes it now and starts signing at `activatesAt`.
131
+ * The caller checks the real provider's one-key-at-a-time rules (`keyState`).
132
+ */
133
+ async rotate(alg, opts = {}) {
134
+ await this.ready();
135
+ const cur = this.currentRec();
136
+ const now = this.engine.clock.now();
137
+ const next = alg ?? cur.alg;
138
+ const issuer = await this.make(next);
139
+ const rec = { issuer, alg: next, activatesAt: null, graceMs: (opts.graceSeconds ?? exports.DEFAULT_KEY_GRACE_S) * 1000, retiresAt: null, trigger: opts.trigger ?? null };
140
+ if (opts.staged && !opts.emergency) {
141
+ rec.activatesAt = opts.activatesAt ?? now + 14 * 86_400_000;
142
+ rec.graceMs = (opts.graceSeconds ?? exports.DEFAULT_KEY_GRACE_S) * 1000;
143
+ this.keys.push(rec);
144
+ return { kid: issuer.kid, alg: next, previous_kid: cur.issuer.kid, previous_retires_at: rec.activatesAt + rec.graceMs, emergency: false, staged: true, activates_at: rec.activatesAt };
145
+ }
146
+ if (opts.emergency)
147
+ this.keys = [];
148
+ else
149
+ cur.retiresAt = now + rec.graceMs;
150
+ this.keys.push(rec);
151
+ this.settle();
152
+ return { kid: issuer.kid, alg: next, previous_kid: cur.issuer.kid, previous_retires_at: opts.emergency ? null : cur.retiresAt, emergency: opts.emergency === true };
153
+ }
154
+ /** The staged key, unpublished; null when none is staged. */
155
+ async cancelStaged() {
156
+ await this.ready();
157
+ const k = this.keys.find((x) => x.activatesAt !== null);
158
+ if (!k)
159
+ return null;
160
+ this.keys = this.keys.filter((x) => x !== k);
161
+ return k.issuer.kid;
66
162
  }
163
+ /** The key set as the rotation rules see it. */
164
+ async keyState() {
165
+ await this.ready();
166
+ const cur = this.currentRec();
167
+ const staged = this.keys.find((k) => k.activatesAt !== null);
168
+ const prev = this.keys.filter((k) => k.retiresAt !== null).map((k) => k.retiresAt);
169
+ return { currentKid: cur.issuer.kid, alg: cur.alg, staged: staged ? { kid: staged.issuer.kid, alg: staged.alg, activatesAt: staged.activatesAt } : null, previousRetiresAt: prev.length ? Math.max(...prev) : null };
170
+ }
171
+ /** The published keys, newest first, with their state. */
67
172
  async signingKeys() {
68
- await this.ensure();
69
- const cur = this.current().kid;
70
- return [...this.issuers].reverse().map((i) => ({ object: 'signing_key', kid: i.kid, alg: i.jwks.keys[0].alg, current: i.kid === cur }));
173
+ await this.ready();
174
+ const cur = this.currentRec();
175
+ return [...this.keys].reverse().map((k) => ({
176
+ object: 'signing_key',
177
+ kid: k.issuer.kid,
178
+ alg: k.alg,
179
+ status: k === cur ? 'current' : k.activatesAt !== null ? 'next' : 'previous',
180
+ role: 'main',
181
+ retires_at: k.retiresAt,
182
+ ...(k.activatesAt !== null ? { activates_at: k.activatesAt } : {}),
183
+ provider: 'local',
184
+ current: k === cur,
185
+ }));
71
186
  }
72
187
  async mintSession(input) {
73
- await this.ensure();
188
+ await this.ready();
74
189
  const ttl = input.ttlSeconds ?? 60;
75
190
  const nowS = Math.floor(this.engine.clock.now() / 1000);
76
191
  const claims = {
@@ -89,14 +204,29 @@ class TokenService {
89
204
  * `idToken` uses the OIDC ID-token minting path (aud, nonce, auth_time stay as given).
90
205
  */
91
206
  async signClaims(claims, ttlSeconds = 60) {
92
- await this.ensure();
207
+ await this.ready();
93
208
  const nowS = Math.floor(this.engine.clock.now() / 1000);
94
209
  const body = { iss: this.issuerUrl, iat: nowS, exp: nowS + ttlSeconds, atlas_emulator: true, sid: undefined, azp: undefined, sv: undefined, mfa: undefined, ...claims };
95
210
  return this.current().mintSession(body);
96
211
  }
212
+ /**
213
+ * Sign claims in a chosen algorithm (an authorization response or ID token the client registered an algorithm for).
214
+ * The instance key signs when it already has that algorithm (or none is asked); otherwise a key of that algorithm is
215
+ * made once and published beside it.
216
+ */
217
+ async signClaimsAs(alg, claims, ttlSeconds = 60) {
218
+ await this.ready();
219
+ if (!alg || !(0, exports.isSigningAlg)(alg) || alg === this.currentRec().alg)
220
+ return this.signClaims(claims, ttlSeconds);
221
+ let issuer = this.opKeys.get(alg);
222
+ if (!issuer)
223
+ this.opKeys.set(alg, (issuer = await this.make(alg)));
224
+ const nowS = Math.floor(this.engine.clock.now() / 1000);
225
+ return issuer.mintSession({ iss: this.issuerUrl, iat: nowS, exp: nowS + ttlSeconds, atlas_emulator: true, sid: undefined, azp: undefined, sv: undefined, mfa: undefined, ...claims });
226
+ }
97
227
  /** Verify as a resource server would: against the engine JWKS, issuer and clock. */
98
228
  async verify(token) {
99
- await this.ensure();
229
+ await this.ready();
100
230
  const backend = new backend_1.AtlasBackend({ jwks: await this.jwks(), issuer: this.issuerUrl, now: this.engine.clock.now });
101
231
  const r = await backend.verify(token);
102
232
  return r.ok ? { ok: true, claims: r.claims } : { ok: false, reason: r.reason };
@@ -106,28 +236,24 @@ class TokenService {
106
236
  * the JWKS, issuer, `exp` and `nbf`. `verify` is the session-only check a resource server would run; this one is
107
237
  * for the engine's own routes (machine verify, introspection, token exchange).
108
238
  */
109
- async verifyAny(token) {
239
+ async verifyAny(token, opts = {}) {
110
240
  try {
111
- const [h, p, sig] = token.split('.');
112
- if (!h || !p || !sig)
241
+ const jwt = (0, jws_1.decodeJwt)(token);
242
+ if (!jwt)
113
243
  return { ok: false, reason: 'malformed' };
114
- const dec = (x) => Uint8Array.from(atob(x.replace(/-/g, '+').replace(/_/g, '/') + '='.repeat((4 - (x.length % 4)) % 4)), (c) => c.charCodeAt(0));
115
- const header = JSON.parse(new TextDecoder().decode(dec(h)));
116
- const jwk = (await this.jwks()).keys.find((k) => k.kid === header.kid);
244
+ const jwk = (await this.jwks()).keys.find((k) => k.kid === jwt.header.kid);
117
245
  if (!jwk)
118
246
  return { ok: false, reason: 'unknown_key' };
119
- const rsa = header.alg === 'RS256';
120
- if (!rsa && header.alg !== 'ES256')
247
+ // The key fixes the algorithm: a token naming another one never verifies (no algorithm confusion).
248
+ if (!(0, exports.isSigningAlg)(jwt.header.alg) || jwk.alg !== jwt.header.alg)
121
249
  return { ok: false, reason: 'unsupported_alg' };
122
- const key = await crypto.subtle.importKey('jwk', jwk, rsa ? { name: 'RSASSA-PKCS1-v1_5', hash: 'SHA-256' } : { name: 'ECDSA', namedCurve: 'P-256' }, false, ['verify']);
123
- const ok = await crypto.subtle.verify(rsa ? { name: 'RSASSA-PKCS1-v1_5' } : { name: 'ECDSA', hash: 'SHA-256' }, key, dec(sig), new TextEncoder().encode(`${h}.${p}`));
124
- if (!ok)
250
+ if (!(await (0, jws_1.verifyJws)(jwt, jwk)))
125
251
  return { ok: false, reason: 'bad_signature' };
126
- const claims = JSON.parse(new TextDecoder().decode(dec(p)));
252
+ const claims = jwt.payload;
127
253
  const nowS = this.engine.clock.now() / 1000;
128
254
  if (claims.iss !== this.issuerUrl)
129
255
  return { ok: false, reason: 'wrong_issuer' };
130
- if (typeof claims.exp === 'number' && claims.exp <= nowS)
256
+ if (!opts.ignoreExp && typeof claims.exp === 'number' && claims.exp <= nowS)
131
257
  return { ok: false, reason: 'expired' };
132
258
  if (typeof claims.nbf === 'number' && claims.nbf > nowS + 60)
133
259
  return { ok: false, reason: 'not_yet_valid' };
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,gDAAqF;AAGrF,mCAAsC;AACtC,+BAA6C;AAC7C,+BAAqF;AACrF,kEAA0D;AAE1D,gIAAgI;AACnH,QAAA,mBAAmB,GAAG,gCAAgC,CAAC;AAUpE,0FAA0F;AAC7E,QAAA,YAAY,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAU,CAAC;AAE5E,MAAM,YAAY,GAAG,CAAC,CAAU,EAAmB,EAAE,CAAE,oBAAkC,CAAC,QAAQ,CAAC,CAAW,CAAC,CAAC;AAA1G,QAAA,YAAY,gBAA8F;AACvH,mGAAmG;AACtF,QAAA,mBAAmB,GAAG,MAAM,CAAC;AAe1C;;;;;;;GAOG;AACH,MAAa,YAAY;IASM;IARrB,IAAI,GAAa,EAAE,CAAC;IACpB,YAAY,GAAyB,IAAI,CAAC;IAC1C,SAAS,CAAS;IAClB,SAAS,GAAG,CAAC,CAAC;IACd,GAAG,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,mIAAmI;IAC3H,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;IAE/C,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QACzC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,2BAAmB,CAAC;IAChE,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,+FAA+F;IAC/F,SAAS,CAAC,MAAc;QACtB,IAAI,MAAM,KAAK,IAAI,CAAC,SAAS;YAAE,OAAO;QACtC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,GAAe;QAChC,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QAChE,iHAAiH;QACjH,OAAO,IAAA,0BAAgB,EAAC,EAAE,GAAG,EAAE,GAAc,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5G,CAAC;IAEO,KAAK,CAAC,MAAM;QAClB,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,2BAAmB,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/L,MAAM,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED,iGAAiG;IACzF,MAAM;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,CAAC,WAAW,GAAG,GAAG;gBAAE,SAAS;YAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;YAC9E,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC;YACzB,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC;YACrB,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI;gBAAE,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC;YACrE,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE,CAAC;YAC5J,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;YACzD,IAAA,8BAAW,EAAC,IAAI,CAAC,MAAM,EAAE,uBAAuB,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACxG,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;IACjF,CAAC;IAED,2GAA2G;IAC3G,KAAK,CAAC,eAAe;QACnB,IAAI,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IAC5C,CAAC;IAED,oHAAoH;IACpH,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEO,OAAO;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QAClE,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC3D,OAAO,GAAG,CAAC,MAAM,CAAC;IACpB,CAAC;IAEO,UAAU;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,GAAG,EAAG,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAa,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAa,CAAC,CAAC,EAAE,CAAC;IACjJ,CAAC;IAED,qJAAqJ;IACrJ,KAAK,CAAC,aAAa;QACjB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAgB,CAAC,CAAC,EAAE,CAAC;IAC3F,CAAC;IAED,kGAAkG;IAClG,KAAK,CAAC,mBAAmB,CAAC,GAAiB;QACzC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,IAAA,oBAAc,EAAC,GAAG,EAAE,WAAW,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACrH,OAAO,CAAC,CAAC,SAAgB,CAAC;IAC5B,CAAC;IAED,4IAA4I;IAC5I,KAAK,CAAC,gBAAgB,CAAC,GAAW;QAChC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7J,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3G,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,IAAA,gBAAU,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,GAAgB,EAAE,OAAiH,EAAE;QAChJ,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,GAAG,GAAW,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY,IAAI,2BAAmB,CAAC,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;QACzK,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACnC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,GAAG,GAAG,EAAE,GAAG,UAAU,CAAC;YAC5D,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,2BAAmB,CAAC,GAAG,IAAI,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC;QACzL,CAAC;QACD,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;;YAC9B,GAAG,CAAC,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;IACtK,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IACtB,CAAC;IAED,gDAAgD;IAChD,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAmB,CAAC,CAAC;QAC7F,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,WAAY,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxN,CAAC;IAED,0DAA0D;IAC1D,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1C,MAAM,EAAE,aAAa;YACrB,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG;YACjB,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,MAAM,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;YAC5E,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,CAAC,CAAC,SAAS;YACvB,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,CAAC,KAAK,GAAG;SACnB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAuB;QACvC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACxD,MAAM,MAAM,GAAQ;YAClB,GAAG,EAAE,KAAK,CAAC,MAAM;YACjB,GAAG,EAAE,KAAK,CAAC,SAAS;YACpB,GAAG,EAAE,IAAI;YACT,GAAG,EAAE,IAAI,GAAG,GAAG;YACf,cAAc,EAAE,IAAI;YACpB,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;SACxB,CAAC;QACF,OAAO,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,MAAa,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IAC1F,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,MAAW,EAAE,UAAU,GAAG,EAAE;QAC3C,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACxD,MAAM,IAAI,GAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC;QAC7K,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,IAAW,CAAC,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,GAA8B,EAAE,MAAW,EAAE,UAAU,GAAG,EAAE;QAC7E,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAA,oBAAY,EAAC,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC5G,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM,EAAS,CAAC,CAAC;IAC/L,CAAC;IAED,oFAAoF;IACpF,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,IAAI,sBAAY,CAAC,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAS,CAAC,CAAC;QACzH,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAa,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACxF,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,KAAa,EAAE,OAAgC,EAAE;QAC/D,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAA,eAAS,EAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;YACpD,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3E,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;YACtD,mGAAmG;YACnG,IAAI,CAAC,IAAA,oBAAY,EAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;YACjH,IAAI,CAAC,CAAC,MAAM,IAAA,eAAS,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;YAChF,MAAM,MAAM,GAAG,GAAG,CAAC,OAAc,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YAC5C,IAAI,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;YAChF,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YACrH,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;YAC5G,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,MAAM,CAAC,MAAc;QACnB,OAAO,GAAG,MAAM,IAAI,IAAA,mBAAW,EAAC,EAAE,CAAC,EAAE,CAAC;IACxC,CAAC;CACF;AAtPD,oCAsPC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlasauth/emulator-core",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "description": "An in-memory Atlas engine driven by the OpenAPI document: stateful users, organizations, roles, API keys, machines and grants, real signed tokens, signed webhooks, the change feed and a message sink. Used by the emulator, the msw handlers and in-process tests.",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -27,7 +27,7 @@
27
27
  "./package.json": "./package.json"
28
28
  },
29
29
  "dependencies": {
30
- "@atlasauth/backend": "0.52.0"
30
+ "@atlasauth/backend": "0.54.0"
31
31
  },
32
32
  "peerDependencies": {
33
33
  "msw": "^2"