suanpan_node_sdk 2.0.0-beta.34 → 2.0.0-beta.38

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 (57) hide show
  1. package/dist/api/index.d.ts +2 -8
  2. package/dist/api/index.js +3 -11
  3. package/dist/api/index.js.map +1 -1
  4. package/dist/core/event/index.d.ts +6 -0
  5. package/dist/core/event/index.js +11 -0
  6. package/dist/core/event/index.js.map +1 -0
  7. package/dist/core/{eventLogger.d.ts → logkit/index.d.ts} +0 -0
  8. package/dist/core/{eventLogger.js → logkit/index.js} +4 -4
  9. package/dist/core/logkit/index.js.map +1 -0
  10. package/dist/core/message/channel.d.ts +2 -2
  11. package/dist/core/message/channelFactory.js +2 -2
  12. package/dist/core/message/channelFactory.js.map +1 -1
  13. package/dist/core/message/index.d.ts +1 -1
  14. package/dist/core/message/index.js +1 -1
  15. package/dist/core/message/message.d.ts +12 -5
  16. package/dist/core/message/message.js +51 -6
  17. package/dist/core/message/message.js.map +1 -1
  18. package/dist/core/message/{messagebuilder.d.ts → messageBuilder.d.ts} +1 -1
  19. package/dist/core/message/{messagebuilder.js → messageBuilder.js} +11 -4
  20. package/dist/core/message/messageBuilder.js.map +1 -0
  21. package/dist/core/message/messageChain.d.ts +2 -2
  22. package/dist/core/message/messageChain.js +2 -2
  23. package/dist/core/message/messageChain.js.map +1 -1
  24. package/dist/core/message/messageListener.js +2 -2
  25. package/dist/core/message/messageListener.js.map +1 -1
  26. package/dist/core/message/mq/index.d.ts +9 -0
  27. package/dist/core/message/mq/index.js +47 -0
  28. package/dist/core/message/mq/index.js.map +1 -0
  29. package/dist/core/message/mq/redis.d.ts +4 -16
  30. package/dist/core/message/mq/redis.js +31 -130
  31. package/dist/core/message/mq/redis.js.map +1 -1
  32. package/dist/core/{port.d.ts → service/port.d.ts} +0 -0
  33. package/dist/core/{port.js → service/port.js} +4 -4
  34. package/dist/core/service/port.js.map +1 -0
  35. package/dist/core/storage/minio.js.map +1 -1
  36. package/dist/core/storage/storage.js +1 -1
  37. package/dist/core/storage/storage.js.map +1 -1
  38. package/dist/core/utils/index.d.ts +1 -1
  39. package/dist/core/utils/index.js +3 -4
  40. package/dist/core/utils/index.js.map +1 -1
  41. package/dist/core/{support.d.ts → utils/support.d.ts} +1 -1
  42. package/dist/core/{support.js → utils/support.js} +3 -3
  43. package/dist/core/utils/support.js.map +1 -0
  44. package/dist/core/web/app.js.map +1 -1
  45. package/dist/core/web/server.js +1 -1
  46. package/dist/core/web/server.js.map +1 -1
  47. package/dist/types/streamTypes.d.ts +2 -25
  48. package/dist/types/streamTypes.js +0 -8
  49. package/dist/types/streamTypes.js.map +1 -1
  50. package/package.json +5 -2
  51. package/dist/core/eventLogger.js.map +0 -1
  52. package/dist/core/message/messagebuilder.js.map +0 -1
  53. package/dist/core/mq.d.ts +0 -21
  54. package/dist/core/mq.js +0 -173
  55. package/dist/core/mq.js.map +0 -1
  56. package/dist/core/port.js.map +0 -1
  57. package/dist/core/support.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  export * from '../types';
2
- export * from '../core/port';
2
+ export * from '../core/service/port';
3
3
  export * from '../core/message';
4
4
  export * from '../core/parameter';
5
- export * from '../core/eventLogger';
5
+ export * from '../core/logkit';
6
6
  export * from '../core/storage/storagePath';
7
7
  export * from '../core/storage/storageLogger';
8
8
  export * from '../core/storage/wrapperStorage';
@@ -10,9 +10,3 @@ import { ScriptManager } from '../core/script/script-manager';
10
10
  export declare const ScriptManagement: {
11
11
  ScriptManager: typeof ScriptManager;
12
12
  };
