@webex/webex-core 3.0.0-beta.2 → 3.0.0-beta.21
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/config.js +1 -11
- package/dist/config.js.map +1 -1
- package/dist/credentials-config.js +44 -64
- package/dist/credentials-config.js.map +1 -1
- package/dist/index.js +0 -76
- package/dist/index.js.map +1 -1
- package/dist/interceptors/auth.js +22 -55
- package/dist/interceptors/auth.js.map +1 -1
- package/dist/interceptors/default-options.js +0 -20
- package/dist/interceptors/default-options.js.map +1 -1
- package/dist/interceptors/embargo.js +0 -21
- package/dist/interceptors/embargo.js.map +1 -1
- package/dist/interceptors/network-timing.js +2 -21
- package/dist/interceptors/network-timing.js.map +1 -1
- package/dist/interceptors/payload-transformer.js +2 -22
- package/dist/interceptors/payload-transformer.js.map +1 -1
- package/dist/interceptors/rate-limit.js +25 -57
- package/dist/interceptors/rate-limit.js.map +1 -1
- package/dist/interceptors/redirect.js +4 -33
- package/dist/interceptors/redirect.js.map +1 -1
- package/dist/interceptors/request-event.js +3 -30
- package/dist/interceptors/request-event.js.map +1 -1
- package/dist/interceptors/request-logger.js +1 -30
- package/dist/interceptors/request-logger.js.map +1 -1
- package/dist/interceptors/request-timing.js +3 -22
- package/dist/interceptors/request-timing.js.map +1 -1
- package/dist/interceptors/response-logger.js +2 -31
- package/dist/interceptors/response-logger.js.map +1 -1
- package/dist/interceptors/user-agent.js +2 -29
- package/dist/interceptors/user-agent.js.map +1 -1
- package/dist/interceptors/webex-tracking-id.js +5 -28
- package/dist/interceptors/webex-tracking-id.js.map +1 -1
- package/dist/interceptors/webex-user-agent.js +5 -38
- package/dist/interceptors/webex-user-agent.js.map +1 -1
- package/dist/lib/batcher.js +3 -51
- package/dist/lib/batcher.js.map +1 -1
- package/dist/lib/credentials/credentials.js +39 -119
- package/dist/lib/credentials/credentials.js.map +1 -1
- package/dist/lib/credentials/grant-errors.js +0 -49
- package/dist/lib/credentials/grant-errors.js.map +1 -1
- package/dist/lib/credentials/index.js +1 -13
- package/dist/lib/credentials/index.js.map +1 -1
- package/dist/lib/credentials/scope.js +1 -7
- package/dist/lib/credentials/scope.js.map +1 -1
- package/dist/lib/credentials/token-collection.js +1 -7
- package/dist/lib/credentials/token-collection.js.map +1 -1
- package/dist/lib/credentials/token.js +39 -118
- package/dist/lib/credentials/token.js.map +1 -1
- package/dist/lib/page.js +13 -26
- package/dist/lib/page.js.map +1 -1
- package/dist/lib/services/constants.js +0 -2
- package/dist/lib/services/constants.js.map +1 -1
- package/dist/lib/services/index.js +1 -28
- package/dist/lib/services/index.js.map +1 -1
- package/dist/lib/services/interceptors/server-error.js +2 -23
- package/dist/lib/services/interceptors/server-error.js.map +1 -1
- package/dist/lib/services/interceptors/service.js +12 -34
- package/dist/lib/services/interceptors/service.js.map +1 -1
- package/dist/lib/services/metrics.js +0 -2
- package/dist/lib/services/metrics.js.map +1 -1
- package/dist/lib/services/service-catalog.js +10 -90
- package/dist/lib/services/service-catalog.js.map +1 -1
- package/dist/lib/services/service-fed-ramp.js +0 -2
- package/dist/lib/services/service-fed-ramp.js.map +1 -1
- package/dist/lib/services/service-host.js +47 -62
- package/dist/lib/services/service-host.js.map +1 -1
- package/dist/lib/services/service-registry.js +78 -90
- package/dist/lib/services/service-registry.js.map +1 -1
- package/dist/lib/services/service-state.js +3 -15
- package/dist/lib/services/service-state.js.map +1 -1
- package/dist/lib/services/service-url.js +4 -25
- package/dist/lib/services/service-url.js.map +1 -1
- package/dist/lib/services/services.js +122 -238
- package/dist/lib/services/services.js.map +1 -1
- package/dist/lib/stateless-webex-plugin.js +5 -28
- package/dist/lib/stateless-webex-plugin.js.map +1 -1
- package/dist/lib/storage/decorators.js +19 -62
- package/dist/lib/storage/decorators.js.map +1 -1
- package/dist/lib/storage/errors.js +0 -23
- package/dist/lib/storage/errors.js.map +1 -1
- package/dist/lib/storage/index.js +2 -16
- package/dist/lib/storage/index.js.map +1 -1
- package/dist/lib/storage/make-webex-plugin-store.js +11 -41
- package/dist/lib/storage/make-webex-plugin-store.js.map +1 -1
- package/dist/lib/storage/make-webex-store.js +8 -30
- package/dist/lib/storage/make-webex-store.js.map +1 -1
- package/dist/lib/storage/memory-store-adapter.js +1 -19
- package/dist/lib/storage/memory-store-adapter.js.map +1 -1
- package/dist/lib/webex-core-plugin-mixin.js +9 -29
- package/dist/lib/webex-core-plugin-mixin.js.map +1 -1
- package/dist/lib/webex-http-error.js +1 -31
- package/dist/lib/webex-http-error.js.map +1 -1
- package/dist/lib/webex-internal-core-plugin-mixin.js +9 -29
- package/dist/lib/webex-internal-core-plugin-mixin.js.map +1 -1
- package/dist/lib/webex-plugin.js +6 -40
- package/dist/lib/webex-plugin.js.map +1 -1
- package/dist/plugins/logger.js +3 -17
- package/dist/plugins/logger.js.map +1 -1
- package/dist/webex-core.js +79 -203
- package/dist/webex-core.js.map +1 -1
- package/dist/webex-internal-core.js +0 -10
- package/dist/webex-internal-core.js.map +1 -1
- package/package.json +14 -14
- package/src/config.js +9 -11
- package/src/credentials-config.js +110 -72
- package/src/index.js +4 -14
- package/src/interceptors/auth.js +36 -37
- package/src/interceptors/default-options.js +0 -1
- package/src/interceptors/embargo.js +1 -1
- package/src/interceptors/payload-transformer.js +1 -2
- package/src/interceptors/rate-limit.js +8 -5
- package/src/interceptors/redirect.js +14 -8
- package/src/interceptors/request-event.js +4 -8
- package/src/interceptors/request-logger.js +8 -5
- package/src/interceptors/response-logger.js +11 -8
- package/src/interceptors/user-agent.js +1 -2
- package/src/interceptors/webex-user-agent.js +3 -9
- package/src/lib/batcher.js +70 -69
- package/src/lib/credentials/credentials.js +112 -122
- package/src/lib/credentials/grant-errors.js +6 -7
- package/src/lib/credentials/index.js +1 -4
- package/src/lib/credentials/scope.js +1 -4
- package/src/lib/credentials/token-collection.js +1 -1
- package/src/lib/credentials/token.js +86 -80
- package/src/lib/page.js +10 -11
- package/src/lib/services/constants.js +3 -13
- package/src/lib/services/index.js +2 -2
- package/src/lib/services/interceptors/server-error.js +12 -7
- package/src/lib/services/interceptors/service.js +6 -5
- package/src/lib/services/metrics.js +1 -1
- package/src/lib/services/service-catalog.js +110 -100
- package/src/lib/services/service-fed-ramp.js +1 -2
- package/src/lib/services/service-host.js +10 -17
- package/src/lib/services/service-registry.js +69 -96
- package/src/lib/services/service-state.js +4 -6
- package/src/lib/services/service-url.js +24 -23
- package/src/lib/services/services.js +260 -251
- package/src/lib/stateless-webex-plugin.js +4 -2
- package/src/lib/storage/decorators.js +68 -66
- package/src/lib/storage/index.js +4 -6
- package/src/lib/storage/make-webex-plugin-store.js +34 -21
- package/src/lib/storage/make-webex-store.js +6 -7
- package/src/lib/storage/memory-store-adapter.js +3 -3
- package/src/lib/webex-core-plugin-mixin.js +10 -7
- package/src/lib/webex-http-error.js +7 -8
- package/src/lib/webex-internal-core-plugin-mixin.js +9 -6
- package/src/lib/webex-plugin.js +41 -34
- package/src/plugins/logger.js +8 -3
- package/src/webex-core.js +185 -116
- package/src/webex-internal-core.js +15 -9
- package/test/integration/spec/credentials/credentials.js +26 -30
- package/test/integration/spec/credentials/token.js +36 -33
- package/test/integration/spec/services/service-catalog.js +177 -156
- package/test/integration/spec/services/services.js +313 -304
- package/test/integration/spec/webex-core.js +98 -86
- package/test/unit/spec/_setup.js +26 -18
- package/test/unit/spec/credentials/credentials.js +189 -154
- package/test/unit/spec/credentials/token.js +94 -76
- package/test/unit/spec/interceptors/auth.js +291 -243
- package/test/unit/spec/interceptors/default-options.js +36 -24
- package/test/unit/spec/interceptors/embargo.js +32 -27
- package/test/unit/spec/interceptors/network-timing.js +2 -2
- package/test/unit/spec/interceptors/payload-transformer.js +61 -52
- package/test/unit/spec/interceptors/rate-limit.js +104 -75
- package/test/unit/spec/interceptors/redirect.js +22 -20
- package/test/unit/spec/interceptors/request-timing.js +18 -22
- package/test/unit/spec/interceptors/user-agent.js +28 -16
- package/test/unit/spec/interceptors/webex-tracking-id.js +14 -8
- package/test/unit/spec/interceptors/webex-user-agent.js +83 -37
- package/test/unit/spec/lib/batcher.js +36 -32
- package/test/unit/spec/lib/page.js +36 -32
- package/test/unit/spec/lib/webex-plugin.js +1 -1
- package/test/unit/spec/services/interceptors/server-error.js +67 -90
- package/test/unit/spec/services/interceptors/service.js +17 -28
- package/test/unit/spec/services/service-catalog.js +19 -27
- package/test/unit/spec/services/service-host.js +29 -26
- package/test/unit/spec/services/service-registry.js +128 -170
- package/test/unit/spec/services/service-state.js +13 -22
- package/test/unit/spec/services/service-url.js +24 -43
- package/test/unit/spec/services/services.js +85 -41
- package/test/unit/spec/storage/persist.js +6 -9
- package/test/unit/spec/storage/wait-for-value.js +22 -21
- package/test/unit/spec/webex-core.js +78 -57
- package/test/unit/spec/webex-internal-core.js +56 -31
|
@@ -1,44 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
-
|
|
5
4
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
|
-
|
|
11
8
|
exports.persist = persist;
|
|
12
9
|
exports.waitForValue = waitForValue;
|
|
13
|
-
|
|
14
10
|
var _apply = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/apply"));
|
|
15
|
-
|
|
16
11
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
17
|
-
|
|
18
12
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
|
|
19
|
-
|
|
20
13
|
var _set = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/set"));
|
|
21
|
-
|
|
22
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
23
|
-
|
|
24
15
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/typeof"));
|
|
25
|
-
|
|
26
16
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/toConsumableArray"));
|
|
27
|
-
|
|
28
17
|
var _wrap2 = _interopRequireDefault(require("lodash/wrap"));
|
|
29
|
-
|
|
30
18
|
var _result2 = _interopRequireDefault(require("lodash/result"));
|
|
31
|
-
|
|
32
19
|
var _identity2 = _interopRequireDefault(require("lodash/identity"));
|
|
33
|
-
|
|
34
20
|
var _debounce2 = _interopRequireDefault(require("lodash/debounce"));
|
|
35
|
-
|
|
36
21
|
var _curry2 = _interopRequireDefault(require("lodash/curry"));
|
|
37
|
-
|
|
38
22
|
var _common = require("@webex/common");
|
|
39
|
-
|
|
40
23
|
var _errors = require("./errors");
|
|
41
|
-
|
|
42
24
|
/**
|
|
43
25
|
* Stores the result of fn before returning it
|
|
44
26
|
* @param {string} key
|
|
@@ -49,47 +31,41 @@ function persist() {
|
|
|
49
31
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
50
32
|
args[_key] = arguments[_key];
|
|
51
33
|
}
|
|
52
|
-
|
|
53
34
|
if (args.length === 3) {
|
|
54
35
|
return persist('@').apply(void 0, args);
|
|
55
36
|
}
|
|
56
|
-
|
|
57
37
|
var key = args[0],
|
|
58
|
-
|
|
38
|
+
decider = args[1];
|
|
59
39
|
return function persistDecorator(target, prop, descriptor) {
|
|
60
40
|
if (prop !== 'initialize') {
|
|
61
41
|
// Once we have class-based alternative to AmpersandState, it should be
|
|
62
42
|
// detected here.
|
|
63
43
|
throw new TypeError('@persist can only currently be applied to AmpersandState objects or their derivatives and must be applied to the initialize method');
|
|
64
44
|
}
|
|
65
|
-
|
|
66
45
|
descriptor.value = (0, _wrap2.default)(descriptor.value, function persistExecutor(fn) {
|
|
67
46
|
var _this = this;
|
|
68
|
-
|
|
69
47
|
for (var _len2 = arguments.length, initializeArgs = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
70
48
|
initializeArgs[_key2 - 1] = arguments[_key2];
|
|
71
49
|
}
|
|
72
|
-
|
|
73
50
|
var ret = (0, _apply.default)(fn, this, initializeArgs);
|
|
74
|
-
var changeEvent = key === '@' ? 'change' : "change:".concat(key);
|
|
51
|
+
var changeEvent = key === '@' ? 'change' : "change:".concat(key);
|
|
52
|
+
|
|
53
|
+
// Some scenarios will lead to lots of change events on a single tick; we
|
|
75
54
|
// really only care about writing once things have stopped changing. with
|
|
76
55
|
// a debounce of zero, we're effectively coalescing all the changes
|
|
77
56
|
// triggered by a single call to set() and commiting them on the next tick
|
|
78
57
|
// eslint-disable-next-line no-invalid-this
|
|
79
|
-
|
|
80
58
|
this.on(changeEvent, (0, _debounce2.default)(function () {
|
|
81
59
|
var shouldPersist = !decider || _apply.default.apply(Reflect, [decider, _this].concat(initializeArgs));
|
|
82
|
-
|
|
83
60
|
if (!shouldPersist) {
|
|
84
61
|
return _promise.default.resolve();
|
|
85
62
|
}
|
|
86
|
-
|
|
87
63
|
if (key === '@') {
|
|
88
64
|
// eslint-disable-next-line no-invalid-this
|
|
89
65
|
return _this.boundedStorage.put(key, _this);
|
|
90
|
-
}
|
|
91
|
-
|
|
66
|
+
}
|
|
92
67
|
|
|
68
|
+
// eslint-disable-next-line no-invalid-this
|
|
93
69
|
return _this.boundedStorage.put(key, _this[key]);
|
|
94
70
|
}, 0));
|
|
95
71
|
return ret;
|
|
@@ -97,11 +73,11 @@ function persist() {
|
|
|
97
73
|
prepareInitialize(target, prop);
|
|
98
74
|
};
|
|
99
75
|
}
|
|
100
|
-
|
|
101
76
|
var M = _map.default;
|
|
102
77
|
var S = _set.default;
|
|
103
78
|
var BlockingKeyMap = (0, _common.make)(M, M, S);
|
|
104
79
|
var blockingKeys = new BlockingKeyMap();
|
|
80
|
+
|
|
105
81
|
/**
|
|
106
82
|
* Prevents fn from executing until key has been (attempted to be) loaded
|
|
107
83
|
* @param {string} key
|
|
@@ -109,40 +85,36 @@ var blockingKeys = new BlockingKeyMap();
|
|
|
109
85
|
* @private
|
|
110
86
|
* @returns {Promise} result of fn
|
|
111
87
|
*/
|
|
112
|
-
|
|
113
88
|
function waitForValue(key) {
|
|
114
89
|
if (!key) {
|
|
115
90
|
throw new Error('`key` is required');
|
|
116
91
|
}
|
|
117
|
-
|
|
118
92
|
return function waitForValueDecorator(target, prop, descriptor) {
|
|
119
93
|
blockingKeys.add(target, prop, key);
|
|
120
94
|
descriptor.value = (0, _wrap2.default)(descriptor.value, function waitForValueExecutor(fn) {
|
|
121
95
|
var _this2 = this;
|
|
122
|
-
|
|
123
96
|
for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
|
|
124
97
|
args[_key3 - 1] = arguments[_key3];
|
|
125
98
|
}
|
|
126
|
-
|
|
127
99
|
var keys = blockingKeys.get(target, prop);
|
|
128
100
|
return _promise.default.all((0, _toConsumableArray2.default)(keys).map(function (k) {
|
|
129
101
|
return _this2.boundedStorage.waitFor(k);
|
|
130
102
|
})).then(function () {
|
|
131
103
|
return (0, _apply.default)(fn, _this2, args);
|
|
132
104
|
});
|
|
133
|
-
});
|
|
134
|
-
// definitions
|
|
105
|
+
});
|
|
135
106
|
|
|
107
|
+
// This *should* make decorators compatible with AmpersandState class
|
|
108
|
+
// definitions
|
|
136
109
|
if ((0, _typeof2.default)(target) === 'object' && !target.prototype) {
|
|
137
110
|
target[prop] = descriptor.value;
|
|
138
111
|
}
|
|
139
|
-
|
|
140
112
|
prepareInitialize(target, prop);
|
|
141
113
|
return descriptor;
|
|
142
114
|
};
|
|
143
115
|
}
|
|
144
|
-
|
|
145
116
|
var inited = new _set.default();
|
|
117
|
+
|
|
146
118
|
/**
|
|
147
119
|
* finds a means of identitying the `target` param passed to
|
|
148
120
|
* `prepareInitialize()`. When possible, avoids duplicate `init()` calls if
|
|
@@ -152,71 +124,60 @@ var inited = new _set.default();
|
|
|
152
124
|
* @private
|
|
153
125
|
* @returns {String|Constructor}
|
|
154
126
|
*/
|
|
155
|
-
|
|
156
127
|
function identifyTarget(target) {
|
|
157
128
|
if (target.namespace) {
|
|
158
129
|
return target.namespace;
|
|
159
130
|
}
|
|
160
|
-
|
|
161
131
|
return target;
|
|
162
132
|
}
|
|
163
|
-
|
|
164
133
|
var stack = new _set.default();
|
|
134
|
+
|
|
165
135
|
/**
|
|
166
136
|
* @param {Function} target
|
|
167
137
|
* @param {string} prop
|
|
168
138
|
* @private
|
|
169
139
|
* @returns {undefined}
|
|
170
140
|
*/
|
|
171
|
-
|
|
172
141
|
function prepareInitialize(target, prop) {
|
|
173
142
|
var id = identifyTarget(target);
|
|
174
|
-
|
|
175
143
|
if (!inited.has(id)) {
|
|
176
144
|
inited.add(id);
|
|
177
|
-
|
|
178
145
|
if (target.initialize) {
|
|
179
146
|
target.initialize = (0, _wrap2.default)(target.initialize, function applyInit(fn) {
|
|
180
147
|
for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
|
|
181
148
|
args[_key4 - 1] = arguments[_key4];
|
|
182
149
|
}
|
|
183
|
-
|
|
184
150
|
var ret = (0, _apply.default)(fn, this, args);
|
|
185
151
|
(0, _apply.default)(init, this, args);
|
|
186
152
|
return ret;
|
|
187
153
|
});
|
|
188
154
|
return;
|
|
189
155
|
}
|
|
190
|
-
|
|
191
156
|
target.initialize = init;
|
|
192
157
|
}
|
|
158
|
+
|
|
193
159
|
/**
|
|
194
160
|
* @private
|
|
195
161
|
* @returns {undefined}
|
|
196
162
|
*/
|
|
197
|
-
|
|
198
|
-
|
|
199
163
|
function init() {
|
|
200
164
|
var self = this;
|
|
201
165
|
var namespace = this.getNamespace();
|
|
202
166
|
this.webex.initialize = (0, _wrap2.default)(this.webex.initialize || _identity2.default, function applyInit(fn) {
|
|
203
167
|
var _this3 = this;
|
|
204
|
-
|
|
205
168
|
// Call webex's initalize method first
|
|
206
169
|
// Reminder: in order for MockWebex to accept initial storage data, the
|
|
207
170
|
// wrapped initialize() must be invoked before attempting to load data.
|
|
208
171
|
// Reminder: context here is `webex`, not `self`.
|
|
209
172
|
stack.add(namespace);
|
|
210
|
-
|
|
211
173
|
for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {
|
|
212
174
|
args[_key5 - 1] = arguments[_key5];
|
|
213
175
|
}
|
|
176
|
+
(0, _apply.default)(fn, this, args);
|
|
214
177
|
|
|
215
|
-
|
|
216
|
-
|
|
178
|
+
// Then prepare a function for setting values retrieved from storage
|
|
217
179
|
var set = (0, _curry2.default)(function (key, value) {
|
|
218
180
|
_this3.logger.debug("storage:(".concat(namespace, "): got `").concat(key, "` for first time"));
|
|
219
|
-
|
|
220
181
|
if (key === '@') {
|
|
221
182
|
self.parent.set((0, _defineProperty2.default)({}, namespace.toLowerCase(), value));
|
|
222
183
|
} else if ((0, _result2.default)(self[key], 'isState')) {
|
|
@@ -224,31 +185,27 @@ function prepareInitialize(target, prop) {
|
|
|
224
185
|
} else {
|
|
225
186
|
self.set(key, value);
|
|
226
187
|
}
|
|
227
|
-
|
|
228
188
|
_this3.logger.debug("storage:(".concat(namespace, "): set `").concat(key, "` for first time"));
|
|
229
|
-
});
|
|
189
|
+
});
|
|
230
190
|
|
|
191
|
+
// And prepare an error handler for when those keys can't be found
|
|
231
192
|
var handle = (0, _curry2.default)(function (key, reason) {
|
|
232
193
|
if (reason instanceof _errors.NotFoundError || process.env.NODE_ENV !== 'production' && reason.toString().includes('MockNotFoundError')) {
|
|
233
194
|
_this3.logger.debug("storage(".concat(namespace, "): no data for `").concat(key, "`, continuing"));
|
|
234
|
-
|
|
235
195
|
return _promise.default.resolve();
|
|
236
196
|
}
|
|
237
|
-
|
|
238
197
|
_this3.logger.error("storage(".concat(namespace, "): failed to init `").concat(key, "`"), reason);
|
|
239
|
-
|
|
240
198
|
return _promise.default.reject(reason);
|
|
241
|
-
});
|
|
199
|
+
});
|
|
242
200
|
|
|
201
|
+
// Iterate over the list of keys marked as blocking via `@waitForValue`
|
|
243
202
|
var keys = blockingKeys.get(target, prop);
|
|
244
203
|
var promises = [];
|
|
245
204
|
keys.forEach(function (key) {
|
|
246
205
|
promises.push(_this3.boundedStorage.get(namespace, key).then(set(key)).catch(handle(key)));
|
|
247
206
|
});
|
|
248
|
-
|
|
249
207
|
_promise.default.all(promises).then(function () {
|
|
250
208
|
stack.delete(namespace);
|
|
251
|
-
|
|
252
209
|
if (stack.size === 0) {
|
|
253
210
|
_this3.loaded = true;
|
|
254
211
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["persist","args","length","key","decider","persistDecorator","target","prop","descriptor","TypeError","value","persistExecutor","fn","initializeArgs","ret","changeEvent","on","shouldPersist","Reflect","resolve","boundedStorage","put","prepareInitialize","M","S","BlockingKeyMap","make","blockingKeys","waitForValue","Error","waitForValueDecorator","add","waitForValueExecutor","keys","get","all","map","k","waitFor","then","prototype","inited","identifyTarget","namespace","stack","id","has","initialize","applyInit","init","self","getNamespace","webex","set","logger","debug","parent","toLowerCase","handle","reason","NotFoundError","process","env","NODE_ENV","toString","includes","error","reject","promises","forEach","push","catch","delete","size","loaded"],"sources":["decorators.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint no-invalid-this: [0] */\n\nimport {\n curry,\n debounce,\n identity,\n result,\n wrap\n} from 'lodash';\nimport {make} from '@webex/common';\n\nimport {NotFoundError} from './errors';\n\n/**\n * Stores the result of fn before returning it\n * @param {string} key\n * @private\n * @returns {Promise} resolves with the result of fn\n */\nexport function persist(...args) {\n if (args.length === 3) {\n return persist('@')(...args);\n }\n\n const [key, decider] = args;\n\n return function persistDecorator(target, prop, descriptor) {\n if (prop !== 'initialize') {\n // Once we have class-based alternative to AmpersandState, it should be\n // detected here.\n throw new TypeError('@persist can only currently be applied to AmpersandState objects or their derivatives and must be applied to the initialize method');\n }\n\n descriptor.value = wrap(descriptor.value, function persistExecutor(fn, ...initializeArgs) {\n const ret = Reflect.apply(fn, this, initializeArgs);\n const changeEvent = key === '@' ? 'change' : `change:${key}`;\n\n // Some scenarios will lead to lots of change events on a single tick; we\n // really only care about writing once things have stopped changing. with\n // a debounce of zero, we're effectively coalescing all the changes\n // triggered by a single call to set() and commiting them on the next tick\n // eslint-disable-next-line no-invalid-this\n this.on(changeEvent, debounce(() => {\n const shouldPersist = !decider || Reflect.apply(decider, this, ...initializeArgs);\n\n if (!shouldPersist) {\n return Promise.resolve();\n }\n if (key === '@') {\n // eslint-disable-next-line no-invalid-this\n return this.boundedStorage.put(key, this);\n }\n\n // eslint-disable-next-line no-invalid-this\n return this.boundedStorage.put(key, this[key]);\n }, 0));\n\n return ret;\n });\n\n prepareInitialize(target, prop);\n };\n}\n\nconst M = Map;\nconst S = Set;\nconst BlockingKeyMap = make(M, M, S);\nconst blockingKeys = new BlockingKeyMap();\n\n/**\n * Prevents fn from executing until key has been (attempted to be) loaded\n * @param {string} key\n * @param {Function} fn\n * @private\n * @returns {Promise} result of fn\n */\nexport function waitForValue(key) {\n if (!key) {\n throw new Error('`key` is required');\n }\n\n return function waitForValueDecorator(target, prop, descriptor) {\n blockingKeys.add(target, prop, key);\n descriptor.value = wrap(descriptor.value, function waitForValueExecutor(fn, ...args) {\n const keys = blockingKeys.get(target, prop);\n\n return Promise.all([...keys].map((k) => this.boundedStorage.waitFor(k)))\n .then(() => Reflect.apply(fn, this, args));\n });\n\n // This *should* make decorators compatible with AmpersandState class\n // definitions\n if (typeof target === 'object' && !target.prototype) {\n target[prop] = descriptor.value;\n }\n\n prepareInitialize(target, prop);\n\n return descriptor;\n };\n}\n\nconst inited = new Set();\n\n/**\n * finds a means of identitying the `target` param passed to\n * `prepareInitialize()`. When possible, avoids duplicate `init()` calls if\n * namespaces collide\n *\n * @param {Object|Constructor} target\n * @private\n * @returns {String|Constructor}\n */\nfunction identifyTarget(target) {\n if (target.namespace) {\n return target.namespace;\n }\n\n return target;\n}\n\nconst stack = new Set();\n\n/**\n * @param {Function} target\n * @param {string} prop\n * @private\n * @returns {undefined}\n */\nfunction prepareInitialize(target, prop) {\n const id = identifyTarget(target);\n\n if (!inited.has(id)) {\n inited.add(id);\n if (target.initialize) {\n target.initialize = wrap(target.initialize, function applyInit(fn, ...args) {\n const ret = Reflect.apply(fn, this, args);\n\n Reflect.apply(init, this, args);\n\n return ret;\n });\n\n return;\n }\n\n target.initialize = init;\n }\n\n /**\n * @private\n * @returns {undefined}\n */\n function init() {\n const self = this;\n const namespace = this.getNamespace();\n\n this.webex.initialize = wrap(this.webex.initialize || identity, function applyInit(fn, ...args) {\n // Call webex's initalize method first\n // Reminder: in order for MockWebex to accept initial storage data, the\n // wrapped initialize() must be invoked before attempting to load data.\n // Reminder: context here is `webex`, not `self`.\n stack.add(namespace);\n Reflect.apply(fn, this, args);\n\n // Then prepare a function for setting values retrieved from storage\n const set = curry((key, value) => {\n this.logger.debug(`storage:(${namespace}): got \\`${key}\\` for first time`);\n if (key === '@') {\n self.parent.set({\n [namespace.toLowerCase()]: value\n });\n }\n else if (result(self[key], 'isState')) {\n self[key].set(value);\n }\n else {\n self.set(key, value);\n }\n this.logger.debug(`storage:(${namespace}): set \\`${key}\\` for first time`);\n });\n\n // And prepare an error handler for when those keys can't be found\n const handle = curry((key, reason) => {\n if (reason instanceof NotFoundError || process.env.NODE_ENV !== 'production' && reason.toString().includes('MockNotFoundError')) {\n this.logger.debug(`storage(${namespace}): no data for \\`${key}\\`, continuing`);\n\n return Promise.resolve();\n }\n this.logger.error(`storage(${namespace}): failed to init \\`${key}\\``, reason);\n\n return Promise.reject(reason);\n });\n\n // Iterate over the list of keys marked as blocking via `@waitForValue`\n const keys = blockingKeys.get(target, prop);\n const promises = [];\n\n keys.forEach((key) => {\n promises.push(this.boundedStorage.get(namespace, key)\n .then(set(key))\n .catch(handle(key)));\n });\n\n Promise.all(promises)\n .then(() => {\n stack.delete(namespace);\n if (stack.size === 0) {\n this.loaded = true;\n }\n });\n });\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["persist","args","length","key","decider","persistDecorator","target","prop","descriptor","TypeError","value","persistExecutor","fn","initializeArgs","ret","changeEvent","on","shouldPersist","Reflect","resolve","boundedStorage","put","prepareInitialize","M","S","BlockingKeyMap","make","blockingKeys","waitForValue","Error","waitForValueDecorator","add","waitForValueExecutor","keys","get","all","map","k","waitFor","then","prototype","inited","identifyTarget","namespace","stack","id","has","initialize","applyInit","init","self","getNamespace","webex","set","logger","debug","parent","toLowerCase","handle","reason","NotFoundError","process","env","NODE_ENV","toString","includes","error","reject","promises","forEach","push","catch","delete","size","loaded"],"sources":["decorators.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint no-invalid-this: [0] */\n\nimport {curry, debounce, identity, result, wrap} from 'lodash';\nimport {make} from '@webex/common';\n\nimport {NotFoundError} from './errors';\n\n/**\n * Stores the result of fn before returning it\n * @param {string} key\n * @private\n * @returns {Promise} resolves with the result of fn\n */\nexport function persist(...args) {\n if (args.length === 3) {\n return persist('@')(...args);\n }\n\n const [key, decider] = args;\n\n return function persistDecorator(target, prop, descriptor) {\n if (prop !== 'initialize') {\n // Once we have class-based alternative to AmpersandState, it should be\n // detected here.\n throw new TypeError(\n '@persist can only currently be applied to AmpersandState objects or their derivatives and must be applied to the initialize method'\n );\n }\n\n descriptor.value = wrap(descriptor.value, function persistExecutor(fn, ...initializeArgs) {\n const ret = Reflect.apply(fn, this, initializeArgs);\n const changeEvent = key === '@' ? 'change' : `change:${key}`;\n\n // Some scenarios will lead to lots of change events on a single tick; we\n // really only care about writing once things have stopped changing. with\n // a debounce of zero, we're effectively coalescing all the changes\n // triggered by a single call to set() and commiting them on the next tick\n // eslint-disable-next-line no-invalid-this\n this.on(\n changeEvent,\n debounce(() => {\n const shouldPersist = !decider || Reflect.apply(decider, this, ...initializeArgs);\n\n if (!shouldPersist) {\n return Promise.resolve();\n }\n if (key === '@') {\n // eslint-disable-next-line no-invalid-this\n return this.boundedStorage.put(key, this);\n }\n\n // eslint-disable-next-line no-invalid-this\n return this.boundedStorage.put(key, this[key]);\n }, 0)\n );\n\n return ret;\n });\n\n prepareInitialize(target, prop);\n };\n}\n\nconst M = Map;\nconst S = Set;\nconst BlockingKeyMap = make(M, M, S);\nconst blockingKeys = new BlockingKeyMap();\n\n/**\n * Prevents fn from executing until key has been (attempted to be) loaded\n * @param {string} key\n * @param {Function} fn\n * @private\n * @returns {Promise} result of fn\n */\nexport function waitForValue(key) {\n if (!key) {\n throw new Error('`key` is required');\n }\n\n return function waitForValueDecorator(target, prop, descriptor) {\n blockingKeys.add(target, prop, key);\n descriptor.value = wrap(descriptor.value, function waitForValueExecutor(fn, ...args) {\n const keys = blockingKeys.get(target, prop);\n\n return Promise.all([...keys].map((k) => this.boundedStorage.waitFor(k))).then(() =>\n Reflect.apply(fn, this, args)\n );\n });\n\n // This *should* make decorators compatible with AmpersandState class\n // definitions\n if (typeof target === 'object' && !target.prototype) {\n target[prop] = descriptor.value;\n }\n\n prepareInitialize(target, prop);\n\n return descriptor;\n };\n}\n\nconst inited = new Set();\n\n/**\n * finds a means of identitying the `target` param passed to\n * `prepareInitialize()`. When possible, avoids duplicate `init()` calls if\n * namespaces collide\n *\n * @param {Object|Constructor} target\n * @private\n * @returns {String|Constructor}\n */\nfunction identifyTarget(target) {\n if (target.namespace) {\n return target.namespace;\n }\n\n return target;\n}\n\nconst stack = new Set();\n\n/**\n * @param {Function} target\n * @param {string} prop\n * @private\n * @returns {undefined}\n */\nfunction prepareInitialize(target, prop) {\n const id = identifyTarget(target);\n\n if (!inited.has(id)) {\n inited.add(id);\n if (target.initialize) {\n target.initialize = wrap(target.initialize, function applyInit(fn, ...args) {\n const ret = Reflect.apply(fn, this, args);\n\n Reflect.apply(init, this, args);\n\n return ret;\n });\n\n return;\n }\n\n target.initialize = init;\n }\n\n /**\n * @private\n * @returns {undefined}\n */\n function init() {\n const self = this;\n const namespace = this.getNamespace();\n\n this.webex.initialize = wrap(\n this.webex.initialize || identity,\n function applyInit(fn, ...args) {\n // Call webex's initalize method first\n // Reminder: in order for MockWebex to accept initial storage data, the\n // wrapped initialize() must be invoked before attempting to load data.\n // Reminder: context here is `webex`, not `self`.\n stack.add(namespace);\n Reflect.apply(fn, this, args);\n\n // Then prepare a function for setting values retrieved from storage\n const set = curry((key, value) => {\n this.logger.debug(`storage:(${namespace}): got \\`${key}\\` for first time`);\n if (key === '@') {\n self.parent.set({\n [namespace.toLowerCase()]: value,\n });\n } else if (result(self[key], 'isState')) {\n self[key].set(value);\n } else {\n self.set(key, value);\n }\n this.logger.debug(`storage:(${namespace}): set \\`${key}\\` for first time`);\n });\n\n // And prepare an error handler for when those keys can't be found\n const handle = curry((key, reason) => {\n if (\n reason instanceof NotFoundError ||\n (process.env.NODE_ENV !== 'production' &&\n reason.toString().includes('MockNotFoundError'))\n ) {\n this.logger.debug(`storage(${namespace}): no data for \\`${key}\\`, continuing`);\n\n return Promise.resolve();\n }\n this.logger.error(`storage(${namespace}): failed to init \\`${key}\\``, reason);\n\n return Promise.reject(reason);\n });\n\n // Iterate over the list of keys marked as blocking via `@waitForValue`\n const keys = blockingKeys.get(target, prop);\n const promises = [];\n\n keys.forEach((key) => {\n promises.push(this.boundedStorage.get(namespace, key).then(set(key)).catch(handle(key)));\n });\n\n Promise.all(promises).then(() => {\n stack.delete(namespace);\n if (stack.size === 0) {\n this.loaded = true;\n }\n });\n }\n );\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,67 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
|
|
4
|
-
|
|
5
4
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
6
|
-
|
|
7
5
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
8
|
-
|
|
9
6
|
_Object$defineProperty(exports, "__esModule", {
|
|
10
7
|
value: true
|
|
11
8
|
});
|
|
12
|
-
|
|
13
9
|
exports.StorageError = exports.NotFoundError = void 0;
|
|
14
|
-
|
|
15
10
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
16
|
-
|
|
17
11
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
18
|
-
|
|
19
12
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
|
|
20
|
-
|
|
21
13
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
|
22
|
-
|
|
23
14
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
24
|
-
|
|
25
15
|
var _common = require("@webex/common");
|
|
26
|
-
|
|
27
16
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
28
|
-
|
|
29
17
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
30
|
-
|
|
31
18
|
/**
|
|
32
19
|
* General storage layer error
|
|
33
20
|
*/
|
|
34
21
|
var StorageError = /*#__PURE__*/function (_Exception) {
|
|
35
22
|
(0, _inherits2.default)(StorageError, _Exception);
|
|
36
|
-
|
|
37
23
|
var _super = _createSuper(StorageError);
|
|
38
|
-
|
|
39
24
|
function StorageError() {
|
|
40
25
|
(0, _classCallCheck2.default)(this, StorageError);
|
|
41
26
|
return _super.apply(this, arguments);
|
|
42
27
|
}
|
|
43
|
-
|
|
44
28
|
return (0, _createClass2.default)(StorageError);
|
|
45
29
|
}(_common.Exception);
|
|
46
30
|
/**
|
|
47
31
|
* StorageError thrown when the storage layer does not contain the request key
|
|
48
32
|
*/
|
|
49
|
-
|
|
50
|
-
|
|
51
33
|
exports.StorageError = StorageError;
|
|
52
|
-
|
|
53
34
|
var NotFoundError = /*#__PURE__*/function (_StorageError) {
|
|
54
35
|
(0, _inherits2.default)(NotFoundError, _StorageError);
|
|
55
|
-
|
|
56
36
|
var _super2 = _createSuper(NotFoundError);
|
|
57
|
-
|
|
58
37
|
function NotFoundError() {
|
|
59
38
|
(0, _classCallCheck2.default)(this, NotFoundError);
|
|
60
39
|
return _super2.apply(this, arguments);
|
|
61
40
|
}
|
|
62
|
-
|
|
63
41
|
return (0, _createClass2.default)(NotFoundError);
|
|
64
42
|
}(StorageError);
|
|
65
|
-
|
|
66
43
|
exports.NotFoundError = NotFoundError;
|
|
67
44
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StorageError","Exception","NotFoundError"],"sources":["errors.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Exception} from '@webex/common';\n\n/**\n * General storage layer error\n */\nexport class StorageError extends Exception {}\n\n/**\n * StorageError thrown when the storage layer does not contain the request key\n */\nexport class NotFoundError extends StorageError {}\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["StorageError","Exception","NotFoundError"],"sources":["errors.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Exception} from '@webex/common';\n\n/**\n * General storage layer error\n */\nexport class StorageError extends Exception {}\n\n/**\n * StorageError thrown when the storage layer does not contain the request key\n */\nexport class NotFoundError extends StorageError {}\n"],"mappings":";;;;;;;;;;;;;;AAIA;AAAwC;AAAA;AAExC;AACA;AACA;AAFA,IAGaA,YAAY;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;AAAA,EAASC,iBAAS;AAE3C;AACA;AACA;AAFA;AAAA,IAGaC,aAAa;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;AAAA,EAASF,YAAY;AAAA"}
|
|
@@ -1,69 +1,55 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
-
|
|
5
4
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
|
-
|
|
11
8
|
_Object$defineProperty(exports, "MemoryStoreAdapter", {
|
|
12
9
|
enumerable: true,
|
|
13
10
|
get: function get() {
|
|
14
11
|
return _memoryStoreAdapter.default;
|
|
15
12
|
}
|
|
16
13
|
});
|
|
17
|
-
|
|
18
14
|
_Object$defineProperty(exports, "NotFoundError", {
|
|
19
15
|
enumerable: true,
|
|
20
16
|
get: function get() {
|
|
21
17
|
return _errors.NotFoundError;
|
|
22
18
|
}
|
|
23
19
|
});
|
|
24
|
-
|
|
25
20
|
_Object$defineProperty(exports, "StorageError", {
|
|
26
21
|
enumerable: true,
|
|
27
22
|
get: function get() {
|
|
28
23
|
return _errors.StorageError;
|
|
29
24
|
}
|
|
30
25
|
});
|
|
31
|
-
|
|
32
26
|
_Object$defineProperty(exports, "makeWebexPluginStore", {
|
|
33
27
|
enumerable: true,
|
|
34
28
|
get: function get() {
|
|
35
29
|
return _makeWebexPluginStore.default;
|
|
36
30
|
}
|
|
37
31
|
});
|
|
38
|
-
|
|
39
32
|
_Object$defineProperty(exports, "makeWebexStore", {
|
|
40
33
|
enumerable: true,
|
|
41
34
|
get: function get() {
|
|
42
35
|
return _makeWebexStore.default;
|
|
43
36
|
}
|
|
44
37
|
});
|
|
45
|
-
|
|
46
38
|
_Object$defineProperty(exports, "persist", {
|
|
47
39
|
enumerable: true,
|
|
48
40
|
get: function get() {
|
|
49
41
|
return _decorators.persist;
|
|
50
42
|
}
|
|
51
43
|
});
|
|
52
|
-
|
|
53
44
|
_Object$defineProperty(exports, "waitForValue", {
|
|
54
45
|
enumerable: true,
|
|
55
46
|
get: function get() {
|
|
56
47
|
return _decorators.waitForValue;
|
|
57
48
|
}
|
|
58
49
|
});
|
|
59
|
-
|
|
60
50
|
var _decorators = require("./decorators");
|
|
61
|
-
|
|
62
|
-
var
|
|
63
|
-
|
|
64
|
-
var _makeWebexPluginStore = _interopRequireDefault(require("./make-webex-plugin-store.js"));
|
|
65
|
-
|
|
51
|
+
var _makeWebexStore = _interopRequireDefault(require("./make-webex-store"));
|
|
52
|
+
var _makeWebexPluginStore = _interopRequireDefault(require("./make-webex-plugin-store"));
|
|
66
53
|
var _memoryStoreAdapter = _interopRequireDefault(require("./memory-store-adapter"));
|
|
67
|
-
|
|
68
54
|
var _errors = require("./errors");
|
|
69
55
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport {
|
|
1
|
+
{"version":3,"names":[],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport {persist, waitForValue} from './decorators';\nexport {default as makeWebexStore} from './make-webex-store';\nexport {default as makeWebexPluginStore} from './make-webex-plugin-store';\n\nexport {default as MemoryStoreAdapter} from './memory-store-adapter';\nexport {StorageError, NotFoundError} from './errors';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;AACA;AACA;AAEA;AACA"}
|