sesame-kit 0.4.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.
- package/LICENSE +26 -0
- package/LICENSE.biz3 +21 -0
- package/README.ja.md +225 -0
- package/README.md +222 -0
- package/bin/sesame.js +8 -0
- package/clients/js/sesame-client.mjs +208 -0
- package/clients/python/pyproject.toml +5 -0
- package/clients/python/sesame_client.py +323 -0
- package/clients/python/setup.cfg +11 -0
- package/docs/architecture.ja.md +132 -0
- package/docs/architecture.md +105 -0
- package/docs/commands.ja.md +316 -0
- package/docs/commands.md +308 -0
- package/docs/library.ja.md +152 -0
- package/docs/library.md +152 -0
- package/docs/migration.ja.md +13 -0
- package/docs/migration.md +13 -0
- package/package.json +114 -0
- package/src/access.js +375 -0
- package/src/account.js +36 -0
- package/src/auth.js +248 -0
- package/src/ble/devicemodel.js +164 -0
- package/src/ble/index.js +185 -0
- package/src/ble/protocol.js +319 -0
- package/src/ble/session.js +235 -0
- package/src/ble/transport.js +279 -0
- package/src/cli/access.js +373 -0
- package/src/cli/company.js +104 -0
- package/src/cli/iot.js +400 -0
- package/src/cli/org.js +788 -0
- package/src/cli/presetir.js +188 -0
- package/src/cli/schedule.js +83 -0
- package/src/cli/serve.js +308 -0
- package/src/cli.js +1815 -0
- package/src/client.js +957 -0
- package/src/company.js +147 -0
- package/src/config.js +575 -0
- package/src/crypto.js +162 -0
- package/src/devices.js +228 -0
- package/src/index.js +55 -0
- package/src/iot.js +513 -0
- package/src/ir.js +341 -0
- package/src/itemcodes.js +29 -0
- package/src/lock.js +194 -0
- package/src/org.js +803 -0
- package/src/paths.js +30 -0
- package/src/presetir.js +525 -0
- package/src/prompts.js +74 -0
- package/src/schedule.js +108 -0
- package/src/serve/daemon.js +251 -0
- package/src/serve/framing/grpc.js +145 -0
- package/src/serve/framing/http.js +144 -0
- package/src/serve/framing/ndjson.js +75 -0
- package/src/serve/framing/socket.js +73 -0
- package/src/serve/framing/stdio.js +28 -0
- package/src/serve/framing/token.js +36 -0
- package/src/serve/framing/ws.js +56 -0
- package/src/serve/grpc-methods.generated.json +378 -0
- package/src/serve/jsonrpc.js +164 -0
- package/src/serve/registry.js +226 -0
- package/src/serve/rpc-params.generated.json +1746 -0
- package/src/serve/sesame.proto +470 -0
- package/src/session-ui.js +181 -0
- package/src/sharekey.js +130 -0
- package/src/tokens.js +53 -0
- package/src/transport.js +634 -0
- package/src/util.js +26 -0
- package/types/access.d.ts +193 -0
- package/types/access.d.ts.map +1 -0
- package/types/account.d.ts +13 -0
- package/types/account.d.ts.map +1 -0
- package/types/auth.d.ts +80 -0
- package/types/auth.d.ts.map +1 -0
- package/types/ble/devicemodel.d.ts +212 -0
- package/types/ble/devicemodel.d.ts.map +1 -0
- package/types/ble/index.d.ts +160 -0
- package/types/ble/index.d.ts.map +1 -0
- package/types/ble/protocol.d.ts +201 -0
- package/types/ble/protocol.d.ts.map +1 -0
- package/types/ble/session.d.ts +129 -0
- package/types/ble/session.d.ts.map +1 -0
- package/types/ble/transport.d.ts +67 -0
- package/types/ble/transport.d.ts.map +1 -0
- package/types/cli/access.d.ts +6 -0
- package/types/cli/access.d.ts.map +1 -0
- package/types/cli/company.d.ts +6 -0
- package/types/cli/company.d.ts.map +1 -0
- package/types/cli/iot.d.ts +6 -0
- package/types/cli/iot.d.ts.map +1 -0
- package/types/cli/org.d.ts +6 -0
- package/types/cli/org.d.ts.map +1 -0
- package/types/cli/presetir.d.ts +6 -0
- package/types/cli/presetir.d.ts.map +1 -0
- package/types/cli/schedule.d.ts +6 -0
- package/types/cli/schedule.d.ts.map +1 -0
- package/types/cli/serve.d.ts +2 -0
- package/types/cli/serve.d.ts.map +1 -0
- package/types/cli.d.ts +2 -0
- package/types/cli.d.ts.map +1 -0
- package/types/client.d.ts +463 -0
- package/types/client.d.ts.map +1 -0
- package/types/company.d.ts +94 -0
- package/types/company.d.ts.map +1 -0
- package/types/config.d.ts +111 -0
- package/types/config.d.ts.map +1 -0
- package/types/crypto.d.ts +61 -0
- package/types/crypto.d.ts.map +1 -0
- package/types/devices.d.ts +116 -0
- package/types/devices.d.ts.map +1 -0
- package/types/index.d.ts +23 -0
- package/types/index.d.ts.map +1 -0
- package/types/iot.d.ts +312 -0
- package/types/iot.d.ts.map +1 -0
- package/types/ir.d.ts +147 -0
- package/types/ir.d.ts.map +1 -0
- package/types/itemcodes.d.ts +21 -0
- package/types/itemcodes.d.ts.map +1 -0
- package/types/lock.d.ts +89 -0
- package/types/lock.d.ts.map +1 -0
- package/types/org.d.ts +468 -0
- package/types/org.d.ts.map +1 -0
- package/types/paths.d.ts +10 -0
- package/types/paths.d.ts.map +1 -0
- package/types/presetir.d.ts +286 -0
- package/types/presetir.d.ts.map +1 -0
- package/types/prompts.d.ts +39 -0
- package/types/prompts.d.ts.map +1 -0
- package/types/schedule.d.ts +71 -0
- package/types/schedule.d.ts.map +1 -0
- package/types/serve/daemon.d.ts +133 -0
- package/types/serve/daemon.d.ts.map +1 -0
- package/types/serve/framing/grpc.d.ts +14 -0
- package/types/serve/framing/grpc.d.ts.map +1 -0
- package/types/serve/framing/http.d.ts +14 -0
- package/types/serve/framing/http.d.ts.map +1 -0
- package/types/serve/framing/ndjson.d.ts +19 -0
- package/types/serve/framing/ndjson.d.ts.map +1 -0
- package/types/serve/framing/socket.d.ts +14 -0
- package/types/serve/framing/socket.d.ts.map +1 -0
- package/types/serve/framing/stdio.d.ts +11 -0
- package/types/serve/framing/stdio.d.ts.map +1 -0
- package/types/serve/framing/token.d.ts +11 -0
- package/types/serve/framing/token.d.ts.map +1 -0
- package/types/serve/framing/ws.d.ts +13 -0
- package/types/serve/framing/ws.d.ts.map +1 -0
- package/types/serve/jsonrpc.d.ts +118 -0
- package/types/serve/jsonrpc.d.ts.map +1 -0
- package/types/serve/registry.d.ts +41 -0
- package/types/serve/registry.d.ts.map +1 -0
- package/types/session-ui.d.ts +36 -0
- package/types/session-ui.d.ts.map +1 -0
- package/types/sharekey.d.ts +35 -0
- package/types/sharekey.d.ts.map +1 -0
- package/types/tokens.d.ts +20 -0
- package/types/tokens.d.ts.map +1 -0
- package/types/transport.d.ts +138 -0
- package/types/transport.d.ts.map +1 -0
- package/types/util.d.ts +20 -0
- package/types/util.d.ts.map +1 -0
- package/vendor/biz3/README.md +37 -0
- package/vendor/biz3/constants/cmdCode.d.ts +48 -0
- package/vendor/biz3/constants/cmdCode.d.ts.map +1 -0
- package/vendor/biz3/constants/cmdCode.js +92 -0
- package/vendor/biz3/constants/messageConstants.d.ts +28 -0
- package/vendor/biz3/constants/messageConstants.d.ts.map +1 -0
- package/vendor/biz3/constants/messageConstants.js +30 -0
- package/vendor/biz3/constants/sesameDeviceModel.d.ts +75 -0
- package/vendor/biz3/constants/sesameDeviceModel.d.ts.map +1 -0
- package/vendor/biz3/constants/sesameDeviceModel.js +77 -0
- package/vendor/biz3/package.json +5 -0
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
export class SesameHub3 {
|
|
2
|
+
/**
|
|
3
|
+
* 既定の設定ディレクトリ (~/.config/sesame-hub3 等) から読み込んで構築。
|
|
4
|
+
* CLI 内部はこのファクトリを使う。
|
|
5
|
+
* @param {{ configDir?: string, debug?: boolean }} [opts]
|
|
6
|
+
*/
|
|
7
|
+
static fromConfig(opts?: {
|
|
8
|
+
configDir?: string;
|
|
9
|
+
debug?: boolean;
|
|
10
|
+
}): Promise<SesameHub3>;
|
|
11
|
+
/**
|
|
12
|
+
* 自動 connect/close ヘルパ。boilerplate 削減用。
|
|
13
|
+
*
|
|
14
|
+
* await SesameHub3.use(async (hub) => { await hub.unlock("front"); });
|
|
15
|
+
* await SesameHub3.use({ configDir: "/tmp/cfg" }, async (hub) => { ... });
|
|
16
|
+
* await SesameHub3.use({ tokenStore: myStore, config: {...} }, async (hub) => { ... });
|
|
17
|
+
*
|
|
18
|
+
* config / tokenStore を opts で渡せば fromConfig をスキップ (他プロジェクト埋込み用)。
|
|
19
|
+
*
|
|
20
|
+
* @param {((hub:SesameHub3) => Promise<any>) | object} fnOrOpts
|
|
21
|
+
* @param {(hub:SesameHub3) => Promise<any>} [maybeFn]
|
|
22
|
+
*/
|
|
23
|
+
static use(fnOrOpts: ((hub: SesameHub3) => Promise<any>) | object, maybeFn?: (hub: SesameHub3) => Promise<any>): Promise<any>;
|
|
24
|
+
/**
|
|
25
|
+
* @param {{
|
|
26
|
+
* config: object,
|
|
27
|
+
* tokenStore: TokenStore,
|
|
28
|
+
* configStore?: ConfigStore,
|
|
29
|
+
* debug?: boolean,
|
|
30
|
+
* }} args
|
|
31
|
+
*/
|
|
32
|
+
constructor({ config, tokenStore, configStore, debug }: {
|
|
33
|
+
config: object;
|
|
34
|
+
tokenStore: TokenStore;
|
|
35
|
+
configStore?: ConfigStore;
|
|
36
|
+
debug?: boolean;
|
|
37
|
+
});
|
|
38
|
+
_config: any;
|
|
39
|
+
_configStore: ConfigStore;
|
|
40
|
+
_tokenStore: TokenStore;
|
|
41
|
+
_debug: boolean;
|
|
42
|
+
/** @type {Hub3WsClient | null} */
|
|
43
|
+
_ws: Hub3WsClient | null;
|
|
44
|
+
_subUUID: any;
|
|
45
|
+
/**
|
|
46
|
+
* close() 時に await したい async cleanup 関数の集合 (2nd-pass M-1)。
|
|
47
|
+
* `onIRLearned` 等の戻り値 unsubscribe は呼び出し側の await 忘れで Hub3 が
|
|
48
|
+
* REGISTER モードに残るリスクがあるため、ここに登録しておくと close() で確実に走る。
|
|
49
|
+
*/
|
|
50
|
+
_pendingCleanups: Set<any>;
|
|
51
|
+
/** WS 再接続 (初回以外の OPEN) で呼ぶコールバック集合。購読者の再 subscribe 用。 */
|
|
52
|
+
_reconnectCbs: Set<any>;
|
|
53
|
+
/**
|
|
54
|
+
* WS 再接続時に呼ばれるコールバックを登録する。戻り値で解除。
|
|
55
|
+
* デーモン等、再接続後にサーバ購読 (subscribe frame) を張り直したい用途向け。
|
|
56
|
+
* @param {() => void} cb
|
|
57
|
+
* @returns {() => void} unsubscribe
|
|
58
|
+
*/
|
|
59
|
+
onReconnect(cb: () => void): () => void;
|
|
60
|
+
/** 登録済み再接続コールバックを発火する (transport の onReopen から呼ばれる)。 */
|
|
61
|
+
_fireReconnect(): void;
|
|
62
|
+
get config(): any;
|
|
63
|
+
get configStore(): ConfigStore;
|
|
64
|
+
get tokenStore(): TokenStore;
|
|
65
|
+
get connected(): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* remote 名 (省略時は default) から remote 定義と親 hub3 をまとめて取得。
|
|
68
|
+
*/
|
|
69
|
+
resolveRemote(name: any): {
|
|
70
|
+
name: any;
|
|
71
|
+
remote: any;
|
|
72
|
+
hub3Name: any;
|
|
73
|
+
hub3: any;
|
|
74
|
+
};
|
|
75
|
+
/** WS 接続を確立。既に接続済みなら何もしない。 */
|
|
76
|
+
connect(): Promise<void>;
|
|
77
|
+
close(): Promise<void>;
|
|
78
|
+
_ensureConnected(): void;
|
|
79
|
+
_bindNs(mod: any): {};
|
|
80
|
+
/** スケジュール (biz3Schedule)。 */
|
|
81
|
+
get schedule(): {};
|
|
82
|
+
/** 組織管理 (employee/group/role/device-group/employee-device)。 */
|
|
83
|
+
get org(): {};
|
|
84
|
+
/** 会社 (biz3ManageCompany)。 */
|
|
85
|
+
get company(): {};
|
|
86
|
+
/** 認証データ (NFC カード/パスコードの WS op)。 */
|
|
87
|
+
get access(): {};
|
|
88
|
+
/** IoT cmd (biz3OperateIoT: DFU/LED/リレー/Sesame item)。 */
|
|
89
|
+
get iot(): {};
|
|
90
|
+
/** プリセットリモコン command 生成 (remoteEmit, HXD)。 */
|
|
91
|
+
get presetir(): {};
|
|
92
|
+
/**
|
|
93
|
+
* IR 発射 (name-based)。`keyOrUUID` が UUID 形式ならそのまま command として、
|
|
94
|
+
* そうでなければ remote.keys から名前解決する。
|
|
95
|
+
* config を介さない版は {@link SesameHub3#sendIRDirect}。
|
|
96
|
+
*
|
|
97
|
+
* @param {string|null} remoteName リモコン名 (null で default.remote)
|
|
98
|
+
* @param {string} keyOrUUID キー名 or keyUUID
|
|
99
|
+
* @returns {Promise<object>} sendIR の応答 (success / data.message 等)
|
|
100
|
+
*/
|
|
101
|
+
send(remoteName: string | null, keyOrUUID: string): Promise<object>;
|
|
102
|
+
/**
|
|
103
|
+
* リモコンに登録されている IR キー一覧をサーバから取得 (name-based)。
|
|
104
|
+
* config を介さない版は {@link SesameHub3#getIRCodesDirect}。
|
|
105
|
+
*
|
|
106
|
+
* @param {string|null} remoteName リモコン名 (null で default.remote)
|
|
107
|
+
* @returns {Promise<Array<{name:string, keyUUID:string}>>}
|
|
108
|
+
*/
|
|
109
|
+
listKeys(remoteName: string | null): Promise<Array<{
|
|
110
|
+
name: string;
|
|
111
|
+
keyUUID: string;
|
|
112
|
+
}>>;
|
|
113
|
+
/**
|
|
114
|
+
* 接続疎通確認: biz3KeepAlive を 1 往復して ack を待つ。
|
|
115
|
+
* 失敗時は throw。
|
|
116
|
+
*/
|
|
117
|
+
ping(): Promise<boolean>;
|
|
118
|
+
/**
|
|
119
|
+
* ログインユーザの customerInfo / quotas を取得 (biz3GetLoginUser)。
|
|
120
|
+
* email は tokenStore の username (login に使った値) を使う。
|
|
121
|
+
* @returns {Promise<{customerInfo: object|null, quotas: object|null}>}
|
|
122
|
+
*/
|
|
123
|
+
getLoginUser(): Promise<{
|
|
124
|
+
customerInfo: object | null;
|
|
125
|
+
quotas: object | null;
|
|
126
|
+
}>;
|
|
127
|
+
/**
|
|
128
|
+
* biz3GetLoginUser で実 companyID / subUUID を取得し、config と内部状態に反映する。
|
|
129
|
+
* companyID は従来デフォルト (ch_CandyhouseMobile) を置いていたが、これで実値に上書きできる。
|
|
130
|
+
* @returns {Promise<object|null>} customerInfo
|
|
131
|
+
*/
|
|
132
|
+
refreshAccount(): Promise<object | null>;
|
|
133
|
+
/**
|
|
134
|
+
* 全 SESAME デバイス (Hub3 含む) のリストを取得。
|
|
135
|
+
* biz3ManageDevice/getCompanyDevice → PubedCompanyDevice の応答を待つ。
|
|
136
|
+
*/
|
|
137
|
+
listDevices({ timeoutMs }?: {
|
|
138
|
+
timeoutMs?: number;
|
|
139
|
+
}): Promise<any>;
|
|
140
|
+
_requireConfigStore(op: any): void;
|
|
141
|
+
/**
|
|
142
|
+
* 全 SESAME デバイスを引いてロックを config に取り込む。
|
|
143
|
+
* @param {{prune?:boolean}} [opts]
|
|
144
|
+
* @returns {Promise<{added:string[], updated:string[], removed:string[]}>}
|
|
145
|
+
*/
|
|
146
|
+
syncLocksFromDevices(opts?: {
|
|
147
|
+
prune?: boolean;
|
|
148
|
+
}): Promise<{
|
|
149
|
+
added: string[];
|
|
150
|
+
updated: string[];
|
|
151
|
+
removed: string[];
|
|
152
|
+
}>;
|
|
153
|
+
/**
|
|
154
|
+
* 全 SESAME デバイスを引いて Hub3 を config に取り込む。
|
|
155
|
+
* @param {{prune?:boolean}} [opts]
|
|
156
|
+
* @returns {Promise<{added:string[], updated:string[], removed:string[]}>}
|
|
157
|
+
*/
|
|
158
|
+
syncHub3sFromDevices(opts?: {
|
|
159
|
+
prune?: boolean;
|
|
160
|
+
}): Promise<{
|
|
161
|
+
added: string[];
|
|
162
|
+
updated: string[];
|
|
163
|
+
removed: string[];
|
|
164
|
+
}>;
|
|
165
|
+
/**
|
|
166
|
+
* `devices` 応答だけからリモコンを config に取り込む (引数不要)。
|
|
167
|
+
* 内部で Hub3 を自動登録してから、各 Hub3 の stateInfo.remoteList を展開する。
|
|
168
|
+
* irType はリモコン側が持っているのでユーザー指定不要。
|
|
169
|
+
* @returns {Promise<{hub3:{added,updated,removed}, remotes:{added,updated}}>}
|
|
170
|
+
*/
|
|
171
|
+
syncRemotesFromDevices(): Promise<{
|
|
172
|
+
hub3: {
|
|
173
|
+
added: any;
|
|
174
|
+
updated: any;
|
|
175
|
+
removed: any;
|
|
176
|
+
};
|
|
177
|
+
remotes: {
|
|
178
|
+
added: any;
|
|
179
|
+
updated: any;
|
|
180
|
+
};
|
|
181
|
+
}>;
|
|
182
|
+
/**
|
|
183
|
+
* devices から「Hub3 とその配下リモコン」をフラットに取得 (登録せず一覧だけ)。
|
|
184
|
+
* 対話 add で候補を見せる用途。
|
|
185
|
+
* @returns {Promise<Array<{hub3DeviceUUID:string, hub3Name:string, uuid:string, type:number, alias:string|null}>>}
|
|
186
|
+
*/
|
|
187
|
+
listRemotesFromDevices(): Promise<Array<{
|
|
188
|
+
hub3DeviceUUID: string;
|
|
189
|
+
hub3Name: string;
|
|
190
|
+
uuid: string;
|
|
191
|
+
type: number;
|
|
192
|
+
alias: string | null;
|
|
193
|
+
}>>;
|
|
194
|
+
/**
|
|
195
|
+
* server 側 (getRemoteList) のリモコンを config に取り込む (上級/代替経路)。
|
|
196
|
+
* 通常は syncRemotesFromDevices で足りる。
|
|
197
|
+
* @param {string} hub3Name これらのリモコンが属する Hub3 の config 名
|
|
198
|
+
* @param {number} irType 取得するリモコンの irType (例 49152=エアコン)
|
|
199
|
+
* @returns {Promise<{added:string[], updated:string[]}>}
|
|
200
|
+
*/
|
|
201
|
+
syncRemotesFromServer(hub3Name: string, irType: number): Promise<{
|
|
202
|
+
added: string[];
|
|
203
|
+
updated: string[];
|
|
204
|
+
}>;
|
|
205
|
+
/**
|
|
206
|
+
* 指定 remote のキー一覧を server から取得して config に書き戻す。
|
|
207
|
+
* @param {string|null} remoteName
|
|
208
|
+
* @returns {Promise<{name:string, keyCount:number}>}
|
|
209
|
+
*/
|
|
210
|
+
syncRemoteKeys(remoteName: string | null): Promise<{
|
|
211
|
+
name: string;
|
|
212
|
+
keyCount: number;
|
|
213
|
+
}>;
|
|
214
|
+
/**
|
|
215
|
+
* lock 設定を name から解決。name 省略時は default.lock、
|
|
216
|
+
* 無ければ locks が 1 つだけならそれ。
|
|
217
|
+
*/
|
|
218
|
+
resolveLock(name: any): {
|
|
219
|
+
name: any;
|
|
220
|
+
lock: any;
|
|
221
|
+
};
|
|
222
|
+
_lockParams(name: any): {
|
|
223
|
+
deviceId: any;
|
|
224
|
+
secretKey: any;
|
|
225
|
+
subUUID: any;
|
|
226
|
+
};
|
|
227
|
+
/**
|
|
228
|
+
* ロック施錠 (name-based, cmd=82)。config を介さない版は {@link SesameHub3#lockDevice}。
|
|
229
|
+
* @param {string|null} [name] ロック名 (null で default.lock)
|
|
230
|
+
* @returns {Promise<object>} pubDeviceStateChange の応答
|
|
231
|
+
*/
|
|
232
|
+
lock(name?: string | null): Promise<object>;
|
|
233
|
+
/**
|
|
234
|
+
* ロック解錠 (name-based, cmd=83)。config を介さない版は {@link SesameHub3#unlockDevice}。
|
|
235
|
+
* @param {string|null} [name] ロック名 (null で default.lock)
|
|
236
|
+
* @returns {Promise<object>} pubDeviceStateChange の応答
|
|
237
|
+
*/
|
|
238
|
+
unlock(name?: string | null): Promise<object>;
|
|
239
|
+
/**
|
|
240
|
+
* トグル (name-based, cmd=88, cloud のみの合成命令)。
|
|
241
|
+
* @param {string|null} [name] ロック名 (null で default.lock)
|
|
242
|
+
* @returns {Promise<object>}
|
|
243
|
+
*/
|
|
244
|
+
toggle(name?: string | null): Promise<object>;
|
|
245
|
+
/**
|
|
246
|
+
* SESAME Bot クリック (name-based, cmd=89)。
|
|
247
|
+
* 注: lock.js の低レベル関数 `botClick(client, params)` とは別物 (こちらは name で解決)。
|
|
248
|
+
* @param {string|null} [name] ロック名 (null で default.lock)
|
|
249
|
+
* @returns {Promise<object>}
|
|
250
|
+
*/
|
|
251
|
+
botClick(name?: string | null): Promise<object>;
|
|
252
|
+
/**
|
|
253
|
+
* デバッグ用: WS の全受信メッセージを購読する (戻り値で unsubscribe)。
|
|
254
|
+
* fire-and-forget な op (autolock 等) のサーバ応答を観測するのに使う。
|
|
255
|
+
* @param {(msg:object)=>void} fn
|
|
256
|
+
* @returns {()=>void} unsubscribe
|
|
257
|
+
*/
|
|
258
|
+
onAnyMessage(fn: (msg: object) => void): () => void;
|
|
259
|
+
/** 任意 cmd 直指定 (上級用)。 */
|
|
260
|
+
triggerLockRaw(name: any, cmd: any): Promise<any>;
|
|
261
|
+
/**
|
|
262
|
+
* オートロック設定 (name-based)。解錠 N 秒後に自動施錠。`seconds=0` で無効。
|
|
263
|
+
*
|
|
264
|
+
* ⚠️ 実験的 / 実機未検証: クラウド中継 (Hub3) が autolock(ItemCode 11) を通すかは前例が無い。
|
|
265
|
+
* 公式アプリは BLE で送っている。fire-and-forget (応答待ちしない)。
|
|
266
|
+
*
|
|
267
|
+
* @param {string|null} name ロック名 (null で default.lock)
|
|
268
|
+
* @param {number} seconds 0..65535 (0=無効)
|
|
269
|
+
* @param {number} [timeoutMs] ack 待ちタイムアウト
|
|
270
|
+
* @returns {Promise<{ack:any, cmd:number, seconds:number}>}
|
|
271
|
+
*/
|
|
272
|
+
setAutolock(name: string | null, seconds: number, timeoutMs?: number): Promise<{
|
|
273
|
+
ack: any;
|
|
274
|
+
cmd: number;
|
|
275
|
+
seconds: number;
|
|
276
|
+
}>;
|
|
277
|
+
get subUUID(): any;
|
|
278
|
+
/** Hub3 を学習モードに入れ、物理リモコンの 1 ボタンを学習して remote にキー登録。 */
|
|
279
|
+
learnIR(remoteName: any, keyName: any, { timeoutMs, onPrompt }?: {
|
|
280
|
+
timeoutMs?: number;
|
|
281
|
+
}): Promise<{
|
|
282
|
+
keyUUID: string;
|
|
283
|
+
captured: any;
|
|
284
|
+
saved: any;
|
|
285
|
+
}>;
|
|
286
|
+
listIRRemotes(type: any, { page, pageSize }?: {}): Promise<any>;
|
|
287
|
+
searchPresetIRRemotes(type: any, searchTerm: any): Promise<any>;
|
|
288
|
+
addIRRemoteServer(remoteObj: any): Promise<any>;
|
|
289
|
+
deleteIRRemoteServer(remoteName: any): Promise<any>;
|
|
290
|
+
renameIRRemote(remoteName: any, alias: any): Promise<any>;
|
|
291
|
+
deleteIRKey(remoteName: any, keyOrUUID: any): Promise<any>;
|
|
292
|
+
renameIRKey(remoteName: any, keyOrUUID: any, newName: any): Promise<any>;
|
|
293
|
+
getIRMode(hub3Name: any): Promise<any>;
|
|
294
|
+
setIRMode(hub3Name: any, mode: any): Promise<any>;
|
|
295
|
+
matchIRRemote({ irData, irType, brandName }: {
|
|
296
|
+
irData: any;
|
|
297
|
+
irType: any;
|
|
298
|
+
brandName: any;
|
|
299
|
+
}): Promise<any>;
|
|
300
|
+
_resolveHub3(name: any): any;
|
|
301
|
+
/** 個人ユーザのデバイス一覧 (会社 vs 個人で別 op)。 */
|
|
302
|
+
listUserDevices(): Promise<any>;
|
|
303
|
+
getDeviceStatus(deviceUUID: any): Promise<any>;
|
|
304
|
+
renameDevice(deviceUUID: any, deviceName: any): Promise<any>;
|
|
305
|
+
/** company から指定 UUID のデバイスを削除。 */
|
|
306
|
+
deleteDevice(deviceUUID: any): Promise<any>;
|
|
307
|
+
/**
|
|
308
|
+
* @deprecated `onDeviceUpdate(items, fn)` を使ってください (on* イベント命名に統一)。
|
|
309
|
+
* 後方互換のため残置。内部実装は onDeviceUpdate と同一。
|
|
310
|
+
*/
|
|
311
|
+
subscribeDeviceUpdates(deviceInfos: any, onUpdate: any): any;
|
|
312
|
+
/** ロック開閉履歴を取得。`list` はデバイス指定の配列。 */
|
|
313
|
+
getDeviceHistory(list: any, pageSize: any): Promise<any>;
|
|
314
|
+
/** 電池履歴を取得 (1ページ)。lastEvaluatedKey でページング。 */
|
|
315
|
+
getDeviceBattery(deviceUUID: any, { lastEvaluatedKey, pageSize }?: {
|
|
316
|
+
lastEvaluatedKey?: any;
|
|
317
|
+
pageSize?: number;
|
|
318
|
+
}): Promise<any>;
|
|
319
|
+
listFirmware(): Promise<any>;
|
|
320
|
+
/** WebAPI proxy 経由で REST API を叩く。apiKeyId は config 側に保存。 */
|
|
321
|
+
invokeWebAPI({ func, query, body, apiKeyId }: {
|
|
322
|
+
func: any;
|
|
323
|
+
query: any;
|
|
324
|
+
body: any;
|
|
325
|
+
apiKeyId: any;
|
|
326
|
+
}): Promise<any>;
|
|
327
|
+
/**
|
|
328
|
+
* 直接 lock 制御 (config を介さない, 任意 cmd)。`unlockDevice`/`lockDevice` 等の基底。
|
|
329
|
+
* @param {{deviceUUID:string, secretKey:string, cmd:number, timeoutMs?:number}} p
|
|
330
|
+
* deviceUUID: ロックの UUID / secretKey: 32hex 共通鍵 (devices で取得) /
|
|
331
|
+
* cmd: 82=LOCK 83=UNLOCK 88=TOGGLE 89=CLICK
|
|
332
|
+
* @returns {Promise<object>} pubDeviceStateChange の応答
|
|
333
|
+
*/
|
|
334
|
+
triggerLockDevice({ deviceUUID, secretKey, cmd, timeoutMs }: {
|
|
335
|
+
deviceUUID: string;
|
|
336
|
+
secretKey: string;
|
|
337
|
+
cmd: number;
|
|
338
|
+
timeoutMs?: number;
|
|
339
|
+
}): Promise<object>;
|
|
340
|
+
/**
|
|
341
|
+
* 直接 解錠 (config を介さない, cmd=83)。
|
|
342
|
+
* @param {{deviceUUID:string, secretKey:string, timeoutMs?:number}} p
|
|
343
|
+
* @returns {Promise<object>} pubDeviceStateChange の応答
|
|
344
|
+
*/
|
|
345
|
+
unlockDevice(p: {
|
|
346
|
+
deviceUUID: string;
|
|
347
|
+
secretKey: string;
|
|
348
|
+
timeoutMs?: number;
|
|
349
|
+
}): Promise<object>;
|
|
350
|
+
/**
|
|
351
|
+
* 直接 施錠 (config を介さない, cmd=82)。
|
|
352
|
+
* @param {{deviceUUID:string, secretKey:string, timeoutMs?:number}} p
|
|
353
|
+
* @returns {Promise<object>}
|
|
354
|
+
*/
|
|
355
|
+
lockDevice(p: {
|
|
356
|
+
deviceUUID: string;
|
|
357
|
+
secretKey: string;
|
|
358
|
+
timeoutMs?: number;
|
|
359
|
+
}): Promise<object>;
|
|
360
|
+
/**
|
|
361
|
+
* 直接 トグル (config を介さない, cmd=88)。
|
|
362
|
+
* @param {{deviceUUID:string, secretKey:string, timeoutMs?:number}} p
|
|
363
|
+
* @returns {Promise<object>}
|
|
364
|
+
*/
|
|
365
|
+
toggleDevice(p: {
|
|
366
|
+
deviceUUID: string;
|
|
367
|
+
secretKey: string;
|
|
368
|
+
timeoutMs?: number;
|
|
369
|
+
}): Promise<object>;
|
|
370
|
+
/**
|
|
371
|
+
* 直接 Bot クリック (config を介さない, cmd=89)。
|
|
372
|
+
* @param {{deviceUUID:string, secretKey:string, timeoutMs?:number}} p
|
|
373
|
+
* @returns {Promise<object>}
|
|
374
|
+
*/
|
|
375
|
+
botClickDevice(p: {
|
|
376
|
+
deviceUUID: string;
|
|
377
|
+
secretKey: string;
|
|
378
|
+
timeoutMs?: number;
|
|
379
|
+
}): Promise<object>;
|
|
380
|
+
/**
|
|
381
|
+
* 直接 IR 発射 (config を介さない)。
|
|
382
|
+
* @param {{hub3DeviceId:string, irDeviceUUID:string, irType:number, command:string, operation?:string}} p
|
|
383
|
+
* hub3DeviceId: Hub3 UUID / irDeviceUUID: リモコン UUID / irType: 例 49152 /
|
|
384
|
+
* command: keyUUID か 16byte hex / operation: "learnEmit" (default) | "remoteEmit"
|
|
385
|
+
* @returns {Promise<object>} sendIR の応答
|
|
386
|
+
*/
|
|
387
|
+
sendIRDirect({ hub3DeviceId, irDeviceUUID, irType, command, operation }: {
|
|
388
|
+
hub3DeviceId: string;
|
|
389
|
+
irDeviceUUID: string;
|
|
390
|
+
irType: number;
|
|
391
|
+
command: string;
|
|
392
|
+
operation?: string;
|
|
393
|
+
}): Promise<object>;
|
|
394
|
+
/**
|
|
395
|
+
* 直接 IR キー一覧取得 (config を介さない)。
|
|
396
|
+
* @param {{hub3DeviceId:string, irDeviceUUID:string}} p
|
|
397
|
+
* @returns {Promise<Array<{name:string, keyUUID:string}>>}
|
|
398
|
+
*/
|
|
399
|
+
getIRCodesDirect({ hub3DeviceId, irDeviceUUID }: {
|
|
400
|
+
hub3DeviceId: string;
|
|
401
|
+
irDeviceUUID: string;
|
|
402
|
+
}): Promise<Array<{
|
|
403
|
+
name: string;
|
|
404
|
+
keyUUID: string;
|
|
405
|
+
}>>;
|
|
406
|
+
/** name で指定したロックの state change push を購読。戻り値は unsubscribe。 */
|
|
407
|
+
onLockStateChange(name: any, fn: any): () => void;
|
|
408
|
+
/** UUID 直指定で state change を購読。 */
|
|
409
|
+
onLockStateChangeDevice(deviceUUID: any, fn: any): () => void;
|
|
410
|
+
/**
|
|
411
|
+
* IR 学習データの購読 (受け取った波形を fn に流す)。
|
|
412
|
+
* 内部で setIRMode(REGISTER) → subscribeIRData を発行する。
|
|
413
|
+
*
|
|
414
|
+
* **重要**: 戻り値の async unsubscribe 関数は **必ず `await` してください**。
|
|
415
|
+
* await 忘れで親プロセスが先に終了すると、Hub3 が REGISTER モードに残ります
|
|
416
|
+
* (Review M-1)。`hub.close()` を呼んでも Hub3 側のモードは元に戻りません。
|
|
417
|
+
*
|
|
418
|
+
* 戻り値: async () => Promise<void> — subscribe 解除 + setIRMode(CONTROL) 復帰
|
|
419
|
+
*/
|
|
420
|
+
onIRLearned(hub3Name: any, fn: any): Promise<() => Promise<void>>;
|
|
421
|
+
/**
|
|
422
|
+
* デバイス state push の購読 (複数デバイスまとめて)。
|
|
423
|
+
* @param {{deviceUUID:string, deviceModel?:string}[]} items
|
|
424
|
+
* @param {(msg:any) => void} fn
|
|
425
|
+
*/
|
|
426
|
+
onDeviceUpdate(items: {
|
|
427
|
+
deviceUUID: string;
|
|
428
|
+
deviceModel?: string;
|
|
429
|
+
}[], fn: (msg: any) => void): any;
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* トークン永続化インターフェース。FileTokenStore がデフォルト実装。
|
|
433
|
+
* 独自実装 (keychain / DB / メモリ) を渡す場合は下記 6 メソッドすべて必須。
|
|
434
|
+
*/
|
|
435
|
+
export type TokenStore = {
|
|
436
|
+
/**
|
|
437
|
+
* 保存済みトークン {idToken, refreshToken, clientId, accessToken?, deviceKey?} を返す。無ければ null
|
|
438
|
+
*/
|
|
439
|
+
load: () => (object | null);
|
|
440
|
+
/**
|
|
441
|
+
* トークンを永続化 (refresh 時に呼ばれる)
|
|
442
|
+
*/
|
|
443
|
+
save: (tokens: object) => void;
|
|
444
|
+
/**
|
|
445
|
+
* トークンを破棄
|
|
446
|
+
*/
|
|
447
|
+
clear: () => void;
|
|
448
|
+
/**
|
|
449
|
+
* sign-in 進行中の一時状態を返す。無ければ null
|
|
450
|
+
*/
|
|
451
|
+
loadPending: () => (object | null);
|
|
452
|
+
/**
|
|
453
|
+
* sign-in 進行中の一時状態を保存
|
|
454
|
+
*/
|
|
455
|
+
savePending: (state: object) => void;
|
|
456
|
+
/**
|
|
457
|
+
* sign-in 一時状態を破棄
|
|
458
|
+
*/
|
|
459
|
+
clearPending: () => void;
|
|
460
|
+
};
|
|
461
|
+
import { ConfigStore } from "./config.js";
|
|
462
|
+
import { Hub3WsClient } from "./transport.js";
|
|
463
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ログインセッションのユーザに紐づく全 company の一覧を取得する。
|
|
3
|
+
*
|
|
4
|
+
* biz3 getCompanies (useStripeInfo.js:73-82): フレームは {action, op:'get'} のみで
|
|
5
|
+
* companyID も email も送らない (obj ラップ無し)。応答は handleCompaniesResponse の
|
|
6
|
+
* 'get' case (useStripeInfo.js:161-165) で message.success のとき message.data が
|
|
7
|
+
* company オブジェクトの配列。各要素の確認済みフィールド:
|
|
8
|
+
* companyID, name, feeLevel{subscriptionId, isRootUser:bool, level:number},
|
|
9
|
+
* tag (配列。tag[0]==='オーナー' で isOwner 判定), isSesameApp:bool,
|
|
10
|
+
* employeeEmail, subUUID (useStripeInfo.js:41-71, 277 で読み出しを確認)。
|
|
11
|
+
*
|
|
12
|
+
* 注: 応答は配列であって obj ラップではない。companyID は他 op
|
|
13
|
+
* (updateName/getPaymentConfig) が要求する priorityCompanyId の一次データ。
|
|
14
|
+
*
|
|
15
|
+
* @param {import("./transport.js").Hub3WsClient} client
|
|
16
|
+
* @param {{timeoutMs?:number}} [params]
|
|
17
|
+
* @returns {Promise<object[]>} company オブジェクトの配列
|
|
18
|
+
*/
|
|
19
|
+
export function getCompanies(client: import("./transport.js").Hub3WsClient, { timeoutMs }?: {
|
|
20
|
+
timeoutMs?: number;
|
|
21
|
+
}): Promise<object[]>;
|
|
22
|
+
/**
|
|
23
|
+
* 会社名を変更する。
|
|
24
|
+
*
|
|
25
|
+
* biz3 updateCompanyName (useStripeInfo.js:293-305): フレームは
|
|
26
|
+
* {action, obj:{companyID, name}, op:'updateName'} で、companyID/name は必ず obj の
|
|
27
|
+
* 内側に入れる (トップレベルに companyID を置かない)。companyID は priorityCompanyId
|
|
28
|
+
* (= get 応答から決まる優先会社の companyID)。
|
|
29
|
+
*
|
|
30
|
+
* 応答 (useStripeInfo.js:166-174): message.success のとき message.data === {companyID, name}
|
|
31
|
+
* (更新後の値。配列ではない)。biz3 はこの companyID 一致の company の name を差し替える。
|
|
32
|
+
*
|
|
33
|
+
* @param {import("./transport.js").Hub3WsClient} client
|
|
34
|
+
* @param {{companyID:string, name:string, timeoutMs?:number}} params
|
|
35
|
+
* @returns {Promise<{companyID:string, name:string}>} 更新後の {companyID, name}
|
|
36
|
+
*/
|
|
37
|
+
export function updateCompanyName(client: import("./transport.js").Hub3WsClient, { companyID, name, timeoutMs }: {
|
|
38
|
+
companyID: string;
|
|
39
|
+
name: string;
|
|
40
|
+
timeoutMs?: number;
|
|
41
|
+
}): Promise<{
|
|
42
|
+
companyID: string;
|
|
43
|
+
name: string;
|
|
44
|
+
}>;
|
|
45
|
+
/**
|
|
46
|
+
* 会社を新規登録する。
|
|
47
|
+
*
|
|
48
|
+
* biz3 addCompany (useStripeInfo.js:307-320): フレームは
|
|
49
|
+
* {action, name, employeeEmail, subUUID, op:'add'} とフラット展開 (obj ラップ無し)。
|
|
50
|
+
* companyID は送らない (新規作成のため)。呼び出し元 (layout/index.js:300-309) では
|
|
51
|
+
* name=入力会社名, employeeEmail=customerInfo.employeeEmail, subUUID=customerInfo.subUUID
|
|
52
|
+
* を渡す。employeeEmail / subUUID はログインユーザの customerInfo (biz3GetLoginUser 応答)
|
|
53
|
+
* 由来であり、CLI では既ログインユーザ情報から補完する必要がある。
|
|
54
|
+
*
|
|
55
|
+
* 応答 (useStripeInfo.js:175-179): message.success のとき message.data が新規 company
|
|
56
|
+
* 1件で、biz3 は companies 配列に push する (setCompanies(prev => [...prev, message.data]))。
|
|
57
|
+
* data は get の配列要素と同型 (companyID, name 等) と推定されるが、add 応答 data の
|
|
58
|
+
* 個別フィールドは biz3 で読み出されておらず詳細は未確認 (push のみ)。
|
|
59
|
+
*
|
|
60
|
+
* @param {import("./transport.js").Hub3WsClient} client
|
|
61
|
+
* @param {{name:string, employeeEmail:string, subUUID:string, timeoutMs?:number}} params
|
|
62
|
+
* @returns {Promise<object>} 新規 company オブジェクト (応答 data)
|
|
63
|
+
*/
|
|
64
|
+
export function addCompany(client: import("./transport.js").Hub3WsClient, { name, employeeEmail, subUUID, timeoutMs }: {
|
|
65
|
+
name: string;
|
|
66
|
+
employeeEmail: string;
|
|
67
|
+
subUUID: string;
|
|
68
|
+
timeoutMs?: number;
|
|
69
|
+
}): Promise<object>;
|
|
70
|
+
/**
|
|
71
|
+
* 課金レベル設定 (料金プラン設定) を取得する。
|
|
72
|
+
*
|
|
73
|
+
* biz3 getLevelConfig (useStripeInfo.js:322-334): フレームは
|
|
74
|
+
* {action, companyID:<priorityCompanyId>, op:'getPaymentConfig'} で companyID は
|
|
75
|
+
* トップレベルに直接置く (obj ラップ無し)。companyID は priorityCompanyId
|
|
76
|
+
* (get 応答由来の優先会社 ID)。
|
|
77
|
+
*
|
|
78
|
+
* 応答: biz3 では handleCompaniesResponse の switch に getPaymentConfig case が無く、
|
|
79
|
+
* invokeCallbacks(message) (useStripeInfo.js:159) で op 単位コールバックへ委譲される。
|
|
80
|
+
* よって応答 data の構造はこのファイルからは未確認 (呼び出し側 cb 依存)。
|
|
81
|
+
* action='biz3ManageCompany' + op='getPaymentConfig' で返る点のみ確定。
|
|
82
|
+
*
|
|
83
|
+
* 未確認: 応答 data のフィールド集合 (実機検証要)。本実装は resp.data をそのまま返す。
|
|
84
|
+
*
|
|
85
|
+
* @param {import("./transport.js").Hub3WsClient} client
|
|
86
|
+
* @param {{companyID:string, timeoutMs?:number}} params
|
|
87
|
+
* @returns {Promise<*>} 課金レベル設定 (応答 data。構造未確認)
|
|
88
|
+
*/
|
|
89
|
+
export function getPaymentConfig(client: import("./transport.js").Hub3WsClient, { companyID, timeoutMs }: {
|
|
90
|
+
companyID: string;
|
|
91
|
+
timeoutMs?: number;
|
|
92
|
+
}): Promise<any>;
|
|
93
|
+
export const NAMESPACE_OPS: string[];
|
|
94
|
+
//# sourceMappingURL=company.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"company.d.ts","sourceRoot":"","sources":["../src/company.js"],"names":[],"mappings":"AAiCA;;;;;;;;;;;;;;;;;GAiBG;AACH,qCAJW,OAAO,gBAAgB,EAAE,YAAY,kBACrC;IAAC,SAAS,CAAC,EAAC,MAAM,CAAA;CAAC,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAO7B;AAED;;;;;;;;;;;;;;GAcG;AACH,0CAJW,OAAO,gBAAgB,EAAE,YAAY,kCACrC;IAAC,SAAS,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,MAAM,CAAC;IAAC,SAAS,CAAC,EAAC,MAAM,CAAA;CAAC,GAChD,OAAO,CAAC;IAAC,SAAS,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,MAAM,CAAA;CAAC,CAAC,CAYpD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,mCAJW,OAAO,gBAAgB,EAAE,YAAY,+CACrC;IAAC,IAAI,EAAC,MAAM,CAAC;IAAC,aAAa,EAAC,MAAM,CAAC;IAAC,OAAO,EAAC,MAAM,CAAC;IAAC,SAAS,CAAC,EAAC,MAAM,CAAA;CAAC,GACpE,OAAO,CAAC,MAAM,CAAC,CAY3B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,yCAJW,OAAO,gBAAgB,EAAE,YAAY,4BACrC;IAAC,SAAS,EAAC,MAAM,CAAC;IAAC,SAAS,CAAC,EAAC,MAAM,CAAA;CAAC,GACnC,OAAO,CAAC,GAAC,CAAC,CAUtB;AAGD,qCAAqG"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/** ロック系 model か (biz3 lockModelDevices と完全一致, gUtils.js:279-294)。 */
|
|
2
|
+
export function isLockModel(model: any): boolean;
|
|
3
|
+
/** Hub3 系 model か (hub_3 / hub_3_lte)。 */
|
|
4
|
+
export function isHub3Model(model: any): boolean;
|
|
5
|
+
export class ConfigStore {
|
|
6
|
+
static fromConfigDir(configDir: any): ConfigStore;
|
|
7
|
+
/**
|
|
8
|
+
* @param {string} configPath 絶対パス
|
|
9
|
+
*/
|
|
10
|
+
constructor(configPath: string);
|
|
11
|
+
configPath: string;
|
|
12
|
+
data: any;
|
|
13
|
+
exists(): boolean;
|
|
14
|
+
/** ファイル不在時はメモリ上で空オブジェクトを返す (保存はしない)。 */
|
|
15
|
+
load(): any;
|
|
16
|
+
/** devices{} から locks{}/hub3s{} の派生 view (旧 shape) を都度組み立てる。reader 互換用。 */
|
|
17
|
+
_reproject(): void;
|
|
18
|
+
save(): void;
|
|
19
|
+
/** 空スケルトンを書き出す。既存があれば触らない。 */
|
|
20
|
+
init(): boolean;
|
|
21
|
+
/** name 省略時は default.remote、無ければ remotes が 1 つだけならそれ。 */
|
|
22
|
+
resolveRemote(name: any): {
|
|
23
|
+
name: any;
|
|
24
|
+
remote: any;
|
|
25
|
+
hub3Name: any;
|
|
26
|
+
hub3: any;
|
|
27
|
+
};
|
|
28
|
+
addHub3(name: any, hub3: any): void;
|
|
29
|
+
addRemote(name: any, remote: any): void;
|
|
30
|
+
setDefaultRemote(name: any): void;
|
|
31
|
+
updateRemoteKeys(name: any, keys: any): void;
|
|
32
|
+
/** name 省略時は default.lock、無ければ locks が 1 つだけならそれ。 */
|
|
33
|
+
resolveLock(name: any): {
|
|
34
|
+
name: any;
|
|
35
|
+
lock: any;
|
|
36
|
+
};
|
|
37
|
+
addLock(name: any, lock: any): void;
|
|
38
|
+
setDefaultLock(name: any): void;
|
|
39
|
+
removeLock(name: any): void;
|
|
40
|
+
/**
|
|
41
|
+
* @param {Array} deviceList
|
|
42
|
+
* @param {{ accept:(d:object)=>boolean, category:"lock"|"hub3", prune?:boolean,
|
|
43
|
+
* onFirstAdd?:(name:string)=>void, pruneProtect?:(name:string)=>boolean }} opts
|
|
44
|
+
* accept 受理条件 (取り込む incoming device の判定)
|
|
45
|
+
* category この sync が司る view。prune はこの view に属する device だけを対象にする
|
|
46
|
+
* @returns {{added:string[], updated:string[], removed:string[]}}
|
|
47
|
+
*/
|
|
48
|
+
_syncDevices(deviceList: any[], { accept, category, prune, onFirstAdd, pruneProtect }: {
|
|
49
|
+
accept: (d: object) => boolean;
|
|
50
|
+
category: "lock" | "hub3";
|
|
51
|
+
prune?: boolean;
|
|
52
|
+
onFirstAdd?: (name: string) => void;
|
|
53
|
+
pruneProtect?: (name: string) => boolean;
|
|
54
|
+
}): {
|
|
55
|
+
added: string[];
|
|
56
|
+
updated: string[];
|
|
57
|
+
removed: string[];
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* `devices` (getCompanyDevice 等) の結果からロックを取り込む (devices{} に丸ごと格納)。
|
|
61
|
+
* @param {Array} deviceList
|
|
62
|
+
* @param {{prune?:boolean}} [opts]
|
|
63
|
+
* @returns {{added:string[], updated:string[], removed:string[]}}
|
|
64
|
+
*/
|
|
65
|
+
syncLocksFromDevices(deviceList: any[], { prune }?: {
|
|
66
|
+
prune?: boolean;
|
|
67
|
+
}): {
|
|
68
|
+
added: string[];
|
|
69
|
+
updated: string[];
|
|
70
|
+
removed: string[];
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* `devices` の結果から Hub3 を取り込む (deviceModel が hub_3 / hub_3_lte。devices{} に丸ごと格納)。
|
|
74
|
+
* @param {Array} deviceList
|
|
75
|
+
* @param {{prune?:boolean}} [opts]
|
|
76
|
+
* @returns {{added:string[], updated:string[], removed:string[]}}
|
|
77
|
+
*/
|
|
78
|
+
syncHub3sFromDevices(deviceList: any[], { prune }?: {
|
|
79
|
+
prune?: boolean;
|
|
80
|
+
}): {
|
|
81
|
+
added: string[];
|
|
82
|
+
updated: string[];
|
|
83
|
+
removed: string[];
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* `devices` の応答だけからリモコンを取り込む (引数 irType 不要)。
|
|
87
|
+
*
|
|
88
|
+
* 各 Hub3 デバイスは `stateInfo.remoteList` に配下リモコンを
|
|
89
|
+
* `{uuid, type, alias?}` 付きで持っているので、それを直接展開する。
|
|
90
|
+
* 先に hub3s が登録済みである必要がある (syncHub3sFromDevices を先に呼ぶ)。
|
|
91
|
+
*
|
|
92
|
+
* @param {Array} deviceList getCompanyDevice / getUserDevice の応答
|
|
93
|
+
* @returns {{added:string[], updated:string[]}}
|
|
94
|
+
*/
|
|
95
|
+
syncRemotesFromDevices(deviceList: any[]): {
|
|
96
|
+
added: string[];
|
|
97
|
+
updated: string[];
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* server 側 (getRemoteList) のリモコン一覧から remote 定義を取り込む (上級/代替経路)。
|
|
101
|
+
* 通常は syncRemotesFromDevices で足りる。company 横断の一覧が欲しい場合のみ。
|
|
102
|
+
* @param {Array} remoteList getRemoteList の応答 (irDeviceUUID/uuid, type, alias/name 等)
|
|
103
|
+
* @param {string} hub3Name これらのリモコンが属する Hub3 の config 名
|
|
104
|
+
* @returns {{added:string[], updated:string[]}}
|
|
105
|
+
*/
|
|
106
|
+
syncRemotesFromServer(remoteList: any[], hub3Name: string): {
|
|
107
|
+
added: string[];
|
|
108
|
+
updated: string[];
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=config.d.ts.map
|