@signageos/lib 23.9.1 → 23.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/README.md +2 -2
  2. package/dist/AMQP/CQRS/ICommand.d.ts +3 -36
  3. package/dist/AMQP/CQRS/ICommand.js +18 -0
  4. package/dist/AMQP/CQRS/ICommand.js.map +1 -1
  5. package/dist/AMQP/CQRS/ICommandError.d.ts +4 -4
  6. package/dist/AMQP/CQRS/commandQueue.d.ts +4 -59
  7. package/dist/AMQP/CQRS/commandQueue.js +16 -308
  8. package/dist/AMQP/CQRS/commandQueue.js.map +1 -1
  9. package/dist/AMQP/CQRS/commandResponseHelper.d.ts +4 -3
  10. package/dist/AMQP/CQRS/commandResponseHelper.js +18 -5
  11. package/dist/AMQP/CQRS/commandResponseHelper.js.map +1 -1
  12. package/dist/AMQP/CQRS/storedCommandQueue.d.ts +4 -27
  13. package/dist/AMQP/CQRS/storedCommandQueue.js +16 -296
  14. package/dist/AMQP/CQRS/storedCommandQueue.js.map +1 -1
  15. package/dist/AMQP/ChannelProvider.d.ts +5 -37
  16. package/dist/AMQP/ChannelProvider.js +9 -868
  17. package/dist/AMQP/ChannelProvider.js.map +1 -1
  18. package/dist/AMQP/DeviceActions/Bridge/deviceActionBridgeFactory.d.ts +4 -39
  19. package/dist/AMQP/DeviceActions/Bridge/deviceActionBridgeFactory.js +16 -287
  20. package/dist/AMQP/DeviceActions/Bridge/deviceActionBridgeFactory.js.map +1 -1
  21. package/dist/AMQP/DeviceActions/IDeviceAction.d.ts +4 -4
  22. package/dist/AMQP/DeviceActions/deviceActionsQueue.d.ts +2 -81
  23. package/dist/AMQP/DeviceActions/deviceActionsQueue.js +14 -531
  24. package/dist/AMQP/DeviceActions/deviceActionsQueue.js.map +1 -1
  25. package/dist/AMQP/EventSourcing/EventConsumer/AmqpEventConsumer.d.ts +2 -45
  26. package/dist/AMQP/EventSourcing/EventConsumer/AmqpEventConsumer.js +14 -211
  27. package/dist/AMQP/EventSourcing/EventConsumer/AmqpEventConsumer.js.map +1 -1
  28. package/dist/AMQP/EventSourcing/EventConsumer/IEventConsumer.d.ts +2 -11
  29. package/dist/AMQP/EventSourcing/EventConsumer/IEventConsumer.js +18 -0
  30. package/dist/AMQP/EventSourcing/EventConsumer/IEventConsumer.js.map +1 -1
  31. package/dist/AMQP/EventSourcing/EventConsumer/InMemoryEventConsumer.d.ts +2 -13
  32. package/dist/AMQP/EventSourcing/EventConsumer/InMemoryEventConsumer.js +14 -69
  33. package/dist/AMQP/EventSourcing/EventConsumer/InMemoryEventConsumer.js.map +1 -1
  34. package/dist/AMQP/EventSourcing/IEvent.d.ts +3 -70
  35. package/dist/AMQP/EventSourcing/IEvent.js +18 -0
  36. package/dist/AMQP/EventSourcing/IEvent.js.map +1 -1
  37. package/dist/AMQP/EventSourcing/Locked/deferredState.d.ts +2 -19
  38. package/dist/AMQP/EventSourcing/Locked/deferredState.js +15 -66
  39. package/dist/AMQP/EventSourcing/Locked/deferredState.js.map +1 -1
  40. package/dist/AMQP/EventSourcing/Locked/lockedEventConsumer.d.ts +2 -68
  41. package/dist/AMQP/EventSourcing/Locked/lockedEventConsumer.js +14 -429
  42. package/dist/AMQP/EventSourcing/Locked/lockedEventConsumer.js.map +1 -1
  43. package/dist/AMQP/EventSourcing/Locked/rejectedTimestamps.d.ts +2 -22
  44. package/dist/AMQP/EventSourcing/Locked/rejectedTimestamps.js +16 -59
  45. package/dist/AMQP/EventSourcing/Locked/rejectedTimestamps.js.map +1 -1
  46. package/dist/AMQP/EventSourcing/Locked/withLock.d.ts +2 -40
  47. package/dist/AMQP/EventSourcing/Locked/withLock.js +14 -134
  48. package/dist/AMQP/EventSourcing/Locked/withLock.js.map +1 -1
  49. package/dist/AMQP/EventSourcing/eventQueue.d.ts +2 -85
  50. package/dist/AMQP/EventSourcing/eventQueue.js +14 -132
  51. package/dist/AMQP/EventSourcing/eventQueue.js.map +1 -1
  52. package/dist/AMQP/EventSourcing/eventQueue.utils.d.ts +2 -71
  53. package/dist/AMQP/EventSourcing/eventQueue.utils.js +16 -152
  54. package/dist/AMQP/EventSourcing/eventQueue.utils.js.map +1 -1
  55. package/dist/AMQP/EventSourcing/eventQueueDetached.d.ts +2 -47
  56. package/dist/AMQP/EventSourcing/eventQueueDetached.js +14 -421
  57. package/dist/AMQP/EventSourcing/eventQueueDetached.js.map +1 -1
  58. package/dist/AMQP/EventSourcing/eventQueueDomain.d.ts +2 -53
  59. package/dist/AMQP/EventSourcing/eventQueueDomain.js +14 -611
  60. package/dist/AMQP/EventSourcing/eventQueueDomain.js.map +1 -1
  61. package/dist/AMQP/EventSourcing/eventQueuePublish.d.ts +2 -17
  62. package/dist/AMQP/EventSourcing/eventQueuePublish.js +14 -202
  63. package/dist/AMQP/EventSourcing/eventQueuePublish.js.map +1 -1
  64. package/dist/AMQP/EventSourcing/synchronization.d.ts +2 -37
  65. package/dist/AMQP/EventSourcing/synchronization.js +18 -9
  66. package/dist/AMQP/EventSourcing/synchronization.js.map +1 -1
  67. package/dist/AMQP/Exchange.d.ts +4 -1
  68. package/dist/AMQP/Exchange.js +18 -0
  69. package/dist/AMQP/Exchange.js.map +1 -1
  70. package/dist/AMQP/IAsyncGotMessage.d.ts +2 -13
  71. package/dist/AMQP/IAsyncGotMessage.js +18 -0
  72. package/dist/AMQP/IAsyncGotMessage.js.map +1 -1
  73. package/dist/AMQP/IChannel.d.ts +5 -43
  74. package/dist/AMQP/IChannel.js +18 -0
  75. package/dist/AMQP/IChannel.js.map +1 -1
  76. package/dist/AMQP/IConsumeOptions.d.ts +5 -106
  77. package/dist/AMQP/IConsumeOptions.js +18 -0
  78. package/dist/AMQP/IConsumeOptions.js.map +1 -1
  79. package/dist/AMQP/IMessageOptions.d.ts +5 -6
  80. package/dist/AMQP/IMessageOptions.js +18 -0
  81. package/dist/AMQP/IMessageOptions.js.map +1 -1
  82. package/dist/AMQP/INackOptions.d.ts +5 -4
  83. package/dist/AMQP/INackOptions.js +18 -0
  84. package/dist/AMQP/INackOptions.js.map +1 -1
  85. package/dist/AMQP/IQueueOptions.d.ts +5 -8
  86. package/dist/AMQP/IQueueOptions.js +18 -0
  87. package/dist/AMQP/IQueueOptions.js.map +1 -1
  88. package/dist/AMQP/Logging/IDeviceLog.d.ts +4 -15
  89. package/dist/AMQP/Logging/IDeviceLog.js +18 -7
  90. package/dist/AMQP/Logging/IDeviceLog.js.map +1 -1
  91. package/dist/AMQP/Logging/logDeviceQueue.d.ts +4 -12
  92. package/dist/AMQP/Logging/logDeviceQueue.js +16 -102
  93. package/dist/AMQP/Logging/logDeviceQueue.js.map +1 -1
  94. package/dist/AMQP/QueueFetcher.d.ts +3 -11
  95. package/dist/AMQP/QueueFetcher.js +17 -156
  96. package/dist/AMQP/QueueFetcher.js.map +1 -1
  97. package/dist/AMQP/QueuePublisher.d.ts +5 -7
  98. package/dist/AMQP/QueuePublisher.js +19 -127
  99. package/dist/AMQP/QueuePublisher.js.map +1 -1
  100. package/dist/AMQP/QueueRepeatableSubscription.d.ts +5 -14
  101. package/dist/AMQP/QueueRepeatableSubscription.js +19 -154
  102. package/dist/AMQP/QueueRepeatableSubscription.js.map +1 -1
  103. package/dist/AMQP/QueueSubscriber.d.ts +5 -27
  104. package/dist/AMQP/QueueSubscriber.js +9 -303
  105. package/dist/AMQP/QueueSubscriber.js.map +1 -1
  106. package/dist/AMQP/ResponseProvider.d.ts +4 -20
  107. package/dist/AMQP/ResponseProvider.js +16 -188
  108. package/dist/AMQP/ResponseProvider.js.map +1 -1
  109. package/dist/AMQP/Static/filesQueue.d.ts +4 -12
  110. package/dist/AMQP/Static/filesQueue.js +6 -205
  111. package/dist/AMQP/Static/filesQueue.js.map +1 -1
  112. package/dist/AMQP/amqpConnectionFactory.d.ts +2 -25
  113. package/dist/AMQP/amqpConnectionFactory.js +4 -219
  114. package/dist/AMQP/amqpConnectionFactory.js.map +1 -1
  115. package/dist/AMQP/amqpErrors.d.ts +4 -5
  116. package/dist/AMQP/amqpErrors.js +18 -27
  117. package/dist/AMQP/amqpErrors.js.map +1 -1
  118. package/dist/AMQP/errors.d.ts +4 -3
  119. package/dist/AMQP/errors.js +18 -27
  120. package/dist/AMQP/errors.js.map +1 -1
  121. package/dist/AMQP/fetchNextMessage.d.ts +3 -12
  122. package/dist/AMQP/fetchNextMessage.js +20 -111
  123. package/dist/AMQP/fetchNextMessage.js.map +1 -1
  124. package/dist/AMQP/queueConfigurator.d.ts +2 -3
  125. package/dist/AMQP/queueConfigurator.js +14 -71
  126. package/dist/AMQP/queueConfigurator.js.map +1 -1
  127. package/dist/DateTime/waitUntil.d.ts +4 -15
  128. package/dist/DateTime/waitUntil.js +17 -139
  129. package/dist/DateTime/waitUntil.js.map +1 -1
  130. package/dist/Events/AsyncEventEmitter.d.ts +2 -29
  131. package/dist/Events/AsyncEventEmitter.js +14 -118
  132. package/dist/Events/AsyncEventEmitter.js.map +1 -1
  133. package/dist/Events/eventsHelpers.d.ts +4 -3
  134. package/dist/Events/eventsHelpers.js +18 -21
  135. package/dist/Events/eventsHelpers.js.map +1 -1
  136. package/dist/Hash/checksum.d.ts +2 -3
  137. package/dist/Hash/checksum.js +16 -15
  138. package/dist/Hash/checksum.js.map +1 -1
  139. package/dist/Hash/checksumFile.d.ts +2 -2
  140. package/dist/Hash/checksumFile.js +4 -65
  141. package/dist/Hash/checksumFile.js.map +1 -1
  142. package/dist/Hash/generator.d.ts +4 -2
  143. package/dist/Hash/generator.js +18 -12
  144. package/dist/Hash/generator.js.map +1 -1
  145. package/dist/HttpStatus/checks/amqpStatusCheck.d.ts +1 -1
  146. package/dist/HttpStatus/statuses/amqpStatus.d.ts +1 -1
  147. package/dist/Metrics/MetricsClient.d.ts +2 -44
  148. package/dist/Metrics/MetricsClient.js +6 -86
  149. package/dist/Metrics/MetricsClient.js.map +1 -1
  150. package/dist/Metrics/metrics.d.ts +2 -82
  151. package/dist/Metrics/metrics.js +4 -238
  152. package/dist/Metrics/metrics.js.map +1 -1
  153. package/dist/Metrics/processSocketsMetrics.d.ts +4 -10
  154. package/dist/Metrics/processSocketsMetrics.js +17 -88
  155. package/dist/Metrics/processSocketsMetrics.js.map +1 -1
  156. package/dist/Service/dbConnections.d.ts +1 -1
  157. package/dist/Service/metrics/connections.js +7 -7
  158. package/dist/Service/metrics/connections.js.map +1 -1
  159. package/dist/ThirdParty/connection.d.ts +0 -11
  160. package/package.json +5 -9
  161. package/dist/AMQP/IAMQPPool.d.ts +0 -5
  162. package/dist/AMQP/IAMQPPool.js +0 -3
  163. package/dist/AMQP/IAMQPPool.js.map +0 -1
  164. package/dist/Events/genericGracefulExit.d.ts +0 -11
  165. package/dist/Events/genericGracefulExit.js +0 -90
  166. package/dist/Events/genericGracefulExit.js.map +0 -1
  167. package/dist/GenericPool/options.d.ts +0 -63
  168. package/dist/GenericPool/options.js +0 -3
  169. package/dist/GenericPool/options.js.map +0 -1
  170. package/dist/Metrics/deviceConsumerMetrics.d.ts +0 -6
  171. package/dist/Metrics/deviceConsumerMetrics.js +0 -59
  172. package/dist/Metrics/deviceConsumerMetrics.js.map +0 -1
  173. package/dist/Metrics/eventConsumerMetrics.d.ts +0 -19
  174. package/dist/Metrics/eventConsumerMetrics.js +0 -52
  175. package/dist/Metrics/eventConsumerMetrics.js.map +0 -1
  176. package/dist/Metrics/eventQueueMetrics.d.ts +0 -7
  177. package/dist/Metrics/eventQueueMetrics.js +0 -19
  178. package/dist/Metrics/eventQueueMetrics.js.map +0 -1
  179. package/dist/Pool/IBasePool.d.ts +0 -6
  180. package/dist/Pool/IBasePool.js +0 -3
  181. package/dist/Pool/IBasePool.js.map +0 -1
  182. package/dist/System/signalSender.d.ts +0 -1
  183. package/dist/System/signalSender.js +0 -7
  184. package/dist/System/signalSender.js.map +0 -1