13
- export declare const sp: {
14
- /** @deprecated this method has deprecated and use onMessage(message => {}) instead */
15
- onCall: (callBack: import("../types").SyncCallBack | import("../types").AsyncCallBack) => void;
16
- onMessage: (callBack: import("../types").AsyncMessageFn | import("../types").SyncMessageFn) => void;
17
- sendMessage: (sendData: import("../types").SendData) => Promise<void>;
18
- };
package/dist/api/index.js CHANGED
@@ -34,25 +34,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
34
34
  return (mod && mod.__esModule) ? mod : { "default": mod };
35
35
  };
36
36
  Object.defineProperty(exports, "__esModule", { value: true });
37
- exports.sp = exports.ScriptManagement = void 0;
37
+ exports.ScriptManagement = void 0;
38
38
  __exportStar(require("../types"), exports);
39
- __exportStar(require("../core/port"), exports);
39
+ __exportStar(require("../core/service/port"), exports);
40
40
  __exportStar(require("../core/message"), exports);
41
41
  __exportStar(require("../core/parameter"), exports);
42
- __exportStar(require("../core/eventLogger"), exports);
42
+ __exportStar(require("../core/logkit"), exports);
43
43
  __exportStar(require("../core/storage/storagePath"), exports);
44
44
  __exportStar(require("../core/storage/storageLogger"), exports);
45
45
  __exportStar(require("../core/storage/wrapperStorage"), exports);
46
46
  const script_manager_1 = require("../core/script/script-manager");
47
47
  exports.ScriptManagement = { ScriptManager: script_manager_1.ScriptManager };
48
- const mq_1 = require("../core/mq");
49
- const mqSender = new mq_1.MQSender();
50
- exports.sp = {
51
- /** @deprecated this method has deprecated and use onMessage(message => {}) instead */
52
- onCall: mqSender.onCall,
53
- onMessage: mqSender.onMessage,
54
- sendMessage: mqSender.sendSuccessMessage
55
- };
56
48
  const util = __importStar(require("../core/utils"));
57
49
  const server_1 = __importDefault(require("../core/web/server"));
58
50
  if (util.isDesktop()) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,+CAA6B;AAC7B,kDAAgC;AAChC,oDAAkC;AAClC,sDAAoC;AACpC,8DAA4C;AAC5C,gEAA8C;AAC9C,iEAA+C;AAE/C,kEAA8D;AACjD,QAAA,gBAAgB,GAAG,EAAE,aAAa,EAAb,8BAAa,EAAE,CAAC;AAElD,mCAAsC;AACtC,MAAM,QAAQ,GAAG,IAAI,aAAQ,EAAE,CAAC;AAEnB,QAAA,EAAE,GAAG;IAChB,sFAAsF;IACtF,MAAM,EAAE,QAAQ,CAAC,MAAM;IACvB,SAAS,EAAE,QAAQ,CAAC,SAAS;IAC7B,WAAW,EAAE,QAAQ,CAAC,kBAAkB;CACzC,CAAC;AAEF,oDAAsC;AACtC,gEAAwC;AAExC,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;IACpB,CAAC,GAAS,EAAE;QACV,MAAM,gBAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,CAAA,CAAC,EAAE,CAAC;CACN"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,uDAAqC;AACrC,kDAAgC;AAChC,oDAAkC;AAClC,iDAA+B;AAC/B,8DAA4C;AAC5C,gEAA8C;AAC9C,iEAA+C;AAE/C,kEAA8D;AACjD,QAAA,gBAAgB,GAAG,EAAE,aAAa,EAAb,8BAAa,EAAE,CAAC;AAElD,oDAAsC;AACtC,gEAAwC;AAExC,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;IACpB,CAAC,GAAS,EAAE;QACV,MAAM,gBAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,CAAA,CAAC,EAAE,CAAC;CACN"}
