suanpan_node_sdk 2.0.1 → 2.0.5

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.
package/README.md CHANGED
@@ -1,120 +1,688 @@
1
- <a name="tZMOF"></a>
2
- ## 简介
3
- 算盘组件之间通过 Redis 消息队列进行消息通信,SDK 对 Redis 提供的 Stream API 进行了封装,提供了发送消息/监听队列/oss/minio存储等方法。<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/502931/1630910242408-c966cd0d-34fe-4bf9-ac47-ac72d50cfe42.png#clientId=u685e5f8c-6bda-4&from=paste&height=341&id=ube246cc1&margin=%5Bobject%20Object%5D&name=image.png&originHeight=682&originWidth=1494&originalType=binary&ratio=1&size=122605&status=done&style=none&taskId=ubb851989-49e6-45e1-a536-f14880aa017&width=747)<br />[SDK 目录约定](https://xuelangyun.yuque.com/suanpan_doc/public/bokg7z)
4
- <a name="Installation"></a>
5
- ## Installation
6
- ```powershell
7
- npm install suanpan_node_sdk -S
8
- // or beta
9
- npm install suanpan_node_sdk@beta -S
1
+ # Table of contents
2
+ - [Introduction](#introduction)
3
+ - [Install](#install)
4
+ - [Quick Start](#quick-start)
5
+ - [Features](#features)
6
+ - [API Reference](#api-reference)
7
+ - [Parameter](#parameter)
8
+ - [.get([key])](#getkey)
9
+ - [Message](#message)
10
+ - [constructor(headers, payload)](#constructorheaders-payload)
11
+ - [headers](#headers)
12
+ - [payload](#payload)
13
+ - [MessageListener](#messagelistener)
14
+ - [.onMessage(messageHandler)](#onmessagemessagehandler)
15
+ - [MessageChannelFactory](#messagechannelfactory)
16
+ - [.createMessageChannel()](#createmessagechannel)
17
+ - [MessageChannel](#messagechannel)
18
+ - [.receiveMessage()](#receivemessage)
19
+ - [.sendMessage(message)](#sendmessagemessage)
20
+ - [MessageHandler](#messagehandler)
21
+ - [MessageChain](#messagechain)
22
+ - [constructor](#constructor)
23
+ - [.send(payload)](#sendpayload)
24
+ - [MessageBuilder](#messagebuilder)
25
+ - [.fromMessagePayload(message)](#frommessagepayloadmessage)
26
+ - [.fromMessageHeaders(message)](#frommessageheadersmessage)
27
+ - [.withPayload(payload)](#withpayloadpayload)
28
+ - [.setHeader(key, value)](#setheaderkey-value)
29
+ - [.setHeaderIfAbsent(key, value)](#setheaderifabsentkey-value)
30
+ - [.build()](#build)
31
+ - [Storage](#storage)
32
+ - [.append(objectName, content)](#appendobjectname-content)
33
+ - [.putObject(objectName, data)](#putobjectobjectname-data)
34
+ - [.listObjects(prefix, recursive)](#listobjectsprefix-recursive)
35
+ - [.fGetObject(objectName, filePath)](#fgetobjectobjectname-filepath)
36
+ - [.fPutObject(objectName, filePath)](#fputobjectobjectname-filepath)
37
+ - [.deleteObject(objectName)](#deleteobjectobjectname)
38
+ - [.deleteMultiObjects(objectNames)](#deletemultiobjectsobjectnames)
39
+ - [.checkObjectNameExist(objectName)](#checkobjectnameexistobjectname)
40
+ - [.getObjectToJSON(objectName)](#getobjecttojsonobjectname)
41
+ - [.getObjectToString(objectName)](#getobjecttostringobjectname)
42
+ - [.getObjectToBuffer(objectName)](#getobjecttobufferobjectname)
43
+ - [.getObjectToStream(objectName)](#getobjecttostreamobjectname)
44
+ - [StoragePath](#storagepath)
45
+ - [constructor([options])](#constructoroptions)
46
+ - [.getUserPath([userId])](#getuserpathuserid)
47
+ - [.getAppPath([appId])](#getapppathappid)
48
+ - [.getComponentPath([componentId])](#getcomponentpathcomponentid)
49
+ - [.getNodePath([nodeId])](#getnodepathnodeid)
50
+ - [.getAppLogPath(userId)](#getapplogpathuserid)
51
+ - [.getNodeLogPath(userId)](#getnodelogpathuserid-nodeid)
52
+ - [.getAppTempDir(userId)](#getapptempdiruserid)
53
+ - [ObjectStorageLogger](#objectstoragelogger)
54
+ - [constructor(options)](#constructoroptions-1)
55
+ - [.info(message[, flush])](#infomessage-flush)
56
+ - [.debug(message[, flush])](#debugmessage-flush)
57
+ - [.warn(message[, flush])](#warnmessage-flush)
58
+ - [.error(message[, flush])](#errormessage-flush)
59
+ - [EventLogger](#eventlogger)
60
+ - [.info(message)](#infomessage)
61
+ - [.debug(message)](#debugmessage)
62
+ - [.warn(message)](#warnmessage)
63
+ - [.error(message)](#errormessage)
64
+ - [Type Reference](#type-reference)
65
+ - [MessageHeaders](#messageheaders)
66
+ - [LogLevel](#loglevel)
67
+ - [StorageLoggerOptions](#storageloggeroptions)
68
+ - [Platform](#platform)
69
+ # Introduction
70
+ 算盘组件之间通过 Redis 消息队列进行消息通信,SDK 对 Redis 提供的 Stream API 进行了封装,提供了发送消息/对象存储等方法。
71
+ ![image.png](https://cdn.nlark.com/yuque/0/2021/png/502931/1630910242408-c966cd0d-34fe-4bf9-ac47-ac72d50cfe42.png#clientId=u685e5f8c-6bda-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=320&id=ube246cc1&margin=%5Bobject%20Object%5D&name=image.png&originHeight=682&originWidth=1494&originalType=binary&ratio=1&rotation=0&showTitle=false&size=122605&status=done&style=none&taskId=ubb851989-49e6-45e1-a536-f14880aa017&title=&width=702)
72
+
73
+ [1.x 版本文档](https://github.com/xuelang-group/suanpan-node-sdk/blob/master/docs/1.x.x-version.md)
74
+
75
+ [SDK 目录约定](https://xuelangyun.yuque.com/suanpan_doc/public/bokg7z)
76
+ # Install
77
+
78
+ Make sure you have Node 10 or greater installed.
79
+ Get the library:
80
+ ```shell
81
+ $ npm install suanpan_node_sdk --save
82
+ ```
83
+ # Quick Start
84
+
85
+ ```typescript
86
+ import { MessageListener, MessageHandler } from 'suanpan_node_sdk';
87
+
88
+ const messageHandler: MessageHandler = (message, chain) => {
89
+ const headers = message.headers;
90
+ const payload = message.payload;
91
+
92
+ const requestId = headers.requestId;
93
+ const timestamp = headers.timestamp;
94
+
95
+ /** Business logic here */
96
+
97
+ chain.send({ // 发送消息
98
+ out1: 'xxxx',
99
+ out2: true,
100
+ out3: { success: true, result: [1, 2, 3] }
101
+ });
102
+ }
103
+
104
+ MessageListener.onMessage(messageHandler);
10
105
  ```
106
+ # Features
107
+
108
+ - [获取右面板参数](#parameter)
109
+ - [流计算消息接受与发送](#messagelistener)
110
+ - [对象(OSS/MINIO)存储 API](#storage)
111
+ - [Logkit 结构化日志存储(EventLogger)](#eventlogger)
112
+ - [对象存储日志收集器(ObjectStorageLogger)](#objectstoragelogger)
113
+
114
+ # API Reference
115
+ ## Parameter
11
116
 
117
+ 获取配置参数,以及内置一些常用参数,例如:AppId,NodeId 等
118
+ ### .get([key])
119
+ Parameter Class 提供一个**静态方法** `.get([key])` 获取配置参数。
12
120
 
13
- <a name="d089eb8a"></a>
14
- ## 功能列表
121
+ **parameters**:
15
122
 
123
+ - `key {string}`:参数名称。如果 key 为空,则获取“全部”配置参数。
16
124
 
17
- <a name="2eb2aa84"></a>
18
- ### 1. 获得右面板配置参数
125
+ **example**:
126
+ ```typescript
127
+ import { Parameter, JSONObject } from 'suanpan_node_sdk';
128
+ /**
129
+ * 内置参数
130
+ */
131
+ const userId = Parameter.UserId
132
+ const appId = Parameter.AppId;
133
+ const nodeId = Parameter.NodeId;
134
+ const componentId = Parameter.ComponentId;
19
135
 