@@ -1,15 +1,4 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
3
  if (k2 === undefined) k2 = k;
15
4
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -21,866 +10,18 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
21
10
  if (k2 === undefined) k2 = k;
22
11
  o[k2] = m[k];
23
12
  }));
24
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
- Object.defineProperty(o, "default", { enumerable: true, value: v });
26
- }) : function(o, v) {
27
- o["default"] = v;
28
- });
29
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
30
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
31
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
32
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
33
- return c > 3 && r && Object.defineProperty(target, key, r), r;
34
- };
35
- var __importStar = (this && this.__importStar) || function (mod) {
36
- if (mod && mod.__esModule) return mod;
37
- var result = {};
38
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
39
- __setModuleDefault(result, mod);
40
- return result;
41
- };
42
- var __metadata = (this && this.__metadata) || function (k, v) {
43
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
44
- };
45
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
46
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
47
- return new (P || (P = Promise))(function (resolve, reject) {
48
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
49
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
50
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
51
- step((generator = generator.apply(thisArg, _arguments || [])).next());
52
- });
53
- };
54
- var __generator = (this && this.__generator) || function (thisArg, body) {
55
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
56
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
57
- function verb(n) { return function (v) { return step([n, v]); }; }
58
- function step(op) {
59
- if (f) throw new TypeError("Generator is already executing.");
60
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
61
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
62
- if (y = 0, t) op = [op[0] & 2, t.value];
63
- switch (op[0]) {
64
- case 0: case 1: t = op; break;
65
- case 4: _.label++; return { value: op[1], done: false };
66
- case 5: _.label++; y = op[1]; op = [0]; continue;
67
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
68
- default:
69
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
70
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
71
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
72
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
73
- if (t[2]) _.ops.pop();
74
- _.trys.pop(); continue;
75
- }
76
- op = body.call(thisArg, _);
77
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
78
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
79
- }
80
- };
81
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
82
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
83
- if (ar || !(i in from)) {
84
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
85
- ar[i] = from[i];
86
- }
87
- }
88
- return to.concat(ar || Array.prototype.slice.call(from));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
89
15
  };
