oidc-spa 6.5.1 → 6.6.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 (84) hide show
  1. package/mock/oidc.js +6 -5
  2. package/mock/oidc.js.map +1 -1
  3. package/oidc/AuthResponse.d.ts +6 -0
  4. package/oidc/AuthResponse.js +59 -0
  5. package/oidc/AuthResponse.js.map +1 -0
  6. package/oidc/Oidc.d.ts +19 -8
  7. package/oidc/createOidc.d.ts +4 -4
  8. package/oidc/createOidc.js +359 -295
  9. package/oidc/createOidc.js.map +1 -1
  10. package/oidc/evtIsUserActive.d.ts +15 -0
  11. package/oidc/{isUserActive.js → evtIsUserActive.js} +29 -12
  12. package/oidc/evtIsUserActive.js.map +1 -0
  13. package/oidc/handleOidcCallback.d.ts +8 -1
  14. package/oidc/handleOidcCallback.js +68 -13
  15. package/oidc/handleOidcCallback.js.map +1 -1
  16. package/oidc/loginOrGoToAuthServer.d.ts +5 -4
  17. package/oidc/loginOrGoToAuthServer.js +190 -227
  18. package/oidc/loginOrGoToAuthServer.js.map +1 -1
  19. package/oidc/loginPropagationToOtherTabs.d.ts +17 -0
  20. package/oidc/loginPropagationToOtherTabs.js +41 -0
  21. package/oidc/loginPropagationToOtherTabs.js.map +1 -0
  22. package/oidc/loginSilent.d.ts +1 -5
  23. package/oidc/loginSilent.js +3 -51
  24. package/oidc/loginSilent.js.map +1 -1
  25. package/oidc/logoutPropagationToOtherTabs.js +1 -1
  26. package/oidc/logoutPropagationToOtherTabs.js.map +1 -1
  27. package/oidc/oidcClientTsUserToTokens.d.ts +1 -1
  28. package/oidc/oidcClientTsUserToTokens.js +45 -23
  29. package/oidc/oidcClientTsUserToTokens.js.map +1 -1
  30. package/oidc/ongoingLoginOrRefreshProcesses.d.ts +16 -0
  31. package/oidc/ongoingLoginOrRefreshProcesses.js +102 -0
  32. package/oidc/ongoingLoginOrRefreshProcesses.js.map +1 -0
  33. package/oidc/persistedAuthState.d.ts +16 -3
  34. package/oidc/persistedAuthState.js +35 -4
  35. package/oidc/persistedAuthState.js.map +1 -1
  36. package/package.json +36 -21
  37. package/react/react.js +8 -14
  38. package/react/react.js.map +1 -1
  39. package/src/mock/oidc.ts +14 -3
  40. package/src/oidc/AuthResponse.ts +26 -0
  41. package/src/oidc/Oidc.ts +19 -4
  42. package/src/oidc/createOidc.ts +233 -206
  43. package/src/oidc/{isUserActive.ts → evtIsUserActive.ts} +36 -10
  44. package/src/oidc/handleOidcCallback.ts +73 -12
  45. package/src/oidc/loginOrGoToAuthServer.ts +94 -87
  46. package/src/oidc/loginPropagationToOtherTabs.ts +63 -0
  47. package/src/oidc/loginSilent.ts +2 -20
  48. package/src/oidc/logoutPropagationToOtherTabs.ts +2 -2
  49. package/src/oidc/oidcClientTsUserToTokens.ts +74 -35
  50. package/src/oidc/ongoingLoginOrRefreshProcesses.ts +60 -0
  51. package/src/oidc/persistedAuthState.ts +66 -8
  52. package/src/react/react.tsx +8 -16
  53. package/src/tools/{ephemeralSessionStorage.ts → EphemeralSessionStorage.ts} +59 -27
  54. package/src/tools/Evt.ts +56 -0
  55. package/src/tools/StatefulEvt.ts +38 -0
  56. package/src/tools/parseKeycloakIssuerUri.ts +9 -1
  57. package/src/tools/subscribeToUserInteraction.ts +0 -1
  58. package/src/tools/workerTimers.ts +10 -12
  59. package/tools/EphemeralSessionStorage.d.ts +12 -0
  60. package/tools/{ephemeralSessionStorage.js → EphemeralSessionStorage.js} +29 -16
  61. package/tools/EphemeralSessionStorage.js.map +1 -0
  62. package/tools/Evt.d.ts +11 -0
  63. package/tools/{AwaitableEventEmitter.js → Evt.js} +24 -8
  64. package/tools/Evt.js.map +1 -0
  65. package/tools/StatefulEvt.d.ts +12 -0
  66. package/tools/StatefulEvt.js +24 -0
  67. package/tools/StatefulEvt.js.map +1 -0
  68. package/tools/parseKeycloakIssuerUri.js +5 -1
  69. package/tools/parseKeycloakIssuerUri.js.map +1 -1
  70. package/tools/subscribeToUserInteraction.js +2 -3
  71. package/tools/subscribeToUserInteraction.js.map +1 -1
  72. package/tools/workerTimers.js +11 -13
  73. package/tools/workerTimers.js.map +1 -1
  74. package/oidc/isUserActive.d.ts +0 -13
  75. package/oidc/isUserActive.js.map +0 -1
  76. package/src/tools/AwaitableEventEmitter.ts +0 -33
  77. package/src/tools/StatefulObservable.ts +0 -52
  78. package/tools/AwaitableEventEmitter.d.ts +0 -5
  79. package/tools/AwaitableEventEmitter.js.map +0 -1
  80. package/tools/StatefulObservable.d.ts +0 -12
  81. package/tools/StatefulObservable.js +0 -33
  82. package/tools/StatefulObservable.js.map +0 -1
  83. package/tools/ephemeralSessionStorage.d.ts +0 -3
  84. package/tools/ephemeralSessionStorage.js.map +0 -1
@@ -8,7 +8,7 @@ const clearByTimerHandle = new WeakMap<TimerHandle, () => void>();
8
8
 
