@webex/webex-core 3.8.1 → 3.9.0-multi-llms.2

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 (89) hide show
  1. package/README.md +87 -27
  2. package/dist/index.js +16 -33
  3. package/dist/index.js.map +1 -1
  4. package/dist/{lib/services/interceptors/hostmap.js → interceptors/proxy.js} +58 -25
  5. package/dist/interceptors/proxy.js.map +1 -0
  6. package/dist/lib/batcher.js +1 -1
  7. package/dist/lib/constants.js +10 -1
  8. package/dist/lib/constants.js.map +1 -1
  9. package/dist/lib/credentials/credentials.js +1 -1
  10. package/dist/lib/credentials/token.js +1 -1
  11. package/dist/lib/{services-v2/interceptors → interceptors}/server-error.js +1 -1
  12. package/dist/lib/interceptors/server-error.js.map +1 -0
  13. package/dist/lib/services/index.js +2 -29
  14. package/dist/lib/services/index.js.map +1 -1
  15. package/dist/lib/services/service-host.js +1 -1
  16. package/dist/lib/services/service-host.js.map +1 -1
  17. package/dist/lib/services/service-registry.js +1 -1
  18. package/dist/lib/services/service-registry.js.map +1 -1
  19. package/dist/lib/services/service-state.js +1 -1
  20. package/dist/lib/services/service-state.js.map +1 -1
  21. package/dist/lib/services/services.js +3 -3
  22. package/dist/lib/services/services.js.map +1 -1
  23. package/dist/lib/services-v2/index.js +0 -29
  24. package/dist/lib/services-v2/index.js.map +1 -1
  25. package/dist/lib/services-v2/metrics.js.map +1 -1
  26. package/dist/lib/services-v2/service-catalog.js +15 -11
  27. package/dist/lib/services-v2/service-catalog.js.map +1 -1
  28. package/dist/lib/services-v2/services-v2.js +160 -111
  29. package/dist/lib/services-v2/services-v2.js.map +1 -1
  30. package/dist/lib/services-v2/types.js.map +1 -1
  31. package/dist/plugins/logger.js +1 -1
  32. package/dist/webex-core.js +53 -60
  33. package/dist/webex-core.js.map +1 -1
  34. package/package.json +14 -14
  35. package/src/index.js +6 -14
  36. package/src/interceptors/proxy.js +70 -0
  37. package/src/lib/constants.js +29 -1
  38. package/src/lib/{services/interceptors → interceptors}/server-error.js +1 -1
  39. package/src/lib/services/index.js +2 -7
  40. package/src/lib/services/service-host.js +1 -1
  41. package/src/lib/services/service-registry.js +1 -1
  42. package/src/lib/services/service-state.js +1 -1
  43. package/src/lib/services/services.js +2 -2
  44. package/src/lib/services-v2/index.ts +0 -16
  45. package/src/lib/services-v2/service-catalog.ts +27 -19
  46. package/src/lib/services-v2/{services-v2.js → services-v2.ts} +188 -104
  47. package/src/lib/services-v2/types.ts +62 -2
  48. package/src/webex-core.js +12 -3
  49. package/test/fixtures/host-catalog-v2.ts +30 -122
  50. package/test/integration/spec/services/services.js +11 -0
  51. package/test/integration/spec/services-v2/service-catalog.js +664 -0
  52. package/test/integration/spec/services-v2/services-v2.js +1136 -0
  53. package/test/unit/spec/interceptors/proxy.js +73 -0
  54. package/test/unit/spec/services-v2/service-detail.ts +1 -1
  55. package/test/unit/spec/services-v2/services-v2.ts +579 -442
  56. package/test/unit/spec/webex-core.js +62 -2
  57. package/dist/lib/services/constants.js +0 -17
  58. package/dist/lib/services/constants.js.map +0 -1
  59. package/dist/lib/services/interceptors/hostmap.js.map +0 -1
  60. package/dist/lib/services/interceptors/server-error.js +0 -77
  61. package/dist/lib/services/interceptors/server-error.js.map +0 -1
  62. package/dist/lib/services/interceptors/service.js +0 -137
  63. package/dist/lib/services/interceptors/service.js.map +0 -1
  64. package/dist/lib/services-v2/constants.js +0 -17
  65. package/dist/lib/services-v2/constants.js.map +0 -1
  66. package/dist/lib/services-v2/interceptors/server-error.js.map +0 -1
  67. package/dist/lib/services-v2/service-host.js +0 -300
  68. package/dist/lib/services-v2/service-host.js.map +0 -1
  69. package/dist/lib/services-v2/service-registry.js +0 -534
  70. package/dist/lib/services-v2/service-registry.js.map +0 -1
  71. package/dist/lib/services-v2/service-state.js +0 -97
  72. package/dist/lib/services-v2/service-state.js.map +0 -1
  73. package/dist/lib/services-v2/service-url.js +0 -119
  74. package/dist/lib/services-v2/service-url.js.map +0 -1
  75. package/src/lib/services/constants.js +0 -21
  76. package/src/lib/services/interceptors/hostmap.js +0 -36
  77. package/src/lib/services/interceptors/service.js +0 -101
  78. package/src/lib/services-v2/constants.ts +0 -21
  79. package/src/lib/services-v2/interceptors/server-error.js +0 -48
  80. /package/dist/lib/{services-v2/interceptors → interceptors}/hostmap.js +0 -0
  81. /package/dist/lib/{services-v2/interceptors → interceptors}/hostmap.js.map +0 -0
  82. /package/dist/lib/{services-v2/interceptors → interceptors}/service.js +0 -0
  83. /package/dist/lib/{services-v2/interceptors → interceptors}/service.js.map +0 -0
  84. /package/dist/lib/{services/metrics.js → metrics.js} +0 -0
  85. /package/dist/lib/{services/metrics.js.map → metrics.js.map} +0 -0
  86. /package/src/lib/{services-v2/interceptors → interceptors}/hostmap.js +0 -0
  87. /package/src/lib/{services-v2/interceptors → interceptors}/service.js +0 -0
  88. /package/src/lib/{services-v2/metrics.js → metrics.js} +0 -0
  89. /package/src/lib/{services/metrics.js → services-v2/metrics.ts} +0 -0
