@gomomento/sdk-core 1.110.3 → 1.112.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/src/auth/credential-provider.d.ts +10 -16
  2. package/dist/src/auth/credential-provider.js +30 -66
  3. package/dist/src/config/retry/subscription-retry-eligibility-strategy.d.ts +7 -0
  4. package/dist/src/config/retry/subscription-retry-eligibility-strategy.js +3 -0
  5. package/dist/src/config/retry/subscription-retry-strategy.d.ts +11 -0
  6. package/dist/src/config/retry/subscription-retry-strategy.js +5 -0
  7. package/dist/src/errors/errors.d.ts +7 -0
  8. package/dist/src/errors/errors.js +12 -2
  9. package/dist/src/index.d.ts +2 -3
  10. package/dist/src/index.js +4 -6
  11. package/dist/src/internal/clients/index.d.ts +0 -1
  12. package/dist/src/internal/clients/index.js +1 -2
  13. package/dist/src/internal/clients/pubsub/AbstractPubsubClient.d.ts +6 -3
  14. package/dist/src/internal/clients/pubsub/AbstractPubsubClient.js +23 -22
  15. package/dist/src/internal/clients/pubsub/AbstractTopicClient.d.ts +16 -3
  16. package/dist/src/internal/clients/pubsub/AbstractTopicClient.js +61 -10
  17. package/dist/src/internal/utils/auth.d.ts +4 -9
  18. package/dist/src/internal/utils/auth.js +8 -22
  19. package/dist/src/utils/topic-call-options.d.ts +4 -0
  20. package/dist/src/utils/topic-call-options.js +1 -1
  21. package/package.json +1 -1
  22. package/dist/src/clients/IStorageClient.d.ts +0 -13
  23. package/dist/src/clients/IStorageClient.js +0 -3
  24. package/dist/src/internal/clients/storage/AbstractStorageClient.d.ts +0 -21
  25. package/dist/src/internal/clients/storage/AbstractStorageClient.js +0 -48
  26. package/dist/src/internal/clients/storage/IStorageControlClient.d.ts +0 -7
  27. package/dist/src/internal/clients/storage/IStorageControlClient.js +0 -3
  28. package/dist/src/internal/clients/storage/IStorageDataClient.d.ts +0 -10
  29. package/dist/src/internal/clients/storage/IStorageDataClient.js +0 -3
  30. package/dist/src/internal/clients/storage/index.d.ts +0 -4
  31. package/dist/src/internal/clients/storage/index.js +0 -21
  32. package/dist/src/messages/responses/storage/control/create-store.d.ts +0 -34
  33. package/dist/src/messages/responses/storage/control/create-store.js +0 -43
  34. package/dist/src/messages/responses/storage/control/delete-store.d.ts +0 -28
  35. package/dist/src/messages/responses/storage/control/delete-store.js +0 -33
  36. package/dist/src/messages/responses/storage/control/index.d.ts +0 -3
  37. package/dist/src/messages/responses/storage/control/index.js +0 -7
  38. package/dist/src/messages/responses/storage/control/list-stores.d.ts +0 -37
  39. package/dist/src/messages/responses/storage/control/list-stores.js +0 -45
  40. package/dist/src/messages/responses/storage/index.d.ts +0 -2
  41. package/dist/src/messages/responses/storage/index.js +0 -19
  42. package/dist/src/messages/responses/storage/scalar/index.d.ts +0 -3
  43. package/dist/src/messages/responses/storage/scalar/index.js +0 -7
  44. package/dist/src/messages/responses/storage/scalar/storage-delete.d.ts +0 -28
  45. package/dist/src/messages/responses/storage/scalar/storage-delete.js +0 -33
  46. package/dist/src/messages/responses/storage/scalar/storage-get.d.ts +0 -79
  47. package/dist/src/messages/responses/storage/scalar/storage-get.js +0 -99
  48. package/dist/src/messages/responses/storage/scalar/storage-put.d.ts +0 -28
  49. package/dist/src/messages/responses/storage/scalar/storage-put.js +0 -33
  50. package/dist/src/messages/responses/storage/scalar/storage-value.d.ts +0 -61
  51. package/dist/src/messages/responses/storage/scalar/storage-value.js +0 -87
  52. package/dist/src/messages/store-info.d.ts +0 -16
  53. package/dist/src/messages/store-info.js +0 -24
package/dist/src/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.CacheSetIfEqual = exports.CacheSetIfAbsent = exports.CacheSetIfPresent = exports.CacheSetIfNotExists = exports.CacheSet = exports.CacheListRetain = exports.CacheListRemoveValue = exports.CacheListPushFront = exports.CacheListPushBack = exports.CacheListPopFront = exports.CacheListPopBack = exports.CacheListLength = exports.CacheListFetch = exports.CacheListConcatenateFront = exports.CacheListConcatenateBack = exports.CacheGet = exports.getDefaultCredentialProvider = exports.MomentoLocalProvider = exports.EnvMomentoTokenProvider = exports.StringMomentoTokenProvider = exports.CredentialProvider = exports.LeaderboardOrder = exports.SortedSetOrder = exports.WebhookDestinationType = exports.PostUrlWebhookDestination = exports.ItemType = exports.CollectionTtl = exports.ExpiresAt = exports.ExpiresIn = exports.CompressionLevel = exports.ReadConcern = exports.DisposableTokenScopes = exports.TokenScopes = exports.PermissionScopes = exports.isCacheItemKeyPrefix = exports.isCacheItemKey = exports.AllCacheItems = exports.AllTopics = exports.AllCaches = exports.isTopicName = exports.isCacheName = exports.AllDataReadWrite = exports.TopicRole = exports.CacheRole = exports.NoopMomentoLoggerFactory = exports.NoopMomentoLogger = exports.utils = exports.StoreInfo = exports.webhook = exports.leaderboard = void 0;
17
+ exports.CacheSetIfEqual = exports.CacheSetIfAbsent = exports.CacheSetIfPresent = exports.CacheSetIfNotExists = exports.CacheSet = exports.CacheListRetain = exports.CacheListRemoveValue = exports.CacheListPushFront = exports.CacheListPushBack = exports.CacheListPopFront = exports.CacheListPopBack = exports.CacheListLength = exports.CacheListFetch = exports.CacheListConcatenateFront = exports.CacheListConcatenateBack = exports.CacheGet = exports.getDefaultCredentialProvider = exports.MomentoLocalProvider = exports.EnvMomentoTokenProvider = exports.StringMomentoTokenProvider = exports.CredentialProvider = exports.LeaderboardOrder = exports.SortedSetOrder = exports.WebhookDestinationType = exports.PostUrlWebhookDestination = exports.ItemType = exports.CollectionTtl = exports.ExpiresAt = exports.ExpiresIn = exports.DEFAULT_SUBSCRIPTION_RETRY_DELAY_MILLIS = exports.CompressionLevel = exports.ReadConcern = exports.DisposableTokenScopes = exports.TokenScopes = exports.PermissionScopes = exports.isCacheItemKeyPrefix = exports.isCacheItemKey = exports.AllCacheItems = exports.AllTopics = exports.AllCaches = exports.isTopicName = exports.isCacheName = exports.AllDataReadWrite = exports.TopicRole = exports.CacheRole = exports.NoopMomentoLoggerFactory = exports.NoopMomentoLogger = exports.utils = exports.webhook = exports.leaderboard = void 0;
18
18
  exports.TopicPublish = exports.CacheGetBatch = exports.CacheSetBatch = exports.CacheInfo = exports.CacheDecreaseTtl = exports.CacheIncreaseTtl = exports.CacheUpdateTtl = exports.CacheKeysExist = exports.CacheKeyExists = exports.CacheItemGetTtl = exports.CacheItemGetType = exports.CacheSortedSetLengthByScore = exports.CacheSortedSetLength = exports.CacheSortedSetRemoveElements = exports.CacheSortedSetRemoveElement = exports.CacheSortedSetIncrementScore = exports.CacheSortedSetGetScores = exports.CacheSortedSetGetScore = exports.CacheSortedSetGetRank = exports.CacheSortedSetFetch = exports.CacheSortedSetPutElements = exports.CacheSortedSetPutElement = exports.CacheSetLength = exports.CacheSetPop = exports.CacheSetSample = exports.CacheSetRemoveElement = exports.CacheSetRemoveElements = exports.CacheSetContainsElements = exports.CacheSetContainsElement = exports.CacheSetAddElement = exports.CacheSetAddElements = exports.CacheDictionaryLength = exports.CacheDictionaryIncrement = exports.CacheDictionaryRemoveFields = exports.CacheDictionaryRemoveField = exports.CacheDictionaryGetFields = exports.CacheDictionaryGetField = exports.CacheDictionarySetFields = exports.CacheDictionarySetField = exports.CacheDictionaryFetch = exports.CacheSetFetch = exports.CacheIncrement = exports.ListCaches = exports.DeleteCache = exports.CreateCache = exports.CacheFlush = exports.CacheDelete = exports.CacheSetIfAbsentOrEqual = exports.CacheSetIfPresentAndNotEqual = exports.CacheSetIfNotEqual = void 0;
19
19
  exports.UnknownError = exports.StoreNotFoundError = exports.StoreItemNotFoundError = exports.CacheNotFoundError = exports.PermissionError = exports.BadRequestError = exports.TimeoutError = exports.ServerUnavailableError = exports.UnknownServiceError = exports.InvalidArgumentError = exports.InternalServerError = exports.LimitExceededError = exports.FailedPreconditionError = exports.ConnectionError = exports.CancelledError = exports.AuthenticationError = exports.StoreAlreadyExistsError = exports.CacheAlreadyExistsError = exports.SdkError = exports.MomentoErrorCode = exports.GenerateDisposableToken = exports.RefreshAuthToken = exports.RefreshApiKey = exports.GenerateAuthToken = exports.GenerateApiKey = exports.TopicHeartbeat = exports.TopicDiscontinuity = exports.TopicItem = exports.TopicSubscribe = void 0;
20
20
  // Cache Client Response Types
@@ -171,10 +171,6 @@ exports.leaderboard = require("./messages/responses/leaderboard");
171
171
  __exportStar(require("./messages/responses/leaderboard"), exports);
172
172
  exports.webhook = require("./messages/responses/webhook");
173
173
  __exportStar(require("./messages/responses/webhook"), exports);
174
- // StoreClient Response Types
175
- __exportStar(require("./messages/responses/storage"), exports);
176
- var store_info_1 = require("./messages/store-info");
177
- Object.defineProperty(exports, "StoreInfo", { enumerable: true, get: function () { return store_info_1.StoreInfo; } });
178
174
  const cache_info_1 = require("./messages/cache-info");
179
175
  Object.defineProperty(exports, "CacheInfo", { enumerable: true, get: function () { return cache_info_1.CacheInfo; } });
180
176
  const utils_1 = require("./utils");
@@ -240,4 +236,6 @@ var read_concern_1 = require("./config/read-concern");
240
236
  Object.defineProperty(exports, "ReadConcern", { enumerable: true, get: function () { return read_concern_1.ReadConcern; } });
241
237
  var compression_level_1 = require("./compression/compression-level");
242
238
  Object.defineProperty(exports, "CompressionLevel", { enumerable: true, get: function () { return compression_level_1.CompressionLevel; } });
