suanpan_node_sdk 2.0.0 → 2.0.4
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 +644 -76
- package/dist/core/message/channel.d.ts +1 -4
- package/dist/core/message/channelFactory.d.ts +1 -1
- package/dist/core/message/channelFactory.js +1 -2
- package/dist/core/message/channelFactory.js.map +1 -1
- package/dist/core/message/message.d.ts +4 -4
- package/dist/core/message/message.js +6 -8
- package/dist/core/message/message.js.map +1 -1
- package/dist/core/message/messageBuilder.d.ts +0 -1
- package/dist/core/message/messageBuilder.js +2 -6
- package/dist/core/message/messageBuilder.js.map +1 -1
- package/dist/core/message/messageListener.js +2 -3
- package/dist/core/message/messageListener.js.map +1 -1
- package/dist/core/message/mq/index.d.ts +3 -3
- package/dist/core/message/mq/index.js +7 -3
- package/dist/core/message/mq/index.js.map +1 -1
- package/dist/core/message/mq/redis.js +1 -1
- package/dist/core/message/mq/redis.js.map +1 -1
- package/dist/core/parameter/environment.d.ts +1 -0
- package/dist/core/parameter/environment.js +1 -0
- package/dist/core/parameter/environment.js.map +1 -1
- package/dist/core/parameter/index.d.ts +5 -6
- package/dist/core/parameter/index.js +8 -6
- package/dist/core/parameter/index.js.map +1 -1
- package/dist/types/streamTypes.d.ts +0 -3
- package/package.json +2 -3
package/README.md
CHANGED
|
@@ -1,120 +1,688 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
+

