oidc-spa 10.3.0-rc.2 → 10.3.0-rc.3

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 (83) hide show
  1. package/core/Oidc.d.ts +12 -2
  2. package/core/createGetUser.d.ts +24 -0
  3. package/core/createGetUser.js +162 -0
  4. package/core/createGetUser.js.map +1 -0
  5. package/core/createMockOidc.d.ts +3 -2
  6. package/core/createMockOidc.js +14 -2
  7. package/core/createMockOidc.js.map +1 -1
  8. package/core/createOidc.d.ts +18 -4
  9. package/core/createOidc.js +231 -214
  10. package/core/createOidc.js.map +1 -1
  11. package/core/index.d.ts +1 -0
  12. package/esm/core/Oidc.d.ts +12 -2
  13. package/esm/core/createGetUser.d.ts +24 -0
  14. package/esm/core/createGetUser.mjs +159 -0
  15. package/esm/core/createGetUser.mjs.map +1 -0
  16. package/esm/core/createMockOidc.d.ts +3 -2
  17. package/esm/core/createMockOidc.mjs +14 -2
  18. package/esm/core/createMockOidc.mjs.map +1 -1
  19. package/esm/core/createOidc.d.ts +18 -4
  20. package/esm/core/createOidc.mjs +231 -214
  21. package/esm/core/createOidc.mjs.map +1 -1
  22. package/esm/core/index.d.ts +1 -0
  23. package/esm/keycloak/index.d.ts +1 -1
  24. package/esm/keycloak/keycloakUtils.d.ts +104 -13
  25. package/esm/keycloak/keycloakUtils.mjs.map +1 -1
  26. package/esm/react-spa/createOidcSpaUtils.d.ts +5 -3
  27. package/esm/react-spa/createOidcSpaUtils.mjs +176 -30
  28. package/esm/react-spa/createOidcSpaUtils.mjs.map +1 -1
  29. package/esm/react-spa/index.d.ts +1 -1
  30. package/esm/react-spa/types.d.ts +48 -22
  31. package/esm/react-spa/types.mjs +3 -2
  32. package/esm/react-spa/types.mjs.map +1 -1
  33. package/esm/react-spa/utilsBuilder.d.ts +10 -6
  34. package/esm/react-spa/utilsBuilder.mjs +27 -8
  35. package/esm/react-spa/utilsBuilder.mjs.map +1 -1
  36. package/esm/tanstack-start/react/createOidcSpaUtils.d.ts +5 -3
  37. package/esm/tanstack-start/react/createOidcSpaUtils.mjs +245 -83
  38. package/esm/tanstack-start/react/createOidcSpaUtils.mjs.map +1 -1
  39. package/esm/tanstack-start/react/index.d.ts +1 -1
  40. package/esm/tanstack-start/react/types.d.ts +51 -23
  41. package/esm/tanstack-start/react/types.mjs +3 -2
  42. package/esm/tanstack-start/react/types.mjs.map +1 -1
  43. package/esm/tanstack-start/react/utilsBuilder.d.ts +12 -8
  44. package/esm/tanstack-start/react/utilsBuilder.mjs +21 -3
  45. package/esm/tanstack-start/react/utilsBuilder.mjs.map +1 -1
  46. package/esm/tools/createObjectThatThrowsIfAccessed.d.ts +13 -0
  47. package/esm/tools/createObjectThatThrowsIfAccessed.mjs +32 -5
  48. package/esm/tools/createObjectThatThrowsIfAccessed.mjs.map +1 -1
  49. package/esm/vite-plugin/projectType.mjs +4 -1
  50. package/esm/vite-plugin/projectType.mjs.map +1 -1
  51. package/keycloak/index.d.ts +1 -1
  52. package/keycloak/keycloakUtils.d.ts +104 -13
  53. package/keycloak/keycloakUtils.js.map +1 -1
  54. package/package.json +1 -1
  55. package/react-spa/createOidcSpaUtils.d.ts +5 -3
  56. package/react-spa/createOidcSpaUtils.js +175 -29
  57. package/react-spa/createOidcSpaUtils.js.map +1 -1
  58. package/react-spa/index.d.ts +1 -1
  59. package/react-spa/types.d.ts +48 -22
  60. package/react-spa/types.js +2 -0
  61. package/react-spa/types.js.map +1 -1
  62. package/react-spa/utilsBuilder.d.ts +10 -6
  63. package/react-spa/utilsBuilder.js +27 -8
  64. package/react-spa/utilsBuilder.js.map +1 -1
  65. package/src/angular.ts +1 -1
  66. package/src/core/Oidc.ts +63 -54
  67. package/src/core/createGetUser.ts +236 -0
  68. package/src/core/createMockOidc.ts +24 -7
  69. package/src/core/createOidc.ts +347 -303
  70. package/src/core/index.ts +1 -0
  71. package/src/keycloak/index.ts +1 -1
  72. package/src/keycloak/keycloakUtils.ts +163 -13
  73. package/src/react-spa/createOidcSpaUtils.ts +277 -55
  74. package/src/react-spa/types.ts +57 -24
  75. package/src/react-spa/utilsBuilder.ts +58 -15
  76. package/src/tanstack-start/react/createOidcSpaUtils.ts +352 -109
  77. package/src/tanstack-start/react/types.ts +60 -25
  78. package/src/tanstack-start/react/utilsBuilder.ts +50 -7
  79. package/src/tools/createObjectThatThrowsIfAccessed.ts +49 -6
  80. package/src/vite-plugin/projectType.ts +4 -5
  81. package/tools/createObjectThatThrowsIfAccessed.d.ts +13 -0
  82. package/tools/createObjectThatThrowsIfAccessed.js +35 -6
  83. package/tools/createObjectThatThrowsIfAccessed.js.map +1 -1