243
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhCQUE4QjtBQUM5QiwyREFBMkQ7QUEyT3pELDRCQUFRO0FBMU9WLDZGQUE2RjtBQTJPM0YsNERBQXdCO0FBMU8xQiwrRkFBK0Y7QUEyTzdGLDhEQUF5QjtBQTFPM0Isd0VBQXdFO0FBMk90RSx3Q0FBYztBQTFPaEIsMEVBQTBFO0FBMk94RSwwQ0FBZTtBQTFPakIsNkVBQTZFO0FBMk8zRSw0Q0FBZ0I7QUExT2xCLCtFQUErRTtBQTJPN0UsOENBQWlCO0FBMU9uQiwrRUFBK0U7QUEyTzdFLDhDQUFpQjtBQTFPbkIsaUZBQWlGO0FBMk8vRSxnREFBa0I7QUExT3BCLHFGQUFxRjtBQTJPbkYsb0RBQW9CO0FBMU90QiwwRUFBMEU7QUEyT3hFLDBDQUFlO0FBMU9qQiwyREFBMkQ7QUEyT3pELDRCQUFRO0FBMU9WLGlFQUFpRTtBQWtQL0Qsa0NBQVc7QUFqUGIsK0RBQStEO0FBa1A3RCxnQ0FBVTtBQWpQWixpRUFBaUU7QUFrUC9ELGtDQUFXO0FBalBiLGlFQUFpRTtBQWtQL0Qsa0NBQVc7QUFqUGIsK0RBQStEO0FBa1A3RCxnQ0FBVTtBQWpQWixzRUFBc0U7QUFtUHBFLHNDQUFhO0FBbFBmLG9GQUFvRjtBQW1QbEYsb0RBQW9CO0FBbFB0QiwyRkFBMkY7QUFtUHpGLDBEQUF1QjtBQWxQekIsNkZBQTZGO0FBbVAzRiw0REFBd0I7QUFsUDFCLDJGQUEyRjtBQW1QekYsMERBQXVCO0FBbFB6Qiw2RkFBNkY7QUFtUDNGLDREQUF3QjtBQWxQMUIsaUdBQWlHO0FBbVAvRixnRUFBMEI7QUFsUDVCLG1HQUFtRztBQW1Qakcsa0VBQTJCO0FBbFA3Qiw0RkFBNEY7QUFtUDFGLDREQUF3QjtBQWxQMUIsc0ZBQXNGO0FBbVBwRixzREFBcUI7QUFsUHZCLG1GQUFtRjtBQW1QakYsa0RBQW1CO0FB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Q0gsaUVBQStEO0FBQy9ELGlGQUErRTtBQUUvRSxzREFBa0Q7QUFBMUMsMkdBQUEsV0FBVyxPQUFBO0FBQ25CLHFFQUFpRTtBQUF6RCxxSEFBQSxnQkFBZ0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIENhY2hlIENsaWVudCBSZXNwb25zZSBUeXBlc1xuaW1wb3J0ICogYXMgQ2FjaGVHZXQgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtZ2V0JztcbmltcG9ydCAqIGFzIENhY2hlTGlzdENvbmNhdGVuYXRlQmFjayBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1saXN0LWNvbmNhdGVuYXRlLWJhY2snO1xuaW1wb3J0ICogYXMgQ2FjaGVMaXN0Q29uY2F0ZW5hdGVGcm9udCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1saXN0LWNvbmNhdGVuYXRlLWZyb250JztcbmltcG9ydCAqIGFzIENhY2hlTGlzdEZldGNoIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLWxpc3QtZmV0Y2gnO1xuaW1wb3J0ICogYXMgQ2FjaGVMaXN0TGVuZ3RoIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLWxpc3QtbGVuZ3RoJztcbmltcG9ydCAqIGFzIENhY2hlTGlzdFBvcEJhY2sgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtbGlzdC1wb3AtYmFjayc7XG5pbXBvcnQgKiBhcyBDYWNoZUxpc3RQb3BGcm9udCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1saXN0LXBvcC1mcm9udCc7XG5pbXBvcnQgKiBhcyBDYWNoZUxpc3RQdXNoQmFjayBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1saXN0LXB1c2gtYmFjayc7XG5pbXBvcnQgKiBhcyBDYWNoZUxpc3RQdXNoRnJvbnQgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtbGlzdC1wdXNoLWZyb250JztcbmltcG9ydCAqIGFzIENhY2hlTGlzdFJlbW92ZVZhbHVlIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLWxpc3QtcmVtb3ZlLXZhbHVlJztcbmltcG9ydCAqIGFzIENhY2hlTGlzdFJldGFpbiBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1saXN0LXJldGFpbic7XG5pbXBvcnQgKiBhcyBDYWNoZVNldCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zZXQnO1xuaW1wb3J0ICogYXMgQ2FjaGVEZWxldGUgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtZGVsZXRlJztcbmltcG9ydCAqIGFzIENhY2hlRmx1c2ggZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtZmx1c2gnO1xuaW1wb3J0ICogYXMgQ3JlYXRlQ2FjaGUgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY3JlYXRlLWNhY2hlJztcbmltcG9ydCAqIGFzIERlbGV0ZUNhY2hlIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2RlbGV0ZS1jYWNoZSc7XG5pbXBvcnQgKiBhcyBMaXN0Q2FjaGVzIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2xpc3QtY2FjaGVzJztcbmltcG9ydCAqIGFzIENhY2hlU2V0RmV0Y2ggZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc2V0LWZldGNoJztcbmltcG9ydCAqIGFzIENhY2hlRGljdGlvbmFyeUZldGNoIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLWRpY3Rpb25hcnktZmV0Y2gnO1xuaW1wb3J0ICogYXMgQ2FjaGVEaWN0aW9uYXJ5U2V0RmllbGQgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtZGljdGlvbmFyeS1zZXQtZmllbGQnO1xuaW1wb3J0ICogYXMgQ2FjaGVEaWN0aW9uYXJ5U2V0RmllbGRzIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLWRpY3Rpb25hcnktc2V0LWZpZWxkcyc7XG5pbXBvcnQgKiBhcyBDYWNoZURpY3Rpb25hcnlHZXRGaWVsZCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1kaWN0aW9uYXJ5LWdldC1maWVsZCc7XG5pbXBvcnQgKiBhcyBDYWNoZURpY3Rpb25hcnlHZXRGaWVsZHMgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtZGljdGlvbmFyeS1nZXQtZmllbGRzJztcbmltcG9ydCAqIGFzIENhY2hlRGljdGlvbmFyeVJlbW92ZUZpZWxkIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLWRpY3Rpb25hcnktcmVtb3ZlLWZpZWxkJztcbmltcG9ydCAqIGFzIENhY2hlRGljdGlvbmFyeVJlbW92ZUZpZWxkcyBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1kaWN0aW9uYXJ5LXJlbW92ZS1maWVsZHMnO1xuaW1wb3J0ICogYXMgQ2FjaGVEaWN0aW9uYXJ5SW5jcmVtZW50IGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLWRpY3Rpb25hcnktaW5jcmVtZW50JztcbmltcG9ydCAqIGFzIENhY2hlRGljdGlvbmFyeUxlbmd0aCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1kaWN0aW9uYXJ5LWxlbmd0aCc7XG5pbXBvcnQgKiBhcyBDYWNoZVNldEFkZEVsZW1lbnRzIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLXNldC1hZGQtZWxlbWVudHMnO1xuaW1wb3J0ICogYXMgQ2FjaGVTZXRBZGRFbGVtZW50IGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLXNldC1hZGQtZWxlbWVudCc7XG5pbXBvcnQgKiBhcyBDYWNoZVNldENvbnRhaW5zRWxlbWVudCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zZXQtY29udGFpbnMtZWxlbWVudCc7XG5pbXBvcnQgKiBhcyBDYWNoZVNldENvbnRhaW5zRWxlbWVudHMgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc2V0LWNvbnRhaW5zLWVsZW1lbnRzJztcbmltcG9ydCAqIGFzIENhY2hlU2V0UmVtb3ZlRWxlbWVudHMgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc2V0LXJlbW92ZS1lbGVtZW50cyc7XG5pbXBvcnQgKiBhcyBDYWNoZVNldFJlbW92ZUVsZW1lbnQgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc2V0LXJlbW92ZS1lbGVtZW50JztcbmltcG9ydCAqIGFzIENhY2hlU2V0U2FtcGxlIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLXNldC1zYW1wbGUnO1xuaW1wb3J0ICogYXMgQ2FjaGVTZXRQb3AgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc2V0LXBvcCc7XG5pbXBvcnQgKiBhcyBDYWNoZVNldExlbmd0aCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zZXQtbGVuZ3RoJztcbmltcG9ydCAqIGFzIENhY2hlSW5jcmVtZW50IGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLWluY3JlbWVudCc7XG5pbXBvcnQgKiBhcyBDYWNoZVNldElmTm90RXhpc3RzIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLXNldC1pZi1ub3QtZXhpc3RzJztcbmltcG9ydCAqIGFzIENhY2hlU2V0SWZBYnNlbnQgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc2V0LWlmLWFic2VudCc7XG5pbXBvcnQgKiBhcyBDYWNoZVNldElmUHJlc2VudCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zZXQtaWYtcHJlc2VudCc7XG5pbXBvcnQgKiBhcyBDYWNoZVNldElmRXF1YWwgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc2V0LWlmLWVxdWFsJztcbmltcG9ydCAqIGFzIENhY2hlU2V0SWZOb3RFcXVhbCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zZXQtaWYtbm90LWVxdWFsJztcbmltcG9ydCAqIGFzIENhY2hlU2V0SWZQcmVzZW50QW5kTm90RXF1YWwgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc2V0LWlmLXByZXNlbnQtYW5kLW5vdC1lcXVhbCc7XG5pbXBvcnQgKiBhcyBDYWNoZVNldElmQWJzZW50T3JFcXVhbCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zZXQtaWYtYWJzZW50LW9yLWVxdWFsJztcbmltcG9ydCAqIGFzIENhY2hlU29ydGVkU2V0UHV0RWxlbWVudCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zb3J0ZWQtc2V0LXB1dC1lbGVtZW50JztcbmltcG9ydCAqIGFzIENhY2hlU29ydGVkU2V0UHV0RWxlbWVudHMgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc29ydGVkLXNldC1wdXQtZWxlbWVudHMnO1xuaW1wb3J0ICogYXMgQ2FjaGVTb3J0ZWRTZXRGZXRjaCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zb3J0ZWQtc2V0LWZldGNoJztcbmltcG9ydCAqIGFzIENhY2hlU29ydGVkU2V0R2V0UmFuayBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zb3J0ZWQtc2V0LWdldC1yYW5rJztcbmltcG9ydCAqIGFzIENhY2hlU29ydGVkU2V0R2V0U2NvcmUgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc29ydGVkLXNldC1nZXQtc2NvcmUnO1xuaW1wb3J0ICogYXMgQ2FjaGVTb3J0ZWRTZXRHZXRTY29yZXMgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc29ydGVkLXNldC1nZXQtc2NvcmVzJztcbmltcG9ydCAqIGFzIENhY2hlU29ydGVkU2V0SW5jcmVtZW50U2NvcmUgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc29ydGVkLXNldC1pbmNyZW1lbnQtc2NvcmUnO1xuaW1wb3J0ICogYXMgQ2FjaGVTb3J0ZWRTZXRSZW1vdmVFbGVtZW50IGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLXNvcnRlZC1zZXQtcmVtb3ZlLWVsZW1lbnQnO1xuaW1wb3J0ICogYXMgQ2FjaGVTb3J0ZWRTZXRSZW1vdmVFbGVtZW50cyBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zb3J0ZWQtc2V0LXJlbW92ZS1lbGVtZW50cyc7XG5pbXBvcnQgKiBhcyBDYWNoZVNvcnRlZFNldExlbmd0aCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zb3J0ZWQtc2V0LWxlbmd0aCc7XG5pbXBvcnQgKiBhcyBDYWNoZVNvcnRlZFNldExlbmd0aEJ5U2NvcmUgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc29ydGVkLXNldC1sZW5ndGgtYnktc2NvcmUnO1xuaW1wb3J0ICogYXMgQ2FjaGVJdGVtR2V0VHlwZSBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1pdGVtLWdldC10eXBlJztcbmltcG9ydCAqIGFzIENhY2hlSXRlbUdldFR0bCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1pdGVtLWdldC10dGwnO1xuaW1wb3J0ICogYXMgQ2FjaGVLZXlFeGlzdHMgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUta2V5LWV4aXN0cyc7XG5pbXBvcnQgKiBhcyBDYWNoZUtleXNFeGlzdCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1rZXlzLWV4aXN0JztcbmltcG9ydCAqIGFzIENhY2hlVXBkYXRlVHRsIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLXR0bC11cGRhdGUnO1xuaW1wb3J0ICogYXMgQ2FjaGVJbmNyZWFzZVR0bCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS10dGwtaW5jcmVhc2UnO1xuaW1wb3J0ICogYXMgQ2FjaGVEZWNyZWFzZVR0bCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS10dGwtZGVjcmVhc2UnO1xuaW1wb3J0ICogYXMgQ2FjaGVTZXRCYXRjaCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1iYXRjaC1zZXQnO1xuaW1wb3J0ICogYXMgQ2FjaGVHZXRCYXRjaCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1iYXRjaC1nZXQnO1xuXG4vLyBUb3BpY0NsaWVudCBSZXNwb25zZSBUeXBlc1xuaW1wb3J0ICogYXMgVG9waWNQdWJsaXNoIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL3RvcGljLXB1Ymxpc2gnO1xuaW1wb3J0ICogYXMgVG9waWNTdWJzY3JpYmUgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvdG9waWMtc3Vic2NyaWJlJztcbmltcG9ydCB7VG9waWNJdGVtfSBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy90b3BpYy1pdGVtJztcbmltcG9ydCB7VG9waWNEaXNjb250aW51aXR5fSBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy90b3BpYy1kaXNjb250aW51aXR5JztcbmltcG9ydCB7VG9waWNIZWFydGJlYXR9IGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL3RvcGljLWhlYXJ0YmVhdCc7XG5cbi8vIEF1dGhDbGllbnQgUmVzcG9uc2UgVHlwZXNcbmltcG9ydCAqIGFzIEdlbmVyYXRlQXBpS2V5IGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2dlbmVyYXRlLWFwaS1rZXknO1xuaW1wb3J0ICogYXMgUmVmcmVzaEFwaUtleSBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9yZWZyZXNoLWFwaS1rZXknO1xuXG5pbXBvcnQgKiBhcyBHZW5lcmF0ZURpc3Bvc2FibGVUb2tlbiBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9nZW5lcmF0ZS1kaXNwb3NhYmxlLXRva2VuJztcblxuLy8gTGVhZGVyYm9hcmQgUmVzcG9uc2UgVHlwZXNcbmV4cG9ydCAqIGFzIGxlYWRlcmJvYXJkIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2xlYWRlcmJvYXJkJztcbmV4cG9ydCAqIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2xlYWRlcmJvYXJkJztcblxuZXhwb3J0ICogYXMgd2ViaG9vayBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy93ZWJob29rJztcbmV4cG9ydCAqIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL3dlYmhvb2snO1xuZXhwb3J0IHtXZWJob29rLCBXZWJob29rSWR9IGZyb20gJy4vbWVzc2FnZXMvd2ViaG9vayc7XG5cbi8vIFN0b3JlQ2xpZW50IFJlc3BvbnNlIFR5cGVzXG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9zdG9yYWdlJztcbmV4cG9ydCB7U3RvcmVJbmZvfSBmcm9tICcuL21lc3NhZ2VzL3N0b3JlLWluZm8nO1xuXG5pbXBvcnQge0NhY2hlSW5mb30gZnJvbSAnLi9tZXNzYWdlcy9jYWNoZS1pbmZvJztcbmltcG9ydCB7XG4gIFN1YnNjcmliZUNhbGxPcHRpb25zLFxuICBDb2xsZWN0aW9uVHRsLFxuICBTb3J0ZWRTZXRPcmRlcixcbiAgTGVhZGVyYm9hcmRPcmRlcixcbiAgRXhwaXJlc0luLFxuICBFeHBpcmVzQXQsXG4gIEl0ZW1UeXBlLFxuICBXZWJob29rRGVzdGluYXRpb24sXG4gIFBvc3RVcmxXZWJob29rRGVzdGluYXRpb24sXG4gIFdlYmhvb2tEZXN0aW5hdGlvblR5cGUsXG4gIFNldEJhdGNoSXRlbSxcbn0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCAqIGFzIHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5pbXBvcnQge1xuICBDcmVkZW50aWFsUHJvdmlkZXIsXG4gIFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyLFxuICBFbnZNb21lbnRvVG9rZW5Qcm92aWRlcixcbiAgZ2V0RGVmYXVsdENyZWRlbnRpYWxQcm92aWRlcixcbiAgTW9tZW50b0xvY2FsUHJvdmlkZXIsXG59IGZyb20gJy4vYXV0aCc7XG5cbmltcG9ydCB7XG4gIE1vbWVudG9FcnJvckNvZGUsXG4gIFNka0Vycm9yLFxuICBDYWNoZUFscmVhZHlFeGlzdHNFcnJvcixcbiAgU3RvcmVBbHJlYWR5RXhpc3RzRXJyb3IsXG4gIEF1dGhlbnRpY2F0aW9uRXJyb3IsXG4gIENhbmNlbGxlZEVycm9yLFxuICBDb25uZWN0aW9uRXJyb3IsXG4gIEZhaWxlZFByZWNvbmRpdGlvbkVycm9yLFxuICBMaW1pdEV4Y2VlZGVkRXJyb3IsXG4gIEludGVybmFsU2VydmVyRXJyb3IsXG4gIEludmFsaWRBcmd1bWVudEVycm9yLFxuICBVbmtub3duU2VydmljZUVycm9yLFxuICBTZXJ2ZXJVbmF2YWlsYWJsZUVycm9yLFxuICBUaW1lb3V0RXJyb3IsXG4gIEJhZFJlcXVlc3RFcnJvcixcbiAgUGVybWlzc2lvbkVycm9yLFxuICBDYWNoZU5vdEZvdW5kRXJyb3IsXG4gIFN0b3JlSXRlbU5vdEZvdW5kRXJyb3IsXG4gIFN0b3JlTm90Rm91bmRFcnJvcixcbiAgVW5rbm93bkVycm9yLFxufSBmcm9tICcuL2Vycm9ycyc7XG5cbmV4cG9ydCB7XG4gIE1vbWVudG9Mb2dnZXIsXG4gIE1vbWVudG9Mb2dnZXJGYWN0b3J5LFxufSBmcm9tICcuL2NvbmZpZy9sb2dnaW5nL21vbWVudG8tbG9nZ2VyJztcblxuZXhwb3J0ICogZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvZW51bXMnO1xuXG5leHBvcnQge1xuICBOb29wTW9tZW50b0xvZ2dlcixcbiAgTm9vcE1vbWVudG9Mb2dnZXJGYWN0b3J5LFxufSBmcm9tICcuL2NvbmZpZy9sb2dnaW5nL25vb3AtbW9tZW50by1sb2dnZXInO1xuXG5leHBvcnQge1xuICBJQ2FjaGVDbGllbnQsXG4gIERpY3Rpb25hcnlJbmNyZW1lbnRPcHRpb25zLFxuICBEaWN0aW9uYXJ5U2V0RmllbGRPcHRpb25zLFxuICBEaWN0aW9uYXJ5U2V0RmllbGRzT3B0aW9ucyxcbiAgU2V0T3B0aW9ucyxcbiAgU2V0SWZOb3RFeGlzdHNPcHRpb25zLFxuICBTZXRJZkFic2VudE9wdGlvbnMsXG4gIFNldElmUHJlc2VudE9wdGlvbnMsXG4gIFNldElmRXF1YWxPcHRpb25zLFxuICBTZXRJZk5vdEVxdWFsT3B0aW9ucyxcbiAgU2V0SWZQcmVzZW50QW5kTm90RXF1YWxPcHRpb25zLFxuICBTZXRJZkFic2VudE9yRXF1YWxPcHRpb25zLFxuICBTb3J0ZWRTZXRQdXRFbGVtZW50c09wdGlvbnMsXG4gIEluY3JlbWVudE9wdGlvbnMsXG59IGZyb20gJy4vY2xpZW50cy9JQ2FjaGVDbGllbnQnO1xuXG5leHBvcnQge0lTdG9yYWdlQ2xpZW50fSBmcm9tICcuL2NsaWVudHMvSVN0b3JhZ2VDbGllbnQnO1xuXG5leHBvcnQge0lNb21lbnRvQ2FjaGV9IGZyb20gJy4vY2xpZW50cy9JTW9tZW50b0NhY2hlJztcblxuZXhwb3J0IHtJTGVhZGVyYm9hcmRDbGllbnR9IGZyb20gJy4vY2xpZW50cy9JTGVhZGVyYm9hcmRDbGllbnQnO1xuZXhwb3J0IHtJTGVhZGVyYm9hcmR9IGZyb20gJy4vY2xpZW50cy9JTGVhZGVyYm9hcmQnO1xuXG5leHBvcnQge1xuICBDYWNoZVJvbGUsXG4gIENhY2hlUGVybWlzc2lvbixcbiAgVG9waWNSb2xlLFxuICBUb3BpY1Blcm1pc3Npb24sXG4gIFBlcm1pc3Npb24sXG4gIFBlcm1pc3Npb25zLFxuICBBbGxEYXRhUmVhZFdyaXRlLFxuICBQZXJtaXNzaW9uU2NvcGUsXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCAtIHBsZWFzZSB1c2UgUGVybWlzc2lvblNjb3BlXG4gICAqL1xuICBUb2tlblNjb3BlLFxuICBDYWNoZU5hbWUsXG4gIGlzQ2FjaGVOYW1lLFxuICBUb3BpY05hbWUsXG4gIGlzVG9waWNOYW1lLFxuICBDYWNoZVNlbGVjdG9yLFxuICBUb3BpY1NlbGVjdG9yLFxuICBBbGxDYWNoZXMsXG4gIEFsbFRvcGljcyxcbiAgQWxsQ2FjaGVJdGVtcyxcbn0gZnJvbSAnLi9hdXRoL3Rva2Vucy9wZXJtaXNzaW9uLXNjb3BlJztcblxuZXhwb3J0IHtcbiAgRGlzcG9zYWJsZVRva2VuU2NvcGUsXG4gIENhY2hlSXRlbVNlbGVjdG9yLFxuICBDYWNoZUl0ZW1LZXksXG4gIENhY2hlSXRlbUtleVByZWZpeCxcbiAgaXNDYWNoZUl0ZW1LZXksXG4gIGlzQ2FjaGVJdGVtS2V5UHJlZml4LFxufSBmcm9tICcuL2F1dGgvdG9rZW5zL2Rpc3Bvc2FibGUtdG9rZW4tc2NvcGUnO1xuXG5leHBvcnQgKiBhcyBQZXJtaXNzaW9uU2NvcGVzIGZyb20gJy4vYXV0aC90b2tlbnMvcGVybWlzc2lvbi1zY29wZXMnO1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBwbGVhc2UgdXNlIFBlcm1pc3Npb25TY29wZXMgaW5zdGVhZFxuICovXG5leHBvcnQgKiBhcyBUb2tlblNjb3BlcyBmcm9tICcuL2F1dGgvdG9rZW5zL3Blcm1pc3Npb24tc2NvcGVzJztcbmV4cG9ydCAqIGFzIERpc3Bvc2FibGVUb2tlblNjb3BlcyBmcm9tICcuL2F1dGgvdG9rZW5zL2Rpc3Bvc2FibGUtdG9rZW4tc2NvcGVzJztcblxuZXhwb3J0IHtSZWFkQ29uY2Vybn0gZnJvbSAnLi9jb25maWcvcmVhZC1jb25jZXJuJztcbmV4cG9ydCB7Q29tcHJlc3Npb25MZXZlbH0gZnJvbSAnLi9jb21wcmVzc2lvbi9jb21wcmVzc2lvbi1sZXZlbCc7XG5cbmV4cG9ydCB7XG4gIEV4cGlyZXNJbixcbiAgRXhwaXJlc0F0LFxuICBDb2xsZWN0aW9uVHRsLFxuICBJdGVtVHlwZSxcbiAgV2ViaG9va0Rlc3RpbmF0aW9uLFxuICBQb3N0VXJsV2ViaG9va0Rlc3RpbmF0aW9uLFxuICBXZWJob29rRGVzdGluYXRpb25UeXBlLFxuICBTb3J0ZWRTZXRPcmRlcixcbiAgTGVhZGVyYm9hcmRPcmRlcixcbiAgQ3JlZGVudGlhbFByb3ZpZGVyLFxuICBTdHJpbmdNb21lbnRvVG9rZW5Qcm92aWRlcixcbiAgRW52TW9tZW50b1Rva2VuUHJvdmlkZXIsXG4gIE1vbWVudG9Mb2NhbFByb3ZpZGVyLFxuICBnZXREZWZhdWx0Q3JlZGVudGlhbFByb3ZpZGVyLFxuICBTZXRCYXRjaEl0ZW0sXG5cbiAgLy8gQ2FjaGVDbGllbnQgUmVzcG9uc2UgVHlwZXNcbiAgQ2FjaGVHZXQsXG4gIENhY2hlTGlzdENvbmNhdGVuYXRlQmFjayxcbiAgQ2FjaGVMaXN0Q29uY2F0ZW5hdGVGcm9udCxcbiAgQ2FjaGVMaXN0RmV0Y2gsXG4gIENhY2hlTGlzdExlbmd0aCxcbiAgQ2FjaGVMaXN0UG9wQmFjayxcbiAgQ2FjaGVMaXN0UG9wRnJvbnQsXG4gIENhY2hlTGlzdFB1c2hCYWNrLFxuICBDYWNoZUxpc3RQdXNoRnJvbnQsXG4gIENhY2hlTGlzdFJlbW92ZVZhbHVlLFxuICBDYWNoZUxpc3RSZXRhaW4sXG4gIENhY2hlU2V0LFxuICBDYWNoZVNldElmTm90RXhpc3RzLFxuICBDYWNoZVNldElmUHJlc2VudCxcbiAgQ2FjaGVTZXRJZkFic2VudCxcbiAgQ2FjaGVTZXRJZkVxdWFsLFxuICBDYWNoZVNldElmTm90RXF1YWwsXG4gIENhY2hlU2V0SWZQcmVzZW50QW5kTm90RXF1YWwsXG4gIENhY2hlU2V0SWZBYnNlbnRPckVxdWFsLFxuICBDYWNoZURlbGV0ZSxcbiAgQ2FjaGVGbHVzaCxcbiAgQ3JlYXRlQ2FjaGUsXG4gIERlbGV0ZUNhY2hlLFxuICBMaXN0Q2FjaGVzLFxuICBDYWNoZUluY3JlbWVudCxcbiAgQ2FjaGVTZXRGZXRjaCxcbiAgQ2FjaGVEaWN0aW9uYXJ5RmV0Y2gsXG4gIENhY2hlRGljdGlvbmFyeVNldEZpZWxkLFxuICBDYWNoZURpY3Rpb25hcnlTZXRGaWVsZHMsXG4gIENhY2hlRGljdGlvbmFyeUdldEZpZWxkLFxuICBDYWNoZURpY3Rpb25hcnlHZXRGaWVsZHMsXG4gIENhY2hlRGljdGlvbmFyeVJlbW92ZUZpZWxkLFxuICBDYWNoZURpY3Rpb25hcnlSZW1vdmVGaWVsZHMsXG4gIENhY2hlRGljdGlvbmFyeUluY3JlbWVudCxcbiAgQ2FjaGVEaWN0aW9uYXJ5TGVuZ3RoLFxuICBDYWNoZVNldEFkZEVsZW1lbnRzLFxuICBDYWNoZVNldEFkZEVsZW1lbnQsXG4gIENhY2hlU2V0Q29udGFpbnNFbGVtZW50LFxuICBDYWNoZVNldENvbnRhaW5zRWxlbWVudHMsXG4gIENhY2hlU2V0UmVtb3ZlRWxlbWVudHMsXG4gIENhY2hlU2V0UmVtb3ZlRWxlbWVudCxcbiAgQ2FjaGVTZXRTYW1wbGUsXG4gIENhY2hlU2V0UG9wLFxuICBDYWNoZVNldExlbmd0aCxcbiAgQ2FjaGVTb3J0ZWRTZXRQdXRFbGVtZW50LFxuICBDYWNoZVNvcnRlZFNldFB1dEVsZW1lbnRzLFxuICBDYWNoZVNvcnRlZFNldEZldGNoLFxuICBDYWNoZVNvcnRlZFNldEdldFJhbmssXG4gIENhY2hlU29ydGVkU2V0R2V0U2NvcmUsXG4gIENhY2hlU29ydGVkU2V0R2V0U2NvcmVzLFxuICBDYWNoZVNvcnRlZFNldEluY3JlbWVudFNjb3JlLFxuICBDYWNoZVNvcnRlZFNldFJlbW92ZUVsZW1lbnQsXG4gIENhY2hlU29ydGVkU2V0UmVtb3ZlRWxlbWVudHMsXG4gIENhY2hlU29ydGVkU2V0TGVuZ3RoLFxuICBDYWNoZVNvcnRlZFNldExlbmd0aEJ5U2NvcmUsXG4gIENhY2hlSXRlbUdldFR5cGUsXG4gIENhY2hlSXRlbUdldFR0bCxcbiAgQ2FjaGVLZXlFeGlzdHMsXG4gIENhY2hlS2V5c0V4aXN0LFxuICBDYWNoZVVwZGF0ZVR0bCxcbiAgQ2FjaGVJbmNyZWFzZVR0bCxcbiAgQ2FjaGVEZWNyZWFzZVR0bCxcbiAgQ2FjaGVJbmZvLFxuICBDYWNoZVNldEJhdGNoLFxuICBDYWNoZUdldEJhdGNoLFxuICAvLyBUb3BpY0NsaWVudCBSZXNwb25zZSBUeXBlc1xuICBUb3BpY1B1Ymxpc2gsXG4gIFRvcGljU3Vic2NyaWJlLFxuICBUb3BpY0l0ZW0sXG4gIFRvcGljRGlzY29udGludWl0eSxcbiAgVG9waWNIZWFydGJlYXQsXG4gIFN1YnNjcmliZUNhbGxPcHRpb25zLFxuICAvLyBBdXRoQ2xpZW50IFJlc3BvbnNlIFR5cGVzXG4gIEdlbmVyYXRlQXBpS2V5LFxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgLSBwbGVhc2UgdXNlIEdlbmVyYXRlQXBpS2V5XG4gICAqL1xuICBHZW5lcmF0ZUFwaUtleSBhcyBHZW5lcmF0ZUF1dGhUb2tlbixcbiAgUmVmcmVzaEFwaUtleSxcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIC0gcGxlYXNlIHVzZSBSZWZyZXNoQXBpS2V5XG4gICAqL1xuICBSZWZyZXNoQXBpS2V5IGFzIFJlZnJlc2hBdXRoVG9rZW4sXG4gIEdlbmVyYXRlRGlzcG9zYWJsZVRva2VuLFxuICAvLyBFcnJvcnNcbiAgTW9tZW50b0Vycm9yQ29kZSxcbiAgU2RrRXJyb3IsXG4gIENhY2hlQWxyZWFkeUV4aXN0c0Vycm9yLFxuICBTdG9yZUFscmVhZHlFeGlzdHNFcnJvcixcbiAgQXV0aGVudGljYXRpb25FcnJvcixcbiAgQ2FuY2VsbGVkRXJyb3IsXG4gIENvbm5lY3Rpb25FcnJvcixcbiAgRmFpbGVkUHJlY29uZGl0aW9uRXJyb3IsXG4gIExpbWl0RXhjZWVkZWRFcnJvcixcbiAgSW50ZXJuYWxTZXJ2ZXJFcnJvcixcbiAgSW52YWxpZEFyZ3VtZW50RXJyb3IsXG4gIFVua25vd25TZXJ2aWNlRXJyb3IsXG4gIFNlcnZlclVuYXZhaWxhYmxlRXJyb3IsXG4gIFRpbWVvdXRFcnJvcixcbiAgQmFkUmVxdWVzdEVycm9yLFxuICBQZXJtaXNzaW9uRXJyb3IsXG4gIENhY2hlTm90Rm91bmRFcnJvcixcbiAgU3RvcmVJdGVtTm90Rm91bmRFcnJvcixcbiAgU3RvcmVOb3RGb3VuZEVycm9yLFxuICBVbmtub3duRXJyb3IsXG59O1xuIl19
239
+ var subscription_retry_strategy_1 = require("./config/retry/subscription-retry-strategy");
240
+ Object.defineProperty(exports, "DEFAULT_SUBSCRIPTION_RETRY_DELAY_MILLIS", { enumerable: true, get: function () { return subscription_retry_strategy_1.DEFAULT_SUBSCRIPTION_RETRY_DELAY_MILLIS; } });
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhCQUE4QjtBQUM5QiwyREFBMkQ7QUE4T3pELDRCQUFRO0FBN09WLDZGQUE2RjtBQThPM0YsNERBQXdCO0FBN08xQiwrRkFBK0Y7QUE4TzdGLDhEQUF5QjtBQTdPM0Isd0VBQXdFO0FBOE90RSx3Q0FBYztBQTdPaEIsMEVBQTBFO0FBOE94RSwwQ0FBZTtBQTdPakIsNkVBQTZFO0FBOE8zRSw0Q0FBZ0I7QUE3T2xCLCtFQUErRTtBQThPN0UsOENBQWlCO0FBN09uQiwrRUFBK0U7QUE4TzdFLDhDQUFpQjtBQTdPbkIsaUZBQWlGO0FBOE8vRSxnREFBa0I7QUE3T3BCLHFGQUFxRjtBQThPbkYsb0RBQW9CO0FBN090QiwwRUFBMEU7QUE4T3hFLDBDQUFlO0FBN09qQiwyREFBMkQ7QUE4T3pELDRCQUFRO0FBN09WLGlFQUFpRTtBQXFQL0Qsa0NBQVc7QUFwUGIsK0RBQStEO0FBcVA3RCxnQ0FBVTtBQXBQWixpRUFBaUU7QUFxUC9ELGtDQUFXO0FBcFBiLGlFQUFpRTtBQXFQL0Qsa0NBQVc7QUFwUGIsK0RBQStEO0FBcVA3RCxnQ0FBVTtBQXBQWixzRUFBc0U7QUFzUHBFLHNDQUFhO0FBclBmLG9GQUFvRjtBQXNQbEYsb0RBQW9CO0FBclB0QiwyRkFBMkY7QUFzUHpGLDBEQUF1QjtBQXJQekIsNkZBQTZGO0FBc1AzRiw0REFBd0I7QUFyUDFCLDJGQUEyRjtBQXNQekYsMERBQXVCO0FBclB6Qiw2RkFBNkY7QUFzUDNGLDREQUF3QjtBQXJQMUIsaUdBQWlHO0FBc1AvRixnRUFBMEI7QUFyUDVCLG1HQUFtRztBQXNQakcsa0VBQTJCO0FBclA3Qiw0RkFBNEY7QUFzUDFGLDREQUF3QjtBQXJQMUIsc0ZBQXNGO0FBc1BwRixzREFBcUI7QUFyUHZCLG1GQUFtRjtBQXNQakYsa0RBQW1CO0FB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bkIscUVBQWlFO0FBQXpELHFIQUFBLGdCQUFnQixPQUFBO0FBQ3hCLDBGQUlvRDtBQURsRCxzSkFBQSx1Q0FBdUMsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIENhY2hlIENsaWVudCBSZXNwb25zZSBUeXBlc1xuaW1wb3J0ICogYXMgQ2FjaGVHZXQgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtZ2V0JztcbmltcG9ydCAqIGFzIENhY2hlTGlzdENvbmNhdGVuYXRlQmFjayBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1saXN0LWNvbmNhdGVuYXRlLWJhY2snO1xuaW1wb3J0ICogYXMgQ2FjaGVMaXN0Q29uY2F0ZW5hdGVGcm9udCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1saXN0LWNvbmNhdGVuYXRlLWZyb250JztcbmltcG9ydCAqIGFzIENhY2hlTGlzdEZldGNoIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLWxpc3QtZmV0Y2gnO1xuaW1wb3J0ICogYXMgQ2FjaGVMaXN0TGVuZ3RoIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLWxpc3QtbGVuZ3RoJztcbmltcG9ydCAqIGFzIENhY2hlTGlzdFBvcEJhY2sgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtbGlzdC1wb3AtYmFjayc7XG5pbXBvcnQgKiBhcyBDYWNoZUxpc3RQb3BGcm9udCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1saXN0LXBvcC1mcm9udCc7XG5pbXBvcnQgKiBhcyBDYWNoZUxpc3RQdXNoQmFjayBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1saXN0LXB1c2gtYmFjayc7XG5pbXBvcnQgKiBhcyBDYWNoZUxpc3RQdXNoRnJvbnQgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtbGlzdC1wdXNoLWZyb250JztcbmltcG9ydCAqIGFzIENhY2hlTGlzdFJlbW92ZVZhbHVlIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLWxpc3QtcmVtb3ZlLXZhbHVlJztcbmltcG9ydCAqIGFzIENhY2hlTGlzdFJldGFpbiBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1saXN0LXJldGFpbic7XG5pbXBvcnQgKiBhcyBDYWNoZVNldCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zZXQnO1xuaW1wb3J0ICogYXMgQ2FjaGVEZWxldGUgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtZGVsZXRlJztcbmltcG9ydCAqIGFzIENhY2hlRmx1c2ggZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtZmx1c2gnO1xuaW1wb3J0ICogYXMgQ3JlYXRlQ2FjaGUgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY3JlYXRlLWNhY2hlJztcbmltcG9ydCAqIGFzIERlbGV0ZUNhY2hlIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2RlbGV0ZS1jYWNoZSc7XG5pbXBvcnQgKiBhcyBMaXN0Q2FjaGVzIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2xpc3QtY2FjaGVzJztcbmltcG9ydCAqIGFzIENhY2hlU2V0RmV0Y2ggZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc2V0LWZldGNoJztcbmltcG9ydCAqIGFzIENhY2hlRGljdGlvbmFyeUZldGNoIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLWRpY3Rpb25hcnktZmV0Y2gnO1xuaW1wb3J0ICogYXMgQ2FjaGVEaWN0aW9uYXJ5U2V0RmllbGQgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtZGljdGlvbmFyeS1zZXQtZmllbGQnO1xuaW1wb3J0ICogYXMgQ2FjaGVEaWN0aW9uYXJ5U2V0RmllbGRzIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLWRpY3Rpb25hcnktc2V0LWZpZWxkcyc7XG5pbXBvcnQgKiBhcyBDYWNoZURpY3Rpb25hcnlHZXRGaWVsZCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1kaWN0aW9uYXJ5LWdldC1maWVsZCc7XG5pbXBvcnQgKiBhcyBDYWNoZURpY3Rpb25hcnlHZXRGaWVsZHMgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtZGljdGlvbmFyeS1nZXQtZmllbGRzJztcbmltcG9ydCAqIGFzIENhY2hlRGljdGlvbmFyeVJlbW92ZUZpZWxkIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLWRpY3Rpb25hcnktcmVtb3ZlLWZpZWxkJztcbmltcG9ydCAqIGFzIENhY2hlRGljdGlvbmFyeVJlbW92ZUZpZWxkcyBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1kaWN0aW9uYXJ5LXJlbW92ZS1maWVsZHMnO1xuaW1wb3J0ICogYXMgQ2FjaGVEaWN0aW9uYXJ5SW5jcmVtZW50IGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLWRpY3Rpb25hcnktaW5jcmVtZW50JztcbmltcG9ydCAqIGFzIENhY2hlRGljdGlvbmFyeUxlbmd0aCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1kaWN0aW9uYXJ5LWxlbmd0aCc7XG5pbXBvcnQgKiBhcyBDYWNoZVNldEFkZEVsZW1lbnRzIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLXNldC1hZGQtZWxlbWVudHMnO1xuaW1wb3J0ICogYXMgQ2FjaGVTZXRBZGRFbGVtZW50IGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLXNldC1hZGQtZWxlbWVudCc7XG5pbXBvcnQgKiBhcyBDYWNoZVNldENvbnRhaW5zRWxlbWVudCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zZXQtY29udGFpbnMtZWxlbWVudCc7XG5pbXBvcnQgKiBhcyBDYWNoZVNldENvbnRhaW5zRWxlbWVudHMgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc2V0LWNvbnRhaW5zLWVsZW1lbnRzJztcbmltcG9ydCAqIGFzIENhY2hlU2V0UmVtb3ZlRWxlbWVudHMgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc2V0LXJlbW92ZS1lbGVtZW50cyc7XG5pbXBvcnQgKiBhcyBDYWNoZVNldFJlbW92ZUVsZW1lbnQgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc2V0LXJlbW92ZS1lbGVtZW50JztcbmltcG9ydCAqIGFzIENhY2hlU2V0U2FtcGxlIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLXNldC1zYW1wbGUnO1xuaW1wb3J0ICogYXMgQ2FjaGVTZXRQb3AgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc2V0LXBvcCc7XG5pbXBvcnQgKiBhcyBDYWNoZVNldExlbmd0aCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zZXQtbGVuZ3RoJztcbmltcG9ydCAqIGFzIENhY2hlSW5jcmVtZW50IGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLWluY3JlbWVudCc7XG5pbXBvcnQgKiBhcyBDYWNoZVNldElmTm90RXhpc3RzIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLXNldC1pZi1ub3QtZXhpc3RzJztcbmltcG9ydCAqIGFzIENhY2hlU2V0SWZBYnNlbnQgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc2V0LWlmLWFic2VudCc7XG5pbXBvcnQgKiBhcyBDYWNoZVNldElmUHJlc2VudCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zZXQtaWYtcHJlc2VudCc7XG5pbXBvcnQgKiBhcyBDYWNoZVNldElmRXF1YWwgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc2V0LWlmLWVxdWFsJztcbmltcG9ydCAqIGFzIENhY2hlU2V0SWZOb3RFcXVhbCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zZXQtaWYtbm90LWVxdWFsJztcbmltcG9ydCAqIGFzIENhY2hlU2V0SWZQcmVzZW50QW5kTm90RXF1YWwgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc2V0LWlmLXByZXNlbnQtYW5kLW5vdC1lcXVhbCc7XG5pbXBvcnQgKiBhcyBDYWNoZVNldElmQWJzZW50T3JFcXVhbCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zZXQtaWYtYWJzZW50LW9yLWVxdWFsJztcbmltcG9ydCAqIGFzIENhY2hlU29ydGVkU2V0UHV0RWxlbWVudCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zb3J0ZWQtc2V0LXB1dC1lbGVtZW50JztcbmltcG9ydCAqIGFzIENhY2hlU29ydGVkU2V0UHV0RWxlbWVudHMgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc29ydGVkLXNldC1wdXQtZWxlbWVudHMnO1xuaW1wb3J0ICogYXMgQ2FjaGVTb3J0ZWRTZXRGZXRjaCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zb3J0ZWQtc2V0LWZldGNoJztcbmltcG9ydCAqIGFzIENhY2hlU29ydGVkU2V0R2V0UmFuayBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zb3J0ZWQtc2V0LWdldC1yYW5rJztcbmltcG9ydCAqIGFzIENhY2hlU29ydGVkU2V0R2V0U2NvcmUgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc29ydGVkLXNldC1nZXQtc2NvcmUnO1xuaW1wb3J0ICogYXMgQ2FjaGVTb3J0ZWRTZXRHZXRTY29yZXMgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc29ydGVkLXNldC1nZXQtc2NvcmVzJztcbmltcG9ydCAqIGFzIENhY2hlU29ydGVkU2V0SW5jcmVtZW50U2NvcmUgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc29ydGVkLXNldC1pbmNyZW1lbnQtc2NvcmUnO1xuaW1wb3J0ICogYXMgQ2FjaGVTb3J0ZWRTZXRSZW1vdmVFbGVtZW50IGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLXNvcnRlZC1zZXQtcmVtb3ZlLWVsZW1lbnQnO1xuaW1wb3J0ICogYXMgQ2FjaGVTb3J0ZWRTZXRSZW1vdmVFbGVtZW50cyBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zb3J0ZWQtc2V0LXJlbW92ZS1lbGVtZW50cyc7XG5pbXBvcnQgKiBhcyBDYWNoZVNvcnRlZFNldExlbmd0aCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1zb3J0ZWQtc2V0LWxlbmd0aCc7XG5pbXBvcnQgKiBhcyBDYWNoZVNvcnRlZFNldExlbmd0aEJ5U2NvcmUgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUtc29ydGVkLXNldC1sZW5ndGgtYnktc2NvcmUnO1xuaW1wb3J0ICogYXMgQ2FjaGVJdGVtR2V0VHlwZSBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1pdGVtLWdldC10eXBlJztcbmltcG9ydCAqIGFzIENhY2hlSXRlbUdldFR0bCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1pdGVtLWdldC10dGwnO1xuaW1wb3J0ICogYXMgQ2FjaGVLZXlFeGlzdHMgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvY2FjaGUta2V5LWV4aXN0cyc7XG5pbXBvcnQgKiBhcyBDYWNoZUtleXNFeGlzdCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1rZXlzLWV4aXN0JztcbmltcG9ydCAqIGFzIENhY2hlVXBkYXRlVHRsIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2NhY2hlLXR0bC11cGRhdGUnO1xuaW1wb3J0ICogYXMgQ2FjaGVJbmNyZWFzZVR0bCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS10dGwtaW5jcmVhc2UnO1xuaW1wb3J0ICogYXMgQ2FjaGVEZWNyZWFzZVR0bCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS10dGwtZGVjcmVhc2UnO1xuaW1wb3J0ICogYXMgQ2FjaGVTZXRCYXRjaCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1iYXRjaC1zZXQnO1xuaW1wb3J0ICogYXMgQ2FjaGVHZXRCYXRjaCBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9jYWNoZS1iYXRjaC1nZXQnO1xuXG4vLyBUb3BpY0NsaWVudCBSZXNwb25zZSBUeXBlc1xuaW1wb3J0ICogYXMgVG9waWNQdWJsaXNoIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL3RvcGljLXB1Ymxpc2gnO1xuaW1wb3J0ICogYXMgVG9waWNTdWJzY3JpYmUgZnJvbSAnLi9tZXNzYWdlcy9yZXNwb25zZXMvdG9waWMtc3Vic2NyaWJlJztcbmltcG9ydCB7VG9waWNJdGVtfSBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy90b3BpYy1pdGVtJztcbmltcG9ydCB7VG9waWNEaXNjb250aW51aXR5fSBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy90b3BpYy1kaXNjb250aW51aXR5JztcbmltcG9ydCB7VG9waWNIZWFydGJlYXR9IGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL3RvcGljLWhlYXJ0YmVhdCc7XG5cbi8vIEF1dGhDbGllbnQgUmVzcG9uc2UgVHlwZXNcbmltcG9ydCAqIGFzIEdlbmVyYXRlQXBpS2V5IGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2dlbmVyYXRlLWFwaS1rZXknO1xuaW1wb3J0ICogYXMgUmVmcmVzaEFwaUtleSBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9yZWZyZXNoLWFwaS1rZXknO1xuXG5pbXBvcnQgKiBhcyBHZW5lcmF0ZURpc3Bvc2FibGVUb2tlbiBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9nZW5lcmF0ZS1kaXNwb3NhYmxlLXRva2VuJztcblxuLy8gTGVhZGVyYm9hcmQgUmVzcG9uc2UgVHlwZXNcbmV4cG9ydCAqIGFzIGxlYWRlcmJvYXJkIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2xlYWRlcmJvYXJkJztcbmV4cG9ydCAqIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL2xlYWRlcmJvYXJkJztcblxuZXhwb3J0ICogYXMgd2ViaG9vayBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy93ZWJob29rJztcbmV4cG9ydCAqIGZyb20gJy4vbWVzc2FnZXMvcmVzcG9uc2VzL3dlYmhvb2snO1xuZXhwb3J0IHtXZWJob29rLCBXZWJob29rSWR9IGZyb20gJy4vbWVzc2FnZXMvd2ViaG9vayc7XG5cbmltcG9ydCB7Q2FjaGVJbmZvfSBmcm9tICcuL21lc3NhZ2VzL2NhY2hlLWluZm8nO1xuaW1wb3J0IHtcbiAgU3Vic2NyaWJlQ2FsbE9wdGlvbnMsXG4gIENvbGxlY3Rpb25UdGwsXG4gIFNvcnRlZFNldE9yZGVyLFxuICBMZWFkZXJib2FyZE9yZGVyLFxuICBFeHBpcmVzSW4sXG4gIEV4cGlyZXNBdCxcbiAgSXRlbVR5cGUsXG4gIFdlYmhvb2tEZXN0aW5hdGlvbixcbiAgUG9zdFVybFdlYmhvb2tEZXN0aW5hdGlvbixcbiAgV2ViaG9va0Rlc3RpbmF0aW9uVHlwZSxcbiAgU2V0QmF0Y2hJdGVtLFxufSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0ICogYXMgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmltcG9ydCB7XG4gIENyZWRlbnRpYWxQcm92aWRlcixcbiAgU3RyaW5nTW9tZW50b1Rva2VuUHJvdmlkZXIsXG4gIEVudk1vbWVudG9Ub2tlblByb3ZpZGVyLFxuICBnZXREZWZhdWx0Q3JlZGVudGlhbFByb3ZpZGVyLFxuICBNb21lbnRvTG9jYWxQcm92aWRlcixcbn0gZnJvbSAnLi9hdXRoJztcblxuaW1wb3J0IHtcbiAgTW9tZW50b0Vycm9yQ29kZSxcbiAgU2RrRXJyb3IsXG4gIENhY2hlQWxyZWFkeUV4aXN0c0Vycm9yLFxuICBTdG9yZUFscmVhZHlFeGlzdHNFcnJvcixcbiAgQXV0aGVudGljYXRpb25FcnJvcixcbiAgQ2FuY2VsbGVkRXJyb3IsXG4gIENvbm5lY3Rpb25FcnJvcixcbiAgRmFpbGVkUHJlY29uZGl0aW9uRXJyb3IsXG4gIExpbWl0RXhjZWVkZWRFcnJvcixcbiAgSW50ZXJuYWxTZXJ2ZXJFcnJvcixcbiAgSW52YWxpZEFyZ3VtZW50RXJyb3IsXG4gIFVua25vd25TZXJ2aWNlRXJyb3IsXG4gIFNlcnZlclVuYXZhaWxhYmxlRXJyb3IsXG4gIFRpbWVvdXRFcnJvcixcbiAgQmFkUmVxdWVzdEVycm9yLFxuICBQZXJtaXNzaW9uRXJyb3IsXG4gIENhY2hlTm90Rm91bmRFcnJvcixcbiAgU3RvcmVJdGVtTm90Rm91bmRFcnJvcixcbiAgU3RvcmVOb3RGb3VuZEVycm9yLFxuICBVbmtub3duRXJyb3IsXG59IGZyb20gJy4vZXJyb3JzJztcblxuZXhwb3J0IHtcbiAgTW9tZW50b0xvZ2dlcixcbiAgTW9tZW50b0xvZ2dlckZhY3RvcnksXG59IGZyb20gJy4vY29uZmlnL2xvZ2dpbmcvbW9tZW50by1sb2dnZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2VzL3Jlc3BvbnNlcy9lbnVtcyc7XG5cbmV4cG9ydCB7XG4gIE5vb3BNb21lbnRvTG9nZ2VyLFxuICBOb29wTW9tZW50b0xvZ2dlckZhY3RvcnksXG59IGZyb20gJy4vY29uZmlnL2xvZ2dpbmcvbm9vcC1tb21lbnRvLWxvZ2dlcic7XG5cbmV4cG9ydCB7XG4gIElDYWNoZUNsaWVudCxcbiAgRGljdGlvbmFyeUluY3JlbWVudE9wdGlvbnMsXG4gIERpY3Rpb25hcnlTZXRGaWVsZE9wdGlvbnMsXG4gIERpY3Rpb25hcnlTZXRGaWVsZHNPcHRpb25zLFxuICBTZXRPcHRpb25zLFxuICBTZXRJZk5vdEV4aXN0c09wdGlvbnMsXG4gIFNldElmQWJzZW50T3B0aW9ucyxcbiAgU2V0SWZQcmVzZW50T3B0aW9ucyxcbiAgU2V0SWZFcXVhbE9wdGlvbnMsXG4gIFNldElmTm90RXF1YWxPcHRpb25zLFxuICBTZXRJZlByZXNlbnRBbmROb3RFcXVhbE9wdGlvbnMsXG4gIFNldElmQWJzZW50T3JFcXVhbE9wdGlvbnMsXG4gIFNvcnRlZFNldFB1dEVsZW1lbnRzT3B0aW9ucyxcbiAgSW5jcmVtZW50T3B0aW9ucyxcbn0gZnJvbSAnLi9jbGllbnRzL0lDYWNoZUNsaWVudCc7XG5cbmV4cG9ydCB7SU1vbWVudG9DYWNoZX0gZnJvbSAnLi9jbGllbnRzL0lNb21lbnRvQ2FjaGUnO1xuXG5leHBvcnQge0lMZWFkZXJib2FyZENsaWVudH0gZnJvbSAnLi9jbGllbnRzL0lMZWFkZXJib2FyZENsaWVudCc7XG5leHBvcnQge0lMZWFkZXJib2FyZH0gZnJvbSAnLi9jbGllbnRzL0lMZWFkZXJib2FyZCc7XG5cbmV4cG9ydCB7XG4gIENhY2hlUm9sZSxcbiAgQ2FjaGVQZXJtaXNzaW9uLFxuICBUb3BpY1JvbGUsXG4gIFRvcGljUGVybWlzc2lvbixcbiAgUGVybWlzc2lvbixcbiAgUGVybWlzc2lvbnMsXG4gIEFsbERhdGFSZWFkV3JpdGUsXG4gIFBlcm1pc3Npb25TY29wZSxcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIC0gcGxlYXNlIHVzZSBQZXJtaXNzaW9uU2NvcGVcbiAgICovXG4gIFRva2VuU2NvcGUsXG4gIENhY2hlTmFtZSxcbiAgaXNDYWNoZU5hbWUsXG4gIFRvcGljTmFtZSxcbiAgaXNUb3BpY05hbWUsXG4gIENhY2hlU2VsZWN0b3IsXG4gIFRvcGljU2VsZWN0b3IsXG4gIEFsbENhY2hlcyxcbiAgQWxsVG9waWNzLFxuICBBbGxDYWNoZUl0ZW1zLFxufSBmcm9tICcuL2F1dGgvdG9rZW5zL3Blcm1pc3Npb24tc2NvcGUnO1xuXG5leHBvcnQge1xuICBEaXNwb3NhYmxlVG9rZW5TY29wZSxcbiAgQ2FjaGVJdGVtU2VsZWN0b3IsXG4gIENhY2hlSXRlbUtleSxcbiAgQ2FjaGVJdGVtS2V5UHJlZml4LFxuICBpc0NhY2hlSXRlbUtleSxcbiAgaXNDYWNoZUl0ZW1LZXlQcmVmaXgsXG59IGZyb20gJy4vYXV0aC90b2tlbnMvZGlzcG9zYWJsZS10b2tlbi1zY29wZSc7XG5cbmV4cG9ydCAqIGFzIFBlcm1pc3Npb25TY29wZXMgZnJvbSAnLi9hdXRoL3Rva2Vucy9wZXJtaXNzaW9uLXNjb3Blcyc7XG4vKipcbiAqIEBkZXByZWNhdGVkIHBsZWFzZSB1c2UgUGVybWlzc2lvblNjb3BlcyBpbnN0ZWFkXG4gKi9cbmV4cG9ydCAqIGFzIFRva2VuU2NvcGVzIGZyb20gJy4vYXV0aC90b2tlbnMvcGVybWlzc2lvbi1zY29wZXMnO1xuZXhwb3J0ICogYXMgRGlzcG9zYWJsZVRva2VuU2NvcGVzIGZyb20gJy4vYXV0aC90b2tlbnMvZGlzcG9zYWJsZS10b2tlbi1zY29wZXMnO1xuXG5leHBvcnQge1JlYWRDb25jZXJufSBmcm9tICcuL2NvbmZpZy9yZWFkLWNvbmNlcm4nO1xuZXhwb3J0IHtDb21wcmVzc2lvbkxldmVsfSBmcm9tICcuL2NvbXByZXNzaW9uL2NvbXByZXNzaW9uLWxldmVsJztcbmV4cG9ydCB7XG4gIFN1YnNjcmlwdGlvblJldHJ5U3RyYXRlZ3ksXG4gIERldGVybWluZVdoZW5Ub1Jlc3Vic2NyaWJlUHJvcHMsXG4gIERFRkFVTFRfU1VCU0NSSVBUSU9OX1JFVFJZX0RFTEFZX01JTExJUyxcbn0gZnJvbSAnLi9jb25maWcvcmV0cnkvc3Vic2NyaXB0aW9uLXJldHJ5LXN0cmF0ZWd5JztcbmV4cG9ydCB7XG4gIFN1YnNjcmlwdGlvblJldHJ5RWxpZ2liaWxpdHlTdHJhdGVneSxcbiAgRWxpZ2libGVGb3JSZXN1YnNjcmliZVByb3BzLFxufSBmcm9tICcuL2NvbmZpZy9yZXRyeS9zdWJzY3JpcHRpb24tcmV0cnktZWxpZ2liaWxpdHktc3RyYXRlZ3knO1xuXG5leHBvcnQge1xuICBFeHBpcmVzSW4sXG4gIEV4cGlyZXNBdCxcbiAgQ29sbGVjdGlvblR0bCxcbiAgSXRlbVR5cGUsXG4gIFdlYmhvb2tEZXN0aW5hdGlvbixcbiAgUG9zdFVybFdlYmhvb2tEZXN0aW5hdGlvbixcbiAgV2ViaG9va0Rlc3RpbmF0aW9uVHlwZSxcbiAgU29ydGVkU2V0T3JkZXIsXG4gIExlYWRlcmJvYXJkT3JkZXIsXG4gIENyZWRlbnRpYWxQcm92aWRlcixcbiAgU3RyaW5nTW9tZW50b1Rva2VuUHJvdmlkZXIsXG4gIEVudk1vbWVudG9Ub2tlblByb3ZpZGVyLFxuICBNb21lbnRvTG9jYWxQcm92aWRlcixcbiAgZ2V0RGVmYXVsdENyZWRlbnRpYWxQcm92aWRlcixcbiAgU2V0QmF0Y2hJdGVtLFxuXG4gIC8vIENhY2hlQ2xpZW50IFJlc3BvbnNlIFR5cGVzXG4gIENhY2hlR2V0LFxuICBDYWNoZUxpc3RDb25jYXRlbmF0ZUJhY2ssXG4gIENhY2hlTGlzdENvbmNhdGVuYXRlRnJvbnQsXG4gIENhY2hlTGlzdEZldGNoLFxuICBDYWNoZUxpc3RMZW5ndGgsXG4gIENhY2hlTGlzdFBvcEJhY2ssXG4gIENhY2hlTGlzdFBvcEZyb250LFxuICBDYWNoZUxpc3RQdXNoQmFjayxcbiAgQ2FjaGVMaXN0UHVzaEZyb250LFxuICBDYWNoZUxpc3RSZW1vdmVWYWx1ZSxcbiAgQ2FjaGVMaXN0UmV0YWluLFxuICBDYWNoZVNldCxcbiAgQ2FjaGVTZXRJZk5vdEV4aXN0cyxcbiAgQ2FjaGVTZXRJZlByZXNlbnQsXG4gIENhY2hlU2V0SWZBYnNlbnQsXG4gIENhY2hlU2V0SWZFcXVhbCxcbiAgQ2FjaGVTZXRJZk5vdEVxdWFsLFxuICBDYWNoZVNldElmUHJlc2VudEFuZE5vdEVxdWFsLFxuICBDYWNoZVNldElmQWJzZW50T3JFcXVhbCxcbiAgQ2FjaGVEZWxldGUsXG4gIENhY2hlRmx1c2gsXG4gIENyZWF0ZUNhY2hlLFxuICBEZWxldGVDYWNoZSxcbiAgTGlzdENhY2hlcyxcbiAgQ2FjaGVJbmNyZW1lbnQsXG4gIENhY2hlU2V0RmV0Y2gsXG4gIENhY2hlRGljdGlvbmFyeUZldGNoLFxuICBDYWNoZURpY3Rpb25hcnlTZXRGaWVsZCxcbiAgQ2FjaGVEaWN0aW9uYXJ5U2V0RmllbGRzLFxuICBDYWNoZURpY3Rpb25hcnlHZXRGaWVsZCxcbiAgQ2FjaGVEaWN0aW9uYXJ5R2V0RmllbGRzLFxuICBDYWNoZURpY3Rpb25hcnlSZW1vdmVGaWVsZCxcbiAgQ2FjaGVEaWN0aW9uYXJ5UmVtb3ZlRmllbGRzLFxuICBDYWNoZURpY3Rpb25hcnlJbmNyZW1lbnQsXG4gIENhY2hlRGljdGlvbmFyeUxlbmd0aCxcbiAgQ2FjaGVTZXRBZGRFbGVtZW50cyxcbiAgQ2FjaGVTZXRBZGRFbGVtZW50LFxuICBDYWNoZVNldENvbnRhaW5zRWxlbWVudCxcbiAgQ2FjaGVTZXRDb250YWluc0VsZW1lbnRzLFxuICBDYWNoZVNldFJlbW92ZUVsZW1lbnRzLFxuICBDYWNoZVNldFJlbW92ZUVsZW1lbnQsXG4gIENhY2hlU2V0U2FtcGxlLFxuICBDYWNoZVNldFBvcCxcbiAgQ2FjaGVTZXRMZW5ndGgsXG4gIENhY2hlU29ydGVkU2V0UHV0RWxlbWVudCxcbiAgQ2FjaGVTb3J0ZWRTZXRQdXRFbGVtZW50cyxcbiAgQ2FjaGVTb3J0ZWRTZXRGZXRjaCxcbiAgQ2FjaGVTb3J0ZWRTZXRHZXRSYW5rLFxuICBDYWNoZVNvcnRlZFNldEdldFNjb3JlLFxuICBDYWNoZVNvcnRlZFNldEdldFNjb3JlcyxcbiAgQ2FjaGVTb3J0ZWRTZXRJbmNyZW1lbnRTY29yZSxcbiAgQ2FjaGVTb3J0ZWRTZXRSZW1vdmVFbGVtZW50LFxuICBDYWNoZVNvcnRlZFNldFJlbW92ZUVsZW1lbnRzLFxuICBDYWNoZVNvcnRlZFNldExlbmd0aCxcbiAgQ2FjaGVTb3J0ZWRTZXRMZW5ndGhCeVNjb3JlLFxuICBDYWNoZUl0ZW1HZXRUeXBlLFxuICBDYWNoZUl0ZW1HZXRUdGwsXG4gIENhY2hlS2V5RXhpc3RzLFxuICBDYWNoZUtleXNFeGlzdCxcbiAgQ2FjaGVVcGRhdGVUdGwsXG4gIENhY2hlSW5jcmVhc2VUdGwsXG4gIENhY2hlRGVjcmVhc2VUdGwsXG4gIENhY2hlSW5mbyxcbiAgQ2FjaGVTZXRCYXRjaCxcbiAgQ2FjaGVHZXRCYXRjaCxcbiAgLy8gVG9waWNDbGllbnQgUmVzcG9uc2UgVHlwZXNcbiAgVG9waWNQdWJsaXNoLFxuICBUb3BpY1N1YnNjcmliZSxcbiAgVG9waWNJdGVtLFxuICBUb3BpY0Rpc2NvbnRpbnVpdHksXG4gIFRvcGljSGVhcnRiZWF0LFxuICBTdWJzY3JpYmVDYWxsT3B0aW9ucyxcbiAgLy8gQXV0aENsaWVudCBSZXNwb25zZSBUeXBlc1xuICBHZW5lcmF0ZUFwaUtleSxcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIC0gcGxlYXNlIHVzZSBHZW5lcmF0ZUFwaUtleVxuICAgKi9cbiAgR2VuZXJhdGVBcGlLZXkgYXMgR2VuZXJhdGVBdXRoVG9rZW4sXG4gIFJlZnJlc2hBcGlLZXksXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCAtIHBsZWFzZSB1c2UgUmVmcmVzaEFwaUtleVxuICAgKi9cbiAgUmVmcmVzaEFwaUtleSBhcyBSZWZyZXNoQXV0aFRva2VuLFxuICBHZW5lcmF0ZURpc3Bvc2FibGVUb2tlbixcbiAgLy8gRXJyb3JzXG4gIE1vbWVudG9FcnJvckNvZGUsXG4gIFNka0Vycm9yLFxuICBDYWNoZUFscmVhZHlFeGlzdHNFcnJvcixcbiAgU3RvcmVBbHJlYWR5RXhpc3RzRXJyb3IsXG4gIEF1dGhlbnRpY2F0aW9uRXJyb3IsXG4gIENhbmNlbGxlZEVycm9yLFxuICBDb25uZWN0aW9uRXJyb3IsXG4gIEZhaWxlZFByZWNvbmRpdGlvbkVycm9yLFxuICBMaW1pdEV4Y2VlZGVkRXJyb3IsXG4gIEludGVybmFsU2VydmVyRXJyb3IsXG4gIEludmFsaWRBcmd1bWVudEVycm9yLFxuICBVbmtub3duU2VydmljZUVycm9yLFxuICBTZXJ2ZXJVbmF2YWlsYWJsZUVycm9yLFxuICBUaW1lb3V0RXJyb3IsXG4gIEJhZFJlcXVlc3RFcnJvcixcbiAgUGVybWlzc2lvbkVycm9yLFxuICBDYWNoZU5vdEZvdW5kRXJyb3IsXG4gIFN0b3JlSXRlbU5vdEZvdW5kRXJyb3IsXG4gIFN0b3JlTm90Rm91bmRFcnJvcixcbiAgVW5rbm93bkVycm9yLFxufTtcbiJdfQ==
@@ -2,4 +2,3 @@ export * from './cache';
2
2
  export * from './auth';
