oidc-spa 8.2.0 → 8.2.2

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 (84) hide show
  1. package/core/AuthResponse.d.ts +0 -5
  2. package/core/AuthResponse.js +0 -25
  3. package/core/AuthResponse.js.map +1 -1
  4. package/core/OidcMetadata.d.ts +5 -0
  5. package/core/OidcMetadata.js +56 -0
  6. package/core/OidcMetadata.js.map +1 -1
  7. package/core/createOidc.d.ts +4 -3
  8. package/core/createOidc.js +229 -197
  9. package/core/createOidc.js.map +1 -1
  10. package/core/diagnostic.d.ts +0 -1
  11. package/core/diagnostic.js +18 -5
  12. package/core/diagnostic.js.map +1 -1
  13. package/core/instancesThatCantUseIframes.d.ts +2 -0
  14. package/core/instancesThatCantUseIframes.js +20 -0
  15. package/core/instancesThatCantUseIframes.js.map +1 -0
  16. package/core/loginOrGoToAuthServer.d.ts +1 -1
  17. package/core/loginOrGoToAuthServer.js +4 -16
  18. package/core/loginOrGoToAuthServer.js.map +1 -1
  19. package/core/loginSilent.d.ts +1 -2
  20. package/core/loginSilent.js +3 -21
  21. package/core/loginSilent.js.map +1 -1
  22. package/core/persistedAuthState.d.ts +1 -0
  23. package/core/persistedAuthState.js +14 -4
  24. package/core/persistedAuthState.js.map +1 -1
  25. package/esm/core/AuthResponse.d.ts +0 -5
  26. package/esm/core/AuthResponse.js +0 -23
  27. package/esm/core/AuthResponse.js.map +1 -1
  28. package/esm/core/OidcMetadata.d.ts +5 -0
  29. package/esm/core/OidcMetadata.js +54 -0
  30. package/esm/core/OidcMetadata.js.map +1 -1
  31. package/esm/core/createOidc.d.ts +4 -3
  32. package/esm/core/createOidc.js +230 -198
  33. package/esm/core/createOidc.js.map +1 -1
  34. package/esm/core/diagnostic.d.ts +0 -1
  35. package/esm/core/diagnostic.js +15 -1
  36. package/esm/core/diagnostic.js.map +1 -1
  37. package/esm/core/instancesThatCantUseIframes.d.ts +2 -0
  38. package/esm/core/instancesThatCantUseIframes.js +16 -0
  39. package/esm/core/instancesThatCantUseIframes.js.map +1 -0
  40. package/esm/core/loginOrGoToAuthServer.d.ts +1 -1
  41. package/esm/core/loginOrGoToAuthServer.js +4 -16
  42. package/esm/core/loginOrGoToAuthServer.js.map +1 -1
  43. package/esm/core/loginSilent.d.ts +1 -2
  44. package/esm/core/loginSilent.js +3 -21
  45. package/esm/core/loginSilent.js.map +1 -1
  46. package/esm/core/persistedAuthState.d.ts +1 -0
  47. package/esm/core/persistedAuthState.js +14 -4
  48. package/esm/core/persistedAuthState.js.map +1 -1
  49. package/esm/keycloak/keycloakIssuerUriParsed.js +8 -1
  50. package/esm/keycloak/keycloakIssuerUriParsed.js.map +1 -1
  51. package/esm/tools/isLikelyDevServer.d.ts +1 -0
  52. package/esm/tools/isLikelyDevServer.js +14 -0
  53. package/esm/tools/isLikelyDevServer.js.map +1 -0
  54. package/esm/tools/{EphemeralSessionStorage.d.ts → lazySessionStorage.d.ts} +2 -4
  55. package/esm/tools/lazySessionStorage.js +81 -0
  56. package/esm/tools/lazySessionStorage.js.map +1 -0
  57. package/keycloak/keycloakIssuerUriParsed.js +8 -1
  58. package/keycloak/keycloakIssuerUriParsed.js.map +1 -1
  59. package/package.json +1 -1
  60. package/src/core/AuthResponse.ts +0 -36
  61. package/src/core/OidcMetadata.ts +75 -0
  62. package/src/core/createOidc.ts +277 -264
  63. package/src/core/diagnostic.ts +21 -2
  64. package/src/core/instancesThatCantUseIframes.ts +24 -0
  65. package/src/core/loginOrGoToAuthServer.ts +5 -22
  66. package/src/core/loginSilent.ts +4 -27
  67. package/src/core/persistedAuthState.ts +27 -5
  68. package/src/keycloak/keycloakIssuerUriParsed.ts +10 -1
  69. package/src/tools/isLikelyDevServer.ts +17 -0
  70. package/src/tools/lazySessionStorage.ts +119 -0
  71. package/src/vite-plugin/manageOptimizedDeps.ts +2 -0
  72. package/tools/isLikelyDevServer.d.ts +1 -0
  73. package/tools/isLikelyDevServer.js +17 -0
  74. package/tools/isLikelyDevServer.js.map +1 -0
  75. package/tools/{EphemeralSessionStorage.d.ts → lazySessionStorage.d.ts} +2 -4
  76. package/tools/lazySessionStorage.js +84 -0
  77. package/tools/lazySessionStorage.js.map +1 -0
  78. package/vite-plugin/manageOptimizedDeps.js +1 -0
  79. package/vite-plugin/manageOptimizedDeps.js.map +1 -1
  80. package/esm/tools/EphemeralSessionStorage.js +0 -143
  81. package/esm/tools/EphemeralSessionStorage.js.map +0 -1
  82. package/src/tools/EphemeralSessionStorage.ts +0 -225
  83. package/tools/EphemeralSessionStorage.js +0 -146
  84. package/tools/EphemeralSessionStorage.js.map +0 -1
