pi-courier 0.1.18 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/README.zh-CN.md +1 -1
- package/deploy/docker/Dockerfile +1 -1
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +61 -21
- package/dist/setup.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -220,7 +220,7 @@ A: Historical events that can't be decrypted (new device without old keys). Norm
|
|
|
220
220
|
A: The bot's new device never received the room keys. The bot account has no cross-signing, so the most reliable fix is to **use a non-encrypted room** (create a room without encryption and invite the bot) — the bridge handles plain rooms fine even with `encryption: true`.
|
|
221
221
|
|
|
222
222
|
**Q: `M_BAD_JSON: Provided device_id in device_keys does not match...`?**
|
|
223
|
-
A: The crypto store
|
|
223
|
+
A: The crypto store's device identity doesn't match the token's device (re-logged, or a pasted token from another device). **Since 0.1.20 password login uses a fixed device ID, so re-running setup no longer triggers this.** If it still happens: delete the crypto store and restart — `rm -rf ~/.pi/pi-courier-matrix-crypto && pi-courier restart` (do this whenever you re-run setup / change the token).
|
|
224
224
|
|
|
225
225
|
**Q: `One time key signed_curve25519:... already exists` (M_UNKNOWN)?**
|
|
226
226
|
A: The token is bound to an old device on the server and the local OTK bookkeeping is out of sync — **deleting the local crypto store does NOT help** (the server assigns the device ID from the token, so a rebuilt store uses the same device). **You must get a new token**: re-run `pi-courier setup` and answer `n` to "keep the existing token?" (or log in with the password); a new token = a new device = clean server state. Pair with a crypto-store delete if device residue persists.
|
package/README.zh-CN.md
CHANGED
|
@@ -217,7 +217,7 @@ A: 历史消息无法解密(新设备没有旧密钥)。**正常**,新消息不
|
|
|
217
217
|
A: bot 的新设备没拿到房间密钥。bot 账号没有交叉签名,最可靠的解法是**用非加密房间**(新建房间时不勾选加密,把 bot 拉进来)—— 配置 `encryption: true` 也照常处理非加密房间。
|
|
218
218
|
|
|
219
219
|
**Q: 报 `M_BAD_JSON: Provided device_id in device_keys does not match...`?**
|
|
220
|
-
A:
|
|
220
|
+
A: 本地加密存储与 token 的设备身份不一致(换过 token / 粘贴了别的设备的 token)。**0.1.20 起用密码登录走固定 device_id,重跑 setup 不再出现此问题**。仍遇到时:删除加密存储重启 `rm -rf ~/.pi/pi-courier-matrix-crypto && pi-courier restart`(每次重跑 setup / 换 token 都顺手删一次)。
|
|
221
221
|
|
|
222
222
|
**Q: 报 `One time key signed_curve25519:... already exists`(M_UNKNOWN)?**
|
|
223
223
|
A: token 在服务器上已绑定旧设备,但本地与服务器的 OTK 记账错位 —— **删本地 crypto store 无效**(device ID 由服务器按 token 指定,删了重建还是同一个)。**必须换 token**:重跑 `pi-courier setup`,在"保留现有 token?"处输 `n` 重新获取(或直接密码登录),新 token = 新设备 = 服务器干净。换 token 后如遇 device 残留问题再配合删 crypto store。
|
package/deploy/docker/Dockerfile
CHANGED
|
@@ -22,7 +22,7 @@ ENV https_proxy=${HTTPS_PROXY} \
|
|
|
22
22
|
|
|
23
23
|
# pi-courier 版本:发新版本后更新此值 —— RUN 层指令文本随之变化,
|
|
24
24
|
# docker 缓存自动失效,不会装到旧版(避免"升级了但镜像还是旧代码"的坑)
|
|
25
|
-
ARG PI_COURIER_VERSION=0.1.
|
|
25
|
+
ARG PI_COURIER_VERSION=0.1.20
|
|
26
26
|
|
|
27
27
|
# 仅需要 ca-certificates(npm install 走 https;git 由 runtime 层负责)
|
|
28
28
|
RUN apt-get update \
|
package/dist/setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA2KH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAiG9C"}
|
package/dist/setup.js
CHANGED
|
@@ -31,15 +31,30 @@ function createPrompter() {
|
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
33
|
if (opts?.silent) {
|
|
34
|
-
//
|
|
35
|
-
//
|
|
34
|
+
// Hidden password input (Node's documented _writeToOutput pattern):
|
|
35
|
+
// let the prompt through, render typed characters as stars.
|
|
36
36
|
const output = rl;
|
|
37
37
|
const origWrite = output._writeToOutput;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
let stars = 0;
|
|
39
|
+
output._writeToOutput = (str) => {
|
|
40
|
+
if (str === prompt) {
|
|
41
|
+
origWrite.call(rl, prompt); // show the prompt itself
|
|
42
|
+
}
|
|
43
|
+
else if (str === "\x7f" || str === "\b") {
|
|
44
|
+
if (stars > 0) {
|
|
45
|
+
origWrite.call(rl, "\b \b"); // backspace: erase one star
|
|
46
|
+
stars--;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else if (/^[\x20-\x7e\u00a0-\uffff]$/.test(str)) {
|
|
50
|
+
origWrite.call(rl, "*"); // printable input -> star
|
|
51
|
+
stars++;
|
|
52
|
+
}
|
|
53
|
+
// control sequences are swallowed (no echo, no cursor noise)
|
|
54
|
+
};
|
|
55
|
+
rl.question(prompt, (answer) => {
|
|
41
56
|
output._writeToOutput = origWrite;
|
|
42
|
-
|
|
57
|
+
origWrite.call(rl, "\n");
|
|
43
58
|
finish(answer);
|
|
44
59
|
});
|
|
45
60
|
}
|
|
@@ -80,16 +95,22 @@ function createPrompter() {
|
|
|
80
95
|
},
|
|
81
96
|
};
|
|
82
97
|
}
|
|
83
|
-
async function matrixLogin(homeserver, username, password) {
|
|
98
|
+
async function matrixLogin(homeserver, username, password, deviceId) {
|
|
84
99
|
const url = `${homeserver.replace(/\/$/, "")}/_matrix/client/v3/login`;
|
|
100
|
+
const body = {
|
|
101
|
+
type: "m.login.password",
|
|
102
|
+
identifier: { type: "m.id.user", user: username },
|
|
103
|
+
password,
|
|
104
|
+
};
|
|
105
|
+
if (deviceId) {
|
|
106
|
+
// 固定 device_id:同一 bot 账号重跑 setup 时复用同一个设备身份,
|
|
107
|
+
// 避免换 token 后设备变化导致 M_BAD_JSON / 历史密钥丢失。
|
|
108
|
+
body.device_id = deviceId;
|
|
109
|
+
}
|
|
85
110
|
const res = await fetch(url, {
|
|
86
111
|
method: "POST",
|
|
87
112
|
headers: { "Content-Type": "application/json" },
|
|
88
|
-
body: JSON.stringify(
|
|
89
|
-
type: "m.login.password",
|
|
90
|
-
identifier: { type: "m.id.user", user: username },
|
|
91
|
-
password,
|
|
92
|
-
}),
|
|
113
|
+
body: JSON.stringify(body),
|
|
93
114
|
});
|
|
94
115
|
if (!res.ok) {
|
|
95
116
|
const body = await res.text();
|
|
@@ -108,10 +129,19 @@ async function matrixWhoami(homeserver, accessToken) {
|
|
|
108
129
|
const data = (await res.json());
|
|
109
130
|
return data.user_id ?? "unknown";
|
|
110
131
|
}
|
|
132
|
+
/** Random 8-char uppercase alnum suffix for the fixed device ID. */
|
|
133
|
+
function randomDeviceSuffix() {
|
|
134
|
+
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
|
135
|
+
let out = "";
|
|
136
|
+
for (let i = 0; i < 8; i++) {
|
|
137
|
+
out += chars[Math.floor(Math.random() * chars.length)];
|
|
138
|
+
}
|
|
139
|
+
return out;
|
|
140
|
+
}
|
|
111
141
|
/**
|
|
112
142
|
* Acquire a Matrix access token: password login (mode 1) or pasted token (mode 2).
|
|
113
143
|
*/
|
|
114
|
-
async function acquireToken(ask, homeserver) {
|
|
144
|
+
async function acquireToken(ask, homeserver, deviceId) {
|
|
115
145
|
const authMode = ((await ask("获取 token 方式 [1=用户名密码登录, 2=粘贴已有 token] (1): ")).trim() || "1");
|
|
116
146
|
if (authMode === "2") {
|
|
117
147
|
const accessToken = (await ask("粘贴 access token (syt_...): ")).trim();
|
|
@@ -127,8 +157,8 @@ async function acquireToken(ask, homeserver) {
|
|
|
127
157
|
if (!username || !password)
|
|
128
158
|
throw new Error("用户名/密码不能为空");
|
|
129
159
|
console.log("登录中…");
|
|
130
|
-
const login = await matrixLogin(homeserver, username, password);
|
|
131
|
-
console.log(`✅ 登录成功,账号: ${login.userId}`);
|
|
160
|
+
const login = await matrixLogin(homeserver, username, password, deviceId);
|
|
161
|
+
console.log(`✅ 登录成功,账号: ${login.userId}${deviceId ? `(设备 ${deviceId})` : ""}`);
|
|
132
162
|
return { accessToken: login.accessToken, botUserId: login.userId };
|
|
133
163
|
}
|
|
134
164
|
export async function runSetup() {
|
|
@@ -147,7 +177,15 @@ export async function runSetup() {
|
|
|
147
177
|
const homeserver = (await ask(hsPrompt)).trim() || hsDefault;
|
|
148
178
|
if (!homeserver)
|
|
149
179
|
throw new Error("homeserver URL 不能为空");
|
|
150
|
-
// ---- 2.
|
|
180
|
+
// ---- 2.5 fixed device id ------------------------------------------------
|
|
181
|
+
// Same bot account re-running setup reuses the same device (identity is
|
|
182
|
+
// kept, history keys survive); delete the field to force a new device.
|
|
183
|
+
// Only password login uses it; a pasted token keeps its own device.
|
|
184
|
+
let deviceId = existing.deviceId;
|
|
185
|
+
if (!deviceId) {
|
|
186
|
+
deviceId = `PICOURIER${randomDeviceSuffix()}`;
|
|
187
|
+
}
|
|
188
|
+
// ---- 3. token ----------------------------------------------------------
|
|
151
189
|
// Keep the existing token when the homeserver is unchanged; otherwise it
|
|
152
190
|
// belongs to another server and must be re-acquired.
|
|
153
191
|
const hsChanged = Boolean(hsDefault) && homeserver !== hsDefault;
|
|
@@ -162,27 +200,27 @@ export async function runSetup() {
|
|
|
162
200
|
console.log(`✅ 沿用现有 token,账号: ${botUserId}`);
|
|
163
201
|
}
|
|
164
202
|
else {
|
|
165
|
-
({ accessToken, botUserId } = await acquireToken(ask, homeserver));
|
|
203
|
+
({ accessToken, botUserId } = await acquireToken(ask, homeserver, deviceId));
|
|
166
204
|
}
|
|
167
205
|
}
|
|
168
206
|
else {
|
|
169
207
|
if (hsChanged)
|
|
170
208
|
console.log("ℹ️ homeserver 已变更,需要重新获取 token");
|
|
171
|
-
({ accessToken, botUserId } = await acquireToken(ask, homeserver));
|
|
209
|
+
({ accessToken, botUserId } = await acquireToken(ask, homeserver, deviceId));
|
|
172
210
|
}
|
|
173
|
-
// ----
|
|
211
|
+
// ---- 4. trusted admin user ---------------------------------------------
|
|
174
212
|
const trustedDefault = existing.auth?.trustedUsers?.[0]?.replace(/^matrix:/, "") ?? botUserId;
|
|
175
213
|
const adminRaw = (await ask(`信任用户(管理员)MXID [默认 ${trustedDefault}]: `)).trim() || trustedDefault;
|
|
176
214
|
if (!adminRaw.startsWith("@"))
|
|
177
215
|
throw new Error("MXID 应以 @ 开头,如 @barry:matrix.example.com");
|
|
178
|
-
// ----
|
|
216
|
+
// ---- 5. E2EE ------------------------------------------------------------
|
|
179
217
|
const encDefault = existing.matrix?.encryption === true;
|
|
180
218
|
const encPrompt = encDefault
|
|
181
219
|
? "启用 E2EE 加密? [Y/n] [默认 是]: "
|
|
182
220
|
: "启用 E2EE 加密? [y/N]: ";
|
|
183
221
|
const encAnswer = (await ask(encPrompt)).trim().toLowerCase();
|
|
184
222
|
const encryption = encAnswer === "" ? encDefault : encAnswer === "y";
|
|
185
|
-
// ----
|
|
223
|
+
// ---- 6. workdir ----------------------------------------------------------
|
|
186
224
|
const workdirDefault = existing.workdir ?? `${os.homedir()}/Projects`;
|
|
187
225
|
const workdir = (await ask(`pi 工作目录 [默认 ${workdirDefault}]: `)).trim() || workdirDefault;
|
|
188
226
|
// ---- merge & save --------------------------------------------------------
|
|
@@ -197,6 +235,7 @@ export async function runSetup() {
|
|
|
197
235
|
adminUserId: `matrix:${adminRaw}`,
|
|
198
236
|
},
|
|
199
237
|
workdir,
|
|
238
|
+
deviceId,
|
|
200
239
|
autoConnect: existing.autoConnect ?? true,
|
|
201
240
|
debug: existing.debug ?? true,
|
|
202
241
|
};
|
|
@@ -206,6 +245,7 @@ export async function runSetup() {
|
|
|
206
245
|
console.log(` 信任用户: ${adminRaw}`);
|
|
207
246
|
console.log(` E2EE: ${encryption ? "开启" : "关闭"}`);
|
|
208
247
|
console.log(` 工作目录: ${workdir}`);
|
|
248
|
+
console.log(` 设备 ID: ${deviceId}(固定,重跑 setup 复用;想换设备就删掉此字段)`);
|
|
209
249
|
console.log("\n下一步: pi-courier enable(开机自启)或 pi-courier run(前台运行)");
|
|
210
250
|
}
|
|
211
251
|
catch (err) {
|
package/dist/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGrD;;;;;;;GAOG;AACH,SAAS,cAAc;IAIrB,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7D,OAAO;YACL,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACpB,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBACtB,IAAI,IAAI,GAAG,KAAK,CAAC;gBACjB,MAAM,MAAM,GAAG,CAAC,MAAc,EAAQ,EAAE;oBACtC,IAAI,CAAC,IAAI,EAAE,CAAC;wBACV,IAAI,GAAG,IAAI,CAAC;wBACZ,OAAO,CAAC,MAAM,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC,CAAC;gBACF,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;oBACjB,4DAA4D;oBAC5D,
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -50,6 +50,12 @@ export interface MsgBridgeConfig {
|
|
|
50
50
|
cliPath?: string;
|
|
51
51
|
/** 日志级别:debug | info | warn | error(默认 info;`pi-courier logs --level debug` 可查看全量) */
|
|
52
52
|
logLevel?: string;
|
|
53
|
+
/**
|
|
54
|
+
* 固定设备 ID(仅密码登录适用):重跑 setup 时复用同一个设备,
|
|
55
|
+
* 避免换 token 后设备身份变化导致 M_BAD_JSON / 历史密钥丢失。
|
|
56
|
+
* 由 setup 生成并持久化;删除此字段可重新生成(新设备身份)。
|
|
57
|
+
*/
|
|
58
|
+
deviceId?: string;
|
|
53
59
|
}
|
|
54
60
|
/**
|
|
55
61
|
* Pending remote chat session tracking
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,SAAS,EAAE,IAAI,CAAC;IAChB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,KAAK,GAAG,UAAU,GAAG,cAAc,CAAA;SAAE,CAAC,CAAC;KAC5F,CAAC;IACF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,SAAS,EAAE,IAAI,CAAC;IAChB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,KAAK,GAAG,UAAU,GAAG,cAAc,CAAA;SAAE,CAAC,CAAC;KAC5F,CAAC;IACF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
package/package.json
CHANGED