@@ -0,0 +1,6 @@
1
+ import type { Message } from '../message/message';
2
+ export declare class MessageReachedEvent {
3
+ message: Message;
4
+ static NAME: string;
5
+ constructor(message: Message);
6
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessageReachedEvent = void 0;
4
+ class MessageReachedEvent {
5
+ constructor(message) {
6
+ this.message = message;
7
+ }
8
+ }
9
+ exports.MessageReachedEvent = MessageReachedEvent;
10
+ MessageReachedEvent.NAME = 'message:reached';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/event/index.ts"],"names":[],"mappings":";;;AAEA,MAAa,mBAAmB;IAE9B,YAAmB,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;;AAFzC,kDAGC;AAFe,wBAAI,GAAG,iBAAiB,CAAA"}
@@ -15,9 +15,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.EventLogger = void 0;
16
16
  const lodash_1 = __importDefault(require("lodash"));
17
17
  const socket_io_client_1 = __importDefault(require("socket.io-client"));
18
- const log_1 = __importDefault(require("./common/log"));
19
- const environment_1 = require("./parameter/environment");
20
- const support_1 = require("./support");
18
+ const log_1 = __importDefault(require("../common/log"));
19
+ const environment_1 = require("../parameter/environment");
20
+ const support_1 = require("../utils/support");
21
21
  class EventLogger {
22
22
  constructor() {
23
23
  this._levels = {
@@ -123,4 +123,4 @@ EventLogger.DEBUG = 'DEBUG';
123
123
  EventLogger.INFO = 'INFO';
124
124
  EventLogger.WARN = 'WARN';
125
125
  EventLogger.ERROR = 'ERROR';
126
- //# sourceMappingURL=eventLogger.js.map
126
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/logkit/index.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,6 @@ export interface MessageChannel {
5
5
  sendMessage(message: Message): Promise<void>;
6
6
  }
7
7
  export interface SubscribableChannel extends MessageChannel {
8
- subscribe(handler: MessageHandler): boolean;
9
- unsubscribe(handler: MessageHandler): boolean;
8
+ subscribe(handler: MessageHandler): void;
9
+ unsubscribe(handler: MessageHandler): void;
10
10
  }
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MessageChannelFactory = void 0;
4
- const redis_1 = require("./mq/redis");
4
+ const mq_1 = require("./mq");
5
5
  class MessageChannelFactory {
6
6
  static getMessageChannel() {
7
7
  // TODO:
8
- return new redis_1.RedisStreamChannel();
8
+ return new mq_1.RedisStreamChannel();
9
9
  }
10
10
  }
11
11
  exports.MessageChannelFactory = MessageChannelFactory;
@@ -1 +1 @@
1
- {"version":3,"file":"channelFactory.js","sourceRoot":"","sources":["../../../src/core/message/channelFactory.ts"],"names":[],"mappings":";;;AACA,sCAAgD;AAEhD,MAAa,qBAAqB;IAChC,MAAM,CAAC,iBAAiB;QACtB,QAAQ;QACR,OAAO,IAAI,0BAAkB,EAAE,CAAC;IAClC,CAAC;CACF;AALD,sDAKC"}
1
+ {"version":3,"file":"channelFactory.js","sourceRoot":"","sources":["../../../src/core/message/channelFactory.ts"],"names":[],"mappings":";;;AACA,6BAA0C;AAE1C,MAAa,qBAAqB;IAChC,MAAM,CAAC,iBAAiB;QACtB,QAAQ;QACR,OAAO,IAAI,uBAAkB,EAAE,CAAC;IAClC,CAAC;CACF;AALD,sDAKC"}
@@ -1,6 +1,6 @@
1
1
  export * from './channel';
2
2
  export * from './channelFactory';
3
3
  export * from './message';
4
- export * from './messagebuilder';
4
+ export * from './messageBuilder';
5
5
  export * from './messageChain';
6
6
  export * from './messageListener';
@@ -13,7 +13,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
13
13
  __exportStar(require("./channel"), exports);
14
14
  __exportStar(require("./channelFactory"), exports);
15
15
  __exportStar(require("./message"), exports);
16
- __exportStar(require("./messagebuilder"), exports);
16
+ __exportStar(require("./messageBuilder"), exports);
17
17
  __exportStar(require("./messageChain"), exports);
18
18
  __exportStar(require("./messageListener"), exports);
19
19
  //# sourceMappingURL=index.js.map
@@ -1,12 +1,19 @@
1
- import type { JSONObject } from '../../types';
1
+ import type { JSONObject, RequestStream, ResponseStream } from '../../types';
2
2
  export interface MessageHeaders {
3
3
  requestId: string;
4
+ timestamp: number;
4
5
  extra: string;
5
6
  }
6
7
  export declare class Message {
7
- private _payload;
8
- private _headers;
8
+ payload: JSONObject;
9
+ headers: MessageHeaders;
9
10
  constructor(headers: MessageHeaders, payload: JSONObject);
10
- getPayload(): JSONObject;
11
- getHeaders(): MessageHeaders;
11
+ static fromRequestStream(request: RequestStream): Message;
12
+ /**
13
+ * @param data JSON Object
14
+ * @returns JSON Object with the same key as param @param data
15
+ */
16
+ private serializeIfNecessary;
17
+ toResponseStream(): ResponseStream;
18
+ toErrorResponseStream(errorMessage: string): ResponseStream;
12
19
  }
@@ -1,16 +1,61 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.Message = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const serialize_javascript_1 = __importDefault(require("serialize-javascript"));
9
+ const environment_1 = require("../parameter/environment");
10
+ const utils_1 = require("../utils");
11
+ const messageBuilder_1 = require("./messageBuilder");
12
+ const PORT_IN_REG = /^in[1-9][0-9]*$/;
4
13
  class Message {
5
14
  constructor(headers, payload) {
6
- this._headers = headers;
7
- this._payload = payload;
15
+ this.headers = headers;
16
+ this.payload = payload;
8
17
  }
9
- getPayload() {
10
- return this._payload;
18
+ static fromRequestStream(request) {
19
+ const deserializedRequest = lodash_1.default.mapValues(request, (v) => utils_1.tryJSONParse(v, v));
20
+ const inputPortsMap = lodash_1.default.pickBy(deserializedRequest, (value, key) => key.match(PORT_IN_REG));
21
+ return messageBuilder_1.MessageBuilder
22
+ .withPayload(inputPortsMap)
23
+ .setHeaderIfAbsent('requestId', deserializedRequest.id)
24
+ .setHeaderIfAbsent('extra', deserializedRequest.extra)
25
+ .build();
11
26
  }
12
- getHeaders() {
13
- return this._headers;
27
+ /**
28
+ * @param data JSON Object
29
+ * @returns JSON Object with the same key as param @param data
30
+ */
31
+ serializeIfNecessary(data) {
32
+ const serializedResponse = lodash_1.default.mapValues(data, (v) => {
33
+ return lodash_1.default.isString(v) ? v : serialize_javascript_1.default(v);
34
+ });
35
+ return serializedResponse;
36
+ }
37
+ toResponseStream() {
38
+ var _a, _b;
39
+ const unSerializedResponse = Object.assign({
40
+ request_id: (_a = this.headers) === null || _a === void 0 ? void 0 : _a.requestId,
41
+ node_id: environment_1.Environment.stream.nodeId,
42
+ success: 'true',
43
+ type: 'call',
44
+ extra: (_b = this.headers) === null || _b === void 0 ? void 0 : _b.extra
45
+ }, this.payload);
46
+ return this.serializeIfNecessary(unSerializedResponse);
47
+ }
48
+ toErrorResponseStream(errorMessage) {
49
+ var _a, _b;
50
+ const unSerializedResponse = Object.assign({
51
+ request_id: (_a = this.headers) === null || _a === void 0 ? void 0 : _a.requestId,
52
+ node_id: environment_1.Environment.stream.nodeId,
53
+ success: 'false',
54
+ type: 'call',
55
+ msg: errorMessage,
56
+ extra: (_b = this.headers) === null || _b === void 0 ? void 0 : _b.extra
57
+ }, this.payload);
58
+ return this.serializeIfNecessary(unSerializedResponse);
14
59
  }
15
60
  }
16
61
  exports.Message = Message;
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/core/message/message.ts"],"names":[],"mappings":";;;AAKA,MAAa,OAAO;IAGlB,YAAY,OAAuB,EAAE,OAAmB;QACtD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IACD,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF;AAdD,0BAcC"}
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/core/message/message.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AACvB,gFAA6C;AAE7C,0DAAuD;AACvD,oCAAwC;AACxC,qDAAkD;AAElD,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAMtC,MAAa,OAAO;IAIlB,YAAY,OAAuB,EAAE,OAAmB;QACtD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,OAAsB;QAC7C,MAAM,mBAAmB,GAAG,gBAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,oBAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAA8B,CAAC;QACjH,MAAM,aAAa,GAAG,gBAAC,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAuB,CAAC;QAElH,OAAO,+BAAc;aAClB,WAAW,CAAC,aAAa,CAAC;aAC1B,iBAAiB,CAAC,WAAW,EAAE,mBAAmB,CAAC,EAAE,CAAC;aACtD,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,CAAC,KAAK,CAAC;aACrD,KAAK,EAAE,CAAC;IACb,CAAC;IAED;;;OAGG;IACK,oBAAoB,CAAC,IAAkB;QAC7C,MAAM,kBAAkB,GAAG,gBAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAY,EAAE,EAAE;YAC5D,OAAO,gBAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,8BAAS,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,gBAAgB;;QACd,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC;YACzC,UAAU,EAAE,MAAA,IAAI,CAAC,OAAO,0CAAE,SAAS;YACnC,OAAO,EAAE,yBAAW,CAAC,MAAM,CAAC,MAAgB;YAC5C,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,MAAA,IAAI,CAAC,OAAO,0CAAE,KAAK;SAC3B,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjB,OAAO,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAmB,CAAC;IAC3E,CAAC;IAED,qBAAqB,CAAC,YAAoB;;QACxC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC;YACzC,UAAU,EAAE,MAAA,IAAI,CAAC,OAAO,0CAAE,SAAS;YACnC,OAAO,EAAE,yBAAW,CAAC,MAAM,CAAC,MAAgB;YAC5C,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,YAAY;YACjB,KAAK,EAAE,MAAA,IAAI,CAAC,OAAO,0CAAE,KAAK;SAC3B,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjB,OAAO,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAmB,CAAC;IAC3E,CAAC;CACF;AAvDD,0BAuDC"}
@@ -1,5 +1,5 @@
1
- import type { JSONObject } from '../../types';
2
1
  import { Message } from './message';
2
+ import type { JSONObject } from '../../types';
3
3
  export declare class MessageBuilder {
4
4
  private static _payload;
5
5
  private static _headers;
@@ -3,10 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MessageBuilder = void 0;
4
4
  const utils_1 = require("../utils");
5
5
  const message_1 = require("./message");
6
- const DEFAULT_MESSAGE_HEADERS = { requestId: '', extra: '' };
6
+ const DEFAULT_MESSAGE_HEADERS = {
7
+ requestId: '',
8
+ extra: '',
9
+ timestamp: 0
10
+ };
7
11
  class MessageBuilder {
8
12
  static fromMessage(message) {
9
- this._payload = message.getPayload();
13
+ this._payload = message.payload;
10
14
  return this;
11
15
  }
12
16
  static fromMessagePayload(message) {
@@ -14,7 +18,7 @@ class MessageBuilder {
14
18
  return this;
15
19
  }
16
20
  static fromMessageHeaders(message) {
17
- for (const [headerName, headerValue] of Object.entries(message.getHeaders())) {
21
+ for (const [headerName, headerValue] of Object.entries(message.headers)) {
18
22
  this.setHeader(headerName, headerValue);
19
23
  }
20
24
  return this;
@@ -40,9 +44,12 @@ class MessageBuilder {
40
44
  if (!this._headers.requestId) {
41
45
  this._headers.requestId = utils_1.generateUUID().split('-').join('');
42
46
  }
47
+ if (!this._headers.timestamp) {
48
+ this._headers.timestamp = new Date().getTime();
49
+ }
43
50
  return new message_1.Message(this._headers, this._payload);
44
51
  }
45
52
  }
46
53
  exports.MessageBuilder = MessageBuilder;
47
54
  MessageBuilder._headers = DEFAULT_MESSAGE_HEADERS;
48
- //# sourceMappingURL=messagebuilder.js.map
55
+ //# sourceMappingURL=messageBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageBuilder.js","sourceRoot":"","sources":["../../../src/core/message/messageBuilder.ts"],"names":[],"mappings":";;;AACA,oCAAwC;AACxC,uCAAoD;AAGpD,MAAM,uBAAuB,GAAmB;IAC9C,SAAS,EAAE,EAAE;IACb,KAAK,EAAE,EAAE;IACT,SAAS,EAAE,CAAC;CACb,CAAC;AAEF,MAAa,cAAc;IAKzB,MAAM,CAAC,WAAW,CAAC,OAAgB;QACjC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,OAAgB;QACxC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,OAAgB;QACxC,KAAK,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACvE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;SACzC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,OAAmB;QACpC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,GAAW,EAAE,KAAa;QACzC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,GAAW,EAAE,KAAa;QACjD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SAC5B;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,KAAK;QACV,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SAC/C;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YAC5B,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,oBAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC9D;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YAC5B,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;SAChD;QAED,OAAO,IAAI,iBAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;;AArDH,wCAsDC;AAnDgB,uBAAQ,GAAG,uBAAuB,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import type { Message } from './message';
2
- import type { JSONObject } from '../../types';
2
+ import type { OutPortsMap } from '../../types';
3
3
  import type { MessageChannel } from './channel';
4
4
  export declare class MessageChain {
5
5
  private message;
6
6
  private channel;
7
7
  constructor(message: Message, channel: MessageChannel);
8
- send(payload: JSONObject): Promise<void>;
8
+ send(payload: OutPortsMap<any>): Promise<void>;
9
9
  }
@@ -10,7 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.MessageChain = void 0;
13
- const messagebuilder_1 = require("./messagebuilder");
13
+ const messageBuilder_1 = require("./messageBuilder");
14
14
  class MessageChain {
15
15
  constructor(message, channel) {
16
16
  this.message = message;
@@ -18,7 +18,7 @@ class MessageChain {
18
18
  }
19
19
  send(payload) {
20
20
  return __awaiter(this, void 0, void 0, function* () {
21
- const responseMessage = messagebuilder_1.MessageBuilder
21
+ const responseMessage = messageBuilder_1.MessageBuilder
22
22
  .fromMessageHeaders(this.message)
23
23
  .withPayload(payload)
24
24
  .build();
@@ -1 +1 @@
1
- {"version":3,"file":"messageChain.js","sourceRoot":"","sources":["../../../src/core/message/messageChain.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAkD;AAKlD,MAAa,YAAY;IAEvB,YAAoB,OAAgB,EAAU,OAAuB;QAAjD,YAAO,GAAP,OAAO,CAAS;QAAU,YAAO,GAAP,OAAO,CAAgB;IAAI,CAAC;IAEpE,IAAI,CAAC,OAAmB;;YAC5B,MAAM,eAAe,GAAG,+BAAc;iBACnC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;iBAChC,WAAW,CAAC,OAAO,CAAC;iBACpB,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAClD,CAAC;KAAA;CACF;AAXD,oCAWC"}
1
+ {"version":3,"file":"messageChain.js","sourceRoot":"","sources":["../../../src/core/message/messageChain.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAkD;AAKlD,MAAa,YAAY;IAEvB,YAAoB,OAAgB,EAAU,OAAuB;QAAjD,YAAO,GAAP,OAAO,CAAS;QAAU,YAAO,GAAP,OAAO,CAAgB;IAAI,CAAC;IAEpE,IAAI,CAAC,OAAyB;;YAClC,MAAM,eAAe,GAAG,+BAAc;iBACnC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;iBAChC,WAAW,CAAC,OAAO,CAAC;iBACpB,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAClD,CAAC;KAAA;CACF;AAXD,oCAWC"}
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MessageListener = void 0;
4
- const redis_1 = require("./mq/redis");
4
+ const mq_1 = require("./mq");
5
5
  class MessageListener {
6
6
  static onMessage(handler) {
7
7
  // TODO: factory
8
- const channel = new redis_1.RedisStreamChannel();
8
+ const channel = new mq_1.RedisStreamChannel();
9
9
  channel.subscribe(handler);
10
10
  }
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"messageListener.js","sourceRoot":"","sources":["../../../src/core/message/messageListener.ts"],"names":[],"mappings":";;;AACA,sCAAgD;AAEhD,MAAa,eAAe;IAC1B,MAAM,CAAC,SAAS,CAAC,OAAuB;QACtC,gBAAgB;QAChB,MAAM,OAAO,GAAG,IAAI,0BAAkB,EAAE,CAAC;QACzC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;CACF;AAND,0CAMC"}
1
+ {"version":3,"file":"messageListener.js","sourceRoot":"","sources":["../../../src/core/message/messageListener.ts"],"names":[],"mappings":";;;AAAA,6BAA0C;AAE1C,MAAa,eAAe;IAC1B,MAAM,CAAC,SAAS,CAAC,OAAuB;QACtC,gBAAgB;QAChB,MAAM,OAAO,GAAG,IAAI,uBAAkB,EAAE,CAAC;QACzC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;CACF;AAND,0CAMC"}
@@ -0,0 +1,9 @@
1
+ import type { Message } from '../message';
2
+ import type { MessageHandler, SubscribableChannel } from '../channel';
3
+ export declare class RedisStreamChannel implements SubscribableChannel {
4
+ private _client;
5
+ constructor();
6
+ subscribe(handler: MessageHandler): void;
7
+ unsubscribe(handler: MessageHandler): boolean;
8
+ sendMessage(message: Message): Promise<void>;
9
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RedisStreamChannel = void 0;
13
+ require("lodash");
14
+ const redis_1 = require("./redis");
15
+ const logkit_1 = require("../../logkit");
16
+ const messageChain_1 = require("../messageChain");
17
+ const event_1 = require("../../event");
18
+ class RedisStreamChannel {
19
+ constructor() {
20
+ this._client = new redis_1.RedisClient();
21
+ }
22
+ subscribe(handler) {
23
+ this._client.on(event_1.MessageReachedEvent.NAME, (event) => __awaiter(this, void 0, void 0, function* () {
24
+ const requestMessage = event.message;
25
+ const chain = new messageChain_1.MessageChain(requestMessage, this);
26
+ try {
27
+ yield handler(requestMessage, chain);
28
+ }
29
+ catch (e) {
30
+ logkit_1.EventLogger.Instance.error(e);
31
+ const errorResponse = requestMessage.toErrorResponseStream(e.message);
32
+ yield this._client.sendMessage(errorResponse);
33
+ }
34
+ }));
35
+ }
36
+ unsubscribe(handler) {
37
+ throw new Error('Method not implemented.');
38
+ }
39
+ sendMessage(message) {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ const responseStream = message.toResponseStream();
42
+ yield this._client.sendMessage(responseStream);
43
+ });
44
+ }
45
+ }
46
+ exports.RedisStreamChannel = RedisStreamChannel;
47
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/message/mq/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kBAAuB;AAEvB,mCAAsC;AACtC,yCAA2C;AAC3C,kDAA+C;AAC/C,uCAAkD;AAKlD,MAAa,kBAAkB;IAG7B;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAW,EAAE,CAAC;IACnC,CAAC;IAED,SAAS,CAAC,OAAuB;QAC/B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,2BAAmB,CAAC,IAAI,EAAE,CAAO,KAA0B,EAAE,EAAE;YAC7E,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC;YACrC,MAAM,KAAK,GAAG,IAAI,2BAAY,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YACrD,IAAI;gBACF,MAAM,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;aACtC;YAAC,OAAO,CAAM,EAAE;gBACf,oBAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM,aAAa,GAAG,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACtE,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;aAC/C;QACH,CAAC,CAAA,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,OAAuB;QACjC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAEK,WAAW,CAAC,OAAgB;;YAChC,MAAM,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAClD,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACjD,CAAC;KAAA;CACF;AA7BD,gDA6BC"}
@@ -1,22 +1,10 @@
1
1
  /// <reference types="node" />
2
2
  import * as events from 'events';
3
- import { SendData } from '../../../types';
4
- import type { Message } from '../message';
5
- import type { MessageHandler } from '../channel';
6
- import type { SubscribableChannel } from '../channel';
7
- export declare class RedisStreamChannel extends events.EventEmitter implements SubscribableChannel {
3
+ import type { ResponseStream } from '../../../types';
4
+ export declare class RedisClient extends events.EventEmitter {
8
5
  private _client;
9
- private defaultSendOptions;
10
6
  constructor();
11
- private getDefaultSendOptions;
12
7
  private initMQClient;
13
- private _takeInputPorts;
14
- private _takeOutPorts;
15
- private _send;
16
- private _buildSendOptions;
17
- private _sendFailureMessage;
18
- sendSuccessMessage: (sendData: SendData) => Promise<void>;
19
- subscribe(handler: MessageHandler): boolean;
20
- unsubscribe(handler: MessageHandler): boolean;
21
- sendMessage(message: Message): Promise<void>;
8
+ private _buildSendMessageOptions;
9
+ sendMessage(responseStream: ResponseStream): Promise<void>;
22
10
  }