@wdywdy/electric-open-platform 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +585 -2
  3. package/dist/cjs/client.js +173 -0
  4. package/dist/cjs/client.js.map +1 -0
  5. package/dist/cjs/core/api.js +518 -0
  6. package/dist/cjs/core/api.js.map +1 -0
  7. package/dist/cjs/core/auth.js +293 -0
  8. package/dist/cjs/core/auth.js.map +1 -0
  9. package/dist/cjs/core/crypto.js +160 -0
  10. package/dist/cjs/core/crypto.js.map +1 -0
  11. package/dist/cjs/core/errors.js +114 -0
  12. package/dist/cjs/core/errors.js.map +1 -0
  13. package/dist/cjs/core/http.js +70 -0
  14. package/dist/cjs/core/http.js.map +1 -0
  15. package/dist/cjs/core/models.js +105 -0
  16. package/dist/cjs/core/models.js.map +1 -0
  17. package/dist/cjs/core/push.js +79 -0
  18. package/dist/cjs/core/push.js.map +1 -0
  19. package/dist/cjs/core/router.js +124 -0
  20. package/dist/cjs/core/router.js.map +1 -0
  21. package/dist/cjs/core/runtime.js +37 -0
  22. package/dist/cjs/core/runtime.js.map +1 -0
  23. package/dist/cjs/core/sign.js +75 -0
  24. package/dist/cjs/core/sign.js.map +1 -0
  25. package/dist/cjs/core/storage.js +152 -0
  26. package/dist/cjs/core/storage.js.map +1 -0
  27. package/dist/cjs/core/transport-fetch.js +57 -0
  28. package/dist/cjs/core/transport-fetch.js.map +1 -0
  29. package/dist/cjs/core/transport.js +41 -0
  30. package/dist/cjs/core/transport.js.map +1 -0
  31. package/dist/cjs/core/types.js +5 -0
  32. package/dist/cjs/core/types.js.map +1 -0
  33. package/dist/cjs/index.js +111 -0
  34. package/dist/cjs/index.js.map +1 -0
  35. package/dist/cjs/package.json +3 -0
  36. package/dist/esm/client.d.ts +73 -0
  37. package/dist/esm/client.js +169 -0
  38. package/dist/esm/client.js.map +1 -0
  39. package/dist/esm/core/api.d.ts +377 -0
  40. package/dist/esm/core/api.js +506 -0
  41. package/dist/esm/core/api.js.map +1 -0
  42. package/dist/esm/core/auth.d.ts +69 -0
  43. package/dist/esm/core/auth.js +289 -0
  44. package/dist/esm/core/auth.js.map +1 -0
  45. package/dist/esm/core/crypto.d.ts +24 -0
  46. package/dist/esm/core/crypto.js +154 -0
  47. package/dist/esm/core/crypto.js.map +1 -0
  48. package/dist/esm/core/errors.d.ts +86 -0
  49. package/dist/esm/core/errors.js +108 -0
  50. package/dist/esm/core/errors.js.map +1 -0
  51. package/dist/esm/core/http.d.ts +24 -0
  52. package/dist/esm/core/http.js +56 -0
  53. package/dist/esm/core/http.js.map +1 -0
  54. package/dist/esm/core/models.d.ts +441 -0
  55. package/dist/esm/core/models.js +102 -0
  56. package/dist/esm/core/models.js.map +1 -0
  57. package/dist/esm/core/push.d.ts +54 -0
  58. package/dist/esm/core/push.js +74 -0
  59. package/dist/esm/core/push.js.map +1 -0
  60. package/dist/esm/core/router.d.ts +44 -0
  61. package/dist/esm/core/router.js +120 -0
  62. package/dist/esm/core/router.js.map +1 -0
  63. package/dist/esm/core/runtime.d.ts +23 -0
  64. package/dist/esm/core/runtime.js +33 -0
  65. package/dist/esm/core/runtime.js.map +1 -0
  66. package/dist/esm/core/sign.d.ts +54 -0
  67. package/dist/esm/core/sign.js +67 -0
  68. package/dist/esm/core/sign.js.map +1 -0
  69. package/dist/esm/core/storage.d.ts +73 -0
  70. package/dist/esm/core/storage.js +141 -0
  71. package/dist/esm/core/storage.js.map +1 -0
  72. package/dist/esm/core/transport-fetch.d.ts +2 -0
  73. package/dist/esm/core/transport-fetch.js +54 -0
  74. package/dist/esm/core/transport-fetch.js.map +1 -0
  75. package/dist/esm/core/transport.d.ts +23 -0
  76. package/dist/esm/core/transport.js +36 -0
  77. package/dist/esm/core/transport.js.map +1 -0
  78. package/dist/esm/core/types.d.ts +76 -0
  79. package/dist/esm/core/types.js +2 -0
  80. package/dist/esm/core/types.js.map +1 -0
  81. package/dist/esm/index.d.ts +37 -0
  82. package/dist/esm/index.js +47 -0
  83. package/dist/esm/index.js.map +1 -0
  84. package/package.json +63 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,377 @@