@@ -3,8 +3,3 @@ export type AuthResponse = {
3
3
  [key: string]: string | undefined;
4
4
  };
5
5
  export declare function authResponseToUrl(authResponse: AuthResponse): string;
6
- export declare const setPersistedRedirectAuthResponses: (params: {
7
- authResponses: AuthResponse[];
8
- }) => void, getPersistedRedirectAuthResponses: () => {
9
- authResponses: AuthResponse[];
10
- };
@@ -1,10 +1,7 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.getPersistedRedirectAuthResponses = exports.setPersistedRedirectAuthResponses = void 0;
5
3
  exports.authResponseToUrl = authResponseToUrl;
6
4
  const urlSearchParams_1 = require("../tools/urlSearchParams");
7
- const EphemeralSessionStorage_1 = require("../tools/EphemeralSessionStorage");
8
5
  function authResponseToUrl(authResponse) {
9
6
  let authResponseUrl = "https://dummy.com";
10
7
  for (const [name, value] of Object.entries(authResponse)) {
@@ -21,26 +18,4 @@ function authResponseToUrl(authResponse) {
21
18
  authResponseUrl = `${authResponseUrl}#${authResponseUrl.split("?")[1]}`;
22
19
  return authResponseUrl;
23
20
  }
24
- _a = (() => {
25
- const { getEphemeralSessionStorage } = (() => {
26
- let cache = undefined;
27
- const getEphemeralSessionStorage = () => (cache ?? (cache = (0, EphemeralSessionStorage_1.createEphemeralSessionStorage)({
28
- sessionStorageTtlMs: 30000
29
- })));
30
- return { getEphemeralSessionStorage };
31
- })();
32
- const KEY = "oidc-spa:persisted-redirect-auth-response";
33
- function setPersistedRedirectAuthResponses(params) {
34
- const { authResponses } = params;
35
- const storage = getEphemeralSessionStorage();
36
- storage.persistCurrentStateAndSubsequentChanges();
37
- storage.setItem(KEY, JSON.stringify(authResponses));
38
- }
39
- function getPersistedRedirectAuthResponses() {
40
- const value = getEphemeralSessionStorage().getItem(KEY);
41
- const authResponses = value === null ? [] : JSON.parse(value);
42
- return { authResponses };
43
- }
44
- return { setPersistedRedirectAuthResponses, getPersistedRedirectAuthResponses };
45
- })(), exports.setPersistedRedirectAuthResponses = _a.setPersistedRedirectAuthResponses, exports.getPersistedRedirectAuthResponses = _a.getPersistedRedirectAuthResponses;
46
21
  //# sourceMappingURL=AuthResponse.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthResponse.js","sourceRoot":"","sources":["../src/core/AuthResponse.ts"],"names":[],"mappings":";;;;AAWA,8CAkBC;AA7BD,8DAAkE;AAClE,8EAG0C;AAO1C,SAAgB,iBAAiB,CAAC,YAA0B;IACxD,IAAI,eAAe,GAAG,mBAAmB,CAAC;IAE1C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACvD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,SAAS;QACb,CAAC;QACD,eAAe,GAAG,IAAA,wCAAsB,EAAC;YACrC,GAAG,EAAE,eAAe;YACpB,IAAI;YACJ,KAAK;YACL,YAAY,EAAE,UAAU;SAC3B,CAAC,CAAC;IACP,CAAC;IAED,eAAe,GAAG,GAAG,eAAe,IAAI,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAExE,OAAO,eAAe,CAAC;AAC3B,CAAC;AAEY,KAA2E,CAAC,GAAG,EAAE;IAC1F,MAAM,EAAE,0BAA0B,EAAE,GAAG,CAAC,GAAG,EAAE;QACzC,IAAI,KAAK,GAAwC,SAAS,CAAC;QAC3D,MAAM,0BAA0B,GAAG,GAAG,EAAE,CACpC,CAAC,KAAK,KAAL,KAAK,GAAK,IAAA,uDAA6B,EAAC;YACrC,mBAAmB,EAAE,KAAM;SAC9B,CAAC,EAAC,CAAC;QACR,OAAO,EAAE,0BAA0B,EAAE,CAAC;IAC1C,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,GAAG,GAAG,2CAA2C,CAAC;IAExD,SAAS,iCAAiC,CAAC,MAAyC;QAChF,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;QAEjC,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAC;QAC7C,OAAO,CAAC,uCAAuC,EAAE,CAAC;QAElD,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,SAAS,iCAAiC;QACtC,MAAM,KAAK,GAAG,0BAA0B,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAExD,MAAM,aAAa,GAAmB,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE9E,OAAO,EAAE,aAAa,EAAE,CAAC;IAC7B,CAAC;IAED,OAAO,EAAE,iCAAiC,EAAE,iCAAiC,EAAE,CAAC;AACpF,CAAC,CAAC,EAAE,EA9BW,yCAAiC,yCAAE,yCAAiC,wCA8B9E"}
1
+ {"version":3,"file":"AuthResponse.js","sourceRoot":"","sources":["../src/core/AuthResponse.ts"],"names":[],"mappings":";;AAOA,8CAkBC;AAzBD,8DAAkE;AAOlE,SAAgB,iBAAiB,CAAC,YAA0B;IACxD,IAAI,eAAe,GAAG,mBAAmB,CAAC;IAE1C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACvD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,SAAS;QACb,CAAC;QACD,eAAe,GAAG,IAAA,wCAAsB,EAAC;YACrC,GAAG,EAAE,eAAe;YACpB,IAAI;YACJ,KAAK;YACL,YAAY,EAAE,UAAU;SAC3B,CAAC,CAAC;IACP,CAAC;IAED,eAAe,GAAG,GAAG,eAAe,IAAI,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAExE,OAAO,eAAe,CAAC;AAC3B,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { type OidcMetadata as OidcClientTsOidcMetadata } from "../vendor/frontend/oidc-client-ts";
1
2
  /**
2
3
  * OpenID Providers have metadata describing their configuration.
3
4
  *
@@ -264,3 +265,7 @@ export type OidcMetadata = {
264
265
  */
265
266
  code_challenge_methods_supported: string[];
266
267
  };
268
+ export declare const WELL_KNOWN_PATH = "/.well-known/openid-configuration";
269
+ export declare function fetchOidcMetadata(params: {
270
+ issuerUri: string;
271
+ }): Promise<Partial<OidcClientTsOidcMetadata> | undefined>;
@@ -1,5 +1,61 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WELL_KNOWN_PATH = void 0;
4
+ exports.fetchOidcMetadata = fetchOidcMetadata;
3
5
  const assert_1 = require("../tools/tsafe/assert");
6
+ const isLikelyDevServer_1 = require("../tools/isLikelyDevServer");
4
7
  assert_1.assert;
8
+ exports.WELL_KNOWN_PATH = "/.well-known/openid-configuration";
9
+ function getSessionStorageKey(params) {
10
+ const { issuerUri } = params;
11
+ return `oidc-spa:openid-configuration:${issuerUri}`;
12
+ }
13
+ function readSessionStorage(params) {
14
+ const { issuerUri } = params;
15
+ const value = sessionStorage.getItem(getSessionStorageKey({ issuerUri }));
16
+ if (value === null) {
17
+ return undefined;
18
+ }
19
+ return JSON.parse(value);
20
+ }
21
+ function setSessionStorage(params) {
22
+ const { issuerUri, oidcMetadata } = params;
23
+ sessionStorage.setItem(getSessionStorageKey({ issuerUri }), JSON.stringify(oidcMetadata));
24
+ }
25
+ async function fetchOidcMetadata(params) {
26
+ const { issuerUri } = params;
27
+ from_cache: {
28
+ const oidcMetadata = readSessionStorage({ issuerUri });
29
+ if (oidcMetadata === undefined) {
30
+ break from_cache;
31
+ }
32
+ return oidcMetadata;
33
+ }
34
+ let oidcMetadata;
35
+ try {
36
+ const response = await fetch(`${issuerUri}${exports.WELL_KNOWN_PATH}`, {
37
+ headers: {
38
+ Accept: "application/jwk-set+json, application/json"
39
+ }
40
+ });
41
+ if (!response.ok) {
42
+ throw new Error();
43
+ }
44
+ const obj = await response.json();
45
+ {
46
+ const { authorization_endpoint } = obj;
47
+ if (typeof authorization_endpoint !== "string") {
48
+ throw new Error();
49
+ }
50
+ }
51
+ oidcMetadata = obj;
52
+ }
53
+ catch {
54
+ return undefined;
55
+ }
56
+ if (!(0, isLikelyDevServer_1.getIsLikelyDevServer)()) {
57
+ setSessionStorage({ issuerUri, oidcMetadata });
58
+ }
59
+ return oidcMetadata;
60
+ }
5
61
  //# sourceMappingURL=OidcMetadata.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OidcMetadata.js","sourceRoot":"","sources":["../src/core/OidcMetadata.ts"],"names":[],"mappings":";;AACA,kDAA4D;AA6Q5D,eAAsD,CAAC"}
1
+ {"version":3,"file":"OidcMetadata.js","sourceRoot":"","sources":["../src/core/OidcMetadata.ts"],"names":[],"mappings":";;;AA2SA,8CA8CC;AAxVD,kDAA4D;AAC5D,kEAAkE;AA6QlE,eAAsD,CAAC;AAE1C,QAAA,eAAe,GAAG,mCAAmC,CAAC;AAEnE,SAAS,oBAAoB,CAAC,MAA6B;IACvD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAE7B,OAAO,iCAAiC,SAAS,EAAE,CAAC;AACxD,CAAC;AAED,SAAS,kBAAkB,CAAC,MAA6B;IACrD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAE7B,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAE1E,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAsC,CAAC;AAClE,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAkE;IACzF,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IAE3C,cAAc,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;AAC9F,CAAC;AAEM,KAAK,UAAU,iBAAiB,CAAC,MAA6B;IACjE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAE7B,UAAU,EAAE,CAAC;QACT,MAAM,YAAY,GAAG,kBAAkB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QAEvD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,UAAU,CAAC;QACrB,CAAC;QAED,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,IAAI,YAAmC,CAAC;IAExC,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,uBAAe,EAAE,EAAE;YAC3D,OAAO,EAAE;gBACL,MAAM,EAAE,4CAA4C;aACvD;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,EAAE,CAAC;QACtB,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAElC,CAAC;YACG,MAAM,EAAE,sBAAsB,EAAE,GAAG,GAAG,CAAC;YAEvC,IAAI,OAAO,sBAAsB,KAAK,QAAQ,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,EAAE,CAAC;YACtB,CAAC;QACL,CAAC;QAED,YAAY,GAAG,GAAG,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,CAAC,IAAA,wCAAoB,GAAE,EAAE,CAAC;QAC1B,iBAAiB,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,YAAY,CAAC;AACxB,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { OidcMetadata } from "./OidcMetadata";
1
+ import { type OidcMetadata } from "./OidcMetadata";
2
2
  import type { Oidc } from "./Oidc";
3
3
  export type ParamsOfCreateOidc<DecodedIdToken extends Record<string, unknown> = Oidc.Tokens.DecodedIdToken_OidcCoreSpec, AutoLogin extends boolean = false> = {
4
4
  /**
@@ -50,6 +50,8 @@ export type ParamsOfCreateOidc<DecodedIdToken extends Record<string, unknown> =
50
50
  */
51
51
  extraTokenParams?: Record<string, string | undefined> | (() => Record<string, string | undefined>);
52
52
  /**
53
+ * @deprecated: Use login({ redirectUrl: "..." }) instead.
54
+ *
53
55
  * Usage discouraged, it's here because we don't want to assume too much on your
54
56
  * usecase but I can't think of a scenario where you would want anything
55
57
  * other than the current page.
@@ -139,10 +141,9 @@ export type ParamsOfCreateOidc<DecodedIdToken extends Record<string, unknown> =
139
141
  };
140
142
  /** @see: https://docs.oidc-spa.dev/v/v8/usage */
141
143
  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>>;
142
- export declare function createOidc_nonMemoized<DecodedIdToken extends Record<string, unknown>, AutoLogin extends boolean>(params: Omit<ParamsOfCreateOidc<DecodedIdToken, AutoLogin>, "issuerUri" | "clientId" | "scopes" | "debugLogs">, preProcessedParams: {
144
+ export declare function createOidc_nonMemoized<DecodedIdToken extends Record<string, unknown>, AutoLogin extends boolean>(params: Omit<ParamsOfCreateOidc<DecodedIdToken, AutoLogin>, "issuerUri" | "clientId" | "debugLogs">, preProcessedParams: {
143
145
  issuerUri: string;
144
146
  clientId: string;
145
- scopes: string[];
146
147
  configId: string;
147
148
  log: typeof console.log | undefined;
148
149
  }): Promise<AutoLogin extends true ? Oidc.LoggedIn<DecodedIdToken> : Oidc<DecodedIdToken>>;