@webex/storage-adapter-session-storage 2.59.2 → 2.59.3-next.1
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/.eslintrc.js +6 -6
- package/README.md +33 -33
- package/babel.config.js +3 -3
- package/dist/index.js +46 -46
- package/dist/index.js.map +1 -1
- package/jest.config.js +3 -3
- package/package.json +15 -14
- package/process +1 -1
- package/src/index.js +154 -154
- package/test/unit/spec/storage-adapter-session-storage.js +11 -11
package/.eslintrc.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const config = {
|
|
2
|
-
root: true,
|
|
3
|
-
extends: ['@webex/eslint-config-legacy'],
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
module.exports = config;
|
|
1
|
+
const config = {
|
|
2
|
+
root: true,
|
|
3
|
+
extends: ['@webex/eslint-config-legacy'],
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
module.exports = config;
|
package/README.md
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
# @webex/storage-adapter-session-storage
|
|
2
|
-
|
|
3
|
-
[](https://github.com/RichardLitt/standard-readme)
|
|
4
|
-
|
|
5
|
-
> localStorage adapter for the Cisco Webex JS SDK
|
|
6
|
-
|
|
7
|
-
- [Install](#install)
|
|
8
|
-
- [Usage](#usage)
|
|
9
|
-
- [Contribute](#contribute)
|
|
10
|
-
- [Maintainers](#maintainers)
|
|
11
|
-
- [License](#license)
|
|
12
|
-
|
|
13
|
-
## Install
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
npm install --save @webex/storage-adapter-session-storage
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Usage
|
|
20
|
-
|
|
21
|
-
This is a part of the Cisco Webex JS SDK . Please see our [developer portal](https://developer.webex.com/) and the [API docs](https://webex.github.io/webex-js-sdk/api/) for full details.
|
|
22
|
-
|
|
23
|
-
## Maintainers
|
|
24
|
-
|
|
25
|
-
This package is maintained by [Cisco Webex for Developers](https://developer.webex.com/).
|
|
26
|
-
|
|
27
|
-
## Contribute
|
|
28
|
-
|
|
29
|
-
Pull requests welcome. Please see [CONTRIBUTING.md](https://github.com/webex/webex-js-sdk/blob/master/CONTRIBUTING.md) for more details.
|
|
30
|
-
|
|
31
|
-
## License
|
|
32
|
-
|
|
33
|
-
© 2016-2020 Cisco and/or its affiliates. All Rights Reserved.
|
|
1
|
+
# @webex/storage-adapter-session-storage
|
|
2
|
+
|
|
3
|
+
[](https://github.com/RichardLitt/standard-readme)
|
|
4
|
+
|
|
5
|
+
> localStorage adapter for the Cisco Webex JS SDK
|
|
6
|
+
|
|
7
|
+
- [Install](#install)
|
|
8
|
+
- [Usage](#usage)
|
|
9
|
+
- [Contribute](#contribute)
|
|
10
|
+
- [Maintainers](#maintainers)
|
|
11
|
+
- [License](#license)
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install --save @webex/storage-adapter-session-storage
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
This is a part of the Cisco Webex JS SDK . Please see our [developer portal](https://developer.webex.com/) and the [API docs](https://webex.github.io/webex-js-sdk/api/) for full details.
|
|
22
|
+
|
|
23
|
+
## Maintainers
|
|
24
|
+
|
|
25
|
+
This package is maintained by [Cisco Webex for Developers](https://developer.webex.com/).
|
|
26
|
+
|
|
27
|
+
## Contribute
|
|
28
|
+
|
|
29
|
+
Pull requests welcome. Please see [CONTRIBUTING.md](https://github.com/webex/webex-js-sdk/blob/master/CONTRIBUTING.md) for more details.
|
|
30
|
+
|
|
31
|
+
## License
|
|
32
|
+
|
|
33
|
+
© 2016-2020 Cisco and/or its affiliates. All Rights Reserved.
|
package/babel.config.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const babelConfigLegacy = require('@webex/babel-config-legacy');
|
|
2
|
-
|
|
3
|
-
module.exports = babelConfigLegacy;
|
|
1
|
+
const babelConfigLegacy = require('@webex/babel-config-legacy');
|
|
2
|
+
|
|
3
|
+
module.exports = babelConfigLegacy;
|
package/dist/index.js
CHANGED
|
@@ -13,8 +13,8 @@ var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/
|
|
|
13
13
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
14
14
|
var _deleteProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/delete-property"));
|
|
15
15
|
var _webexCore = require("@webex/webex-core");
|
|
16
|
-
/*!
|
|
17
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
16
|
+
/*!
|
|
17
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
20
|
/* eslint-env browser */
|
|
@@ -22,25 +22,25 @@ var _webexCore = require("@webex/webex-core");
|
|
|
22
22
|
var namespaces = new _weakMap.default();
|
|
23
23
|
var loggers = new _weakMap.default();
|
|
24
24
|
|
|
25
|
-
/**
|
|
26
|
-
* sessionStorage adapter for webex-core storage layer
|
|
25
|
+
/**
|
|
26
|
+
* sessionStorage adapter for webex-core storage layer
|
|
27
27
|
*/
|
|
28
28
|
var StorageAdapterSessionStorage = /*#__PURE__*/function () {
|
|
29
|
-
/**
|
|
30
|
-
* @constructs {StorageAdapterSessionStorage}
|
|
31
|
-
* @param {string} basekey sessionStorage key underwhich all namespaces will be
|
|
32
|
-
* stored
|
|
29
|
+
/**
|
|
30
|
+
* @constructs {StorageAdapterSessionStorage}
|
|
31
|
+
* @param {string} basekey sessionStorage key underwhich all namespaces will be
|
|
32
|
+
* stored
|
|
33
33
|
*/
|
|
34
34
|
function StorageAdapterSessionStorage(basekey) {
|
|
35
35
|
(0, _classCallCheck2.default)(this, StorageAdapterSessionStorage);
|
|
36
|
-
/**
|
|
37
|
-
* sessionStorage binding
|
|
36
|
+
/**
|
|
37
|
+
* sessionStorage binding
|
|
38
38
|
*/
|
|
39
39
|
this.Bound = /*#__PURE__*/function () {
|
|
40
|
-
/**
|
|
41
|
-
* @constructs {Bound}
|
|
42
|
-
* @param {string} namespace
|
|
43
|
-
* @param {Object} options
|
|
40
|
+
/**
|
|
41
|
+
* @constructs {Bound}
|
|
42
|
+
* @param {string} namespace
|
|
43
|
+
* @param {Object} options
|
|
44
44
|
*/
|
|
45
45
|
function _class(namespace, options) {
|
|
46
46
|
(0, _classCallCheck2.default)(this, _class);
|
|
@@ -48,9 +48,9 @@ var StorageAdapterSessionStorage = /*#__PURE__*/function () {
|
|
|
48
48
|
loggers.set(this, options.logger);
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
/**
|
|
52
|
-
* @private
|
|
53
|
-
* @returns {rawData}
|
|
51
|
+
/**
|
|
52
|
+
* @private
|
|
53
|
+
* @returns {rawData}
|
|
54
54
|
*/
|
|
55
55
|
(0, _createClass2.default)(_class, [{
|
|
56
56
|
key: "_getRawData",
|
|
@@ -59,9 +59,9 @@ var StorageAdapterSessionStorage = /*#__PURE__*/function () {
|
|
|
59
59
|
return rawData ? JSON.parse(rawData) : {};
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
/**
|
|
63
|
-
* @private
|
|
64
|
-
* @returns {mixed}
|
|
62
|
+
/**
|
|
63
|
+
* @private
|
|
64
|
+
* @returns {mixed}
|
|
65
65
|
*/
|
|
66
66
|
}, {
|
|
67
67
|
key: "_load",
|
|
@@ -70,10 +70,10 @@ var StorageAdapterSessionStorage = /*#__PURE__*/function () {
|
|
|
70
70
|
return allData[namespaces.get(this)] || {};
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
/**
|
|
74
|
-
* @param {Object} data
|
|
75
|
-
* @private
|
|
76
|
-
* @returns {undefined}
|
|
73
|
+
/**
|
|
74
|
+
* @param {Object} data
|
|
75
|
+
* @private
|
|
76
|
+
* @returns {undefined}
|
|
77
77
|
*/
|
|
78
78
|
}, {
|
|
79
79
|
key: "_save",
|
|
@@ -83,10 +83,10 @@ var StorageAdapterSessionStorage = /*#__PURE__*/function () {
|
|
|
83
83
|
sessionStorage.setItem(basekey, (0, _stringify.default)(allData));
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
/**
|
|
87
|
-
* Clears the sessionStorage
|
|
88
|
-
* @param {string} key
|
|
89
|
-
* @returns {Promise}
|
|
86
|
+
/**
|
|
87
|
+
* Clears the sessionStorage
|
|
88
|
+
* @param {string} key
|
|
89
|
+
* @returns {Promise}
|
|
90
90
|
*/
|
|
91
91
|
}, {
|
|
92
92
|
key: "clear",
|
|
@@ -95,10 +95,10 @@ var StorageAdapterSessionStorage = /*#__PURE__*/function () {
|
|
|
95
95
|
return _promise.default.resolve(sessionStorage.removeItem(basekey));
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
/**
|
|
99
|
-
* Removes the specified key
|
|
100
|
-
* @param {string} key
|
|
101
|
-
* @returns {Promise}
|
|
98
|
+
/**
|
|
99
|
+
* Removes the specified key
|
|
100
|
+
* @param {string} key
|
|
101
|
+
* @returns {Promise}
|
|
102
102
|
*/
|
|
103
103
|
}, {
|
|
104
104
|
key: "del",
|
|
@@ -113,10 +113,10 @@ var StorageAdapterSessionStorage = /*#__PURE__*/function () {
|
|
|
113
113
|
});
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
-
/**
|
|
117
|
-
* Retrieves the data at the specified key
|
|
118
|
-
* @param {string} key
|
|
119
|
-
* @returns {Promise<mixed>}
|
|
116
|
+
/**
|
|
117
|
+
* Retrieves the data at the specified key
|
|
118
|
+
* @param {string} key
|
|
119
|
+
* @returns {Promise<mixed>}
|
|
120
120
|
*/
|
|
121
121
|
}, {
|
|
122
122
|
key: "get",
|
|
@@ -133,11 +133,11 @@ var StorageAdapterSessionStorage = /*#__PURE__*/function () {
|
|
|
133
133
|
});
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
-
/**
|
|
137
|
-
* Stores the specified value at the specified key
|
|
138
|
-
* @param {string} key
|
|
139
|
-
* @param {mixed} value
|
|
140
|
-
* @returns {Promise}
|
|
136
|
+
/**
|
|
137
|
+
* Stores the specified value at the specified key
|
|
138
|
+
* @param {string} key
|
|
139
|
+
* @param {mixed} value
|
|
140
|
+
* @returns {Promise}
|
|
141
141
|
*/
|
|
142
142
|
}, {
|
|
143
143
|
key: "put",
|
|
@@ -156,11 +156,11 @@ var StorageAdapterSessionStorage = /*#__PURE__*/function () {
|
|
|
156
156
|
}();
|
|
157
157
|
}
|
|
158
158
|
|
|
159
|
-
/**
|
|
160
|
-
* Returns an adapter bound to the specified namespace
|
|
161
|
-
* @param {string} namespace
|
|
162
|
-
* @param {Object} options
|
|
163
|
-
* @returns {Promise<Bound>}
|
|
159
|
+
/**
|
|
160
|
+
* Returns an adapter bound to the specified namespace
|
|
161
|
+
* @param {string} namespace
|
|
162
|
+
* @param {Object} options
|
|
163
|
+
* @returns {Promise<Bound>}
|
|
164
164
|
*/
|
|
165
165
|
(0, _createClass2.default)(StorageAdapterSessionStorage, [{
|
|
166
166
|
key: "bind",
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_webexCore","require","namespaces","_weakMap","default","loggers","StorageAdapterSessionStorage","basekey","_classCallCheck2","Bound","_class","namespace","options","set","logger","_createClass2","key","value","_getRawData","rawData","sessionStorage","getItem","JSON","parse","_load","allData","get","_save","data","setItem","_stringify","clear","info","_promise","resolve","removeItem","del","_this","concat","_deleteProperty","_this2","reject","NotFoundError","put","_this3","bind","Error","exports"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint-env browser */\n\nimport {NotFoundError} from '@webex/webex-core';\n\nconst namespaces = new WeakMap();\nconst loggers = new WeakMap();\n\n/**\n * sessionStorage adapter for webex-core storage layer\n */\nexport default class StorageAdapterSessionStorage {\n /**\n * @constructs {StorageAdapterSessionStorage}\n * @param {string} basekey sessionStorage key underwhich all namespaces will be\n * stored\n */\n constructor(basekey) {\n /**\n * sessionStorage binding\n */\n this.Bound = class {\n /**\n * @constructs {Bound}\n * @param {string} namespace\n * @param {Object} options\n */\n constructor(namespace, options) {\n namespaces.set(this, namespace);\n loggers.set(this, options.logger);\n }\n\n /**\n * @private\n * @returns {rawData}\n */\n _getRawData() {\n const rawData = sessionStorage.getItem(basekey);\n\n return rawData ? JSON.parse(rawData) : {};\n }\n\n /**\n * @private\n * @returns {mixed}\n */\n _load() {\n const allData = this._getRawData();\n\n return allData[namespaces.get(this)] || {};\n }\n\n /**\n * @param {Object} data\n * @private\n * @returns {undefined}\n */\n _save(data) {\n const allData = this._getRawData();\n\n allData[namespaces.get(this)] = data;\n\n sessionStorage.setItem(basekey, JSON.stringify(allData));\n }\n\n /**\n * Clears the sessionStorage\n * @param {string} key\n * @returns {Promise}\n */\n clear() {\n loggers.get(this).info('session-storage-store-adapter: clearing sessionStorage');\n\n return Promise.resolve(sessionStorage.removeItem(basekey));\n }\n\n /**\n * Removes the specified key\n * @param {string} key\n * @returns {Promise}\n */\n del(key) {\n return new Promise((resolve) => {\n loggers.get(this).info(`session-storage-store-adapter: deleting \\`${key}\\``);\n const data = this._load();\n\n Reflect.deleteProperty(data, key);\n this._save(data);\n resolve();\n });\n }\n\n /**\n * Retrieves the data at the specified key\n * @param {string} key\n * @returns {Promise<mixed>}\n */\n get(key) {\n return new Promise((resolve, reject) => {\n loggers.get(this).info(`session-storage-store-adapter: reading \\`${key}\\``);\n const data = this._load();\n const value = data[key];\n\n if (typeof value !== 'undefined') {\n return resolve(value);\n }\n\n return reject(new NotFoundError(`No value found for ${key}`));\n });\n }\n\n /**\n * Stores the specified value at the specified key\n * @param {string} key\n * @param {mixed} value\n * @returns {Promise}\n */\n put(key, value) {\n return new Promise((resolve) => {\n loggers.get(this).info(`session-storage-store-adapter: writing \\`${key}\\``);\n const data = this._load();\n\n data[key] = value;\n this._save(data);\n resolve();\n });\n }\n };\n }\n\n /**\n * Returns an adapter bound to the specified namespace\n * @param {string} namespace\n * @param {Object} options\n * @returns {Promise<Bound>}\n */\n bind(namespace, options) {\n options = options || {};\n if (!namespace) {\n return Promise.reject(new Error('`namespace` is required'));\n }\n\n if (!options.logger) {\n return Promise.reject(new Error('`options.logger` is required'));\n }\n\n options.logger.info('session-storage-store-adapter: returning binding');\n\n return Promise.resolve(new this.Bound(namespace, options));\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_webexCore","require","namespaces","_weakMap","default","loggers","StorageAdapterSessionStorage","basekey","_classCallCheck2","Bound","_class","namespace","options","set","logger","_createClass2","key","value","_getRawData","rawData","sessionStorage","getItem","JSON","parse","_load","allData","get","_save","data","setItem","_stringify","clear","info","_promise","resolve","removeItem","del","_this","concat","_deleteProperty","_this2","reject","NotFoundError","put","_this3","bind","Error","exports"],"sources":["index.js"],"sourcesContent":["/*!\r\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\r\n */\r\n\r\n/* eslint-env browser */\r\n\r\nimport {NotFoundError} from '@webex/webex-core';\r\n\r\nconst namespaces = new WeakMap();\r\nconst loggers = new WeakMap();\r\n\r\n/**\r\n * sessionStorage adapter for webex-core storage layer\r\n */\r\nexport default class StorageAdapterSessionStorage {\r\n /**\r\n * @constructs {StorageAdapterSessionStorage}\r\n * @param {string} basekey sessionStorage key underwhich all namespaces will be\r\n * stored\r\n */\r\n constructor(basekey) {\r\n /**\r\n * sessionStorage binding\r\n */\r\n this.Bound = class {\r\n /**\r\n * @constructs {Bound}\r\n * @param {string} namespace\r\n * @param {Object} options\r\n */\r\n constructor(namespace, options) {\r\n namespaces.set(this, namespace);\r\n loggers.set(this, options.logger);\r\n }\r\n\r\n /**\r\n * @private\r\n * @returns {rawData}\r\n */\r\n _getRawData() {\r\n const rawData = sessionStorage.getItem(basekey);\r\n\r\n return rawData ? JSON.parse(rawData) : {};\r\n }\r\n\r\n /**\r\n * @private\r\n * @returns {mixed}\r\n */\r\n _load() {\r\n const allData = this._getRawData();\r\n\r\n return allData[namespaces.get(this)] || {};\r\n }\r\n\r\n /**\r\n * @param {Object} data\r\n * @private\r\n * @returns {undefined}\r\n */\r\n _save(data) {\r\n const allData = this._getRawData();\r\n\r\n allData[namespaces.get(this)] = data;\r\n\r\n sessionStorage.setItem(basekey, JSON.stringify(allData));\r\n }\r\n\r\n /**\r\n * Clears the sessionStorage\r\n * @param {string} key\r\n * @returns {Promise}\r\n */\r\n clear() {\r\n loggers.get(this).info('session-storage-store-adapter: clearing sessionStorage');\r\n\r\n return Promise.resolve(sessionStorage.removeItem(basekey));\r\n }\r\n\r\n /**\r\n * Removes the specified key\r\n * @param {string} key\r\n * @returns {Promise}\r\n */\r\n del(key) {\r\n return new Promise((resolve) => {\r\n loggers.get(this).info(`session-storage-store-adapter: deleting \\`${key}\\``);\r\n const data = this._load();\r\n\r\n Reflect.deleteProperty(data, key);\r\n this._save(data);\r\n resolve();\r\n });\r\n }\r\n\r\n /**\r\n * Retrieves the data at the specified key\r\n * @param {string} key\r\n * @returns {Promise<mixed>}\r\n */\r\n get(key) {\r\n return new Promise((resolve, reject) => {\r\n loggers.get(this).info(`session-storage-store-adapter: reading \\`${key}\\``);\r\n const data = this._load();\r\n const value = data[key];\r\n\r\n if (typeof value !== 'undefined') {\r\n return resolve(value);\r\n }\r\n\r\n return reject(new NotFoundError(`No value found for ${key}`));\r\n });\r\n }\r\n\r\n /**\r\n * Stores the specified value at the specified key\r\n * @param {string} key\r\n * @param {mixed} value\r\n * @returns {Promise}\r\n */\r\n put(key, value) {\r\n return new Promise((resolve) => {\r\n loggers.get(this).info(`session-storage-store-adapter: writing \\`${key}\\``);\r\n const data = this._load();\r\n\r\n data[key] = value;\r\n this._save(data);\r\n resolve();\r\n });\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Returns an adapter bound to the specified namespace\r\n * @param {string} namespace\r\n * @param {Object} options\r\n * @returns {Promise<Bound>}\r\n */\r\n bind(namespace, options) {\r\n options = options || {};\r\n if (!namespace) {\r\n return Promise.reject(new Error('`namespace` is required'));\r\n }\r\n\r\n if (!options.logger) {\r\n return Promise.reject(new Error('`options.logger` is required'));\r\n }\r\n\r\n options.logger.info('session-storage-store-adapter: returning binding');\r\n\r\n return Promise.resolve(new this.Bound(namespace, options));\r\n }\r\n}\r\n"],"mappings":"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"}
|
package/jest.config.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const config = require('@webex/jest-config-legacy');
|
|
2
|
-
|
|
3
|
-
module.exports = config;
|
|
1
|
+
const config = require('@webex/jest-config-legacy');
|
|
2
|
+
|
|
3
|
+
module.exports = config;
|
package/package.json
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/storage-adapter-session-storage",
|
|
3
|
-
"version": "2.59.2",
|
|
4
3
|
"description": "",
|
|
5
4
|
"license": "MIT",
|
|
6
5
|
"author": "Andrew Holsted <holsted@cisco.com>",
|
|
@@ -21,13 +20,14 @@
|
|
|
21
20
|
]
|
|
22
21
|
},
|
|
23
22
|
"dependencies": {
|
|
24
|
-
"@webex/storage-adapter-spec": "2.59.
|
|
25
|
-
"@webex/test-helper-mocha": "2.59.
|
|
26
|
-
"@webex/webex-core": "2.59.
|
|
23
|
+
"@webex/storage-adapter-spec": "^2.59.3-next.1",
|
|
24
|
+
"@webex/test-helper-mocha": "^2.59.3-next.1",
|
|
25
|
+
"@webex/webex-core": "^2.59.3-next.1"
|
|
27
26
|
},
|
|
28
27
|
"scripts": {
|
|
29
28
|
"build": "yarn build:src",
|
|
30
29
|
"build:src": "webex-legacy-tools build -dest \"./dist\" -src \"./src\" -js -ts -maps",
|
|
30
|
+
"deploy:npm": "yarn npm publish",
|
|
31
31
|
"test": "yarn test:style && yarn test:unit && yarn test:integration && yarn test:browser",
|
|
32
32
|
"test:browser:broken": "webex-legacy-tools test --integration --unit --runner karma",
|
|
33
33
|
"test:integration": "webex-legacy-tools test --integration --runner mocha",
|
|
@@ -36,15 +36,16 @@
|
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@babel/core": "^7.17.10",
|
|
39
|
-
"@webex/babel-config-legacy": "
|
|
40
|
-
"@webex/eslint-config-legacy": "
|
|
41
|
-
"@webex/jest-config-legacy": "
|
|
42
|
-
"@webex/legacy-tools": "
|
|
43
|
-
"@webex/test-helper-chai": "2.59.
|
|
44
|
-
"@webex/test-helper-mocha": "2.59.
|
|
45
|
-
"@webex/test-helper-mock-webex": "2.59.
|
|
46
|
-
"@webex/test-helper-test-users": "2.59.
|
|
39
|
+
"@webex/babel-config-legacy": "^0.0.0",
|
|
40
|
+
"@webex/eslint-config-legacy": "^0.0.0",
|
|
41
|
+
"@webex/jest-config-legacy": "^0.0.0",
|
|
42
|
+
"@webex/legacy-tools": "^0.0.0",
|
|
43
|
+
"@webex/test-helper-chai": "^2.59.3-next.1",
|
|
44
|
+
"@webex/test-helper-mocha": "^2.59.3-next.1",
|
|
45
|
+
"@webex/test-helper-mock-webex": "^2.59.3-next.1",
|
|
46
|
+
"@webex/test-helper-test-users": "^2.59.3-next.1",
|
|
47
47
|
"eslint": "^8.24.0",
|
|
48
48
|
"prettier": "^2.7.1"
|
|
49
|
-
}
|
|
50
|
-
|
|
49
|
+
},
|
|
50
|
+
"version": "2.59.3-next.1"
|
|
51
|
+
}
|
package/process
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
module.exports = {browser: true};
|
|
1
|
+
module.exports = {browser: true};
|
package/src/index.js
CHANGED
|
@@ -1,154 +1,154 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
/* eslint-env browser */
|
|
6
|
-
|
|
7
|
-
import {NotFoundError} from '@webex/webex-core';
|
|
8
|
-
|
|
9
|
-
const namespaces = new WeakMap();
|
|
10
|
-
const loggers = new WeakMap();
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* sessionStorage adapter for webex-core storage layer
|
|
14
|
-
*/
|
|
15
|
-
export default class StorageAdapterSessionStorage {
|
|
16
|
-
/**
|
|
17
|
-
* @constructs {StorageAdapterSessionStorage}
|
|
18
|
-
* @param {string} basekey sessionStorage key underwhich all namespaces will be
|
|
19
|
-
* stored
|
|
20
|
-
*/
|
|
21
|
-
constructor(basekey) {
|
|
22
|
-
/**
|
|
23
|
-
* sessionStorage binding
|
|
24
|
-
*/
|
|
25
|
-
this.Bound = class {
|
|
26
|
-
/**
|
|
27
|
-
* @constructs {Bound}
|
|
28
|
-
* @param {string} namespace
|
|
29
|
-
* @param {Object} options
|
|
30
|
-
*/
|
|
31
|
-
constructor(namespace, options) {
|
|
32
|
-
namespaces.set(this, namespace);
|
|
33
|
-
loggers.set(this, options.logger);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* @private
|
|
38
|
-
* @returns {rawData}
|
|
39
|
-
*/
|
|
40
|
-
_getRawData() {
|
|
41
|
-
const rawData = sessionStorage.getItem(basekey);
|
|
42
|
-
|
|
43
|
-
return rawData ? JSON.parse(rawData) : {};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* @private
|
|
48
|
-
* @returns {mixed}
|
|
49
|
-
*/
|
|
50
|
-
_load() {
|
|
51
|
-
const allData = this._getRawData();
|
|
52
|
-
|
|
53
|
-
return allData[namespaces.get(this)] || {};
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* @param {Object} data
|
|
58
|
-
* @private
|
|
59
|
-
* @returns {undefined}
|
|
60
|
-
*/
|
|
61
|
-
_save(data) {
|
|
62
|
-
const allData = this._getRawData();
|
|
63
|
-
|
|
64
|
-
allData[namespaces.get(this)] = data;
|
|
65
|
-
|
|
66
|
-
sessionStorage.setItem(basekey, JSON.stringify(allData));
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Clears the sessionStorage
|
|
71
|
-
* @param {string} key
|
|
72
|
-
* @returns {Promise}
|
|
73
|
-
*/
|
|
74
|
-
clear() {
|
|
75
|
-
loggers.get(this).info('session-storage-store-adapter: clearing sessionStorage');
|
|
76
|
-
|
|
77
|
-
return Promise.resolve(sessionStorage.removeItem(basekey));
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Removes the specified key
|
|
82
|
-
* @param {string} key
|
|
83
|
-
* @returns {Promise}
|
|
84
|
-
*/
|
|
85
|
-
del(key) {
|
|
86
|
-
return new Promise((resolve) => {
|
|
87
|
-
loggers.get(this).info(`session-storage-store-adapter: deleting \`${key}\``);
|
|
88
|
-
const data = this._load();
|
|
89
|
-
|
|
90
|
-
Reflect.deleteProperty(data, key);
|
|
91
|
-
this._save(data);
|
|
92
|
-
resolve();
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Retrieves the data at the specified key
|
|
98
|
-
* @param {string} key
|
|
99
|
-
* @returns {Promise<mixed>}
|
|
100
|
-
*/
|
|
101
|
-
get(key) {
|
|
102
|
-
return new Promise((resolve, reject) => {
|
|
103
|
-
loggers.get(this).info(`session-storage-store-adapter: reading \`${key}\``);
|
|
104
|
-
const data = this._load();
|
|
105
|
-
const value = data[key];
|
|
106
|
-
|
|
107
|
-
if (typeof value !== 'undefined') {
|
|
108
|
-
return resolve(value);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
return reject(new NotFoundError(`No value found for ${key}`));
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Stores the specified value at the specified key
|
|
117
|
-
* @param {string} key
|
|
118
|
-
* @param {mixed} value
|
|
119
|
-
* @returns {Promise}
|
|
120
|
-
*/
|
|
121
|
-
put(key, value) {
|
|
122
|
-
return new Promise((resolve) => {
|
|
123
|
-
loggers.get(this).info(`session-storage-store-adapter: writing \`${key}\``);
|
|
124
|
-
const data = this._load();
|
|
125
|
-
|
|
126
|
-
data[key] = value;
|
|
127
|
-
this._save(data);
|
|
128
|
-
resolve();
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Returns an adapter bound to the specified namespace
|
|
136
|
-
* @param {string} namespace
|
|
137
|
-
* @param {Object} options
|
|
138
|
-
* @returns {Promise<Bound>}
|
|
139
|
-
*/
|
|
140
|
-
bind(namespace, options) {
|
|
141
|
-
options = options || {};
|
|
142
|
-
if (!namespace) {
|
|
143
|
-
return Promise.reject(new Error('`namespace` is required'));
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
if (!options.logger) {
|
|
147
|
-
return Promise.reject(new Error('`options.logger` is required'));
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
options.logger.info('session-storage-store-adapter: returning binding');
|
|
151
|
-
|
|
152
|
-
return Promise.resolve(new this.Bound(namespace, options));
|
|
153
|
-
}
|
|
154
|
-
}
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/* eslint-env browser */
|
|
6
|
+
|
|
7
|
+
import {NotFoundError} from '@webex/webex-core';
|
|
8
|
+
|
|
9
|
+
const namespaces = new WeakMap();
|
|
10
|
+
const loggers = new WeakMap();
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* sessionStorage adapter for webex-core storage layer
|
|
14
|
+
*/
|
|
15
|
+
export default class StorageAdapterSessionStorage {
|
|
16
|
+
/**
|
|
17
|
+
* @constructs {StorageAdapterSessionStorage}
|
|
18
|
+
* @param {string} basekey sessionStorage key underwhich all namespaces will be
|
|
19
|
+
* stored
|
|
20
|
+
*/
|
|
21
|
+
constructor(basekey) {
|
|
22
|
+
/**
|
|
23
|
+
* sessionStorage binding
|
|
24
|
+
*/
|
|
25
|
+
this.Bound = class {
|
|
26
|
+
/**
|
|
27
|
+
* @constructs {Bound}
|
|
28
|
+
* @param {string} namespace
|
|
29
|
+
* @param {Object} options
|
|
30
|
+
*/
|
|
31
|
+
constructor(namespace, options) {
|
|
32
|
+
namespaces.set(this, namespace);
|
|
33
|
+
loggers.set(this, options.logger);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @private
|
|
38
|
+
* @returns {rawData}
|
|
39
|
+
*/
|
|
40
|
+
_getRawData() {
|
|
41
|
+
const rawData = sessionStorage.getItem(basekey);
|
|
42
|
+
|
|
43
|
+
return rawData ? JSON.parse(rawData) : {};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @private
|
|
48
|
+
* @returns {mixed}
|
|
49
|
+
*/
|
|
50
|
+
_load() {
|
|
51
|
+
const allData = this._getRawData();
|
|
52
|
+
|
|
53
|
+
return allData[namespaces.get(this)] || {};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @param {Object} data
|
|
58
|
+
* @private
|
|
59
|
+
* @returns {undefined}
|
|
60
|
+
*/
|
|
61
|
+
_save(data) {
|
|
62
|
+
const allData = this._getRawData();
|
|
63
|
+
|
|
64
|
+
allData[namespaces.get(this)] = data;
|
|
65
|
+
|
|
66
|
+
sessionStorage.setItem(basekey, JSON.stringify(allData));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Clears the sessionStorage
|
|
71
|
+
* @param {string} key
|
|
72
|
+
* @returns {Promise}
|
|
73
|
+
*/
|
|
74
|
+
clear() {
|
|
75
|
+
loggers.get(this).info('session-storage-store-adapter: clearing sessionStorage');
|
|
76
|
+
|
|
77
|
+
return Promise.resolve(sessionStorage.removeItem(basekey));
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Removes the specified key
|
|
82
|
+
* @param {string} key
|
|
83
|
+
* @returns {Promise}
|
|
84
|
+
*/
|
|
85
|
+
del(key) {
|
|
86
|
+
return new Promise((resolve) => {
|
|
87
|
+
loggers.get(this).info(`session-storage-store-adapter: deleting \`${key}\``);
|
|
88
|
+
const data = this._load();
|
|
89
|
+
|
|
90
|
+
Reflect.deleteProperty(data, key);
|
|
91
|
+
this._save(data);
|
|
92
|
+
resolve();
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Retrieves the data at the specified key
|
|
98
|
+
* @param {string} key
|
|
99
|
+
* @returns {Promise<mixed>}
|
|
100
|
+
*/
|
|
101
|
+
get(key) {
|
|
102
|
+
return new Promise((resolve, reject) => {
|
|
103
|
+
loggers.get(this).info(`session-storage-store-adapter: reading \`${key}\``);
|
|
104
|
+
const data = this._load();
|
|
105
|
+
const value = data[key];
|
|
106
|
+
|
|
107
|
+
if (typeof value !== 'undefined') {
|
|
108
|
+
return resolve(value);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
return reject(new NotFoundError(`No value found for ${key}`));
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Stores the specified value at the specified key
|
|
117
|
+
* @param {string} key
|
|
118
|
+
* @param {mixed} value
|
|
119
|
+
* @returns {Promise}
|
|
120
|
+
*/
|
|
121
|
+
put(key, value) {
|
|
122
|
+
return new Promise((resolve) => {
|
|
123
|
+
loggers.get(this).info(`session-storage-store-adapter: writing \`${key}\``);
|
|
124
|
+
const data = this._load();
|
|
125
|
+
|
|
126
|
+
data[key] = value;
|
|
127
|
+
this._save(data);
|
|
128
|
+
resolve();
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Returns an adapter bound to the specified namespace
|
|
136
|
+
* @param {string} namespace
|
|
137
|
+
* @param {Object} options
|
|
138
|
+
* @returns {Promise<Bound>}
|
|
139
|
+
*/
|
|
140
|
+
bind(namespace, options) {
|
|
141
|
+
options = options || {};
|
|
142
|
+
if (!namespace) {
|
|
143
|
+
return Promise.reject(new Error('`namespace` is required'));
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
if (!options.logger) {
|
|
147
|
+
return Promise.reject(new Error('`options.logger` is required'));
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
options.logger.info('session-storage-store-adapter: returning binding');
|
|
151
|
+
|
|
152
|
+
return Promise.resolve(new this.Bound(namespace, options));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import runAbstractStorageAdapterSpec from '@webex/storage-adapter-spec';
|
|
6
|
-
import {skipInNode} from '@webex/test-helper-mocha';
|
|
7
|
-
import StorageAdapterSessionStorage from '@webex/storage-adapter-session-storage';
|
|
8
|
-
|
|
9
|
-
skipInNode(describe)('StorageAdapterSessionStorage', () => {
|
|
10
|
-
runAbstractStorageAdapterSpec(new StorageAdapterSessionStorage('test'));
|
|
11
|
-
});
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import runAbstractStorageAdapterSpec from '@webex/storage-adapter-spec';
|
|
6
|
+
import {skipInNode} from '@webex/test-helper-mocha';
|
|
7
|
+
import StorageAdapterSessionStorage from '@webex/storage-adapter-session-storage';
|
|
8
|
+
|
|
9
|
+
skipInNode(describe)('StorageAdapterSessionStorage', () => {
|
|
10
|
+
runAbstractStorageAdapterSpec(new StorageAdapterSessionStorage('test'));
|
|
11
|
+
});
|