9
9
  export function setTimeout(callback: () => void, delay: number): TimerHandle {
10
10
  const callback_actual = () => {
11
- document.removeEventListener("visibilitychange", visibilityChangeListener);
11
+ window.removeEventListener("pageshow", onPageshow);
12
12
 
13
13
  clearByTimerHandle.delete(timerHandle);
14
14
 
@@ -24,26 +24,24 @@ export function setTimeout(callback: () => void, delay: number): TimerHandle {
24
24
 
25
25
  workerTimers.clearTimeout(timerHandle_n);
26
26
 
27
- document.removeEventListener("visibilitychange", visibilityChangeListener);
27
+ window.removeEventListener("pageshow", onPageshow);
28
28
  });
29
29
 
30
30
  const start = Date.now();
31
31
 
32
- const visibilityChangeListener = () => {
33
- if (document.visibilityState === "visible") {
34
- workerTimers.clearTimeout(timerHandle_n);
32
+ const onPageshow = () => {
33
+ workerTimers.clearTimeout(timerHandle_n);
35
34
 
36
- const elapsed = Date.now() - start;
35
+ const elapsed = Date.now() - start;
37
36
 
38
- if (elapsed < delay) {
39
- timerHandle_n = workerTimers.setTimeout(callback_actual, delay - elapsed);
40
- } else {
41
- callback_actual();
42
- }
37
+ if (elapsed < delay) {
38
+ timerHandle_n = workerTimers.setTimeout(callback_actual, delay - elapsed);
39
+ } else {
40
+ callback_actual();
43
41
  }
44
42
  };
45
43
 
46
- document.addEventListener("visibilitychange", visibilityChangeListener);
44
+ window.addEventListener("pageshow", onPageshow);
47
45
 
48
46
  return timerHandle;
49
47
  }
@@ -0,0 +1,12 @@
1
+ export type EphemeralSessionStorage = {
2
+ readonly length: number;
3
+ clear(): void;
4
+ getItem(key: string): string | null;
5
+ key(index: number): string | null;
6
+ removeItem(key: string): void;
7
+ setItem(key: string, value: string): void;
8
+ persistCurrentStateAndSubsequentChanges: () => void;
9
+ };
10
+ export declare function createEphemeralSessionStorage(params: {
11
+ sessionStorageTtlMs: number;
12
+ }): EphemeralSessionStorage;
@@ -2,10 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createEphemeralSessionStorage = createEphemeralSessionStorage;
4
4
  var tsafe_1 = require("../vendor/frontend/tsafe");
5
- var SessionStorageItem_Parsed;
6
- (function (SessionStorageItem_Parsed) {
7
- SessionStorageItem_Parsed.brand = "SessionStorageItem_Parsed";
8
- })(SessionStorageItem_Parsed || (SessionStorageItem_Parsed = {}));
9
5
  function parseSessionStorageItem(sessionStorageItemValue) {
10
6
  var json;
11
7
  try {
@@ -16,7 +12,7 @@ function parseSessionStorageItem(sessionStorageItemValue) {
16
12
  }
17
13
  if (!(0, tsafe_1.typeGuard)(json, json instanceof Object &&
18
14
  "__brand" in json &&
19
- json.__brand === SessionStorageItem_Parsed.brand)) {
15
+ json.__brand === (0, tsafe_1.id)("SessionStorageItem_Parsed-v1"))) {
20
16
  return undefined;
21
17
  }
22
18
  return json;
@@ -38,7 +34,7 @@ function createStoreInSessionStorageAndScheduleRemovalInMemoryItem(params) {
38
34
  };
39
35
  sessionStorage.removeItem(sessionStorageKey);
40
36
  sessionStorage.setItem(sessionStorageKey, JSON.stringify((0, tsafe_1.id)({
41
- __brand: "SessionStorageItem_Parsed",
37
+ __brand: "SessionStorageItem_Parsed-v1",
42
38
  value: value,
43
39
  expiresAtTime: Date.now() + remainingTtlMs
44
40
  })));
@@ -60,17 +56,28 @@ function createEphemeralSessionStorage(params) {
60
56
  continue;
61
57
  }
62
58
  var remainingTtlMs = sessionStorageItem_parsed.expiresAtTime - Date.now();
59
+ sessionStorage.removeItem(sessionStorageKey);
63
60
  if (remainingTtlMs <= 0) {
64
- sessionStorage.removeItem(sessionStorageKey);
65
61
  continue;
66
62
  }
67
- inMemoryItems.push(createStoreInSessionStorageAndScheduleRemovalInMemoryItem({
63
+ inMemoryItems.push({
68
64
  key: sessionStorageKey.slice(SESSION_STORAGE_PREFIX.length),
69
65
  value: sessionStorageItem_parsed.value,
70
- remainingTtlMs: remainingTtlMs
71
- }));
66
+ removeFromSessionStorage: undefined
67
+ });
72
68
  }
69
+ var isPersistenceEnabled = false;
73
70
  var storage = {
71
+ persistCurrentStateAndSubsequentChanges: function () {
72
+ isPersistenceEnabled = true;
73
+ for (var i = 0; i < storage.length; i++) {
74
+ var key = storage.key(i);
75
+ (0, tsafe_1.assert)(key !== null);
76
+ var value = storage.getItem(key);
77
+ (0, tsafe_1.assert)(value !== null);
78
+ storage.setItem(key, value);
79
+ }
80
+ },
74
81
  get length() {
75
82
  return inMemoryItems.length;
76
83
  },
@@ -115,11 +122,17 @@ function createEphemeralSessionStorage(params) {
115
122
  existingInMemoryItemIndex = inMemoryItems.indexOf(inMemoryItem);
116
123
  }
117
124
  }
118
- var inMemoryItem_new = createStoreInSessionStorageAndScheduleRemovalInMemoryItem({
119
- key: key,
120
- value: value,
121
- remainingTtlMs: sessionStorageTtlMs
122
- });
125
+ var inMemoryItem_new = isPersistenceEnabled
126
+ ? createStoreInSessionStorageAndScheduleRemovalInMemoryItem({
127
+ key: key,
128
+ value: value,
129
+ remainingTtlMs: sessionStorageTtlMs
130
+ })
131
+ : (0, tsafe_1.id)({
132
+ key: key,
133
+ value: value,
134
+ removeFromSessionStorage: undefined
135
+ });
123
136
  if (existingInMemoryItemIndex !== undefined) {
124
137
  inMemoryItems[existingInMemoryItemIndex] = inMemoryItem_new;
125
138
  }
@@ -130,4 +143,4 @@ function createEphemeralSessionStorage(params) {
130
143
  };
131
144
  return storage;
132
145
  }
133
- //# sourceMappingURL=ephemeralSessionStorage.js.map
146
+ //# sourceMappingURL=EphemeralSessionStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EphemeralSessionStorage.js","sourceRoot":"","sources":["../src/tools/EphemeralSessionStorage.ts"],"names":[],"mappings":";;AA6FA,sEAiIC;AA9ND,kDAAiE;AAQjE,SAAS,uBAAuB,CAC5B,uBAA+B;IAE/B,IAAI,IAAa,CAAC;IAElB,IAAI,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC/C,CAAC;IAAC,WAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IACI,CAAC,IAAA,iBAAS,EACN,IAAI,EACJ,IAAI,YAAY,MAAM;QAClB,SAAS,IAAI,IAAI;QACjB,IAAI,CAAC,OAAO,KAAK,IAAA,UAAE,EAAuC,8BAA8B,CAAC,CAChG,EACH,CAAC;QACC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAQD,IAAM,sBAAsB,GAAG,YAAY,CAAC;AAE5C,SAAS,yDAAyD,CAAC,MAIlE;IACW,IAAA,GAAG,GAA4B,MAAM,IAAlC,EAAE,KAAK,GAAqB,MAAM,MAA3B,EAAE,cAAc,GAAK,MAAM,eAAX,CAAY;IAE9C,IAAM,iBAAiB,GAAG,UAAG,sBAAsB,SAAG,GAAG,CAAE,CAAC;IAE5D,IAAM,wBAAwB,GAAG;QAC7B,YAAY,CAAC,wBAAwB,GAAG,SAAS,CAAC;QAClD,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,cAAc,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IACjD,CAAC,CAAC;IAEF,IAAM,KAAK,GAAG,UAAU,CAAC,cAAM,OAAA,wBAAwB,EAAE,EAA1B,CAA0B,EAAE,cAAc,CAAC,CAAC;IAE3E,IAAM,YAAY,GAAiB;QAC/B,GAAG,KAAA;QACH,KAAK,OAAA;QACL,wBAAwB,0BAAA;KAC3B,CAAC;IAEF,cAAc,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAE7C,cAAc,CAAC,OAAO,CAClB,iBAAiB,EACjB,IAAI,CAAC,SAAS,CACV,IAAA,UAAE,EAA4B;QAC1B,OAAO,EAAE,8BAA8B;QACvC,KAAK,OAAA;QACL,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc;KAC7C,CAAC,CACL,CACJ,CAAC;IAEF,OAAO,YAAY,CAAC;AACxB,CAAC;AAeD,SAAgB,6BAA6B,CAAC,MAE7C;IACW,IAAA,mBAAmB,GAAK,MAAM,oBAAX,CAAY;IAEvC,IAAM,aAAa,GAAmB,EAAE,CAAC;IAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,IAAM,iBAAiB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChD,IAAA,cAAM,EAAC,iBAAiB,KAAK,IAAI,CAAC,CAAC;QAEnC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACxD,SAAS;QACb,CAAC;QAED,IAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAErE,IAAA,cAAM,EAAC,kBAAkB,KAAK,IAAI,CAAC,CAAC;QAEpC,IAAM,yBAAyB,GAAG,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;QAE9E,IAAI,yBAAyB,KAAK,SAAS,EAAE,CAAC;YAC1C,SAAS;QACb,CAAC;QAED,IAAM,cAAc,GAAG,yBAAyB,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE5E,cAAc,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAE7C,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;YACtB,SAAS;QACb,CAAC;QAED,aAAa,CAAC,IAAI,CAAC;YACf,GAAG,EAAE,iBAAiB,CAAC,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC;YAC3D,KAAK,EAAE,yBAAyB,CAAC,KAAK;YACtC,wBAAwB,EAAE,SAAS;SACtC,CAAC,CAAC;IACP,CAAC;IAED,IAAI,oBAAoB,GAAG,KAAK,CAAC;IAEjC,IAAM,OAAO,GAA4B;QACrC,uCAAuC,EAAE;YACrC,oBAAoB,GAAG,IAAI,CAAC;YAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAA,cAAM,EAAC,GAAG,KAAK,IAAI,CAAC,CAAC;gBAErB,IAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEnC,IAAA,cAAM,EAAC,KAAK,KAAK,IAAI,CAAC,CAAC;gBAEvB,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAChC,CAAC;QACL,CAAC;QACD,IAAI,MAAM;YACN,OAAO,aAAa,CAAC,MAAM,CAAC;QAChC,CAAC;QACD,GAAG,EAAE,UAAA,KAAK;YACN,IAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YAE1C,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,OAAO,YAAY,CAAC,GAAG,CAAC;QAC5B,CAAC;QACD,UAAU,EAAE,UAAA,GAAG;;YACX,IAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,GAAG,KAAK,GAAG,EAAhB,CAAgB,CAAC,CAAC;YAElE,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC7B,OAAO;YACX,CAAC;YAED,MAAA,YAAY,CAAC,wBAAwB,4DAAI,CAAC;YAE1C,IAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAElD,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,KAAK,EAAE;YACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAA,cAAM,EAAC,GAAG,KAAK,IAAI,CAAC,CAAC;gBACrB,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC;QACD,OAAO,EAAE,UAAA,GAAG;YACR,IAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,GAAG,KAAK,GAAG,EAAhB,CAAgB,CAAC,CAAC;YAClE,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,OAAO,YAAY,CAAC,KAAK,CAAC;QAC9B,CAAC;QACD,OAAO,EAAE,UAAC,GAAG,EAAE,KAAK;;YAChB,IAAI,yBAAyB,GAAuB,SAAS,CAAC;YAE9D,CAAC;gBACG,IAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,GAAG,KAAK,GAAG,EAAhB,CAAgB,CAAC,CAAC;gBAElE,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;oBAC7B,MAAA,YAAY,CAAC,wBAAwB,4DAAI,CAAC;oBAC1C,yBAAyB,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBACpE,CAAC;YACL,CAAC;YAED,IAAM,gBAAgB,GAAG,oBAAoB;gBACzC,CAAC,CAAC,yDAAyD,CAAC;oBACtD,GAAG,KAAA;oBACH,KAAK,OAAA;oBACL,cAAc,EAAE,mBAAmB;iBACtC,CAAC;gBACJ,CAAC,CAAC,IAAA,UAAE,EAAe;oBACb,GAAG,KAAA;oBACH,KAAK,OAAA;oBACL,wBAAwB,EAAE,SAAS;iBACtC,CAAC,CAAC;YAET,IAAI,yBAAyB,KAAK,SAAS,EAAE,CAAC;gBAC1C,aAAa,CAAC,yBAAyB,CAAC,GAAG,gBAAgB,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACJ,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;KACJ,CAAC;IAEF,OAAO,OAAO,CAAC;AACnB,CAAC"}
package/tools/Evt.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ export type NonPostableEvt<T> = {
2
+ waitFor: () => Promise<T>;
3
+ subscribe: (next: (data: T) => void) => {
4
+ unsubscribe: () => void;
5
+ };
6
+ postCount: number;
7
+ };
8
+ export type Evt<T> = NonPostableEvt<T> & {
9
+ post: (data: T) => void;
10
+ };
11
+ export declare function createEvt<T>(): Evt<T>;
@@ -1,25 +1,41 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createAwaitableEventEmitter = createAwaitableEventEmitter;
3
+ exports.createEvt = createEvt;
4
4
  var Deferred_1 = require("./Deferred");
5
5
  var tsafe_1 = require("../vendor/frontend/tsafe");
6
- function createAwaitableEventEmitter() {
6
+ function createEvt() {
7
7
  var eventTarget = new EventTarget();
8
8
  var KEY = "event";
9
- return {
10
- waitFor: function () {
11
- var d = new Deferred_1.Deferred();
9
+ var postCount = 0;
10
+ var evt = {
11
+ subscribe: function (next) {
12
12
  var listener = function (e) {
13
13
  (0, tsafe_1.assert)((0, tsafe_1.is)(e));
14
- eventTarget.removeEventListener(KEY, listener);
15
- d.resolve(e.detail);
14
+ next(e.detail);
16
15
  };
17
16
  eventTarget.addEventListener(KEY, listener);
17
+ return {
18
+ unsubscribe: function () {
19
+ eventTarget.removeEventListener(KEY, listener);
20
+ }
21
+ };
22
+ },
23
+ waitFor: function () {
24
+ var d = new Deferred_1.Deferred();
25
+ var unsubscribe = evt.subscribe(function (data) {
26
+ unsubscribe();
27
+ d.resolve(data);
28
+ }).unsubscribe;
18
29
  return d.pr;
19
30
  },
20
31
  post: function (data) {
32
+ postCount++;
21
33
  eventTarget.dispatchEvent(new CustomEvent(KEY, { detail: data }));
34
+ },
35
+ get postCount() {
36
+ return postCount;
22
37
  }
23
38
  };
39
+ return evt;
24
40
  }
25
- //# sourceMappingURL=AwaitableEventEmitter.js.map
41
+ //# sourceMappingURL=Evt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Evt.js","sourceRoot":"","sources":["../src/tools/Evt.ts"],"names":[],"mappings":";;AAaA,8BA0CC;AAvDD,uCAAsC;AACtC,kDAAsD;AAYtD,SAAgB,SAAS;IACrB,IAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,IAAM,GAAG,GAAG,OAAO,CAAC;IAEpB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,IAAM,GAAG,GAAW;QAChB,SAAS,EAAE,UAAA,IAAI;YACX,IAAM,QAAQ,GAAG,UAAC,CAAQ;gBACtB,IAAA,cAAM,EAAC,IAAA,UAAE,EAAiB,CAAC,CAAC,CAAC,CAAC;gBAE9B,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACnB,CAAC,CAAC;YAEF,WAAW,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAE5C,OAAO;gBACH,WAAW,EAAE;oBACT,WAAW,CAAC,mBAAmB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACnD,CAAC;aACJ,CAAC;QACN,CAAC;QACD,OAAO,EAAE;YACL,IAAM,CAAC,GAAG,IAAI,mBAAQ,EAAK,CAAC;YAEpB,IAAA,WAAW,GAAK,GAAG,CAAC,SAAS,CAAC,UAAA,IAAI;gBACtC,WAAW,EAAE,CAAC;gBACd,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC,CAAC,YAHiB,CAGhB;YAEH,OAAO,CAAC,CAAC,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,EAAE,UAAC,IAAO;YACV,SAAS,EAAE,CAAC;YACZ,WAAW,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,SAAS;YACT,OAAO,SAAS,CAAC;QACrB,CAAC;KACJ,CAAC;IAEF,OAAO,GAAG,CAAC;AACf,CAAC"}
@@ -0,0 +1,12 @@
1
+ export type StatefulEvt<T> = {
2
+ current: T;
3
+ subscribe: (next: (data: T) => void) => Subscription;
4
+ };
5
+ export type StatefulReadonlyEvt<T> = {
6
+ readonly current: T;
7
+ subscribe: (next: (data: T) => void) => Subscription;
8
+ };
9
+ export type Subscription = {
10
+ unsubscribe: () => void;
11
+ };
12
+ export declare function createStatefulEvt<T>(getInitialValue: () => T): StatefulEvt<T>;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createStatefulEvt = createStatefulEvt;
4
+ function createStatefulEvt(getInitialValue) {
5
+ var nextFunctions = [];
6
+ var wrappedState = undefined;
7
+ return {
8
+ get current() {
9
+ if (wrappedState === undefined) {
10
+ wrappedState = [getInitialValue()];
11
+ }
12
+ return wrappedState[0];
13
+ },
14
+ set current(data) {
15
+ wrappedState = [data];
16
+ nextFunctions.forEach(function (next) { return next(data); });
17
+ },
18
+ subscribe: function (next) {
19
+ nextFunctions.push(next);
20
+ return { unsubscribe: function () { return nextFunctions.splice(nextFunctions.indexOf(next), 1); } };
21
+ }
22
+ };
23
+ }
24
+ //# sourceMappingURL=StatefulEvt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatefulEvt.js","sourceRoot":"","sources":["../src/tools/StatefulEvt.ts"],"names":[],"mappings":";;AAcA,8CAuBC;AAvBD,SAAgB,iBAAiB,CAAI,eAAwB;IACzD,IAAI,aAAa,GAA0B,EAAE,CAAC;IAE9C,IAAI,YAAY,GAAoB,SAAS,CAAC;IAE9C,OAAO;QACH,IAAI,OAAO;YACP,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC7B,YAAY,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,OAAO,CAAC,IAAO;YACf,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC;YAEtB,aAAa,CAAC,OAAO,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,IAAI,CAAC,EAAV,CAAU,CAAC,CAAC;QAC9C,CAAC;QACD,SAAS,EAAE,UAAC,IAAuB;YAC/B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEzB,OAAO,EAAE,WAAW,EAAE,cAAM,OAAA,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAApD,CAAoD,EAAE,CAAC;QACvF,CAAC;KACJ,CAAC;AACN,CAAC"}
@@ -17,6 +17,7 @@ var __read = (this && this.__read) || function (o, n) {
17
17
  };
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
19
  exports.parseKeycloakIssuerUri = parseKeycloakIssuerUri;
20
+ var toFullyQualifiedUrl_1 = require("./toFullyQualifiedUrl");
20
21
  /**
21
22
  * Return undefined if the issuerUri doesn't match the expected shape of a Keycloak issuerUri
22
23
  *
@@ -48,7 +49,10 @@ function parseKeycloakIssuerUri(issuerUri) {
48
49
  var clientId = _a.clientId, backToAppFromAccountUrl = _a.backToAppFromAccountUrl, locale = _a.locale;
49
50
  var accountUrlObj = new URL("".concat(url.origin).concat(kcHttpRelativePath, "/realms/").concat(realm, "/account"));
50
51
  accountUrlObj.searchParams.set("referrer", clientId);
51
- accountUrlObj.searchParams.set("referrer_uri", backToAppFromAccountUrl);
52
+ accountUrlObj.searchParams.set("referrer_uri", (0, toFullyQualifiedUrl_1.toFullyQualifiedUrl)({
53
+ urlish: backToAppFromAccountUrl,
54
+ doAssertNoQueryParams: false
55
+ }));
52
56
  if (locale !== undefined) {
53
57
  accountUrlObj.searchParams.set("kc_locale", locale);
54
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parseKeycloakIssuerUri.js","sourceRoot":"","sources":["../src/tools/parseKeycloakIssuerUri.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAeA,wDAuCC;AAtDD;;;;;;;;;;;;;;KAcK;AACL,SAAgB,sBAAsB,CAAC,SAAiB;IAcpD,IAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAE/B,IAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAE7C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACrB,CAAC;IAEK,IAAA,KAAA,OAA8B,KAAK,IAAA,EAAlC,kBAAkB,QAAA,EAAE,KAAK,QAAS,CAAC;IAE1C,OAAO;QACH,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,KAAK,OAAA;QACL,kBAAkB,EAAE,kBAAkB,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB;QAC9E,eAAe,EAAE,UAAG,GAAG,CAAC,MAAM,SAAG,kBAAkB,oBAAU,KAAK,aAAU;QAC5E,aAAa,EAAE,UAAC,EAA6C;gBAA3C,QAAQ,cAAA,EAAE,uBAAuB,6BAAA,EAAE,MAAM,YAAA;YACvD,IAAM,aAAa,GAAG,IAAI,GAAG,CAAC,UAAG,GAAG,CAAC,MAAM,SAAG,kBAAkB,qBAAW,KAAK,aAAU,CAAC,CAAC;YAC5F,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACrD,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC;YACxE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACvB,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,aAAa,CAAC,IAAI,CAAC;QAC9B,CAAC;KACJ,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"parseKeycloakIssuerUri.js","sourceRoot":"","sources":["../src/tools/parseKeycloakIssuerUri.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAiBA,wDA6CC;AA9DD,6DAA4D;AAE5D;;;;;;;;;;;;;;KAcK;AACL,SAAgB,sBAAsB,CAAC,SAAiB;IAcpD,IAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAE/B,IAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAE7C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACrB,CAAC;IAEK,IAAA,KAAA,OAA8B,KAAK,IAAA,EAAlC,kBAAkB,QAAA,EAAE,KAAK,QAAS,CAAC;IAE1C,OAAO;QACH,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,KAAK,OAAA;QACL,kBAAkB,EAAE,kBAAkB,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB;QAC9E,eAAe,EAAE,UAAG,GAAG,CAAC,MAAM,SAAG,kBAAkB,oBAAU,KAAK,aAAU;QAC5E,aAAa,EAAE,UAAC,EAA6C;gBAA3C,QAAQ,cAAA,EAAE,uBAAuB,6BAAA,EAAE,MAAM,YAAA;YACvD,IAAM,aAAa,GAAG,IAAI,GAAG,CAAC,UAAG,GAAG,CAAC,MAAM,SAAG,kBAAkB,qBAAW,KAAK,aAAU,CAAC,CAAC;YAC5F,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACrD,aAAa,CAAC,YAAY,CAAC,GAAG,CAC1B,cAAc,EACd,IAAA,yCAAmB,EAAC;gBAChB,MAAM,EAAE,uBAAuB;gBAC/B,qBAAqB,EAAE,KAAK;aAC/B,CAAC,CACL,CAAC;YACF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACvB,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,aAAa,CAAC,IAAI,CAAC;QAC9B,CAAC;KACJ,CAAC;AACN,CAAC"}
@@ -38,7 +38,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.subscribeToUserInteraction = subscribeToUserInteraction;
40
40
  var getPrUserInteraction_1 = require("./getPrUserInteraction");
41
- var workerTimers_1 = require("../tools/workerTimers");
42
41
  function subscribeToUserInteraction(params) {
43
42
  var throttleMs = params.throttleMs;
44
43
  var cleanups = new Set();
@@ -55,9 +54,9 @@ function subscribeToUserInteraction(params) {
55
54
  _b.sent();
56
55
  params.callback();
57
56
  return [4 /*yield*/, new Promise(function (resolve) {
58
- var timer = (0, workerTimers_1.setTimeout)(resolve, throttleMs);
57
+ var timer = setTimeout(resolve, throttleMs);
59
58
  cleanups.add(function () {
60
- (0, workerTimers_1.clearTimeout)(timer);
59
+ clearTimeout(timer);
61
60
  });
62
61
  })];
63
62
  case 2:
@@ -1 +1 @@
1
- {"version":3,"file":"subscribeToUserInteraction.js","sourceRoot":"","sources":["../src/tools/subscribeToUserInteraction.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,gEA8BC;AAjCD,+DAA8D;AAC9D,sDAAiE;AAEjE,SAAgB,0BAA0B,CAAC,MAAoD;IACnF,IAAA,UAAU,GAAK,MAAM,WAAX,CAAY;IAE9B,IAAM,QAAQ,GAAG,IAAI,GAAG,EAAc,CAAC;IAEvC,CAAC,SAAe,MAAM;;;;;;wBACZ,KAAiD,IAAA,2CAAoB,GAAE,EAArE,uBAAuB,6BAAA,EAAE,iBAAiB,uBAAA,CAA4B;wBAE9E,QAAQ,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;wBAEtC,qBAAM,iBAAiB,EAAA;;wBAAvB,SAAuB,CAAC;wBAExB,MAAM,CAAC,QAAQ,EAAE,CAAC;wBAElB,qBAAM,IAAI,OAAO,CAAO,UAAA,OAAO;gCAC3B,IAAM,KAAK,GAAG,IAAA,yBAAU,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gCAC9C,QAAQ,CAAC,GAAG,CAAC;oCACT,IAAA,2BAAY,EAAC,KAAK,CAAC,CAAC;gCACxB,CAAC,CAAC,CAAC;4BACP,CAAC,CAAC,EAAA;;wBALF,SAKE,CAAC;wBAEH,QAAQ,CAAC,KAAK,EAAE,CAAC;wBACjB,MAAM,EAAE,CAAC;;;;;KACZ,CAAC,EAAE,CAAC;IAEL,IAAM,8BAA8B,GAAG;QACnC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAA,OAAO,IAAI,OAAA,OAAO,EAAE,EAAT,CAAS,CAAC,CAAC;IACvD,CAAC,CAAC;IAEF,OAAO,EAAE,8BAA8B,gCAAA,EAAE,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"subscribeToUserInteraction.js","sourceRoot":"","sources":["../src/tools/subscribeToUserInteraction.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,gEA8BC;AAhCD,+DAA8D;AAE9D,SAAgB,0BAA0B,CAAC,MAAoD;IACnF,IAAA,UAAU,GAAK,MAAM,WAAX,CAAY;IAE9B,IAAM,QAAQ,GAAG,IAAI,GAAG,EAAc,CAAC;IAEvC,CAAC,SAAe,MAAM;;;;;;wBACZ,KAAiD,IAAA,2CAAoB,GAAE,EAArE,uBAAuB,6BAAA,EAAE,iBAAiB,uBAAA,CAA4B;wBAE9E,QAAQ,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;wBAEtC,qBAAM,iBAAiB,EAAA;;wBAAvB,SAAuB,CAAC;wBAExB,MAAM,CAAC,QAAQ,EAAE,CAAC;wBAElB,qBAAM,IAAI,OAAO,CAAO,UAAA,OAAO;gCAC3B,IAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gCAC9C,QAAQ,CAAC,GAAG,CAAC;oCACT,YAAY,CAAC,KAAK,CAAC,CAAC;gCACxB,CAAC,CAAC,CAAC;4BACP,CAAC,CAAC,EAAA;;wBALF,SAKE,CAAC;wBAEH,QAAQ,CAAC,KAAK,EAAE,CAAC;wBACjB,MAAM,EAAE,CAAC;;;;;KACZ,CAAC,EAAE,CAAC;IAEL,IAAM,8BAA8B,GAAG;QACnC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAA,OAAO,IAAI,OAAA,OAAO,EAAE,EAAT,CAAS,CAAC,CAAC;IACvD,CAAC,CAAC;IAEF,OAAO,EAAE,8BAA8B,gCAAA,EAAE,CAAC;AAC9C,CAAC"}
@@ -6,7 +6,7 @@ var worker_timers_1 = require("../vendor/frontend/worker-timers");
6
6
  var clearByTimerHandle = new WeakMap();
7
7
  function setTimeout(callback, delay) {
8
8
  var callback_actual = function () {
9
- document.removeEventListener("visibilitychange", visibilityChangeListener);
9
+ window.removeEventListener("pageshow", onPageshow);
10
10
  clearByTimerHandle.delete(timerHandle);
11
11
  callback();
12
12
  };
@@ -15,22 +15,20 @@ function setTimeout(callback, delay) {
15
15
  clearByTimerHandle.set(timerHandle, function () {
16
16
  clearByTimerHandle.delete(timerHandle);
17
17
  worker_timers_1.workerTimers.clearTimeout(timerHandle_n);
18
- document.removeEventListener("visibilitychange", visibilityChangeListener);
18
+ window.removeEventListener("pageshow", onPageshow);
19
19
  });
20
20
  var start = Date.now();
21
- var visibilityChangeListener = function () {
22
- if (document.visibilityState === "visible") {
23
- worker_timers_1.workerTimers.clearTimeout(timerHandle_n);
24
- var elapsed = Date.now() - start;
25
- if (elapsed < delay) {
26
- timerHandle_n = worker_timers_1.workerTimers.setTimeout(callback_actual, delay - elapsed);
27
- }
28
- else {
29
- callback_actual();
30
- }
21
+ var onPageshow = function () {
22
+ worker_timers_1.workerTimers.clearTimeout(timerHandle_n);
23
+ var elapsed = Date.now() - start;
24
+ if (elapsed < delay) {
25
+ timerHandle_n = worker_timers_1.workerTimers.setTimeout(callback_actual, delay - elapsed);
26
+ }
27
+ else {
28
+ callback_actual();
31
29
  }
32
30
  };
33
- document.addEventListener("visibilitychange", visibilityChangeListener);
31
+ window.addEventListener("pageshow", onPageshow);
34
32
  return timerHandle;
35
33
  }
36
34
  function clearTimeout(handle) {
@@ -1 +1 @@
1
- {"version":3,"file":"workerTimers.js","sourceRoot":"","sources":["../src/tools/workerTimers.ts"],"names":[],"mappings":";;AAQA,gCAwCC;AAED,oCAQC;AA1DD,kEAAgE;AAMhE,IAAM,kBAAkB,GAAG,IAAI,OAAO,EAA2B,CAAC;AAElE,SAAgB,UAAU,CAAC,QAAoB,EAAE,KAAa;IAC1D,IAAM,eAAe,GAAG;QACpB,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,CAAC;QAE3E,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAEvC,QAAQ,EAAE,CAAC;IACf,CAAC,CAAC;IAEF,IAAI,aAAa,GAAG,4BAAY,CAAC,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAEpE,IAAM,WAAW,GAAgB,EAAS,CAAC;IAE3C,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE;QAChC,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAEvC,4BAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAEzC,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,IAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEzB,IAAM,wBAAwB,GAAG;QAC7B,IAAI,QAAQ,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACzC,4BAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YAEzC,IAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YAEnC,IAAI,OAAO,GAAG,KAAK,EAAE,CAAC;gBAClB,aAAa,GAAG,4BAAY,CAAC,UAAU,CAAC,eAAe,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC;YAC9E,CAAC;iBAAM,CAAC;gBACJ,eAAe,EAAE,CAAC;YACtB,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IAEF,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,CAAC;IAExE,OAAO,WAAW,CAAC;AACvB,CAAC;AAED,SAAgB,YAAY,CAAC,MAAmB;IAC5C,IAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE7C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO;IACX,CAAC;IAED,KAAK,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"workerTimers.js","sourceRoot":"","sources":["../src/tools/workerTimers.ts"],"names":[],"mappings":";;AAQA,gCAsCC;AAED,oCAQC;AAxDD,kEAAgE;AAMhE,IAAM,kBAAkB,GAAG,IAAI,OAAO,EAA2B,CAAC;AAElE,SAAgB,UAAU,CAAC,QAAoB,EAAE,KAAa;IAC1D,IAAM,eAAe,GAAG;QACpB,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAEnD,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAEvC,QAAQ,EAAE,CAAC;IACf,CAAC,CAAC;IAEF,IAAI,aAAa,GAAG,4BAAY,CAAC,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAEpE,IAAM,WAAW,GAAgB,EAAS,CAAC;IAE3C,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE;QAChC,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAEvC,4BAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAEzC,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEzB,IAAM,UAAU,GAAG;QACf,4BAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAEzC,IAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAEnC,IAAI,OAAO,GAAG,KAAK,EAAE,CAAC;YAClB,aAAa,GAAG,4BAAY,CAAC,UAAU,CAAC,eAAe,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACJ,eAAe,EAAE,CAAC;QACtB,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAEhD,OAAO,WAAW,CAAC;AACvB,CAAC;AAED,SAAgB,YAAY,CAAC,MAAmB;IAC5C,IAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE7C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO;IACX,CAAC;IAED,KAAK,EAAE,CAAC;AACZ,CAAC"}
@@ -1,13 +0,0 @@
1
- declare const GLOBAL_CONTEXT_KEY = "__oidc-spa.createIsUserActive.globalContext";
2
- declare global {
3
- interface Window {
4
- [GLOBAL_CONTEXT_KEY]: {
5
- appInstanceId: string;
6
- };
7
- }
8
- }
9
- export declare function create$isUserActive(params: {
10
- configId: string;
11
- sessionId: string | undefined;
12
- }): import("../tools/StatefulObservable").StatefulObservable<boolean>;
13
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"isUserActive.js","sourceRoot":"","sources":["../src/oidc/isUserActive.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- import { Deferred } from "./Deferred";
2
- import { assert, is } from "../vendor/frontend/tsafe";
3
-
4
- export type AwaitableEventEmitter<T> = {
5
- waitFor: () => Promise<T>;
6
- post: (data: T) => void;
7
- };
8
-
9
- export function createAwaitableEventEmitter<T>(): AwaitableEventEmitter<T> {
10
- const eventTarget = new EventTarget();
11
- const KEY = "event";
12
-
13
- return {
14
- waitFor: () => {
15
- const d = new Deferred<T>();
16
-
17
- const listener = (e: Event) => {
18
- assert(is<CustomEvent<T>>(e));
19
-
20
- eventTarget.removeEventListener(KEY, listener);
21
-
22
- d.resolve(e.detail);
23
- };
24
-
25
- eventTarget.addEventListener(KEY, listener);
26
-
27
- return d.pr;
28
- },
29
- post: (data: T) => {
30
- eventTarget.dispatchEvent(new CustomEvent(KEY, { detail: data }));
31
- }
32
- };
33
- }
@@ -1,52 +0,0 @@
1
- export type StatefulObservable<T> = {
2
- current: T;
3
- subscribe: (next: (data: T) => void) => Subscription;
4
- };
5
-
6
- export type StatefulReadonlyObservable<T> = {
7
- readonly current: T;
8
- subscribe: (next: (data: T) => void) => Subscription;
9
- };
10
-
11
- export type Subscription = {
12
- unsubscribe(): void;
13
- };
14
-
15
- export function createStatefulObservable<T>(getInitialValue: () => T): StatefulObservable<T> {
16
- let nextFunctions: ((data: T) => void)[] = [];
17
-
18
- const { get, set } = (() => {
19
- let wrappedState: [T] | undefined = undefined;
20
-
21
- return {
22
- get: () => {
23
- if (wrappedState === undefined) {
24
- wrappedState = [getInitialValue()];
25
- }
26
- return wrappedState[0];
27
- },
28
- set: (data: T) => {
29
- wrappedState = [data];
30
-
31
- nextFunctions.forEach(next => next(data));
32
- }
33
- };
34
- })();
35
-
36
- return Object.defineProperty(
37
- {
38
- current: null as any as T,
39
- subscribe: (next: (data: T) => void) => {
40
- nextFunctions.push(next);
41
-
42
- return { unsubscribe: () => nextFunctions.splice(nextFunctions.indexOf(next), 1) };
43
- }
44
- },
45
- "current",
46
- {
47
- enumerable: true,
48
- get,
49
- set
50
- }
51
- );
52
- }
@@ -1,5 +0,0 @@
1
- export type AwaitableEventEmitter<T> = {
2
- waitFor: () => Promise<T>;
3
- post: (data: T) => void;
4
- };
5
- export declare function createAwaitableEventEmitter<T>(): AwaitableEventEmitter<T>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"AwaitableEventEmitter.js","sourceRoot":"","sources":["../src/tools/AwaitableEventEmitter.ts"],"names":[],"mappings":";;AAQA,kEAwBC;AAhCD,uCAAsC;AACtC,kDAAsD;AAOtD,SAAgB,2BAA2B;IACvC,IAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,IAAM,GAAG,GAAG,OAAO,CAAC;IAEpB,OAAO;QACH,OAAO,EAAE;YACL,IAAM,CAAC,GAAG,IAAI,mBAAQ,EAAK,CAAC;YAE5B,IAAM,QAAQ,GAAG,UAAC,CAAQ;gBACtB,IAAA,cAAM,EAAC,IAAA,UAAE,EAAiB,CAAC,CAAC,CAAC,CAAC;gBAE9B,WAAW,CAAC,mBAAmB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAE/C,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC,CAAC;YAEF,WAAW,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAE5C,OAAO,CAAC,CAAC,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,EAAE,UAAC,IAAO;YACV,WAAW,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACtE,CAAC;KACJ,CAAC;AACN,CAAC"}
@@ -1,12 +0,0 @@
1
- export type StatefulObservable<T> = {
2
- current: T;
3
- subscribe: (next: (data: T) => void) => Subscription;
4
- };
5
- export type StatefulReadonlyObservable<T> = {
6
- readonly current: T;
7
- subscribe: (next: (data: T) => void) => Subscription;
8
- };
9
- export type Subscription = {
10
- unsubscribe(): void;
11
- };
12
- export declare function createStatefulObservable<T>(getInitialValue: () => T): StatefulObservable<T>;
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createStatefulObservable = createStatefulObservable;
4
- function createStatefulObservable(getInitialValue) {
5
- var nextFunctions = [];
6
- var _a = (function () {
7
- var wrappedState = undefined;
8
- return {
9
- get: function () {
10
- if (wrappedState === undefined) {
11
- wrappedState = [getInitialValue()];
12
- }
13
- return wrappedState[0];
14
- },
15
- set: function (data) {
16
- wrappedState = [data];
17
- nextFunctions.forEach(function (next) { return next(data); });
18
- }
19
- };
20
- })(), get = _a.get, set = _a.set;
21
- return Object.defineProperty({
22
- current: null,
23
- subscribe: function (next) {
24
- nextFunctions.push(next);
25
- return { unsubscribe: function () { return nextFunctions.splice(nextFunctions.indexOf(next), 1); } };
26
- }
27
- }, "current", {
28
- enumerable: true,
29
- get: get,
30
- set: set
31
- });
32
- }
33
- //# sourceMappingURL=StatefulObservable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StatefulObservable.js","sourceRoot":"","sources":["../src/tools/StatefulObservable.ts"],"names":[],"mappings":";;AAcA,4DAqCC;AArCD,SAAgB,wBAAwB,CAAI,eAAwB;IAChE,IAAI,aAAa,GAA0B,EAAE,CAAC;IAExC,IAAA,KAAe,CAAC;QAClB,IAAI,YAAY,GAAoB,SAAS,CAAC;QAE9C,OAAO;YACH,GAAG,EAAE;gBACD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;oBAC7B,YAAY,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;gBACvC,CAAC;gBACD,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;YACD,GAAG,EAAE,UAAC,IAAO;gBACT,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC;gBAEtB,aAAa,CAAC,OAAO,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,IAAI,CAAC,EAAV,CAAU,CAAC,CAAC;YAC9C,CAAC;SACJ,CAAC;IACN,CAAC,CAAC,EAAE,EAhBI,GAAG,SAAA,EAAE,GAAG,SAgBZ,CAAC;IAEL,OAAO,MAAM,CAAC,cAAc,CACxB;QACI,OAAO,EAAE,IAAgB;QACzB,SAAS,EAAE,UAAC,IAAuB;YAC/B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEzB,OAAO,EAAE,WAAW,EAAE,cAAM,OAAA,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAApD,CAAoD,EAAE,CAAC;QACvF,CAAC;KACJ,EACD,SAAS,EACT;QACI,UAAU,EAAE,IAAI;QAChB,GAAG,KAAA;QACH,GAAG,KAAA;KACN,CACJ,CAAC;AACN,CAAC"}
@@ -1,3 +0,0 @@
1
- export declare function createEphemeralSessionStorage(params: {
2
- sessionStorageTtlMs: number;
3
- }): Storage;
@@ -1 +0,0 @@
1
- {"version":3,"file":"ephemeralSessionStorage.js","sourceRoot":"","sources":["../src/tools/ephemeralSessionStorage.ts"],"names":[],"mappings":"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"}