@webex/webex-core 2.59.1 → 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.
Files changed (189) hide show
  1. package/.eslintrc.js +6 -6
  2. package/README.md +79 -79
  3. package/babel.config.js +3 -3
  4. package/dist/config.js +24 -24
  5. package/dist/config.js.map +1 -1
  6. package/dist/credentials-config.js +56 -56
  7. package/dist/credentials-config.js.map +1 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/interceptors/auth.js +28 -28
  10. package/dist/interceptors/auth.js.map +1 -1
  11. package/dist/interceptors/default-options.js +24 -24
  12. package/dist/interceptors/default-options.js.map +1 -1
  13. package/dist/interceptors/embargo.js +9 -9
  14. package/dist/interceptors/embargo.js.map +1 -1
  15. package/dist/interceptors/network-timing.js +19 -19
  16. package/dist/interceptors/network-timing.js.map +1 -1
  17. package/dist/interceptors/payload-transformer.js +19 -19
  18. package/dist/interceptors/payload-transformer.js.map +1 -1
  19. package/dist/interceptors/rate-limit.js +40 -40
  20. package/dist/interceptors/rate-limit.js.map +1 -1
  21. package/dist/interceptors/redirect.js +13 -13
  22. package/dist/interceptors/redirect.js.map +1 -1
  23. package/dist/interceptors/request-event.js +23 -23
  24. package/dist/interceptors/request-event.js.map +1 -1
  25. package/dist/interceptors/request-logger.js +13 -13
  26. package/dist/interceptors/request-logger.js.map +1 -1
  27. package/dist/interceptors/request-timing.js +23 -23
  28. package/dist/interceptors/request-timing.js.map +1 -1
  29. package/dist/interceptors/response-logger.js +19 -19
  30. package/dist/interceptors/response-logger.js.map +1 -1
  31. package/dist/interceptors/user-agent.js +29 -29
  32. package/dist/interceptors/user-agent.js.map +1 -1
  33. package/dist/interceptors/webex-tracking-id.js +15 -15
  34. package/dist/interceptors/webex-tracking-id.js.map +1 -1
  35. package/dist/interceptors/webex-user-agent.js +13 -13
  36. package/dist/interceptors/webex-user-agent.js.map +1 -1
  37. package/dist/lib/batcher.js +83 -83
  38. package/dist/lib/batcher.js.map +1 -1
  39. package/dist/lib/credentials/credentials.js +103 -103
  40. package/dist/lib/credentials/credentials.js.map +1 -1
  41. package/dist/lib/credentials/grant-errors.js +17 -17
  42. package/dist/lib/credentials/grant-errors.js.map +1 -1
  43. package/dist/lib/credentials/index.js +2 -2
  44. package/dist/lib/credentials/index.js.map +1 -1
  45. package/dist/lib/credentials/scope.js +11 -11
  46. package/dist/lib/credentials/scope.js.map +1 -1
  47. package/dist/lib/credentials/token-collection.js +2 -2
  48. package/dist/lib/credentials/token-collection.js.map +1 -1
  49. package/dist/lib/credentials/token.js +145 -145
  50. package/dist/lib/credentials/token.js.map +1 -1
  51. package/dist/lib/page.js +49 -49
  52. package/dist/lib/page.js.map +1 -1
  53. package/dist/lib/services/constants.js.map +1 -1
  54. package/dist/lib/services/index.js +2 -2
  55. package/dist/lib/services/index.js.map +1 -1
  56. package/dist/lib/services/interceptors/server-error.js +9 -9
  57. package/dist/lib/services/interceptors/server-error.js.map +1 -1
  58. package/dist/lib/services/interceptors/service.js +24 -24
  59. package/dist/lib/services/interceptors/service.js.map +1 -1
  60. package/dist/lib/services/metrics.js.map +1 -1
  61. package/dist/lib/services/service-catalog.js +104 -104
  62. package/dist/lib/services/service-catalog.js.map +1 -1
  63. package/dist/lib/services/service-fed-ramp.js.map +1 -1
  64. package/dist/lib/services/service-host.js +134 -134
  65. package/dist/lib/services/service-host.js.map +1 -1
  66. package/dist/lib/services/service-registry.js +175 -175
  67. package/dist/lib/services/service-registry.js.map +1 -1
  68. package/dist/lib/services/service-state.js +38 -38
  69. package/dist/lib/services/service-state.js.map +1 -1
  70. package/dist/lib/services/service-url.js +31 -31
  71. package/dist/lib/services/service-url.js.map +1 -1
  72. package/dist/lib/services/services.js +245 -245
  73. package/dist/lib/services/services.js.map +1 -1
  74. package/dist/lib/stateless-webex-plugin.js +28 -28
  75. package/dist/lib/stateless-webex-plugin.js.map +1 -1
  76. package/dist/lib/storage/decorators.js +27 -27
  77. package/dist/lib/storage/decorators.js.map +1 -1
  78. package/dist/lib/storage/errors.js +4 -4
  79. package/dist/lib/storage/errors.js.map +1 -1
  80. package/dist/lib/storage/index.js.map +1 -1
  81. package/dist/lib/storage/make-webex-plugin-store.js +44 -44
  82. package/dist/lib/storage/make-webex-plugin-store.js.map +1 -1
  83. package/dist/lib/storage/make-webex-store.js +40 -40
  84. package/dist/lib/storage/make-webex-store.js.map +1 -1
  85. package/dist/lib/storage/memory-store-adapter.js +9 -9
  86. package/dist/lib/storage/memory-store-adapter.js.map +1 -1
  87. package/dist/lib/webex-core-plugin-mixin.js +13 -13
  88. package/dist/lib/webex-core-plugin-mixin.js.map +1 -1
  89. package/dist/lib/webex-http-error.js +9 -9
  90. package/dist/lib/webex-http-error.js.map +1 -1
  91. package/dist/lib/webex-internal-core-plugin-mixin.js +13 -13
  92. package/dist/lib/webex-internal-core-plugin-mixin.js.map +1 -1
  93. package/dist/lib/webex-plugin.js +36 -36
  94. package/dist/lib/webex-plugin.js.map +1 -1
  95. package/dist/plugins/logger.js +9 -9
  96. package/dist/plugins/logger.js.map +1 -1
  97. package/dist/webex-core.js +104 -104
  98. package/dist/webex-core.js.map +1 -1
  99. package/dist/webex-internal-core.js +12 -12
  100. package/dist/webex-internal-core.js.map +1 -1
  101. package/jest.config.js +3 -3
  102. package/package.json +20 -19
  103. package/process +1 -1
  104. package/src/config.js +90 -90
  105. package/src/credentials-config.js +212 -212
  106. package/src/index.js +62 -62
  107. package/src/interceptors/auth.js +186 -186
  108. package/src/interceptors/default-options.js +55 -55
  109. package/src/interceptors/embargo.js +43 -43
  110. package/src/interceptors/network-timing.js +54 -54
  111. package/src/interceptors/payload-transformer.js +55 -55
  112. package/src/interceptors/rate-limit.js +169 -169
  113. package/src/interceptors/redirect.js +106 -106
  114. package/src/interceptors/request-event.js +93 -93
  115. package/src/interceptors/request-logger.js +78 -78
  116. package/src/interceptors/request-timing.js +65 -65
  117. package/src/interceptors/response-logger.js +98 -98
  118. package/src/interceptors/user-agent.js +77 -77
  119. package/src/interceptors/webex-tracking-id.js +73 -73
  120. package/src/interceptors/webex-user-agent.js +79 -79
  121. package/src/lib/batcher.js +307 -307
  122. package/src/lib/credentials/credentials.js +552 -552
  123. package/src/lib/credentials/grant-errors.js +92 -92
  124. package/src/lib/credentials/index.js +16 -16
  125. package/src/lib/credentials/scope.js +34 -34
  126. package/src/lib/credentials/token-collection.js +17 -17
  127. package/src/lib/credentials/token.js +559 -559
  128. package/src/lib/page.js +159 -159
  129. package/src/lib/services/constants.js +9 -9
  130. package/src/lib/services/index.js +26 -26
  131. package/src/lib/services/interceptors/server-error.js +48 -48
  132. package/src/lib/services/interceptors/service.js +101 -101
  133. package/src/lib/services/metrics.js +4 -4
  134. package/src/lib/services/service-catalog.js +435 -435
  135. package/src/lib/services/service-fed-ramp.js +4 -4
  136. package/src/lib/services/service-host.js +267 -267
  137. package/src/lib/services/service-registry.js +465 -465
  138. package/src/lib/services/service-state.js +78 -78
  139. package/src/lib/services/service-url.js +124 -124
  140. package/src/lib/services/services.js +1018 -1018
  141. package/src/lib/stateless-webex-plugin.js +98 -98
  142. package/src/lib/storage/decorators.js +220 -220
  143. package/src/lib/storage/errors.js +15 -15
  144. package/src/lib/storage/index.js +10 -10
  145. package/src/lib/storage/make-webex-plugin-store.js +211 -211
  146. package/src/lib/storage/make-webex-store.js +140 -140
  147. package/src/lib/storage/memory-store-adapter.js +79 -79
  148. package/src/lib/webex-core-plugin-mixin.js +114 -114
  149. package/src/lib/webex-http-error.js +61 -61
  150. package/src/lib/webex-internal-core-plugin-mixin.js +107 -107
  151. package/src/lib/webex-plugin.js +222 -222
  152. package/src/plugins/logger.js +60 -60
  153. package/src/webex-core.js +745 -745
  154. package/src/webex-internal-core.js +46 -46
  155. package/test/integration/spec/credentials/credentials.js +139 -139
  156. package/test/integration/spec/credentials/token.js +102 -102
  157. package/test/integration/spec/services/service-catalog.js +838 -838
  158. package/test/integration/spec/services/services.js +1221 -1221
  159. package/test/integration/spec/webex-core.js +178 -178
  160. package/test/unit/spec/_setup.js +44 -44
  161. package/test/unit/spec/credentials/credentials.js +1017 -1017
  162. package/test/unit/spec/credentials/token.js +441 -441
  163. package/test/unit/spec/interceptors/auth.js +521 -521
  164. package/test/unit/spec/interceptors/default-options.js +84 -84
  165. package/test/unit/spec/interceptors/embargo.js +144 -144
  166. package/test/unit/spec/interceptors/network-timing.js +49 -49
  167. package/test/unit/spec/interceptors/payload-transformer.js +155 -155
  168. package/test/unit/spec/interceptors/rate-limit.js +302 -302
  169. package/test/unit/spec/interceptors/redirect.js +102 -102
  170. package/test/unit/spec/interceptors/request-timing.js +92 -92
  171. package/test/unit/spec/interceptors/user-agent.js +76 -76
  172. package/test/unit/spec/interceptors/webex-tracking-id.js +76 -76
  173. package/test/unit/spec/interceptors/webex-user-agent.js +159 -159
  174. package/test/unit/spec/lib/batcher.js +330 -330
  175. package/test/unit/spec/lib/page.js +148 -148
  176. package/test/unit/spec/lib/webex-plugin.js +48 -48
  177. package/test/unit/spec/services/interceptors/server-error.js +204 -204
  178. package/test/unit/spec/services/interceptors/service.js +188 -188
  179. package/test/unit/spec/services/service-catalog.js +194 -194
  180. package/test/unit/spec/services/service-host.js +260 -260
  181. package/test/unit/spec/services/service-registry.js +747 -747
  182. package/test/unit/spec/services/service-state.js +60 -60
  183. package/test/unit/spec/services/service-url.js +258 -258
  184. package/test/unit/spec/services/services.js +348 -348
  185. package/test/unit/spec/storage/persist.js +50 -50
  186. package/test/unit/spec/storage/storage-adapter.js +12 -12
  187. package/test/unit/spec/storage/wait-for-value.js +81 -81
  188. package/test/unit/spec/webex-core.js +253 -253
  189. package/test/unit/spec/webex-internal-core.js +91 -91