136
+ /**
137
+ * 获取“单个”配置参数
138
+ */
139
+ const paramValue = Parameter.get<string>('paramKey');
20
140
 
21
- ```javascript
22
- const { sp } = require('suanpan_node_sdk');
23
- const parameter = sp.parameter
24
- console.log(parameter)
141
+ /**
142
+ * 获取“全部”配置参数
143
+ */
144
+ const params = Parameter.get<JSONObject>();
25
145
  ```
146
+ ## Message
147
+
148
+ Message entity object. The constructor includes headers and payload. The message’s payload Object can not be set after the initial creation. However, the mutability of the header values themselves (or the payload Object) is intentionally left as a decision for the framework user.
149
+ #### constructor(headers, payload)
150
+ ##### headers
151
+
152
+ - headers { [MessageHeaders](#messageHeaders) } - Represents a collection of message headers for a message. **The built-in read-only headers are:**
153
+ - `requestId`:An identifier for this message instance.
154
+ - `timestamp`:The time the message was created. Changes each time a message is mutated.
155
+ ##### payload
156
+
157
+ - payload {Object} - The data type of payload should strictly comply with the input / output port conventions of suanpan, such as: `{ in1: 111 }, { out1: 222 }`. The content wrapped by the message can be any Javascript type, and because the interface is parameterized, you can retrieve the payload in a type-safe fashion.
158
+
159
+
160
+
161
+ **example:**
162
+ ```typescript
163
+ import { Message } from 'suanpan_node_sdk';
164
+
165
+ const customHeader = {
166
+ 'x-stream-id': 'xxxx'
167
+ };
168
+
169
+ const payload = {
170
+ out1: 100
171
+ };
172
+ const message = new Message(customHeader, payload);
173
+ ```
174
+ ## MessageListener
175
+
176
+ 流计算消息监听类,`MessageListener` 提供一个静态方法 `onMessage` 来处理发送的消息。
177
+ ### .onMessage(messageHandler)
178
+ **parameters:**
179
+
180
+ - messageHandler { [MessageHandler](#messageHandler) }:消息处理回调函数。
181
+
182
+ **example** 参照 [**Quick Start**](#quick-Start)
183
+ **​**
184
+
185
+ ## MessageChannelFactory
186
+
187
+ 消息双向管道工厂类,`MessageChannelFactory` 提供一个静态方法 `createMessageChannel` 返回 `MessageChannel` 消息双向管道实例。
188
+ ### .createMessageChannel()
189
+ **return:**
190
+
191
+ - [**MessageChannel**](#messageChannel)
192
+
193
+ **example:**
194
+ ```typescript
195
+ import { MessageChannelFactory } from 'suanpan_node_sdk';
196
+
197
+ (async () => {
198
+ const channel = MessageChannelFactory.createMessageChannel();
199
+ channel.receiveMessage().then(message => {
200
+ /** Business logic here */
201
+ });
202
+ })();
203
+ ```
204
+ ## MessageChannel
205
+
206
+ 消息双向通道**接口**,支撑流计算消息的**接收和发送。不支持用户显示创建,仅能从 MessageChannelFactory 创建**
207
+ ### .receiveMessage()
208
+ 接收消息,用户可以返回的 Message 自定义消息的处理逻辑。
209
+ **return:**
210
+
211
+ - Promise<[**Message**](#message)>
212
+ ### .sendMessage(message)
213
+ **parameters:**
214
+
215
+ - message { [Message](#message)} - 消息实例
216
+
217
+ ### MessageHandler
218
+
219
+ MessageHandler 是 Node SDK 定义的消息处理程序(此处仅表示函数类型),它作为回调函数注册到 channel 中。函数定义如下:
220
+ ```typescript
221
+ type MessageHandler = (message: Message, chain: MessageChain) => void | Promise<void>;
222
+ ```
223
+ 函数参数 parameters 定义中包含:
224
+
225
+ - message { [Message](#message) } - 传递的消息实体
226
+ - chain { [MessageChain](#messageChain) } - 消息链,用于发送同源消息(组件的同步/异步机制)
227
+
228
+ **example**:
229
+ ```typescript
230
+ import { MessageHandler } from 'suanpan_node_sdk';
26
231
 
232
+ const messageHandler: MessageHandler = (message, chain) => {
233
+ const headers = message.headers;
234
+ const payload = message.payload;
27
235
 
28
- <a name="c4665ba5"></a>
29
- ### 2. 发送消息与接受消息
30
- <a name="KRO7Z"></a>
31
- #### 构建发送包
236
+ const requestId = headers.requestId;
237
+ const timestamp = headers.timestamp;
32
238
 
239
+ /** Business logic here */
33
240
 
34
- ```javascript
35
- let msgPackOut = {
36
- out1: "a", //将发送 "a" 到第一个消息出口
37
- out2: "b", //将发送 "b" 到第二个消息出口
241
+ chain.send({ // 发送消息
242
+ out1: 'xxxx',
243
+ out2: true,
244
+ out3: { success: true, result: [1, 2, 3] }
245
+ });
38
246
  }
39
247
  ```
248
+ ## MessageChain
249
+
250
+ 消息链,用于发送同源消息(组件的同步/异步机制)
251
+ ### constructor
252
+
253
+ - message { [Message](#message)} - 消息实体,包含 `headers` 和 `payload` 两部分
254
+ - channel { [MessageChannel](#messageChannel) } - 消息传输双向管道
255
+ ### .send(payload)
256
+ **parameters:**
40
257
 
41
- <br />`msgPackOut` 对象的 `key` `out` 与数字拼接而成的 key,表示第 N 个消息出口<br />`msgPackOut` 对象的 `value` 表示发送到对应出口的数据(value 必须是字符串)<br />
258
+ - payload { Object } - The data type of payload should strictly comply with the output port conventions of suanpan, such as: `{ out1: 111 }, { out2: 222 }`
259
+
260
+ **example:**
261
+ ```typescript
262
+ import { MessageChain, MessageBuilder, MessageChannelFactory } from 'suanpan_node_sdk';
263
+
264
+ (async () => {
42
265
 
43
- <a name="goFXb"></a>
44
- #### 发送信息
45
- ```javascript
46
- sp.sendMessage(msgPackOut)
266
+ const requestMessage = MessageBuilder
267
+ .withPayload({ in1: 'sss'})
268
+ .setHeaderIfAbsent('requestId', 'uuid')
269
+ .setHeaderIfAbsent('x-stream-id', '12345')
270
+ .build();
271
+
272
+ const messageChannel = MessageChannelFactory.createMessageChannel();
273
+ const chain = new MessageChain(requestMessage, messageChannel);
274
+
275
+ chain.send({ out1: 1234 })
276
+ })();
47
277
  ```
278
+ ## MessageBuilder
48
279
 
280
+ 消息建造者。双向消息管道传输媒介 Message 的建造者,并提供多种静态方法帮助用户构建自定义消息。
281
+ ### .fromMessagePayload(message)
282
+ 提取并仅保留 message payload,返回当前建造者实例。
49
283
 
50
- <a name="Cm6Ll"></a>
51
- #### 监听 onMessage
52
- 每当有新消息到达组件,则会触发 Message 事件<br />
284
+ **parameters:**
53
285
 
54
- ```javascript
55
- sp.onMessage(message => {
56
- let msgPackIn = message.body
57
- console.log(msgPackIn)
58
- // msgPackIn结构如下
59
- // {in1:"a"} key(inN) 表示第N个消息入口, value是字符串
60
-
61
- // doSomething here
62
- sp.sendMessage(msgPackOut) // 调用 res.sendMessage 发送数据包到下游节点
63
- })
286
+ - message { [Message](#message) } - 消息实例
287
+
288
+ **return:**
289
+
290
+ - [MessageBuilder](#messageBuilder)
291
+
292
+
293
+
294
+ ### .fromMessageHeaders(message)
295
+ 提取并仅保留 message headers,返回当前建造者实例。
296
+
297
+ **parameters:**
298
+
299
+ - message { [Message](#message) } - 消息实例
300
+
301
+ **return:**
302
+
303
+ - [MessageBuilder](#messageBuilder)
304
+
305
+
306
+
307
+ ### .withPayload(payload)
308
+ 添加消息 payload,返回当前建造者实例。
309
+
310
+ **parameters:**
311
+
312
+ - [payload](#payload)
313
+
314
+ **return:**
315
+
316
+ - [MessageBuilder](#messageBuilder)
317
+
318
+ ### .setHeader(key, value)
319
+ 添加消息 header,返回当前建造者实例。
320
+
321
+ **parameters:**
322
+
323
+ - key {string} - header key's name
324
+ - value {string} - header key's value
325
+
326
+ **return:**
327
+
328
+ - [MessageBuilder](#messageBuilder)
329
+
330
+
331
+ ### .setHeaderIfAbsent(key, value)
332
+ 用法同 [.setHeader](#.setHeader(key,-value)),消息 header key'name 不存在时添加
333
+
334
+
335
+ ### .build()
336
+ 生成消息 Message 实例。
337
+ **return:**
338
+
339
+ - [Message](#message)
340
+
341
+
342
+
343
+ ## Storage
344
+
345
+ Storage 是对对象存储(目前支持 Aliyun OSS以及开源 Minio)API 的封装。
346
+ ### .append(objectName, content)
347
+ Append an object to the bucket, it's almost same as [putObject](#.putObject(objectName,-data)), but it can add content to existing object rather than override it.
348
+ **parameters**:
349
+
350
+ - objectName {string} - Name store on OSS
351
+ - content {string} - What would you like to add to bucket
352
+
353
+ **example**:
354
+ ```typescript
355
+ import { Storage } from 'suanpan_node_sdk';
356
+
357
+ (async () => {
358
+ await Storage.Instance.append('/studio/userId/appId/nodeId/log.txt', 'redis subscribed.');
359
+ })();
64
360
  ```
65
- <a name="ZkoKt"></a>
66
- ####
67
- <a name="lv17Y"></a>
68
- ### 3. Storage Api
69
- ```javascript
70
- const { Storage } = require('suanpan_node_sdk');
361
+ ### .putObject(objectName, data)
362
+ Uploads an object from a stream/Buffer/string.
363
+ **parameters**:
364
+
365
+ - objectName {string} - Name store on OSS
366
+ - data {String | Buffer | ReadStream} - object data
367
+
368
+ **example**:
369
+ ```typescript
370
+ import { Storage } from 'suanpan_node_sdk';
71
371
 
72
372
  (async () => {
373
+ await Storage.Instance.putObject('/studio/userId/appId/nodeId/data.js', 'const f = () => { console.log("a")}');
374
+ })();
375
+ ```
376
+ ### .listObjects(prefix[, recursive][, maxKeys])
377
+ List objects in the bucket.
378
+ **parameters**:
73
379
 
74
- await Storage.instance.getObjectToBuffer(objectName)
75
- await Storage.instance.getObjectToStream(objectName)
76
- await Storage.instance.getObjectToString(objectName)
380
+ - `prefix {string}` - Name prefix store on OSS,such as `/studio/userId/appId/nodeId`
381
+ - `recursive {boolean}` - Default:true。Recursively find all objects under “prefix”
382
+ - `maxKeys {Number}` - Max objects, default is 100, limit to 1000
77
383
 
78
- await Storage.instance.fGetObject(objectName, filePath)
79
- await Storage.instance.fPutObject(objectName, filePath)
384
+ **example:**
385
+ ```typescript
386
+ import { Storage, ObjectItem } from 'suanpan_node_sdk';
80
387
 
81
- await Storage.instance.putObject(objectName, data)
82
- await Storage.instance.listObjects(prefix)
388
+ (async () => {
389
+ const objects: ObjectItem[] = await Storage.Instance.listObjects('/studio/userId/appId/nodeId/', true, 200);
390
+ })();
391
+ ```
392
+ ### .fGetObject(objectName, filePath)
393
+ Downloads and saves the object as a file in the local filesystem.
394
+ **parameters**:
395
+
396
+ - `objectName {string}` - Name store on OSS
397
+ - `filePath {string}` - Path on the local filesystem to which the object data will be written.
83
398
 
84
- await Storage.instance.deleteObject(objectName)
85
- await Storage.instance.deleteMultiObjects(objectNames)
399
+ **example:**
400
+ ```typescript
401
+ import { Storage } from 'suanpan_node_sdk';
402
+
403
+ (async () => {
404
+ await Storage.Instance.fGetObject('/studio/userId/appId/nodeId/coco.ts', '/tmp/coco.ts');
86
405
  })();
87
406
  ```
407
+ ### .fPutObject(objectName, filePath)
408
+ Uploads contents from a file to objectName.
409
+ **parameters**:
88
410
 
411
+ - `objectName {string}` - Name store on OSS
412
+ - `filePath {string}` - Path of the file to be uploaded.
89
413
 
90
- <a name="72a374df"></a>
91
- ### 4. EventLogger Sender
414
+ **example:**
415
+ ```typescript
416
+ import { Storage } from 'suanpan_node_sdk';
92
417
 
93
- <br />提供 log 格式化的存储形式持久化在数据库中,app 释放后仍然保留,用于不同用户查看修改错误,用户重新部署后清除。logkit 能够直接运行在算盘 Server 中,也可以单独运行。架构图:<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/502931/1615780837866-0a9141e8-3da1-4fff-98aa-cc4ace5e7aed.png#align=left&display=inline&height=384&margin=%5Bobject%20Object%5D&name=image.png&originHeight=836&originWidth=1044&size=78619&status=done&style=none&width=480#id=DIDWl&originHeight=836&originWidth=1044&originalType=binary&ratio=1&status=done&style=none)<br />Node Sdk 提供 event log(内部使用 socketio 作为接口的基础协议)接口单向传输到 logkit。<br />
94
- <br />代码示例:<br />
418
+ (async () => {
419
+ await Storage.Instance.fPutObject('/studio/userId/appId/nodeId/coco.ts', '/tmp/coco.ts');
420
+ })();
421
+ ```
422
+ ### .deleteObject(objectName)
423
+ Removes an object. If delete object not exists, will also delete success.
424
+ **parameters**:
95
425
 
96
- ```javascript
97
- let { sp, EventLogger } = require('suanpan_node_sdk');
426
+ - `objectName {string}` - Name store on OSS
98
427
 
99
- const eventLogger = EventLogger.Instance;
428
+ **example:**
429
+ ```typescript
430
+ import { Storage } from 'suanpan_node_sdk';
100
431
 
101
- sp.onMessage(message => {
432
+ (async () => {
433
+ await Storage.Instance.deleteObject('/studio/userId/appId/nodeId/coco.ts');
434
+ })();
435
+ ```
436
+ ### .deleteMultiObjects(objectNames)
437
+ Removes multiple objects.
438
+ **parameters**:
102
439
 
103
- if (!message.body) {
104
- // 发送 event log
105
- eventLogger.warn('received message is empty.');
440
+ - `objectNames {string[]}` - List of objects in the bucket to be removed. such as`['objectname1','objectname2']`
441
+
442
+ **example:**
443
+ ```typescript
444
+ import { Storage } from 'suanpan_node_sdk';
445
+
446
+ (async () => {
447
+ const objectList = ['/studio/userId/appId/nodeId/coco1.ts', '/studio/userId/appId/nodeId/coco2.ts'];
448
+ await Storage.Instance.deleteMultiObjects(objectList);
449
+ })();
450
+ ```
451
+ ### .checkObjectNameExist(objectName)
452
+ Check whether the object exists,Returns true if it exists, otherwise false
453
+ **parameters**:
454
+
455
+ - `objectName {string}` - Name store on OSS
456
+
457
+ **example:**
458
+ ```typescript
459
+ import { Storage } from 'suanpan_node_sdk';
460
+
461
+ (async () => {
462
+ const exist = await Storage.Instance.checkObjectNameExist('/studio/not.json');
463
+ if (exist) {
464
+ // do something
106
465
  }
466
+ })();
467
+ ```
468
+ ### .getObjectToJSON(objectName)
469
+ Get an object to JSON object
470
+ **parameters**:
107
471
 
108
- sp.sendMessage({
109
- out1: 'hello world this send in call'
110
- });
472
+ - `objectName {string}` - Name store on OSS
473
+
474
+ **example:**
475
+ ```typescript
476
+ import { Storage } from 'suanpan_node_sdk';
477
+
478
+ (async () => {
479
+ const json = await Storage.Instance.getObjectToJSON('/studio/not.json');
480
+ })();
481
+ ```
482
+ ### .getObjectToString(objectName)
483
+ Get an object to string.
484
+ **parameters**:
485
+
486
+ - `objectName {string}` - Name store on OSS
487
+
488
+ **example:**
489
+ ```typescript
490
+ import { Storage } from 'suanpan_node_sdk';
491
+
492
+ (async () => {
493
+ const str = await Storage.Instance.getObjectToString('/studio/log.txt');
494
+ })();
495
+ ```
496
+ ### .getObjectToBuffer(objectName)
497
+ Get an object to Buffer.
498
+ **parameters**:
499
+
500
+ - `objectName {string}` - Name store on OSS
501
+
502
+ **example:**
503
+ ```typescript
504
+ import { Storage } from 'suanpan_node_sdk';
505
+
506
+ (async () => {
507
+ const buf = await Storage.Instance.getObjectToBuffer('/studio/log.txt');
508
+ })();
509
+ ```
510
+ ### .getObjectToStream(objectName)
511
+ Get an object to read stream.
512
+
513
+ **parameters:**
514
+
515
+ - `objectName {string}` - Name store on OSS
516
+
517
+ **example:**
518
+ ```typescript
519
+ import { Storage } from 'suanpan_node_sdk';
520
+
521
+ (async () => {
522
+ const stream = await Storage.Instance.getObjectToStream('/studio/demo.txt');
523
+ stream.pipe(fs.createWriteStream('some file.txt'));
524
+ })();
525
+ ```
526
+ ## StoragePath
527
+
528
+ 对象存储路径工具类。
529
+ ### constructor([options])
530
+ | 参数名 | 参数类型 | 是否必填 | 说明 |
531
+ | --- | --- | --- | --- |
532
+ | userId | string | 否 | 用户 Id |
533
+ | appId | string | 否 | 项目 Id |
534
+ | componentId | string | 否 | 组件 Id |
535
+ | nodeId | string | 否 | 节点 Id |
536
+
537
+ ### .getUserPath([userId])
538
+ | 参数名 | 参数类型 | 是否必填 | 说明 |
539
+ | --- | --- | --- | --- |
540
+ | userId | string | 否 | 默认使用当前用户 Id |
541
+
542
+ ### .getAppPath([appId])
543
+ | 参数名 | 参数类型 | 是否必填 | 说明 |
544
+ | --- | --- | --- | --- |
545
+ | appId | string | 否 | 默认使用当前项目Id |
546
+
547
+ ### .getComponentPath([componentId])
548
+ | 参数名 | 参数类型 | 是否必填 | 说明 |
549
+ | --- | --- | --- | --- |
550
+ | componentId | string | 否 | 默认使用当前组件 Id |
551
+
552
+ ### .getNodePath([nodeId])
553
+ | 参数名 | 参数类型 | 是否必填 | 说明 |
554
+ | --- | --- | --- | --- |
555
+ | nodeId | string | 否 | 默认使用当前节点 Id |
556
+
557
+ ### .getAppLogPath([userId][, appId])
558
+ | 参数名 | 参数类型 | 是否必填 | 说明 |
559
+ | --- | --- | --- | --- |
560
+ | userId | string | 否 | 默认使用当前用户 Id |
561
+ | appId | string | 否 | 默认使用当前项目Id |
562
+
563
+ ### .getNodeLogPath([userId][, appId][, nodeId])
564
+ | 参数名 | 参数类型 | 是否必填 | 说明 |
565
+ | --- | --- | --- | --- |
566
+ | userId | string | 否 | 默认使用当前用户 Id |
567
+ | appId | string | 否 | 默认使用当前项目 Id |
568
+ | nodeId | string | 否 | 默认使用当前节点 Id |
569
+
570
+ ### .getAppTempDir([userId][, appId])
571
+ | 参数名 | 参数类型 | 是否必填 | 说明 |
572
+ | --- | --- | --- | --- |
573
+ | userId | string | 否 | 默认使用当前用户 Id |
574
+ | appId | string | 否 | 默认使用当前项目 Id |
575
+
576
+ ## ObjectStorageLogger
577
+
578
+ 对象存储日志收集器
579
+ ### constructor([options](#storageLoggerOptions))
580
+ | **属性名** | **类型** | **是否必填** | **说明** |
581
+ | --- | --- | --- | --- |
582
+ | storagePath | string | **是** | 完整对象存储路径 objectName,例如:`/studio/userId/appId/nodeId/log-2021-1014.txt` |
583
+ | console | boolean | 否 | 默认 false。开启后日志将会 print 到标准输入输出 |
584
+ | level | [Loglevel](#logLevel) | 否 | 默认 1 (debug)。日志等级 |
585
+ | maxItems | number | 否 | 默认 1。表示缓存长度。当日志积累条数 >= maxItems 时,将会触发 flush 操作,将日志上传到对象存储。 |
586
+ | flushInterval | number | 否 | 默认 0,单位 ms。即实时将日志保存到对象存储中。如果想控制每隔 1s 钟收集一次。设置其值为:1000 |
587
+
588
+ ### .info(message[, flush])
589
+ ### .debug(message[, flush])
590
+ ### .warn(message[, flush])
591
+ ### .error(message[, flush])
592
+ **parameters**:
593
+
594
+ - `message {string}` - 日志内容
595
+ - `flush {boolean}` - 默认:false。flush 为 true 时将会立即刷新日志到对象存储。
596
+
597
+ **example:**
598
+ ```typescript
599
+ import { StoragePath, ObjectStorageLogger } from 'suanpan_node_sdk';
600
+
601
+ const storagePath = new StoragePath();
602
+
603
+ const storageLogger = new ObjectStorageLogger({
604
+ storagePath: storagePath.getNodeLogPath() + '/log.txt'
111
605
  });
606
+
607
+ storageLogger.info('append this log');
112
608
  ```
609
+ ## EventLogger
610
+
611
+ - EventLogger 提供日志的结构化存储(持久化在数据库中),模版释放后仍然保留,用于不同用户查看修改错误,用户重新部署后清除。logkit 能够直接运行在算盘 Server 中,也可以单独运行。
612
+ - EventLogger(内部使用 socketio 作为接口的基础协议)单向传输到 logkit。用户可以自己将业务日志通过 EventLogger 发送到算盘 logkit。
613
+ - EventLogger 默认情况下:用户代码(MessageHandler)运行时 Error,将会自动触发 EventLogger 的 error 事件,将结构化错误信息发送到 logkit。
614
+ ### .info(message)
615
+ ### .debug(message)
616
+ ### .warn(message)
617
+ ### .error(message)
618
+ **parameters**:
619
+
620
+ - `message {string}` - logkit 日志内容
113
621
 
114
- <br />默认情况下,用户代码(onCall)中运行时 Error,将会自动触发 event log 的 error 事件,将结构化错误信息发送到 logkit。等于在 `after onCall` 中插入如下代码:<br />
622
+ **example:**
623
+
624
+ ```typescript
625
+ import { EventLogger, MessageListener, MessageHandler } from 'suanpan_node_sdk';
626
+
627
+ const messageHandler: MessageHandler = (message, chain) => {
628
+ const headers = message.headers;
629
+ const payload = message.payload;
630
+
631
+ const requestId = headers.requestId;
632
+ const timestamp = headers.timestamp;
633
+
634
+ if(!payload.in1) {
635
+ EventLogger.Instance.error('received message is empty.');
636
+ return;
637
+ }
115
638
 
116
- ```javascript
117
- eventLogger.error(e.message)
639
+ chain.send({ // 发送消息
640
+ out1: 'xxxx',
641
+ out2: true,
642
+ out3: { success: true, result: [1, 2, 3] }
643
+ });
644
+ }
645
+
646
+ MessageListener.onMessage(messageHandler);
118
647
  ```
648
+ # Type Reference
119
649
 
120
- <br />**注**:确保 sdk 版本在 `1.4.2` 以上
650
+ - [MessageHeaders](#messageHeaders)
651
+ - [LogLevel](#logLevel)
652
+ - [StorageLoggerOptions](#storageLoggerOptions)
653
+ - [Platform](#platform)
654
+ ## MessageHeaders
655
+ ```typescript
656
+ export interface MessageHeaders {
657
+ requestId: string;
658
+ timestamp: number;
659
+ extra: JSONObject;
660
+ }
661
+ ```
662
+ ## LogLevel
663
+ ```typescript
664
+ export enum LogLevel {
665
+ DEBUG = 1,
666
+ INFO = 2,
667
+ WARN = 3,
668
+ ERROR = 4
669
+ }
670
+ ```
671
+ ## StorageLoggerOptions
672
+ ```typescript
673
+ type StorageLoggerOptions = {
674
+ storagePath: string;
675
+ console?: boolean;
676
+ level?: LogLevel;
677
+ maxItems?: number;
678
+ flushInterval?: number;
679
+ };
680
+ ```
681
+ ## Platform
682
+ ```typescript
683
+ enum Platform {
684
+ WINDOWS = 0,
685
+ MACINTOSH = 1,
686
+ LINUX = 2
687
+ }
688
+ ```
@@ -1,11 +1,11 @@
1
- import type { JSONObject, RequestStream, ResponseStream } from '../../types';
1
+ import type { InputPortsMap, JSONObject, RequestStream, ResponseStream, OutPortsMap } from '../../types';
2
2
  export interface MessageHeaders {
3
3
  requestId: string;
4
4
  timestamp: number;
5
5
  extra: JSONObject;
6
6
  }
7
7
  export declare class Message {
8
- payload: JSONObject;
8
+ payload: InputPortsMap<string> | OutPortsMap<string>;
9
9
  headers: MessageHeaders;
10
10
  constructor(headers: MessageHeaders, payload: JSONObject);
11
11
  static fromRequestStream(request: RequestStream): Message;
@@ -7,7 +7,6 @@ exports.Message = void 0;
7
7
  const lodash_1 = __importDefault(require("lodash"));
8
8
  const serialize_javascript_1 = __importDefault(require("serialize-javascript"));
9
9
  const environment_1 = require("../parameter/environment");
10
- const utils_1 = require("../utils");
11
10
  const messageBuilder_1 = require("./messageBuilder");
12
11
  const PORT_IN_REG = /^in[1-9][0-9]*$/;
13
12
  class Message {
@@ -16,12 +15,11 @@ class Message {
16
15
  this.payload = payload;
17
16
  }
18
17
  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));
18
+ const inputPortsMap = lodash_1.default.pickBy(request, (value, key) => key.match(PORT_IN_REG));
21
19
  return messageBuilder_1.MessageBuilder
22
20
  .withPayload(inputPortsMap)
23
- .setHeaderIfAbsent('requestId', deserializedRequest.id)
24
- .setHeaderIfAbsent('extra', deserializedRequest.extra)
21
+ .setHeaderIfAbsent('requestId', request.id)
22
+ .setHeaderIfAbsent('extra', request.extra)
25
23
  .build();
26
24
  }
27
25
  /**
@@ -1 +1 @@
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,qBAAqB,CAAC,IAAkB;QAC9C,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,qBAAqB,CAAC,oBAAoB,CAAmB,CAAC;IAC5E,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,qBAAqB,CAAC,oBAAoB,CAAmB,CAAC;IAC5E,CAAC;CACF;AAvDD,0BAuDC"}
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/core/message/message.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AACvB,gFAA6C;AAE7C,0DAAuD;AACvD,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,aAAa,GAAG,gBAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAuB,CAAC;QAEtG,OAAO,+BAAc;aAClB,WAAW,CAAC,aAAa,CAAC;aAC1B,iBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;aAC1C,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC;aACzC,KAAK,EAAE,CAAC;IACb,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAAC,IAAkB;QAC9C,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,qBAAqB,CAAC,oBAAoB,CAAmB,CAAC;IAC5E,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,qBAAqB,CAAC,oBAAoB,CAAmB,CAAC;IAC5E,CAAC;CACF;AAtDD,0BAsDC"}
@@ -3,7 +3,6 @@ import type { JSONObject } from '../../types';
3
3
  export declare class MessageBuilder {
4
4
  private static _payload;
5
5
  private static _headers;
6
- static fromMessage(message: Message): typeof MessageBuilder;
7
6
  static fromMessagePayload(message: Message): typeof MessageBuilder;
8
7
  static fromMessageHeaders(message: Message): typeof MessageBuilder;
9
8
  static withPayload(payload: JSONObject): typeof MessageBuilder;
@@ -9,12 +9,8 @@ const DEFAULT_MESSAGE_HEADERS = {
9
9
  timestamp: 0
10
10
  };
11
11
  class MessageBuilder {
12
- static fromMessage(message) {
13
- this._payload = message.payload;
14
- return this;
15
- }
16
12
  static fromMessagePayload(message) {
17
- this.fromMessage(message);
13
+ this._payload = message.payload;
18
14
  return this;
19
15
  }
20
16
  static fromMessageHeaders(message) {
@@ -1 +1 @@
1
- {"version":3,"file":"messageBuilder.js","sourceRoot":"","sources":["../../../src/core/message/messageBuilder.ts"],"names":[],"mappings":";;;AAAA,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
+ {"version":3,"file":"messageBuilder.js","sourceRoot":"","sources":["../../../src/core/message/messageBuilder.ts"],"names":[],"mappings":";;;AAAA,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,kBAAkB,CAAC,OAAgB;QACxC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,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;;AAhDH,wCAiDC;AA9CgB,uBAAQ,GAAG,uBAAuB,CAAC"}
@@ -46,7 +46,7 @@ class RedisClient extends events.EventEmitter {
46
46
  }
47
47
  initMQClient() {
48
48
  if (!this._client) {
49
- this._client = new suanpan_mq_1.SPMQClient({ host: environment_1.Environment.mq.host, readWriteSeparation: true });
49
+ this._client = new suanpan_mq_1.SPMQClient({ host: environment_1.Environment.mq.host, readWriteSeparation: true, port: environment_1.Environment.mq.port });
50
50
  const queue = environment_1.Environment.mq.receiveQueue;
51
51
  const callback = (qMessage) => __awaiter(this, void 0, void 0, function* () {
52
52
  if (qMessage.data) {
@@ -1 +1 @@
1
- {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../../../src/core/message/mq/redis.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AACjC,2DAAsC;AAItC,uCAAqC;AACrC,wCAAqC;AACrC,6DAA0D;AAC1D,uCAAkD;AAClD,2CAAyH;AACzH,MAAa,WAAY,SAAQ,MAAM,CAAC,YAAY;IAGlD;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAEjB,IAAI,CAAC,OAAO,GAAG,IAAI,uBAAU,CAAC,EAAE,IAAI,EAAE,yBAAW,CAAC,EAAE,CAAC,IAAc,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;YAElG,MAAM,KAAK,GAAG,yBAAW,CAAC,EAAE,CAAC,YAAsB,CAAC;YAEpD,MAAM,QAAQ,GAA2B,CAAO,QAAsB,EAAE,EAAE;gBACxE,IAAI,QAAQ,CAAC,IAAI,EAAE;oBACjB,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAqB,CAAC;oBACrD,MAAM,OAAO,GAAG,iBAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;oBACzD,IAAI,CAAC,IAAI,CAAC,2BAAmB,CAAC,IAAI,EAAE,IAAI,2BAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;iBACvE;qBAAM;oBACL,aAAM,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAClE,aAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;iBAC9E;YACH,CAAC,CAAA,CAAC;YACF,uHAAuH;YACvH,MAAM,WAAW,GAA0B,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAEzE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;SAC1C;IACH,CAAC;IAEO,wBAAwB,CAAC,cAA8B;QAC7D,MAAM,MAAM,GAAG,yBAAW,CAAC,EAAE,CAAC,kBAA4B,CAAC;QAC3D,MAAM,eAAe,GAAG,yBAAW,CAAC,EAAE,CAAC,wBAAwB,CAAC;QAChE,OAAO;YACL,KAAK,EAAE,yBAAW,CAAC,EAAE,CAAC,SAAmB;YACzC,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;YACxC,eAAe,EAAE,cAAM,CAAC,eAAe,CAAC;SACzC,CAAC;IACJ,CAAC;IAEK,WAAW,CAAC,cAA8B;;YAC9C,IAAI;gBACF,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;gBAClE,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;aAC7C;YAAC,OAAO,CAAC,EAAE;gBACV,aAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;gBAClD,MAAM,CAAC,CAAC;aACT;QACH,CAAC;KAAA;CACF;AArDD,kCAqDC"}
1
+ {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../../../src/core/message/mq/redis.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AACjC,2DAAsC;AAItC,uCAAqC;AACrC,wCAAqC;AACrC,6DAA0D;AAC1D,uCAAkD;AAClD,2CAAyH;AACzH,MAAa,WAAY,SAAQ,MAAM,CAAC,YAAY;IAGlD;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAEjB,IAAI,CAAC,OAAO,GAAG,IAAI,uBAAU,CAAC,EAAE,IAAI,EAAE,yBAAW,CAAC,EAAE,CAAC,IAAc,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,yBAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAE7H,MAAM,KAAK,GAAG,yBAAW,CAAC,EAAE,CAAC,YAAsB,CAAC;YAEpD,MAAM,QAAQ,GAA2B,CAAO,QAAsB,EAAE,EAAE;gBACxE,IAAI,QAAQ,CAAC,IAAI,EAAE;oBACjB,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAqB,CAAC;oBACrD,MAAM,OAAO,GAAG,iBAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;oBACzD,IAAI,CAAC,IAAI,CAAC,2BAAmB,CAAC,IAAI,EAAE,IAAI,2BAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;iBACvE;qBAAM;oBACL,aAAM,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAClE,aAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;iBAC9E;YACH,CAAC,CAAA,CAAC;YACF,uHAAuH;YACvH,MAAM,WAAW,GAA0B,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAEzE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;SAC1C;IACH,CAAC;IAEO,wBAAwB,CAAC,cAA8B;QAC7D,MAAM,MAAM,GAAG,yBAAW,CAAC,EAAE,CAAC,kBAA4B,CAAC;QAC3D,MAAM,eAAe,GAAG,yBAAW,CAAC,EAAE,CAAC,wBAAwB,CAAC;QAChE,OAAO;YACL,KAAK,EAAE,yBAAW,CAAC,EAAE,CAAC,SAAmB;YACzC,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;YACxC,eAAe,EAAE,cAAM,CAAC,eAAe,CAAC;SACzC,CAAC;IACJ,CAAC;IAEK,WAAW,CAAC,cAA8B;;YAC9C,IAAI;gBACF,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;gBAClE,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;aAC7C;YAAC,OAAO,CAAC,EAAE;gBACV,aAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;gBAClD,MAAM,CAAC,CAAC;aACT;QACH,CAAC;KAAA;CACF;AArDD,kCAqDC"}
@@ -46,6 +46,7 @@ export declare class Environment {
46
46
  sendQueueMaxLength: any;
47
47
  sendQueueTrimImmediately: any;
48
48
  host: any;
49
+ port: any;
49
50
  type: any;
50
51
  };
51
52
  static readonly oss: {
@@ -64,6 +64,7 @@ Environment.mq = {
64
64
  sendQueueMaxLength: commandArgs_1.argvs['stream-send-queue-max-length'] || process.env.SP_STREAM_SEND_QUEUE_MAX_LENGTH,
65
65
  sendQueueTrimImmediately: commandArgs_1.argvs['stream-send-queue-trim-immediately'] || process.env.SP_STREAM_SEND_QUEUE_TRIM_IMMEDIATELY,
66
66
  host: commandArgs_1.argvs['mq-redis-host'] || process.env.SP_MQ_REDIS_HOST,
67
+ port: commandArgs_1.argvs['mq-redis-port'] || process.env.SP_MQ_REDIS_PORT || 6379,
67
68
  type: commandArgs_1.argvs['mq-type'] || process.env.SP_MQ_TYPE
68
69
  };
69
70
  Environment.oss = {
@@ -1 +1 @@
1
- {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../src/core/parameter/environment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../src/core/parameter/environment.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,3 @@ export interface ResponseStream extends OutPortsMap<string> {
19
19
  extra?: string;
20
20
  msg?: string;
21
21
  }
22
- export declare type DeserializedRequestStream = {
23
- [P in keyof RequestStream]: any;
24
- };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "suanpan_node_sdk",
3
- "version": "2.0.1",
3
+ "version": "2.0.5",
4
4
  "description": "suanpan sdk for node.js",
5
5
  "main": "dist/main.js",
6
6
  "types": "dist/main.d.ts",
@@ -17,8 +17,7 @@
17
17
  "lint": "./node_modules/.bin/eslint src --ext .ts,.js",
18
18
  "lint-fix": "./node_modules/.bin/eslint --fix --ext .ts,.js .",
19
19
  "prebuild": "make prebuild",
20
- "build": "make build",
21
- "prepublish": "npm run build"
20
+ "build": "make build"
22
21
  },
23
22
  "files": [
24
23
  "dist",