|
|
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
|
-
|
|
14
|
-
## 功能列表
|
|
121
|
+
**parameters**:
|
|
15
122
|
|
|
123
|
+
- `key {string}`:参数名称。如果 key 为空,则获取“全部”配置参数。
|
|
16
124
|
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
29
|
-
|
|
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
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
|
|
51
|
-
#### 监听 onMessage
|
|
52
|
-
每当有新消息到达组件,则会触发 Message 事件<br />
|
|
284
|
+
**parameters:**
|
|
53
285
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
-
|
|
79
|
-
|
|
384
|
+
**example:**
|
|
385
|
+
```typescript
|
|
386
|
+
import { Storage, ObjectItem } from 'suanpan_node_sdk';
|
|
80
387
|
|
|
81
|
-
|
|
82
|
-
|
|
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
|
-
|
|
85
|
-
|
|
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
|
-
|
|
91
|
-
|
|
414
|
+
**example:**
|
|
415
|
+
```typescript
|
|
416
|
+
import { Storage } from 'suanpan_node_sdk';
|
|
92
417
|
|
|
93
|
-
|
|
94
|
-
|
|
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
|
-
|
|
97
|
-
let { sp, EventLogger } = require('suanpan_node_sdk');
|
|
426
|
+
- `objectName {string}` - Name store on OSS
|
|
98
427
|
|
|
99
|
-
|
|
428
|
+
**example:**
|
|
429
|
+
```typescript
|
|
430
|
+
import { Storage } from 'suanpan_node_sdk';
|
|
100
431
|
|
|
101
|
-
|
|
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
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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
|
-
|
|
109
|
-
|
|
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
|
-
|
|
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
|
-
|
|
117
|
-
|
|
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
|
-
|
|
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
|
+
```
|
|
@@ -2,9 +2,6 @@ import type { Message } from './message';
|
|
|
2
2
|
import type { MessageChain } from './messageChain';
|
|
3
3
|
export declare type MessageHandler = (message: Message, chain: MessageChain) => void | Promise<void>;
|
|
4
4
|
export interface MessageChannel {
|
|
5
|
+
receiveMessage(): Promise<Message>;
|
|
5
6
|
sendMessage(message: Message): Promise<void>;
|
|
6
7
|
}
|
|
7
|
-
export interface SubscribableChannel extends MessageChannel {
|
|
8
|
-
subscribe(handler: MessageHandler): void;
|
|
9
|
-
unsubscribe(handler: MessageHandler): void;
|
|
10
|
-
}
|
|
@@ -3,8 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.MessageChannelFactory = void 0;
|
|
4
4
|
const mq_1 = require("./mq");
|
|
5
5
|
class MessageChannelFactory {
|
|
6
|
-
static
|
|
7
|
-
// TODO:
|
|
6
|
+
static createMessageChannel() {
|
|
8
7
|
return new mq_1.RedisStreamChannel();
|
|
9
8
|
}
|
|
10
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channelFactory.js","sourceRoot":"","sources":["../../../src/core/message/channelFactory.ts"],"names":[],"mappings":";;;AACA,6BAA0C;
|
|
1
|
+
{"version":3,"file":"channelFactory.js","sourceRoot":"","sources":["../../../src/core/message/channelFactory.ts"],"names":[],"mappings":";;;AACA,6BAA0C;AAC1C,MAAa,qBAAqB;IAChC,MAAM,CAAC,oBAAoB;QACzB,OAAO,IAAI,uBAAkB,EAAE,CAAC;IAClC,CAAC;CACF;AAJD,sDAIC"}
|
|
@@ -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
|
-
extra:
|
|
5
|
+
extra: JSONObject;
|
|
6
6
|
}
|
|
7
7
|
export declare class Message {
|
|
8
|
-
payload:
|
|
8
|
+
payload: InputPortsMap<string> | OutPortsMap<string>;
|
|
9
9
|
headers: MessageHeaders;
|
|
10
10
|
constructor(headers: MessageHeaders, payload: JSONObject);
|
|
11
11
|
static fromRequestStream(request: RequestStream): Message;
|
|
@@ -13,7 +13,7 @@ export declare class Message {
|
|
|
13
13
|
* @param data JSON Object
|
|
14
14
|
* @returns JSON Object with the same key as param @param data
|
|
15
15
|
*/
|
|
16
|
-
private
|
|
16
|
+
private _serializeIfNecessary;
|
|
17
17
|
toResponseStream(): ResponseStream;
|
|
18
18
|
toErrorResponseStream(errorMessage: string): ResponseStream;
|
|
19
19
|
}
|
|
@@ -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,19 +15,18 @@ class Message {
|
|
|
16
15
|
this.payload = payload;
|
|
17
16
|
}
|
|
18
17
|
static fromRequestStream(request) {
|
|
19
|
-
const
|
|
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',
|
|
24
|
-
.setHeaderIfAbsent('extra',
|
|
21
|
+
.setHeaderIfAbsent('requestId', request.id)
|
|
22
|
+
.setHeaderIfAbsent('extra', request.extra)
|
|
25
23
|
.build();
|
|
26
24
|
}
|
|
27
25
|
/**
|
|
28
26
|
* @param data JSON Object
|
|
29
27
|
* @returns JSON Object with the same key as param @param data
|
|
30
28
|
*/
|
|
31
|
-
|
|
29
|
+
_serializeIfNecessary(data) {
|
|
32
30
|
const serializedResponse = lodash_1.default.mapValues(data, (v) => {
|
|
33
31
|
return lodash_1.default.isString(v) ? v : serialize_javascript_1.default(v);
|
|
34
32
|
});
|
|
@@ -43,7 +41,7 @@ class Message {
|
|
|
43
41
|
type: 'call',
|
|
44
42
|
extra: (_b = this.headers) === null || _b === void 0 ? void 0 : _b.extra
|
|
45
43
|
}, this.payload);
|
|
46
|
-
return this.
|
|
44
|
+
return this._serializeIfNecessary(unSerializedResponse);
|
|
47
45
|
}
|
|
48
46
|
toErrorResponseStream(errorMessage) {
|
|
49
47
|
var _a, _b;
|
|
@@ -55,7 +53,7 @@ class Message {
|
|
|
55
53
|
msg: errorMessage,
|
|
56
54
|
extra: (_b = this.headers) === null || _b === void 0 ? void 0 : _b.extra
|
|
57
55
|
}, this.payload);
|
|
58
|
-
return this.
|
|
56
|
+
return this._serializeIfNecessary(unSerializedResponse);
|
|
59
57
|
}
|
|
60
58
|
}
|
|
61
59
|
exports.Message = Message;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/core/message/message.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AACvB,gFAA6C;AAE7C,0DAAuD;AACvD,
|
|
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;
|
|
@@ -5,16 +5,12 @@ const utils_1 = require("../utils");
|
|
|
5
5
|
const message_1 = require("./message");
|
|
6
6
|
const DEFAULT_MESSAGE_HEADERS = {
|
|
7
7
|
requestId: '',
|
|
8
|
-
extra:
|
|
8
|
+
extra: {},
|
|
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.
|
|
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,
|
|
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"}
|
|
@@ -4,9 +4,8 @@ exports.MessageListener = void 0;
|
|
|
4
4
|
const mq_1 = require("./mq");
|
|
5
5
|
class MessageListener {
|
|
6
6
|
static onMessage(handler) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
channel.subscribe(handler);
|
|
7
|
+
const messageChannel = new mq_1.RedisStreamChannel();
|
|
8
|
+
messageChannel.subscribe(handler);
|
|
10
9
|
}
|
|
11
10
|
}
|
|
12
11
|
exports.MessageListener = MessageListener;
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,MAAM,cAAc,GAAG,IAAI,uBAAkB,EAAE,CAAC;QAChD,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;CACF;AALD,0CAKC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Message } from '../message';
|
|
2
|
-
import type { MessageHandler,
|
|
3
|
-
export declare class RedisStreamChannel implements
|
|
2
|
+
import type { MessageHandler, MessageChannel } from '../channel';
|
|
3
|
+
export declare class RedisStreamChannel implements MessageChannel {
|
|
4
4
|
private _client;
|
|
5
5
|
constructor();
|
|
6
|
+
receiveMessage(): Promise<Message>;
|
|
6
7
|
subscribe(handler: MessageHandler): void;
|
|
7
|
-
unsubscribe(handler: MessageHandler): boolean;
|
|
8
8
|
sendMessage(message: Message): Promise<void>;
|
|
9
9
|
}
|
|
@@ -19,6 +19,13 @@ class RedisStreamChannel {
|
|
|
19
19
|
constructor() {
|
|
20
20
|
this._client = new redis_1.RedisClient();
|
|
21
21
|
}
|
|
22
|
+
receiveMessage() {
|
|
23
|
+
return new Promise((resolve, reject) => {
|
|
24
|
+
this._client.once(event_1.MessageReachedEvent.NAME, (event) => {
|
|
25
|
+
resolve(event.message);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
}
|
|
22
29
|
subscribe(handler) {
|
|
23
30
|
this._client.on(event_1.MessageReachedEvent.NAME, (event) => __awaiter(this, void 0, void 0, function* () {
|
|
24
31
|
const requestMessage = event.message;
|
|
@@ -33,9 +40,6 @@ class RedisStreamChannel {
|
|
|
33
40
|
}
|
|
34
41
|
}));
|
|
35
42
|
}
|
|
36
|
-
unsubscribe(handler) {
|
|
37
|
-
throw new Error('Method not implemented.');
|
|
38
|
-
}
|
|
39
43
|
sendMessage(message) {
|
|
40
44
|
return __awaiter(this, void 0, void 0, function* () {
|
|
41
45
|
const responseStream = message.toResponseStream();
|
|
@@ -1 +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;
|
|
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;AAIlD,MAAa,kBAAkB;IAG7B;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAW,EAAE,CAAC;IACnC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,2BAAmB,CAAC,IAAI,EAAE,CAAC,KAA0B,EAAE,EAAE;gBACzE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,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;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;AAjCD,gDAiCC"}
|
|
@@ -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;
|
|
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"}
|
|
@@ -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":";;;AAAA,+CAAsC;AACtC,uCAAuC;AAEvC,SAAgB,WAAW;IACzB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;QAChC,OAAO,gBAAQ,CAAC,KAAK,CAAC;KACvB;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;QACjC,OAAO,gBAAQ,CAAC,SAAS,CAAC;KAC3B;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;QAChC,OAAO,gBAAQ,CAAC,OAAO,CAAC;KACzB;IACD,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AACtD,CAAC;AAXD,kCAWC;AAED,MAAa,WAAW;;AAAxB,
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../src/core/parameter/environment.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { AnyJSON } from '../../types';
|
|
2
1
|
export declare class Parameter {
|
|
3
|
-
static get UserId(): string
|
|
4
|
-
static get AppId(): string
|
|
5
|
-
static get ComponentId():
|
|
6
|
-
static get NodeId(): string
|
|
7
|
-
static get(key?: string):
|
|
2
|
+
static get UserId(): string;
|
|
3
|
+
static get AppId(): string;
|
|
4
|
+
static get ComponentId(): string;
|
|
5
|
+
static get NodeId(): string;
|
|
6
|
+
static get<T extends unknown>(key?: string): T;
|
|
8
7
|
}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.Parameter = void 0;
|
|
7
|
-
|
|
4
|
+
require("lodash");
|
|
8
5
|
const commandArgs_1 = require("./commandArgs");
|
|
9
6
|
const environment_1 = require("./environment");
|
|
10
7
|
const constant_1 = require("../common/constant");
|
|
@@ -22,10 +19,15 @@ class Parameter {
|
|
|
22
19
|
return environment_1.Environment.stream.nodeId;
|
|
23
20
|
}
|
|
24
21
|
static get(key) {
|
|
25
|
-
if (key) {
|
|
22
|
+
if (key !== undefined) {
|
|
26
23
|
return commandArgs_1.argvs[key];
|
|
27
24
|
}
|
|
28
|
-
|
|
25
|
+
for (const filterKey of constant_1.COMMAND_FILTER_KEYS) {
|
|
26
|
+
if (commandArgs_1.argvs[filterKey]) {
|
|
27
|
+
delete commandArgs_1.argvs[filterKey];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return commandArgs_1.argvs;
|
|
29
31
|
}
|
|
30
32
|
}
|
|
31
33
|
exports.Parameter = Parameter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/parameter/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/parameter/index.ts"],"names":[],"mappings":";;;AAAA,kBAAuB;AACvB,+CAAsC;AACtC,+CAA4C;AAC5C,iDAAyD;AACzD,MAAa,SAAS;IAEpB,MAAM,KAAK,MAAM;QACf,OAAO,yBAAW,CAAC,MAAM,CAAC,MAAgB,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,KAAK;QACd,OAAO,yBAAW,CAAC,MAAM,CAAC,KAAe,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,WAAW;QACpB,OAAO,yBAAW,CAAC,MAAM,CAAC,WAAqB,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,yBAAW,CAAC,MAAM,CAAC,MAAgB,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,GAAG,CAAoB,GAAY;QACxC,IAAI,GAAG,KAAK,SAAS,EAAE;YAAE,OAAO,mBAAK,CAAC,GAAG,CAAC,CAAC;SAAE;QAE7C,KAAK,MAAM,SAAS,IAAI,8BAAmB,EAAE;YAC3C,IAAI,mBAAK,CAAC,SAAS,CAAC,EAAE;gBACpB,OAAO,mBAAK,CAAC,SAAS,CAAC,CAAC;aACzB;SACF;QACD,OAAO,mBAAU,CAAC;IACpB,CAAC;CACF;AA5BD,8BA4BC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "suanpan_node_sdk",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.4",
|
|
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",
|