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,286 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* エアコンの発射 command (HEX 文字列) を生成。
|
|
3
|
+
* biz3 buildCommand を再現 (remote-air/index.js:117-138, 呼び出しフロー extraLogic D)。
|
|
4
|
+
*
|
|
5
|
+
* 状態は buildAirCommand が buf[4..10] へ直接書き込むため、key 値は発射にほぼ影響しない
|
|
6
|
+
* (key は buf[9] に入るが、power は buf[8] が支配的)。keyType 未指定時は default 0x01。
|
|
7
|
+
*
|
|
8
|
+
* @param {{
|
|
9
|
+
* code: number, // remote.code (プリセット DB 由来の数値)
|
|
10
|
+
* power?: boolean, // 電源 ON/OFF (remote-air:126: power?0x01:0x00)
|
|
11
|
+
* temperature?: number, // UI 温度値 (16-32, 変換なしでそのまま)
|
|
12
|
+
* mode?: number, // mode index 0-4 (getModeValue で HXD 値に変換)
|
|
13
|
+
* fanSpeed?: number, // fanSpeed index 0-3
|
|
14
|
+
* windDirection?: number, // windDirection index 0-2
|
|
15
|
+
* autoSwing?: boolean, // 自動風向 (remote-air:131: autoSwing?0x01:0x00)
|
|
16
|
+
* keyType?: string, // getAirKey に渡す type (省略時 buf[9]=0x01)
|
|
17
|
+
* }} state
|
|
18
|
+
* @returns {string} 大文字 HEX command 文字列
|
|
19
|
+
*/
|
|
20
|
+
export function buildAirCommandHex(state: {
|
|
21
|
+
code: number;
|
|
22
|
+
power?: boolean;
|
|
23
|
+
temperature?: number;
|
|
24
|
+
mode?: number;
|
|
25
|
+
fanSpeed?: number;
|
|
26
|
+
windDirection?: number;
|
|
27
|
+
autoSwing?: boolean;
|
|
28
|
+
keyType?: string;
|
|
29
|
+
}): string;
|
|
30
|
+
/**
|
|
31
|
+
* 非エアコン (TV/ライト/扇風機) の発射 command (HEX 文字列) を生成。
|
|
32
|
+
* biz3 buildCommand を再現 (remote-non-air/index.js:113-124, 呼び出しフロー extraLogic D)。
|
|
33
|
+
*
|
|
34
|
+
* @param {{
|
|
35
|
+
* irType: number, // IR_TYPE.TV / LIGHT / FAN (getKeyByDeviceType に渡す)
|
|
36
|
+
* code: number, // remote.code
|
|
37
|
+
* buttonType: string, // ボタン種別 (getTVKey/getLightKey/getFanKey の keyMap キー)
|
|
38
|
+
* }} p
|
|
39
|
+
* @returns {string} 大文字 HEX command 文字列
|
|
40
|
+
*/
|
|
41
|
+
export function buildNonAirCommandHex({ irType, code, buttonType }: {
|
|
42
|
+
irType: number;
|
|
43
|
+
code: number;
|
|
44
|
+
buttonType: string;
|
|
45
|
+
}): string;
|
|
46
|
+
/**
|
|
47
|
+
* 既に生成した HEX command をそのまま Hub3 に発射する。
|
|
48
|
+
* frame は learnIR 等の sendIR と完全共通 (useRemoteCtrl.js:460-484)。
|
|
49
|
+
*
|
|
50
|
+
* フィールド名トラップ:
|
|
51
|
+
* - deviceId : Hub3 の deviceUUID 文字列 (hub3DeviceId ではなく **deviceId**)
|
|
52
|
+
* - irDeviceUUID: 保存済みリモコンの uuid。未保存プリセットでは **空文字 ''**
|
|
53
|
+
* (remote-air:369 / remote-non-air:155 で remote.uuid || '')
|
|
54
|
+
*
|
|
55
|
+
* 応答: action:'biz3IRRemote', op:'sendIR', success:bool, message?, data?
|
|
56
|
+
* (handleRemoteResponse:65-80 は op==='sendIR' && success で成功扱い)
|
|
57
|
+
*
|
|
58
|
+
* @param {import("./transport.js").Hub3WsClient} client
|
|
59
|
+
* @param {{
|
|
60
|
+
* deviceId: string, // Hub3 deviceUUID
|
|
61
|
+
* command: string, // HEX command (buildAir/NonAirCommandHex の戻り値)
|
|
62
|
+
* irType: number, // remote.type 実値 (IR_TYPE)
|
|
63
|
+
* companyID: string, // gStripe.customerInfo.companyID
|
|
64
|
+
* irDeviceUUID?: string, // remote.uuid (未保存は '')
|
|
65
|
+
* operation?: string, // 既定 'remoteEmit'
|
|
66
|
+
* timeoutMs?: number,
|
|
67
|
+
* }} p
|
|
68
|
+
* @returns {Promise<object>} 応答メッセージ (success / data / message)
|
|
69
|
+
*/
|
|
70
|
+
export function sendIR(client: import("./transport.js").Hub3WsClient, p: {
|
|
71
|
+
deviceId: string;
|
|
72
|
+
command: string;
|
|
73
|
+
irType: number;
|
|
74
|
+
companyID: string;
|
|
75
|
+
irDeviceUUID?: string;
|
|
76
|
+
operation?: string;
|
|
77
|
+
timeoutMs?: number;
|
|
78
|
+
}): Promise<object>;
|
|
79
|
+
/**
|
|
80
|
+
* エアコン: 状態から command を生成してそのまま発射する複合関数。
|
|
81
|
+
* @param {import("./transport.js").Hub3WsClient} client
|
|
82
|
+
* @param {{
|
|
83
|
+
* deviceId: string, companyID: string, code: number,
|
|
84
|
+
* irDeviceUUID?: string, timeoutMs?: number,
|
|
85
|
+
* power?: boolean, temperature?: number, mode?: number,
|
|
86
|
+
* fanSpeed?: number, windDirection?: number, autoSwing?: boolean, keyType?: string,
|
|
87
|
+
* }} p
|
|
88
|
+
* @returns {Promise<{command:string, response:object}>}
|
|
89
|
+
*/
|
|
90
|
+
export function emitAir(client: import("./transport.js").Hub3WsClient, p: {
|
|
91
|
+
deviceId: string;
|
|
92
|
+
companyID: string;
|
|
93
|
+
code: number;
|
|
94
|
+
irDeviceUUID?: string;
|
|
95
|
+
timeoutMs?: number;
|
|
96
|
+
power?: boolean;
|
|
97
|
+
temperature?: number;
|
|
98
|
+
mode?: number;
|
|
99
|
+
fanSpeed?: number;
|
|
100
|
+
windDirection?: number;
|
|
101
|
+
autoSwing?: boolean;
|
|
102
|
+
keyType?: string;
|
|
103
|
+
}): Promise<{
|
|
104
|
+
command: string;
|
|
105
|
+
response: object;
|
|
106
|
+
}>;
|
|
107
|
+
/**
|
|
108
|
+
* 非エアコン (TV/ライト/扇風機): ボタン押下を生成して発射する複合関数。
|
|
109
|
+
* @param {import("./transport.js").Hub3WsClient} client
|
|
110
|
+
* @param {{
|
|
111
|
+
* deviceId: string, companyID: string, code: number,
|
|
112
|
+
* irType: number, buttonType: string,
|
|
113
|
+
* irDeviceUUID?: string, timeoutMs?: number,
|
|
114
|
+
* }} p
|
|
115
|
+
* @returns {Promise<{command:string, response:object}>}
|
|
116
|
+
*/
|
|
117
|
+
export function emitButton(client: import("./transport.js").Hub3WsClient, p: {
|
|
118
|
+
deviceId: string;
|
|
119
|
+
companyID: string;
|
|
120
|
+
code: number;
|
|
121
|
+
irType: number;
|
|
122
|
+
buttonType: string;
|
|
123
|
+
irDeviceUUID?: string;
|
|
124
|
+
timeoutMs?: number;
|
|
125
|
+
}): Promise<{
|
|
126
|
+
command: string;
|
|
127
|
+
response: object;
|
|
128
|
+
}>;
|
|
129
|
+
/**
|
|
130
|
+
* irType (remote.type) の確定値。
|
|
131
|
+
* 一次資料: presetIR.json extraLogic C / HXDParametersSwapper.getKeyByDeviceType:166-180。
|
|
132
|
+
* @readonly
|
|
133
|
+
*/
|
|
134
|
+
export const IR_TYPE: Readonly<{
|
|
135
|
+
AIR: 49152;
|
|
136
|
+
FAN: 32768;
|
|
137
|
+
LIGHT: 57344;
|
|
138
|
+
TV: 8192;
|
|
139
|
+
}>;
|
|
140
|
+
/**
|
|
141
|
+
* HXD プリセット command の組み立て器。
|
|
142
|
+
* biz3 HXDCommandProcessor.js を 1:1 移植 (constructor 既定値・byte 配置・checksum 完全一致)。
|
|
143
|
+
*/
|
|
144
|
+
export class HXDCommandProcessor {
|
|
145
|
+
power: number;
|
|
146
|
+
temperature: number;
|
|
147
|
+
fanSpeed: number;
|
|
148
|
+
windDirection: number;
|
|
149
|
+
autoWindDirection: number;
|
|
150
|
+
mode: number;
|
|
151
|
+
key: number;
|
|
152
|
+
code: number;
|
|
153
|
+
defaultTable: number[];
|
|
154
|
+
AirPrefixCode: number[];
|
|
155
|
+
commonPrefixCode: number[];
|
|
156
|
+
/**
|
|
157
|
+
* エアコン command (16 byte) を生成。
|
|
158
|
+
* vendor: HXDCommandProcessor.js:17-34。
|
|
159
|
+
* 配置: [0x30,0x01, codeHi,codeLo, temp,fanSpeed,windDir,autoWind,power,key,mode, 1,0,0, 0xff, checksum]
|
|
160
|
+
* @returns {number[]} 16 byte の配列
|
|
161
|
+
*/
|
|
162
|
+
buildAirCommand(): number[];
|
|
163
|
+
/**
|
|
164
|
+
* 非エアコン (TV/ライト/扇風機) command (16 byte) を生成。
|
|
165
|
+
* vendor: HXDCommandProcessor.js:36-47。
|
|
166
|
+
* 配置: [0x30,0x00, codeHi,codeLo, 0,0,0,0,0, key, 0, 1,0,0, 0xff, checksum]
|
|
167
|
+
* @returns {number[]} 16 byte の配列
|
|
168
|
+
*/
|
|
169
|
+
buildNonAirCommand(): number[];
|
|
170
|
+
/**
|
|
171
|
+
* command の骨格 (16 byte) を生成。Air/NonAir 共通。
|
|
172
|
+
* vendor: HXDCommandProcessor.js:49-71。
|
|
173
|
+
* @param {number[]} prefixCodeArray 2 byte prefix ([0x30,0x01] か [0x30,0x00])
|
|
174
|
+
* @param {number} code remote.code (16bit, ビッグエンディアンで 2 byte に分割)
|
|
175
|
+
* @param {number[]} table 既定 [0,0,0] (table[0]+1 が buf[11] に入る)
|
|
176
|
+
* @returns {number[]} 16 byte
|
|
177
|
+
*/
|
|
178
|
+
buildKeyData(prefixCodeArray: number[], code: number, table: number[]): number[];
|
|
179
|
+
/**
|
|
180
|
+
* 数値を 16bit ビッグエンディアンの 2 byte に分割。
|
|
181
|
+
* vendor: HXDCommandProcessor.js:73-77。
|
|
182
|
+
* @param {number} number
|
|
183
|
+
* @returns {[number, number]} [上位 byte, 下位 byte]
|
|
184
|
+
*/
|
|
185
|
+
decimalToTwoHexInts(number: number): [number, number];
|
|
186
|
+
/**
|
|
187
|
+
* byte 配列を大文字 HEX 文字列に変換 (区切り無し・各 byte 2 桁 0 埋め)。
|
|
188
|
+
* これが sendIR の command フィールドに入る文字列。
|
|
189
|
+
* vendor: HXDCommandProcessor.js:132-134。
|
|
190
|
+
* @param {number[]} byteArray
|
|
191
|
+
* @returns {string} 例 "30010000..."
|
|
192
|
+
*/
|
|
193
|
+
toHexString(byteArray: number[]): string;
|
|
194
|
+
/**
|
|
195
|
+
* HEX 文字列を byte 配列に戻す。
|
|
196
|
+
* vendor: HXDCommandProcessor.js:124-130。
|
|
197
|
+
* @param {string} hexString
|
|
198
|
+
* @returns {number[]}
|
|
199
|
+
*/
|
|
200
|
+
hexStringToByteArray(hexString: string): number[];
|
|
201
|
+
/**
|
|
202
|
+
* 保存済みエアコン command HEX から状態を復元 (発射には不要・state 復元用)。
|
|
203
|
+
* vendor: HXDCommandProcessor.js:84-117。
|
|
204
|
+
* 前提: length>=22, bytes[0]===0x30 && bytes[1]===0x01。不正時は null。
|
|
205
|
+
* @param {string} hexString
|
|
206
|
+
* @returns {{temperature:number,fanSpeed:number,windDirection:number,autoWindDirection:number,power:number,key:number,mode:number}|null}
|
|
207
|
+
*/
|
|
208
|
+
parseAirCommand(hexString: string): {
|
|
209
|
+
temperature: number;
|
|
210
|
+
fanSpeed: number;
|
|
211
|
+
windDirection: number;
|
|
212
|
+
autoWindDirection: number;
|
|
213
|
+
power: number;
|
|
214
|
+
key: number;
|
|
215
|
+
mode: number;
|
|
216
|
+
} | null;
|
|
217
|
+
setPower(power: any): this;
|
|
218
|
+
setTemperature(temperature: any): this;
|
|
219
|
+
setModel(model: any): this;
|
|
220
|
+
setFanSpeed(fanSpeed: any): this;
|
|
221
|
+
setWindDirection(windDirection: any): this;
|
|
222
|
+
setAutoWindDirection(autoWindDirection: any): this;
|
|
223
|
+
setKey(key: any): this;
|
|
224
|
+
setCode(code: any): this;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* HXD パラメータ変換器。biz3 HXDParametersSwapper.js を 1:1 移植。
|
|
228
|
+
* key テーブルは vendor の値・default フォールバックまで完全一致させている。
|
|
229
|
+
*/
|
|
230
|
+
export class HXDParametersSwapper {
|
|
231
|
+
/**
|
|
232
|
+
* エアコン key (HXDParametersSwapper.js:4-17)。
|
|
233
|
+
* 注: UI type 'POWER_ON'/'TEMP_ADD' 等は keyMap に無く default 0x01 (ファイル冒頭トラップ参照)。
|
|
234
|
+
* @param {string} type
|
|
235
|
+
* @returns {number}
|
|
236
|
+
*/
|
|
237
|
+
getAirKey(type: string): number;
|
|
238
|
+
/**
|
|
239
|
+
* mode index → HXD 値 (vendor:45-54)。{0:自動,1:制冷,2:除湿,3:送風,4:制熱}
|
|
240
|
+
* @param {number} index @returns {number}
|
|
241
|
+
*/
|
|
242
|
+
getModeValue(index: number): number;
|
|
243
|
+
/**
|
|
244
|
+
* fanSpeed index → HXD 値 (vendor:67-75)。{0:自動,1:低,2:中,3:高}
|
|
245
|
+
* @param {number} index @returns {number}
|
|
246
|
+
*/
|
|
247
|
+
getFanSpeedValue(index: number): number;
|
|
248
|
+
/**
|
|
249
|
+
* windDirection index → HXD 値 (vendor:87-94)。{0:上,1:中,2:下}。default 0x02。
|
|
250
|
+
* @param {number} index @returns {number}
|
|
251
|
+
*/
|
|
252
|
+
getWindDirectionValue(index: number): number;
|
|
253
|
+
/**
|
|
254
|
+
* ライト key (vendor:114-125)。
|
|
255
|
+
* @param {string} type @returns {number}
|
|
256
|
+
*/
|
|
257
|
+
getLightKey(type: string): number;
|
|
258
|
+
/**
|
|
259
|
+
* TV key (vendor:128-147)。
|
|
260
|
+
* @param {string} type @returns {number}
|
|
261
|
+
*/
|
|
262
|
+
getTVKey(type: string): number;
|
|
263
|
+
/**
|
|
264
|
+
* 扇風機 key (vendor:150-162)。
|
|
265
|
+
* @param {string} type @returns {number}
|
|
266
|
+
*/
|
|
267
|
+
getFanKey(type: string): number;
|
|
268
|
+
/**
|
|
269
|
+
* device type (irType) 別に key を引く (非エアコン UI 経由)。
|
|
270
|
+
* vendor: HXDParametersSwapper.js:166-180。
|
|
271
|
+
* 未知 type は warn を出さず default 0x01 (CLI なので console.warn は省略)。
|
|
272
|
+
* @param {number} irType IR_TYPE のいずれか
|
|
273
|
+
* @param {string} type ボタン種別文字列
|
|
274
|
+
* @returns {number}
|
|
275
|
+
*/
|
|
276
|
+
getKeyByDeviceType(irType: number, type: string): number;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* namespace (hub.presetir.*) に露出する client op の allowlist。
|
|
280
|
+
* HXDCommandProcessor / HXDParametersSwapper (class) と buildAirCommandHex /
|
|
281
|
+
* buildNonAirCommandHex (client を取らない純ビルダ) は namespace に出さない
|
|
282
|
+
* (client.js _bindNs が ws を第1引数に注入して壊れるため)。これらは低レベル
|
|
283
|
+
* ユーティリティとして index.js の presetir namespace から直接 import して使う。
|
|
284
|
+
*/
|
|
285
|
+
export const NAMESPACE_OPS: string[];
|
|
286
|
+
//# sourceMappingURL=presetir.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presetir.d.ts","sourceRoot":"","sources":["../src/presetir.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export function isInteractive(): boolean;
|
|
2
|
+
/**
|
|
3
|
+
* テキスト入力 prompt。空 OK なら required=false で。
|
|
4
|
+
* @param {string} message
|
|
5
|
+
* @param {{required?:boolean, defaultValue?:string|null}} [opts]
|
|
6
|
+
*/
|
|
7
|
+
export function promptText(message: string, { required, defaultValue }?: {
|
|
8
|
+
required?: boolean;
|
|
9
|
+
defaultValue?: string | null;
|
|
10
|
+
}): Promise<string>;
|
|
11
|
+
/**
|
|
12
|
+
* yes/no 確認。デフォルトは defaultYes。
|
|
13
|
+
* @param {string} message
|
|
14
|
+
* @param {{defaultYes?:boolean}} [opts]
|
|
15
|
+
*/
|
|
16
|
+
export function confirm(message: string, { defaultYes }?: {
|
|
17
|
+
defaultYes?: boolean;
|
|
18
|
+
}): Promise<boolean>;
|
|
19
|
+
/**
|
|
20
|
+
* リストから 1 つ選ばせる (↑↓ で移動 / Enter で決定)。要素 1 個なら auto-pick。空ならエラー。
|
|
21
|
+
*
|
|
22
|
+
* @template T
|
|
23
|
+
* @param {string} message
|
|
24
|
+
* @param {T[]} items
|
|
25
|
+
* @param {(item:T) => string} [getLabel] 表示ラベル (default: String)
|
|
26
|
+
* @returns {Promise<T>}
|
|
27
|
+
*/
|
|
28
|
+
export function selectFromList<T>(message: string, items: T[], getLabel?: (item: T) => string): Promise<T>;
|
|
29
|
+
/**
|
|
30
|
+
* メニュー (selectFromList の薄いラッパ、ラベルだけ表示)。戻り値は選ばれたエントリの `value`。
|
|
31
|
+
*
|
|
32
|
+
* @param {string} title
|
|
33
|
+
* @param {{label:string, value:any}[]} entries
|
|
34
|
+
*/
|
|
35
|
+
export function menu(title: string, entries: {
|
|
36
|
+
label: string;
|
|
37
|
+
value: any;
|
|
38
|
+
}[]): Promise<any>;
|
|
39
|
+
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.js"],"names":[],"mappings":"AAUA,yCAEC;AAOD;;;;GAIG;AACH,oCAHW,MAAM,+BACN;IAAC,QAAQ,CAAC,EAAC,OAAO,CAAC;IAAC,YAAY,CAAC,EAAC,MAAM,GAAC,IAAI,CAAA;CAAC,mBAQxD;AAED;;;;GAIG;AACH,iCAHW,MAAM,mBACN;IAAC,UAAU,CAAC,EAAC,OAAO,CAAA;CAAC,oBAI/B;AAED;;;;;;;;GAQG;AACH,+BANa,CAAC,WACH,MAAM,SACN,CAAC,EAAE,aACH,CAAC,IAAI,EAAC,CAAC,KAAK,MAAM,GAChB,OAAO,CAAC,CAAC,CAAC,CActB;AAED;;;;;GAKG;AACH,4BAHW,MAAM,WACN;IAAC,KAAK,EAAC,MAAM,CAAC;IAAC,KAAK,EAAC,GAAG,CAAA;CAAC,EAAE,gBAKrC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {Object} ScheduleItem
|
|
3
|
+
* @property {string} scheduleId 取消に使う ID (schedule-list/index.js:49,82,102)
|
|
4
|
+
* @property {string} action 'lock' | 'unlock' | 'upgrade_firmware' 等
|
|
5
|
+
* (schedule-list/index.js:77 / UI ラベルは正規化された表示用で
|
|
6
|
+
* サーバ側の正式 enum は未確認)
|
|
7
|
+
* @property {string} displayTime '2026-01-01 09:00' または 'HH:MM' 形式 (index.js:78,31)
|
|
8
|
+
* @property {string} deviceName 対象デバイス名 (index.js:92)
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* サーバに登録済みの予約スケジュール一覧を取得する。
|
|
12
|
+
*
|
|
13
|
+
* フレーム: { action: "biz3Schedule", userId: <subUUID>, op: "getScheduleList" }
|
|
14
|
+
* 応答: { action: "biz3Schedule", op: "getScheduleList", data: [ ScheduleItem, ... ] }
|
|
15
|
+
* message.data は **オブジェクトでラップされず直接配列** (useManageSchedule.js:34-35
|
|
16
|
+
* が count=data.length / Items=data に自前で詰め替えている点に注意)。
|
|
17
|
+
*
|
|
18
|
+
* @param {import("./transport.js").Hub3WsClient} client
|
|
19
|
+
* @param {{subUUID:string, timeoutMs?:number}} params
|
|
20
|
+
* subUUID は gStripe.customerInfo.subUUID 相当 (生の文字列をそのまま userId に入れる)
|
|
21
|
+
* @returns {Promise<ScheduleItem[]>} スケジュール item の配列 (空なら [])
|
|
22
|
+
*/
|
|
23
|
+
export function getScheduleList(client: import("./transport.js").Hub3WsClient, { subUUID, timeoutMs }?: {
|
|
24
|
+
subUUID: string;
|
|
25
|
+
timeoutMs?: number;
|
|
26
|
+
}): Promise<ScheduleItem[]>;
|
|
27
|
+
/**
|
|
28
|
+
* 予約スケジュールを 1 件取消す。
|
|
29
|
+
*
|
|
30
|
+
* フレーム: { action: "biz3Schedule", userId: <subUUID>, scheduleId: <scheduleId>, op: "cancelSchedule" }
|
|
31
|
+
* (フィールド順は原典 useManageSchedule.js:54-59 のリテラル順)
|
|
32
|
+
* 応答: { action: "biz3Schedule", op: "cancelSchedule", ... }
|
|
33
|
+
*
|
|
34
|
+
* 未確認: cancelSchedule 応答 data の具体構造は web コードからは判別不可。biz3 hook の switch
|
|
35
|
+
* には cancelSchedule ケースが無く (useManageSchedule.js:31-41 は getScheduleList のみ)、
|
|
36
|
+
* 完了は registerCallback の cb 受信 (= ack) でしか確認していない。UI は楽観的に isCancelling
|
|
37
|
+
* フラグを立てるだけ (schedule-list/index.js:47-51)。よって本実装は **ack 受信=成功** とみなし、
|
|
38
|
+
* resp.success が明示的に false の場合のみ throw する。成功フラグ等の data 形は実機検証要。
|
|
39
|
+
*
|
|
40
|
+
* @param {import("./transport.js").Hub3WsClient} client
|
|
41
|
+
* @param {{subUUID:string, scheduleId:string, timeoutMs?:number}} params
|
|
42
|
+
* scheduleId は getScheduleList で得た item.scheduleId をそのまま渡す。
|
|
43
|
+
* @returns {Promise<any>} サーバ応答 (ack)。data の構造は未確認のため raw を返す。
|
|
44
|
+
*/
|
|
45
|
+
export function cancelSchedule(client: import("./transport.js").Hub3WsClient, { subUUID, scheduleId, timeoutMs }?: {
|
|
46
|
+
subUUID: string;
|
|
47
|
+
scheduleId: string;
|
|
48
|
+
timeoutMs?: number;
|
|
49
|
+
}): Promise<any>;
|
|
50
|
+
export const NAMESPACE_OPS: string[];
|
|
51
|
+
export type ScheduleItem = {
|
|
52
|
+
/**
|
|
53
|
+
* 取消に使う ID (schedule-list/index.js:49,82,102)
|
|
54
|
+
*/
|
|
55
|
+
scheduleId: string;
|
|
56
|
+
/**
|
|
57
|
+
* 'lock' | 'unlock' | 'upgrade_firmware' 等
|
|
58
|
+
* (schedule-list/index.js:77 / UI ラベルは正規化された表示用で
|
|
59
|
+
* サーバ側の正式 enum は未確認)
|
|
60
|
+
*/
|
|
61
|
+
action: string;
|
|
62
|
+
/**
|
|
63
|
+
* '2026-01-01 09:00' または 'HH:MM' 形式 (index.js:78,31)
|
|
64
|
+
*/
|
|
65
|
+
displayTime: string;
|
|
66
|
+
/**
|
|
67
|
+
* 対象デバイス名 (index.js:92)
|
|
68
|
+
*/
|
|
69
|
+
deviceName: string;
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=schedule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../src/schedule.js"],"names":[],"mappings":"AA6BA;;;;;;;;GAQG;AAEH;;;;;;;;;;;;GAYG;AACH,wCALW,OAAO,gBAAgB,EAAE,YAAY,2BACrC;IAAC,OAAO,EAAC,MAAM,CAAC;IAAC,SAAS,CAAC,EAAC,MAAM,CAAA;CAAC,GAEjC,OAAO,CAAC,YAAY,EAAE,CAAC,CAkBnC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,uCALW,OAAO,gBAAgB,EAAE,YAAY,uCACrC;IAAC,OAAO,EAAC,MAAM,CAAC;IAAC,UAAU,EAAC,MAAM,CAAC;IAAC,SAAS,CAAC,EAAC,MAAM,CAAA;CAAC,GAEpD,OAAO,CAAC,GAAG,CAAC,CAkBxB;AAGD,qCAAmE;;;;;gBA5ErD,MAAM;;;;;;YACN,MAAM;;;;iBAGN,MAAM;;;;gBACN,MAAM"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
export class Daemon {
|
|
2
|
+
/**
|
|
3
|
+
* @param {{ hub: object, version?: string, debug?: boolean }} args
|
|
4
|
+
* hub は SesameHub3 (テストでは狭いインターフェースの fake)。
|
|
5
|
+
*/
|
|
6
|
+
constructor({ hub, version, debug }: {
|
|
7
|
+
hub: object;
|
|
8
|
+
version?: string;
|
|
9
|
+
debug?: boolean;
|
|
10
|
+
});
|
|
11
|
+
hub: any;
|
|
12
|
+
version: string;
|
|
13
|
+
_debug: boolean;
|
|
14
|
+
authState: string;
|
|
15
|
+
_registry: Map<string, {
|
|
16
|
+
summary: string;
|
|
17
|
+
params: any[];
|
|
18
|
+
result: string;
|
|
19
|
+
handler: Function;
|
|
20
|
+
namespace?: string;
|
|
21
|
+
}>;
|
|
22
|
+
_openrpc: {
|
|
23
|
+
openrpc: string;
|
|
24
|
+
info: {
|
|
25
|
+
title: string;
|
|
26
|
+
version: any;
|
|
27
|
+
"x-contractVersion": string;
|
|
28
|
+
description: string;
|
|
29
|
+
};
|
|
30
|
+
methods: {
|
|
31
|
+
name: any;
|
|
32
|
+
summary: any;
|
|
33
|
+
params: any;
|
|
34
|
+
result: {
|
|
35
|
+
name: string;
|
|
36
|
+
schema: {
|
|
37
|
+
description: any;
|
|
38
|
+
type: string;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
}[];
|
|
42
|
+
"x-events": {
|
|
43
|
+
name: string;
|
|
44
|
+
description: string;
|
|
45
|
+
}[];
|
|
46
|
+
};
|
|
47
|
+
/** @type {Map<string, Promise<any>>} メソッド名→直列化チェーン末尾 */
|
|
48
|
+
_locks: Map<string, Promise<any>>;
|
|
49
|
+
/** @type {Map<object, Set<string>>} Connection→購読 topic */
|
|
50
|
+
_subs: Map<object, Set<string>>;
|
|
51
|
+
/** hub 状態 push の単一購読の unsubscribe (張っている時のみ非 null) */
|
|
52
|
+
_stateUnsub: any;
|
|
53
|
+
_stopped: boolean;
|
|
54
|
+
_shuttingDown: boolean;
|
|
55
|
+
_retryTimer: NodeJS.Timeout;
|
|
56
|
+
_log(...a: any[]): void;
|
|
57
|
+
start(): void;
|
|
58
|
+
_connectLoop(): Promise<void>;
|
|
59
|
+
_hasStoredTokens(): boolean;
|
|
60
|
+
/** キャンセル可能な sleep。shutdown 時に即 resolve してループを抜けさせる。 */
|
|
61
|
+
_sleep(ms: any): Promise<any>;
|
|
62
|
+
_retryResolve: (value: any) => void;
|
|
63
|
+
addConnection(conn: any): void;
|
|
64
|
+
removeConnection(conn: any): void;
|
|
65
|
+
/** 1 メッセージを処理して応答オブジェクト (通知なら null) を返す。push はしない (HTTP POST 用)。 */
|
|
66
|
+
dispatchMessage(conn: any, raw: any): Promise<any>;
|
|
67
|
+
/** framing から: 1 行を処理し、応答があれば conn.send で push する。throw しない。 */
|
|
68
|
+
handleLine(conn: any, raw: any): Promise<void>;
|
|
69
|
+
/** メソッド実行。registry 解決 + rpc.discover + メソッド名単位の直列化。常に Promise を返す。 */
|
|
70
|
+
invoke(method: any, params: any, conn: any): Promise<any>;
|
|
71
|
+
/**
|
|
72
|
+
* 同名メソッドを直列化する。これは応答入替の主防御ではなく (request() ベースの op は
|
|
73
|
+
* transport の (action:op) FIFO が保証する) **listDevices 等 onMessage 先着 resolve で
|
|
74
|
+
* 解決する op** を、複数クライアント同時呼び出しから守る防御。同名 op を 1 並行に絞る。
|
|
75
|
+
*/
|
|
76
|
+
_serialize(key: any, run: any): Promise<any>;
|
|
77
|
+
subscribe(conn: any, topics: any): {
|
|
78
|
+
subscribed: string[];
|
|
79
|
+
};
|
|
80
|
+
unsubscribe(conn: any, topics: any): {
|
|
81
|
+
subscribed: string[];
|
|
82
|
+
};
|
|
83
|
+
_anySubscribers(): boolean;
|
|
84
|
+
/** 状態 push の単一購読を (必要なら) 張る。hub 未接続なら接続時に再試行。 */
|
|
85
|
+
_ensureStateSub(): void;
|
|
86
|
+
_reestablishStateSub(): void;
|
|
87
|
+
_maybeTeardownStateSub(): void;
|
|
88
|
+
/**
|
|
89
|
+
* 状態 push を購読 Connection へ配信する。
|
|
90
|
+
* 注: lockState と deviceUpdate は現状どちらも biz3 の pubDeviceStateChange を源とする
|
|
91
|
+
* (同一ストリームの別ラベル)。両方購読している接続には **1 回だけ** 配信する
|
|
92
|
+
* (最初に購読している topic のラベルで) — 同一イベントの二重配信を避ける。
|
|
93
|
+
*/
|
|
94
|
+
_fanout(msg: any): void;
|
|
95
|
+
/** 冪等。受付停止 → hub.close()(=_pendingCleanups 実行) → 解決。 */
|
|
96
|
+
shutdown(): Promise<void>;
|
|
97
|
+
/** 購読可能な topic 一覧 (framing が事前検証に使う)。 */
|
|
98
|
+
get topics(): string[];
|
|
99
|
+
/** テスト/イントロスペクション用。 */
|
|
100
|
+
get registry(): Map<string, {
|
|
101
|
+
summary: string;
|
|
102
|
+
params: any[];
|
|
103
|
+
result: string;
|
|
104
|
+
handler: Function;
|
|
105
|
+
namespace?: string;
|
|
106
|
+
}>;
|
|
107
|
+
get openrpc(): {
|
|
108
|
+
openrpc: string;
|
|
109
|
+
info: {
|
|
110
|
+
title: string;
|
|
111
|
+
version: any;
|
|
112
|
+
"x-contractVersion": string;
|
|
113
|
+
description: string;
|
|
114
|
+
};
|
|
115
|
+
methods: {
|
|
116
|
+
name: any;
|
|
117
|
+
summary: any;
|
|
118
|
+
params: any;
|
|
119
|
+
result: {
|
|
120
|
+
name: string;
|
|
121
|
+
schema: {
|
|
122
|
+
description: any;
|
|
123
|
+
type: string;
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
}[];
|
|
127
|
+
"x-events": {
|
|
128
|
+
name: string;
|
|
129
|
+
description: string;
|
|
130
|
+
}[];
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=daemon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/serve/daemon.js"],"names":[],"mappings":"AAgCA;IACE;;;OAGG;IACH,qCAHW;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAoB5D;IAfC,SAAc;IACd,gBAAsB;IACtB,gBAAmB;IACnB,kBAA2B;IAC3B;;;;;;OAAgC;IAChC;;;;;;;;;;;;;;;;;;;;;;;;MAAwD;IACxD,wDAAwD;IACxD,QADW,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CACb;IACvB,2DAA2D;IAC3D,OADW,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CACb;IACtB,sDAAsD;IACtD,iBAAuB;IACvB,kBAAqB;IACrB,uBAA0B;IAC1B,4BAAuB;IAGzB,wBAA+D;IAG/D,cAMC;IAED,8BAoBC;IAED,4BAKC;IAED,uDAAuD;IACvD,8BAKC;IAHG,oCAA4B;IAMhC,+BAAwD;IAExD,kCAGC;IAGD,oEAAoE;IACpE,mDAEC;IAED,gEAAgE;IAChE,+CAKC;IAED,sEAAsE;IACtE,0DAqBC;IAED;;;;OAIG;IACH,6CAQC;IAGD;;MAMC;IAED;;MAMC;IAED,2BAGC;IAED,iDAAiD;IACjD,wBAWC;IAED,6BAMC;IAED,+BAMC;IAED;;;;;OAKG;IACH,wBAOC;IAGD,wDAAwD;IACxD,0BAQC;IAED,yCAAyC;IACzC,uBAA+B;IAE/B,uBAAuB;IACvB;;;;;;OAAyC;IACzC;;;;;;;;;;;;;;;;;;;;;;;;MAAuC;CACxC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {import("../daemon.js").Daemon} daemon
|
|
3
|
+
* @param {{ bind?:string, port:number, token:string }} opts
|
|
4
|
+
* @returns {Promise<{ port:number, stop:()=>Promise<void> }>}
|
|
5
|
+
*/
|
|
6
|
+
export function startGrpcFraming(daemon: import("../daemon.js").Daemon, { bind, port, token }: {
|
|
7
|
+
bind?: string;
|
|
8
|
+
port: number;
|
|
9
|
+
token: string;
|
|
10
|
+
}): Promise<{
|
|
11
|
+
port: number;
|
|
12
|
+
stop: () => Promise<void>;
|
|
13
|
+
}>;
|
|
14
|
+
//# sourceMappingURL=grpc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grpc.d.ts","sourceRoot":"","sources":["../../../src/serve/framing/grpc.js"],"names":[],"mappings":"AA4CA;;;;GAIG;AACH,yCAJW,OAAO,cAAc,EAAE,MAAM,yBAC7B;IAAE,IAAI,CAAC,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,MAAM,CAAC;IAAC,KAAK,EAAC,MAAM,CAAA;CAAE,GACzC,OAAO,CAAC;IAAE,IAAI,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,MAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAiG5D"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {import("../daemon.js").Daemon} daemon
|
|
3
|
+
* @param {{ bind?:string, port:number, token:string }} opts
|
|
4
|
+
* @returns {Promise<{ url:string, stop:()=>Promise<void> }>}
|
|
5
|
+
*/
|
|
6
|
+
export function startHttpFraming(daemon: import("../daemon.js").Daemon, { bind, port, token }: {
|
|
7
|
+
bind?: string;
|
|
8
|
+
port: number;
|
|
9
|
+
token: string;
|
|
10
|
+
}): Promise<{
|
|
11
|
+
url: string;
|
|
12
|
+
stop: () => Promise<void>;
|
|
13
|
+
}>;
|
|
14
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/serve/framing/http.js"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,yCAJW,OAAO,cAAc,EAAE,MAAM,yBAC7B;IAAE,IAAI,CAAC,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,MAAM,CAAC;IAAC,KAAK,EAAC,MAAM,CAAA;CAAE,GACzC,OAAO,CAAC;IAAE,GAAG,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,MAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAiI3D"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {import("node:stream").Readable} readable
|
|
3
|
+
* @param {import("node:stream").Writable} writable
|
|
4
|
+
* @param {{ onLine:(conn:object, raw:string)=>void, onClose?:()=>void,
|
|
5
|
+
* maxQueue?:number, maxLine?:number, closeWritable?:boolean }} opts
|
|
6
|
+
* @returns {{ id:string, send:(obj:object)=>void, close:()=>void }}
|
|
7
|
+
*/
|
|
8
|
+
export function makeLineConnection(readable: import("node:stream").Readable, writable: import("node:stream").Writable, opts: {
|
|
9
|
+
onLine: (conn: object, raw: string) => void;
|
|
10
|
+
onClose?: () => void;
|
|
11
|
+
maxQueue?: number;
|
|
12
|
+
maxLine?: number;
|
|
13
|
+
closeWritable?: boolean;
|
|
14
|
+
}): {
|
|
15
|
+
id: string;
|
|
16
|
+
send: (obj: object) => void;
|
|
17
|
+
close: () => void;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=ndjson.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ndjson.d.ts","sourceRoot":"","sources":["../../../src/serve/framing/ndjson.js"],"names":[],"mappings":"AAYA;;;;;;GAMG;AACH,6CANW,OAAO,aAAa,EAAE,QAAQ,YAC9B,OAAO,aAAa,EAAE,QAAQ,QAC9B;IAAE,MAAM,EAAC,CAAC,IAAI,EAAC,MAAM,EAAE,GAAG,EAAC,MAAM,KAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAC,MAAI,IAAI,CAAC;IAC1D,QAAQ,CAAC,EAAC,MAAM,CAAC;IAAC,OAAO,CAAC,EAAC,MAAM,CAAC;IAAC,aAAa,CAAC,EAAC,OAAO,CAAA;CAAE,GAC3D;IAAE,EAAE,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,CAAC,GAAG,EAAC,MAAM,KAAG,IAAI,CAAC;IAAC,KAAK,EAAC,MAAI,IAAI,CAAA;CAAE,CAyDlE"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** 既存ソケットが生きてれば throw、stale なら unlink して継続。 */
|
|
2
|
+
export function ensureFreeSocket(socketPath: any): Promise<any>;
|
|
3
|
+
/**
|
|
4
|
+
* @param {import("../daemon.js").Daemon} daemon
|
|
5
|
+
* @param {{ socketPath:string }} opts
|
|
6
|
+
* @returns {Promise<{ path:string, stop:()=>Promise<void> }>}
|
|
7
|
+
*/
|
|
8
|
+
export function startSocketFraming(daemon: import("../daemon.js").Daemon, { socketPath }: {
|
|
9
|
+
socketPath: string;
|
|
10
|
+
}): Promise<{
|
|
11
|
+
path: string;
|
|
12
|
+
stop: () => Promise<void>;
|
|
13
|
+
}>;
|
|
14
|
+
//# sourceMappingURL=socket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../../src/serve/framing/socket.js"],"names":[],"mappings":"AAYA,+CAA+C;AAC/C,gEAcC;AAED;;;;GAIG;AACH,2CAJW,OAAO,cAAc,EAAE,MAAM,kBAC7B;IAAE,UAAU,EAAC,MAAM,CAAA;CAAE,GACnB,OAAO,CAAC;IAAE,IAAI,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,MAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAwC5D"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {import("../daemon.js").Daemon} daemon
|
|
3
|
+
* @param {{ onShutdown?:()=>void }} [opts]
|
|
4
|
+
* @returns {{ stop:()=>void }}
|
|
5
|
+
*/
|
|
6
|
+
export function startStdioFraming(daemon: import("../daemon.js").Daemon, { onShutdown }?: {
|
|
7
|
+
onShutdown?: () => void;
|
|
8
|
+
}): {
|
|
9
|
+
stop: () => void;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=stdio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../../src/serve/framing/stdio.js"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,0CAJW,OAAO,cAAc,EAAE,MAAM,mBAC7B;IAAE,UAAU,CAAC,EAAC,MAAI,IAAI,CAAA;CAAE,GACtB;IAAE,IAAI,EAAC,MAAI,IAAI,CAAA;CAAE,CAkB7B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** 32byte hex のランダム token。 */
|
|
2
|
+
export function generateToken(): string;
|
|
3
|
+
/** 定数時間比較。長さ不一致は false。 */
|
|
4
|
+
export function tokenMatches(provided: any, expected: any): boolean;
|
|
5
|
+
/**
|
|
6
|
+
* HTTP リクエストから token を取り出す。**通常は `Authorization: Bearer` ヘッダ**を使うこと。
|
|
7
|
+
* `?token=` クエリは **ブラウザ専用のフォールバック** (EventSource/WebSocket がヘッダを送れないため)。
|
|
8
|
+
* クエリに載せると proxy ログ/履歴に残るので、ヘッダを送れるクライアントは必ずヘッダを使う。
|
|
9
|
+
*/
|
|
10
|
+
export function extractToken(req: any): string;
|
|
11
|
+
//# sourceMappingURL=token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/serve/framing/token.js"],"names":[],"mappings":"AAKA,8BAA8B;AAC9B,wCAEC;AAED,2BAA2B;AAC3B,oEAQC;AAED;;;;GAIG;AACH,+CASC"}
|