3
3
  export * from './pubsub';
4
4
  export * from './leaderboard';
5
- export * from './storage';
@@ -18,5 +18,4 @@ __exportStar(require("./cache"), exports);
18
18
  __exportStar(require("./auth"), exports);
19
19
  __exportStar(require("./pubsub"), exports);
20
20
  __exportStar(require("./leaderboard"), exports);
21
- __exportStar(require("./storage"), exports);
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW50ZXJuYWwvY2xpZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXdCO0FBQ3hCLHlDQUF1QjtBQUN2QiwyQ0FBeUI7QUFDekIsZ0RBQThCO0FBQzlCLDRDQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2FjaGUnO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoJztcbmV4cG9ydCAqIGZyb20gJy4vcHVic3ViJztcbmV4cG9ydCAqIGZyb20gJy4vbGVhZGVyYm9hcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yYWdlJztcbiJdfQ==
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW50ZXJuYWwvY2xpZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXdCO0FBQ3hCLHlDQUF1QjtBQUN2QiwyQ0FBeUI7QUFDekIsZ0RBQThCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jYWNoZSc7XG5leHBvcnQgKiBmcm9tICcuL2F1dGgnO1xuZXhwb3J0ICogZnJvbSAnLi9wdWJzdWInO1xuZXhwb3J0ICogZnJvbSAnLi9sZWFkZXJib2FyZCc7XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { TopicPublish, TopicItem, MomentoLogger, TopicSubscribe, SubscribeCallOptions, MomentoLoggerFactory, TopicDiscontinuity, TopicHeartbeat } from '../../../index';
1
+ import { TopicPublish, TopicItem, MomentoLogger, TopicSubscribe, SubscribeCallOptions, MomentoLoggerFactory, TopicDiscontinuity, TopicHeartbeat, SubscriptionRetryStrategy } from '../../../index';
2
2
  import { SubscriptionState } from '../../subscription-state';
