oidc-spa 7.3.0 → 8.0.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 (89) hide show
  1. package/core/AuthResponse.d.ts +5 -0
  2. package/core/AuthResponse.js +25 -0
  3. package/core/AuthResponse.js.map +1 -1
  4. package/core/StateData.d.ts +2 -6
  5. package/core/StateData.js +0 -13
  6. package/core/StateData.js.map +1 -1
  7. package/core/createOidc.d.ts +2 -2
  8. package/core/createOidc.js +70 -19
  9. package/core/createOidc.js.map +1 -1
  10. package/core/diagnostic.js +3 -3
  11. package/core/earlyInit.d.ts +16 -0
  12. package/core/earlyInit.js +157 -0
  13. package/core/earlyInit.js.map +1 -0
  14. package/core/index.d.ts +0 -1
  15. package/core/index.js +1 -3
  16. package/core/index.js.map +1 -1
  17. package/core/loginOrGoToAuthServer.js +19 -6
  18. package/core/loginOrGoToAuthServer.js.map +1 -1
  19. package/entrypoint.d.ts +1 -7
  20. package/entrypoint.js +3 -46
  21. package/entrypoint.js.map +1 -1
  22. package/esm/core/AuthResponse.d.ts +5 -0
  23. package/esm/core/AuthResponse.js +23 -0
  24. package/esm/core/AuthResponse.js.map +1 -1
  25. package/esm/core/StateData.d.ts +2 -6
  26. package/esm/core/StateData.js +0 -12
  27. package/esm/core/StateData.js.map +1 -1
  28. package/esm/core/createOidc.d.ts +2 -2
  29. package/esm/core/createOidc.js +72 -21
  30. package/esm/core/createOidc.js.map +1 -1
  31. package/esm/core/diagnostic.js +3 -3
  32. package/esm/core/earlyInit.d.ts +16 -0
  33. package/esm/core/earlyInit.js +152 -0
  34. package/esm/core/earlyInit.js.map +1 -0
  35. package/esm/core/index.d.ts +0 -1
  36. package/esm/core/index.js +0 -1
  37. package/esm/core/index.js.map +1 -1
  38. package/esm/core/loginOrGoToAuthServer.js +19 -6
  39. package/esm/core/loginOrGoToAuthServer.js.map +1 -1
  40. package/esm/entrypoint.d.ts +1 -7
  41. package/esm/entrypoint.js +1 -45
  42. package/esm/entrypoint.js.map +1 -1
  43. package/esm/keycloak/keycloak-js/Keycloak.d.ts +4 -0
  44. package/esm/keycloak/keycloak-js/Keycloak.js +148 -173
  45. package/esm/keycloak/keycloak-js/Keycloak.js.map +1 -1
  46. package/esm/mock/oidc.js +15 -4
  47. package/esm/mock/oidc.js.map +1 -1
  48. package/esm/mock/react.d.ts +1 -1
  49. package/esm/mock/react.js +1 -1
  50. package/esm/react/react.d.ts +1 -1
  51. package/esm/react/react.js +2 -10
  52. package/esm/react/react.js.map +1 -1
  53. package/keycloak/keycloak-js/Keycloak.d.ts +4 -0
  54. package/keycloak/keycloak-js/Keycloak.js +148 -173
  55. package/keycloak/keycloak-js/Keycloak.js.map +1 -1
  56. package/mock/oidc.js +15 -4
  57. package/mock/oidc.js.map +1 -1
  58. package/mock/react.d.ts +1 -1
  59. package/mock/react.js +1 -1
  60. package/package.json +1 -1
  61. package/react/react.d.ts +1 -1
  62. package/react/react.js +1 -9
  63. package/react/react.js.map +1 -1
  64. package/src/core/AuthResponse.ts +36 -0
  65. package/src/core/StateData.ts +2 -22
  66. package/src/core/createOidc.ts +108 -24
  67. package/src/core/diagnostic.ts +3 -3
  68. package/src/core/earlyInit.ts +213 -0
  69. package/src/core/index.ts +0 -1
  70. package/src/core/loginOrGoToAuthServer.ts +24 -6
  71. package/src/entrypoint.ts +1 -69
  72. package/src/keycloak/keycloak-js/Keycloak.ts +167 -228
  73. package/src/mock/oidc.ts +15 -4
  74. package/src/mock/react.tsx +1 -1
  75. package/src/react/react.tsx +2 -18
  76. package/core/handleOidcCallback.d.ts +0 -13
  77. package/core/handleOidcCallback.js +0 -228
  78. package/core/handleOidcCallback.js.map +0 -1
  79. package/core/initialLocationHref.d.ts +0 -1
  80. package/core/initialLocationHref.js +0 -8
  81. package/core/initialLocationHref.js.map +0 -1
  82. package/esm/core/handleOidcCallback.d.ts +0 -13
  83. package/esm/core/handleOidcCallback.js +0 -223
  84. package/esm/core/handleOidcCallback.js.map +0 -1
  85. package/esm/core/initialLocationHref.d.ts +0 -1
  86. package/esm/core/initialLocationHref.js +0 -5
  87. package/esm/core/initialLocationHref.js.map +0 -1
  88. package/src/core/handleOidcCallback.ts +0 -318
  89. package/src/core/initialLocationHref.ts +0 -5
package/src/mock/oidc.ts CHANGED
@@ -3,7 +3,7 @@ import { createObjectThatThrowsIfAccessed } from "../tools/createObjectThatThrow
3
3
  import { id } from "../vendor/frontend/tsafe";
4
4
  import { toFullyQualifiedUrl } from "../tools/toFullyQualifiedUrl";
5
5
  import { getSearchParam, addOrUpdateSearchParam } from "../tools/urlSearchParams";
6
- import { initialLocationHref } from "../core/initialLocationHref";
6
+ import { getRootRelativeOriginalLocationHref } from "../core/earlyInit";
7
7
 
8
8
  export type ParamsOfCreateMockOidc<
9
9
  DecodedIdToken extends Record<string, unknown> = Record<string, unknown>,
@@ -28,6 +28,8 @@ export type ParamsOfCreateMockOidc<
28
28
 
29
29
  const URL_SEARCH_PARAM_NAME = "isUserLoggedIn";
30
30
 
31
+ const locationHref_moduleEvalTime = location.href;
32
+
31
33
  export async function createMockOidc<