90
16
  var __importDefault = (this && this.__importDefault) || function (mod) {
91
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
92
18
  };
93
19
  Object.defineProperty(exports, "__esModule", { value: true });
94
- exports.DEFAULT_QUORUM_INITIAL_GROUP_SIZE = exports.REJECTED_QUEUE_PREFIX = void 0;
95
- var _ = __importStar(require("lodash"));
96
- var jsonHelper_1 = require("../JSON/jsonHelper");
97
- var debug_1 = __importDefault(require("debug"));
98
- var amqpErrors_1 = require("./amqpErrors");
99
- var wait_1 = __importDefault(require("../Timer/wait"));
100
- var lockedDecorator_1 = require("../Lock/lockedDecorator");
101
- var timeout_1 = require("../Timer/timeout");
102
- var errors_1 = require("./errors");
103
- var ResponseProvider_1 = require("./ResponseProvider");
104
- var deferred_1 = require("../Promise/deferred");
105
- var eventsHelpers_1 = require("../Events/eventsHelpers");
106
- var debug = (0, debug_1.default)('@signageos/lib:AMQP:ChannelProvider');
107
- var MAX_PENDING_TASKS = 100e3;
108
- var CHANNEL_IDLE_TIMEOUT_SECONDS = 20;
109
- var DEFAULT_PREFETCH_COUNT = 100;
110
- exports.REJECTED_QUEUE_PREFIX = '__rejected.';
111
- exports.DEFAULT_QUORUM_INITIAL_GROUP_SIZE = 3;
112
- var ChannelProvider = /** @class */ (function () {
113
- function ChannelProvider(amqpPool) {
114
- this.amqpPool = amqpPool;
115
- this.decodeMessageBuffer = function (encodedMessageBuffer) {
116
- return (encodedMessageBuffer === null || encodedMessageBuffer === void 0 ? void 0 : encodedMessageBuffer.toString()) ? JSON.parse(encodedMessageBuffer.toString(), jsonHelper_1.deserializeJSON) : null;
117
- };
118
- this.amqplibChannelMap = {};
119
- this.responseProviderMap = {};
120
- }
121
- ChannelProvider.prototype.getChannel = function (namespace_1) {
122
- return __awaiter(this, arguments, void 0, function (namespace, options) {
123
- var amqplibConnection, amqplibChannel, responseProvider, channel;
124
- var _this = this;
125
- if (options === void 0) { options = {}; }
126
- return __generator(this, function (_a) {
127
- switch (_a.label) {
128
- case 0: return [4 /*yield*/, this.getAmqplibConnection()];
129
- case 1:
130
- amqplibConnection = _a.sent();
131
- if (!options.confirmable) return [3 /*break*/, 3];
132
- return [4 /*yield*/, this.getAmqplibConfirmChannel(amqplibConnection, namespace)];
133
- case 2:
134
- amqplibChannel = _a.sent();
135
- return [3 /*break*/, 5];
136
- case 3: return [4 /*yield*/, this.getAmqplibChannel(amqplibConnection, namespace)];
137
- case 4:
138
- amqplibChannel = _a.sent();
139
- _a.label = 5;
140
- case 5:
141
- responseProvider = this.getResponseProvider(amqplibConnection, namespace);
142
- channel = {
143
- assertExchange: function (exchangeName, type, exchangeOptions) { return __awaiter(_this, void 0, void 0, function () {
144
- return __generator(this, function (_a) {
145
- switch (_a.label) {
146
- case 0: return [4 /*yield*/, amqplibChannel.assertExchange(exchangeName, type, exchangeOptions)];
147
- case 1:
148
- _a.sent();
149
- return [2 /*return*/];
150
- }
151
- });
152
- }); },
153
- send: function (message_1) {
154
- var args_1 = [];
155
- for (var _i = 1; _i < arguments.length; _i++) {
156
- args_1[_i - 1] = arguments[_i];
157
- }
158
- return __awaiter(_this, __spreadArray([message_1], args_1, true), void 0, function (message, messageOptions, headers, exchangeName, routingKey) {
159
- var encodedMessageBuffer, amqplibSendOptions;
160
- if (messageOptions === void 0) { messageOptions = {}; }
161
- if (headers === void 0) { headers = {}; }
162
- if (exchangeName === void 0) { exchangeName = ''; }
163
- return __generator(this, function (_a) {
164
- switch (_a.label) {
165
- case 0:
166
- encodedMessageBuffer = this.encodeMessageIntoBuffer(message);
167
- amqplibSendOptions = this.createAmqplibSendOptions(options, messageOptions, headers);
168
- return [4 /*yield*/, this.publish(amqplibChannel, exchangeName, routingKey, encodedMessageBuffer, amqplibSendOptions, options)];
169
- case 1:
170
- _a.sent();
171
- return [2 /*return*/];
172
- }
173
- });
174
- });
175
- },
176
- sendBatch: function (messages_1) {
177
- var args_1 = [];
178
- for (var _i = 1; _i < arguments.length; _i++) {
179
- args_1[_i - 1] = arguments[_i];
180
- }
181
- return __awaiter(_this, __spreadArray([messages_1], args_1, true), void 0, function (messages, messageOptions, headers, getExchangeName, getRoutingKey, onMessagePublished, batchSize) {
182
- var outStanding, _a, messages_2, message, encodedMessageBuffer, amqplibSendOptions, exchangeName, routingKey;
183
- if (messageOptions === void 0) { messageOptions = {}; }
184
- if (headers === void 0) { headers = {}; }
185
- if (batchSize === void 0) { batchSize = 100; }
186
- return __generator(this, function (_b) {
187
- switch (_b.label) {
188
- case 0:
189
- outStanding = 0;
190
- _a = 0, messages_2 = messages;
191
- _b.label = 1;
192
- case 1:
193
- if (!(_a < messages_2.length)) return [3 /*break*/, 5];
194
- message = messages_2[_a];
195
- encodedMessageBuffer = this.encodeMessageIntoBuffer(message);
196
- amqplibSendOptions = this.createAmqplibSendOptions(options, messageOptions, headers);
197
- exchangeName = getExchangeName(message);
198
- routingKey = getRoutingKey(message);
199
- return [4 /*yield*/, this.publish(amqplibChannel, exchangeName, routingKey, encodedMessageBuffer, amqplibSendOptions, __assign(__assign({}, options), { confirmable: false }))];
200
- case 2:
201
- _b.sent();
202
- onMessagePublished(message);
203
- outStanding++;
204
- if (!(outStanding === batchSize)) return [3 /*break*/, 4];
205
- /**
206
- * Consider adding simple in memory lock to prevent
207
- * https://gitlab.com/signageos/lib/lib/-/merge_requests/541#note_2489625173
208
- */
209
- return [4 /*yield*/, amqplibChannel.waitForConfirms()];
210
- case 3:
211
- /**
212
- * Consider adding simple in memory lock to prevent
213
- * https://gitlab.com/signageos/lib/lib/-/merge_requests/541#note_2489625173
214
- */
215
- _b.sent();
216
- outStanding = 0;
217
- _b.label = 4;
218
- case 4:
219
- _a++;
220
- return [3 /*break*/, 1];
221
- case 5:
222
- if (!(outStanding > 0)) return [3 /*break*/, 7];
223
- return [4 /*yield*/, amqplibChannel.waitForConfirms()];
224
- case 6:
225
- _b.sent();
226
- _b.label = 7;
227
- case 7: return [2 /*return*/];
228
- }
229
- });
230
- });
231
- },
232
- sendExpectingResponse: function (message_1) {
233
- var args_1 = [];
234
- for (var _i = 1; _i < arguments.length; _i++) {
235
- args_1[_i - 1] = arguments[_i];
236
- }
237
- return __awaiter(_this, __spreadArray([message_1], args_1, true), void 0, function (message, messageOptions, headers, exchangeName, routingKey, responseTimeout) {
238
- var encodedMessageBuffer, response, amqplibSendOptions, responsePromises, timeoutPromise, error_1;
239
- if (messageOptions === void 0) { messageOptions = {}; }
240
- if (headers === void 0) { headers = {}; }
241
- if (exchangeName === void 0) { exchangeName = ''; }
242
- return __generator(this, function (_a) {
243
- switch (_a.label) {
244
- case 0:
245
- encodedMessageBuffer = this.encodeMessageIntoBuffer(message);
246
- _a.label = 1;
247
- case 1:
248
- _a.trys.push([1, 5, , 6]);
249
- return [4 /*yield*/, responseProvider.prepareResponse()];
250
- case 2:
251
- response = _a.sent();
252
- amqplibSendOptions = __assign(__assign({}, this.createAmqplibSendOptions(options, messageOptions, headers)), { replyTo: response.queueName, correlationId: response.correlationId });
253
- return [4 /*yield*/, this.publish(amqplibChannel, exchangeName, routingKey, encodedMessageBuffer, amqplibSendOptions, options)];
254
- case 3:
255
- _a.sent();
256
- responsePromises = [response.promise];
257
- if (typeof responseTimeout !== 'undefined') {
258
- timeoutPromise = (0, timeout_1.rejectAfterTimeout)(responseTimeout);
259
- responsePromises.push(timeoutPromise);
260
- }
261
- return [4 /*yield*/, Promise.race(responsePromises)];
262
- case 4: return [2 /*return*/, _a.sent()];
263
- case 5:
264
- error_1 = _a.sent();
265
- if (error_1 instanceof timeout_1.TimeoutError) {
266
- throw new errors_1.ResponseTimeoutError();
267
- }
268
- else {
269
- throw error_1;
270
- }
271
- return [3 /*break*/, 6];
272
- case 6: return [2 /*return*/];
273
- }
274
- });
275
- });
276
- },
277
- consumeSimple: function (queueName_1, bindings_1, onMessage_1) {
278
- var args_1 = [];
279
- for (var _i = 3; _i < arguments.length; _i++) {
280
- args_1[_i - 3] = arguments[_i];
281
- }
282
- return __awaiter(_this, __spreadArray([queueName_1, bindings_1, onMessage_1], args_1, true), void 0, function (queueName, bindings, onMessage, consumeOptions, onEnded) {
283
- var _this = this;
284
- if (consumeOptions === void 0) { consumeOptions = {}; }
285
- return __generator(this, function (_a) {
286
- switch (_a.label) {
287
- case 0: return [4 /*yield*/, channel.consume(queueName, bindings, function (message, headers, ack, nack, fields) { return __awaiter(_this, void 0, void 0, function () {
288
- var response, error_2, requeue;
289
- return __generator(this, function (_a) {
290
- switch (_a.label) {
291
- case 0:
292
- _a.trys.push([0, 2, , 3]);
293
- return [4 /*yield*/, onMessage(message, headers)];
294
- case 1:
295
- response = _a.sent();
296
- ack();
297
- return [2 /*return*/, response];
298
- case 2:
299
- error_2 = _a.sent();
300
- debug('Error in consumeSimple callback', { queueName: queueName, error: error_2 });
301
- requeue = !this.shouldDeadLetter(consumeOptions, fields.redelivered);
302
- nack({ requeue: requeue });
303
- if (!consumeOptions.suppressFirstError || fields.redelivered) {
304
- throw error_2;
305
- }
306
- return [3 /*break*/, 3];
307
- case 3: return [2 /*return*/];
308
- }
309
- });
310
- }); }, consumeOptions, onEnded)];
311
- case 1: return [2 /*return*/, _a.sent()];
312
- }
313
- });
314
- });
315
- },
316
- assertRejectableQueue: function (queueName_1) {
317
- var args_1 = [];
318
- for (var _i = 1; _i < arguments.length; _i++) {
319
- args_1[_i - 1] = arguments[_i];
320
- }
321
- return __awaiter(_this, __spreadArray([queueName_1], args_1, true), void 0, function (queueName, consumeOptions) {
322
- if (consumeOptions === void 0) { consumeOptions = {}; }
323
- return __generator(this, function (_a) {
324
- switch (_a.label) {
325
- case 0: return [4 /*yield*/, this.assertRejectableQueue(amqplibChannel, queueName, options, consumeOptions)];
326
- case 1: return [2 /*return*/, _a.sent()];
327
- }
328
- });
329
- });
330
- },
331
- consume: function (queueName_1, bindings_1, onMessage_1) {
332
- var args_1 = [];
333
- for (var _i = 3; _i < arguments.length; _i++) {
334
- args_1[_i - 3] = arguments[_i];
335
- }
336
- return __awaiter(_this, __spreadArray([queueName_1, bindings_1, onMessage_1], args_1, true), void 0, function (queueName, bindings, onMessage, consumeOptions, onEnded) {
337
- var onEndedCallback, amqplibConsumeOptions, uniqueConsumerTagName, consumerTag_1, error_3;
338
- var _this = this;
339
- if (consumeOptions === void 0) { consumeOptions = {}; }
340
- return __generator(this, function (_a) {
341
- switch (_a.label) {
342
- case 0:
343
- onEndedCallback = function () {
344
- if (onEnded) {
345
- onEnded();
346
- onEnded = undefined;
347
- }
348
- };
349
- return [4 /*yield*/, amqplibChannel.prefetch(options.prefetchCount || DEFAULT_PREFETCH_COUNT)];
350
- case 1:
351
- _a.sent();
352
- return [4 /*yield*/, this.assertRejectableQueue(amqplibChannel, queueName, options, consumeOptions)];
353
- case 2:
354
- _a.sent();
355
- amqplibConsumeOptions = {};
356
- if (consumeOptions.exclusiveConsumption) {
357
- uniqueConsumerTagName = "amqp.ctag-".concat(queueName);
358
- amqplibConsumeOptions.consumerTag = uniqueConsumerTagName; // This will prevent have more than one consumption on queue
359
- }
360
- if (consumeOptions.noAck) {
361
- amqplibConsumeOptions.noAck = true;
362
- }
363
- _a.label = 3;
364
- case 3:
365
- _a.trys.push([3, 6, , 7]);
366
- return [4 /*yield*/, amqplibChannel.consume(queueName, function (amqplibMessage) { return __awaiter(_this, void 0, void 0, function () {
367
- var sendResponse, message, response;
368
- return __generator(this, function (_a) {
369
- switch (_a.label) {
370
- case 0:
371
- if (amqplibMessage === null) {
372
- onEndedCallback(); // consumption canceled unexpectedly
373
- amqplibChannel.removeListener('close', onEndedCallback);
374
- return [2 /*return*/];
375
- }
376
- if (!(consumeOptions.deadLetterIfRedeliveredAndErred && consumeOptions.redeliverDelayMs && amqplibMessage.fields.redelivered)) return [3 /*break*/, 2];
377
- return [4 /*yield*/, (0, wait_1.default)(consumeOptions.redeliverDelayMs)];
378
- case 1:
379
- _a.sent();
380
- _a.label = 2;
381
- case 2:
382
- sendResponse = true;
383
- message = this.decodeMessageBuffer(amqplibMessage.content);
384
- return [4 /*yield*/, onMessage(message, amqplibMessage.properties.headers, function () {
385
- if (!consumeOptions.noAck) {
386
- amqplibChannel.ack(amqplibMessage);
387
- }
388
- }, function (nackOptions) {
389
- if (!consumeOptions.noAck) {
390
- amqplibChannel.nack(amqplibMessage, undefined, nackOptions ? nackOptions.requeue : undefined);
391
- }
392
- sendResponse = false;
393
- }, amqplibMessage.fields)];
394
- case 3:
395
- response = _a.sent();
396
- if (sendResponse && consumeOptions.respond && amqplibMessage.properties.replyTo) {
397
- amqplibChannel.sendToQueue(amqplibMessage.properties.replyTo, this.encodeMessageIntoBuffer(response), {
398
- correlationId: amqplibMessage.properties.correlationId,
399
- });
400
- }
401
- return [2 /*return*/];
402
- }
403
- });
404
- }); }, amqplibConsumeOptions)];
405
- case 4:
406
- consumerTag_1 = (_a.sent()).consumerTag;
407
- return [4 /*yield*/, Promise.all(bindings.map(function (binding) {
408
- return _this.bindQueue(amqplibChannel, queueName, binding.exchangeName, binding.routingKey || '', binding.routingHeaders);
409
- }))];
410
- case 5:
411
- _a.sent();
412
- amqplibChannel.once('close', onEndedCallback);
413
- return [2 /*return*/, function () { return __awaiter(_this, void 0, void 0, function () {
414
- var message;
415
- var _this = this;
416
- return __generator(this, function (_a) {
417
- switch (_a.label) {
418
- case 0:
419
- amqplibChannel.removeListener('close', onEndedCallback);
420
- return [4 /*yield*/, Promise.all(bindings.map(function (binding) { return __awaiter(_this, void 0, void 0, function () {
421
- return __generator(this, function (_a) {
422
- switch (_a.label) {
423
- case 0:
424
- if (!!binding.persistent) return [3 /*break*/, 2];
425
- return [4 /*yield*/, this.unbindQueue(amqplibChannel, queueName, binding.exchangeName, binding.routingKey || '', binding.routingHeaders)];
426
- case 1:
427
- _a.sent();
428
- _a.label = 2;
429
- case 2: return [2 /*return*/];
430
- }
431
- });
432
- }); }))];
433
- case 1:
434
- _a.sent();
435
- if (!('autoDeleteDeadLetter' in consumeOptions && consumeOptions.autoDeleteDeadLetter)) return [3 /*break*/, 6];
436
- message = void 0;
437
- _a.label = 2;
438
- case 2: return [4 /*yield*/, amqplibChannel.get(queueName)];
439
- case 3:
440
- if (!(message = _a.sent())) return [3 /*break*/, 4];
441
- // requeue=false will dead-letter message even if whole queue is deleted later
442
- amqplibChannel.nack(message, undefined, false);
443
- return [3 /*break*/, 2];
444
- case 4: return [4 /*yield*/, amqplibChannel.deleteQueue(queueName)];
445
- case 5:
446
- _a.sent();
447
- _a.label = 6;
448
- case 6:
449
- // cancel has to be last to prevent conflicting with other consumer
450
- return [4 /*yield*/, amqplibChannel.cancel(consumerTag_1)];
451
- case 7:
452
- // cancel has to be last to prevent conflicting with other consumer
453
- _a.sent();
454
- return [2 /*return*/];
455
- }
456
- });
457
- }); }];
458
- case 6:
459
- error_3 = _a.sent();
460
- throw new amqpErrors_1.ConsumptionError("Could not start consumption on queue", queueName, error_3);
461
- case 7: return [2 /*return*/];
462
- }
463
- });
464
- });
465
- },
466
- unbind: function (queueName, binding) { return __awaiter(_this, void 0, void 0, function () {
467
- return __generator(this, function (_a) {
468
- switch (_a.label) {
469
- case 0: return [4 /*yield*/, this.unbindQueue(amqplibChannel, queueName, binding.exchangeName, binding.routingKey || '', binding.routingHeaders)];
470
- case 1:
471
- _a.sent();
472
- return [2 /*return*/];
473
- }
474
- });
475
- }); },
476
- get: function (queueName) { return __awaiter(_this, void 0, void 0, function () {
477
- var amqplibMessage, message;
478
- return __generator(this, function (_a) {
479
- switch (_a.label) {
480
- case 0: return [4 /*yield*/, amqplibChannel.get(queueName)];
481
- case 1:
482
- amqplibMessage = (_a.sent());
483
- if (amqplibMessage) {
484
- message = this.decodeMessageBuffer(amqplibMessage.content);
485
- return [2 /*return*/, {
486
- headers: amqplibMessage.properties.headers,
487
- message: message,
488
- fields: amqplibMessage.fields,
489
- ack: function () { return amqplibChannel.ack(amqplibMessage); },
490
- nack: function (nackOptions) {
491
- return amqplibChannel.nack(amqplibMessage, undefined, nackOptions ? nackOptions.requeue : undefined);
492
- },
493
- }];
494
- }
495
- else {
496
- return [2 /*return*/, null];
497
- }
498
- return [2 /*return*/];
499
- }
500
- });
501
- }); },
502
- purge: function (queueName) { return __awaiter(_this, void 0, void 0, function () {
503
- return __generator(this, function (_a) {
504
- switch (_a.label) {
505
- case 0: return [4 /*yield*/, amqplibChannel.purgeQueue(queueName)];
506
- case 1:
507
- _a.sent();
508
- return [2 /*return*/];
509
- }
510
- });
511
- }); },
512
- delete: function (queueName) { return __awaiter(_this, void 0, void 0, function () {
513
- return __generator(this, function (_a) {
514
- switch (_a.label) {
515
- case 0: return [4 /*yield*/, amqplibChannel.deleteQueue(queueName)];
516
- case 1:
517
- _a.sent();
518
- return [2 /*return*/];
519
- }
520
- });
521
- }); },
522
- close: function () { return __awaiter(_this, void 0, void 0, function () {
523
- return __generator(this, function (_a) {
524
- switch (_a.label) {
525
- case 0:
526
- if (!options.confirmable) return [3 /*break*/, 2];
527
- return [4 /*yield*/, this.closeAmqplibConfirmChannel(namespace)];
528
- case 1:
529
- _a.sent();
530
- return [3 /*break*/, 4];
531
- case 2: return [4 /*yield*/, this.closeAmqplibChannel(namespace)];
532
- case 3:
533
- _a.sent();
534
- _a.label = 4;
535
- case 4: return [2 /*return*/];
536
- }
537
- });
538
- }); },
539
- };
540
- return [2 /*return*/, channel];
541
- }
542
- });
543
- });
544
- };
545
- ChannelProvider.prototype.shouldDeadLetter = function (consumeOptions, redelivered) {
546
- // TODO remove deadLetterIfRedeliveredAndErred option in future when no more used
547
- if (consumeOptions.deadLetterIfRedeliveredAndErred && redelivered) {
548
- return true;
549
- }
550
- if (consumeOptions.deadLetterIfErred) {
551
- return true;
552
- }
553
- return false;
554
- };
555
- ChannelProvider.prototype.close = function () {
556
- return __awaiter(this, void 0, void 0, function () {
557
- var amqplibConnection;
558
- return __generator(this, function (_a) {
559
- switch (_a.label) {
560
- case 0: return [4 /*yield*/, this.getAmqplibConnection()];
561
- case 1:
562
- amqplibConnection = _a.sent();
563
- return [4 /*yield*/, this.amqpPool.destroy(amqplibConnection)];
564
- case 2:
565
- _a.sent();
566
- return [2 /*return*/];
567
- }
568
- });
569
- });
570
- };
571
- ChannelProvider.prototype.encodeMessageIntoBuffer = function (message) {
572
- return Buffer.from(typeof message !== 'undefined' ? JSON.stringify(message) : '');
573
- };
574
- ChannelProvider.prototype.getAmqplibConnection = function () {
575
- return __awaiter(this, void 0, void 0, function () {
576
- var amqplibConnection;
577
- var _this = this;
578
- return __generator(this, function (_a) {
579
- switch (_a.label) {
580
- case 0:
581
- if (!!this.amqplibConnection) return [3 /*break*/, 2];
582
- debug('Create connection');
583
- return [4 /*yield*/, this.amqpPool.acquire()];
584
- case 1:
585
- amqplibConnection = _a.sent();
586
- debug('Created connection');
587
- amqplibConnection.on('close', function () {
588
- debug('Closed connection');
589
- _this.amqplibConnection = undefined;
590
- _this.amqplibChannelMap = {};
591
- });
592
- this.amqplibConnection = amqplibConnection;
593
- _a.label = 2;
594
- case 2: return [2 /*return*/, this.amqplibConnection];
595
- }
596
- });
597
- });
598
- };
599
- ChannelProvider.prototype.createAmqplibSendOptions = function (options, messageOptions, headers) {
600
- return {
601
- persistent: typeof messageOptions.persistent !== 'undefined' ? messageOptions.persistent : options.persistent,
602
- priority: messageOptions.priority,
603
- expiration: messageOptions.expiration,
604
- headers: headers,
605
- };
606
- };
607
- ChannelProvider.prototype.publish = function (amqplibChannel, exchangeName, routingKey, encodedMessageBuffer, sendOptions, options) {
608
- return __awaiter(this, void 0, void 0, function () {
609
- var amqplibConfirmableChannel, deferred_2, bufferIsReady, bufferIsReady;
610
- return __generator(this, function (_a) {
611
- switch (_a.label) {
612
- case 0:
613
- if (!options.confirmable) return [3 /*break*/, 3];
614
- amqplibConfirmableChannel = amqplibChannel;
615
- deferred_2 = (0, deferred_1.createDeferred)(true);
616
- bufferIsReady = amqplibConfirmableChannel.publish(exchangeName, routingKey, encodedMessageBuffer, sendOptions, function (error) {
617
- if (error) {
618
- deferred_2.reject(error);
619
- }
620
- else {
621
- deferred_2.resolve();
622
- }
623
- });
624
- return [4 /*yield*/, this.waitUntilBufferDrainsWhenBufferIsFull(bufferIsReady, amqplibConfirmableChannel)];
625
- case 1:
626
- _a.sent();
627
- // Wait for confirmation regardless of buffer state
628
- return [4 /*yield*/, deferred_2.promise];
629
- case 2:
630
- // Wait for confirmation regardless of buffer state
631
- _a.sent();
632
- return [3 /*break*/, 5];
633
- case 3:
634
- bufferIsReady = amqplibChannel.publish(exchangeName, routingKey, encodedMessageBuffer, sendOptions);
635
- return [4 /*yield*/, this.waitUntilBufferDrainsWhenBufferIsFull(bufferIsReady, amqplibChannel)];
636
- case 4:
637
- _a.sent();
638
- _a.label = 5;
639
- case 5: return [2 /*return*/];
640
- }
641
- });
642
- });
643
- };
644
- /**
645
- * When publish returns false, the message has been sent but the write buffer is full.
646
- * We need to wait for the drain event before sending more messages to avoid overwhelming the buffer.
647
- * The current message has already been queued, so we don't retry it.
648
- */
649
- ChannelProvider.prototype.waitUntilBufferDrainsWhenBufferIsFull = function (bufferIsReady, amqplibChannel) {
650
- return __awaiter(this, void 0, void 0, function () {
651
- return __generator(this, function (_a) {
652
- switch (_a.label) {
653
- case 0:
654
- if (!!bufferIsReady) return [3 /*break*/, 2];
655
- return [4 /*yield*/, (0, eventsHelpers_1.waitForSuccessEventsOrFailEvent)(amqplibChannel, ['drain'], 'error')];
656
- case 1:
657
- _a.sent();
658
- _a.label = 2;
659
- case 2: return [2 /*return*/];
660
- }
661
- });
662
- });
663
- };
664
- ChannelProvider.prototype.getAmqplibChannel = function (amqplibConnection, identifier) {
665
- return __awaiter(this, void 0, void 0, function () {
666
- var _this = this;
667
- return __generator(this, function (_a) {
668
- switch (_a.label) {
669
- case 0: return [4 /*yield*/, this.getOrCreateAmqplibChannel('not_confirm-' + identifier, function () { return __awaiter(_this, void 0, void 0, function () {
670
- return __generator(this, function (_a) {
671
- switch (_a.label) {
672
- case 0: return [4 /*yield*/, amqplibConnection.createChannel()];
673
- case 1: return [2 /*return*/, _a.sent()];
674
- }
675
- });
676
- }); })];
677
- case 1: return [2 /*return*/, _a.sent()];
678
- }
679
- });
680
- });
681
- };
682
- ChannelProvider.prototype.getAmqplibConfirmChannel = function (amqplibConnection, identifier) {
683
- return __awaiter(this, void 0, void 0, function () {
684
- var _this = this;
685
- return __generator(this, function (_a) {
686
- switch (_a.label) {
687
- case 0: return [4 /*yield*/, this.getOrCreateAmqplibChannel('confirm-' + identifier, function () { return __awaiter(_this, void 0, void 0, function () {
688
- return __generator(this, function (_a) {
689
- switch (_a.label) {
690
- case 0: return [4 /*yield*/, amqplibConnection.createConfirmChannel()];
691
- case 1: return [2 /*return*/, _a.sent()];
692
- }
693
- });
694
- }); })];
695
- case 1: return [2 /*return*/, _a.sent()];
696
- }
697
- });
698
- });
699
- };
700
- ChannelProvider.prototype.closeAmqplibChannel = function (identifier) {
701
- return __awaiter(this, void 0, void 0, function () {
702
- return __generator(this, function (_a) {
703
- switch (_a.label) {
704
- case 0: return [4 /*yield*/, this.releaseAmqplibChannel('not_confirm-' + identifier)];
705
- case 1:
706
- _a.sent();
707
- return [2 /*return*/];
708
- }
709
- });
710
- });
711
- };
712
- ChannelProvider.prototype.closeAmqplibConfirmChannel = function (identifier) {
713
- return __awaiter(this, void 0, void 0, function () {
714
- return __generator(this, function (_a) {
715
- switch (_a.label) {
716
- case 0: return [4 /*yield*/, this.releaseAmqplibChannel('confirm-' + identifier)];
717
- case 1:
718
- _a.sent();
719
- return [2 /*return*/];
720
- }
721
- });
722
- });
723
- };
724
- ChannelProvider.prototype.getOrCreateAmqplibChannel = function (identifier, createChannel) {
725
- return __awaiter(this, void 0, void 0, function () {
726
- var amqplibChannel_1;
727
- var _this = this;
728
- return __generator(this, function (_a) {
729
- switch (_a.label) {
730
- case 0:
731
- if (!(this.amqplibChannelMap[identifier] === undefined)) return [3 /*break*/, 2];
732
- debug('Create channel %s', identifier);
733
- return [4 /*yield*/, createChannel()];
734
- case 1:
735
- amqplibChannel_1 = _a.sent();
736
- amqplibChannel_1.setMaxListeners(100);
737
- debug('Created channel %s', identifier);
738
- amqplibChannel_1.once('error', function (error) {
739
- console.error("Channel error, closing immediately ".concat(identifier), error);
740
- // When channel has error, it's automatically closed
741
- delete _this.amqplibChannelMap[identifier];
742
- amqplibChannel_1.close().catch(function (closeError) { return console.warn("Could not close erred channel", closeError); });
743
- });
744
- this.amqplibChannelMap[identifier] = {
745
- channel: amqplibChannel_1,
746
- clientCount: 0,
747
- closeAfterAWhile: _.debounce(function () { return _this.tryCloseAmqplibChannelWhenUnused(identifier); }, CHANNEL_IDLE_TIMEOUT_SECONDS * 1000),
748
- };
749
- _a.label = 2;
750
- case 2:
751
- this.amqplibChannelMap[identifier].clientCount++;
752
- this.amqplibChannelMap[identifier].closeAfterAWhile.cancel();
753
- return [2 /*return*/, this.amqplibChannelMap[identifier].channel];
754
- }
755
- });
756
- });
757
- };
758
- ChannelProvider.prototype.releaseAmqplibChannel = function (identifier) {
759
- return __awaiter(this, void 0, void 0, function () {
760
- return __generator(this, function (_a) {
761
- if (typeof this.amqplibChannelMap[identifier] !== 'undefined') {
762
- this.amqplibChannelMap[identifier].clientCount--;
763
- this.amqplibChannelMap[identifier].closeAfterAWhile();
764
- }
765
- else {
766
- console.log('Unexpected close channel to non-existent channel ' + identifier);
767
- }
768
- return [2 /*return*/];
769
- });
770
- });
771
- };
772
- ChannelProvider.prototype.tryCloseAmqplibChannelWhenUnused = function (identifier) {
773
- if (typeof this.amqplibChannelMap[identifier] !== 'undefined') {
774
- if (this.amqplibChannelMap[identifier].clientCount <= 0) {
775
- var channel = this.amqplibChannelMap[identifier].channel;
776
- delete this.amqplibChannelMap[identifier];
777
- channel.close().catch(function (error) { return console.warn("Could not closed idle channel", error); });
778
- }
779
- }
780
- if (this.responseProviderMap[identifier]) {
781
- var responseProvider = this.responseProviderMap[identifier];
782
- delete this.responseProviderMap[identifier];
783
- responseProvider.close().catch(function (error) { return console.warn("Could not close idle responseProvider", error); });
784
- }
785
- };
786
- ChannelProvider.prototype.getResponseProvider = function (amqplibConnection, identifier) {
787
- if (!this.responseProviderMap[identifier]) {
788
- var responseProvider = new ResponseProvider_1.ResponseProvider(amqplibConnection, this.decodeMessageBuffer);
789
- this.responseProviderMap[identifier] = responseProvider;
790
- }
791
- return this.responseProviderMap[identifier];
792
- };
793
- ChannelProvider.prototype.assertRejectableQueue = function (amqplibChannel, queueName, queueOptions, consumeOptions) {
794
- return __awaiter(this, void 0, void 0, function () {
795
- var extraArguments;
796
- return __generator(this, function (_a) {
797
- switch (_a.label) {
798
- case 0:
799
- extraArguments = {};
800
- if (consumeOptions.queueExpiresMs) {
801
- // x-expires is only feature of RabbitMQ, not standard amqp
802
- extraArguments['x-expires'] = consumeOptions.queueExpiresMs;
803
- }
804
- if (consumeOptions.messageExpiresMs) {
805
- // x-message-ttl is only feature of RabbitMQ, not standard amqp
806
- extraArguments['x-message-ttl'] = consumeOptions.messageExpiresMs;
807
- }
808
- if (consumeOptions.singleActiveConsumer) {
809
- // x-single-active-consumer is only feature of RabbitMQ, not standard amqp
810
- extraArguments['x-single-active-consumer'] = consumeOptions.singleActiveConsumer;
811
- }
812
- if (consumeOptions.queueType === 'quorum') {
813
- // default is classic
814
- extraArguments['x-queue-type'] = 'quorum';
815
- extraArguments['x-quorum-initial-group-size'] = exports.DEFAULT_QUORUM_INITIAL_GROUP_SIZE;
816
- }
817
- if (consumeOptions.overflow) {
818
- // x-overflow is only feature of RabbitMQ, not standard amqp
819
- extraArguments['x-overflow'] = consumeOptions.overflow;
820
- }
821
- return [4 /*yield*/, amqplibChannel.assertQueue(queueName, {
822
- deadLetterExchange: typeof consumeOptions.deadLetterExchange !== 'undefined' ? consumeOptions.deadLetterExchange : '',
823
- deadLetterRoutingKey: typeof consumeOptions.deadLetterRoutingKey !== 'undefined'
824
- ? consumeOptions.deadLetterRoutingKey
825
- : exports.REJECTED_QUEUE_PREFIX + queueName,
826
- maxPriority: queueOptions.maxPriority,
827
- autoDelete: typeof consumeOptions.autoDelete !== 'undefined' ? consumeOptions.autoDelete : false,
828
- exclusive: typeof consumeOptions.exclusive !== 'undefined' ? consumeOptions.exclusive : false,
829
- durable: typeof consumeOptions.durable !== 'undefined' ? consumeOptions.durable : true,
830
- arguments: extraArguments,
831
- maxLength: typeof consumeOptions.maxLength !== 'undefined' ? consumeOptions.maxLength : undefined,
832
- })];
833
- case 1: return [2 /*return*/, _a.sent()];
834
- }
835
- });
836
- });
837
- };
838
- ChannelProvider.prototype.bindQueue = function (amqplibChannel, queueName, exchangeName, routingKey, routingHeaders) {
839
- return __awaiter(this, void 0, void 0, function () {
840
- return __generator(this, function (_a) {
841
- switch (_a.label) {
842
- case 0:
843
- if (!(exchangeName !== '')) return [3 /*break*/, 2];
844
- return [4 /*yield*/, amqplibChannel.bindQueue(queueName, exchangeName, routingKey, routingHeaders)];
845
- case 1:
846
- _a.sent();
847
- _a.label = 2;
848
- case 2: return [2 /*return*/];
849
- }
850
- });
851
- });
852
- };
853
- ChannelProvider.prototype.unbindQueue = function (amqplibChannel, queueName, exchangeName, routingKey, routingHeaders) {
854
- return __awaiter(this, void 0, void 0, function () {
855
- return __generator(this, function (_a) {
856
- switch (_a.label) {
857
- case 0:
858
- if (!(exchangeName !== '')) return [3 /*break*/, 2];
859
- return [4 /*yield*/, amqplibChannel.unbindQueue(queueName, exchangeName, routingKey, routingHeaders)];
860
- case 1:
861
- _a.sent();
862
- _a.label = 2;
863
- case 2: return [2 /*return*/];
864
- }
865
- });
866
- });
867
- };
868
- __decorate([
869
- (0, lockedDecorator_1.locked)("AMQP.ChannelProvider.getAmqplibConnection", { scope: 'instance', maxPending: MAX_PENDING_TASKS }),
870
- __metadata("design:type", Function),
871
- __metadata("design:paramtypes", []),
872
- __metadata("design:returntype", Promise)
873
- ], ChannelProvider.prototype, "getAmqplibConnection", null);
874
- __decorate([
875
- (0, lockedDecorator_1.locked)(function (identifier) { return "AMQP.ChannelProvider.getOrCreateAmqplibChannel.".concat(identifier); }, {
876
- scope: 'instance',
877
- maxPending: MAX_PENDING_TASKS,
878
- }),
879
- __metadata("design:type", Function),
880
- __metadata("design:paramtypes", [String, Function]),
881
- __metadata("design:returntype", Promise)
882
- ], ChannelProvider.prototype, "getOrCreateAmqplibChannel", null);
883
- return ChannelProvider;
884
- }());
885
- exports.default = ChannelProvider;
20
+ exports.default = void 0;
21
+ /**
22
+ * @deprecated Use `@signageos/amqp` instead.
23
+ */
24
+ __exportStar(require("@signageos/amqp/dist/ChannelProvider"), exports);
25
+ var ChannelProvider_1 = require("@signageos/amqp/dist/ChannelProvider");
26
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(ChannelProvider_1).default; } });
886
27
  //# sourceMappingURL=ChannelProvider.js.map