@@ -1,222 +1,222 @@
1
- /*!
2
- * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
- */
4
-
5
- import util from 'util';
6
-
7
- import AmpState from 'ampersand-state';
8
- import {cloneDeep, isObject, omit} from 'lodash';
9
-
10
- import {makeWebexPluginStore} from './storage';
11
-
12
- /**
13
- * @class
14
- */
15
- const WebexPlugin = AmpState.extend({
16
- derived: {
17
- boundedStorage: {
18
- deps: [],
19
- fn() {
20
- return makeWebexPluginStore('bounded', this);
21
- },
22
- },
23
- unboundedStorage: {
24
- deps: [],
25
- fn() {
26
- return makeWebexPluginStore('unbounded', this);
27
- },
28
- },
29
- config: {
30
- // figure out why caching config breaks the refresh integration test
31
- // but not the refresh automation test.
32
- cache: false,
33
- deps: ['webex', 'webex.config'],
34
- fn() {
35
- if (this.webex && this.webex.config) {
36
- const namespace = this.getNamespace();
37
-
38
- if (namespace) {
39
- return this.webex.config[namespace.toLowerCase()];
40
- }
41
-
42
- return this.webex.config;
43
- }
44
-
45
- return {};
46
- },
47
- },
48
-
49
- logger: {
50
- deps: ['webex', 'webex.logger'],
51
- fn() {
52
- return this.webex.logger || console;
53
- },
54
- },
55
-
56
- webex: {
57
- deps: ['parent'],
58
- fn() {
59
- if (!this.parent && !this.collection) {
60
- throw new Error(
61
- 'Cannot determine `this.webex` without `this.parent` or `this.collection`. Please initialize `this` via `children` or `collection` or set `this.parent` manually'
62
- );
63
- }
64
-
65
- /* eslint consistent-this: [0] */
66
- let parent = this;
67
-
68
- while (parent.parent || parent.collection) {
69
- parent = parent.parent || parent.collection;
70
- }
71
-
72
- return parent;
73
- },
74
- },
75
- },
76
-
77
- session: {
78
- parent: {
79
- type: 'any',
80
- },
81
- /**
82
- * Indicates this plugin is ready to be used. Defaults to true but can be
83
- * overridden by plugins as appropriate. Used by {@link WebexCore#read}
84
- * @instance
85
- * @memberof WebexPlugin
86
- * @type {boolean}
87
- */
88
- ready: {
89
- default: true,
90
- type: 'boolean',
91
- },
92
- },
93
-
94
- /**
95
- * Overrides AmpersandState#clear to make sure we never unset `parent` and
96
- * recursively visits children/collections.
97
- * @instance
98
- * @memberof WebexPlugin
99
- * @param {Object} options
100
- * @returns {WebexPlugin}
101
- */
102
- clear(options) {
103
- Object.keys(this.attributes).forEach((key) => {
104
- if (key !== 'parent') {
105
- this.unset(key, options);
106
- }
107
- });
108
-
109
- Object.keys(this._children).forEach((key) => {
110
- this[key].clear();
111
- });
112
-
113
- Object.keys(this._collections).forEach((key) => {
114
- this[key].reset();
115
- });
116
-
117
- return this;
118
- },
119
-
120
- /**
121
- * Initializer
122
- * @private
123
- * @param {Object} attrs
124
- * @param {Object} options
125
- * @returns {undefined}
126
- */
127
- initialize(...args) {
128
- Reflect.apply(AmpState.prototype.initialize, this, args);
129
-
130
- // HACK to deal with the fact that AmpersandState#dataTypes#set is a pure
131
- // function.
132
- this._dataTypes = cloneDeep(this._dataTypes);
133
- Object.keys(this._dataTypes).forEach((key) => {
134
- if (this._dataTypes[key].set) {
135
- this._dataTypes[key].set = this._dataTypes[key].set.bind(this);
136
- }
137
- });
138
- // END HACK
139
-
140
- // Propagate change:[attribute] events from children
141
- this.on('change', (model, options) => {
142
- if (this.parent) {
143
- this.parent.trigger(
144
- `change:${this.getNamespace().toLowerCase()}`,
145
- this.parent,
146
- this,
147
- options
148
- );
149
- }
150
- });
151
- },
152
-
153
- /**
154
- * @instance
155
- * @memberof WebexPlugin
156
- * @param {number} depth
157
- * @private
158
- * @returns {Object}
159
- */
160
- inspect(depth) {
161
- return util.inspect(
162
- omit(
163
- this.serialize({
164
- props: true,
165
- session: true,
166
- derived: true,
167
- }),
168
- 'boundedStorage',
169
- 'unboundedStorage',
170
- 'config',
171
- 'logger',
172
- 'webex',
173
- 'parent'
174
- ),
175
- {depth}
176
- );
177
- },
178
-
179
- request(...args) {
180
- return this.webex.request(...args);
181
- },
182
-
183
- upload(...args) {
184
- return this.webex.upload(...args);
185
- },
186
-
187
- when(eventName, ...rest) {
188
- if (rest && rest.length > 0) {
189
- throw new Error('#when() does not accept a callback, you must attach to its promise');
190
- }
191
-
192
- return new Promise((resolve) => {
193
- this.once(eventName, (...args) => resolve(args));
194
- });
195
- },
196
-
197
- /**
198
- * Helper function for dealing with both forms of {@link AmpersandState#set()}
199
- * @param {string} key
200
- * @param {mixed} value
201
- * @param {Object} options
202
- * @private
203
- * @returns {Array<Object, Object>}
204
- */
205
- _filterSetParameters(key, value, options) {
206
- let attrs;
207
-
208
- if (isObject(key) || key === null) {
209
- attrs = key;
210
- options = value;
211
- } else {
212
- attrs = {};
213
- attrs[key] = value;
214
- }
215
-
216
- options = options || {};
217
-
218
- return [attrs, options];
219
- },
220
- });
221
-
222
- export default WebexPlugin;
1
+ /*!
2
+ * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
+ */
4
+
5
+ import util from 'util';
6
+
7
+ import AmpState from 'ampersand-state';
8
+ import {cloneDeep, isObject, omit} from 'lodash';
9
+
10
+ import {makeWebexPluginStore} from './storage';
11
+
12
+ /**
13
+ * @class
14
+ */
15
+ const WebexPlugin = AmpState.extend({
16
+ derived: {
17
+ boundedStorage: {
18
+ deps: [],
19
+ fn() {
20
+ return makeWebexPluginStore('bounded', this);
21
+ },
22
+ },
23
+ unboundedStorage: {
24
+ deps: [],
25
+ fn() {
26
+ return makeWebexPluginStore('unbounded', this);
27
+ },
28
+ },
29
+ config: {
30
+ // figure out why caching config breaks the refresh integration test
31
+ // but not the refresh automation test.
32
+ cache: false,
33
+ deps: ['webex', 'webex.config'],
34
+ fn() {
35
+ if (this.webex && this.webex.config) {
36
+ const namespace = this.getNamespace();
37
+
38
+ if (namespace) {
39
+ return this.webex.config[namespace.toLowerCase()];
40
+ }
41
+
42
+ return this.webex.config;
43
+ }
44
+
45
+ return {};
46
+ },
47
+ },
48
+
49
+ logger: {
50
+ deps: ['webex', 'webex.logger'],
51
+ fn() {
52
+ return this.webex.logger || console;
53
+ },
54
+ },
55
+
56
+ webex: {
57
+ deps: ['parent'],
58
+ fn() {
59
+ if (!this.parent && !this.collection) {
60
+ throw new Error(
61
+ 'Cannot determine `this.webex` without `this.parent` or `this.collection`. Please initialize `this` via `children` or `collection` or set `this.parent` manually'
62
+ );
63
+ }
64
+
65
+ /* eslint consistent-this: [0] */
66
+ let parent = this;
67
+
68
+ while (parent.parent || parent.collection) {
69
+ parent = parent.parent || parent.collection;
70
+ }
71
+
72
+ return parent;
73
+ },
74
+ },
75
+ },
76
+
77
+ session: {
78
+ parent: {
79
+ type: 'any',
80
+ },
81
+ /**
82
+ * Indicates this plugin is ready to be used. Defaults to true but can be
83
+ * overridden by plugins as appropriate. Used by {@link WebexCore#read}
84
+ * @instance
85
+ * @memberof WebexPlugin
86
+ * @type {boolean}
87
+ */
88
+ ready: {
89
+ default: true,
90
+ type: 'boolean',
91
+ },
92
+ },
93
+
94
+ /**
95
+ * Overrides AmpersandState#clear to make sure we never unset `parent` and
96
+ * recursively visits children/collections.
97
+ * @instance
98
+ * @memberof WebexPlugin
99
+ * @param {Object} options
100
+ * @returns {WebexPlugin}
101
+ */
102
+ clear(options) {
103
+ Object.keys(this.attributes).forEach((key) => {
104
+ if (key !== 'parent') {
105
+ this.unset(key, options);
106
+ }
107
+ });
108
+
109
+ Object.keys(this._children).forEach((key) => {
110
+ this[key].clear();
111
+ });
112
+
113
+ Object.keys(this._collections).forEach((key) => {
114
+ this[key].reset();
115
+ });
116
+
117
+ return this;
118
+ },
119
+
120
+ /**
121
+ * Initializer
122
+ * @private
123
+ * @param {Object} attrs
124
+ * @param {Object} options
125
+ * @returns {undefined}
126
+ */
127
+ initialize(...args) {
128
+ Reflect.apply(AmpState.prototype.initialize, this, args);
129
+
130
+ // HACK to deal with the fact that AmpersandState#dataTypes#set is a pure
131
+ // function.
132
+ this._dataTypes = cloneDeep(this._dataTypes);
133
+ Object.keys(this._dataTypes).forEach((key) => {
134
+ if (this._dataTypes[key].set) {
135
+ this._dataTypes[key].set = this._dataTypes[key].set.bind(this);
136
+ }
137
+ });
138
+ // END HACK
139
+
140
+ // Propagate change:[attribute] events from children
141
+ this.on('change', (model, options) => {
142
+ if (this.parent) {
143
+ this.parent.trigger(
144
+ `change:${this.getNamespace().toLowerCase()}`,
145
+ this.parent,
146
+ this,
147
+ options
148
+ );
149
+ }
150
+ });
151
+ },
152
+
153
+ /**
154
+ * @instance
155
+ * @memberof WebexPlugin
156
+ * @param {number} depth
157
+ * @private
158
+ * @returns {Object}
159
+ */
160
+ inspect(depth) {
161
+ return util.inspect(
162
+ omit(
163
+ this.serialize({
164
+ props: true,
165
+ session: true,
166
+ derived: true,
167
+ }),
168
+ 'boundedStorage',
169
+ 'unboundedStorage',
170
+ 'config',
171
+ 'logger',
172
+ 'webex',
173
+ 'parent'
174
+ ),
175
+ {depth}
176
+ );
177
+ },
178
+
179
+ request(...args) {
180
+ return this.webex.request(...args);
181
+ },
182
+
183
+ upload(...args) {
184
+ return this.webex.upload(...args);
185
+ },
186
+
187
+ when(eventName, ...rest) {
188
+ if (rest && rest.length > 0) {
189
+ throw new Error('#when() does not accept a callback, you must attach to its promise');
190
+ }
191
+
192
+ return new Promise((resolve) => {
193
+ this.once(eventName, (...args) => resolve(args));
194
+ });
195
+ },
196
+
197
+ /**
198
+ * Helper function for dealing with both forms of {@link AmpersandState#set()}
199
+ * @param {string} key
200
+ * @param {mixed} value
201
+ * @param {Object} options
202
+ * @private
203
+ * @returns {Array<Object, Object>}
204
+ */
205
+ _filterSetParameters(key, value, options) {
206
+ let attrs;
207
+
208
+ if (isObject(key) || key === null) {
209
+ attrs = key;
210
+ options = value;
211
+ } else {
212
+ attrs = {};
213
+ attrs[key] = value;
214
+ }
215
+
216
+ options = options || {};
217
+
218
+ return [attrs, options];
219
+ },
220
+ });
221
+
222
+ export default WebexPlugin;
@@ -1,60 +1,60 @@
1
- /*!
2
- * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
- */
4
- import WebexPlugin from '../lib/webex-plugin';
5
- import {registerPlugin} from '../webex-core';
6
-
7
- const precedence = {
8
- error: ['log'],
9
- warn: ['error', 'log'],
10
- info: ['log'],
11
- debug: ['info', 'log'],
12
- trace: ['debug', 'info', 'log'],
13
- };
14
-
15
- /**
16
- * Assigns the specified console method to Logger; uses `precedence` to fallback
17
- * to other console methods if the current environment doesn't provide the
18
- * specified level.
19
- * @param {string} level
20
- * @returns {Function}
21
- */
22
- function wrapConsoleMethod(level) {
23
- /* eslint no-console: [0] */
24
- let impls = precedence[level];
25
-
26
- if (impls) {
27
- impls = impls.slice();
28
- while (!console[level]) {
29
- level = impls.pop();
30
- }
31
- }
32
-
33
- return function wrappedConsoleMethod(...args) {
34
- /* eslint no-invalid-this: [0] */
35
- /* istanbul ignore if */
36
- if (
37
- process.env.NODE_ENV === 'test' &&
38
- this.webex &&
39
- this.webex.internal.device &&
40
- this.webex.internal.device.url
41
- ) {
42
- args.unshift(this.webex.internal.device.url.slice(-3));
43
- }
44
- console[level](...args);
45
- };
46
- }
47
-
48
- const Logger = WebexPlugin.extend({
49
- namespace: 'Logger',
50
- error: wrapConsoleMethod('error'),
51
- warn: wrapConsoleMethod('warn'),
52
- log: wrapConsoleMethod('log'),
53
- info: wrapConsoleMethod('info'),
54
- debug: wrapConsoleMethod('debug'),
55
- trace: wrapConsoleMethod('trace'),
56
- });
57
-
58
- registerPlugin('logger', Logger);
59
-
60
- export default Logger;
1
+ /*!
2
+ * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
+ */
4
+ import WebexPlugin from '../lib/webex-plugin';
5
+ import {registerPlugin} from '../webex-core';
6
+
7
+ const precedence = {
8
+ error: ['log'],
9
+ warn: ['error', 'log'],
10
+ info: ['log'],
11
+ debug: ['info', 'log'],
12
+ trace: ['debug', 'info', 'log'],
13
+ };
14
+
15
+ /**
16
+ * Assigns the specified console method to Logger; uses `precedence` to fallback
17
+ * to other console methods if the current environment doesn't provide the
18
+ * specified level.
19
+ * @param {string} level
20
+ * @returns {Function}
21
+ */
22
+ function wrapConsoleMethod(level) {
23
+ /* eslint no-console: [0] */
24
+ let impls = precedence[level];
25
+
26
+ if (impls) {
27
+ impls = impls.slice();
28
+ while (!console[level]) {
29
+ level = impls.pop();
30
+ }
31
+ }
32
+
33
+ return function wrappedConsoleMethod(...args) {
34
+ /* eslint no-invalid-this: [0] */
35
+ /* istanbul ignore if */
36
+ if (
37
+ process.env.NODE_ENV === 'test' &&
38
+ this.webex &&
39
+ this.webex.internal.device &&
40
+ this.webex.internal.device.url
41
+ ) {
42
+ args.unshift(this.webex.internal.device.url.slice(-3));
43
+ }
44
+ console[level](...args);
45
+ };
46
+ }
47
+
48
+ const Logger = WebexPlugin.extend({
49
+ namespace: 'Logger',
50
+ error: wrapConsoleMethod('error'),
51
+ warn: wrapConsoleMethod('warn'),
52
+ log: wrapConsoleMethod('log'),
53
+ info: wrapConsoleMethod('info'),
54
+ debug: wrapConsoleMethod('debug'),
55
+ trace: wrapConsoleMethod('trace'),
56
+ });
57
+
58
+ registerPlugin('logger', Logger);
59
+
60
+ export default Logger;