@kohost/api-client 3.0.0-beta.47 → 3.0.0-beta.50

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 (156) hide show
  1. package/dist/cjs/AMQPClient/index.js +290 -0
  2. package/dist/cjs/Commands/CheckInReservationCommand.js +19 -0
  3. package/dist/cjs/Commands/Command.js +34 -0
  4. package/dist/cjs/Commands/CreateImageUploadEndpointCommand.js +17 -0
  5. package/dist/cjs/Commands/CreateShortLinkCommand.js +20 -0
  6. package/dist/cjs/Commands/DiscoverReservationRoomTypeUpsellOptionsCommand.js +20 -0
  7. package/dist/cjs/Commands/DiscoverReservationsCommand.js +20 -0
  8. package/dist/cjs/Commands/DiscoverRoomTypesCommand.js +19 -0
  9. package/dist/cjs/Commands/DiscoverRoomsCommand.js +35 -0
  10. package/dist/cjs/Commands/DiscoverUsersCommand.js +19 -0
  11. package/dist/cjs/Commands/GetMobileKeyCommand.js +24 -0
  12. package/dist/cjs/Commands/GetProductsCommand.js +17 -0
  13. package/dist/cjs/Commands/OCRDocumentCommand.js +15 -0
  14. package/dist/cjs/Commands/SellProductsCommand.js +17 -0
  15. package/dist/cjs/Commands/SendEmailCommand.js +24 -0
  16. package/dist/cjs/Commands/SendSMSCommand.js +21 -0
  17. package/dist/cjs/Commands/SetAlarmCommand.js +17 -0
  18. package/dist/cjs/Commands/SetCourtesyCommand.js +17 -0
  19. package/dist/cjs/Commands/SetDimmerCommand.js +17 -0
  20. package/dist/cjs/Commands/SetLockCommand.js +17 -0
  21. package/dist/cjs/Commands/SetMediaCommand.js +17 -0
  22. package/dist/cjs/Commands/SetSceneCommand.js +17 -0
  23. package/dist/cjs/Commands/SetSwitchCommand.js +17 -0
  24. package/dist/cjs/Commands/SetThermostatCommand.js +17 -0
  25. package/dist/cjs/Commands/SetWindowCoveringCommand.js +17 -0
  26. package/dist/cjs/Commands/UpdateReservationCommand.js +19 -0
  27. package/dist/cjs/Commands/UpdateUserCommand.js +41 -0
  28. package/dist/cjs/Commands/UploadImageCommand.js +17 -0
  29. package/dist/cjs/Commands/index.js +55 -0
  30. package/dist/cjs/Errors/AppError.js +8 -0
  31. package/dist/cjs/Errors/AuthenticationError.js +9 -0
  32. package/dist/cjs/Errors/AuthorizationError.js +9 -0
  33. package/dist/cjs/Errors/DeviceCommError.js +9 -0
  34. package/dist/cjs/Errors/LoginError.js +9 -0
  35. package/dist/cjs/Errors/NotFoundError.js +9 -0
  36. package/dist/cjs/Errors/RequestError.js +9 -0
  37. package/dist/cjs/Errors/SystemCommError.js +9 -0
  38. package/dist/cjs/Errors/TokenExpiredError.js +9 -0
  39. package/dist/cjs/Errors/UnprocessableRequestError.js +9 -0
  40. package/dist/cjs/Errors/ValidationError.js +9 -0
  41. package/dist/cjs/Errors/index.js +15 -0
  42. package/dist/cjs/Events/ApplicationInUseEvent.js +17 -0
  43. package/dist/cjs/Events/ApplicationOutOfUseEvent.js +17 -0
  44. package/dist/cjs/Events/EmailEvent.js +18 -0
  45. package/dist/cjs/Events/Event.js +55 -0
  46. package/dist/cjs/Events/SMSEvent.js +18 -0
  47. package/dist/cjs/Events/SMSSentEvent.js +17 -0
  48. package/dist/cjs/Events/ShortLinkCreatedEvent.js +17 -0
  49. package/dist/cjs/Events/SystemCameraUpdatedEvent.js +17 -0
  50. package/dist/cjs/Events/SystemCourtesyUpdatedEvent.js +17 -0
  51. package/dist/cjs/Events/SystemDimmerUpdatedEvent.js +17 -0
  52. package/dist/cjs/Events/SystemGatewayUpdatedEvent.js +17 -0
  53. package/dist/cjs/Events/SystemLockUpdatedEvent.js +17 -0
  54. package/dist/cjs/Events/SystemMediaSourceUpdatedEvent.js +17 -0
  55. package/dist/cjs/Events/SystemMotionSensorUpdatedEvent.js +17 -0
  56. package/dist/cjs/Events/SystemProductUpdatedEvent.js +17 -0
  57. package/dist/cjs/Events/SystemReservationUpdatedEvent.js +17 -0
  58. package/dist/cjs/Events/SystemSceneControllerUpdatedEvent.js +17 -0
  59. package/dist/cjs/Events/SystemSpaceTypeUpdatedEvent.js +17 -0
  60. package/dist/cjs/Events/SystemSpaceUpdatedEvent.js +17 -0
  61. package/dist/cjs/Events/SystemSwitchUpdatedEvent.js +17 -0
  62. package/dist/cjs/Events/SystemThermostatUpdatedEvent.js +17 -0
  63. package/dist/cjs/Events/SystemUserUpdatedEvent.js +17 -0
  64. package/dist/cjs/Events/SystemWindowCoveringUpdatedEvent.js +17 -0
  65. package/dist/cjs/Events/index.js +50 -0
  66. package/dist/cjs/Models/Alarm.js +29 -0
  67. package/dist/cjs/Models/Camera.js +29 -0
  68. package/dist/cjs/Models/Courtesy.js +33 -0
  69. package/dist/cjs/Models/Credential.js +29 -0
  70. package/dist/cjs/Models/Dimmer.js +61 -0
  71. package/dist/cjs/Models/DiscoveredDevice.js +30 -0
  72. package/dist/cjs/Models/EmailMessage.js +29 -0
  73. package/dist/cjs/Models/EnergyReport.js +29 -0
  74. package/dist/cjs/Models/EnergyReportShard.js +29 -0
  75. package/dist/cjs/Models/Gateway.js +29 -0
  76. package/dist/cjs/Models/Identification.js +32 -0
  77. package/dist/cjs/Models/Kohost.js +96 -0
  78. package/dist/cjs/Models/Lock.js +33 -0
  79. package/dist/cjs/Models/MediaFile.js +41 -0
  80. package/dist/cjs/Models/MediaSource.js +29 -0
  81. package/dist/cjs/Models/MotionSensor.js +29 -0
  82. package/dist/cjs/Models/Organization.js +28 -0
  83. package/dist/cjs/Models/Product.js +29 -0
  84. package/dist/cjs/Models/Property.js +28 -0
  85. package/dist/cjs/Models/Reservation.js +98 -0
  86. package/dist/cjs/Models/Room.js +212 -0
  87. package/dist/cjs/Models/Scene.js +183 -0
  88. package/dist/cjs/Models/ShortLink.js +29 -0
  89. package/dist/cjs/Models/SmsMessage.js +29 -0
  90. package/dist/cjs/Models/Space.js +97 -0
  91. package/dist/cjs/Models/SpaceType.js +30 -0
  92. package/dist/cjs/Models/Switch.js +33 -0
  93. package/dist/cjs/Models/SystemUser.js +48 -0
  94. package/dist/cjs/Models/Thermostat.js +80 -0
  95. package/dist/cjs/Models/Ticket.js +105 -0
  96. package/dist/cjs/Models/User.js +73 -0
  97. package/dist/cjs/Models/WindowCovering.js +49 -0
  98. package/dist/cjs/Models/index.js +68 -0
  99. package/dist/cjs/{SocketIoClient.js → SocketIoClient/index.js} +19 -14
  100. package/dist/cjs/defs/deviceTypes.js +15 -0
  101. package/dist/cjs/defs/formalDeviceTypes.js +6 -0
  102. package/dist/cjs/defs/index.js +11 -0
  103. package/dist/cjs/index.js +23 -0
  104. package/dist/cjs/schemas/alarm.json +103 -0
  105. package/dist/cjs/schemas/camera.json +50 -0
  106. package/dist/cjs/schemas/courtesy.json +46 -0
  107. package/dist/cjs/schemas/credential.json +31 -0
  108. package/dist/cjs/schemas/definitions.json +191 -0
  109. package/dist/cjs/schemas/dimmer.json +43 -0
  110. package/dist/cjs/schemas/discoveredDevice.json +31 -0
  111. package/dist/cjs/schemas/emailMessage.json +71 -0
  112. package/dist/cjs/schemas/energyReport.json +86 -0
  113. package/dist/cjs/schemas/energyReportShard.json +75 -0
  114. package/dist/cjs/schemas/gateway.json +35 -0
  115. package/dist/cjs/schemas/identification.json +61 -0
  116. package/dist/cjs/schemas/lock.json +45 -0
  117. package/dist/cjs/schemas/mediaFile.json +67 -0
  118. package/dist/cjs/schemas/mediaSource.json +184 -0
  119. package/dist/cjs/schemas/motionSensor.json +32 -0
  120. package/dist/cjs/schemas/organization.json +36 -0
  121. package/dist/cjs/schemas/payment.json +47 -0
  122. package/dist/cjs/schemas/product.json +40 -0
  123. package/dist/cjs/schemas/property.json +246 -0
  124. package/dist/cjs/schemas/reservation.json +118 -0
  125. package/dist/cjs/schemas/room.json +98 -0
  126. package/dist/cjs/schemas/scene.json +121 -0
  127. package/dist/cjs/schemas/shortLink.json +30 -0
  128. package/dist/cjs/schemas/smsMessage.json +61 -0
  129. package/dist/cjs/schemas/space.json +120 -0
  130. package/dist/cjs/schemas/spaceType.json +30 -0
  131. package/dist/cjs/schemas/switch.json +42 -0
  132. package/dist/cjs/schemas/systemUser.json +95 -0
  133. package/dist/cjs/schemas/thermostat.json +153 -0
  134. package/dist/cjs/schemas/ticket.json +96 -0
  135. package/dist/cjs/schemas/user.json +152 -0
  136. package/dist/cjs/schemas/windowCovering.json +43 -0
  137. package/dist/cjs/utils/errorFactory.js +8 -0
  138. package/dist/cjs/utils/eventFactory.js +10 -0
  139. package/dist/cjs/utils/getDeviceTypes.js +7 -0
  140. package/dist/cjs/utils/getFormalDeviceType.js +5 -0
  141. package/dist/cjs/utils/index.js +11 -0
  142. package/dist/cjs/utils/schema.js +25 -0
  143. package/dist/esm/Models.js +451 -435
  144. package/dist/esm/Models.js.map +4 -4
  145. package/dist/esm/utils.js +7 -26
  146. package/dist/esm/utils.js.map +3 -3
  147. package/package.json +12 -7
  148. package/dist/cjs/AMQPClient.js +0 -462
  149. package/dist/cjs/Commands.js +0 -973
  150. package/dist/cjs/Errors.js +0 -209
  151. package/dist/cjs/Events.js +0 -578
  152. package/dist/cjs/Models.js +0 -4905
  153. package/dist/cjs/defs.js +0 -167
  154. package/dist/cjs/index.cjs.js +0 -6755
  155. package/dist/cjs/utils.js +0 -525
  156. /package/dist/cjs/{Client.js → Client/index.js} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kohost/api-client",
