@verdocs/js-sdk 1.3.3 → 1.4.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.
package/Users/Auth.d.ts CHANGED
@@ -93,3 +93,8 @@ export declare const loadSession: (source: string) => IActiveSession | ISigningS
93
93
  * End the active session.
94
94
  */
95
95
  export declare const endSession: (source: string, persist?: boolean) => null;
96
+ export declare type SessionChangedListener = (source: string, session: IActiveSession | ISigningSession | null) => void;
97
+ /**
98
+ * Subscribe to session state change events.
99
+ */
100
+ export declare const onSessionChanged: (listener: SessionChangedListener) => () => void;
package/Users/Auth.js CHANGED
@@ -107,6 +107,7 @@ var clearSession = function (source, persist) {
107
107
  if (persist) {
108
108
  localStorage.removeItem(source);
109
109
  }
110
+ notifySessionListeners(source, null);
110
111
  return null;
111
112
  };
112
113
  /**
@@ -125,6 +126,7 @@ export var setSession = function (source, token, persist) {
125
126
  localStorage.setItem(source, token);
126
127
  }
127
128
  getEndpoint().setAuthorization(token);
129
+ notifySessionListeners(source, session);
128
130
  return session;
129
131
  };
130
132
  /**
@@ -144,6 +146,7 @@ export var loadSession = function (source) {
144
146
  return null;
145
147
  }
146
148
  getEndpoint().setAuthorization(token);
149
+ notifySessionListeners(source, session);
147
150
  return session;
148
151
  };
149
152
  /**
@@ -153,3 +156,27 @@ export var endSession = function (source, persist) {
153
156
  if (persist === void 0) { persist = false; }
154
157
  return clearSession(source, persist);
155
158
  };
159
+ var sessionChangedListeners = new Map();
160
+ var nextListenerId = 1;
161
+ /**
162
+ * Subscribe to session state change events.
163
+ */
164
+ export var onSessionChanged = function (listener) {
165
+ // There's no value in randomizing this so we don't
166
+ var listenerId = ++nextListenerId;
167
+ var listenerSymbol = Symbol.for('' + listenerId);
168
+ sessionChangedListeners.set(listenerSymbol, listener);
169
+ return function () {
170
+ sessionChangedListeners.delete(listenerSymbol);
171
+ };
172
+ };
173
+ var notifySessionListeners = function (source, session) {
174
+ sessionChangedListeners.forEach(function (listener) {
175
+ try {
176
+ listener(source, session);
177
+ }
178
+ catch (e) {
179
+ // NOOP
180
+ }
181
+ });
182
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdocs/js-sdk",
3
- "version": "1.3.3",
3
+ "version": "1.4.0",
4
4
  "private": false,
5
5
  "homepage": "https://github.com/Verdocs/js-sdk",
6
6
  "description": "Verdocs JS SDK",