3
3
  import { IPubsubClient } from './IPubsubClient';
4
4
  import { ICacheServiceErrorMapper } from '../../../errors/ICacheServiceErrorMapper';
@@ -13,6 +13,7 @@ export interface SendSubscribeOptions {
13
13
  onDiscontinuity: (discontinuity: TopicDiscontinuity) => void;
14
14
  onHeartbeat: (heartbeat: TopicHeartbeat) => void;
15
15
  onConnectionLost: () => void;
16
+ onSubscriptionEnd: () => void;
16
17
  subscriptionState: SubscriptionState;
17
18
  subscription: TopicSubscribe.Subscription;
18
19
  /**
@@ -38,7 +39,9 @@ export declare abstract class AbstractPubsubClient<TGrpcError> implements IPubsu
38
39
  private readonly loggerFactory;
39
40
  private readonly logger;
40
41
  private readonly cacheServiceErrorMapper;
41
- protected constructor(loggerFactory: MomentoLoggerFactory, logger: MomentoLogger, cacheServiceErrorMapper: ICacheServiceErrorMapper<TGrpcError>);
42
+ protected readonly retryStrategy?: SubscriptionRetryStrategy;
43
+ protected constructor(loggerFactory: MomentoLoggerFactory, logger: MomentoLogger, cacheServiceErrorMapper: ICacheServiceErrorMapper<TGrpcError>, retryStrategy?: SubscriptionRetryStrategy);
44
+ protected getRetryStrategy(): SubscriptionRetryStrategy | undefined;
42
45
  protected getLogger(): MomentoLogger;
43
46
  protected getCacheServiceErrorMapper(): ICacheServiceErrorMapper<TGrpcError>;
44
47
  publish(cacheName: string, topicName: string, value: string | Uint8Array): Promise<TopicPublish.Response>;
@@ -46,5 +49,5 @@ export declare abstract class AbstractPubsubClient<TGrpcError> implements IPubsu
46
49
  subscribe(cacheName: string, topicName: string, options: SubscribeCallOptions): Promise<TopicSubscribe.Response>;
47
50
  protected abstract sendSubscribe(options: SendSubscribeOptions): Promise<TopicSubscribe.Response>;
48
51
  protected prepareEndCallback(options: PrepareSubscribeCallbackOptions): () => void;
49
- protected handleSubscribeError(options: PrepareSubscribeCallbackOptions, momentoError: TopicSubscribe.Error, shouldReconnectSubscription: boolean): void;
52
+ protected handleSubscribeError(options: PrepareSubscribeCallbackOptions, momentoError: TopicSubscribe.Error, retryDelayMillis: number | null): void;
50
53
  }
@@ -2,14 +2,17 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AbstractPubsubClient = void 0;
4
4
  const utils_1 = require("../../utils");
5
- const errors_1 = require("../../../errors");
6
5
  const index_1 = require("../../../index");
7
6
  const subscription_state_1 = require("../../subscription-state");
8
7
  class AbstractPubsubClient {
9
- constructor(loggerFactory, logger, cacheServiceErrorMapper) {
8
+ constructor(loggerFactory, logger, cacheServiceErrorMapper, retryStrategy) {
10
9
  this.loggerFactory = loggerFactory;
11
10
  this.logger = logger;
12
11
  this.cacheServiceErrorMapper = cacheServiceErrorMapper;
12
+ this.retryStrategy = retryStrategy;
13
+ }
14
+ getRetryStrategy() {
15
+ return this.retryStrategy;
13
16
  }
14
17
  getLogger() {
15
18
  return this.logger;
@@ -30,7 +33,7 @@ class AbstractPubsubClient {
30
33
  return await this.sendPublish(cacheName, topicName, value);
31
34
  }
32
35
  async subscribe(cacheName, topicName, options) {
33
- var _a, _b, _c, _d, _e;
36
+ var _a, _b, _c, _d, _e, _f;
34
37
  try {
35
38
  (0, utils_1.validateCacheName)(cacheName);
36
39
  (0, utils_1.validateTopicName)(topicName);
@@ -54,6 +57,9 @@ class AbstractPubsubClient {
54
57
  const onConnectionLost = (_e = options.onConnectionLost) !== null && _e !== void 0 ? _e : (() => {
55
58
  return;
56
59
  });
60
+ const onSubscriptionEnd = (_f = options.onSubscriptionEnd) !== null && _f !== void 0 ? _f : (() => {
61
+ return;
62
+ });
57
63
  const subscriptionState = new subscription_state_1.SubscriptionState();
58
64
  const subscription = new index_1.TopicSubscribe.Subscription(this.loggerFactory, subscriptionState);
59
65
  return await this.sendSubscribe({
@@ -64,6 +70,7 @@ class AbstractPubsubClient {
64
70
  onDiscontinuity: onDiscontinuity,
65
71
  onHeartbeat: onHeartbeat,
66
72
  onConnectionLost: onConnectionLost,
73
+ onSubscriptionEnd: onSubscriptionEnd,
67
74
  subscriptionState: subscriptionState,
68
75
  subscription: subscription,
69
76
  restartedDueToError: false,
@@ -72,6 +79,7 @@ class AbstractPubsubClient {
72
79
  }
73
80
  prepareEndCallback(options) {
74
81
  return () => {
82
+ var _a, _b;
75
83
  // We want to restart on stream end, except if:
76
84
  // 1. The stream was cancelled by the caller.
77
85
  // 2. The stream was restarted following an error.
@@ -79,10 +87,12 @@ class AbstractPubsubClient {
79
87
  options.subscriptionState.isSubscribed) {
80
88
  this.logger.trace('Stream ended after error but was restarted on topic: %s', options.topicName);
81
89
  options.restartedDueToError = false;
90
+ (_a = options.onSubscriptionEnd) === null || _a === void 0 ? void 0 : _a.call(options);
82
91
  return;
83
92
  }
84
93
  else if (!options.subscriptionState.isSubscribed) {
85
94
  this.logger.trace('Stream ended after unsubscribe on topic: %s', options.topicName);
95
+ (_b = options.onSubscriptionEnd) === null || _b === void 0 ? void 0 : _b.call(options);
86
96
  return;
87
97
  }
88
98
  this.logger.trace('Stream ended on topic: %s; restarting.', options.topicName);
@@ -97,7 +107,7 @@ class AbstractPubsubClient {
97
107
  });
98
108
  };
99
109
  }
100
- handleSubscribeError(options, momentoError, shouldReconnectSubscription) {
110
+ handleSubscribeError(options, momentoError, retryDelayMillis) {
101
111
  this.logger.trace('Handling subscribe error');
102
112
  // When the first message is an error, an irrecoverable error has happened,
103
113
  // eg the cache does not exist. The user should not receive a subscription
@@ -109,23 +119,18 @@ class AbstractPubsubClient {
109
119
  return;
110
120
  }
111
121
  this.logger.trace('Subscribe error was not the first message on the stream.');
112
- // Another special case is when the cache is not found.
113
- // This happens here if the user deletes the cache in the middle of
114
- // a subscription.
115
- if (momentoError.errorCode() === errors_1.MomentoErrorCode.CACHE_NOT_FOUND_ERROR) {
116
- this.logger.trace('Stream ended due to cache not found error on topic: %s', options.topicName);
117
- options.subscription.unsubscribe();
118
- options.onError(momentoError, options.subscription);
119
- return;
120
- }
121
122
  this.logger.trace('Checking to see if we should attempt to reconnect subscription.');
122
123
  // For several types of errors having to with network interruptions, we wish to
123
124
  // transparently restart the stream instead of propagating an error.
124
- if (shouldReconnectSubscription) {
125
+ if (retryDelayMillis === null) {
126
+ this.logger.trace('Error occurred on subscription, not attempting to reconnect: %s', momentoError.toString());
127
+ options.subscription.unsubscribe();
128
+ options.onError(momentoError, options.subscription);
129
+ }
130
+ else {
125
131
  options.restartedDueToError = true;
126
- const reconnectDelayMillis = 500;
127
- this.logger.trace('Error occurred on subscription, possibly a network interruption. Will attempt to restart stream in %s ms.', reconnectDelayMillis);
128
- (0, utils_1.sleep)(reconnectDelayMillis)
132
+ this.logger.trace('Error occurred on subscription, possibly a network interruption. Will attempt to restart stream in %s ms.', retryDelayMillis);
133
+ (0, utils_1.sleep)(retryDelayMillis)
129
134
  .then(() => {
130
135
  if (!options.subscriptionState.isSubscribed) {
131
136
  this.logger.trace('Subscription was unsubscribed before retrying; aborting reconnect.');
@@ -147,12 +152,8 @@ class AbstractPubsubClient {
147
152
  this.logger.trace('Error when sleeping prior to sendSubscribe to reconnect: %s', e);
148
153
  return;
149
154
  });
150
- return;
151
155
  }
152
- this.logger.trace('Subscribe error was not a re-connectable error.');
153
- this.logger.trace('Subscribe error was not one of the known error types; calling error handler.');
154
- options.onError(momentoError, options.subscription);
155
156
  }
156
157
  }
157
158
  exports.AbstractPubsubClient = AbstractPubsubClient;
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RQdWJzdWJDbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvaW50ZXJuYWwvY2xpZW50cy9wdWJzdWIvQWJzdHJhY3RQdWJzdWJDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdUNBS3FCO0FBQ3JCLDRDQUFpRDtBQUNqRCwwQ0FTd0I7QUFDeEIsaUVBQTJEO0FBNEMzRCxNQUFzQixvQkFBb0I7SUFPeEMsWUFDRSxhQUFtQyxFQUNuQyxNQUFxQixFQUNyQix1QkFBNkQ7UUFFN0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLHVCQUF1QixDQUFDO0lBQ3pELENBQUM7SUFFUyxTQUFTO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRVMsMEJBQTBCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ3RDLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBTyxDQUNsQixTQUFpQixFQUNqQixTQUFpQixFQUNqQixLQUEwQjtRQUUxQixJQUFJO1lBQ0YsSUFBQSx5QkFBaUIsRUFBQyxTQUFTLENBQUMsQ0FBQztZQUM3QixJQUFBLHlCQUFpQixFQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzlCO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FDcEQsR0FBWSxFQUNaLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxvQkFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FDbkMsQ0FBQztZQUNGLDhEQUE4RDtTQUMvRDtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLHdEQUF3RCxFQUN4RCxJQUFBLHNCQUFjLEVBQUMsU0FBUyxDQUFDLEVBQ3pC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QUFPO1lBQ1QsQ0FBQyxDQUFDLENBQUM7WUFDTCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1FBRXJFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLDhFQUE4RSxDQUMvRSxDQUFDO1FBQ0YsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRjtBQWxRRCxvREFrUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBzbGVlcCxcbiAgdHJ1bmNhdGVTdHJpbmcsXG4gIHZhbGlkYXRlQ2FjaGVOYW1lLFxuICB2YWxpZGF0ZVRvcGljTmFtZSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtNb21lbnRvRXJyb3JDb2RlfSBmcm9tICcuLi8uLi8uLi9lcnJvcnMnO1xuaW1wb3J0IHtcbiAgVG9waWNQdWJsaXNoLFxuICBUb3BpY0l0ZW0sXG4gIE1vbWVudG9Mb2dnZXIsXG4gIFRvcGljU3Vic2NyaWJlLFxuICBTdWJzY3JpYmVDYWxsT3B0aW9ucyxcbiAgTW9tZW50b0xvZ2dlckZhY3RvcnksXG4gIFRvcGljRGlzY29udGludWl0eSxcbiAgVG9waWNIZWFydGJlYXQsXG59IGZyb20gJy4uLy4uLy4uL2luZGV4JztcbmltcG9ydCB7U3Vic2NyaXB0aW9uU3RhdGV9IGZyb20gJy4uLy4uL3N1YnNjcmlwdGlvbi1zdGF0ZSc7XG5pbXBvcnQge0lQdWJzdWJDbGllbnR9IGZyb20gJy4vSVB1YnN1YkNsaWVudCc7XG5pbXBvcnQge0lDYWNoZVNlcnZpY2VFcnJvck1hcHBlcn0gZnJvbSAnLi4vLi4vLi4vZXJyb3JzL0lDYWNoZVNlcnZpY2VFcnJvck1hcHBlcic7XG5cbi8qKlxuICogRW5jYXBzdWxhdGVzIHBhcmFtZXRlcnMgZm9yIHRoZSBgc2VuZFN1YnNjcmliZWAgbWV0aG9kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbmRTdWJzY3JpYmVPcHRpb25zIHtcbiAgY2FjaGVOYW1lOiBzdHJpbmc7XG4gIHRvcGljTmFtZTogc3RyaW5nO1xuICBvbkl0ZW06IChpdGVtOiBUb3BpY0l0ZW0pID0+IHZvaWQ7XG4gIG9uRXJyb3I6IChcbiAgICBlcnJvcjogVG9waWNTdWJzY3JpYmUuRXJyb3IsXG4gICAgc3Vic2NyaXB0aW9uOiBUb3BpY1N1YnNjcmliZS5TdWJzY3JpcHRpb25cbiAgKSA9PiB2b2lkO1xuICBvbkRpc2NvbnRpbnVpdHk6IChkaXNjb250aW51aXR5OiBUb3BpY0Rpc2NvbnRpbnVpdHkpID0+IHZvaWQ7XG4gIG9uSGVhcnRiZWF0OiAoaGVhcnRiZWF0OiBUb3BpY0hlYXJ0YmVhdCkgPT4gdm9pZDtcbiAgb25Db25uZWN0aW9uTG9zdDogKCkgPT4gdm9pZDtcbiAgc3Vic2NyaXB0aW9uU3RhdGU6IFN1YnNjcmlwdGlvblN0YXRlO1xuICBzdWJzY3JpcHRpb246IFRvcGljU3Vic2NyaWJlLlN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgc3RyZWFtIHdhcyByZXN0YXJ0ZWQgZHVlIHRvIGFuIGVycm9yLiBJZiBzbywgd2Ugc2tpcCB0aGUgZW5kIHN0cmVhbSBoYW5kbGVyXG4gICAqIGxvZ2ljIGFzIHRoZSBlcnJvciBoYW5kbGVyIHdpbGwgaGF2ZSByZXN0YXJ0ZWQgdGhlIHN0cmVhbS5cbiAgICovXG4gIHJlc3RhcnRlZER1ZVRvRXJyb3I6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJZiB0aGUgZmlyc3QgbWVzc2FnZSBpcyBhbiBlcnJvciwgd2UgcmV0dXJuIGFuIGVycm9yIGltbWVkaWF0ZWx5IGFuZCBkbyBub3Qgc3Vic2NyaWJlLlxuICAgKi9cbiAgZmlyc3RNZXNzYWdlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEVuY2Fwc3VsYXRlcyBwYXJhbWV0ZXJzIGZvciB0aGUgc3Vic2NyaWJlIGNhbGxiYWNrIHByZXBhcmUgbWV0aG9kcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmVwYXJlU3Vic2NyaWJlQ2FsbGJhY2tPcHRpb25zIGV4dGVuZHMgU2VuZFN1YnNjcmliZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHByb21pc2UgcmVzb2x2ZSBmdW5jdGlvbi5cbiAgICovXG4gIHJlc29sdmU6IChcbiAgICB2YWx1ZTogVG9waWNTdWJzY3JpYmUuUmVzcG9uc2UgfCBQcm9taXNlTGlrZTxUb3BpY1N1YnNjcmliZS5TdWJzY3JpcHRpb24+XG4gICkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0UHVic3ViQ2xpZW50PFRHcnBjRXJyb3I+XG4gIGltcGxlbWVudHMgSVB1YnN1YkNsaWVudFxue1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlckZhY3Rvcnk6IE1vbWVudG9Mb2dnZXJGYWN0b3J5O1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTW9tZW50b0xvZ2dlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBjYWNoZVNlcnZpY2VFcnJvck1hcHBlcjogSUNhY2hlU2VydmljZUVycm9yTWFwcGVyPFRHcnBjRXJyb3I+O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBsb2dnZXJGYWN0b3J5OiBNb21lbnRvTG9nZ2VyRmFjdG9yeSxcbiAgICBsb2dnZXI6IE1vbWVudG9Mb2dnZXIsXG4gICAgY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXI6IElDYWNoZVNlcnZpY2VFcnJvck1hcHBlcjxUR3JwY0Vycm9yPlxuICApIHtcbiAgICB0aGlzLmxvZ2dlckZhY3RvcnkgPSBsb2dnZXJGYWN0b3J5O1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIgPSBjYWNoZVNlcnZpY2VFcnJvck1hcHBlcjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRMb2dnZXIoKTogTW9tZW50b0xvZ2dlciB7XG4gICAgcmV0dXJuIHRoaXMubG9nZ2VyO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldENhY2hlU2VydmljZUVycm9yTWFwcGVyKCk6IElDYWNoZVNlcnZpY2VFcnJvck1hcHBlcjxUR3JwY0Vycm9yPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXI7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHVibGlzaChcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICB0b3BpY05hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nIHwgVWludDhBcnJheVxuICApOiBQcm9taXNlPFRvcGljUHVibGlzaC5SZXNwb25zZT4ge1xuICAgIHRyeSB7XG4gICAgICB2YWxpZGF0ZUNhY2hlTmFtZShjYWNoZU5hbWUpO1xuICAgICAgdmFsaWRhdGVUb3BpY05hbWUodG9waWNOYW1lKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJldHVybk9yVGhyb3dFcnJvcihcbiAgICAgICAgZXJyIGFzIEVycm9yLFxuICAgICAgICBlcnIgPT4gbmV3IFRvcGljUHVibGlzaC5FcnJvcihlcnIpXG4gICAgICApO1xuICAgICAgLy8gKSAgbmV3IFRvcGljUHVibGlzaC5FcnJvcihub3JtYWxpemVTZGtFcnJvcihlcnIgYXMgRXJyb3IpKTtcbiAgICB9XG4gICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAnSXNzdWluZyBwdWJsaXNoIHJlcXVlc3Q7IHRvcGljOiAlcywgbWVzc2FnZSBsZW5ndGg6ICVzJyxcbiAgICAgIHRydW5jYXRlU3RyaW5nKHRvcGljTmFtZSksXG4gICAgICB2YWx1ZS5sZW5ndGhcbiAgICApO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc2VuZFB1Ymxpc2goY2FjaGVOYW1lLCB0b3BpY05hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZW5kUHVibGlzaChcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICB0b3BpY05hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nIHwgVWludDhBcnJheVxuICApOiBQcm9taXNlPFRvcGljUHVibGlzaC5SZXNwb25zZT47XG5cbiAgcHVibGljIGFzeW5jIHN1YnNjcmliZShcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICB0b3BpY05hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zOiBTdWJzY3JpYmVDYWxsT3B0aW9uc1xuICApOiBQcm9taXNlPFRvcGljU3Vic2NyaWJlLlJlc3BvbnNlPiB7XG4gICAgdHJ5IHtcbiAgICAgIHZhbGlkYXRlQ2FjaGVOYW1lKGNhY2hlTmFtZSk7XG4gICAgICB2YWxpZGF0ZVRvcGljTmFtZSh0b3BpY05hbWUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmV0dXJuT3JUaHJvd0Vycm9yKFxuICAgICAgICBlcnIgYXMgRXJyb3IsXG4gICAgICAgIGVyciA9PiBuZXcgVG9waWNTdWJzY3JpYmUuRXJyb3IoZXJyKVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAnSXNzdWluZyBzdWJzY3JpYmUgcmVxdWVzdDsgdG9waWM6ICVzJyxcbiAgICAgIHRydW5jYXRlU3RyaW5nKHRvcGljTmFtZSlcbiAgICApO1xuXG4gICAgY29uc3Qgb25JdGVtID1cbiAgICAgIG9wdGlvbnMub25JdGVtID8/XG4gICAgICAoKCkgPT4ge1xuICAgICAgICByZXR1cm47XG4gICAgICB9KTtcbiAgICBjb25zdCBvbkVycm9yID1cbiAgICAgIG9wdGlvbnMub25FcnJvciA/P1xuICAgICAgKCgpID0+IHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSk7XG4gICAgY29uc3Qgb25EaXNjb250aW51aXR5ID1cbiAgICAgIG9wdGlvbnMub25EaXNjb250aW51aXR5ID8/XG4gICAgICAoKCkgPT4ge1xuICAgICAgICByZXR1cm47XG4gICAgICB9KTtcbiAgICBjb25zdCBvbkhlYXJ0YmVhdCA9XG4gICAgICBvcHRpb25zLm9uSGVhcnRiZWF0ID8/XG4gICAgICAoKCkgPT4ge1xuICAgICAgICByZXR1cm47XG4gICAgICB9KTtcbiAgICBjb25zdCBvbkNvbm5lY3Rpb25Mb3N0ID1cbiAgICAgIG9wdGlvbnMub25Db25uZWN0aW9uTG9zdCA/P1xuICAgICAgKCgpID0+IHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSk7XG5cbiAgICBjb25zdCBzdWJzY3JpcHRpb25TdGF0ZSA9IG5ldyBTdWJzY3JpcHRpb25TdGF0ZSgpO1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IG5ldyBUb3BpY1N1YnNjcmliZS5TdWJzY3JpcHRpb24oXG4gICAgICB0aGlzLmxvZ2dlckZhY3RvcnksXG4gICAgICBzdWJzY3JpcHRpb25TdGF0ZVxuICAgICk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc2VuZFN1YnNjcmliZSh7XG4gICAgICBjYWNoZU5hbWU6IGNhY2hlTmFtZSxcbiAgICAgIHRvcGljTmFtZTogdG9waWNOYW1lLFxuICAgICAgb25JdGVtOiBvbkl0ZW0sXG4gICAgICBvbkVycm9yOiBvbkVycm9yLFxuICAgICAgb25EaXNjb250aW51aXR5OiBvbkRpc2NvbnRpbnVpdHksXG4gICAgICBvbkhlYXJ0YmVhdDogb25IZWFydGJlYXQsXG4gICAgICBvbkNvbm5lY3Rpb25Mb3N0OiBvbkNvbm5lY3Rpb25Mb3N0LFxuICAgICAgc3Vic2NyaXB0aW9uU3RhdGU6IHN1YnNjcmlwdGlvblN0YXRlLFxuICAgICAgc3Vic2NyaXB0aW9uOiBzdWJzY3JpcHRpb24sXG4gICAgICByZXN0YXJ0ZWREdWVUb0Vycm9yOiBmYWxzZSxcbiAgICAgIGZpcnN0TWVzc2FnZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZW5kU3Vic2NyaWJlKFxuICAgIG9wdGlvbnM6IFNlbmRTdWJzY3JpYmVPcHRpb25zXG4gICk6IFByb21pc2U8VG9waWNTdWJzY3JpYmUuUmVzcG9uc2U+O1xuXG4gIHByb3RlY3RlZCBwcmVwYXJlRW5kQ2FsbGJhY2soXG4gICAgb3B0aW9uczogUHJlcGFyZVN1YnNjcmliZUNhbGxiYWNrT3B0aW9uc1xuICApOiAoKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgLy8gV2Ugd2FudCB0byByZXN0YXJ0IG9uIHN0cmVhbSBlbmQsIGV4Y2VwdCBpZjpcbiAgICAgIC8vIDEuIFRoZSBzdHJlYW0gd2FzIGNhbmNlbGxlZCBieSB0aGUgY2FsbGVyLlxuICAgICAgLy8gMi4gVGhlIHN0cmVhbSB3YXMgcmVzdGFydGVkIGZvbGxvd2luZyBhbiBlcnJvci5cbiAgICAgIGlmIChcbiAgICAgICAgb3B0aW9ucy5yZXN0YXJ0ZWREdWVUb0Vycm9yICYmXG4gICAgICAgIG9wdGlvbnMuc3Vic2NyaXB0aW9uU3RhdGUuaXNTdWJzY3JpYmVkXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAgICAgJ1N0cmVhbSBlbmRlZCBhZnRlciBlcnJvciBidXQgd2FzIHJlc3RhcnRlZCBvbiB0b3BpYzogJXMnLFxuICAgICAgICAgIG9wdGlvbnMudG9waWNOYW1lXG4gICAgICAgICk7XG4gICAgICAgIG9wdGlvbnMucmVzdGFydGVkRHVlVG9FcnJvciA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKCFvcHRpb25zLnN1YnNjcmlwdGlvblN0YXRlLmlzU3Vic2NyaWJlZCkge1xuICAgICAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgICAgICAnU3RyZWFtIGVuZGVkIGFmdGVyIHVuc3Vic2NyaWJlIG9uIHRvcGljOiAlcycsXG4gICAgICAgICAgb3B0aW9ucy50b3BpY05hbWVcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgICAgJ1N0cmVhbSBlbmRlZCBvbiB0b3BpYzogJXM7IHJlc3RhcnRpbmcuJyxcbiAgICAgICAgb3B0aW9ucy50b3BpY05hbWVcbiAgICAgICk7XG5cbiAgICAgIC8vIFdoZW4gcmVzdGFydGluZyB0aGUgc3RyZWFtIHdlIGRvIG5vdCBkbyBhbnl0aGluZyB3aXRoIHRoZSBwcm9taXNlcyxcbiAgICAgIC8vIGJlY2F1c2Ugd2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSByZXR1cm5lZCB0aGUgc3Vic2NyaXB0aW9uIG9iamVjdCB0byB0aGUgdXNlci5cbiAgICAgIHRoaXMuc2VuZFN1YnNjcmliZShvcHRpb25zKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVTdWJzY3JpYmVFcnJvcihcbiAgICBvcHRpb25zOiBQcmVwYXJlU3Vic2NyaWJlQ2FsbGJhY2tPcHRpb25zLFxuICAgIG1vbWVudG9FcnJvcjogVG9waWNTdWJzY3JpYmUuRXJyb3IsXG4gICAgc2hvdWxkUmVjb25uZWN0U3Vic2NyaXB0aW9uOiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIHRoaXMubG9nZ2VyLnRyYWNlKCdIYW5kbGluZyBzdWJzY3JpYmUgZXJyb3InKTtcbiAgICAvLyBXaGVuIHRoZSBmaXJzdCBtZXNzYWdlIGlzIGFuIGVycm9yLCBhbiBpcnJlY292ZXJhYmxlIGVycm9yIGhhcyBoYXBwZW5lZCxcbiAgICAvLyBlZyB0aGUgY2FjaGUgZG9lcyBub3QgZXhpc3QuIFRoZSB1c2VyIHNob3VsZCBub3QgcmVjZWl2ZSBhIHN1YnNjcmlwdGlvblxuICAgIC8vIG9iamVjdCBidXQgYW4gZXJyb3IuXG4gICAgaWYgKG9wdGlvbnMuZmlyc3RNZXNzYWdlKSB7XG4gICAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgICAgJ0ZpcnN0IG1lc3NhZ2Ugb24gc3Vic2NyaXB0aW9uIHdhcyBhbiBlcnJvcjsgdG9waWM6ICVzLCBlcnJvcjogJXMnLFxuICAgICAgICB0cnVuY2F0ZVN0cmluZyhvcHRpb25zLnRvcGljTmFtZSksXG4gICAgICAgIG1vbWVudG9FcnJvci50b1N0cmluZygpXG4gICAgICApO1xuXG4gICAgICBvcHRpb25zLnJlc29sdmUobW9tZW50b0Vycm9yKTtcbiAgICAgIG9wdGlvbnMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAnU3Vic2NyaWJlIGVycm9yIHdhcyBub3QgdGhlIGZpcnN0IG1lc3NhZ2Ugb24gdGhlIHN0cmVhbS4nXG4gICAgKTtcblxuICAgIC8vIEFub3RoZXIgc3BlY2lhbCBjYXNlIGlzIHdoZW4gdGhlIGNhY2hlIGlzIG5vdCBmb3VuZC5cbiAgICAvLyBUaGlzIGhhcHBlbnMgaGVyZSBpZiB0aGUgdXNlciBkZWxldGVzIHRoZSBjYWNoZSBpbiB0aGUgbWlkZGxlIG9mXG4gICAgLy8gYSBzdWJzY3JpcHRpb24uXG4gICAgaWYgKG1vbWVudG9FcnJvci5lcnJvckNvZGUoKSA9PT0gTW9tZW50b0Vycm9yQ29kZS5DQUNIRV9OT1RfRk9VTkRfRVJST1IpIHtcbiAgICAgIHRoaXMubG9nZ2VyLnRyYWNlKFxuICAgICAgICAnU3RyZWFtIGVuZGVkIGR1ZSB0byBjYWNoZSBub3QgZm91bmQgZXJyb3Igb24gdG9waWM6ICVzJyxcbiAgICAgICAgb3B0aW9ucy50b3BpY05hbWVcbiAgICAgICk7XG4gICAgICBvcHRpb25zLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgb3B0aW9ucy5vbkVycm9yKG1vbWVudG9FcnJvciwgb3B0aW9ucy5zdWJzY3JpcHRpb24pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nZ2VyLnRyYWNlKFxuICAgICAgJ0NoZWNraW5nIHRvIHNlZSBpZiB3ZSBzaG91bGQgYXR0ZW1wdCB0byByZWNvbm5lY3Qgc3Vic2NyaXB0aW9uLidcbiAgICApO1xuXG4gICAgLy8gRm9yIHNldmVyYWwgdHlwZXMgb2YgZXJyb3JzIGhhdmluZyB0byB3aXRoIG5ldHdvcmsgaW50ZXJydXB0aW9ucywgd2Ugd2lzaCB0b1xuICAgIC8vIHRyYW5zcGFyZW50bHkgcmVzdGFydCB0aGUgc3RyZWFtIGluc3RlYWQgb2YgcHJvcGFnYXRpbmcgYW4gZXJyb3IuXG4gICAgaWYgKHNob3VsZFJlY29ubmVjdFN1YnNjcmlwdGlvbikge1xuICAgICAgb3B0aW9ucy5yZXN0YXJ0ZWREdWVUb0Vycm9yID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHJlY29ubmVjdERlbGF5TWlsbGlzID0gNTAwO1xuICAgICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAgICdFcnJvciBvY2N1cnJlZCBvbiBzdWJzY3JpcHRpb24sIHBvc3NpYmx5IGEgbmV0d29yayBpbnRlcnJ1cHRpb24uIFdpbGwgYXR0ZW1wdCB0byByZXN0YXJ0IHN0cmVhbSBpbiAlcyBtcy4nLFxuICAgICAgICByZWNvbm5lY3REZWxheU1pbGxpc1xuICAgICAgKTtcbiAgICAgIHNsZWVwKHJlY29ubmVjdERlbGF5TWlsbGlzKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgaWYgKCFvcHRpb25zLnN1YnNjcmlwdGlvblN0YXRlLmlzU3Vic2NyaWJlZCkge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAgICAgICAgICdTdWJzY3JpcHRpb24gd2FzIHVuc3Vic2NyaWJlZCBiZWZvcmUgcmV0cnlpbmc7IGFib3J0aW5nIHJlY29ubmVjdC4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFdoZW4gcmVzdGFydGluZyB0aGUgc3RyZWFtIHdlIGRvIG5vdCBkbyBhbnl0aGluZyB3aXRoIHRoZSBwcm9taXNlcyxcbiAgICAgICAgICAvLyBiZWNhdXNlIHdlIHNob3VsZCBoYXZlIGFscmVhZHkgcmV0dXJuZWQgdGhlIHN1YnNjcmlwdGlvbiBvYmplY3QgdG8gdGhlIHVzZXIuXG4gICAgICAgICAgdGhpcy5zZW5kU3Vic2NyaWJlKG9wdGlvbnMpXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubG9nZ2VyLnRyYWNlKFxuICAgICAgICAgICAgICAgICdFcnJvciB3aGVuIGNhbGxpbmcgc2VuZFN1YnNjcmliZSB0byByZWNvbm5lY3Q6ICVzJyxcbiAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLnRyYWNlKFxuICAgICAgICAgICAgJ0Vycm9yIHdoZW4gc2xlZXBpbmcgcHJpb3IgdG8gc2VuZFN1YnNjcmliZSB0byByZWNvbm5lY3Q6ICVzJyxcbiAgICAgICAgICAgIGVcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2dnZXIudHJhY2UoJ1N1YnNjcmliZSBlcnJvciB3YXMgbm90IGEgcmUtY29ubmVjdGFibGUgZXJyb3IuJyk7XG5cbiAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgICdTdWJzY3JpYmUgZXJyb3Igd2FzIG5vdCBvbmUgb2YgdGhlIGtub3duIGVycm9yIHR5cGVzOyBjYWxsaW5nIGVycm9yIGhhbmRsZXIuJ1xuICAgICk7XG4gICAgb3B0aW9ucy5vbkVycm9yKG1vbWVudG9FcnJvciwgb3B0aW9ucy5zdWJzY3JpcHRpb24pO1xuICB9XG59XG4iXX0=
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RQdWJzdWJDbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvaW50ZXJuYWwvY2xpZW50cy9wdWJzdWIvQWJzdHJhY3RQdWJzdWJDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdUNBS3FCO0FBQ3JCLDBDQVV3QjtBQUN4QixpRUFBMkQ7QUE2QzNELE1BQXNCLG9CQUFvQjtJQVF4QyxZQUNFLGFBQW1DLEVBQ25DLE1BQXFCLEVBQ3JCLHVCQUE2RCxFQUM3RCxhQUF5QztRQUV6QyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7UUFDdkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDckMsQ0FBQztJQUVTLGdCQUFnQjtRQUN4QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVTLFNBQVM7UUFDakIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFUywwQkFBMEI7UUFDbEMsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUM7SUFDdEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQ2xCLFNBQWlCLEVBQ2pCLFNBQWlCLEVBQ2pCLEtBQTBCO1FBRTFCLElBQUk7WUFDRixJQUFBLHlCQUFpQixFQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzdCLElBQUEseUJBQWlCLEVBQUMsU0FBUyxDQUFDLENBQUM7U0FDOUI7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLGtCQUFrQixDQUNwRCxHQUFZLEVBQ1osR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLG9CQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUNuQyxDQUFDO1lBQ0YsOERB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Q0FDRixDQUFDO29CQUNGLE9BQU87Z0JBQ1QsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsT0FBTztZQUNULENBQUMsQ0FBQztpQkFDRCxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2YsNkRBQTZELEVBQzdELENBQUMsQ0FDRixDQUFDO2dCQUNGLE9BQU87WUFDVCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQztDQUNGO0FBalFELG9EQWlRQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHNsZWVwLFxuICB0cnVuY2F0ZVN0cmluZyxcbiAgdmFsaWRhdGVDYWNoZU5hbWUsXG4gIHZhbGlkYXRlVG9waWNOYW1lLFxufSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQge1xuICBUb3BpY1B1Ymxpc2gsXG4gIFRvcGljSXRlbSxcbiAgTW9tZW50b0xvZ2dlcixcbiAgVG9waWNTdWJzY3JpYmUsXG4gIFN1YnNjcmliZUNhbGxPcHRpb25zLFxuICBNb21lbnRvTG9nZ2VyRmFjdG9yeSxcbiAgVG9waWNEaXNjb250aW51aXR5LFxuICBUb3BpY0hlYXJ0YmVhdCxcbiAgU3Vic2NyaXB0aW9uUmV0cnlTdHJhdGVneSxcbn0gZnJvbSAnLi4vLi4vLi4vaW5kZXgnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb25TdGF0ZX0gZnJvbSAnLi4vLi4vc3Vic2NyaXB0aW9uLXN0YXRlJztcbmltcG9ydCB7SVB1YnN1YkNsaWVudH0gZnJvbSAnLi9JUHVic3ViQ2xpZW50JztcbmltcG9ydCB7SUNhY2hlU2VydmljZUVycm9yTWFwcGVyfSBmcm9tICcuLi8uLi8uLi9lcnJvcnMvSUNhY2hlU2VydmljZUVycm9yTWFwcGVyJztcblxuLyoqXG4gKiBFbmNhcHN1bGF0ZXMgcGFyYW1ldGVycyBmb3IgdGhlIGBzZW5kU3Vic2NyaWJlYCBtZXRob2QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VuZFN1YnNjcmliZU9wdGlvbnMge1xuICBjYWNoZU5hbWU6IHN0cmluZztcbiAgdG9waWNOYW1lOiBzdHJpbmc7XG4gIG9uSXRlbTogKGl0ZW06IFRvcGljSXRlbSkgPT4gdm9pZDtcbiAgb25FcnJvcjogKFxuICAgIGVycm9yOiBUb3BpY1N1YnNjcmliZS5FcnJvcixcbiAgICBzdWJzY3JpcHRpb246IFRvcGljU3Vic2NyaWJlLlN1YnNjcmlwdGlvblxuICApID0+IHZvaWQ7XG4gIG9uRGlzY29udGludWl0eTogKGRpc2NvbnRpbnVpdHk6IFRvcGljRGlzY29udGludWl0eSkgPT4gdm9pZDtcbiAgb25IZWFydGJlYXQ6IChoZWFydGJlYXQ6IFRvcGljSGVhcnRiZWF0KSA9PiB2b2lkO1xuICBvbkNvbm5lY3Rpb25Mb3N0OiAoKSA9PiB2b2lkO1xuICBvblN1YnNjcmlwdGlvbkVuZDogKCkgPT4gdm9pZDtcbiAgc3Vic2NyaXB0aW9uU3RhdGU6IFN1YnNjcmlwdGlvblN0YXRlO1xuICBzdWJzY3JpcHRpb246IFRvcGljU3Vic2NyaWJlLlN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgc3RyZWFtIHdhcyByZXN0YXJ0ZWQgZHVlIHRvIGFuIGVycm9yLiBJZiBzbywgd2Ugc2tpcCB0aGUgZW5kIHN0cmVhbSBoYW5kbGVyXG4gICAqIGxvZ2ljIGFzIHRoZSBlcnJvciBoYW5kbGVyIHdpbGwgaGF2ZSByZXN0YXJ0ZWQgdGhlIHN0cmVhbS5cbiAgICovXG4gIHJlc3RhcnRlZER1ZVRvRXJyb3I6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJZiB0aGUgZmlyc3QgbWVzc2FnZSBpcyBhbiBlcnJvciwgd2UgcmV0dXJuIGFuIGVycm9yIGltbWVkaWF0ZWx5IGFuZCBkbyBub3Qgc3Vic2NyaWJlLlxuICAgKi9cbiAgZmlyc3RNZXNzYWdlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEVuY2Fwc3VsYXRlcyBwYXJhbWV0ZXJzIGZvciB0aGUgc3Vic2NyaWJlIGNhbGxiYWNrIHByZXBhcmUgbWV0aG9kcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmVwYXJlU3Vic2NyaWJlQ2FsbGJhY2tPcHRpb25zIGV4dGVuZHMgU2VuZFN1YnNjcmliZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHByb21pc2UgcmVzb2x2ZSBmdW5jdGlvbi5cbiAgICovXG4gIHJlc29sdmU6IChcbiAgICB2YWx1ZTogVG9waWNTdWJzY3JpYmUuUmVzcG9uc2UgfCBQcm9taXNlTGlrZTxUb3BpY1N1YnNjcmliZS5TdWJzY3JpcHRpb24+XG4gICkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0UHVic3ViQ2xpZW50PFRHcnBjRXJyb3I+XG4gIGltcGxlbWVudHMgSVB1YnN1YkNsaWVudFxue1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlckZhY3Rvcnk6IE1vbWVudG9Mb2dnZXJGYWN0b3J5O1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTW9tZW50b0xvZ2dlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBjYWNoZVNlcnZpY2VFcnJvck1hcHBlcjogSUNhY2hlU2VydmljZUVycm9yTWFwcGVyPFRHcnBjRXJyb3I+O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmV0cnlTdHJhdGVneT86IFN1YnNjcmlwdGlvblJldHJ5U3RyYXRlZ3k7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIGxvZ2dlckZhY3Rvcnk6IE1vbWVudG9Mb2dnZXJGYWN0b3J5LFxuICAgIGxvZ2dlcjogTW9tZW50b0xvZ2dlcixcbiAgICBjYWNoZVNlcnZpY2VFcnJvck1hcHBlcjogSUNhY2hlU2VydmljZUVycm9yTWFwcGVyPFRHcnBjRXJyb3I+LFxuICAgIHJldHJ5U3RyYXRlZ3k/OiBTdWJzY3JpcHRpb25SZXRyeVN0cmF0ZWd5XG4gICkge1xuICAgIHRoaXMubG9nZ2VyRmFjdG9yeSA9IGxvZ2dlckZhY3Rvcnk7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlciA9IGNhY2hlU2VydmljZUVycm9yTWFwcGVyO1xuICAgIHRoaXMucmV0cnlTdHJhdGVneSA9IHJldHJ5U3RyYXRlZ3k7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0UmV0cnlTdHJhdGVneSgpOiBTdWJzY3JpcHRpb25SZXRyeVN0cmF0ZWd5IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZXRyeVN0cmF0ZWd5O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldExvZ2dlcigpOiBNb21lbnRvTG9nZ2VyIHtcbiAgICByZXR1cm4gdGhpcy5sb2dnZXI7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Q2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIoKTogSUNhY2hlU2VydmljZUVycm9yTWFwcGVyPFRHcnBjRXJyb3I+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlcjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwdWJsaXNoKFxuICAgIGNhY2hlTmFtZTogc3RyaW5nLFxuICAgIHRvcGljTmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBzdHJpbmcgfCBVaW50OEFycmF5XG4gICk6IFByb21pc2U8VG9waWNQdWJsaXNoLlJlc3BvbnNlPiB7XG4gICAgdHJ5IHtcbiAgICAgIHZhbGlkYXRlQ2FjaGVOYW1lKGNhY2hlTmFtZSk7XG4gICAgICB2YWxpZGF0ZVRvcGljTmFtZSh0b3BpY05hbWUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmV0dXJuT3JUaHJvd0Vycm9yKFxuICAgICAgICBlcnIgYXMgRXJyb3IsXG4gICAgICAgIGVyciA9PiBuZXcgVG9waWNQdWJsaXNoLkVycm9yKGVycilcbiAgICAgICk7XG4gICAgICAvLyApICBuZXcgVG9waWNQdWJsaXNoLkVycm9yKG5vcm1hbGl6ZVNka0Vycm9yKGVyciBhcyBFcnJvcikpO1xuICAgIH1cbiAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgICdJc3N1aW5nIHB1Ymxpc2ggcmVxdWVzdDsgdG9waWM6ICVzLCBtZXNzYWdlIGxlbmd0aDogJXMnLFxuICAgICAgdHJ1bmNhdGVTdHJpbmcodG9waWNOYW1lKSxcbiAgICAgIHZhbHVlLmxlbmd0aFxuICAgICk7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zZW5kUHVibGlzaChjYWNoZU5hbWUsIHRvcGljTmFtZSwgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNlbmRQdWJsaXNoKFxuICAgIGNhY2hlTmFtZTogc3RyaW5nLFxuICAgIHRvcGljTmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBzdHJpbmcgfCBVaW50OEFycmF5XG4gICk6IFByb21pc2U8VG9waWNQdWJsaXNoLlJlc3BvbnNlPjtcblxuICBwdWJsaWMgYXN5bmMgc3Vic2NyaWJlKFxuICAgIGNhY2hlTmFtZTogc3RyaW5nLFxuICAgIHRvcGljTmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFN1YnNjcmliZUNhbGxPcHRpb25zXG4gICk6IFByb21pc2U8VG9waWNTdWJzY3JpYmUuUmVzcG9uc2U+IHtcbiAgICB0cnkge1xuICAgICAgdmFsaWRhdGVDYWNoZU5hbWUoY2FjaGVOYW1lKTtcbiAgICAgIHZhbGlkYXRlVG9waWNOYW1lKHRvcGljTmFtZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlci5yZXR1cm5PclRocm93RXJyb3IoXG4gICAgICAgIGVyciBhcyBFcnJvcixcbiAgICAgICAgZXJyID0+IG5ldyBUb3BpY1N1YnNjcmliZS5FcnJvcihlcnIpXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgICdJc3N1aW5nIHN1YnNjcmliZSByZXF1ZXN0OyB0b3BpYzogJXMnLFxuICAgICAgdHJ1bmNhdGVTdHJpbmcodG9waWNOYW1lKVxuICAgICk7XG5cbiAgICBjb25zdCBvbkl0ZW0gPVxuICAgICAgb3B0aW9ucy5vbkl0ZW0gPz9cbiAgICAgICgoKSA9PiB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0pO1xuICAgIGNvbnN0IG9uRXJyb3IgPVxuICAgICAgb3B0aW9ucy5vbkVycm9yID8/XG4gICAgICAoKCkgPT4ge1xuICAgICAgICByZXR1cm47XG4gICAgICB9KTtcbiAgICBjb25zdCBvbkRpc2NvbnRpbnVpdHkgPVxuICAgICAgb3B0aW9ucy5vbkRpc2NvbnRpbnVpdHkgPz9cbiAgICAgICgoKSA9PiB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0pO1xuICAgIGNvbnN0IG9uSGVhcnRiZWF0ID1cbiAgICAgIG9wdGlvbnMub25IZWFydGJlYXQgPz9cbiAgICAgICgoKSA9PiB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0pO1xuICAgIGNvbnN0IG9uQ29ubmVjdGlvbkxvc3QgPVxuICAgICAgb3B0aW9ucy5vbkNvbm5lY3Rpb25Mb3N0ID8/XG4gICAgICAoKCkgPT4ge1xuICAgICAgICByZXR1cm47XG4gICAgICB9KTtcbiAgICBjb25zdCBvblN1YnNjcmlwdGlvbkVuZCA9XG4gICAgICBvcHRpb25zLm9uU3Vic2NyaXB0aW9uRW5kID8/XG4gICAgICAoKCkgPT4ge1xuICAgICAgICByZXR1cm47XG4gICAgICB9KTtcblxuICAgIGNvbnN0IHN1YnNjcmlwdGlvblN0YXRlID0gbmV3IFN1YnNjcmlwdGlvblN0YXRlKCk7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gbmV3IFRvcGljU3Vic2NyaWJlLlN1YnNjcmlwdGlvbihcbiAgICAgIHRoaXMubG9nZ2VyRmFjdG9yeSxcbiAgICAgIHN1YnNjcmlwdGlvblN0YXRlXG4gICAgKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zZW5kU3Vic2NyaWJlKHtcbiAgICAgIGNhY2hlTmFtZTogY2FjaGVOYW1lLFxuICAgICAgdG9waWNOYW1lOiB0b3BpY05hbWUsXG4gICAgICBvbkl0ZW06IG9uSXRlbSxcbiAgICAgIG9uRXJyb3I6IG9uRXJyb3IsXG4gICAgICBvbkRpc2NvbnRpbnVpdHk6IG9uRGlzY29udGludWl0eSxcbiAgICAgIG9uSGVhcnRiZWF0OiBvbkhlYXJ0YmVhdCxcbiAgICAgIG9uQ29ubmVjdGlvbkxvc3Q6IG9uQ29ubmVjdGlvbkxvc3QsXG4gICAgICBvblN1YnNjcmlwdGlvbkVuZDogb25TdWJzY3JpcHRpb25FbmQsXG4gICAgICBzdWJzY3JpcHRpb25TdGF0ZTogc3Vic2NyaXB0aW9uU3RhdGUsXG4gICAgICBzdWJzY3JpcHRpb246IHN1YnNjcmlwdGlvbixcbiAgICAgIHJlc3RhcnRlZER1ZVRvRXJyb3I6IGZhbHNlLFxuICAgICAgZmlyc3RNZXNzYWdlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNlbmRTdWJzY3JpYmUoXG4gICAgb3B0aW9uczogU2VuZFN1YnNjcmliZU9wdGlvbnNcbiAgKTogUHJvbWlzZTxUb3BpY1N1YnNjcmliZS5SZXNwb25zZT47XG5cbiAgcHJvdGVjdGVkIHByZXBhcmVFbmRDYWxsYmFjayhcbiAgICBvcHRpb25zOiBQcmVwYXJlU3Vic2NyaWJlQ2FsbGJhY2tPcHRpb25zXG4gICk6ICgpID0+IHZvaWQge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAvLyBXZSB3YW50IHRvIHJlc3RhcnQgb24gc3RyZWFtIGVuZCwgZXhjZXB0IGlmOlxuICAgICAgLy8gMS4gVGhlIHN0cmVhbSB3YXMgY2FuY2VsbGVkIGJ5IHRoZSBjYWxsZXIuXG4gICAgICAvLyAyLiBUaGUgc3RyZWFtIHdhcyByZXN0YXJ0ZWQgZm9sbG93aW5nIGFuIGVycm9yLlxuICAgICAgaWYgKFxuICAgICAgICBvcHRpb25zLnJlc3RhcnRlZER1ZVRvRXJyb3IgJiZcbiAgICAgICAgb3B0aW9ucy5zdWJzY3JpcHRpb25TdGF0ZS5pc1N1YnNjcmliZWRcbiAgICAgICkge1xuICAgICAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgICAgICAnU3RyZWFtIGVuZGVkIGFmdGVyIGVycm9yIGJ1dCB3YXMgcmVzdGFydGVkIG9uIHRvcGljOiAlcycsXG4gICAgICAgICAgb3B0aW9ucy50b3BpY05hbWVcbiAgICAgICAgKTtcbiAgICAgICAgb3B0aW9ucy5yZXN0YXJ0ZWREdWVUb0Vycm9yID0gZmFsc2U7XG4gICAgICAgIG9wdGlvbnMub25TdWJzY3JpcHRpb25FbmQ/LigpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKCFvcHRpb25zLnN1YnNjcmlwdGlvblN0YXRlLmlzU3Vic2NyaWJlZCkge1xuICAgICAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgICAgICAnU3RyZWFtIGVuZGVkIGFmdGVyIHVuc3Vic2NyaWJlIG9uIHRvcGljOiAlcycsXG4gICAgICAgICAgb3B0aW9ucy50b3BpY05hbWVcbiAgICAgICAgKTtcbiAgICAgICAgb3B0aW9ucy5vblN1YnNjcmlwdGlvbkVuZD8uKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAgICdTdHJlYW0gZW5kZWQgb24gdG9waWM6ICVzOyByZXN0YXJ0aW5nLicsXG4gICAgICAgIG9wdGlvbnMudG9waWNOYW1lXG4gICAgICApO1xuXG4gICAgICAvLyBXaGVuIHJlc3RhcnRpbmcgdGhlIHN0cmVhbSB3ZSBkbyBub3QgZG8gYW55dGhpbmcgd2l0aCB0aGUgcHJvbWlzZXMsXG4gICAgICAvLyBiZWNhdXNlIHdlIHNob3VsZCBoYXZlIGFscmVhZHkgcmV0dXJuZWQgdGhlIHN1YnNjcmlwdGlvbiBvYmplY3QgdG8gdGhlIHVzZXIuXG4gICAgICB0aGlzLnNlbmRTdWJzY3JpYmUob3B0aW9ucylcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0pO1xuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlU3Vic2NyaWJlRXJyb3IoXG4gICAgb3B0aW9uczogUHJlcGFyZVN1YnNjcmliZUNhbGxiYWNrT3B0aW9ucyxcbiAgICBtb21lbnRvRXJyb3I6IFRvcGljU3Vic2NyaWJlLkVycm9yLFxuICAgIHJldHJ5RGVsYXlNaWxsaXM6IG51bWJlciB8IG51bGxcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5sb2dnZXIudHJhY2UoJ0hhbmRsaW5nIHN1YnNjcmliZSBlcnJvcicpO1xuICAgIC8vIFdoZW4gdGhlIGZpcnN0IG1lc3NhZ2UgaXMgYW4gZXJyb3IsIGFuIGlycmVjb3ZlcmFibGUgZXJyb3IgaGFzIGhhcHBlbmVkLFxuICAgIC8vIGVnIHRoZSBjYWNoZSBkb2VzIG5vdCBleGlzdC4gVGhlIHVzZXIgc2hvdWxkIG5vdCByZWNlaXZlIGEgc3Vic2NyaXB0aW9uXG4gICAgLy8gb2JqZWN0IGJ1dCBhbiBlcnJvci5cbiAgICBpZiAob3B0aW9ucy5maXJzdE1lc3NhZ2UpIHtcbiAgICAgIHRoaXMubG9nZ2VyLnRyYWNlKFxuICAgICAgICAnRmlyc3QgbWVzc2FnZSBvbiBzdWJzY3JpcHRpb24gd2FzIGFuIGVycm9yOyB0b3BpYzogJXMsIGVycm9yOiAlcycsXG4gICAgICAgIHRydW5jYXRlU3RyaW5nKG9wdGlvbnMudG9waWNOYW1lKSxcbiAgICAgICAgbW9tZW50b0Vycm9yLnRvU3RyaW5nKClcbiAgICAgICk7XG5cbiAgICAgIG9wdGlvbnMucmVzb2x2ZShtb21lbnRvRXJyb3IpO1xuICAgICAgb3B0aW9ucy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAnU3Vic2NyaWJlIGVycm9yIHdhcyBub3QgdGhlIGZpcnN0IG1lc3NhZ2Ugb24gdGhlIHN0cmVhbS4nXG4gICAgKTtcblxuICAgIHRoaXMubG9nZ2VyLnRyYWNlKFxuICAgICAgJ0NoZWNraW5nIHRvIHNlZSBpZiB3ZSBzaG91bGQgYXR0ZW1wdCB0byByZWNvbm5lY3Qgc3Vic2NyaXB0aW9uLidcbiAgICApO1xuXG4gICAgLy8gRm9yIHNldmVyYWwgdHlwZXMgb2YgZXJyb3JzIGhhdmluZyB0byB3aXRoIG5ldHdvcmsgaW50ZXJydXB0aW9ucywgd2Ugd2lzaCB0b1xuICAgIC8vIHRyYW5zcGFyZW50bHkgcmVzdGFydCB0aGUgc3RyZWFtIGluc3RlYWQgb2YgcHJvcGFnYXRpbmcgYW4gZXJyb3IuXG4gICAgaWYgKHJldHJ5RGVsYXlNaWxsaXMgPT09IG51bGwpIHtcbiAgICAgIHRoaXMubG9nZ2VyLnRyYWNlKFxuICAgICAgICAnRXJyb3Igb2NjdXJyZWQgb24gc3Vic2NyaXB0aW9uLCBub3QgYXR0ZW1wdGluZyB0byByZWNvbm5lY3Q6ICVzJyxcbiAgICAgICAgbW9tZW50b0Vycm9yLnRvU3RyaW5nKClcbiAgICAgICk7XG4gICAgICBvcHRpb25zLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgb3B0aW9ucy5vbkVycm9yKG1vbWVudG9FcnJvciwgb3B0aW9ucy5zdWJzY3JpcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zLnJlc3RhcnRlZER1ZVRvRXJyb3IgPSB0cnVlO1xuICAgICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAgICdFcnJvciBvY2N1cnJlZCBvbiBzdWJzY3JpcHRpb24sIHBvc3NpYmx5IGEgbmV0d29yayBpbnRlcnJ1cHRpb24uIFdpbGwgYXR0ZW1wdCB0byByZXN0YXJ0IHN0cmVhbSBpbiAlcyBtcy4nLFxuICAgICAgICByZXRyeURlbGF5TWlsbGlzXG4gICAgICApO1xuICAgICAgc2xlZXAocmV0cnlEZWxheU1pbGxpcylcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGlmICghb3B0aW9ucy5zdWJzY3JpcHRpb25TdGF0ZS5pc1N1YnNjcmliZWQpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLnRyYWNlKFxuICAgICAgICAgICAgICAnU3Vic2NyaXB0aW9uIHdhcyB1bnN1YnNjcmliZWQgYmVmb3JlIHJldHJ5aW5nOyBhYm9ydGluZyByZWNvbm5lY3QuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBXaGVuIHJlc3RhcnRpbmcgdGhlIHN0cmVhbSB3ZSBkbyBub3QgZG8gYW55dGhpbmcgd2l0aCB0aGUgcHJvbWlzZXMsXG4gICAgICAgICAgLy8gYmVjYXVzZSB3ZSBzaG91bGQgaGF2ZSBhbHJlYWR5IHJldHVybmVkIHRoZSBzdWJzY3JpcHRpb24gb2JqZWN0IHRvIHRoZSB1c2VyLlxuICAgICAgICAgIHRoaXMuc2VuZFN1YnNjcmliZShvcHRpb25zKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgICAgICAgICAgICAnRXJyb3Igd2hlbiBjYWxsaW5nIHNlbmRTdWJzY3JpYmUgdG8gcmVjb25uZWN0OiAlcycsXG4gICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgICAgICAgICdFcnJvciB3aGVuIHNsZWVwaW5nIHByaW9yIHRvIHNlbmRTdWJzY3JpYmUgdG8gcmVjb25uZWN0OiAlcycsXG4gICAgICAgICAgICBlXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -3,12 +3,20 @@ import { MomentoLogger, SubscribeCallOptions, TopicPublish, TopicSubscribe, List
3
3
  import { IPubsubClient } from './IPubsubClient';
4
4
  import { IWebhookClient } from './IWebhookClient';
5
5
  import { PutWebhookCallOptions } from '../../../utils/webhook-call-options';
6
+ interface IStreamClientWithCount {
7
+ numActiveSubscriptions: number;
8
+ client: IPubsubClient;
9
+ }
6
10
  export declare abstract class AbstractTopicClient implements ITopicClient {
7
11
  protected readonly logger: MomentoLogger;
8
12
  protected readonly pubsubClients: IPubsubClient[];
13
+ protected readonly pubsubStreamClients: IStreamClientWithCount[];
14
+ protected readonly pubsubUnaryClients: IPubsubClient[];
9
15
  protected readonly webhookClient: IWebhookClient;
10
- private nextPubsubClientIndex;
11
- protected constructor(logger: MomentoLogger, pubsubClients: IPubsubClient[], webhookClient: IWebhookClient);
16
+ private nextPubsubStreamClientIndex;
17
+ private nextPubsubUnaryClientIndex;
18
+ private readonly maxConcurrentSubscriptions;
19
+ protected constructor(logger: MomentoLogger, pubsubStreamClients: IPubsubClient[], pubsubUnaryClients: IPubsubClient[], webhookClient: IWebhookClient);
12
20
  /**
13
21
  * Publishes a value to a topic.
14
22
  *
@@ -85,5 +93,10 @@ export declare abstract class AbstractTopicClient implements ITopicClient {
85
93
  * {@link RotateWebhookSecret.Error} on failure.
86
94
  */
87
95
  rotateWebhookSecret(cacheName: string, webhookName: string): Promise<RotateWebhookSecret.Response>;
88
- protected getNextPubsubClient(): IPubsubClient;
96
+ protected getNextPublishClient(): IPubsubClient;
97
+ protected getNextSubscribeClient(): {
98
+ client: IPubsubClient;
99
+ decrementSubscriptionCount: () => void;
100
+ };
89
101
  }