@@ -2,7 +2,7 @@ import AmpState from 'ampersand-state';
2
2
 
3
3
  import {union} from 'lodash';
4
4
  import ServiceDetail from './service-detail';
5
- import {IServiceDetail} from './types';
5
+ import {IServiceDetail, ServiceGroup} from './types';
6
6
 
7
7
  /**
8
8
  * @class
@@ -49,16 +49,17 @@ const ServiceCatalog = AmpState.extend({
49
49
  }),
50
50
  ],
51
51
  isReady: ['boolean', false, false],
52
+ timestamp: ['string', false, ''],
52
53
  allowedDomains: ['array', false, () => []],
53
54
  },
54
55
 
55
56
  /**
56
57
  * @private
57
58
  * Get all service details for a given service group or return all details if no group is specified.
58
- * @param {string} serviceGroup - The name of the service group to retrieve details for.
59
+ * @param {ServiceGroup} serviceGroup - The name of the service group to retrieve details for.
59
60
  * @returns {Array<IServiceDetail>} - An array of service details.
60
61
  */
61
- _getAllServiceDetails(serviceGroup: string): Array<IServiceDetail> {
62
+ _getAllServiceDetails(serviceGroup?: ServiceGroup): Array<IServiceDetail> {
62
63
  const serviceDetails =
63
64
  typeof serviceGroup === 'string'
64
65
  ? this.serviceGroups[serviceGroup] || []
@@ -78,10 +79,10 @@ const ServiceCatalog = AmpState.extend({
78
79
  * Search the service details array to locate a `ServiceDetails`
79
80
  * class object based on its id.
80
81
  * @param {string} clusterId
81
- * @param {string} [serviceGroup]
82
+ * @param {ServiceGroup} [serviceGroup]
82
83
  * @returns {IServiceDetail}
83
84
  */
84
- _getServiceDetail(clusterId: string, serviceGroup: string): IServiceDetail | undefined {
85
+ _getServiceDetail(clusterId: string, serviceGroup?: ServiceGroup): IServiceDetail | undefined {
85
86
  const serviceDetails = this._getAllServiceDetails(serviceGroup);
86
87
 
87
88
  return serviceDetails.find((serviceDetail: IServiceDetail) => serviceDetail.id === clusterId);
@@ -90,11 +91,11 @@ const ServiceCatalog = AmpState.extend({
90
91
  /**
91
92
  * @private
92
93
  * Safely load one or more `ServiceDetail`s into this `ServiceCatalog` instance.
93
- * @param {string} serviceGroup
94
+ * @param {ServiceGroup} serviceGroup
94
95
  * @param {Array<ServiceDetail>} serviceDetails
95
96
  * @returns {void}
96
97
  */
97
- _loadServiceDetails(serviceGroup: string, serviceDetails: Array<IServiceDetail>): void {
98
+ _loadServiceDetails(serviceGroup: ServiceGroup, serviceDetails: Array<IServiceDetail>): void {
98
99
  // declare namespaces outside of loop
99
100
  let existingService: IServiceDetail | undefined;
100
101
 
@@ -110,11 +111,11 @@ const ServiceCatalog = AmpState.extend({
110
111
  /**
111
112
  * @private
112
113
  * Safely unload one or more `ServiceDetail`s into this `Services` instance
113
- * @param {string} serviceGroup
114
+ * @param {ServiceGroup} serviceGroup
114
115
  * @param {Array<ServiceDetail>} serviceDetails
115
116
  * @returns {void}
116
117
  */
117
- _unloadServiceDetails(serviceGroup: string, serviceDetails: Array<IServiceDetail>): void {
118
+ _unloadServiceDetails(serviceGroup: ServiceGroup, serviceDetails: Array<IServiceDetail>): void {
118
119
  // declare namespaces outside of loop
119
120
  let existingService: IServiceDetail | undefined;
120
121
 
@@ -169,13 +170,13 @@ const ServiceCatalog = AmpState.extend({
169
170
  * clusterId.
170
171
  * @param {object} params
171
172
  * @param {string} params.clusterId - clusterId of found service
172
- * @param {string} [params.serviceGroup] - specify service group
173
+ * @param {ServiceGroup} [params.serviceGroup] - specify service group
173
174
  * @returns {object} service
174
175
  * @returns {string} service.name
175
176
  * @returns {string} service.url
176
177
  */
177
178
  findServiceFromClusterId(
178
- {clusterId, serviceGroup} = {} as {clusterId: string; serviceGroup: string}
179
+ {clusterId, serviceGroup} = {} as {clusterId: string; serviceGroup?: ServiceGroup}
179
180
  ): {name: string; url: string} | undefined {
180
181
  const serviceDetails = this._getServiceDetail(clusterId, serviceGroup);
181
182
 
@@ -226,12 +227,13 @@ const ServiceCatalog = AmpState.extend({
226
227
  },
227
228
 
228
229
  /**
229
- * Get a service url from the current services list by name.
230
+ * Get a service url from the current services list by name. Return undefined
231
+ * if the service is not found.
230
232
  * @param {string} clusterId
231
- * @param {string} serviceGroup
232
- * @returns {string}
233
+ * @param {ServiceGroup} serviceGroup
234
+ * @returns {string | undefined}
233
235
  */
234
- get(clusterId: string, serviceGroup: string): string | undefined {
236
+ get(clusterId: string, serviceGroup?: ServiceGroup): string | undefined {
235
237
  const serviceDetail = this._getServiceDetail(clusterId, serviceGroup);
236
238
 
237
239
  return serviceDetail ? serviceDetail.get() : undefined;
@@ -297,11 +299,16 @@ const ServiceCatalog = AmpState.extend({
297
299
  * service hostmap.
298
300
  * @emits ServiceCatalog#preauthorized
299
301
  * @emits ServiceCatalog#postauthorized
300
- * @param {string} serviceGroup
302
+ * @param {ServiceGroup} serviceGroup
301
303
  * @param {Array<IServiceDetail>} serviceDetails
304
+ * @param {timestamp<string>} timestamp of the catalog
302
305
  * @returns {void}
303
306
  */
304
- updateServiceGroups(serviceGroup: string, serviceDetails: Array<IServiceDetail>) {
307
+ updateServiceGroups(
308
+ serviceGroup: ServiceGroup,
309
+ serviceDetails: Array<IServiceDetail>,
310
+ timestamp?: string
311
+ ) {
305
312
  const currentServiceDetails = this.serviceGroups[serviceGroup];
306
313
 
307
314
  const unusedServicesDetails = currentServiceDetails.filter((serviceDetail) =>
@@ -320,6 +327,7 @@ const ServiceCatalog = AmpState.extend({
320
327
  }
321
328
  });
322
329
 
330
+ this.timestamp = timestamp;
323
331
  this.status[serviceGroup].ready = true;
324
332
  this.trigger(serviceGroup);
325
333
  },
@@ -327,11 +335,11 @@ const ServiceCatalog = AmpState.extend({
327
335
  /**
328
336
  * Wait until the service catalog is available,
329
337
  * or reject after a timeout of 60 seconds.
330
- * @param {string} serviceGroup
338
+ * @param {ServiceGroup} serviceGroup
331
339
  * @param {number} [timeout] - in seconds
332
340
  * @returns {Promise<void>}
333
341
  */
334
- waitForCatalog(serviceGroup: string, timeout: number): Promise<void> {
342
+ waitForCatalog(serviceGroup: ServiceGroup, timeout?: number): Promise<void> {
335
343
  return new Promise<void>((resolve, reject) => {
336
344
  if (this.status[serviceGroup].ready) {
337
345
  resolve();