1
+ import { RouterClient } from './router.js';
2
+ import { ParamValue } from './sign.js';
3
+ import { AlarmRecord, AlarmTypeNumber, Box, BoxChannel, BoxChannels, BoxControlCmd, BoxControlCommand, BoxProperty, BoxRealtime, BoxStat, BoxStatsByMac, BoxStatsByMacAndPeriod, LeakageCheckConfig, MaintenanceRecord, MeterQueryType, OnlineHistoryRecord, PagedResult, PositionNode, ProjectInfo, Scene, ThirdPartyDeviceStatus, ThirdPartyEquipmentType, TimerConfig } from './models.js';
4
+ /** Shared helpers so every module treats `projectCode` and limits identically. */
5
+ declare class ApiBase {
6
+ protected readonly client: RouterClient;
7
+ constructor(client: RouterClient);
8
+ protected call<T>(method: string, params?: Record<string, ParamValue>, projectCode?: string): Promise<T>;
9
+ /** Normalises a comma list / array into the platform's comma-joined string. */
10
+ protected static list(value: string | string[] | undefined): string | undefined;
11
+ }
12
+ /** 项目信息:GET_PROJECT_INFO / MODIFY_PROJECT_INFO */
13
+ export declare class ProjectApi extends ApiBase {
14
+ getInfo(projectCode?: string): Promise<ProjectInfo>;
15
+ modifyInfo(fields: Partial<ProjectInfo> & {
16
+ projectCode?: string;
17
+ }): Promise<unknown>;
18
+ /** 项目日统计 GET_PROJECT_DAY_STATS */
19
+ dayStats(args: {
20
+ year: string;
21
+ month: string;
22
+ day?: string;
23
+ projectCode?: string;
24
+ }): Promise<unknown>;
25
+ }
26
+ /** 设备:GET_BOXES / GET_BOX / GET_BOX_POSITION_TREE / MODIFY_BOX_INFO … */
27
+ export declare class BoxApi extends ApiBase {
28
+ list(args?: {
29
+ projectCode?: string;
30
+ equipmentType?: number;
31
+ build?: string;
32
+ unit?: string;
33
+ room?: string;
34
+ }): Promise<Box[]>;
35
+ /** Only online (-1 未连接 / 0 离线 / 1 在线). */
36
+ listOnline(args?: {
37
+ projectCode?: string;
38
+ }): Promise<Box[]>;
39
+ get(mac: string, projectCode?: string): Promise<Box>;
40
+ positionTree(projectCode?: string): Promise<PositionNode[]>;
41
+ /**
42
+ * GET_BOX_PROPERTIES — 设备节点属性 (暂仅支持微断/A 系列设备).
43
+ *
44
+ * `nodeType` is **required** by the platform; the documented value for the
45
+ * communication module is `COMM`. `addr` optionally targets one circuit.
46
+ */
47
+ properties(args: {
48
+ mac: string;
49
+ nodeType?: string;
50
+ addr?: number;
51
+ projectCode?: string;
52
+ }): Promise<BoxProperty>;
53
+ modifyProperties(args: {
54
+ mac: string;
55
+ params?: Record<string, ParamValue>;
56
+ projectCode?: string;
57
+ }): Promise<unknown>;
58
+ modifyInfo(args: {
59
+ mac: string;
60
+ } & Partial<Box> & {
61
+ projectCode?: string;
62
+ }): Promise<unknown>;
63
+ /**
64
+ * 调节上报频率 SET_BOX_REALTIME_RATE.
65
+ * `rate` is seconds between uploads — 5..180 for UDP modules, 5..600 for HTTP.
66
+ */
67
+ setRealtimeRate(args: {
68
+ mac: string | string[];
69
+ enable: boolean;
70
+ rate: number;
71
+ projectCode?: string;
72
+ }): Promise<unknown>;
73
+ /**
74
+ * 设备在线轨迹 GET_BOX_ONLINE_HISTORY.
75
+ *
76
+ * Note the platform wants `startTime` / `endTime` here — **not** the
77
+ * `start`/`end` pair used by GET_BOX_ALARM. Format `yyyy-MM-dd HH:mm`;
78
+ * only the last ~6 months are retained.
79
+ */
80
+ onlineHistory(args: {
81
+ mac: string;
82
+ startTime: Date | string;
83
+ endTime: Date | string;
84
+ page?: number;
85
+ pageSize?: number;
86
+ projectCode?: string;
87
+ }): Promise<PagedResult<OnlineHistoryRecord>>;
88
+ }
89
+ /** 线路/节点:实时状态、有效节点、分合闸控制 */
90
+ export declare class ChannelApi extends ApiBase {
91
+ /**
92
+ * GET_BOX_CHANNELS_REALTIME.
93
+ *
94
+ * Accepts 1..20 macs. The platform returns a **different shape** for one mac
95
+ * (flat channel array) than for many (array of `{ mac, channelList }`); this
96
+ * method always normalises to {@link BoxRealtime}[] so UI code never branches.
97
+ */
98
+ realtime(args: {
99
+ mac: string | string[];
100
+ projectCode?: string;
101
+ }): Promise<BoxRealtime[]>;
102
+ /** Flattened convenience: every circuit of every requested device. */
103
+ realtimeChannels(args: {
104
+ mac: string | string[];
105
+ projectCode?: string;
106
+ }): Promise<(BoxRealtime['channelList'][number] & {
107
+ mac: string;
108
+ })[]>;
109
+ /** GET_BOX_CHANNELS — the list of valid circuits (title/oc/updateTime only). */
110
+ list(args: {
111
+ mac?: string;
112
+ param?: {
113
+ mac: string;
114
+ addr: string;
115
+ }[];
116
+ projectCode?: string;
117
+ }): Promise<BoxChannels[]>;
118
+ /** GET_BOX_CHANNELS_OC — 开关状态(比 realtime 轻量)。 */
119
+ channelsOc(args: {
120
+ mac: string | string[];
121
+ projectCode?: string;
122
+ }): Promise<BoxChannels[]>;
123
+ /**
124
+ * 历史节点数据 GET_BOX_CHANNELS_REALTIME_HISTORY.
125
+ *
126
+ * 平台**仅支持按天**查询:参数是 `date`(yyyy-MM-dd,默认当天),
127
+ * 不是开始/结束区间。
128
+ */
129
+ history(args: {
130
+ mac: string;
131
+ /** yyyy-MM-dd,默认为当天 */
132
+ date?: string;
133
+ addr?: number;
134
+ isReturnTotal?: boolean;
135
+ page?: number;
136
+ pageSize?: number;
137
+ projectCode?: string;
138
+ }): Promise<unknown>;
139
+ }
140
+ /** 控制:PUT_BOX_CONTROL / BATCH_BOX_CONTROL */
141
+ export declare class ControlApi extends ApiBase {
142
+ /**
143
+ * Generic control dispatcher.
144
+ *
145
+ * `PUT_BOX_CONTROL` takes `cmd` plus a flat set of `value1..value5` (and, for
146
+ * device/timer commands, dotted keys such as `device.autoid`).
147
+ */
148
+ control<C extends BoxControlCmd>(args: {
149
+ mac: string;
150
+ cmd: C;
151
+ /** Strongly typed per command, e.g. `{ value1: 'open', value2: '1,2' }`. */
152
+ options: BoxControlCommand[C];
153
+ projectCode?: string;
154
+ }): Promise<unknown>;
155
+ /** 合闸/分闸. Addresses are 1-based circuit addresses. */
156
+ switchCircuit(args: {
157
+ mac: string;
158
+ action: 'open' | 'close';
159
+ addr: number | number[];
160
+ /** 异常分闸锁定时不下发 */
161
+ skipWhenAbnormalLock?: boolean;
162
+ projectCode?: string;
163
+ }): Promise<unknown>;
164
+ /** 批量控制 BATCH_BOX_CONTROL */
165
+ batchSwitch(args: {
166
+ /** [{ mac, addr }] or the platform's own payload; passed through. */
167
+ items: {
168
+ mac: string;
169
+ addr: number | string;
170
+ }[];
171
+ action: 'open' | 'close';
172
+ projectCode?: string;
173
+ }): Promise<unknown>;
174
+ /** 改线路名称 / 功率限定 (SWITCHSET) */
175
+ updateCircuit(args: {
176
+ mac: string;
177
+ addr: number;
178
+ title?: string;
179
+ maxPowerW?: number;
180
+ overCurrentThreshold?: number;
181
+ projectCode?: string;
182
+ }): Promise<unknown>;
183
+ /** 远程锁定/解锁一条线路 */
184
+ remoteLock(args: {
185
+ mac: string;
186
+ addr: number;
187
+ locked: boolean;
188
+ projectCode?: string;
189
+ }): Promise<unknown>;
190
+ /** 对异常分闸锁定的线路执行远程解锁 */
191
+ unlockAbnormal(args: {
192
+ mac: string;
193
+ addr: number;
194
+ projectCode?: string;
195
+ }): Promise<unknown>;
196
+ /** 线路/设备显隐标记 */
197
+ setVisibility(args: {
198
+ mac: string;
199
+ addr: number;
200
+ visible: boolean;
201
+ projectCode?: string;
202
+ }): Promise<unknown>;
203
+ /** 是否允许控制标记 */
204
+ setControl(args: {
205
+ mac: string;
206
+ addr: number;
207
+ controllable: boolean;
208
+ projectCode?: string;
209
+ }): Promise<unknown>;
210
+ /** 自动漏电自检 */
211
+ setAutoLeakage(args: {
212
+ mac: string;
213
+ enable: boolean;
214
+ day: number;
215
+ hour: number;
216
+ minute: number;
217
+ projectCode?: string;
218
+ }): Promise<unknown>;
219
+ /** 设备定时配置 GET_CFG_TIMER (autoid = 0 返回全部) */
220
+ getTimers(args: {
221
+ mac: string;
222
+ autoid?: number;
223
+ projectCode?: string;
224
+ }): Promise<TimerConfig[]>;
225
+ /** 漏电自检记录 GET_CFG_LKICHK */
226
+ getLeakageCheck(args: {
227
+ mac: string;
228
+ projectCode?: string;
229
+ }): Promise<LeakageCheckConfig[]>;
230
+ }
231
+ /** 告警 */
232
+ export declare class AlarmApi extends ApiBase {
233
+ /**
234
+ * GET_BOX_ALARM.
235
+ *
236
+ * Platform limits: `start` within the last month, `end - start` <= 48 h, and
237
+ * these windows are **storage time**, not alarm time.
238
+ */
239
+ list(args: {
240
+ /** Omit to query the whole project. */
241
+ mac?: string;
242
+ start: Date | string;
243
+ end: Date | string;
244
+ page?: number;
245
+ pageSize?: number;
246
+ type?: 'W' | 'I';
247
+ includeCalm?: boolean;
248
+ projectCode?: string;
249
+ }): Promise<PagedResult<AlarmRecord>>;
250
+ /** Walks every page of a window (capped by `maxPages`). */
251
+ listAll(args: Parameters<AlarmApi['list']>[0] & {
252
+ maxPages?: number;
253
+ }): Promise<AlarmRecord[]>;
254
+ /** 按告警类型/设备过滤 (client side — the API has no such filter). */
255
+ byType(args: Parameters<AlarmApi['list']>[0] & {
256
+ typeNumbers: AlarmTypeNumber[];
257
+ }): Promise<AlarmRecord[]>;
258
+ /**
259
+ * 告警维护记录 GET_ALARM_MAINTENANCE.
260
+ * `alarmId` 支持单个或数组(平台最多 20 个,逗号分隔)。
261
+ */
262
+ maintenance(args: {
263
+ alarmId: number | string | (number | string)[];
264
+ projectCode?: string;
265
+ }): Promise<unknown>;
266
+ /**
267
+ * 催办/处理告警 ALARM_URGED.
268
+ * 注意 `mac` 是必填项(文档与旧实现不一致处,已按平台实测修正)。
269
+ */
270
+ urged(args: {
271
+ mac: string;
272
+ alarmId: number | string | (number | string)[];
273
+ projectCode?: string;
274
+ }): Promise<unknown>;
275
+ /**
276
+ * 设备维保工单处理历史 GET_BOX_MAINTENANCE_HISTORY.
277
+ * `start`/`end` 必填(yyyy-MM-dd HH:mm):start 需在最近一个月内,end 不得晚于今天。
278
+ */
279
+ boxMaintenanceHistory(args: {
280
+ mac?: string;
281
+ start: Date | string;
282
+ end: Date | string;
283
+ page?: number;
284
+ pageSize?: number;
285
+ projectCode?: string;
286
+ }): Promise<PagedResult<MaintenanceRecord>>;
287
+ }
288
+ /**
289
+ * 统计.
290
+ *
291
+ * 方法名是 `GET_BOXES_*`(BOX + ES),**不是** `GET_BOXS_*`。
292
+ * 两者只差一个字母,但平台对错误拼写的回答是「接口名称(X)无效!」,
293
+ * 极易被误判成「接口未开通」。已对真实服务器逐个验证过。
294
+ */
295
+ export declare class StatsApi extends ApiBase {
296
+ private period;
297
+ /**
298
+ * 日区间统计 GET_BOXES_DAY_STATS.
299
+ * 不传 `day` 时返回当月每天的数据。
300
+ */
301
+ day(args: {
302
+ mac: string | string[];
303
+ year: string;
304
+ month: string;
305
+ day?: string;
306
+ projectCode?: string;
307
+ }): Promise<BoxStatsByMac | BoxStatsByMacAndPeriod>;
308
+ /** 小时区间统计 GET_BOXES_HOUR_STATS. */
309
+ hour(args: {
310
+ mac: string | string[];
311
+ year: string;
312
+ month: string;
313
+ day: string;
314
+ projectCode?: string;
315
+ }): Promise<BoxStatsByMac>;
316
+ /** 月区间统计 GET_BOXES_MON_STATS. */
317
+ month(args: {
318
+ mac: string | string[];
319
+ year: string;
320
+ projectCode?: string;
321
+ }): Promise<BoxStatsByMac>;
322
+ /** Sum of `electricity` for a day across circuits (addr=0 row is the device total). */
323
+ totalElectricity(stats: BoxStat[]): number;
324
+ }
325
+ /** 场景/定时 (服务端触发) */
326
+ export declare class SceneApi extends ApiBase {
327
+ list(projectCode?: string): Promise<{
328
+ scenes?: Scene[];
329
+ }>;
330
+ execute(args: {
331
+ sceneId: string;
332
+ params?: Record<string, ParamValue>;
333
+ projectCode?: string;
334
+ }): Promise<unknown>;
335
+ }
336
+ /**
337
+ * 第三方设备(烟感/燃气/水表/温湿度等,即 equipmentType ≠ 1/2 的设备)。
338
+ *
339
+ * 这些设备没有「线路」概念,状态通过 GET_THR_DEVICE_STATUS 按消息类型返回。
340
+ */
341
+ export declare class ThirdPartyDeviceApi extends ApiBase {
342
+ /**
343
+ * 获取第三方设备状态 GET_THR_DEVICE_STATUS.
344
+ *
345
+ * @param args.equipmentType 必填,且必须是**第三方**设备类型
346
+ * (4/5/6/7/10/11/12/13/14/16/29/39/42/45)。传 1 或 2 会被平台以
347
+ * 「设备类型无效!」拒绝——微断请用 {@link ChannelApi.realtime}。
348
+ * @param args.dataType 仅智能水表(16)必填:0 实时抄表 / 1 时间范围
349
+ * @param args.startDate / endDate `dataType=1` 时必填,格式 yyyy-MM-dd
350
+ */
351
+ status(args: {
352
+ mac: string;
353
+ equipmentType: ThirdPartyEquipmentType | number;
354
+ dataType?: MeterQueryType | number;
355
+ startDate?: string;
356
+ endDate?: string;
357
+ projectCode?: string;
358
+ }): Promise<ThirdPartyDeviceStatus[]>;
359
+ /**
360
+ * 同上,但把每条记录的 `data` JSON 字符串解析成对象,
361
+ * 便于直接绑定到 UI(解析失败时保留原始字符串)。
362
+ */
363
+ statusParsed(args: Parameters<ThirdPartyDeviceApi['status']>[0]): Promise<(Omit<ThirdPartyDeviceStatus, 'data'> & {
364
+ data: unknown;
365
+ })[]>;
366
+ /** 列出项目中某类型的第三方设备(从 GET_BOXES 过滤)。 */
367
+ listDevices(args: {
368
+ equipmentType: ThirdPartyEquipmentType | number;
369
+ projectCode?: string;
370
+ }): Promise<Box[]>;
371
+ }
372
+ /**
373
+ * 解析第三方设备 status 的 `data` 字段。
374
+ * 该字段是 JSON 字符串;个别设备会返回纯数字(如 `"0"`),此时原样返回。
375
+ */
376
+ export declare function parseThirdPartyData(raw: unknown): unknown;
377
+ export type { BoxRealtime, BoxChannel };