32
34
  DecodedIdToken extends Record<string, unknown> = Oidc.Tokens.DecodedIdToken_base,
33
35
  AutoLogin extends boolean = false
@@ -45,7 +47,16 @@ export async function createMockOidc<
45
47
 
46
48
  const isUserLoggedIn = (() => {
47
49
  const { wasPresent, value } = getSearchParam({
48
- url: initialLocationHref,
50
+ url: toFullyQualifiedUrl({
51
+ urlish: (() => {
52
+ try {
53
+ return getRootRelativeOriginalLocationHref();
54
+ } catch {
55
+ return locationHref_moduleEvalTime;
56
+ }
57
+ })(),
58
+ doAssertNoQueryParams: false
59
+ }),
49
60
  name: URL_SEARCH_PARAM_NAME
50
61
  });
51
62
 
@@ -140,7 +151,7 @@ export async function createMockOidc<
140
151
  createObjectThatThrowsIfAccessed<DecodedIdToken>({
141
152
  debugMessage: [
142
153
  "You haven't provided a mocked decodedIdToken",
143
- "See https://docs.oidc-spa.dev/v/v7/mock"
154
+ "See https://docs.oidc-spa.dev/v/v8/mock"
144
155
  ].join("\n")
145
156
  }),
146
157
  decodedIdToken_original:
@@ -148,7 +159,7 @@ export async function createMockOidc<
148
159
  createObjectThatThrowsIfAccessed<Oidc.Tokens.DecodedIdToken_base>({
149
160
  debugMessage: [
150
161
  "You haven't provided a mocked decodedIdToken_original",
151
- "See https://docs.oidc-spa.dev/v/v7/mock"
162
+ "See https://docs.oidc-spa.dev/v/v8/mock"
152
163
  ].join("\n")
153
164
  }),
154
165
  issuedAtTime: Date.now(),
@@ -2,7 +2,7 @@ import { createOidcReactApi_dependencyInjection } from "../react/react";
2
2
  import { createMockOidc, type ParamsOfCreateMockOidc } from "./oidc";
3
3
  import type { ValueOrAsyncGetter } from "../tools/ValueOrAsyncGetter";
4
4
 
5
- /** @see: https://docs.oidc-spa.dev/v/v7/mock */
5
+ /** @see: https://docs.oidc-spa.dev/v/v8/mock */
6
6
  export function createMockReactOidc<
7
7
  DecodedIdToken extends Record<string, unknown> = Record<string, unknown>,
8
8
  AutoLogin extends boolean = false
@@ -8,13 +8,7 @@ import {
8
8
  type FC,
9
9
  type JSX
10
10
  } from "react";
11
- import {
12
- type Oidc,
13
- createOidc,
14
- type ParamsOfCreateOidc,
15
- OidcInitializationError,
16
- handleOidcCallback
17
- } from "../core";
11
+ import { type Oidc, createOidc, type ParamsOfCreateOidc, OidcInitializationError } from "../core";
18
12
  import { assert, type Equals, type Param0 } from "../vendor/frontend/tsafe";
19
13
  import { id } from "../vendor/frontend/tsafe";
20
14
  import type { ValueOrAsyncGetter } from "../tools/ValueOrAsyncGetter";
@@ -145,16 +139,6 @@ export function createOidcReactApi_dependencyInjection<
145
139
 
146
140
  // NOTE: It can be InitializationError only if autoLogin is true
147
141
  const prOidcOrInitializationError = (async () => {
148
- // We're doing this here just for people that wouldn't have
149
- // configured the early init in entrypoint.
150
- {
151
- const { isHandled } = handleOidcCallback();
152
-
153
- if (isHandled) {
154
- return new Promise<never>(() => {});
155
- }
156
- }
157
-
158
142
  const params = await (async () => {
159
143
  if (typeof paramsOrGetParams === "function") {
160
144
  const getParams = paramsOrGetParams;
@@ -467,7 +451,7 @@ export function createOidcReactApi_dependencyInjection<
467
451
  return oidcReact;
468
452
  }
469
453
 
470
- /** @see: https://docs.oidc-spa.dev/v/v7/usage#react-api */
454
+ /** @see: https://docs.oidc-spa.dev/v/v8/usage#react-api */
471
455
  export function createReactOidc<
472
456
  DecodedIdToken extends Record<string, unknown> = Oidc.Tokens.DecodedIdToken_base,
473
457
  AutoLogin extends boolean = false
@@ -1,13 +0,0 @@
1
- import { type StateData } from "./StateData";
2
- import type { AuthResponse } from "./AuthResponse";
3
- export declare function handleOidcCallback(): {
4
- isHandled: boolean;
5
- };
6
- declare const moveRedirectAuthResponseFromSessionStorageToMemory: () => void;
7
- export { moveRedirectAuthResponseFromSessionStorageToMemory };
8
- export declare function retrieveRedirectAuthResponseAndStateData(params: {
9
- configId: string;
10
- }): {
11
- authResponse: AuthResponse;
12
- stateData: StateData.Redirect;
13
- } | undefined;
@@ -1,228 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.moveRedirectAuthResponseFromSessionStorageToMemory = void 0;
4
- exports.handleOidcCallback = handleOidcCallback;
5
- exports.retrieveRedirectAuthResponseAndStateData = retrieveRedirectAuthResponseAndStateData;
6
- const StateData_1 = require("./StateData");
7
- const tsafe_1 = require("../vendor/frontend/tsafe");
8
- const initialLocationHref_1 = require("./initialLocationHref");
9
- const iframeMessageProtection_1 = require("./iframeMessageProtection");
10
- const globalContext = {
11
- previousCall: (0, tsafe_1.id)(undefined)
12
- };
13
- function handleOidcCallback() {
14
- if (globalContext.previousCall !== undefined) {
15
- return globalContext.previousCall;
16
- }
17
- return (globalContext.previousCall = handleOidcCallback_nonMemoized());
18
- }
19
- function handleOidcCallback_nonMemoized() {
20
- const location_urlObj = new URL(initialLocationHref_1.initialLocationHref);
21
- const stateUrlParamValue_wrap = (() => {
22
- fragment: {
23
- const stateUrlParamValue = new URLSearchParams(location_urlObj.hash.replace(/^#/, "")).get("state");
24
- if (stateUrlParamValue === null) {
25
- break fragment;
26
- }
27
- if (!(0, StateData_1.getIsStatQueryParamValue)({ maybeStateUrlParamValue: stateUrlParamValue })) {
28
- break fragment;
29
- }
30
- return { stateUrlParamValue, isFragment: true };
31
- }
32
- query: {
33
- const stateUrlParamValue = location_urlObj.searchParams.get("state");
34
- if (stateUrlParamValue === null) {
35
- break query;
36
- }
37
- if (!(0, StateData_1.getIsStatQueryParamValue)({ maybeStateUrlParamValue: stateUrlParamValue })) {
38
- break query;
39
- }
40
- if (location_urlObj.searchParams.get("client_id") !== null &&
41
- location_urlObj.searchParams.get("response_type") !== null &&
42
- location_urlObj.searchParams.get("redirect_uri") !== null) {
43
- // NOTE: We are probably in a Keycloakify theme and oidc-spa was loaded by mistake.
44
- break query;
45
- }
46
- return { stateUrlParamValue, isFragment: false };
47
- }
48
- return undefined;
49
- })();
50
- if (stateUrlParamValue_wrap === undefined) {
51
- const backForwardTracker = readBackForwardTracker();
52
- if (backForwardTracker !== undefined) {
53
- writeBackForwardTracker({
54
- backForwardTracker: {
55
- ...backForwardTracker,
56
- hasExitedCallback: true
57
- }
58
- });
59
- }
60
- return { isHandled: false };
61
- }
62
- const isHandled = true;
63
- const { stateUrlParamValue, isFragment } = stateUrlParamValue_wrap;
64
- console.log = () => { };
65
- console.warn = () => { };
66
- console.error = () => { };
67
- console.debug = () => { };
68
- const stateData = (0, StateData_1.getStateData)({ stateUrlParamValue });
69
- if (stateData === undefined ||
70
- (stateData.context === "redirect" && stateData.hasBeenProcessedByCallback)) {
71
- const historyMethod = (() => {
72
- const backForwardTracker = readBackForwardTracker();
73
- if (backForwardTracker === undefined) {
74
- return "back";
75
- }
76
- if (!backForwardTracker.hasExitedCallback) {
77
- return backForwardTracker.previousHistoryMethod;
78
- }
79
- switch (backForwardTracker.previousHistoryMethod) {
80
- case "back":
81
- return "forward";
82
- case "forward":
83
- return "back";
84
- }
85
- })();
86
- writeBackForwardTracker({
87
- backForwardTracker: {
88
- previousHistoryMethod: historyMethod,
89
- hasExitedCallback: false
90
- }
91
- });
92
- setTimeout(() => {
93
- reloadOnBfCacheNavigation();
94
- window.history[historyMethod]();
95
- // NOTE: This is a "better than nothing" approach.
96
- // Under some circumstances it's possible to get stuck on this url
97
- // if there is no "next" page in the history for example, navigating
98
- // forward is a NoOp. So in that case it's better to reload the same route
99
- // with just the authResponse removed from the url to avoid re-entering here.
100
- setTimeout(() => {
101
- const { protocol, host, pathname, hash } = window.location;
102
- window.location.href = `${protocol}//${host}${pathname}${hash}`;
103
- }, 350);
104
- }, 0);
105
- return { isHandled };
106
- }
107
- const authResponse = { state: "" };
108
- for (const [key, value] of isFragment
109
- ? new URLSearchParams(location_urlObj.hash.replace(/^#/, ""))
110
- : location_urlObj.searchParams) {
111
- authResponse[key] = value;
112
- }
113
- (0, tsafe_1.assert)(authResponse.state !== "", "063965");
114
- switch (stateData.context) {
115
- case "iframe":
116
- (0, iframeMessageProtection_1.encryptAuthResponse)({
117
- authResponse
118
- }).then(({ encryptedMessage }) => parent.postMessage(encryptedMessage, location.origin));
119
- break;
120
- case "redirect":
121
- (0, StateData_1.markStateDataAsProcessedByCallback)({ stateUrlParamValue });
122
- clearBackForwardTracker();
123
- writeRedirectAuthResponses({
124
- authResponses: [...readRedirectAuthResponses(), authResponse]
125
- });
126
- reloadOnBfCacheNavigation();
127
- setTimeout(() => {
128
- const href = (() => {
129
- if (stateData.action === "login" && authResponse.error === "consent_required") {
130
- return stateData.redirectUrl_consentRequiredCase;
131
- }
132
- return stateData.redirectUrl;
133
- })();
134
- location.href = href;
135
- }, 0);
136
- break;
137
- }
138
- return { isHandled };
139
- }
140
- const { readRedirectAuthResponses, writeRedirectAuthResponses, moveRedirectAuthResponseFromSessionStorageToMemory } = (() => {
141
- const AUTH_RESPONSES_KEY = "oidc-spa:authResponses";
142
- let authResponses_movedToMemoryFromSessionStorage = undefined;
143
- // NOTE: Here we note that we can re-write on session storage some auth response
144
- // after earlyInit in retrieveRedirectAuthResponseAndStateData
145
- // In situation where there are more than one client in the same app and we can't use iframe,
146
- // we can have one client that has to redirect before the response has been dealt with.
147
- // In most case it won't happen if the init sequence is deterministic but the client
148
- // can be instantiated at any time really.
149
- // So the move to memory of the response is fully effective only when theres one client.
150
- function writeRedirectAuthResponses(params) {
151
- const { authResponses } = params;
152
- authResponses_movedToMemoryFromSessionStorage = undefined;
153
- if (authResponses.length === 0) {
154
- sessionStorage.removeItem(AUTH_RESPONSES_KEY);
155
- return;
156
- }
157
- sessionStorage.setItem(AUTH_RESPONSES_KEY, JSON.stringify(authResponses));
158
- }
159
- function readRedirectAuthResponses() {
160
- if (authResponses_movedToMemoryFromSessionStorage !== undefined) {
161
- return authResponses_movedToMemoryFromSessionStorage;
162
- }
163
- const raw = sessionStorage.getItem(AUTH_RESPONSES_KEY);
164
- if (raw === null) {
165
- return [];
166
- }
167
- return JSON.parse(raw);
168
- }
169
- function moveRedirectAuthResponseFromSessionStorageToMemory() {
170
- const authResponses = readRedirectAuthResponses();
171
- writeRedirectAuthResponses({ authResponses: [] });
172
- authResponses_movedToMemoryFromSessionStorage = authResponses;
173
- }
174
- return {
175
- writeRedirectAuthResponses,
176
- readRedirectAuthResponses,
177
- moveRedirectAuthResponseFromSessionStorageToMemory
178
- };
179
- })();
180
- exports.moveRedirectAuthResponseFromSessionStorageToMemory = moveRedirectAuthResponseFromSessionStorageToMemory;
181
- function retrieveRedirectAuthResponseAndStateData(params) {
182
- const { configId } = params;
183
- const authResponses = readRedirectAuthResponses();
184
- let authResponseAndStateData = undefined;
185
- for (const authResponse of [...authResponses]) {
186
- const stateData = (0, StateData_1.getStateData)({ stateUrlParamValue: authResponse.state });
187
- if (stateData === undefined) {
188
- // NOTE: We do not understand how this can happen but it can.
189
- authResponses.splice(authResponses.indexOf(authResponse), 1);
190
- continue;
191
- }
192
- (0, tsafe_1.assert)(stateData.context === "redirect", "474728");
193
- if (stateData.configId !== configId) {
194
- continue;
195
- }
196
- authResponses.splice(authResponses.indexOf(authResponse), 1);
197
- authResponseAndStateData = { authResponse, stateData };
198
- }
199
- writeRedirectAuthResponses({ authResponses });
200
- return authResponseAndStateData;
201
- }
202
- function reloadOnBfCacheNavigation() {
203
- window.addEventListener("pageshow", event => {
204
- if (!event.persisted) {
205
- return;
206
- }
207
- location.reload();
208
- });
209
- }
210
- const { writeBackForwardTracker, readBackForwardTracker, clearBackForwardTracker } = (() => {
211
- const BACK_NAVIGATION_TRACKER_KEY = "oidc-spa:callback-back-forward-tracker";
212
- function writeBackForwardTracker(params) {
213
- const { backForwardTracker } = params;
214
- sessionStorage.setItem(BACK_NAVIGATION_TRACKER_KEY, JSON.stringify(backForwardTracker));
215
- }
216
- function readBackForwardTracker() {
217
- const raw = sessionStorage.getItem(BACK_NAVIGATION_TRACKER_KEY);
218
- if (raw === null) {
219
- return undefined;
220
- }
221
- return JSON.parse(raw);
222
- }
223
- function clearBackForwardTracker() {
224
- sessionStorage.removeItem(BACK_NAVIGATION_TRACKER_KEY);
225
- }
226
- return { writeBackForwardTracker, readBackForwardTracker, clearBackForwardTracker };
227
- })();
228
- //# sourceMappingURL=handleOidcCallback.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handleOidcCallback.js","sourceRoot":"","sources":["../src/core/handleOidcCallback.ts"],"names":[],"mappings":";;;AAeA,gDAMC;AA8ND,4FAkCC;AArRD,2CAKqB;AACrB,oDAAsD;AAEtD,+DAA4D;AAC5D,uEAAgE;AAEhE,MAAM,aAAa,GAAG;IAClB,YAAY,EAAE,IAAA,UAAE,EAAqC,SAAS,CAAC;CAClE,CAAC;AAEF,SAAgB,kBAAkB;IAC9B,IAAI,aAAa,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QAC3C,OAAO,aAAa,CAAC,YAAY,CAAC;IACtC,CAAC;IAED,OAAO,CAAC,aAAa,CAAC,YAAY,GAAG,8BAA8B,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,8BAA8B;IACnC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,yCAAmB,CAAC,CAAC;IAErD,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE;QAClC,QAAQ,EAAE,CAAC;YACP,MAAM,kBAAkB,GAAG,IAAI,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CACtF,OAAO,CACV,CAAC;YAEF,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;gBAC9B,MAAM,QAAQ,CAAC;YACnB,CAAC;YAED,IAAI,CAAC,IAAA,oCAAwB,EAAC,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC;gBAC7E,MAAM,QAAQ,CAAC;YACnB,CAAC;YAED,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACpD,CAAC;QAED,KAAK,EAAE,CAAC;YACJ,MAAM,kBAAkB,GAAG,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAErE,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;gBAC9B,MAAM,KAAK,CAAC;YAChB,CAAC;YAED,IAAI,CAAC,IAAA,oCAAwB,EAAC,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC;gBAC7E,MAAM,KAAK,CAAC;YAChB,CAAC;YAED,IACI,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,IAAI;gBACtD,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,IAAI;gBAC1D,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,IAAI,EAC3D,CAAC;gBACC,mFAAmF;gBACnF,MAAM,KAAK,CAAC;YAChB,CAAC;YAED,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QACrD,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC,CAAC,EAAE,CAAC;IAEL,IAAI,uBAAuB,KAAK,SAAS,EAAE,CAAC;QACxC,MAAM,kBAAkB,GAAG,sBAAsB,EAAE,CAAC;QAEpD,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACnC,uBAAuB,CAAC;gBACpB,kBAAkB,EAAE;oBAChB,GAAG,kBAAkB;oBACrB,iBAAiB,EAAE,IAAI;iBAC1B;aACJ,CAAC,CAAC;QACP,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC;IAEvB,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,GAAG,uBAAuB,CAAC;IAEnE,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACvB,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACxB,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACzB,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IAEzB,MAAM,SAAS,GAAG,IAAA,wBAAY,EAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAEvD,IACI,SAAS,KAAK,SAAS;QACvB,CAAC,SAAS,CAAC,OAAO,KAAK,UAAU,IAAI,SAAS,CAAC,0BAA0B,CAAC,EAC5E,CAAC;QACC,MAAM,aAAa,GAAuB,CAAC,GAAG,EAAE;YAC5C,MAAM,kBAAkB,GAAG,sBAAsB,EAAE,CAAC;YAEpD,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBACnC,OAAO,MAAM,CAAC;YAClB,CAAC;YAED,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;gBACxC,OAAO,kBAAkB,CAAC,qBAAqB,CAAC;YACpD,CAAC;YAED,QAAQ,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;gBAC/C,KAAK,MAAM;oBACP,OAAO,SAAS,CAAC;gBACrB,KAAK,SAAS;oBACV,OAAO,MAAM,CAAC;YACtB,CAAC;QACL,CAAC,CAAC,EAAE,CAAC;QAEL,uBAAuB,CAAC;YACpB,kBAAkB,EAAE;gBAChB,qBAAqB,EAAE,aAAa;gBACpC,iBAAiB,EAAE,KAAK;aAC3B;SACJ,CAAC,CAAC;QAEH,UAAU,CAAC,GAAG,EAAE;YACZ,yBAAyB,EAAE,CAAC;YAE5B,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YAEhC,kDAAkD;YAClD,kEAAkE;YAClE,oEAAoE;YACpE,0EAA0E;YAC1E,6EAA6E;YAC7E,UAAU,CAAC,GAAG,EAAE;gBACZ,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAC3D,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,QAAQ,KAAK,IAAI,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAC;YACpE,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,CAAC,EAAE,CAAC,CAAC,CAAC;QAEN,OAAO,EAAE,SAAS,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,YAAY,GAAiB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAEjD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,UAAU;QACjC,CAAC,CAAC,IAAI,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7D,CAAC,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;QACjC,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,IAAA,cAAM,EAAC,YAAY,CAAC,KAAK,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;IAE5C,QAAQ,SAAS,CAAC,OAAO,EAAE,CAAC;QACxB,KAAK,QAAQ;YACT,IAAA,6CAAmB,EAAC;gBAChB,YAAY;aACf,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACzF,MAAM;QACV,KAAK,UAAU;YACX,IAAA,8CAAkC,EAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,uBAAuB,EAAE,CAAC;YAC1B,0BAA0B,CAAC;gBACvB,aAAa,EAAE,CAAC,GAAG,yBAAyB,EAAE,EAAE,YAAY,CAAC;aAChE,CAAC,CAAC;YACH,yBAAyB,EAAE,CAAC;YAC5B,UAAU,CAAC,GAAG,EAAE;gBACZ,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE;oBACf,IAAI,SAAS,CAAC,MAAM,KAAK,OAAO,IAAI,YAAY,CAAC,KAAK,KAAK,kBAAkB,EAAE,CAAC;wBAC5E,OAAO,SAAS,CAAC,+BAA+B,CAAC;oBACrD,CAAC;oBAED,OAAO,SAAS,CAAC,WAAW,CAAC;gBACjC,CAAC,CAAC,EAAE,CAAC;gBAEL,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;YACzB,CAAC,EAAE,CAAC,CAAC,CAAC;YACN,MAAM;IACd,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,EACF,yBAAyB,EACzB,0BAA0B,EAC1B,kDAAkD,EACrD,GAAG,CAAC,GAAG,EAAE;IACN,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;IAEpD,IAAI,6CAA6C,GAA+B,SAAS,CAAC;IAE1F,gFAAgF;IAChF,8DAA8D;IAC9D,6FAA6F;IAC7F,uFAAuF;IACvF,oFAAoF;IACpF,0CAA0C;IAC1C,wFAAwF;IACxF,SAAS,0BAA0B,CAAC,MAAyC;QACzE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;QAEjC,6CAA6C,GAAG,SAAS,CAAC;QAE1D,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,cAAc,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;YAC9C,OAAO;QACX,CAAC;QACD,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,SAAS,yBAAyB;QAC9B,IAAI,6CAA6C,KAAK,SAAS,EAAE,CAAC;YAC9D,OAAO,6CAA6C,CAAC;QACzD,CAAC;QAED,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAEvD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,SAAS,kDAAkD;QACvD,MAAM,aAAa,GAAG,yBAAyB,EAAE,CAAC;QAElD,0BAA0B,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;QAElD,6CAA6C,GAAG,aAAa,CAAC;IAClE,CAAC;IAED,OAAO;QACH,0BAA0B;QAC1B,yBAAyB;QACzB,kDAAkD;KACrD,CAAC;AACN,CAAC,CAAC,EAAE,CAAC;AAEI,gHAAkD;AAE3D,SAAgB,wCAAwC,CAAC,MAExD;IACG,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE5B,MAAM,aAAa,GAAG,yBAAyB,EAAE,CAAC;IAElD,IAAI,wBAAwB,GAEV,SAAS,CAAC;IAE5B,KAAK,MAAM,YAAY,IAAI,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAA,wBAAY,EAAC,EAAE,kBAAkB,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;QAE3E,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,6DAA6D;YAC7D,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7D,SAAS;QACb,CAAC;QAED,IAAA,cAAM,EAAC,SAAS,CAAC,OAAO,KAAK,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEnD,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClC,SAAS;QACb,CAAC;QAED,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QAE7D,wBAAwB,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;IAC3D,CAAC;IAED,0BAA0B,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;IAE9C,OAAO,wBAAwB,CAAC;AACpC,CAAC;AAED,SAAS,yBAAyB;IAC9B,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE;QACxC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO;QACX,CAAC;QACD,QAAQ,CAAC,MAAM,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,GAAG,CAAC,GAAG,EAAE;IACvF,MAAM,2BAA2B,GAAG,wCAAwC,CAAC;IAO7E,SAAS,uBAAuB,CAAC,MAAkD;QAC/E,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAC;QAEtC,cAAc,CAAC,OAAO,CAAC,2BAA2B,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,SAAS,sBAAsB;QAC3B,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAEhE,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACf,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,SAAS,uBAAuB;QAC5B,cAAc,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,CAAC;AACxF,CAAC,CAAC,EAAE,CAAC"}
@@ -1 +0,0 @@
1
- export declare const initialLocationHref: string;
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.initialLocationHref = void 0;
4
- const globalContext = {
5
- initialLocationHref: window.location.href
6
- };
7
- exports.initialLocationHref = globalContext.initialLocationHref;
8
- //# sourceMappingURL=initialLocationHref.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"initialLocationHref.js","sourceRoot":"","sources":["../src/core/initialLocationHref.ts"],"names":[],"mappings":";;;AAAA,MAAM,aAAa,GAAG;IAClB,mBAAmB,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;CAC5C,CAAC;AAEa,2BAAmB,GAAK,aAAa,qBAAC"}
@@ -1,13 +0,0 @@
1
- import { type StateData } from "./StateData";
2
- import type { AuthResponse } from "./AuthResponse";
3
- export declare function handleOidcCallback(): {
4
- isHandled: boolean;
5
- };
6
- declare const moveRedirectAuthResponseFromSessionStorageToMemory: () => void;
7
- export { moveRedirectAuthResponseFromSessionStorageToMemory };
8
- export declare function retrieveRedirectAuthResponseAndStateData(params: {
9
- configId: string;
10
- }): {
11
- authResponse: AuthResponse;
12
- stateData: StateData.Redirect;
13
- } | undefined;
@@ -1,223 +0,0 @@
1
- import { getStateData, markStateDataAsProcessedByCallback, getIsStatQueryParamValue } from "./StateData";
2
- import { assert, id } from "../vendor/frontend/tsafe";
3
- import { initialLocationHref } from "./initialLocationHref";
4
- import { encryptAuthResponse } from "./iframeMessageProtection";
5
- const globalContext = {
6
- previousCall: id(undefined)
7
- };
8
- export function handleOidcCallback() {
9
- if (globalContext.previousCall !== undefined) {
10
- return globalContext.previousCall;
11
- }
12
- return (globalContext.previousCall = handleOidcCallback_nonMemoized());
13
- }
14
- function handleOidcCallback_nonMemoized() {
15
- const location_urlObj = new URL(initialLocationHref);
16
- const stateUrlParamValue_wrap = (() => {
17
- fragment: {
18
- const stateUrlParamValue = new URLSearchParams(location_urlObj.hash.replace(/^#/, "")).get("state");
19
- if (stateUrlParamValue === null) {
20
- break fragment;
21
- }
22
- if (!getIsStatQueryParamValue({ maybeStateUrlParamValue: stateUrlParamValue })) {
23
- break fragment;
24
- }
25
- return { stateUrlParamValue, isFragment: true };
26
- }
27
- query: {
28
- const stateUrlParamValue = location_urlObj.searchParams.get("state");
29
- if (stateUrlParamValue === null) {
30
- break query;
31
- }
32
- if (!getIsStatQueryParamValue({ maybeStateUrlParamValue: stateUrlParamValue })) {
33
- break query;
34
- }
35
- if (location_urlObj.searchParams.get("client_id") !== null &&
36
- location_urlObj.searchParams.get("response_type") !== null &&
37
- location_urlObj.searchParams.get("redirect_uri") !== null) {
38
- // NOTE: We are probably in a Keycloakify theme and oidc-spa was loaded by mistake.
39
- break query;
40
- }
41
- return { stateUrlParamValue, isFragment: false };
42
- }
43
- return undefined;
44
- })();
45
- if (stateUrlParamValue_wrap === undefined) {
46
- const backForwardTracker = readBackForwardTracker();
47
- if (backForwardTracker !== undefined) {
48
- writeBackForwardTracker({
49
- backForwardTracker: {
50
- ...backForwardTracker,
51
- hasExitedCallback: true
52
- }
53
- });
54
- }
55
- return { isHandled: false };
56
- }
57
- const isHandled = true;
58
- const { stateUrlParamValue, isFragment } = stateUrlParamValue_wrap;
59
- console.log = () => { };
60
- console.warn = () => { };
61
- console.error = () => { };
62
- console.debug = () => { };
63
- const stateData = getStateData({ stateUrlParamValue });
64
- if (stateData === undefined ||
65
- (stateData.context === "redirect" && stateData.hasBeenProcessedByCallback)) {
66
- const historyMethod = (() => {
67
- const backForwardTracker = readBackForwardTracker();
68
- if (backForwardTracker === undefined) {
69
- return "back";
70
- }
71
- if (!backForwardTracker.hasExitedCallback) {
72
- return backForwardTracker.previousHistoryMethod;
73
- }
74
- switch (backForwardTracker.previousHistoryMethod) {
75
- case "back":
76
- return "forward";
77
- case "forward":
78
- return "back";
79
- }
80
- })();
81
- writeBackForwardTracker({
82
- backForwardTracker: {
83
- previousHistoryMethod: historyMethod,
84
- hasExitedCallback: false
85
- }
86
- });
87
- setTimeout(() => {
88
- reloadOnBfCacheNavigation();
89
- window.history[historyMethod]();
90
- // NOTE: This is a "better than nothing" approach.
91
- // Under some circumstances it's possible to get stuck on this url
92
- // if there is no "next" page in the history for example, navigating
93
- // forward is a NoOp. So in that case it's better to reload the same route
94
- // with just the authResponse removed from the url to avoid re-entering here.
95
- setTimeout(() => {
96
- const { protocol, host, pathname, hash } = window.location;
97
- window.location.href = `${protocol}//${host}${pathname}${hash}`;
98
- }, 350);
99
- }, 0);
100
- return { isHandled };
101
- }
102
- const authResponse = { state: "" };
103
- for (const [key, value] of isFragment
104
- ? new URLSearchParams(location_urlObj.hash.replace(/^#/, ""))
105
- : location_urlObj.searchParams) {
106
- authResponse[key] = value;
107
- }
108
- assert(authResponse.state !== "", "063965");
109
- switch (stateData.context) {
110
- case "iframe":
111
- encryptAuthResponse({
112
- authResponse
113
- }).then(({ encryptedMessage }) => parent.postMessage(encryptedMessage, location.origin));
114
- break;
115
- case "redirect":
116
- markStateDataAsProcessedByCallback({ stateUrlParamValue });
117
- clearBackForwardTracker();
118
- writeRedirectAuthResponses({
119
- authResponses: [...readRedirectAuthResponses(), authResponse]
120
- });
121
- reloadOnBfCacheNavigation();
122
- setTimeout(() => {
123
- const href = (() => {
124
- if (stateData.action === "login" && authResponse.error === "consent_required") {
125
- return stateData.redirectUrl_consentRequiredCase;
126
- }
127
- return stateData.redirectUrl;
128
- })();
129
- location.href = href;
130
- }, 0);
131
- break;
132
- }
133
- return { isHandled };
134
- }
135
- const { readRedirectAuthResponses, writeRedirectAuthResponses, moveRedirectAuthResponseFromSessionStorageToMemory } = (() => {
136
- const AUTH_RESPONSES_KEY = "oidc-spa:authResponses";
137
- let authResponses_movedToMemoryFromSessionStorage = undefined;
138
- // NOTE: Here we note that we can re-write on session storage some auth response
139
- // after earlyInit in retrieveRedirectAuthResponseAndStateData
140
- // In situation where there are more than one client in the same app and we can't use iframe,
141
- // we can have one client that has to redirect before the response has been dealt with.
142
- // In most case it won't happen if the init sequence is deterministic but the client
143
- // can be instantiated at any time really.
144
- // So the move to memory of the response is fully effective only when theres one client.
145
- function writeRedirectAuthResponses(params) {
146
- const { authResponses } = params;
147
- authResponses_movedToMemoryFromSessionStorage = undefined;
148
- if (authResponses.length === 0) {
149
- sessionStorage.removeItem(AUTH_RESPONSES_KEY);
150
- return;
151
- }
152
- sessionStorage.setItem(AUTH_RESPONSES_KEY, JSON.stringify(authResponses));
153
- }
154
- function readRedirectAuthResponses() {
155
- if (authResponses_movedToMemoryFromSessionStorage !== undefined) {
156
- return authResponses_movedToMemoryFromSessionStorage;
157
- }
158
- const raw = sessionStorage.getItem(AUTH_RESPONSES_KEY);
159
- if (raw === null) {
160
- return [];
161
- }
162
- return JSON.parse(raw);
163
- }
164
- function moveRedirectAuthResponseFromSessionStorageToMemory() {
165
- const authResponses = readRedirectAuthResponses();
166
- writeRedirectAuthResponses({ authResponses: [] });
167
- authResponses_movedToMemoryFromSessionStorage = authResponses;
168
- }
169
- return {
170
- writeRedirectAuthResponses,
171
- readRedirectAuthResponses,
172
- moveRedirectAuthResponseFromSessionStorageToMemory
173
- };
174
- })();
175
- export { moveRedirectAuthResponseFromSessionStorageToMemory };
176
- export function retrieveRedirectAuthResponseAndStateData(params) {
177
- const { configId } = params;
178
- const authResponses = readRedirectAuthResponses();
179
- let authResponseAndStateData = undefined;
180
- for (const authResponse of [...authResponses]) {
181
- const stateData = getStateData({ stateUrlParamValue: authResponse.state });
182
- if (stateData === undefined) {
183
- // NOTE: We do not understand how this can happen but it can.
184
- authResponses.splice(authResponses.indexOf(authResponse), 1);
185
- continue;
186
- }
187
- assert(stateData.context === "redirect", "474728");
188
- if (stateData.configId !== configId) {
189
- continue;
190
- }
191
- authResponses.splice(authResponses.indexOf(authResponse), 1);
192
- authResponseAndStateData = { authResponse, stateData };
193
- }
194
- writeRedirectAuthResponses({ authResponses });
195
- return authResponseAndStateData;
196
- }
197
- function reloadOnBfCacheNavigation() {
198
- window.addEventListener("pageshow", event => {
199
- if (!event.persisted) {
200
- return;
201
- }
202
- location.reload();
203
- });
204
- }
205
- const { writeBackForwardTracker, readBackForwardTracker, clearBackForwardTracker } = (() => {
206
- const BACK_NAVIGATION_TRACKER_KEY = "oidc-spa:callback-back-forward-tracker";
207
- function writeBackForwardTracker(params) {
208
- const { backForwardTracker } = params;
209
- sessionStorage.setItem(BACK_NAVIGATION_TRACKER_KEY, JSON.stringify(backForwardTracker));
210
- }
211
- function readBackForwardTracker() {
212
- const raw = sessionStorage.getItem(BACK_NAVIGATION_TRACKER_KEY);
213
- if (raw === null) {
214
- return undefined;
215
- }
216
- return JSON.parse(raw);
217
- }
218
- function clearBackForwardTracker() {
219
- sessionStorage.removeItem(BACK_NAVIGATION_TRACKER_KEY);
220
- }
221
- return { writeBackForwardTracker, readBackForwardTracker, clearBackForwardTracker };
222
- })();
223
- //# sourceMappingURL=handleOidcCallback.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handleOidcCallback.js","sourceRoot":"","sources":["../../src/core/handleOidcCallback.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,kCAAkC,EAClC,wBAAwB,EAE3B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,MAAM,aAAa,GAAG;IAClB,YAAY,EAAE,EAAE,CAAqC,SAAS,CAAC;CAClE,CAAC;AAEF,MAAM,UAAU,kBAAkB;IAC9B,IAAI,aAAa,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QAC3C,OAAO,aAAa,CAAC,YAAY,CAAC;IACtC,CAAC;IAED,OAAO,CAAC,aAAa,CAAC,YAAY,GAAG,8BAA8B,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,8BAA8B;IACnC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAErD,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE;QAClC,QAAQ,EAAE,CAAC;YACP,MAAM,kBAAkB,GAAG,IAAI,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CACtF,OAAO,CACV,CAAC;YAEF,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;gBAC9B,MAAM,QAAQ,CAAC;YACnB,CAAC;YAED,IAAI,CAAC,wBAAwB,CAAC,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC;gBAC7E,MAAM,QAAQ,CAAC;YACnB,CAAC;YAED,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACpD,CAAC;QAED,KAAK,EAAE,CAAC;YACJ,MAAM,kBAAkB,GAAG,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAErE,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;gBAC9B,MAAM,KAAK,CAAC;YAChB,CAAC;YAED,IAAI,CAAC,wBAAwB,CAAC,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC;gBAC7E,MAAM,KAAK,CAAC;YAChB,CAAC;YAED,IACI,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,IAAI;gBACtD,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,IAAI;gBAC1D,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,IAAI,EAC3D,CAAC;gBACC,mFAAmF;gBACnF,MAAM,KAAK,CAAC;YAChB,CAAC;YAED,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QACrD,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC,CAAC,EAAE,CAAC;IAEL,IAAI,uBAAuB,KAAK,SAAS,EAAE,CAAC;QACxC,MAAM,kBAAkB,GAAG,sBAAsB,EAAE,CAAC;QAEpD,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACnC,uBAAuB,CAAC;gBACpB,kBAAkB,EAAE;oBAChB,GAAG,kBAAkB;oBACrB,iBAAiB,EAAE,IAAI;iBAC1B;aACJ,CAAC,CAAC;QACP,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC;IAEvB,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,GAAG,uBAAuB,CAAC;IAEnE,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACvB,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACxB,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACzB,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IAEzB,MAAM,SAAS,GAAG,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAEvD,IACI,SAAS,KAAK,SAAS;QACvB,CAAC,SAAS,CAAC,OAAO,KAAK,UAAU,IAAI,SAAS,CAAC,0BAA0B,CAAC,EAC5E,CAAC;QACC,MAAM,aAAa,GAAuB,CAAC,GAAG,EAAE;YAC5C,MAAM,kBAAkB,GAAG,sBAAsB,EAAE,CAAC;YAEpD,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBACnC,OAAO,MAAM,CAAC;YAClB,CAAC;YAED,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;gBACxC,OAAO,kBAAkB,CAAC,qBAAqB,CAAC;YACpD,CAAC;YAED,QAAQ,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;gBAC/C,KAAK,MAAM;oBACP,OAAO,SAAS,CAAC;gBACrB,KAAK,SAAS;oBACV,OAAO,MAAM,CAAC;YACtB,CAAC;QACL,CAAC,CAAC,EAAE,CAAC;QAEL,uBAAuB,CAAC;YACpB,kBAAkB,EAAE;gBAChB,qBAAqB,EAAE,aAAa;gBACpC,iBAAiB,EAAE,KAAK;aAC3B;SACJ,CAAC,CAAC;QAEH,UAAU,CAAC,GAAG,EAAE;YACZ,yBAAyB,EAAE,CAAC;YAE5B,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YAEhC,kDAAkD;YAClD,kEAAkE;YAClE,oEAAoE;YACpE,0EAA0E;YAC1E,6EAA6E;YAC7E,UAAU,CAAC,GAAG,EAAE;gBACZ,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAC3D,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,QAAQ,KAAK,IAAI,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAC;YACpE,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,CAAC,EAAE,CAAC,CAAC,CAAC;QAEN,OAAO,EAAE,SAAS,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,YAAY,GAAiB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAEjD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,UAAU;QACjC,CAAC,CAAC,IAAI,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7D,CAAC,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;QACjC,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,KAAK,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;IAE5C,QAAQ,SAAS,CAAC,OAAO,EAAE,CAAC;QACxB,KAAK,QAAQ;YACT,mBAAmB,CAAC;gBAChB,YAAY;aACf,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACzF,MAAM;QACV,KAAK,UAAU;YACX,kCAAkC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,uBAAuB,EAAE,CAAC;YAC1B,0BAA0B,CAAC;gBACvB,aAAa,EAAE,CAAC,GAAG,yBAAyB,EAAE,EAAE,YAAY,CAAC;aAChE,CAAC,CAAC;YACH,yBAAyB,EAAE,CAAC;YAC5B,UAAU,CAAC,GAAG,EAAE;gBACZ,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE;oBACf,IAAI,SAAS,CAAC,MAAM,KAAK,OAAO,IAAI,YAAY,CAAC,KAAK,KAAK,kBAAkB,EAAE,CAAC;wBAC5E,OAAO,SAAS,CAAC,+BAA+B,CAAC;oBACrD,CAAC;oBAED,OAAO,SAAS,CAAC,WAAW,CAAC;gBACjC,CAAC,CAAC,EAAE,CAAC;gBAEL,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;YACzB,CAAC,EAAE,CAAC,CAAC,CAAC;YACN,MAAM;IACd,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,EACF,yBAAyB,EACzB,0BAA0B,EAC1B,kDAAkD,EACrD,GAAG,CAAC,GAAG,EAAE;IACN,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;IAEpD,IAAI,6CAA6C,GAA+B,SAAS,CAAC;IAE1F,gFAAgF;IAChF,8DAA8D;IAC9D,6FAA6F;IAC7F,uFAAuF;IACvF,oFAAoF;IACpF,0CAA0C;IAC1C,wFAAwF;IACxF,SAAS,0BAA0B,CAAC,MAAyC;QACzE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;QAEjC,6CAA6C,GAAG,SAAS,CAAC;QAE1D,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,cAAc,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;YAC9C,OAAO;QACX,CAAC;QACD,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,SAAS,yBAAyB;QAC9B,IAAI,6CAA6C,KAAK,SAAS,EAAE,CAAC;YAC9D,OAAO,6CAA6C,CAAC;QACzD,CAAC;QAED,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAEvD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,SAAS,kDAAkD;QACvD,MAAM,aAAa,GAAG,yBAAyB,EAAE,CAAC;QAElD,0BAA0B,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;QAElD,6CAA6C,GAAG,aAAa,CAAC;IAClE,CAAC;IAED,OAAO;QACH,0BAA0B;QAC1B,yBAAyB;QACzB,kDAAkD;KACrD,CAAC;AACN,CAAC,CAAC,EAAE,CAAC;AAEL,OAAO,EAAE,kDAAkD,EAAE,CAAC;AAE9D,MAAM,UAAU,wCAAwC,CAAC,MAExD;IACG,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE5B,MAAM,aAAa,GAAG,yBAAyB,EAAE,CAAC;IAElD,IAAI,wBAAwB,GAEV,SAAS,CAAC;IAE5B,KAAK,MAAM,YAAY,IAAI,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,YAAY,CAAC,EAAE,kBAAkB,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;QAE3E,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,6DAA6D;YAC7D,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7D,SAAS;QACb,CAAC;QAED,MAAM,CAAC,SAAS,CAAC,OAAO,KAAK,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEnD,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClC,SAAS;QACb,CAAC;QAED,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QAE7D,wBAAwB,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;IAC3D,CAAC;IAED,0BAA0B,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;IAE9C,OAAO,wBAAwB,CAAC;AACpC,CAAC;AAED,SAAS,yBAAyB;IAC9B,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE;QACxC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO;QACX,CAAC;QACD,QAAQ,CAAC,MAAM,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,GAAG,CAAC,GAAG,EAAE;IACvF,MAAM,2BAA2B,GAAG,wCAAwC,CAAC;IAO7E,SAAS,uBAAuB,CAAC,MAAkD;QAC/E,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAC;QAEtC,cAAc,CAAC,OAAO,CAAC,2BAA2B,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,SAAS,sBAAsB;QAC3B,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAEhE,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACf,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,SAAS,uBAAuB;QAC5B,cAAc,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,CAAC;AACxF,CAAC,CAAC,EAAE,CAAC"}
@@ -1 +0,0 @@
1
- export declare const initialLocationHref: string;
@@ -1,5 +0,0 @@
1
- const globalContext = {
2
- initialLocationHref: window.location.href
3
- };
4
- export const { initialLocationHref } = globalContext;
5
- //# sourceMappingURL=initialLocationHref.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"initialLocationHref.js","sourceRoot":"","sources":["../../src/core/initialLocationHref.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG;IAClB,mBAAmB,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;CAC5C,CAAC;AAEF,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,aAAa,CAAC"}