102
+ export {};
@@ -2,12 +2,22 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AbstractTopicClient = void 0;
4
4
  const index_1 = require("../../../index");
5
+ const errors_1 = require("../../../errors");
6
+ class StreamClientWithCount {
7
+ constructor(client) {
8
+ this.numActiveSubscriptions = 0;
9
+ this.client = client;
10
+ }
11
+ }
5
12
  class AbstractTopicClient {
6
- constructor(logger, pubsubClients, webhookClient) {
7
- this.nextPubsubClientIndex = 0;
13
+ constructor(logger, pubsubStreamClients, pubsubUnaryClients, webhookClient) {
14
+ this.nextPubsubStreamClientIndex = 0;
15
+ this.nextPubsubUnaryClientIndex = 0;
8
16
  this.logger = logger;
9
- this.pubsubClients = pubsubClients;
17
+ this.pubsubStreamClients = pubsubStreamClients.map(client => new StreamClientWithCount(client));
18
+ this.pubsubUnaryClients = pubsubUnaryClients;
10
19
  this.webhookClient = webhookClient;
20
+ this.maxConcurrentSubscriptions = 100 * this.pubsubStreamClients.length;
11
21
  }
12
22
  /**
13
23
  * Publishes a value to a topic.
@@ -20,7 +30,7 @@ class AbstractTopicClient {
20
30
  * {@link TopicPublish.Error} on failure.
21
31
  */
22
32
  async publish(cacheName, topicName, value) {
23
- return await this.getNextPubsubClient().publish(cacheName, topicName, value);
33
+ return await this.getNextPublishClient().publish(cacheName, topicName, value);
24
34
  }
25
35
  /**
26
36
  * Subscribes to a topic.
@@ -35,7 +45,23 @@ class AbstractTopicClient {
35
45
  * {@link TopicSubscribe.Error} on failure.
36
46
  */
37
47
  async subscribe(cacheName, topicName, options) {
38
- return await this.getNextPubsubClient().subscribe(cacheName, topicName, options);
48
+ try {
49
+ const { client, decrementSubscriptionCount } = this.getNextSubscribeClient();
50
+ const subscribeOptions = {
51
+ ...options,
52
+ onSubscriptionEnd: () => {
53
+ var _a;
54
+ // Call any existing onSubscriptionEnd handler
55
+ (_a = options.onSubscriptionEnd) === null || _a === void 0 ? void 0 : _a.call(options);
56
+ // Decrement the subscription count
57
+ decrementSubscriptionCount();
58
+ },
59
+ };
60
+ return await client.subscribe(cacheName, topicName, subscribeOptions);
61
+ }
62
+ catch (e) {
63
+ return new index_1.TopicSubscribe.Error(e);
64
+ }
39
65
  }
40
66
  /**
41
67
  * Deletes a webhook
@@ -113,12 +139,37 @@ class AbstractTopicClient {
113
139
  webhookName,
114
140
  });
115
141
  }
116
- getNextPubsubClient() {
117
- const client = this.pubsubClients[this.nextPubsubClientIndex];
118
- this.nextPubsubClientIndex =
119
- (this.nextPubsubClientIndex + 1) % this.pubsubClients.length;
142
+ getNextPublishClient() {
143
+ const client = this.pubsubUnaryClients[this.nextPubsubUnaryClientIndex];
144
+ this.nextPubsubUnaryClientIndex =
145
+ (this.nextPubsubUnaryClientIndex + 1) % this.pubsubUnaryClients.length;
120
146
  return client;
121
147
  }
148
+ getNextSubscribeClient() {
149
+ // Check if there's any client with capacity
150
+ let totalActiveStreams = 0;
151
+ for (const clientWithCount of this.pubsubStreamClients) {
152
+ totalActiveStreams += clientWithCount.numActiveSubscriptions;
153
+ }
154
+ if (totalActiveStreams < this.maxConcurrentSubscriptions) {
155
+ // Try to get a client with capacity for another subscription.
156
+ // Allow up to maxConcurrentSubscriptions attempts.
157
+ for (let i = 0; i < this.maxConcurrentSubscriptions; i++) {
158
+ const clientWithCount = this.pubsubStreamClients[this.nextPubsubStreamClientIndex % this.pubsubStreamClients.length];
159
+ if (clientWithCount.numActiveSubscriptions < 100) {
160
+ this.nextPubsubStreamClientIndex++;
161
+ clientWithCount.numActiveSubscriptions++;
162
+ return {
163
+ client: clientWithCount.client,
164
+ decrementSubscriptionCount: () => {
165
+ clientWithCount.numActiveSubscriptions--;
166
+ },
167
+ };
168
+ }
169
+ }
170
+ }
171
+ throw new errors_1.ClientResourceExhaustedError('Already at maximum number of subscriptions');
172
+ }
122
173
  }
123
174
  exports.AbstractTopicClient = AbstractTopicClient;
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RUb3BpY0NsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbnRlcm5hbC9jbGllbnRzL3B1YnN1Yi9BYnN0cmFjdFRvcGljQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDBDQVd3QjtBQUt4QixNQUFzQixtQkFBbUI7SUFNdkMsWUFDRSxNQUFxQixFQUNyQixhQUE4QixFQUM5QixhQUE2QjtRQUx2QiwwQkFBcUIsR0FBRyxDQUFDLENBQUM7UUFPaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLEtBQUssQ0FBQyxPQUFPLENBQ2xCLFNBQWlCLEVBQ2pCLFNBQWlCLEVBQ2pCLEtBQTBCO1FBRTFCLE9BQU8sTUFBTSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxPQUFPLENBQzdDLFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSSxLQUFLLENBQUMsU0FBUyxDQUNwQixTQUFpQixFQUNqQixTQUFpQixFQUNqQixPQUE2QjtRQUU3QixPQUFPLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsU0FBUyxDQUMvQyxTQUFTLEVBQ1QsU0FBUyxFQUNULE9BQU8sQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksS0FBSyxDQUFDLGFBQWEsQ0FDeEIsU0FBaUIsRUFDakIsV0FBbUI7UUFFbkIsT0FBTyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxLQUFLLENBQUMsWUFBWSxDQUFDLFNBQWlCO1FBQ3pDLE9BQU8sTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSSxLQUFLLENBQUMsVUFBVSxDQUNyQixTQUFpQixFQUNqQixXQUFtQixFQUNuQixPQUE4QjtRQUU5QixJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ2hDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLEtBQUssR0FBRyxJQUFJLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzlDO1FBQ0QsT0FBTyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO1lBQ3pDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztZQUM1QixFQUFFLEVBQUU7Z0JBQ0YsU0FBUztnQkFDVCxXQUFXO2FBQ1o7WUFDRCxXQUFXLEVBQUUsS0FBSztTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxLQUFLLENBQUMsZ0JBQWdCLENBQzNCLFNBQWlCLEVBQ2pCLFdBQW1CO1FBRW5CLE9BQU8sTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksS0FBSyxDQUFDLG1CQUFtQixDQUM5QixTQUFpQixFQUNqQixXQUFtQjtRQUVuQixPQUFPLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQztZQUNsRCxTQUFTO1lBQ1QsV0FBVztTQUNaLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxtQkFBbUI7UUFDM0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMscUJBQXFCO1lBQ3hCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1FBQy9ELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQWxLRCxrREFrS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lUb3BpY0NsaWVudH0gZnJvbSAnLi4vLi4vLi4vY2xpZW50cy9JVG9waWNDbGllbnQnO1xuaW1wb3J0IHtcbiAgTW9tZW50b0xvZ2dlcixcbiAgU3Vic2NyaWJlQ2FsbE9wdGlvbnMsXG4gIFRvcGljUHVibGlzaCxcbiAgVG9waWNTdWJzY3JpYmUsXG4gIExpc3RXZWJob29rcyxcbiAgUHV0V2ViaG9vayxcbiAgRGVsZXRlV2ViaG9vayxcbiAgR2V0V2ViaG9va1NlY3JldCxcbiAgUG9zdFVybFdlYmhvb2tEZXN0aW5hdGlvbixcbiAgUm90YXRlV2ViaG9va1NlY3JldCxcbn0gZnJvbSAnLi4vLi4vLi4vaW5kZXgnO1xuaW1wb3J0IHtJUHVic3ViQ2xpZW50fSBmcm9tICcuL0lQdWJzdWJDbGllbnQnO1xuaW1wb3J0IHtJV2ViaG9va0NsaWVudH0gZnJvbSAnLi9JV2ViaG9va0NsaWVudCc7XG5pbXBvcnQge1B1dFdlYmhvb2tDYWxsT3B0aW9uc30gZnJvbSAnLi4vLi4vLi4vdXRpbHMvd2ViaG9vay1jYWxsLW9wdGlvbnMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RUb3BpY0NsaWVudCBpbXBsZW1lbnRzIElUb3BpY0NsaWVudCB7XG4gIHByb3RlY3RlZCByZWFkb25seSBsb2dnZXI6IE1vbWVudG9Mb2dnZXI7XG4gIHByb3RlY3RlZCByZWFkb25seSBwdWJzdWJDbGllbnRzOiBJUHVic3ViQ2xpZW50W107XG4gIHByb3RlY3RlZCByZWFkb25seSB3ZWJob29rQ2xpZW50OiBJV2ViaG9va0NsaWVudDtcbiAgcHJpdmF0ZSBuZXh0UHVic3ViQ2xpZW50SW5kZXggPSAwO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBsb2dnZXI6IE1vbWVudG9Mb2dnZXIsXG4gICAgcHVic3ViQ2xpZW50czogSVB1YnN1YkNsaWVudFtdLFxuICAgIHdlYmhvb2tDbGllbnQ6IElXZWJob29rQ2xpZW50XG4gICkge1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICAgIHRoaXMucHVic3ViQ2xpZW50cyA9IHB1YnN1YkNsaWVudHM7XG4gICAgdGhpcy53ZWJob29rQ2xpZW50ID0gd2ViaG9va0NsaWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdWJsaXNoZXMgYSB2YWx1ZSB0byBhIHRvcGljLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2FjaGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGNhY2hlIHRvIGNvbnRhaW5pbmcgdGhlIHRvcGljIHRvIHB1Ymxpc2ggdG8uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BpY05hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdG9waWMgdG8gcHVibGlzaCB0by5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBVaW50OEFycmF5fSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBwdWJsaXNoLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxUb3BpY1B1Ymxpc2guUmVzcG9uc2U+fSAtXG4gICAqIHtAbGluayBUb3BpY1B1Ymxpc2guU3VjY2Vzc30gb24gc3VjY2Vzcy5cbiAgICoge0BsaW5rIFRvcGljUHVibGlzaC5FcnJvcn0gb24gZmFpbHVyZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBwdWJsaXNoKFxuICAgIGNhY2hlTmFtZTogc3RyaW5nLFxuICAgIHRvcGljTmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBzdHJpbmcgfCBVaW50OEFycmF5XG4gICk6IFByb21pc2U8VG9waWNQdWJsaXNoLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TmV4dFB1YnN1YkNsaWVudCgpLnB1Ymxpc2goXG4gICAgICBjYWNoZU5hbWUsXG4gICAgICB0b3BpY05hbWUsXG4gICAgICB2YWx1ZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlcyB0byBhIHRvcGljLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2FjaGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGNhY2hlIHRvIGNvbnRhaW5pbmcgdGhlIHRvcGljIHRvIHN1YnNjcmliZSB0by5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvcGljTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0b3BpYyB0byBzdWJzY3JpYmUgdG8uXG4gICAqIEBwYXJhbSB7U3Vic2NyaWJlQ2FsbE9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIHN1YnNjcmlwdGlvbi4gRGVmYXVsdHMgdG8gbm8tb3AgaGFuZGxlcnMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMub25JdGVtIC0gVGhlIGNhbGxiYWNrIHRvIGludm9rZSB3aGVuIGRhdGEgaXMgcmVjZWl2ZWQuIERlZmF1bHRzIHRvIG5vLW9wLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLm9uRXJyb3IgLSBUaGUgY2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gYW4gZXJyb3IgaXMgcmVjZWl2ZWQuIERlZmF1bHRzIHRvIG5vLW9wLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxUb3BpY1N1YnNjcmliZS5SZXNwb25zZT59IC1cbiAgICoge0BsaW5rIFRvcGljU3Vic2NyaWJlLlN1YnNjcmlwdGlvbn0gb24gc3VjY2Vzcy5cbiAgICoge0BsaW5rIFRvcGljU3Vic2NyaWJlLkVycm9yfSBvbiBmYWlsdXJlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHN1YnNjcmliZShcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICB0b3BpY05hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zOiBTdWJzY3JpYmVDYWxsT3B0aW9uc1xuICApOiBQcm9taXNlPFRvcGljU3Vic2NyaWJlLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TmV4dFB1YnN1YkNsaWVudCgpLnN1YnNjcmliZShcbiAgICAgIGNhY2hlTmFtZSxcbiAgICAgIHRvcGljTmFtZSxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSB3ZWJob29rXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjYWNoZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgY2FjaGUgYXNzb2NpYXRlZCB3aXRoIHRoZSB3ZWJob29rXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB3ZWJob29rTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB3ZWJob29rXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPERlbGV0ZVdlYmhvb2suUmVzcG9uc2U+fSAtXG4gICAqIHtAbGluayBEZWxldGVXZWJob29rLlN1Y2Nlc3N9IG9uIHN1Y2Nlc3MuXG4gICAqIHtAbGluayBEZWxldGVXZWJob29rLkVycm9yfSBvbiBmYWlsdXJlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRlbGV0ZVdlYmhvb2soXG4gICAgY2FjaGVOYW1lOiBzdHJpbmcsXG4gICAgd2ViaG9va05hbWU6IHN0cmluZ1xuICApOiBQcm9taXNlPERlbGV0ZVdlYmhvb2suUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy53ZWJob29rQ2xpZW50LmRlbGV0ZVdlYmhvb2soe2NhY2hlTmFtZSwgd2ViaG9va05hbWV9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0cyB3ZWJob29rcyBhc3NvY2lhdGVkIHdpdGggYSBjYWNoZVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2FjaGVOYW1lIC0gVGhlIGNhY2hlIHRvIGxpc3Qgd2ViaG9va3MgYXNzb2NpYXRlZCB3aXRoIGl0XG4gICAqIEByZXR1cm5zIHtQcm9taXNlPExpc3RXZWJob29rcy5SZXNwb25zZT59IC1cbiAgICoge0BsaW5rIExpc3RXZWJob29rcy5TdWNjZXNzfSBvbiBzdWNjZXNzLlxuICAgKiB7QGxpbmsgTGlzdFdlYmhvb2tzLkVycm9yfSBvbiBmYWlsdXJlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGxpc3RXZWJob29rcyhjYWNoZU5hbWU6IHN0cmluZyk6IFByb21pc2U8TGlzdFdlYmhvb2tzLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMud2ViaG9va0NsaWVudC5saXN0V2ViaG9va3MoY2FjaGVOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IHdlYmhvb2ssIG9yIHVwZGF0ZXMgYW4gZXhpc3Rpbmcgb25lXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjYWNoZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgY2FjaGUgdG8gYXNzb2NpYXRlIHRoZSB3ZWJob29rIHdpdGhcbiAgICogQHBhcmFtIHtzdHJpbmd9IHdlYmhvb2tOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHdlYmhvb2tcbiAgICogQHBhcmFtIHtQdXRXZWJob29rQ2FsbE9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIHdlYmhvb2tcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvcGljTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0b3BpYyBmb3IgdGhlIHdlYmhvb2sgdG8gbGlzdGVuIHRvXG4gICAqIEBwYXJhbSB7V2ViaG9va0Rlc3RpbmF0aW9uIHwgc3RyaW5nfSB3ZWJob29rRGVzdGluYXRpb24gLSBUaGUgdXJsIHRvIGFzc29jaWF0ZSB0aGUgd2ViaG9vayB3aXRoXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFB1dFdlYmhvb2suUmVzcG9uc2U+fSAtXG4gICAqIHtAbGluayBQdXRXZWJob29rLlN1Y2Nlc3N9IG9uIHN1Y2Nlc3MuXG4gICAqIHtAbGluayBQdXRXZWJob29rLkVycm9yfSBvbiBmYWlsdXJlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHB1dFdlYmhvb2soXG4gICAgY2FjaGVOYW1lOiBzdHJpbmcsXG4gICAgd2ViaG9va05hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zOiBQdXRXZWJob29rQ2FsbE9wdGlvbnNcbiAgKTogUHJvbWlzZTxQdXRXZWJob29rLlJlc3BvbnNlPiB7XG4gICAgbGV0IF9kZXN0ID0gb3B0aW9ucy5kZXN0aW5hdGlvbjtcbiAgICBpZiAodHlwZW9mIF9kZXN0ID09PSAnc3RyaW5nJykge1xuICAgICAgX2Rlc3QgPSBuZXcgUG9zdFVybFdlYmhvb2tEZXN0aW5hdGlvbihfZGVzdCk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCB0aGlzLndlYmhvb2tDbGllbnQucHV0V2ViaG9vayh7XG4gICAgICB0b3BpY05hbWU6IG9wdGlvbnMudG9waWNOYW1lLFxuICAgICAgaWQ6IHtcbiAgICAgICAgY2FjaGVOYW1lLFxuICAgICAgICB3ZWJob29rTmFtZSxcbiAgICAgIH0sXG4gICAgICBkZXN0aW5hdGlvbjogX2Rlc3QsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc2lnbmluZyBzZWNyZXQgZm9yIGEgd2ViaG9va1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2FjaGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGNhY2hlIGFzc29jaWF0ZWQgd2l0aCB0aGUgd2ViaG9va1xuICAgKiBAcGFyYW0ge3N0cmluZ30gd2ViaG9va05hbWUgLSBUaGUgbmFtZSBvZiB0aGUgd2ViaG9va1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxHZXRXZWJob29rU2VjcmV0LlJlc3BvbnNlPn0gLVxuICAgKiB7QGxpbmsgR2V0V2ViaG9va1NlY3JldC5TdWNjZXNzfSBvbiBzdWNjZXNzLlxuICAgKiB7QGxpbmsgR2V0V2ViaG9va1NlY3JldC5FcnJvcn0gb24gZmFpbHVyZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRXZWJob29rU2VjcmV0KFxuICAgIGNhY2hlTmFtZTogc3RyaW5nLFxuICAgIHdlYmhvb2tOYW1lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxHZXRXZWJob29rU2VjcmV0LlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMud2ViaG9va0NsaWVudC5nZXRXZWJob29rU2VjcmV0KHtjYWNoZU5hbWUsIHdlYmhvb2tOYW1lfSk7XG4gIH1cblxuICAvKipcbiAgICogUm90YXRlcyB0aGUgc2lnbmluZyBzZWNyZXQgZm9yIGEgd2ViaG9va1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2FjaGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGNhY2hlIGFzc29jaWF0ZWQgd2l0aCB0aGUgd2ViaG9va1xuICAgKiBAcGFyYW0ge3N0cmluZ30gd2ViaG9va05hbWUgLSBUaGUgbmFtZSBvZiB0aGUgd2ViaG9va1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxSb3RhdGVXZWJob29rU2VjcmV0LlJlc3BvbnNlPn0gLVxuICAgKiB7QGxpbmsgUm90YXRlV2ViaG9va1NlY3JldC5TdWNjZXNzfSBvbiBzdWNjZXNzLlxuICAgKiB7QGxpbmsgUm90YXRlV2ViaG9va1NlY3JldC5FcnJvcn0gb24gZmFpbHVyZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyByb3RhdGVXZWJob29rU2VjcmV0KFxuICAgIGNhY2hlTmFtZTogc3RyaW5nLFxuICAgIHdlYmhvb2tOYW1lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxSb3RhdGVXZWJob29rU2VjcmV0LlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMud2ViaG9va0NsaWVudC5yb3RhdGVXZWJob29rU2VjcmV0KHtcbiAgICAgIGNhY2hlTmFtZSxcbiAgICAgIHdlYmhvb2tOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldE5leHRQdWJzdWJDbGllbnQoKTogSVB1YnN1YkNsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gdGhpcy5wdWJzdWJDbGllbnRzW3RoaXMubmV4dFB1YnN1YkNsaWVudEluZGV4XTtcbiAgICB0aGlzLm5leHRQdWJzdWJDbGllbnRJbmRleCA9XG4gICAgICAodGhpcy5uZXh0UHVic3ViQ2xpZW50SW5kZXggKyAxKSAlIHRoaXMucHVic3ViQ2xpZW50cy5sZW5ndGg7XG4gICAgcmV0dXJuIGNsaWVudDtcbiAgfVxufVxuIl19
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RUb3BpY0NsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbnRlcm5hbC9jbGllbnRzL3B1YnN1Yi9BYnN0cmFjdFRvcGljQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDBDQVd3QjtBQUl4Qiw0Q0FBdUU7QUFPdkUsTUFBTSxxQkFBcUI7SUFJekIsWUFBWSxNQUFxQjtRQUhqQywyQkFBc0IsR0FBRyxDQUFDLENBQUM7UUFJekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztDQUNGO0FBRUQsTUFBc0IsbUJBQW1CO0lBVXZDLFlBQ0UsTUFBcUIsRUFDckIsbUJBQW9DLEVBQ3BDLGtCQUFtQyxFQUNuQyxhQUE2QjtRQVJ2QixnQ0FBMkIsR0FBRyxDQUFDLENBQUM7UUFDaEMsK0JBQTBCLEdBQUcsQ0FBQyxDQUFDO1FBU3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQ2hELE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FDNUMsQ0FBQztRQUNGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7SUFDMUUsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLEtBQUssQ0FBQyxPQUFPLENBQ2xCLFNBQWlCLEVBQ2pCLFNBQWlCLEVBQ2pCLEtBQTBCO1FBRTFCLE9BQU8sTUFBTSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxPQUFPLENBQzlDLFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxDQUNOLENBQUM7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RCxrQkFBa0IsSUFBSSxlQUFlLENBQUMsc0JBQXNCLENBQUM7U0FDOUQ7UUFDRCxJQUFJLGtCQUFrQixHQUFHLElBQUksQ0FBQywwQkFBMEIsRUFBRTtZQUN4RCw4REFBOEQ7WUFDOUQsbURBQW1EO1lBQ25ELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3hELE1BQU0sZUFBZSxHQUNuQixJQUFJLENBQUMsbUJBQW1CLENBQ3RCLElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUNuRSxDQUFDO2dCQUNKLElBQUksZUFBZSxDQUFDLHNCQUFzQixHQUFHLEdBQUcsRUFBRTtvQkFDaEQsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7b0JBQ25DLGVBQWUsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO29CQUN6QyxPQUFPO3dCQUNMLE1BQU0sRUFBRSxlQUFlLENBQUMsTUFBTTt3QkFDOUIsMEJBQTBCLEVBQUUsR0FBRyxFQUFFOzRCQUMvQixlQUFlLENBQUMsc0JBQXNCLEVBQUUsQ0FBQzt3QkFDM0MsQ0FBQztxQkFDRixDQUFDO2lCQUNIO2FBQ0Y7U0FDRjtRQUVELE1BQU0sSUFBSSxxQ0FBNEIsQ0FDcEMsNENBQTRDLENBQzdDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF6TkQsa0RBeU5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJVG9waWNDbGllbnR9IGZyb20gJy4uLy4uLy4uL2NsaWVudHMvSVRvcGljQ2xpZW50JztcbmltcG9ydCB7XG4gIE1vbWVudG9Mb2dnZXIsXG4gIFN1YnNjcmliZUNhbGxPcHRpb25zLFxuICBUb3BpY1B1Ymxpc2gsXG4gIFRvcGljU3Vic2NyaWJlLFxuICBMaXN0V2ViaG9va3MsXG4gIFB1dFdlYmhvb2ssXG4gIERlbGV0ZVdlYmhvb2ssXG4gIEdldFdlYmhvb2tTZWNyZXQsXG4gIFBvc3RVcmxXZWJob29rRGVzdGluYXRpb24sXG4gIFJvdGF0ZVdlYmhvb2tTZWNyZXQsXG59IGZyb20gJy4uLy4uLy4uL2luZGV4JztcbmltcG9ydCB7SVB1YnN1YkNsaWVudH0gZnJvbSAnLi9JUHVic3ViQ2xpZW50JztcbmltcG9ydCB7SVdlYmhvb2tDbGllbnR9IGZyb20gJy4vSVdlYmhvb2tDbGllbnQnO1xuaW1wb3J0IHtQdXRXZWJob29rQ2FsbE9wdGlvbnN9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3dlYmhvb2stY2FsbC1vcHRpb25zJztcbmltcG9ydCB7Q2xpZW50UmVzb3VyY2VFeGhhdXN0ZWRFcnJvciwgU2RrRXJyb3J9IGZyb20gJy4uLy4uLy4uL2Vycm9ycyc7XG5cbmludGVyZmFjZSBJU3RyZWFtQ2xpZW50V2l0aENvdW50IHtcbiAgbnVtQWN0aXZlU3Vic2NyaXB0aW9uczogbnVtYmVyO1xuICBjbGllbnQ6IElQdWJzdWJDbGllbnQ7XG59XG5cbmNsYXNzIFN0cmVhbUNsaWVudFdpdGhDb3VudCBpbXBsZW1lbnRzIElTdHJlYW1DbGllbnRXaXRoQ291bnQge1xuICBudW1BY3RpdmVTdWJzY3JpcHRpb25zID0gMDtcbiAgY2xpZW50OiBJUHVic3ViQ2xpZW50O1xuXG4gIGNvbnN0cnVjdG9yKGNsaWVudDogSVB1YnN1YkNsaWVudCkge1xuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50O1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFRvcGljQ2xpZW50IGltcGxlbWVudHMgSVRvcGljQ2xpZW50IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvZ2dlcjogTW9tZW50b0xvZ2dlcjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHB1YnN1YkNsaWVudHM6IElQdWJzdWJDbGllbnRbXTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHB1YnN1YlN0cmVhbUNsaWVudHM6IElTdHJlYW1DbGllbnRXaXRoQ291bnRbXTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHB1YnN1YlVuYXJ5Q2xpZW50czogSVB1YnN1YkNsaWVudFtdO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgd2ViaG9va0NsaWVudDogSVdlYmhvb2tDbGllbnQ7XG4gIHByaXZhdGUgbmV4dFB1YnN1YlN0cmVhbUNsaWVudEluZGV4ID0gMDtcbiAgcHJpdmF0ZSBuZXh0UHVic3ViVW5hcnlDbGllbnRJbmRleCA9IDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWF4Q29uY3VycmVudFN1YnNjcmlwdGlvbnM7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIGxvZ2dlcjogTW9tZW50b0xvZ2dlcixcbiAgICBwdWJzdWJTdHJlYW1DbGllbnRzOiBJUHVic3ViQ2xpZW50W10sXG4gICAgcHVic3ViVW5hcnlDbGllbnRzOiBJUHVic3ViQ2xpZW50W10sXG4gICAgd2ViaG9va0NsaWVudDogSVdlYmhvb2tDbGllbnRcbiAgKSB7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgdGhpcy5wdWJzdWJTdHJlYW1DbGllbnRzID0gcHVic3ViU3RyZWFtQ2xpZW50cy5tYXAoXG4gICAgICBjbGllbnQgPT4gbmV3IFN0cmVhbUNsaWVudFdpdGhDb3VudChjbGllbnQpXG4gICAgKTtcbiAgICB0aGlzLnB1YnN1YlVuYXJ5Q2xpZW50cyA9IHB1YnN1YlVuYXJ5Q2xpZW50cztcbiAgICB0aGlzLndlYmhvb2tDbGllbnQgPSB3ZWJob29rQ2xpZW50O1xuICAgIHRoaXMubWF4Q29uY3VycmVudFN1YnNjcmlwdGlvbnMgPSAxMDAgKiB0aGlzLnB1YnN1YlN0cmVhbUNsaWVudHMubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2hlcyBhIHZhbHVlIHRvIGEgdG9waWMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjYWNoZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgY2FjaGUgdG8gY29udGFpbmluZyB0aGUgdG9waWMgdG8gcHVibGlzaCB0by5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvcGljTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0b3BpYyB0byBwdWJsaXNoIHRvLlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IFVpbnQ4QXJyYXl9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIHB1Ymxpc2guXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFRvcGljUHVibGlzaC5SZXNwb25zZT59IC1cbiAgICoge0BsaW5rIFRvcGljUHVibGlzaC5TdWNjZXNzfSBvbiBzdWNjZXNzLlxuICAgKiB7QGxpbmsgVG9waWNQdWJsaXNoLkVycm9yfSBvbiBmYWlsdXJlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHB1Ymxpc2goXG4gICAgY2FjaGVOYW1lOiBzdHJpbmcsXG4gICAgdG9waWNOYW1lOiBzdHJpbmcsXG4gICAgdmFsdWU6IHN0cmluZyB8IFVpbnQ4QXJyYXlcbiAgKTogUHJvbWlzZTxUb3BpY1B1Ymxpc2guUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXROZXh0UHVibGlzaENsaWVudCgpLnB1Ymxpc2goXG4gICAgICBjYWNoZU5hbWUsXG4gICAgICB0b3BpY05hbWUsXG4gICAgICB2YWx1ZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlcyB0byBhIHRvcGljLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2FjaGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGNhY2hlIHRvIGNvbnRhaW5pbmcgdGhlIHRvcGljIHRvIHN1YnNjcmliZSB0by5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvcGljTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0b3BpYyB0byBzdWJzY3JpYmUgdG8uXG4gICAqIEBwYXJhbSB7U3Vic2NyaWJlQ2FsbE9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIHN1YnNjcmlwdGlvbi4gRGVmYXVsdHMgdG8gbm8tb3AgaGFuZGxlcnMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMub25JdGVtIC0gVGhlIGNhbGxiYWNrIHRvIGludm9rZSB3aGVuIGRhdGEgaXMgcmVjZWl2ZWQuIERlZmF1bHRzIHRvIG5vLW9wLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLm9uRXJyb3IgLSBUaGUgY2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gYW4gZXJyb3IgaXMgcmVjZWl2ZWQuIERlZmF1bHRzIHRvIG5vLW9wLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxUb3BpY1N1YnNjcmliZS5SZXNwb25zZT59IC1cbiAgICoge0BsaW5rIFRvcGljU3Vic2NyaWJlLlN1YnNjcmlwdGlvbn0gb24gc3VjY2Vzcy5cbiAgICoge0BsaW5rIFRvcGljU3Vic2NyaWJlLkVycm9yfSBvbiBmYWlsdXJlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHN1YnNjcmliZShcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICB0b3BpY05hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zOiBTdWJzY3JpYmVDYWxsT3B0aW9uc1xuICApOiBQcm9taXNlPFRvcGljU3Vic2NyaWJlLlJlc3BvbnNlPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHtjbGllbnQsIGRlY3JlbWVudFN1YnNjcmlwdGlvbkNvdW50fSA9XG4gICAgICAgIHRoaXMuZ2V0TmV4dFN1YnNjcmliZUNsaWVudCgpO1xuICAgICAgY29uc3Qgc3Vic2NyaWJlT3B0aW9ucyA9IHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgb25TdWJzY3JpcHRpb25FbmQ6ICgpID0+IHtcbiAgICAgICAgICAvLyBDYWxsIGFueSBleGlzdGluZyBvblN1YnNjcmlwdGlvbkVuZCBoYW5kbGVyXG4gICAgICAgICAgb3B0aW9ucy5vblN1YnNjcmlwdGlvbkVuZD8uKCk7XG4gICAgICAgICAgLy8gRGVjcmVtZW50IHRoZSBzdWJzY3JpcHRpb24gY291bnRcbiAgICAgICAgICBkZWNyZW1lbnRTdWJzY3JpcHRpb25Db3VudCgpO1xuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIHJldHVybiBhd2FpdCBjbGllbnQuc3Vic2NyaWJlKGNhY2hlTmFtZSwgdG9waWNOYW1lLCBzdWJzY3JpYmVPcHRpb25zKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gbmV3IFRvcGljU3Vic2NyaWJlLkVycm9yKGUgYXMgU2RrRXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGEgd2ViaG9va1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2FjaGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGNhY2hlIGFzc29jaWF0ZWQgd2l0aCB0aGUgd2ViaG9va1xuICAgKiBAcGFyYW0ge3N0cmluZ30gd2ViaG9va05hbWUgLSBUaGUgbmFtZSBvZiB0aGUgd2ViaG9va1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxEZWxldGVXZWJob29rLlJlc3BvbnNlPn0gLVxuICAgKiB7QGxpbmsgRGVsZXRlV2ViaG9vay5TdWNjZXNzfSBvbiBzdWNjZXNzLlxuICAgKiB7QGxpbmsgRGVsZXRlV2ViaG9vay5FcnJvcn0gb24gZmFpbHVyZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBkZWxldGVXZWJob29rKFxuICAgIGNhY2hlTmFtZTogc3RyaW5nLFxuICAgIHdlYmhvb2tOYW1lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxEZWxldGVXZWJob29rLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMud2ViaG9va0NsaWVudC5kZWxldGVXZWJob29rKHtjYWNoZU5hbWUsIHdlYmhvb2tOYW1lfSk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdHMgd2ViaG9va3MgYXNzb2NpYXRlZCB3aXRoIGEgY2FjaGVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNhY2hlTmFtZSAtIFRoZSBjYWNoZSB0byBsaXN0IHdlYmhvb2tzIGFzc29jaWF0ZWQgd2l0aCBpdFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxMaXN0V2ViaG9va3MuUmVzcG9uc2U+fSAtXG4gICAqIHtAbGluayBMaXN0V2ViaG9va3MuU3VjY2Vzc30gb24gc3VjY2Vzcy5cbiAgICoge0BsaW5rIExpc3RXZWJob29rcy5FcnJvcn0gb24gZmFpbHVyZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBsaXN0V2ViaG9va3MoY2FjaGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPExpc3RXZWJob29rcy5SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLndlYmhvb2tDbGllbnQubGlzdFdlYmhvb2tzKGNhY2hlTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyB3ZWJob29rLCBvciB1cGRhdGVzIGFuIGV4aXN0aW5nIG9uZVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2FjaGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGNhY2hlIHRvIGFzc29jaWF0ZSB0aGUgd2ViaG9vayB3aXRoXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB3ZWJob29rTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB3ZWJob29rXG4gICAqIEBwYXJhbSB7UHV0V2ViaG9va0NhbGxPcHRpb25zfSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSB3ZWJob29rXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BpY05hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdG9waWMgZm9yIHRoZSB3ZWJob29rIHRvIGxpc3RlbiB0b1xuICAgKiBAcGFyYW0ge1dlYmhvb2tEZXN0aW5hdGlvbiB8IHN0cmluZ30gd2ViaG9va0Rlc3RpbmF0aW9uIC0gVGhlIHVybCB0byBhc3NvY2lhdGUgdGhlIHdlYmhvb2sgd2l0aFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxQdXRXZWJob29rLlJlc3BvbnNlPn0gLVxuICAgKiB7QGxpbmsgUHV0V2ViaG9vay5TdWNjZXNzfSBvbiBzdWNjZXNzLlxuICAgKiB7QGxpbmsgUHV0V2ViaG9vay5FcnJvcn0gb24gZmFpbHVyZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBwdXRXZWJob29rKFxuICAgIGNhY2hlTmFtZTogc3RyaW5nLFxuICAgIHdlYmhvb2tOYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9uczogUHV0V2ViaG9va0NhbGxPcHRpb25zXG4gICk6IFByb21pc2U8UHV0V2ViaG9vay5SZXNwb25zZT4ge1xuICAgIGxldCBfZGVzdCA9IG9wdGlvbnMuZGVzdGluYXRpb247XG4gICAgaWYgKHR5cGVvZiBfZGVzdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIF9kZXN0ID0gbmV3IFBvc3RVcmxXZWJob29rRGVzdGluYXRpb24oX2Rlc3QpO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy53ZWJob29rQ2xpZW50LnB1dFdlYmhvb2soe1xuICAgICAgdG9waWNOYW1lOiBvcHRpb25zLnRvcGljTmFtZSxcbiAgICAgIGlkOiB7XG4gICAgICAgIGNhY2hlTmFtZSxcbiAgICAgICAgd2ViaG9va05hbWUsXG4gICAgICB9LFxuICAgICAgZGVzdGluYXRpb246IF9kZXN0LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHNpZ25pbmcgc2VjcmV0IGZvciBhIHdlYmhvb2tcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNhY2hlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBjYWNoZSBhc3NvY2lhdGVkIHdpdGggdGhlIHdlYmhvb2tcbiAgICogQHBhcmFtIHtzdHJpbmd9IHdlYmhvb2tOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHdlYmhvb2tcbiAgICogQHJldHVybnMge1Byb21pc2U8R2V0V2ViaG9va1NlY3JldC5SZXNwb25zZT59IC1cbiAgICoge0BsaW5rIEdldFdlYmhvb2tTZWNyZXQuU3VjY2Vzc30gb24gc3VjY2Vzcy5cbiAgICoge0BsaW5rIEdldFdlYmhvb2tTZWNyZXQuRXJyb3J9IG9uIGZhaWx1cmUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0V2ViaG9va1NlY3JldChcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICB3ZWJob29rTmFtZTogc3RyaW5nXG4gICk6IFByb21pc2U8R2V0V2ViaG9va1NlY3JldC5SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLndlYmhvb2tDbGllbnQuZ2V0V2ViaG9va1NlY3JldCh7Y2FjaGVOYW1lLCB3ZWJob29rTmFtZX0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJvdGF0ZXMgdGhlIHNpZ25pbmcgc2VjcmV0IGZvciBhIHdlYmhvb2tcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNhY2hlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBjYWNoZSBhc3NvY2lhdGVkIHdpdGggdGhlIHdlYmhvb2tcbiAgICogQHBhcmFtIHtzdHJpbmd9IHdlYmhvb2tOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHdlYmhvb2tcbiAgICogQHJldHVybnMge1Byb21pc2U8Um90YXRlV2ViaG9va1NlY3JldC5SZXNwb25zZT59IC1cbiAgICoge0BsaW5rIFJvdGF0ZVdlYmhvb2tTZWNyZXQuU3VjY2Vzc30gb24gc3VjY2Vzcy5cbiAgICoge0BsaW5rIFJvdGF0ZVdlYmhvb2tTZWNyZXQuRXJyb3J9IG9uIGZhaWx1cmUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcm90YXRlV2ViaG9va1NlY3JldChcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICB3ZWJob29rTmFtZTogc3RyaW5nXG4gICk6IFByb21pc2U8Um90YXRlV2ViaG9va1NlY3JldC5SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLndlYmhvb2tDbGllbnQucm90YXRlV2ViaG9va1NlY3JldCh7XG4gICAgICBjYWNoZU5hbWUsXG4gICAgICB3ZWJob29rTmFtZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXROZXh0UHVibGlzaENsaWVudCgpOiBJUHVic3ViQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSB0aGlzLnB1YnN1YlVuYXJ5Q2xpZW50c1t0aGlzLm5leHRQdWJzdWJVbmFyeUNsaWVudEluZGV4XTtcbiAgICB0aGlzLm5leHRQdWJzdWJVbmFyeUNsaWVudEluZGV4ID1cbiAgICAgICh0aGlzLm5leHRQdWJzdWJVbmFyeUNsaWVudEluZGV4ICsgMSkgJSB0aGlzLnB1YnN1YlVuYXJ5Q2xpZW50cy5sZW5ndGg7XG4gICAgcmV0dXJuIGNsaWVudDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXROZXh0U3Vic2NyaWJlQ2xpZW50KCk6IHtcbiAgICBjbGllbnQ6IElQdWJzdWJDbGllbnQ7XG4gICAgZGVjcmVtZW50U3Vic2NyaXB0aW9uQ291bnQ6ICgpID0+IHZvaWQ7XG4gIH0ge1xuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYW55IGNsaWVudCB3aXRoIGNhcGFjaXR5XG4gICAgbGV0IHRvdGFsQWN0aXZlU3RyZWFtcyA9IDA7XG4gICAgZm9yIChjb25zdCBjbGllbnRXaXRoQ291bnQgb2YgdGhpcy5wdWJzdWJTdHJlYW1DbGllbnRzKSB7XG4gICAgICB0b3RhbEFjdGl2ZVN0cmVhbXMgKz0gY2xpZW50V2l0aENvdW50Lm51bUFjdGl2ZVN1YnNjcmlwdGlvbnM7XG4gICAgfVxuICAgIGlmICh0b3RhbEFjdGl2ZVN0cmVhbXMgPCB0aGlzLm1heENvbmN1cnJlbnRTdWJzY3JpcHRpb25zKSB7XG4gICAgICAvLyBUcnkgdG8gZ2V0IGEgY2xpZW50IHdpdGggY2FwYWNpdHkgZm9yIGFub3RoZXIgc3Vic2NyaXB0aW9uLlxuICAgICAgLy8gQWxsb3cgdXAgdG8gbWF4Q29uY3VycmVudFN1YnNjcmlwdGlvbnMgYXR0ZW1wdHMuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubWF4Q29uY3VycmVudFN1YnNjcmlwdGlvbnM7IGkrKykge1xuICAgICAgICBjb25zdCBjbGllbnRXaXRoQ291bnQgPVxuICAgICAgICAgIHRoaXMucHVic3ViU3RyZWFtQ2xpZW50c1tcbiAgICAgICAgICAgIHRoaXMubmV4dFB1YnN1YlN0cmVhbUNsaWVudEluZGV4ICUgdGhpcy5wdWJzdWJTdHJlYW1DbGllbnRzLmxlbmd0aFxuICAgICAgICAgIF07XG4gICAgICAgIGlmIChjbGllbnRXaXRoQ291bnQubnVtQWN0aXZlU3Vic2NyaXB0aW9ucyA8IDEwMCkge1xuICAgICAgICAgIHRoaXMubmV4dFB1YnN1YlN0cmVhbUNsaWVudEluZGV4Kys7XG4gICAgICAgICAgY2xpZW50V2l0aENvdW50Lm51bUFjdGl2ZVN1YnNjcmlwdGlvbnMrKztcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2xpZW50OiBjbGllbnRXaXRoQ291bnQuY2xpZW50LFxuICAgICAgICAgICAgZGVjcmVtZW50U3Vic2NyaXB0aW9uQ291bnQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgY2xpZW50V2l0aENvdW50Lm51bUFjdGl2ZVN1YnNjcmlwdGlvbnMtLTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IG5ldyBDbGllbnRSZXNvdXJjZUV4aGF1c3RlZEVycm9yKFxuICAgICAgJ0FscmVhZHkgYXQgbWF4aW11bSBudW1iZXIgb2Ygc3Vic2NyaXB0aW9ucydcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -18,18 +18,13 @@ interface TokenAndEndpoints {
18
18
  controlEndpoint: string | undefined;
19
19
  cacheEndpoint: string | undefined;
20
20
  tokenEndpoint: string | undefined;
21
- storageEndpoint: string | undefined;
22
21
  authToken: string;
23
22
  }
24
- export interface Endpoint {
25
- endpoint: string;
26
- secureConnection?: boolean;
27
- }
28
23
  export interface AllEndpoints {
29
- controlEndpoint: Endpoint;
30
- cacheEndpoint: Endpoint;
31
- tokenEndpoint: Endpoint;
32
- storageEndpoint: Endpoint;
24
+ controlEndpoint: string;
25
+ cacheEndpoint: string;
26
+ tokenEndpoint: string;
27
+ secureConnection?: boolean;
33
28
  }
34
29
  export declare function populateAllEndpointsFromBaseEndpoint(endpointOverride: BaseEndpointOverride): AllEndpoints;
35
30
  /**