package/core/Oidc.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { OidcInitializationError } from "./OidcInitializationError";
2
- export declare type Oidc<DecodedIdToken extends Record<string, unknown> = Oidc.Tokens.DecodedIdToken_OidcCoreSpec> = Oidc.LoggedIn<DecodedIdToken> | Oidc.NotLoggedIn;
2
+ export declare type Oidc<DecodedIdToken extends Record<string, unknown> = Oidc.Tokens.DecodedIdToken_OidcCoreSpec, User = never> = Oidc.LoggedIn<DecodedIdToken, User> | Oidc.NotLoggedIn;
3
3
  export declare namespace Oidc {
4
4
  type Common = {
5
5
  issuerUri: string;
@@ -29,7 +29,7 @@ export declare namespace Oidc {
29
29
  }) => Promise<never>;
30
30
  initializationError: OidcInitializationError | undefined;
31
31
  };
32
- type LoggedIn<DecodedIdToken extends Record<string, unknown> = Record<string, unknown>> = Common & {
32
+ type LoggedIn<DecodedIdToken extends Record<string, unknown> = Record<string, unknown>, User = never> = Common & {
33
33
  isUserLoggedIn: true;
34
34
  renewTokens(params?: {
35
35
  extraTokenParams?: Record<string, string | undefined>;
@@ -81,6 +81,16 @@ export declare namespace Oidc {
81
81
  * you can test oidc.isNewBrowserSession && oidc.backFromAuthServer !== undefined
82
82
  */
83
83
  isNewBrowserSession: boolean;
84
+ getUser: () => Promise<{
85
+ user: User;
86
+ subscribeToUserChange: (onUserChange: (params: {
87
+ user: User;
88
+ user_previous: User | undefined;
89
+ }) => void) => {
90
+ unsubscribeFromUserChange: () => void;
91
+ };
92
+ refreshUser: () => Promise<User>;
93
+ }>;
84
94
  };
85
95
  type Tokens<DecodedIdToken extends Record<string, unknown> = Tokens.DecodedIdToken_OidcCoreSpec> = Tokens.WithRefreshToken<DecodedIdToken> | Tokens.WithoutRefreshToken<DecodedIdToken>;
86
96
  namespace Tokens {
@@ -0,0 +1,24 @@
1
+ import type { Oidc } from "./Oidc";
2
+ import type { NonPostableEvt } from "../tools/Evt";
3
+ import type { ParamsOfCreateOidc } from "./createOidc";
4
+ export declare function createGetUser<User>(params: {
5
+ issuerUri: string;
6
+ createUser: ParamsOfCreateOidc.CreateUser<User> | undefined;
7
+ getCurrentTokens: () => Oidc.Tokens<any>;
8
+ evtTokensChange: NonPostableEvt<void>;
9
+ renewTokens(): Promise<void>;
10
+ oidcMetadata: {
11
+ userinfo_endpoint?: string;
12
+ };
13
+ }): {
14
+ getUser: () => Promise<{
15
+ user: User;
16
+ subscribeToUserChange: (onUserChange: (params: {
17
+ user: User;
18
+ user_previous: User | undefined;
19
+ }) => void) => {
20
+ unsubscribeFromUserChange: () => void;
21
+ };
22
+ refreshUser: () => Promise<User>;
23
+ }>;
24
+ };
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createGetUser = createGetUser;
4
+ const id_1 = require("../tools/tsafe/id");
5
+ const assert_1 = require("../tools/tsafe/assert");
6
+ const decodeJwt_1 = require("../tools/decodeJwt");
7
+ function createGetUser(params) {
8
+ const { issuerUri, createUser, getCurrentTokens, evtTokensChange, renewTokens, oidcMetadata } = params;
9
+ async function fetchUserInfo(params) {
10
+ const { accessToken } = params;
11
+ const { userinfo_endpoint } = oidcMetadata;
12
+ if (!userinfo_endpoint) {
13
+ // TODO: Make a class for this error
14
+ throw new Error("oidc-spa: AS does not expose a userinfo endpoint");
15
+ }
16
+ const r = await fetch(userinfo_endpoint, {
17
+ headers: {
18
+ Authorization: `Bearer ${accessToken}`
19
+ }
20
+ });
21
+ return r.json();
22
+ }
23
+ let state = undefined;
24
+ const onUserChanges = new Set();
25
+ const subscribeToUserChange = onUserChange => {
26
+ onUserChanges.add(onUserChange);
27
+ return {
28
+ unsubscribeFromUserChange: () => {
29
+ onUserChanges.delete(onUserChange);
30
+ }
31
+ };
32
+ };
33
+ function __updatePrUserIfHashChanged() {
34
+ (0, assert_1.assert)(createUser !== undefined, "94302");
35
+ const hash_current = state?.hash;
36
+ const tokens = getCurrentTokens();
37
+ const hash_new = computeHash({
38
+ accessToken: tokens.accessToken,
39
+ decodedIdToken: tokens.decodedIdToken_original
40
+ });
41
+ const prUser_new = (async () => {
42
+ const prUser_current = state?.prUser;
43
+ if (hash_current === hash_new) {
44
+ (0, assert_1.assert)(prUser_current !== undefined);
45
+ return prUser_current;
46
+ }
47
+ const user_current = await prUser_current;
48
+ let user_new;
49
+ try {
50
+ user_new = await createUser({
51
+ accessToken: tokens.accessToken,
52
+ decodedIdToken: tokens.decodedIdToken_original,
53
+ issuerUri,
54
+ fetchUserInfo: () => fetchUserInfo({ accessToken: tokens.accessToken }),
55
+ user_current
56
+ });
57
+ }
58
+ catch (error) {
59
+ if (user_current !== undefined) {
60
+ console.error(`oidc-spa: Subsequent calls to createUser threw, skipping user refresh.`, error);
61
+ if (state !== undefined && state.hash === hash_new) {
62
+ (0, assert_1.assert)(hash_current !== undefined);
63
+ state.hash = hash_current;
64
+ }
65
+ return user_current;
66
+ }
67
+ // NOTE: This will be handled as an initialization error by the
68
+ // higher level adapters.
69
+ throw error;
70
+ }
71
+ onUserChanges.forEach(onUserChange => onUserChange({
72
+ user: user_new,
73
+ user_previous: user_current
74
+ }));
75
+ return user_new;
76
+ })();
77
+ state = {
78
+ hash: hash_new,
79
+ prUser: prUser_new
80
+ };
81
+ }
82
+ const refreshUser = async () => {
83
+ if (state !== undefined) {
84
+ state.hash = "";
85
+ }
86
+ await renewTokens();
87
+ (0, assert_1.assert)(state !== undefined);
88
+ return state.prUser;
89
+ };
90
+ evtTokensChange.subscribe(() => {
91
+ __updatePrUserIfHashChanged();
92
+ });
93
+ let callCount_getUser = 0;
94
+ const getUser = async () => {
95
+ if (createUser === undefined) {
96
+ throw new Error("oidc-spa: createUser not provided");
97
+ }
98
+ let timer_cycleDetection = undefined;
99
+ if (state === undefined) {
100
+ __updatePrUserIfHashChanged();
101
+ (0, assert_1.assert)(state !== undefined);
102
+ }
103
+ cycle_detection: {
104
+ callCount_getUser++;
105
+ if (callCount_getUser !== 1) {
106
+ break cycle_detection;
107
+ }
108
+ const callCount_getUser_before = callCount_getUser;
109
+ const setTimer = () => {
110
+ timer_cycleDetection = setTimeout(() => {
111
+ if (callCount_getUser_before === callCount_getUser) {
112
+ setTimer();
113
+ return;
114
+ }
115
+ console.warn([
116
+ "oidc-spa: Potential deadlock detected.",
117
+ "createUser() might be awaiting getUser(), which causes a deadlock",
118
+ "because getUser() is already waiting for createUser() to finish.",
119
+ "Update createUser() to build the user without (directly or indirectly) calling",
120
+ "getUser() from inside createUser()."
121
+ ].join(" "));
122
+ }, 3000);
123
+ };
124
+ setTimer();
125
+ }
126
+ const user = await state.prUser;
127
+ if (timer_cycleDetection !== undefined) {
128
+ clearTimeout(timer_cycleDetection);
129
+ }
130
+ return (0, id_1.id)({
131
+ user,
132
+ refreshUser,
133
+ subscribeToUserChange
134
+ });
135
+ };
136
+ return { getUser };
137
+ }
138
+ function computeHash(params) {
139
+ const { decodedIdToken, accessToken } = params;
140
+ const decodedIdToken_stableish = (() => {
141
+ const { exp, iat, nonce, auth_time, amr, acr, ...rest } = decodedIdToken;
142
+ return rest;
143
+ })();
144
+ const decodedAccessToken_stableish = (() => {
145
+ let decodedAccessToken;
146
+ try {
147
+ decodedAccessToken = (0, decodeJwt_1.decodeJwt)(accessToken);
148
+ }
149
+ catch {
150
+ return undefined;
151
+ }
152
+ const { exp, iat, jti, nbf, cnf, ...rest } = decodedAccessToken;
153
+ return rest;
154
+ })();
155
+ const stringify = (obj) => JSON.stringify(Object.entries(obj).sort(([a], [b]) => a.localeCompare(b)));
156
+ return [
157
+ stringify(decodedIdToken_stableish),
158
+ "|",
159
+ decodedAccessToken_stableish === undefined ? "" : stringify(decodedAccessToken_stableish)
160
+ ].join("");
161
+ }
162
+ //# sourceMappingURL=createGetUser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createGetUser.js","sourceRoot":"","sources":["../src/core/createGetUser.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import type { Oidc } from "../core";
2
- export type ParamsOfCreateMockOidc<DecodedIdToken extends Record<string, unknown> = Record<string, unknown>, AutoLogin extends boolean = false> = {
2
+ export type ParamsOfCreateMockOidc<DecodedIdToken extends Record<string, unknown> = Record<string, unknown>, AutoLogin extends boolean = false, User = never> = {
3
3
  mockedParams?: {
4
4
  issuerUri?: string;
5
5
  clientId?: string;
6
6
  };
7
7
  mockedTokens?: Partial<Oidc.Tokens<DecodedIdToken>>;
8
+ mockedUser?: User;
8
9
  /**
9
10
  * The URL of the home page of your app.
10
11
  * We need to know this so we know where to redirect when you call `logout({ redirectTo: "home"})`.
@@ -19,4 +20,4 @@ export type ParamsOfCreateMockOidc<DecodedIdToken extends Record<string, unknown
19
20
  } : {
20
21
  isUserInitiallyLoggedIn: boolean;
21
22
  });
22
- export declare function createMockOidc<DecodedIdToken extends Record<string, unknown> = Oidc.Tokens.DecodedIdToken_OidcCoreSpec, AutoLogin extends boolean = false>(params: ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin>): Promise<AutoLogin extends true ? Oidc.LoggedIn<DecodedIdToken> : Oidc<DecodedIdToken>>;
23
+ export declare function createMockOidc<DecodedIdToken extends Record<string, unknown> = Oidc.Tokens.DecodedIdToken_OidcCoreSpec, AutoLogin extends boolean = false, User = never>(params: ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin, User>): Promise<AutoLogin extends true ? Oidc.LoggedIn<DecodedIdToken, User> : Oidc<DecodedIdToken, User>>;
@@ -11,7 +11,7 @@ const earlyInit_BASE_URL_1 = require("../core/earlyInit_BASE_URL");
11
11
  const URL_SEARCH_PARAM_NAME = "isUserLoggedIn";
12
12
  const locationHref_moduleEvalTime = location.href;
13
13
  async function createMockOidc(params) {
14
- const { isUserInitiallyLoggedIn = true, mockedParams = {}, mockedTokens = {}, autoLogin = false, postLoginRedirectUrl } = params;
14
+ const { isUserInitiallyLoggedIn = true, mockedParams = {}, mockedTokens = {}, autoLogin = false, postLoginRedirectUrl, mockedUser } = params;
15
15
  const BASE_URL_params = params.BASE_URL;
16
16
  const isUserLoggedIn = (() => {
17
17
  const { wasPresent, value } = (0, urlSearchParams_1.getSearchParam)({
@@ -165,7 +165,19 @@ async function createMockOidc(params) {
165
165
  }),
166
166
  goToAuthServer: async ({ redirectUrl }) => loginOrGoToAuthServer({ redirectUrl }),
167
167
  isNewBrowserSession: false,
168
- backFromAuthServer: undefined
168
+ backFromAuthServer: undefined,
169
+ getUser: () => {
170
+ if (mockedUser === undefined) {
171
+ throw new Error("oidc-spa: No mock user provided");
172
+ }
173
+ return Promise.resolve({
174
+ refreshUser: () => Promise.resolve(mockedUser),
175
+ subscribeToUserChange: () => {
176
+ return { unsubscribeFromUserChange: () => { } };
177
+ },
178
+ user: mockedUser
179
+ });
180
+ }
169
181
  };
170
182
  return oidc;
171
183
  }
@@ -1 +1 @@
1
- {"version":3,"file":"createMockOidc.js","sourceRoot":"","sources":["../src/core/createMockOidc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createMockOidc.js","sourceRoot":"","sources":["../src/core/createMockOidc.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,9 @@ import { type AuthResponse } from "./AuthResponse";
3
3
  import type { Oidc } from "./Oidc";
4
4
  import type { Evt } from "../tools/Evt";
5
5
  import type { ParamsOfCreateGetServerDateNow } from "../tools/getServerDateNow";
6
- export type ParamsOfCreateOidc<DecodedIdToken extends Record<string, unknown> = Oidc.Tokens.DecodedIdToken_OidcCoreSpec, AutoLogin extends boolean = false> = {
6
+ import type { MaybeAsync } from "../tools/MaybeAsync";
7
+ export type ParamsOfCreateOidc<DecodedIdToken extends Record<string, unknown> = Oidc.Tokens.DecodedIdToken_OidcCoreSpec, AutoLogin extends boolean = false, User = never> = {
8
+ createUser?: ParamsOfCreateOidc.CreateUser<User>;
7
9
  /**
8
10
  * See: https://docs.oidc-spa.dev/v/v10/providers-configuration/provider-configuration
9
11
  */
@@ -185,6 +187,18 @@ export type ParamsOfCreateOidc<DecodedIdToken extends Record<string, unknown> =
185
187
  * */
186
188
  disableDPoP?: true;
187
189
  };
190
+ export declare namespace ParamsOfCreateOidc {
191
+ type CreateUser<User> = (params: {
192
+ decodedIdToken: Oidc.Tokens.DecodedIdToken_OidcCoreSpec;
193
+ accessToken: string;
194
+ fetchUserInfo: () => Promise<{
195
+ [key: string]: unknown;
196
+ sub: string;
197
+ }>;
198
+ issuerUri: string;
199
+ user_current: User | undefined;
200
+ }) => MaybeAsync<User>;
201
+ }
188
202
  export type Exports_earlyInit = {
189
203
  shouldLoadApp: false;
190
204
  } | {
@@ -241,10 +255,10 @@ export declare namespace Exports_DPoP {
241
255
  }
242
256
  export declare function registerExports_DPoP(exports: Exports_DPoP): void;
243
257
  /** @see: https://docs.oidc-spa.dev/v/v10/usage */
244
- export declare function createOidc<DecodedIdToken extends Record<string, unknown> = Oidc.Tokens.DecodedIdToken_OidcCoreSpec, AutoLogin extends boolean = false>(params: ParamsOfCreateOidc<DecodedIdToken, AutoLogin>): Promise<AutoLogin extends true ? Oidc.LoggedIn<DecodedIdToken> : Oidc<DecodedIdToken>>;
245
- export declare function createOidc_nonMemoized<DecodedIdToken extends Record<string, unknown>, AutoLogin extends boolean>(params: Omit<ParamsOfCreateOidc<DecodedIdToken, AutoLogin>, "issuerUri" | "clientId" | "debugLogs">, preProcessedParams: {
258
+ export declare function createOidc<DecodedIdToken extends Record<string, unknown> = Oidc.Tokens.DecodedIdToken_OidcCoreSpec, AutoLogin extends boolean = false, User = never>(params: ParamsOfCreateOidc<DecodedIdToken, AutoLogin, User>): Promise<AutoLogin extends true ? Oidc.LoggedIn<DecodedIdToken, User> : Oidc<DecodedIdToken, User>>;
259
+ export declare function createOidc_nonMemoized<DecodedIdToken extends Record<string, unknown>, AutoLogin extends boolean, User>(params: Omit<ParamsOfCreateOidc<DecodedIdToken, AutoLogin, User>, "issuerUri" | "clientId" | "debugLogs">, preProcessedParams: {
246
260
  issuerUri: string;
247
261
  clientId: string;
248
262
  configId: string;
249
263
  log: typeof console.log | undefined;
250
- }): Promise<AutoLogin extends true ? Oidc.LoggedIn<DecodedIdToken> : Oidc<DecodedIdToken>>;
264
+ }): Promise<AutoLogin extends true ? Oidc.LoggedIn<DecodedIdToken, User> : Oidc<DecodedIdToken, User>>;