@cubist-labs/cubesigner-sdk-browser-storage 0.4.89-0 → 0.4.97-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/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -14
- package/dist/locks.d.ts +4 -4
- package/dist/locks.d.ts.map +1 -1
- package/dist/locks.js +6 -5
- package/package.json +4 -4
- package/src/index.ts +20 -15
- package/src/locks.ts +5 -7
package/dist/index.d.ts
CHANGED
|
@@ -11,23 +11,26 @@ export declare class BrowserStorageManager extends EventEmitter<BrowserStorageEv
|
|
|
11
11
|
#private;
|
|
12
12
|
/**
|
|
13
13
|
*
|
|
14
|
-
* @param
|
|
15
|
-
* @param
|
|
14
|
+
* @param key The storage key to use
|
|
15
|
+
* @param storage The storage object to use (defaults to localStorage)
|
|
16
16
|
*/
|
|
17
17
|
constructor(key: string, storage?: Storage);
|
|
18
18
|
/**
|
|
19
19
|
* Loads the metadata for a session from storage
|
|
20
|
-
*
|
|
20
|
+
*
|
|
21
|
+
* @returns The session metadata
|
|
21
22
|
*/
|
|
22
23
|
metadata(): Promise<SessionMetadata>;
|
|
23
24
|
/**
|
|
24
25
|
* Loads the current access token from storage
|
|
25
|
-
*
|
|
26
|
+
*
|
|
27
|
+
* @returns The access token
|
|
26
28
|
*/
|
|
27
29
|
token(): Promise<string>;
|
|
28
30
|
/**
|
|
29
31
|
* Directly set the session (updating all consumers of the session storage)
|
|
30
|
-
*
|
|
32
|
+
*
|
|
33
|
+
* @param session The new session
|
|
31
34
|
*/
|
|
32
35
|
setSession(session?: SessionData): Promise<any>;
|
|
33
36
|
}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,EACL,YAAY,EAOb,MAAM,6BAA6B,CAAC;AAGrC,KAAK,oBAAoB,GAAG;IAC1B,MAAM,IAAI,IAAI,CAAC;IACf,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,qBAAa,qBACX,SAAQ,YAAY,CAAC,oBAAoB,CACzC,YAAW,cAAc;;IAOzB;;;;OAIG;gBACS,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,OAAiC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,EACL,YAAY,EAOb,MAAM,6BAA6B,CAAC;AAGrC,KAAK,oBAAoB,GAAG;IAC1B,MAAM,IAAI,IAAI,CAAC;IACf,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,qBAAa,qBACX,SAAQ,YAAY,CAAC,oBAAoB,CACzC,YAAW,cAAc;;IAOzB;;;;OAIG;gBACS,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,OAAiC;IA4CnE;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,eAAe,CAAC;IAQ1C;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IA8B9B;;;;OAIG;IACG,UAAU,CAAC,OAAO,CAAC,EAAE,WAAW;CAwBvC"}
|
package/dist/index.js
CHANGED
|
@@ -21,8 +21,8 @@ const locks_1 = require("./locks");
|
|
|
21
21
|
class BrowserStorageManager extends cubesigner_sdk_1.EventEmitter {
|
|
22
22
|
/**
|
|
23
23
|
*
|
|
24
|
-
* @param
|
|
25
|
-
* @param
|
|
24
|
+
* @param key The storage key to use
|
|
25
|
+
* @param storage The storage object to use (defaults to localStorage)
|
|
26
26
|
*/
|
|
27
27
|
constructor(key, storage = globalThis.localStorage) {
|
|
28
28
|
super();
|
|
@@ -33,18 +33,19 @@ class BrowserStorageManager extends cubesigner_sdk_1.EventEmitter {
|
|
|
33
33
|
_BrowserStorageManager_lock.set(this, void 0);
|
|
34
34
|
__classPrivateFieldSet(this, _BrowserStorageManager_key, key, "f");
|
|
35
35
|
__classPrivateFieldSet(this, _BrowserStorageManager_storage, storage, "f");
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
36
|
+
__classPrivateFieldSet(this, _BrowserStorageManager_lock, `CS_SDK_STORAGE_LOCK_${key}`, "f");
|
|
37
|
+
// Set up listeners to emit events when users log in or log out
|
|
38
|
+
window.addEventListener("storage", (ev) => {
|
|
39
|
+
// We only care about events on our storage object, using our key
|
|
40
|
+
if (ev.storageArea !== storage || ev.key !== key)
|
|
41
|
+
return;
|
|
42
|
+
__classPrivateFieldGet(this, _BrowserStorageManager_instances, "m", _BrowserStorageManager_emitIfNecessary).call(this, ev.oldValue, ev.newValue);
|
|
43
|
+
});
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
46
|
* Loads the metadata for a session from storage
|
|
47
|
-
*
|
|
47
|
+
*
|
|
48
|
+
* @returns The session metadata
|
|
48
49
|
*/
|
|
49
50
|
async metadata() {
|
|
50
51
|
const sess = __classPrivateFieldGet(this, _BrowserStorageManager_instances, "m", _BrowserStorageManager_loadSession).call(this);
|
|
@@ -55,7 +56,8 @@ class BrowserStorageManager extends cubesigner_sdk_1.EventEmitter {
|
|
|
55
56
|
}
|
|
56
57
|
/**
|
|
57
58
|
* Loads the current access token from storage
|
|
58
|
-
*
|
|
59
|
+
*
|
|
60
|
+
* @returns The access token
|
|
59
61
|
*/
|
|
60
62
|
async token() {
|
|
61
63
|
const sess = await (0, locks_1.readTestAndSet)(__classPrivateFieldGet(this, _BrowserStorageManager_lock, "f"), {
|
|
@@ -89,7 +91,8 @@ class BrowserStorageManager extends cubesigner_sdk_1.EventEmitter {
|
|
|
89
91
|
}
|
|
90
92
|
/**
|
|
91
93
|
* Directly set the session (updating all consumers of the session storage)
|
|
92
|
-
*
|
|
94
|
+
*
|
|
95
|
+
* @param session The new session
|
|
93
96
|
*/
|
|
94
97
|
async setSession(session) {
|
|
95
98
|
return await navigator.locks.request(__classPrivateFieldGet(this, _BrowserStorageManager_lock, "f"), {
|
|
@@ -127,4 +130,4 @@ _BrowserStorageManager_key = new WeakMap(), _BrowserStorageManager_storage = new
|
|
|
127
130
|
}
|
|
128
131
|
return JSON.parse(stored);
|
|
129
132
|
};
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsZ0VBUXFDO0FBQ3JDLG1DQUF5QztBQU96Qzs7R0FFRztBQUNILE1BQWEscUJBQ1gsU0FBUSw2QkFBa0M7SUFRMUM7Ozs7T0FJRztJQUNILFlBQVksR0FBVyxFQUFFLFVBQW1CLFVBQVUsQ0FBQyxZQUFZO1FBQ2pFLEtBQUssRUFBRSxDQUFDOztRQVhWLDJDQUEyQztRQUMzQyw2Q0FBYTtRQUNiLGlEQUFrQjtRQUNsQiw4Q0FBYztRQVNaLHVCQUFBLElBQUksOEJBQVEsR0FBRyxNQUFBLENBQUM7UUFDaEIsdUJBQUEsSUFBSSxrQ0FBWSxPQUFPLE1BQUEsQ0FBQztRQUN4QixDQUFDLHVCQUFBLElBQUksK0JBQVMsdUJBQXVCLEdBQUcsRUFBRSxNQUFBLENBQUM7WUFDekMsK0RBQStEO1lBQy9ELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtnQkFDeEMsaUVBQWlFO2dCQUNqRSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEtBQUssT0FBTyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEtBQUssR0FBRztvQkFBRSxPQUFPO2dCQUN6RCx1QkFBQSxJQUFJLGdGQUFpQixNQUFyQixJQUFJLEVBQWtCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQStCRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsUUFBUTtRQUNaLE1BQU0sSUFBSSxHQUFHLHVCQUFBLElBQUksNEVBQWEsTUFBakIsSUFBSSxDQUFlLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsTUFBTSxJQUFJLG9DQUFtQixFQUFFLENBQUM7UUFDbEMsQ0FBQztRQUNELE9BQU8sSUFBQSx5QkFB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QUFRLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWxJRCxzREFrSUM7b1JBbEdrQixRQUF1QixFQUFFLFFBQXVCO0lBQy9ELElBQUksUUFBUSxLQUFLLElBQUksSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsdURBQXVEO1NBQ2xELElBQUksUUFBUSxLQUFLLElBQUksSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQixDQUFDO0FBQ0gsQ0FBQztJQU9DLE1BQU0sTUFBTSxHQUFHLHVCQUFBLElBQUksc0NBQVMsQ0FBQyxPQUFPLENBQUMsdUJBQUEsSUFBSSxrQ0FBSyxDQUFDLENBQUM7SUFDaEQsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDcEIsT0FBTztJQUNULENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2Vzc2lvbkRhdGEsIFNlc3Npb25NYW5hZ2VyLCBTZXNzaW9uTWV0YWRhdGEgfSBmcm9tIFwiQGN1YmlzdC1sYWJzL2N1YmVzaWduZXItc2RrXCI7XG5pbXBvcnQge1xuICBFdmVudEVtaXR0ZXIsXG4gIE5vU2Vzc2lvbkZvdW5kRXJyb3IsXG4gIGlzU3RhbGUsXG4gIGlzUmVmcmVzaGFibGUsXG4gIG1ldGFkYXRhLFxuICByZWZyZXNoLFxuICBFcnJSZXNwb25zZSxcbn0gZnJvbSBcIkBjdWJpc3QtbGFicy9jdWJlc2lnbmVyLXNka1wiO1xuaW1wb3J0IHsgcmVhZFRlc3RBbmRTZXQgfSBmcm9tIFwiLi9sb2Nrc1wiO1xuXG50eXBlIEJyb3dzZXJTdG9yYWdlRXZlbnRzID0ge1xuICBsb2dvdXQoKTogdm9pZDtcbiAgbG9naW4oKTogdm9pZDtcbn07XG5cbi8qKlxuICogQSBtYW5hZ2VyIHRoYXQgcGVyc2lzdHMgaW50byBicm93c2VyIHN0b3JhZ2UgYW5kIHVzZXMgd2VibG9ja3MgdG8gc2FmZWx5IHBlcmZvcm0gcmVmcmVzaGVzXG4gKi9cbmV4cG9ydCBjbGFzcyBCcm93c2VyU3RvcmFnZU1hbmFnZXJcbiAgZXh0ZW5kcyBFdmVudEVtaXR0ZXI8QnJvd3NlclN0b3JhZ2VFdmVudHM+XG4gIGltcGxlbWVudHMgU2Vzc2lvbk1hbmFnZXJcbntcbiAgLyoqIFRoZSBzdG9yYWdlIGtleSBmb3IgdGhlIHNlc3Npb24gZGF0YSAqL1xuICAja2V5OiBzdHJpbmc7XG4gICNzdG9yYWdlOiBTdG9yYWdlO1xuICAjbG9jazogc3RyaW5nO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBzdG9yYWdlIGtleSB0byB1c2VcbiAgICogQHBhcmFtIHtTdG9yYWdlfSBbc3RvcmFnZV0gVGhlIHN0b3JhZ2Ugb2JqZWN0IHRvIHVzZSAoZGVmYXVsdHMgdG8gbG9jYWxTdG9yYWdlKVxuICAgKi9cbiAgY29uc3RydWN0b3Ioa2V5OiBzdHJpbmcsIHN0b3JhZ2U6IFN0b3JhZ2UgPSBnbG9iYWxUaGlzLmxvY2FsU3RvcmFnZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy4ja2V5ID0ga2V5O1xuICAgIHRoaXMuI3N0b3JhZ2UgPSBzdG9yYWdlO1xuICAgICh0aGlzLiNsb2NrID0gYENTX1NES19TVE9SQUdFX0xPQ0tfJHtrZXl9YCksXG4gICAgICAvLyBTZXQgdXAgbGlzdGVuZXJzIHRvIGVtaXQgZXZlbnRzIHdoZW4gdXNlcnMgbG9nIGluIG9yIGxvZyBvdXRcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwic3RvcmFnZVwiLCAoZXYpID0+IHtcbiAgICAgICAgLy8gV2Ugb25seSBjYXJlIGFib3V0IGV2ZW50cyBvbiBvdXIgc3RvcmFnZSBvYmplY3QsIHVzaW5nIG91ciBrZXlcbiAgICAgICAgaWYgKGV2LnN0b3JhZ2VBcmVhICE9PSBzdG9yYWdlIHx8IGV2LmtleSAhPT0ga2V5KSByZXR1cm47XG4gICAgICAgIHRoaXMuI2VtaXRJZk5lY2Vzc2FyeShldi5vbGRWYWx1ZSwgZXYubmV3VmFsdWUpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYSBgbG9naW5gIG9yIGBsb2dvdXRgIGV2ZW50IGlmIG5lY2Vzc2FyeVxuICAgKiBAcGFyYW0ge251bGwgfCBzdHJpbmd9IG9sZFZhbHVlIFRoZSBwcmV2aW91c2x5IHN0b3JlZCB2YWx1ZVxuICAgKiBAcGFyYW0ge251bGwgfCBzdHJpbmd9IG5ld1ZhbHVlIFRoZSBuZXdseSBzdG9yZWQgdmFsdWVcbiAgICovXG4gICNlbWl0SWZOZWNlc3Nhcnkob2xkVmFsdWU6IG51bGwgfCBzdHJpbmcsIG5ld1ZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgaWYgKG5ld1ZhbHVlID09PSBudWxsICYmIG9sZFZhbHVlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLmVtaXQoXCJsb2dvdXRcIik7XG4gICAgfVxuXG4gICAgLy8gVGhlcmUgaXMgbm93IGEgc2Vzc2lvbiB3aGVuIHRoZXJlIGRpZG4ndCB1c2VkIHRvIGJlLlxuICAgIGVsc2UgaWYgKG9sZFZhbHVlID09PSBudWxsICYmIG5ld1ZhbHVlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLmVtaXQoXCJsb2dpblwiKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgYSBzZXNzaW9uIGZyb20gdGhlIGNvbmZpZ3VyZWQgc3RvcmFnZSBhdCB0aGUgY29uZmlndXJlZCBrZXlcbiAgICogQHJldHVybiB7U2Vzc2lvbkRhdGEgfCB1bmRlZmluZWR9IFRoZSBzdG9yZWQgZGF0YSBvciB1bmRlZmluZWQgaWYgbm90IHByZXNlbnRcbiAgICovXG4gICNsb2FkU2Vzc2lvbigpOiBTZXNzaW9uRGF0YSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgc3RvcmVkID0gdGhpcy4jc3RvcmFnZS5nZXRJdGVtKHRoaXMuI2tleSk7XG4gICAgaWYgKHN0b3JlZCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBKU09OLnBhcnNlKHN0b3JlZCk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIG1ldGFkYXRhIGZvciBhIHNlc3Npb24gZnJvbSBzdG9yYWdlXG4gICAqIEByZXR1cm4ge1Nlc3Npb25NZXRhZGF0YX0gVGhlIHNlc3Npb24gbWV0YWRhdGFcbiAgICovXG4gIGFzeW5jIG1ldGFkYXRhKCk6IFByb21pc2U8U2Vzc2lvbk1ldGFkYXRhPiB7XG4gICAgY29uc3Qgc2VzcyA9IHRoaXMuI2xvYWRTZXNzaW9uKCk7XG4gICAgaWYgKCFzZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgTm9TZXNzaW9uRm91bmRFcnJvcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWV0YWRhdGEoc2Vzcyk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIGN1cnJlbnQgYWNjZXNzIHRva2VuIGZyb20gc3RvcmFnZVxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBhY2Nlc3MgdG9rZW5cbiAgICovXG4gIGFzeW5jIHRva2VuKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3Qgc2VzcyA9IGF3YWl0IHJlYWRUZXN0QW5kU2V0PFNlc3Npb25EYXRhIHwgdW5kZWZpbmVkPih0aGlzLiNsb2NrLCB7XG4gICAgICByZWFkOiAoKSA9PiB0aGlzLiNsb2FkU2Vzc2lvbigpLFxuICAgICAgdGVzdDogKHYpID0+IHYgIT09IHVuZGVmaW5lZCAmJiBpc1N0YWxlKHYpLFxuICAgICAgc2V0OiBhc3luYyAob2xkU2Vzc2lvbjogU2Vzc2lvbkRhdGEpID0+IHtcbiAgICAgICAgaWYgKGlzUmVmcmVzaGFibGUob2xkU2Vzc2lvbikpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgbmV3U2Vzc2lvbiA9IGF3YWl0IHJlZnJlc2gob2xkU2Vzc2lvbik7XG4gICAgICAgICAgICB0aGlzLiNzdG9yYWdlLnNldEl0ZW0odGhpcy4ja2V5LCBKU09OLnN0cmluZ2lmeShuZXdTZXNzaW9uKSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIlN1Y2Nlc3NmdWxseSByZWZyZXNoZWRcIik7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJSZXNwb25zZSAmJiBlLnN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICAgICAgICAgIHRoaXMuI3N0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLiNrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJZiB0aGUgc2Vzc2lvbiBpcyBub3QgcmVmcmVzaGFibGUsIHdlIHNob3VsZCByZW1vdmUgaXRcbiAgICAgICAgICB0aGlzLiNzdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy4ja2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE5vdGlmeSB0aGF0IHRoZSBzZXNzaW9uIGhhcyBjaGFuZ2VkXG4gICAgICAgIHRoaXMuI2VtaXRJZk5lY2Vzc2FyeShcIlwiLCB0aGlzLiNzdG9yYWdlLmdldEl0ZW0odGhpcy4ja2V5KSk7XG4gICAgICB9LFxuICAgIH0pO1xuICAgIGlmICghc2Vzcykge1xuICAgICAgdGhyb3cgbmV3IE5vU2Vzc2lvbkZvdW5kRXJyb3IoKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlc3MudG9rZW47XG4gIH1cblxuICAvKipcbiAgICogRGlyZWN0bHkgc2V0IHRoZSBzZXNzaW9uICh1cGRhdGluZyBhbGwgY29uc3VtZXJzIG9mIHRoZSBzZXNzaW9uIHN0b3JhZ2UpXG4gICAqIEBwYXJhbSB7U2Vzc2lvbkRhdGF9IFtzZXNzaW9uXSBUaGUgbmV3IHNlc3Npb25cbiAgICovXG4gIGFzeW5jIHNldFNlc3Npb24oc2Vzc2lvbj86IFNlc3Npb25EYXRhKSB7XG4gICAgcmV0dXJuIGF3YWl0IG5hdmlnYXRvci5sb2Nrcy5yZXF1ZXN0KFxuICAgICAgdGhpcy4jbG9jayxcbiAgICAgIHtcbiAgICAgICAgbW9kZTogXCJleGNsdXNpdmVcIixcbiAgICAgIH0sXG4gICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy4jc3RvcmFnZS5nZXRJdGVtKHRoaXMuI2tleSk7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gc2Vzc2lvbiA/IEpTT04uc3RyaW5naWZ5KHNlc3Npb24pIDogbnVsbDtcblxuICAgICAgICAvLyBVbmxpa2UgZHVyaW5nIHJlZnJlc2gsIHdlIGRvbid0IHByZWVtcHQgdGhlIHJlYWQgbG9ja3NcbiAgICAgICAgLy8gYmVjYXVzZSB0aGlzIG9wZXJhdGlvbiBpcyBzeW5jaHJvbm91c1xuICAgICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgICB0aGlzLiNzdG9yYWdlLnNldEl0ZW0odGhpcy4ja2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy4jc3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuI2tleSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdG9yYWdlIGV2ZW50cyBkb24ndCBmaXJlIGlmIHRoZSBzdG9yZSBvY2N1cnJlZCBvbiB0aGUgc2FtZSBwYWdlLFxuICAgICAgICAvLyBzbyB3ZSBoYXZlIHRvIG1hbnVhbGx5IGludm9rZSBvdXIgZW1pdCBsb2dpY1xuICAgICAgICB0aGlzLiNlbWl0SWZOZWNlc3Nhcnkob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsZ0VBUXFDO0FBQ3JDLG1DQUF5QztBQU96Qzs7R0FFRztBQUNILE1BQWEscUJBQ1gsU0FBUSw2QkFBa0M7SUFRMUM7Ozs7T0FJRztJQUNILFlBQVksR0FBVyxFQUFFLFVBQW1CLFVBQVUsQ0FBQyxZQUFZO1FBQ2pFLEtBQUssRUFBRSxDQUFDOztRQVhWLDJDQUEyQztRQUMzQyw2Q0FBYTtRQUNiLGlEQUFrQjtRQUNsQiw4Q0FBYztRQVNaLHVCQUFBLElBQUksOEJBQVEsR0FBRyxNQUFBLENBQUM7UUFDaEIsdUJBQUEsSUFBSSxrQ0FBWSxPQUFPLE1BQUEsQ0FBQztRQUN4Qix1QkFBQSxJQUFJLCtCQUFTLHVCQUF1QixHQUFHLEVBQUUsTUFBQSxDQUFDO1FBQzFDLCtEQUErRDtRQUMvRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDeEMsaUVBQWlFO1lBQ2pFLElBQUksRUFBRSxDQUFDLFdBQVcsS0FBSyxPQUFPLElBQUksRUFBRSxDQUFDLEdBQUcsS0FBSyxHQUFHO2dCQUFFLE9BQU87WUFDekQsdUJBQUEsSUFBSSxnRkFBaUIsTUFBckIsSUFBSSxFQUFrQixFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFpQ0Q7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxRQUFRO1FBQ1osTUFBTSxJQUFJLEdBQUcsdUJBQUEsSUFBSSw0RUFBYSxNQUFqQixJQUFJLENBQWUsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixNQUFNLElBQUksb0NBQW1CLEVBQUUsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsT0FBTyxJQUFBLHlCQUFRLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBQSxzQkFBYyxFQUEwQix1QkFBQSxJQUFJLG1DQUFNLEVBQUU7WUFDckUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLHVCQUFBLElBQUksNEVBQWEsTUFBakIsSUFBSSxDQUFlO1lBQy9CLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsSUFBSSxJQUFBLHdCQUFPLEVBQUMsQ0FBQyxDQUFDO1lBQzFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsVUFBdUIsRUFBRSxFQUFFO2dCQUNyQyxJQUFJLElBQUEsOEJBQWEsRUFBQyxVQUFVLENBQUMsRUFBRSxDQUFDO29CQUM5QixJQUFJLENBQUM7d0JBQ0gsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFBLHdCQUFPLEVBQUMsVUFBVSxDQUFDLENBQUM7d0JBQzdDLHVCQUFBLElBQUksc0NBQVMsQ0FBQyxPQUFPLENBQUMsdUJBQUEsSUFBSSxrQ0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQzt3QkFDN0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO29CQUN4QyxDQUFDO29CQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7d0JBQ1gsSUFBSSxDQUFDLFlBQVksNEJBQVcsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDOzRCQUNqRCx1QkFBQSxJQUFJLHNDQUFTLENBQUMsVUFBVSxDQUFDLHVCQUFBLElBQUksa0NBQUssQ0FBQyxDQUFDO3dCQUN0QyxDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLHlEQUF5RDtvQkFDekQsdUJBQUEsSUFBSSxzQ0FBUyxDQUFDLFVBQVUsQ0FBQyx1QkFBQSxJQUFJLGtDQUFLLENBQUMsQ0FBQztnQkFDdEMsQ0FBQztnQkFFRCxzQ0FBc0M7Z0JBQ3RDLHVCQUFBLElBQUksZ0ZBQWlCLE1BQXJCLElBQUksRUFBa0IsRUFBRSxFQUFFLHVCQUFBLElBQUksc0NBQVMsQ0FBQyxPQUFPLENBQUMsdUJBQUEsSUFBSSxrQ0FBSyxDQUFDLENBQUMsQ0FBQztZQUM5RCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsTUFBTSxJQUFJLG9DQUFtQixFQUFFLENBQUM7UUFDbEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBcUI7UUFDcEMsT0FBTyxNQUFNLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUNsQyx1QkFBQSxJQUFJLG1DQUFNLEVBQ1Y7WUFDRSxJQUFJLEVBQUUsV0FBVztTQUNsQixFQUNELEtBQUssSUFBSSxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsdUJBQUEsSUFBSSxzQ0FBUyxDQUFDLE9BQU8sQ0FBQyx1QkFBQSxJQUFJLGtDQUFLLENBQUMsQ0FBQztZQUNsRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUUxRCx5REFBeUQ7WUFDekQsd0NBQXdDO1lBQ3hDLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsdUJBQUEsSUFBSSxzQ0FBUyxDQUFDLE9BQU8sQ0FBQyx1QkFBQSxJQUFJLGtDQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDN0MsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLHVCQUFBLElBQUksc0NBQVMsQ0FBQyxVQUFVLENBQUMsdUJBQUEsSUFBSSxrQ0FBSyxDQUFDLENBQUM7WUFDdEMsQ0FBQztZQUVELG9FQUFvRTtZQUNwRSwrQ0FBK0M7WUFDL0MsdUJBQUEsSUFBSSxnRkFBaUIsTUFBckIsSUFBSSxFQUFrQixRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF2SUQsc0RBdUlDO29SQXRHa0IsUUFBdUIsRUFBRSxRQUF1QjtJQUMvRCxJQUFJLFFBQVEsS0FBSyxJQUFJLElBQUksUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELHVEQUF1RDtTQUNsRCxJQUFJLFFBQVEsS0FBSyxJQUFJLElBQUksUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckIsQ0FBQztBQUNILENBQUM7SUFRQyxNQUFNLE1BQU0sR0FBRyx1QkFBQSxJQUFJLHNDQUFTLENBQUMsT0FBTyxDQUFDLHVCQUFBLElBQUksa0NBQUssQ0FBQyxDQUFDO0lBQ2hELElBQUksTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3BCLE9BQU87SUFDVCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNlc3Npb25EYXRhLCBTZXNzaW9uTWFuYWdlciwgU2Vzc2lvbk1ldGFkYXRhIH0gZnJvbSBcIkBjdWJpc3QtbGFicy9jdWJlc2lnbmVyLXNka1wiO1xuaW1wb3J0IHtcbiAgRXZlbnRFbWl0dGVyLFxuICBOb1Nlc3Npb25Gb3VuZEVycm9yLFxuICBpc1N0YWxlLFxuICBpc1JlZnJlc2hhYmxlLFxuICBtZXRhZGF0YSxcbiAgcmVmcmVzaCxcbiAgRXJyUmVzcG9uc2UsXG59IGZyb20gXCJAY3ViaXN0LWxhYnMvY3ViZXNpZ25lci1zZGtcIjtcbmltcG9ydCB7IHJlYWRUZXN0QW5kU2V0IH0gZnJvbSBcIi4vbG9ja3NcIjtcblxudHlwZSBCcm93c2VyU3RvcmFnZUV2ZW50cyA9IHtcbiAgbG9nb3V0KCk6IHZvaWQ7XG4gIGxvZ2luKCk6IHZvaWQ7XG59O1xuXG4vKipcbiAqIEEgbWFuYWdlciB0aGF0IHBlcnNpc3RzIGludG8gYnJvd3NlciBzdG9yYWdlIGFuZCB1c2VzIHdlYmxvY2tzIHRvIHNhZmVseSBwZXJmb3JtIHJlZnJlc2hlc1xuICovXG5leHBvcnQgY2xhc3MgQnJvd3NlclN0b3JhZ2VNYW5hZ2VyXG4gIGV4dGVuZHMgRXZlbnRFbWl0dGVyPEJyb3dzZXJTdG9yYWdlRXZlbnRzPlxuICBpbXBsZW1lbnRzIFNlc3Npb25NYW5hZ2VyXG57XG4gIC8qKiBUaGUgc3RvcmFnZSBrZXkgZm9yIHRoZSBzZXNzaW9uIGRhdGEgKi9cbiAgI2tleTogc3RyaW5nO1xuICAjc3RvcmFnZTogU3RvcmFnZTtcbiAgI2xvY2s6IHN0cmluZztcblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGtleSBUaGUgc3RvcmFnZSBrZXkgdG8gdXNlXG4gICAqIEBwYXJhbSBzdG9yYWdlIFRoZSBzdG9yYWdlIG9iamVjdCB0byB1c2UgKGRlZmF1bHRzIHRvIGxvY2FsU3RvcmFnZSlcbiAgICovXG4gIGNvbnN0cnVjdG9yKGtleTogc3RyaW5nLCBzdG9yYWdlOiBTdG9yYWdlID0gZ2xvYmFsVGhpcy5sb2NhbFN0b3JhZ2UpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuI2tleSA9IGtleTtcbiAgICB0aGlzLiNzdG9yYWdlID0gc3RvcmFnZTtcbiAgICB0aGlzLiNsb2NrID0gYENTX1NES19TVE9SQUdFX0xPQ0tfJHtrZXl9YDtcbiAgICAvLyBTZXQgdXAgbGlzdGVuZXJzIHRvIGVtaXQgZXZlbnRzIHdoZW4gdXNlcnMgbG9nIGluIG9yIGxvZyBvdXRcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInN0b3JhZ2VcIiwgKGV2KSA9PiB7XG4gICAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQgZXZlbnRzIG9uIG91ciBzdG9yYWdlIG9iamVjdCwgdXNpbmcgb3VyIGtleVxuICAgICAgaWYgKGV2LnN0b3JhZ2VBcmVhICE9PSBzdG9yYWdlIHx8IGV2LmtleSAhPT0ga2V5KSByZXR1cm47XG4gICAgICB0aGlzLiNlbWl0SWZOZWNlc3NhcnkoZXYub2xkVmFsdWUsIGV2Lm5ld1ZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhIGBsb2dpbmAgb3IgYGxvZ291dGAgZXZlbnQgaWYgbmVjZXNzYXJ5XG4gICAqXG4gICAqIEBwYXJhbSBvbGRWYWx1ZSBUaGUgcHJldmlvdXNseSBzdG9yZWQgdmFsdWVcbiAgICogQHBhcmFtIG5ld1ZhbHVlIFRoZSBuZXdseSBzdG9yZWQgdmFsdWVcbiAgICovXG4gICNlbWl0SWZOZWNlc3Nhcnkob2xkVmFsdWU6IG51bGwgfCBzdHJpbmcsIG5ld1ZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgaWYgKG5ld1ZhbHVlID09PSBudWxsICYmIG9sZFZhbHVlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLmVtaXQoXCJsb2dvdXRcIik7XG4gICAgfVxuXG4gICAgLy8gVGhlcmUgaXMgbm93IGEgc2Vzc2lvbiB3aGVuIHRoZXJlIGRpZG4ndCB1c2VkIHRvIGJlLlxuICAgIGVsc2UgaWYgKG9sZFZhbHVlID09PSBudWxsICYmIG5ld1ZhbHVlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLmVtaXQoXCJsb2dpblwiKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgYSBzZXNzaW9uIGZyb20gdGhlIGNvbmZpZ3VyZWQgc3RvcmFnZSBhdCB0aGUgY29uZmlndXJlZCBrZXlcbiAgICpcbiAgICogQHJldHVybnMgVGhlIHN0b3JlZCBkYXRhIG9yIHVuZGVmaW5lZCBpZiBub3QgcHJlc2VudFxuICAgKi9cbiAgI2xvYWRTZXNzaW9uKCk6IFNlc3Npb25EYXRhIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzdG9yZWQgPSB0aGlzLiNzdG9yYWdlLmdldEl0ZW0odGhpcy4ja2V5KTtcbiAgICBpZiAoc3RvcmVkID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIEpTT04ucGFyc2Uoc3RvcmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyB0aGUgbWV0YWRhdGEgZm9yIGEgc2Vzc2lvbiBmcm9tIHN0b3JhZ2VcbiAgICpcbiAgICogQHJldHVybnMgVGhlIHNlc3Npb24gbWV0YWRhdGFcbiAgICovXG4gIGFzeW5jIG1ldGFkYXRhKCk6IFByb21pc2U8U2Vzc2lvbk1ldGFkYXRhPiB7XG4gICAgY29uc3Qgc2VzcyA9IHRoaXMuI2xvYWRTZXNzaW9uKCk7XG4gICAgaWYgKCFzZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgTm9TZXNzaW9uRm91bmRFcnJvcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWV0YWRhdGEoc2Vzcyk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIGN1cnJlbnQgYWNjZXNzIHRva2VuIGZyb20gc3RvcmFnZVxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgYWNjZXNzIHRva2VuXG4gICAqL1xuICBhc3luYyB0b2tlbigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHNlc3MgPSBhd2FpdCByZWFkVGVzdEFuZFNldDxTZXNzaW9uRGF0YSB8IHVuZGVmaW5lZD4odGhpcy4jbG9jaywge1xuICAgICAgcmVhZDogKCkgPT4gdGhpcy4jbG9hZFNlc3Npb24oKSxcbiAgICAgIHRlc3Q6ICh2KSA9PiB2ICE9PSB1bmRlZmluZWQgJiYgaXNTdGFsZSh2KSxcbiAgICAgIHNldDogYXN5bmMgKG9sZFNlc3Npb246IFNlc3Npb25EYXRhKSA9PiB7XG4gICAgICAgIGlmIChpc1JlZnJlc2hhYmxlKG9sZFNlc3Npb24pKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1Nlc3Npb24gPSBhd2FpdCByZWZyZXNoKG9sZFNlc3Npb24pO1xuICAgICAgICAgICAgdGhpcy4jc3RvcmFnZS5zZXRJdGVtKHRoaXMuI2tleSwgSlNPTi5zdHJpbmdpZnkobmV3U2Vzc2lvbikpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJTdWNjZXNzZnVsbHkgcmVmcmVzaGVkXCIpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyUmVzcG9uc2UgJiYgZS5zdGF0dXMgPT09IDQwMykge1xuICAgICAgICAgICAgICB0aGlzLiNzdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy4ja2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSWYgdGhlIHNlc3Npb24gaXMgbm90IHJlZnJlc2hhYmxlLCB3ZSBzaG91bGQgcmVtb3ZlIGl0XG4gICAgICAgICAgdGhpcy4jc3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuI2tleSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOb3RpZnkgdGhhdCB0aGUgc2Vzc2lvbiBoYXMgY2hhbmdlZFxuICAgICAgICB0aGlzLiNlbWl0SWZOZWNlc3NhcnkoXCJcIiwgdGhpcy4jc3RvcmFnZS5nZXRJdGVtKHRoaXMuI2tleSkpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgICBpZiAoIXNlc3MpIHtcbiAgICAgIHRocm93IG5ldyBOb1Nlc3Npb25Gb3VuZEVycm9yKCk7XG4gICAgfVxuICAgIHJldHVybiBzZXNzLnRva2VuO1xuICB9XG5cbiAgLyoqXG4gICAqIERpcmVjdGx5IHNldCB0aGUgc2Vzc2lvbiAodXBkYXRpbmcgYWxsIGNvbnN1bWVycyBvZiB0aGUgc2Vzc2lvbiBzdG9yYWdlKVxuICAgKlxuICAgKiBAcGFyYW0gc2Vzc2lvbiBUaGUgbmV3IHNlc3Npb25cbiAgICovXG4gIGFzeW5jIHNldFNlc3Npb24oc2Vzc2lvbj86IFNlc3Npb25EYXRhKSB7XG4gICAgcmV0dXJuIGF3YWl0IG5hdmlnYXRvci5sb2Nrcy5yZXF1ZXN0KFxuICAgICAgdGhpcy4jbG9jayxcbiAgICAgIHtcbiAgICAgICAgbW9kZTogXCJleGNsdXNpdmVcIixcbiAgICAgIH0sXG4gICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy4jc3RvcmFnZS5nZXRJdGVtKHRoaXMuI2tleSk7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gc2Vzc2lvbiA/IEpTT04uc3RyaW5naWZ5KHNlc3Npb24pIDogbnVsbDtcblxuICAgICAgICAvLyBVbmxpa2UgZHVyaW5nIHJlZnJlc2gsIHdlIGRvbid0IHByZWVtcHQgdGhlIHJlYWQgbG9ja3NcbiAgICAgICAgLy8gYmVjYXVzZSB0aGlzIG9wZXJhdGlvbiBpcyBzeW5jaHJvbm91c1xuICAgICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgICB0aGlzLiNzdG9yYWdlLnNldEl0ZW0odGhpcy4ja2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy4jc3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuI2tleSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdG9yYWdlIGV2ZW50cyBkb24ndCBmaXJlIGlmIHRoZSBzdG9yZSBvY2N1cnJlZCBvbiB0aGUgc2FtZSBwYWdlLFxuICAgICAgICAvLyBzbyB3ZSBoYXZlIHRvIG1hbnVhbGx5IGludm9rZSBvdXIgZW1pdCBsb2dpY1xuICAgICAgICB0aGlzLiNlbWl0SWZOZWNlc3Nhcnkob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxufVxuIl19
|
package/dist/locks.d.ts
CHANGED
|
@@ -18,9 +18,9 @@ export type ReadTestAndSet<T> = {
|
|
|
18
18
|
* 2. Only 1 set() call is active at a time
|
|
19
19
|
* 3. read() never occurs while set() is running
|
|
20
20
|
*
|
|
21
|
-
* @param
|
|
22
|
-
* @param
|
|
23
|
-
* @
|
|
21
|
+
* @param lock The name of the lock to use
|
|
22
|
+
* @param spec The set of read, test, and set functions to use
|
|
23
|
+
* @returns The current value
|
|
24
24
|
*/
|
|
25
|
-
export declare function readTestAndSet<T>(lock: string,
|
|
25
|
+
export declare function readTestAndSet<T>(lock: string, spec: ReadTestAndSet<T>): Promise<T>;
|
|
26
26
|
//# sourceMappingURL=locks.d.ts.map
|
package/dist/locks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locks.d.ts","sourceRoot":"","sources":["../src/locks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,2BAA2B;IAC3B,IAAI,IAAI,CAAC,CAAC;IACV,+CAA+C;IAC/C,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IACpB,wBAAwB;IACxB,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"locks.d.ts","sourceRoot":"","sources":["../src/locks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,2BAA2B;IAC3B,IAAI,IAAI,CAAC,CAAC;IACV,+CAA+C;IAC/C,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IACpB,wBAAwB;IACxB,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAczF"}
|
package/dist/locks.js
CHANGED
|
@@ -9,11 +9,12 @@ exports.readTestAndSet = readTestAndSet;
|
|
|
9
9
|
* 2. Only 1 set() call is active at a time
|
|
10
10
|
* 3. read() never occurs while set() is running
|
|
11
11
|
*
|
|
12
|
-
* @param
|
|
13
|
-
* @param
|
|
14
|
-
* @
|
|
12
|
+
* @param lock The name of the lock to use
|
|
13
|
+
* @param spec The set of read, test, and set functions to use
|
|
14
|
+
* @returns The current value
|
|
15
15
|
*/
|
|
16
|
-
async function readTestAndSet(lock,
|
|
16
|
+
async function readTestAndSet(lock, spec) {
|
|
17
|
+
const { read, test, set } = spec;
|
|
17
18
|
const value = await navigator.locks.request(lock, { mode: "shared" }, async () => read());
|
|
18
19
|
if (test(value)) {
|
|
19
20
|
return navigator.locks.request(lock, { mode: "exclusive" }, async () => {
|
|
@@ -27,4 +28,4 @@ async function readTestAndSet(lock, { read, test, set }) {
|
|
|
27
28
|
}
|
|
28
29
|
return value;
|
|
29
30
|
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ja3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbG9ja3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF5QkEsd0NBY0M7QUExQkQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSSxLQUFLLFVBQVUsY0FBYyxDQUFJLElBQVksRUFBRSxJQUF1QjtJQUMzRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDakMsTUFBTSxLQUFLLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFGLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEIsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDckUsTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUFFLENBQUM7WUFDcEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDZixNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEIsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUNoQixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVzZWQgYXMgYW4gYXJndW1lbnQgdG8ge0BsaW5rIHJlYWRUZXN0QW5kU2V0fS5cbiAqIERlZmluZXMgdGhlIGJlaGF2aW9yIHRvIHBlcmZvcm0gZHVyaW5nIHRoZSBsb2NraW5nIHN0cmF0ZWd5XG4gKi9cbmV4cG9ydCB0eXBlIFJlYWRUZXN0QW5kU2V0PFQ+ID0ge1xuICAvKiogSG93IHRvIHJlYWQgdGhlIGRhdGEgKi9cbiAgcmVhZCgpOiBUO1xuICAvKiogSWYgdHJ1ZSwgcGVyZm9ybSBzZXQsIGlmIGZhbHNlLCByZXR1cm4gdiAqL1xuICB0ZXN0KHY6IFQpOiBib29sZWFuO1xuICAvKiogUGVyc2lzdCB0aGUgdmFsdWUgKi9cbiAgc2V0KHByZXY6IFQpOiBQcm9taXNlPHZvaWQ+O1xufTtcblxuLyoqXG4gKiBBIGxvY2tpbmcgcHJpbWl0aXZlIGZvciBjb250ZW50aW91cyByZWFkcyBhbmQgd3JpdGVzLlxuICpcbiAqIEd1YXJhbnRlZXM6XG4gKiAgMS4gU2V0IGlzIG9ubHkgY2FsbGVkIHdoZW4gdGVzdChyZWFkKCkpIHJldHVybnMgdHJ1ZVxuICogIDIuIE9ubHkgMSBzZXQoKSBjYWxsIGlzIGFjdGl2ZSBhdCBhIHRpbWVcbiAqICAzLiByZWFkKCkgbmV2ZXIgb2NjdXJzIHdoaWxlIHNldCgpIGlzIHJ1bm5pbmdcbiAqXG4gKiBAcGFyYW0gbG9jayBUaGUgbmFtZSBvZiB0aGUgbG9jayB0byB1c2VcbiAqIEBwYXJhbSBzcGVjIFRoZSBzZXQgb2YgcmVhZCwgdGVzdCwgYW5kIHNldCBmdW5jdGlvbnMgdG8gdXNlXG4gKiBAcmV0dXJucyBUaGUgY3VycmVudCB2YWx1ZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFRlc3RBbmRTZXQ8VD4obG9jazogc3RyaW5nLCBzcGVjOiBSZWFkVGVzdEFuZFNldDxUPik6IFByb21pc2U8VD4ge1xuICBjb25zdCB7IHJlYWQsIHRlc3QsIHNldCB9ID0gc3BlYztcbiAgY29uc3QgdmFsdWUgPSBhd2FpdCBuYXZpZ2F0b3IubG9ja3MucmVxdWVzdChsb2NrLCB7IG1vZGU6IFwic2hhcmVkXCIgfSwgYXN5bmMgKCkgPT4gcmVhZCgpKTtcbiAgaWYgKHRlc3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIG5hdmlnYXRvci5sb2Nrcy5yZXF1ZXN0KGxvY2ssIHsgbW9kZTogXCJleGNsdXNpdmVcIiB9LCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBwcmV2ID0gcmVhZCgpO1xuICAgICAgaWYgKHRlc3QocHJldikpIHtcbiAgICAgICAgYXdhaXQgc2V0KHByZXYpO1xuICAgICAgICByZXR1cm4gcmVhZCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cubist-labs/cubesigner-sdk-browser-storage",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.97-0",
|
|
4
4
|
"description": "Browser-based storage for CubeSigner SDK sessions",
|
|
5
5
|
"license": "MIT OR Apache-2.0",
|
|
6
6
|
"author": "Cubist, Inc.",
|
|
@@ -22,14 +22,14 @@
|
|
|
22
22
|
"test:server": "http-server ./test/site -c-1"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
|
-
"@cubist-labs/cubesigner-sdk": "^0.4.
|
|
25
|
+
"@cubist-labs/cubesigner-sdk": "^0.4.97-0"
|
|
26
26
|
},
|
|
27
27
|
"directories": {
|
|
28
28
|
"test": "test"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@cubist-labs/cubesigner-sdk": "^0.4.
|
|
32
|
-
"@cubist-labs/cubesigner-sdk-fs-storage": "^0.4.
|
|
31
|
+
"@cubist-labs/cubesigner-sdk": "^0.4.97-0",
|
|
32
|
+
"@cubist-labs/cubesigner-sdk-fs-storage": "^0.4.97-0",
|
|
33
33
|
"@playwright/test": "^1.44.1",
|
|
34
34
|
"esbuild": "^0.23.0",
|
|
35
35
|
"http-server": "^14.1.1"
|
package/src/index.ts
CHANGED
|
@@ -29,26 +29,27 @@ export class BrowserStorageManager
|
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
31
|
*
|
|
32
|
-
* @param
|
|
33
|
-
* @param
|
|
32
|
+
* @param key The storage key to use
|
|
33
|
+
* @param storage The storage object to use (defaults to localStorage)
|
|
34
34
|
*/
|
|
35
35
|
constructor(key: string, storage: Storage = globalThis.localStorage) {
|
|
36
36
|
super();
|
|
37
37
|
this.#key = key;
|
|
38
38
|
this.#storage = storage;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
39
|
+
this.#lock = `CS_SDK_STORAGE_LOCK_${key}`;
|
|
40
|
+
// Set up listeners to emit events when users log in or log out
|
|
41
|
+
window.addEventListener("storage", (ev) => {
|
|
42
|
+
// We only care about events on our storage object, using our key
|
|
43
|
+
if (ev.storageArea !== storage || ev.key !== key) return;
|
|
44
|
+
this.#emitIfNecessary(ev.oldValue, ev.newValue);
|
|
45
|
+
});
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
/**
|
|
49
49
|
* Emits a `login` or `logout` event if necessary
|
|
50
|
-
*
|
|
51
|
-
* @param
|
|
50
|
+
*
|
|
51
|
+
* @param oldValue The previously stored value
|
|
52
|
+
* @param newValue The newly stored value
|
|
52
53
|
*/
|
|
53
54
|
#emitIfNecessary(oldValue: null | string, newValue: string | null) {
|
|
54
55
|
if (newValue === null && oldValue !== null) {
|
|
@@ -63,7 +64,8 @@ export class BrowserStorageManager
|
|
|
63
64
|
|
|
64
65
|
/**
|
|
65
66
|
* Loads a session from the configured storage at the configured key
|
|
66
|
-
*
|
|
67
|
+
*
|
|
68
|
+
* @returns The stored data or undefined if not present
|
|
67
69
|
*/
|
|
68
70
|
#loadSession(): SessionData | undefined {
|
|
69
71
|
const stored = this.#storage.getItem(this.#key);
|
|
@@ -76,7 +78,8 @@ export class BrowserStorageManager
|
|
|
76
78
|
|
|
77
79
|
/**
|
|
78
80
|
* Loads the metadata for a session from storage
|
|
79
|
-
*
|
|
81
|
+
*
|
|
82
|
+
* @returns The session metadata
|
|
80
83
|
*/
|
|
81
84
|
async metadata(): Promise<SessionMetadata> {
|
|
82
85
|
const sess = this.#loadSession();
|
|
@@ -88,7 +91,8 @@ export class BrowserStorageManager
|
|
|
88
91
|
|
|
89
92
|
/**
|
|
90
93
|
* Loads the current access token from storage
|
|
91
|
-
*
|
|
94
|
+
*
|
|
95
|
+
* @returns The access token
|
|
92
96
|
*/
|
|
93
97
|
async token(): Promise<string> {
|
|
94
98
|
const sess = await readTestAndSet<SessionData | undefined>(this.#lock, {
|
|
@@ -122,7 +126,8 @@ export class BrowserStorageManager
|
|
|
122
126
|
|
|
123
127
|
/**
|
|
124
128
|
* Directly set the session (updating all consumers of the session storage)
|
|
125
|
-
*
|
|
129
|
+
*
|
|
130
|
+
* @param session The new session
|
|
126
131
|
*/
|
|
127
132
|
async setSession(session?: SessionData) {
|
|
128
133
|
return await navigator.locks.request(
|
package/src/locks.ts
CHANGED
|
@@ -19,14 +19,12 @@ export type ReadTestAndSet<T> = {
|
|
|
19
19
|
* 2. Only 1 set() call is active at a time
|
|
20
20
|
* 3. read() never occurs while set() is running
|
|
21
21
|
*
|
|
22
|
-
* @param
|
|
23
|
-
* @param
|
|
24
|
-
* @
|
|
22
|
+
* @param lock The name of the lock to use
|
|
23
|
+
* @param spec The set of read, test, and set functions to use
|
|
24
|
+
* @returns The current value
|
|
25
25
|
*/
|
|
26
|
-
export async function readTestAndSet<T>(
|
|
27
|
-
|
|
28
|
-
{ read, test, set }: ReadTestAndSet<T>,
|
|
29
|
-
): Promise<T> {
|
|
26
|
+
export async function readTestAndSet<T>(lock: string, spec: ReadTestAndSet<T>): Promise<T> {
|
|
27
|
+
const { read, test, set } = spec;
|
|
30
28
|
const value = await navigator.locks.request(lock, { mode: "shared" }, async () => read());
|
|
31
29
|
if (test(value)) {
|
|
32
30
|
return navigator.locks.request(lock, { mode: "exclusive" }, async () => {
|