nayota-show-sdk 0.0.3 → 0.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/api/alarmRecord.js +4 -6
- package/api/product.js +191 -1
- package/api/router.js +93 -0
- package/api/systeminfo.js +57 -0
- package/index.js +5 -1
- package/package.json +1 -1
package/api/alarmRecord.js
CHANGED
|
@@ -5,10 +5,9 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { requestShow } from '../utils'
|
|
7
7
|
|
|
8
|
-
|
|
9
8
|
/**
|
|
10
9
|
* 获取列表
|
|
11
|
-
* @param {*} query
|
|
10
|
+
* @param {*} query
|
|
12
11
|
* @param {number} query.page - 页码
|
|
13
12
|
* @param {number} query.limit - 每页数量
|
|
14
13
|
* @param {string} query.label - 模糊查询关键字
|
|
@@ -214,10 +213,9 @@ export function exportAlarmRecord(data) {
|
|
|
214
213
|
})
|
|
215
214
|
}
|
|
216
215
|
|
|
217
|
-
|
|
218
216
|
/**
|
|
219
217
|
* 获取报警详情
|
|
220
|
-
* @param {string} 报警id
|
|
218
|
+
* @param {string} 报警id
|
|
221
219
|
* @returns {Object} - 响应对象,其中包含表示操作成功与否的代码。
|
|
222
220
|
* @returns {number} code - 返回码,0表示成功。
|
|
223
221
|
* @returns {Object} data - 报警记录对象 字段见list返回字段
|
|
@@ -246,7 +244,7 @@ export function updateOne(data) {
|
|
|
246
244
|
|
|
247
245
|
/**
|
|
248
246
|
* 删除报警
|
|
249
|
-
* @param {string} 报警id
|
|
247
|
+
* @param {string} 报警id
|
|
250
248
|
* @returns {Object} - 响应对象,其中包含表示操作成功与否的代码。
|
|
251
249
|
* @returns {number} code - 返回码,0表示成功。
|
|
252
250
|
* @returns {Object} data - 报警记录对象 字段见list返回字段
|
|
@@ -260,7 +258,7 @@ export function deleteOne(id) {
|
|
|
260
258
|
|
|
261
259
|
/**
|
|
262
260
|
* 批量删除报警
|
|
263
|
-
* @param {Array} 报警ids
|
|
261
|
+
* @param {Array} 报警ids
|
|
264
262
|
* @returns {Object} - 响应对象,其中包含表示操作成功与否的代码。
|
|
265
263
|
* @returns {number} code - 返回码,0表示成功。
|
|
266
264
|
*/
|
package/api/product.js
CHANGED
|
@@ -5,7 +5,197 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { requestShow as request } from '../utils'
|
|
7
7
|
|
|
8
|
-
//
|
|
8
|
+
// name 是 string 设备名称。
|
|
9
|
+
// shortAddress 是 number 485设备/Http设备为设备短地址,TCP设备为设备mac地址,注意:Hardware(485)/NetDrive(TCP)/HttpDrive(Http)设备类型才有此参数且是必选。
|
|
10
|
+
// depart 是 string 可视化层级的id。
|
|
11
|
+
// control 是 number 网关id。
|
|
12
|
+
// parentType 否 string 485设备所属父级设备的类型,tcp1,mqtt2.注意:Hardware(485)设备类型才有此参数。
|
|
13
|
+
// parentId 否 string 所属mqtt设备的id或者所属tcp设备的id,注意:Hardware(485)设备类型才有此参数。
|
|
14
|
+
// type 否 number 0:OTTA,1:ABP,Loranwan设备类型,注意:Lorawan设备类型才有此参数。
|
|
15
|
+
// devEui 否 string 注意:Lorawan设备类型才有此参数,type为0和1时必选。
|
|
16
|
+
// deviceProfileId 否 string 注意:Lorawan设备类型才有此参数,type为0和1时必选。
|
|
17
|
+
// deviceKeys 否 string 注意:Lorawan设备类型才有此参数,type为0时必选。
|
|
18
|
+
// devAddr 否 string 注意:Lorawan设备类型才有此参数,type为1时必选。
|
|
19
|
+
// nwkSkey 否 string 注意:Lorawan设备类型才有此参数,type为1时必选。
|
|
20
|
+
// appSkey 否 string 注意:Lorawan设备类型才有此参数,type为1时必选。
|
|
21
|
+
// type 否 number 0:tcp客户端,1:tcp服务端,2:udp客户端,3:udp服务端,tcp设备类型,注意:NetDrive设备类型才有此参数。
|
|
22
|
+
// range 否 number 设备轮询时间ms单位
|
|
23
|
+
// tcp_client_ip 否 string tcpIp,注意:NetDrive设备类型才有此参数且必选。
|
|
24
|
+
// tcp_client_port 否 string tcp端口,注意:NetDrive设备类型才有此参数,type为1时必选。
|
|
25
|
+
// udp_client_ip 否 string udpIp,注意:NetDrive设备类型才有此参数且必选。
|
|
26
|
+
// udp_client_port 否 string udp端口,注意:NetDrive设备类型才有此参数,type为3时必选。
|
|
27
|
+
// ip 否 string 设备IP地址,注意:HttpDrive设备类型才有此参数且必选。
|
|
28
|
+
// port 否 string 设备端口默认80,注意:HttpDrive设备类型才有此参数且必选。
|
|
29
|
+
// url 否 string 设备url,注意:HttpDrive设备类型才有此参数且必选。
|
|
30
|
+
// range 否 number 设备轮询时间ms单位,默认为3000ms,注意:HttpDrive设备类型才有此参数且必选。
|
|
31
|
+
// describe, line, hasPtz
|
|
32
|
+
/**
|
|
33
|
+
* 创建多平台设备
|
|
34
|
+
*
|
|
35
|
+
* @param {Object} data - 包含参数的请求体。
|
|
36
|
+
* @param {string} data.name - 设备名称。
|
|
37
|
+
* @param {number} data.shortAddress - 485设备/Http设备为设备短地址,TCP设备为设备mac地址,注意:Hardware(485)/NetDrive(TCP)/HttpDrive(Http)设备类型才有此参数且是必选。
|
|
38
|
+
* @param {string} data.depart - 可视化层级的id。
|
|
39
|
+
* @param {string} data.control - 网关id。
|
|
40
|
+
* @param {number} data.parentType - 485设备所属父级设备的类型,tcp1,mqtt2.注意:Hardware(485)设备类型才有此参数。
|
|
41
|
+
* @param {string} data.parentId - 所属mqtt设备的id或者所属tcp设备的id,注意:Hardware(485)设备类型才有此参数。
|
|
42
|
+
* @param {number} data.type - 0:OTTA,1:ABP,Loranwan设备类型,注意:Lorawan设备类型才有此参数。
|
|
43
|
+
* @param {string} data.devEui - 注意:Lorawan设备类型才有此参数,type为0和1时必选。
|
|
44
|
+
* @param {string} data.deviceProfileId - 注意:Lorawan设备类型才有此参数,type为0和1时必选。
|
|
45
|
+
* @param {string} data.deviceKeys - 注意:Lorawan设备类型才有此参数,type为0时必选。
|
|
46
|
+
* @param {string} data.devAddr - 注意:Lorawan设备类型才有此参数,type为1时必选。
|
|
47
|
+
* @param {string} data.nwkSkey - 注意:Lorawan设备类型才有此参数,type为1时必选。
|
|
48
|
+
* @param {string} data.appSkey - 注意:Lorawan设备类型才有此参数,type为1时必选。
|
|
49
|
+
* @param {number} data.type - 0:tcp客户端,1:tcp服务端,2:udp客户端,3:udp服务端,tcp设备类型,注意:NetDrive设备类型才有此参数。
|
|
50
|
+
* @param {string} data.tcp_client_ip - tcpIp,注意:NetDrive设备类型才有此参数且必选。
|
|
51
|
+
* @param {string} data.tcp_client_port - tcp端口,注意:NetDrive设备类型才有此参数,type为1时必选。
|
|
52
|
+
* @param {string} data.udp_client_ip - udpIp,注意:NetDrive设备类型才有此参数且必选。
|
|
53
|
+
* @param {string} data.udp_client_port - udp端口,注意:NetDrive设备类型才有此参数,type为3时必选。
|
|
54
|
+
* @param {string} data.ip - 设备IP地址,注意:HttpDrive设备类型才有此参数且必选。
|
|
55
|
+
* @param {string} data.port - 设备端口默认80,注意:HttpDrive设备类型才有此参数且必选。
|
|
56
|
+
* @param {string} data.url - 设备url,注意:HttpDrive设备类型才有此参数且必选。
|
|
57
|
+
* @param {number} data.range - 设备轮询时间ms单位,默认为3000ms,注意:HttpDrive设备类型和NetDrive设备类型才有此参数且必选。
|
|
58
|
+
* @param {string} data.thirdPartyCameraAccount - 平台账号,查config三方摄像头账号接口,注意:摄像头类型才有此参数。
|
|
59
|
+
* @param {number} data.number - 设备序号,注意:摄像头类型才有此参数。
|
|
60
|
+
* @param {number} data.channelNo - 通道号,注意:摄像头类型才有此参数。
|
|
61
|
+
* @param {string} data.iconName - 设备图标,注意:摄像头类型才有此参数。
|
|
62
|
+
* @param {string} data.local_ip - 本地RTSP地址,注意:摄像头类型才有此参数。
|
|
63
|
+
* @param {string} data.local_username - 本地用户名,注意:摄像头类型才有此参数。
|
|
64
|
+
* @param {string} data.local_password - 本地密码,注意:摄像头类型才有此参数。
|
|
65
|
+
* @param {string} data.describe - 设备备注,注意:摄像头类型才有此参数。
|
|
66
|
+
* @param {boolean} data.line - 设备在离线,注意:摄像头类型才有此参数。
|
|
67
|
+
* @param {boolean} data.hasPtz - 是否带云台,注意:摄像头类型才有此参数。
|
|
68
|
+
* @example <caption>请求范例</caption>
|
|
69
|
+
* RS485设备创建所需参数
|
|
70
|
+
* {
|
|
71
|
+
* name: '485设备',
|
|
72
|
+
* shortAddress: '06',
|
|
73
|
+
* depart: '667d2ecc52d21700095b58b4',
|
|
74
|
+
* control: '667a30ea3d569977280ea5fc',
|
|
75
|
+
* parentType: 1,
|
|
76
|
+
* parentId: '667a30ea3d569977280ea5fc',
|
|
77
|
+
* }
|
|
78
|
+
* Lorawan设备创建所需参数
|
|
79
|
+
* type为0时,必选参数
|
|
80
|
+
* {
|
|
81
|
+
* name: 'Lorawan设备',
|
|
82
|
+
* shortAddress: '06',
|
|
83
|
+
* depart: '667d2ecc52d21700095b58b4',
|
|
84
|
+
* control: '667a30ea3d569977280ea5fc',
|
|
85
|
+
* type: 0,
|
|
86
|
+
* devEui: '06',
|
|
87
|
+
* deviceProfileId: '667d2ecc52d21700095b58b4',
|
|
88
|
+
* deviceKeys: '06',
|
|
89
|
+
* }
|
|
90
|
+
* type为1时,必选参数
|
|
91
|
+
* {
|
|
92
|
+
* name: 'Lorawan设备',
|
|
93
|
+
* shortAddress: '06',
|
|
94
|
+
* depart: '667d2ecc52d21700095b58b4',
|
|
95
|
+
* control: '667a30ea3d569977280ea5fc',
|
|
96
|
+
* type: 1,
|
|
97
|
+
* devEui: '06',
|
|
98
|
+
* deviceProfileId: '667d2ecc52d21700095b58b4',
|
|
99
|
+
* devAddr: '06',
|
|
100
|
+
* nwkSkey: '06',
|
|
101
|
+
* appSkey: '06',
|
|
102
|
+
* }
|
|
103
|
+
* TCP设备创建所需参数
|
|
104
|
+
* type为0时,必选参数
|
|
105
|
+
* {
|
|
106
|
+
* name: 'TCP设备',
|
|
107
|
+
* shortAddress: '06',
|
|
108
|
+
* depart: '667d2ecc52d21700095b58b4',
|
|
109
|
+
* control: '667a30ea3d569977280ea5fc',
|
|
110
|
+
* type: 0,
|
|
111
|
+
* range: 3000,
|
|
112
|
+
* tcp_client_ip: '192.168.1.1',
|
|
113
|
+
* tcp_client_port: '80',
|
|
114
|
+
* }
|
|
115
|
+
* type为1时,必选参数
|
|
116
|
+
* {
|
|
117
|
+
* name: 'TCP设备',
|
|
118
|
+
* shortAddress: '06',
|
|
119
|
+
* depart: '667d2ecc52d21700095b58b4',
|
|
120
|
+
* control: '667a30ea3d569977280ea5fc',
|
|
121
|
+
* type: 1,
|
|
122
|
+
* range: 3000,
|
|
123
|
+
* tcp_client_ip: '192.168.1.1',
|
|
124
|
+
* }
|
|
125
|
+
* type为2时,必选参数
|
|
126
|
+
* {
|
|
127
|
+
* name: 'UDP设备',
|
|
128
|
+
* shortAddress: '06',
|
|
129
|
+
* depart: '667d2ecc52d21700095b58b4',
|
|
130
|
+
* control: '667a30ea3d569977280ea5fc',
|
|
131
|
+
* type: 2,
|
|
132
|
+
* range: 3000,
|
|
133
|
+
* udp_client_ip: '192.168.1.1',
|
|
134
|
+
* udp_client_port: '80',
|
|
135
|
+
* }
|
|
136
|
+
* type为3时,必选参数
|
|
137
|
+
* {
|
|
138
|
+
* name: 'UDP设备',
|
|
139
|
+
* shortAddress: '06',
|
|
140
|
+
* depart: '667d2ecc52d21700095b58b4',
|
|
141
|
+
* control: '667a30ea3d569977280ea5fc',
|
|
142
|
+
* type: 3,
|
|
143
|
+
* range: 3000,
|
|
144
|
+
* udp_client_ip: '192.168.1.1',
|
|
145
|
+
* }
|
|
146
|
+
* Http设备创建所需参数
|
|
147
|
+
* {
|
|
148
|
+
* name: 'Http设备',
|
|
149
|
+
* shortAddress: '06',
|
|
150
|
+
* depart: '667d2ecc52d21700095b58b4',
|
|
151
|
+
* control: '667a30ea3d569977280ea5fc',
|
|
152
|
+
* ip: '192.168.1.1',
|
|
153
|
+
* port: '80',
|
|
154
|
+
* url: 'http://192.168.1.1',
|
|
155
|
+
* range: 3000,
|
|
156
|
+
* }
|
|
157
|
+
* 摄像头设备创建所需参数
|
|
158
|
+
* 平台摄像头所传参数
|
|
159
|
+
* {
|
|
160
|
+
* name: '摄像头设备',
|
|
161
|
+
* depart: '667d2ecc52d21700095b58b4',
|
|
162
|
+
* thirdPartyCameraAccount: '667d2ecc52d21700095b58b4',
|
|
163
|
+
* number: '1',
|
|
164
|
+
* channelNo: '1',
|
|
165
|
+
* iconName: '摄像头',
|
|
166
|
+
* describe: '备注',
|
|
167
|
+
* line: true,
|
|
168
|
+
* hasPtz: true,
|
|
169
|
+
* }
|
|
170
|
+
* 本地摄像头所传参数
|
|
171
|
+
* {
|
|
172
|
+
* name: '摄像头设备',
|
|
173
|
+
* depart: '667d2ecc52d21700095b58b4',
|
|
174
|
+
* local_ip: '192.168.1.1',
|
|
175
|
+
* local_username: 'admin',
|
|
176
|
+
* local_password: '123456',
|
|
177
|
+
* iconName: '摄像头',
|
|
178
|
+
* describe: '备注',
|
|
179
|
+
* line: true,
|
|
180
|
+
* hasPtz: true,
|
|
181
|
+
* }
|
|
182
|
+
* WEBRTC摄像头创建所需参数
|
|
183
|
+
* {
|
|
184
|
+
* name: 'WEBRTC摄像头',
|
|
185
|
+
* depart: '667d2ecc52d21700095b58b4',
|
|
186
|
+
* local_ip: '192.168.1.1',
|
|
187
|
+
* local_username: 'admin',
|
|
188
|
+
* local_password: '123456',
|
|
189
|
+
* iconName: '摄像头',
|
|
190
|
+
* describe: '备注',
|
|
191
|
+
* line: true,
|
|
192
|
+
* hasPtz: true,
|
|
193
|
+
* }
|
|
194
|
+
* @returns {Object} result - 返回结果
|
|
195
|
+
* @returns {number} result.code - 返回码,0表示成功
|
|
196
|
+
* @returns {string} result.data - 返回创建设备数据
|
|
197
|
+
* @returns {string} result.message - 返回信息
|
|
198
|
+
*/
|
|
9
199
|
function createAllDevice(data) {
|
|
10
200
|
return request({
|
|
11
201
|
url: `/product/${data._id}/createAllDevice`,
|
package/api/router.js
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { requestShow } from '../utils'
|
|
2
|
+
/**
|
|
3
|
+
* @file 路由api
|
|
4
|
+
* @module 路由接口
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
* @param {*} query
|
|
9
|
+
* @param {number} query.page - 页码
|
|
10
|
+
* @param {number} query.limit - 每页数量
|
|
11
|
+
* @returns {number} code - 返回码,0表示成功
|
|
12
|
+
* @returns {number} total - 路由总数
|
|
13
|
+
* @returns {Array} rows - 路由数组
|
|
14
|
+
* @returns {string} rows._id - 路由id
|
|
15
|
+
* @returns {string} rows.name - 路由名称
|
|
16
|
+
* @returns {string} rows.path - 路由路径
|
|
17
|
+
* @returns {number} rows.level - 路由等级
|
|
18
|
+
* @returns {number} rows.sort - 排序序号
|
|
19
|
+
* @returns {Array<mongoose.Schema.Types.ObjectId>} rows.children - 子路由列表
|
|
20
|
+
* @returns {('all'|'get'|'post'|'put'|'delete')} rows.method - HTTP请求方法
|
|
21
|
+
* @returns {string} rows.desc - 路由描述
|
|
22
|
+
* @returns {Array<mongoose.Schema.Types.ObjectId>} rows.roles - 关联的角色列表
|
|
23
|
+
* @returns {string} rows.icon - 路由图标
|
|
24
|
+
*/
|
|
25
|
+
export function list(query) {
|
|
26
|
+
return request({
|
|
27
|
+
url: '/routers',
|
|
28
|
+
method: 'get',
|
|
29
|
+
params: query
|
|
30
|
+
})
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* 新增路由
|
|
35
|
+
* @param {Object} data - 包含路由的请求体 属性见list返回字段。
|
|
36
|
+
* @returns {number} code - 返回码,0表示成功
|
|
37
|
+
* @returns {string} data - 新增成功的数据 跟list返回字段一致
|
|
38
|
+
*/
|
|
39
|
+
export function create(data) {
|
|
40
|
+
return requestShow({
|
|
41
|
+
url: '/routers',
|
|
42
|
+
method: 'post',
|
|
43
|
+
data
|
|
44
|
+
})
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* 修改路由
|
|
49
|
+
* @param {Object} data - 包含路由的请求体 属性见list返回字段。
|
|
50
|
+
* @returns {number} code - 返回码,0表示成功
|
|
51
|
+
* @returns {string} data - 修改成功的数据 跟list返回字段一致
|
|
52
|
+
*/
|
|
53
|
+
export function updateOne(data) {
|
|
54
|
+
return requestShow({
|
|
55
|
+
url: `/routers/${data._id}`,
|
|
56
|
+
method: 'put',
|
|
57
|
+
data
|
|
58
|
+
})
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* 删除路由
|
|
62
|
+
* @param {string} id - 删除的路由id。
|
|
63
|
+
* @returns {number} code - 返回码,0表示成功
|
|
64
|
+
* @returns {string} data - 删除成功的数据 跟list返回字段一致
|
|
65
|
+
*/
|
|
66
|
+
export function deleteOne(id) {
|
|
67
|
+
return requestShow({
|
|
68
|
+
url: `/routers/${id}`,
|
|
69
|
+
method: 'delete'
|
|
70
|
+
})
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* 批量删除路由
|
|
75
|
+
* @param {Array} ids - 删除的路由ids。
|
|
76
|
+
* @returns {number} code - 返回码,0表示成功
|
|
77
|
+
*/
|
|
78
|
+
export function deleteMany(ids) {
|
|
79
|
+
return requestShow({
|
|
80
|
+
url: '/routers',
|
|
81
|
+
method: 'delete',
|
|
82
|
+
data: ids // delete传递主体要包含在data里
|
|
83
|
+
})
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export default {
|
|
87
|
+
list,
|
|
88
|
+
create,
|
|
89
|
+
updateOne,
|
|
90
|
+
deleteOne,
|
|
91
|
+
deleteMany
|
|
92
|
+
}
|
|
93
|
+
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file 报警记录api
|
|
3
|
+
* @module 报警记录接口
|
|
4
|
+
* @memberof requestShow
|
|
5
|
+
*/
|
|
6
|
+
import { requestShow } from '../utils'
|
|
7
|
+
/**
|
|
8
|
+
* 获取容器信息。
|
|
9
|
+
*
|
|
10
|
+
*/
|
|
11
|
+
export function containers() {
|
|
12
|
+
return requestShow({
|
|
13
|
+
url: '/system/containers/stats',
|
|
14
|
+
method: 'get'
|
|
15
|
+
})
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* 获取cpu信息。
|
|
20
|
+
*
|
|
21
|
+
*/
|
|
22
|
+
export function cpuinfo() {
|
|
23
|
+
return requestShow({
|
|
24
|
+
url: '/system/cpuinfo',
|
|
25
|
+
method: 'get'
|
|
26
|
+
})
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* 获取负载信息。
|
|
31
|
+
*
|
|
32
|
+
*/
|
|
33
|
+
export function loadavg() {
|
|
34
|
+
return requestShow({
|
|
35
|
+
url: '/system/loadavg',
|
|
36
|
+
method: 'get'
|
|
37
|
+
})
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* 获取内存信息。
|
|
42
|
+
*
|
|
43
|
+
*/
|
|
44
|
+
export function meminfo() {
|
|
45
|
+
return requestShow({
|
|
46
|
+
url: '/system/meminfo',
|
|
47
|
+
method: 'get'
|
|
48
|
+
})
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export default {
|
|
52
|
+
containers,
|
|
53
|
+
cpuinfo,
|
|
54
|
+
loadavg,
|
|
55
|
+
meminfo
|
|
56
|
+
|
|
57
|
+
}
|
package/index.js
CHANGED
|
@@ -3,9 +3,13 @@ import { init } from './utils'
|
|
|
3
3
|
import emitter from './utils/EventEmitter'
|
|
4
4
|
import alarmRecord from './api/alarmRecord'
|
|
5
5
|
import alarmProgress from './api/alarmProgress'
|
|
6
|
+
import systeminfo from './api/systeminfo'
|
|
7
|
+
import router from './api/router'
|
|
6
8
|
const api = {
|
|
7
9
|
alarmRecord,
|
|
8
|
-
alarmProgress
|
|
10
|
+
alarmProgress,
|
|
11
|
+
systeminfo,
|
|
12
|
+
router
|
|
9
13
|
}
|
|
10
14
|
|
|
11
15
|
export default { config: options => {
|