3
- "version": "3.0.0-beta.47",
3
+ "version": "3.0.0-beta.50",
4
4
  "description": "API client, models, schemas, commands, and events for Kohost applications",
5
5
  "author": "Ian Rogers",
6
6
  "readme": "README.md",
@@ -8,16 +8,18 @@
8
8
  "type": "git",
9
9
  "url": "https://github.com/kohost/api-client"
10
10
  },
11
- "main": "dist/cjs/index.cjs.js",
11
+ "main": "dist/cjs/index.js",
12
12
  "module": "dist/esm/index.js",
13
13
  "exports": {
14
14
  ".": {
15
15
  "import": "./dist/esm/index.js",
16
- "require": "./dist/cjs/index.cjs.js"
16
+ "types": "./dist/esm/index.d.ts",
17
+ "require": "./dist/cjs/index.js"
17
18
  },
18
- "./*": {
19
- "import": "./dist/esm/*.js",
20
- "require": "./dist/cjs/*.js"
19
+ "./Models/*": {
20
+ "import": "./dist/esm/Models/*.js",
21
+ "types": "./dist/esm/Models/*.d.ts",
22
+ "require": "./dist/cjs/Models/*.js"
21
23
  }
22
24
  },
23
25
  "scripts": {
@@ -37,13 +39,16 @@
37
39
  ],
38
40
  "devDependencies": {
39
41
  "@kohost/eslint-config": "^1.0.0",
42
+ "dts-gen": "^0.6.1",
40
43
  "esbuild": "^0.18.12",
41
44
  "eslint": "^8.6.0",
42
45
  "eslint-plugin-jest": "^27.1.3",
43
46
  "husky": "^8.0.1",
44
47
  "jest": "^29.2.2",
48
+ "json-schema-to-typescript": "^13.0.2",
45
49
  "lint-staged": "^13.0.3",
46
- "prettier": "^2.5.1"
50
+ "prettier": "^2.5.1",
51
+ "typescript": "^5.1.6"
47
52
  },
48
53
  "dependencies": {
49
54
  "ajv": "^8.11.0",
@@ -1,462 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropNames = Object.getOwnPropertyNames;
3
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
4
- var __commonJS = (cb, mod) => function __require() {
5
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
6
- };
7
-
8
- // src/Errors/AppError.js
9
- var require_AppError = __commonJS({
10
- "src/Errors/AppError.js"(exports2, module2) {
11
- module2.exports = class AppError extends Error {
12
- static {
13
- __name(this, "AppError");
14
- }
15
- constructor(message = "Internal Server Error", options) {
16
- super(message, options);
17
- this.type = this.constructor.name;
18
- this.statusCode = 500;
19
- Object.setPrototypeOf(this, AppError.prototype);
20
- }
21
- };
22
- }
23
- });
24
-
25
- // src/Errors/AuthenticationError.js
26
- var require_AuthenticationError = __commonJS({
27
- "src/Errors/AuthenticationError.js"(exports2, module2) {
28
- var AppError = require_AppError();
29
- module2.exports = class AuthenticationError extends AppError {
30
- static {
31
- __name(this, "AuthenticationError");
32
- }
33
- constructor(message = "Authentication Error", options = {}) {
34
- super(message, options);
35
- this.statusCode = 401;
36
- Object.setPrototypeOf(this, AuthenticationError.prototype);
37
- }
38
- };
39
- }
40
- });
41
-
42
- // src/Errors/AuthorizationError.js
43
- var require_AuthorizationError = __commonJS({
44
- "src/Errors/AuthorizationError.js"(exports2, module2) {
45
- var AppError = require_AppError();
46
- module2.exports = class AuthorizationError extends AppError {
47
- static {
48
- __name(this, "AuthorizationError");
49
- }
50
- constructor(message = "Authorization Error", options = {}) {
51
- super(message, options);
52
- this.statusCode = 403;
53
- Object.setPrototypeOf(this, AuthorizationError.prototype);
54
- }
55
- };
56
- }
57
- });
58
-
59
- // src/Errors/DeviceCommError.js
60
- var require_DeviceCommError = __commonJS({
61
- "src/Errors/DeviceCommError.js"(exports2, module2) {
62
- var AppError = require_AppError();
63
- module2.exports = class DeviceCommError extends AppError {
64
- static {
65
- __name(this, "DeviceCommError");
66
- }
67
- constructor(message = "Device Communication Error", options = {}) {
68
- super(message, options);
69
- this.statusCode = 503;
70
- Object.setPrototypeOf(this, DeviceCommError.prototype);
71
- }
72
- };
73
- }
74
- });
75
-
76
- // src/Errors/LoginError.js
77
- var require_LoginError = __commonJS({
78
- "src/Errors/LoginError.js"(exports2, module2) {
79
- var AppError = require_AppError();
80
- module2.exports = class LoginError extends AppError {
81
- static {
82
- __name(this, "LoginError");
83
- }
84
- constructor(message = "Invalid Login information provided", options = {}) {
85
- super(message, options);
86
- this.statusCode = 401;
87
- Object.setPrototypeOf(this, LoginError.prototype);
88
- }
89
- };
90
- }
91
- });
92
-
93
- // src/Errors/NotFoundError.js
94
- var require_NotFoundError = __commonJS({
95
- "src/Errors/NotFoundError.js"(exports2, module2) {
96
- var AppError = require_AppError();
97
- module2.exports = class NotFoundError extends AppError {
98
- static {
99
- __name(this, "NotFoundError");
100
- }
101
- constructor(message = "Resource Not Found", options = {}) {
102
- super(message, options);
103
- this.statusCode = 404;
104
- Object.setPrototypeOf(this, NotFoundError.prototype);
105
- }
106
- };
107
- }
108
- });
109
-
110
- // src/Errors/RequestError.js
111
- var require_RequestError = __commonJS({
112
- "src/Errors/RequestError.js"(exports2, module2) {
113
- var AppError = require_AppError();
114
- module2.exports = class RequestError extends AppError {
115
- static {
116
- __name(this, "RequestError");
117
- }
118
- constructor(message = "Bad Request", options = {}) {
119
- super(message, options);
120
- this.statusCode = 400;
121
- Object.setPrototypeOf(this, RequestError.prototype);
122
- }
123
- };
124
- }
125
- });
126
-
127
- // src/Errors/SystemCommError.js
128
- var require_SystemCommError = __commonJS({
129
- "src/Errors/SystemCommError.js"(exports2, module2) {
130
- var AppError = require_AppError();
131
- module2.exports = class SystemCommError extends AppError {
132
- static {
133
- __name(this, "SystemCommError");
134
- }
135
- constructor(message = "System Communication Error", options = {}) {
136
- super(message, options);
137
- this.statusCode = 503;
138
- Object.setPrototypeOf(this, SystemCommError.prototype);
139
- }
140
- };
141
- }
142
- });
143
-
144
- // src/Errors/TokenExpiredError.js
145
- var require_TokenExpiredError = __commonJS({
146
- "src/Errors/TokenExpiredError.js"(exports2, module2) {
147
- var AppError = require_AppError();
148
- module2.exports = class TokenExpiredError extends AppError {
149
- static {
150
- __name(this, "TokenExpiredError");
151
- }
152
- constructor(message = "Token Expired", options = {}) {
153
- super(message, options);
154
- this.statusCode = 401;
155
- Object.setPrototypeOf(this, TokenExpiredError.prototype);
156
- }
157
- };
158
- }
159
- });
160
-
161
- // src/Errors/UnprocessableRequestError.js
162
- var require_UnprocessableRequestError = __commonJS({
163
- "src/Errors/UnprocessableRequestError.js"(exports2, module2) {
164
- var AppError = require_AppError();
165
- module2.exports = class UnprocessableRequestError extends AppError {
166
- static {
167
- __name(this, "UnprocessableRequestError");
168
- }
169
- constructor(message = "Unprocessable Request Error", options = {}) {
170
- super(message, options);
171
- this.statusCode = 422;
172
- Object.setPrototypeOf(this, UnprocessableRequestError.prototype);
173
- }
174
- };
175
- }
176
- });
177
-
178
- // src/Errors/ValidationError.js
179
- var require_ValidationError = __commonJS({
180
- "src/Errors/ValidationError.js"(exports2, module2) {
181
- var AppError = require_AppError();
182
- module2.exports = class ValidationError extends AppError {
183
- static {
184
- __name(this, "ValidationError");
185
- }
186
- constructor(message = "Validation Error", options = {}) {
187
- super(message, options);
188
- this.statusCode = 400;
189
- Object.setPrototypeOf(this, ValidationError.prototype);
190
- }
191
- };
192
- }
193
- });
194
-
195
- // src/Errors/index.js
196
- var require_Errors = __commonJS({
197
- "src/Errors/index.js"(exports2, module2) {
198
- var Errors2 = {
199
- AppError: require_AppError(),
200
- AuthenticationError: require_AuthenticationError(),
201
- AuthorizationError: require_AuthorizationError(),
202
- DeviceCommError: require_DeviceCommError(),
203
- LoginError: require_LoginError(),
204
- NotFoundError: require_NotFoundError(),
205
- RequestError: require_RequestError(),
206
- SystemCommError: require_SystemCommError(),
207
- TokenExpiredError: require_TokenExpiredError(),
208
- UnprocessableRequestError: require_UnprocessableRequestError(),
209
- ValidationError: require_ValidationError()
210
- };
211
- module2.exports = Errors2;
212
- }
213
- });
214
-
215
- // src/AMQPClient/index.js
216
- var Errors = require_Errors();
217
- var amqp = require("amqplib");
218
- var crypto = require("crypto");
219
- var isFatalError = require("amqplib/lib/connection").isFatalError;
220
- var debug = require("debug")("kohost:amqp-client");
221
- var HEADER_KEY_ORGANIZATION_ID = "X-Organization-Id";
222
- var HEADER_KEY_PROPERTY_ID = "X-Property-Id";
223
- var HEADER_KEY_DRIVER = "X-Driver";
224
- var HEADER_KEY_COMMAND_NAME = "X-Command-Name";
225
- var HEADER_KEY_EVENT_NAME = "X-Event-Name";
226
- var exchanges = {
227
- // routes commands based on `command-name` header and in many cases `property-id` header
228
- Commands: {
229
- name: "kohost.commands",
230
- type: "headers",
231
- options: {
232
- durable: true
233
- }
234
- },
235
- // routes events based on routing keys
236
- Events: {
237
- name: "kohost.events",
238
- type: "topic",
239
- options: {
240
- durable: true
241
- }
242
- },
243
- Direct: {
244
- name: "kohost.direct",
245
- type: "direct",
246
- options: {
247
- durable: true
248
- }
249
- },
250
- Replies: {
251
- name: "kohost.replies",
252
- type: "topic",
253
- options: {
254
- durable: true
255
- }
256
- },
257
- // dead letter exchange
258
- dlx: {
259
- name: "kohost.dlx",
260
- type: "direct"
261
- }
262
- };
263
- var KohostAMQPClient = class {
264
- static {
265
- __name(this, "KohostAMQPClient");
266
- }
267
- static get Message() {
268
- return Message;
269
- }
270
- static get exchanges() {
271
- return exchanges;
272
- }
273
- static generateCorrelationId() {
274
- return crypto.randomUUID();
275
- }
276
- static validateMessage(message) {
277
- if (!message)
278
- throw new Error("Message is required");
279
- }
280
- static parseError(err) {
281
- let type;
282
- let message;
283
- let options = {};
284
- if (err.message && err.type) {
285
- const { message: errMessage, type: errType, ...rest } = err;
286
- type = errType;
287
- message = errMessage;
288
- options = rest;
289
- } else {
290
- message = "Unknown Error";
291
- }
292
- debug("parseError", type, message, options);
293
- switch (type) {
294
- case "RequestError":
295
- return new Errors.RequestError(message, options);
296
- case "AuthenticationError":
297
- return new Errors.AuthenticationError(message, options);
298
- case "ValidationError":
299
- return new Errors.ValidationError(message, options);
300
- case "NotFoundError":
301
- return new Errors.NotFoundError(message, options);
302
- case "UnprocessableRequestError":
303
- return new Errors.UnprocessableRequestError(message, options);
304
- default:
305
- return new Error(message, options);
306
- }
307
- }
308
- static parseMessage(message) {
309
- debug("parseMessage input %o", message);
310
- let error = null;
311
- let data = {};
312
- let query = {};
313
- let context = {};
314
- let headers = {};
315
- const isCommand = message?.properties?.type === "Command";
316
- const isEvent = message?.properties?.type === "Event";
317
- const messageHeaders = message?.properties?.headers || {};
318
- const commandName = messageHeaders[HEADER_KEY_COMMAND_NAME] || null;
319
- const eventName = messageHeaders[HEADER_KEY_EVENT_NAME] || null;
320
- if (message.content) {
321
- try {
322
- const payload = message.properties?.contentType === "application/json" ? JSON.parse(message.content.toString()) : message.content.toString();
323
- data = payload?.data || {};
324
- error = payload?.error;
325
- query = payload?.query || {};
326
- context = payload?.context || {};
327
- } catch (error2) {
328
- data = message.content.toString();
329
- }
330
- }
331
- if (message?.properties?.headers) {
332
- const orgHeader = message.properties.headers[HEADER_KEY_ORGANIZATION_ID];
333
- const propertyHeader = message.properties.headers[HEADER_KEY_PROPERTY_ID];
334
- const driverHeader = message.properties.headers[HEADER_KEY_DRIVER];
335
- if (orgHeader) {
336
- context.organizationId = orgHeader;
337
- headers[HEADER_KEY_ORGANIZATION_ID] = orgHeader;
338
- }
339
- if (propertyHeader) {
340
- context.propertyId = propertyHeader;
341
- headers[HEADER_KEY_PROPERTY_ID] = propertyHeader;
342
- }
343
- if (driverHeader) {
344
- context.driver = driverHeader;
345
- headers[HEADER_KEY_DRIVER] = driverHeader;
346
- }
347
- }
348
- const parsed = {};
349
- if (error)
350
- parsed.error = this.parseError(error);
351
- parsed.data = data;
352
- parsed.query = query;
353
- parsed.context = context;
354
- parsed.headers = headers;
355
- if (isEvent && eventName)
356
- parsed.event = eventName;
357
- else if (isCommand && commandName)
358
- parsed.command = commandName;
359
- debug("parseMessage parsed %o", parsed);
360
- return parsed;
361
- }
362
- static getMessage(message) {
363
- if (!message?.content)
364
- return null;
365
- const payload = JSON.parse(message.content.toString());
366
- const data = payload?.data;
367
- return data;
368
- }
369
- static isFatalError(err) {
370
- return isFatalError(err);
371
- }
372
- async createConnection(connection, options = {}) {
373
- return await amqp.connect(connection, options);
374
- }
375
- static createMessage(content) {
376
- return new Message(content);
377
- }
378
- async createChannel(connection) {
379
- const channel = await connection.createChannel();
380
- return channel;
381
- }
382
- async assertExchange(channel, { exchange, type, options }) {
383
- return await channel.assertExchange(exchange, type, options);
384
- }
385
- async assertQueue(channel, { queue, options }) {
386
- return await channel.assertQueue(queue, options);
387
- }
388
- async bindQueue(channel, { queue, exchange, routingKey, args }) {
389
- return await channel.bindQueue(queue, exchange, routingKey, args);
390
- }
391
- async bindExchange(channel, { source, destination, routingKey, args }) {
392
- return await channel.bindExchange(destination, source, routingKey, args);
393
- }
394
- async subscribeToQueue(channel, { queue, cb, options }) {
395
- return await channel.consume(queue, cb, options);
396
- }
397
- publishToExchange(channel, { exchange, routingKey, content, options }) {
398
- return channel.publish(exchange, routingKey, content, options);
399
- }
400
- };
401
- var Message = class {
402
- static {
403
- __name(this, "Message");
404
- }
405
- constructor(content) {
406
- this.toExchange = null;
407
- this.content = content;
408
- this.options = {
409
- contentType: "application/json"
410
- };
411
- this.routingKey = "";
412
- }
413
- get correlationId() {
414
- return this.options.correlationId || null;
415
- }
416
- to({ exchange }) {
417
- if (typeof exchange === "undefined")
418
- throw new Error("Exchange is required");
419
- this.toExchange = exchange;
420
- return this;
421
- }
422
- withType(type) {
423
- this.options.type = type;
424
- return this;
425
- }
426
- withRoutingKey(routingKey) {
427
- this.routingKey = routingKey;
428
- return this;
429
- }
430
- withHeaders(headers) {
431
- if (!this.options.headers)
432
- this.options.headers = {};
433
- this.options.headers = { ...this.options.headers, ...headers };
434
- return this;
435
- }
436
- withContext(context) {
437
- for (let key in context) {
438
- this.withHeaders({ [key]: context[key] });
439
- }
440
- return this;
441
- }
442
- withCorrelationId(correlationId) {
443
- this.options.correlationId = correlationId;
444
- return this;
445
- }
446
- withReplyTo(queue) {
447
- this.options.replyTo = queue;
448
- return this;
449
- }
450
- build() {
451
- let content = this.content;
452
- if (content.build && typeof content.build === "function")
453
- content = content.build();
454
- return {
455
- exchange: this.toExchange,
456
- content: Buffer.from(JSON.stringify(content)),
457
- options: this.options,
458
- routingKey: this.routingKey
459
- };
460
- }
461
- };
462
- module.exports = KohostAMQPClient;