@lansenger-pm/openclaw-lansenger-channel 3.3.1 → 3.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.
@@ -1,7 +1,11 @@
1
- import { describe, it, expect } from "vitest";
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
2
2
  import { lansengerPlugin, resolveAccount } from "./channel.js";
3
3
  import { LansengerClient, mediaTypeFromPath, buildI18n } from "./client.js";
4
+ import * as fs from "node:fs/promises";
5
+ import * as path from "node:path";
6
+ import * as os from "node:os";
4
7
  const lansengerOnboarding = lansengerPlugin.onboarding;
8
+ const configObj = lansengerPlugin.config ?? lansengerPlugin.base?.config;
5
9
  describe("Lansenger plugin", () => {
6
10
  it("resolves account from config", () => {
7
11
  const cfg = {
@@ -327,4 +331,294 @@ describe("LansengerOnboarding", () => {
327
331
  expect(result.channels.lansenger.appSecret).toBe("replaced-secret");
328
332
  });
329
333
  });
334
+ describe("resolveAccount edge cases", () => {
335
+ it("falls back to first valid account in accounts when no accountId specified", () => {
336
+ const cfg = {
337
+ channels: {
338
+ lansenger: {
339
+ accounts: {
340
+ "key1": { appId: "first-id", appSecret: "first-secret" },
341
+ "key2": { appId: "second-id", appSecret: "second-secret" },
342
+ },
343
+ },
344
+ },
345
+ };
346
+ const account = resolveAccount(cfg, undefined);
347
+ expect(account.appId).toBe("first-id");
348
+ });
349
+ it("falls back to first account (even without valid creds) when no valid account found", () => {
350
+ const cfg = {
351
+ channels: {
352
+ lansenger: {
353
+ accounts: {
354
+ "key1": { appId: "only-id" },
355
+ },
356
+ },
357
+ },
358
+ };
359
+ const account = resolveAccount(cfg, undefined);
360
+ expect(account.accountId).toBe("key1");
361
+ expect(account.appId).toBe("only-id");
362
+ expect(account.appSecret).toBe("");
363
+ expect(account.enabled).toBe(false);
364
+ });
365
+ it("resolves dmPolicy from dmSecurity fallback", () => {
366
+ const cfg = {
367
+ channels: {
368
+ lansenger: { appId: "id", appSecret: "secret", dmSecurity: "paired" },
369
+ },
370
+ };
371
+ const account = resolveAccount(cfg, undefined);
372
+ expect(account.dmPolicy).toBe("paired");
373
+ });
374
+ it("resolves apiGatewayUrl from env var", () => {
375
+ const orig = process.env.LANSENGER_API_GATEWAY_URL;
376
+ process.env.LANSENGER_API_GATEWAY_URL = "https://custom.gateway";
377
+ const cfg = { channels: { lansenger: { appId: "id", appSecret: "secret" } } };
378
+ const account = resolveAccount(cfg, undefined);
379
+ expect(account.apiGatewayUrl).toBe("https://custom.gateway");
380
+ if (orig === undefined)
381
+ delete process.env.LANSENGER_API_GATEWAY_URL;
382
+ else
383
+ process.env.LANSENGER_API_GATEWAY_URL = orig;
384
+ });
385
+ it("enabled is false when only appId provided", () => {
386
+ const cfg = { channels: { lansenger: { appId: "id" } } };
387
+ const account = resolveAccount(cfg, undefined);
388
+ expect(account.enabled).toBe(false);
389
+ });
390
+ it("enabled is false when only appSecret provided", () => {
391
+ const cfg = { channels: { lansenger: { appSecret: "secret" } } };
392
+ const account = resolveAccount(cfg, undefined);
393
+ expect(account.enabled).toBe(false);
394
+ });
395
+ });
396
+ describe("config callbacks", () => {
397
+ it("isConfigured returns true with appId+appSecret", () => {
398
+ const account = { appId: "id", appSecret: "secret", enabled: true, allowFrom: [], dmPolicy: undefined, homeChannel: undefined, apiGatewayUrl: "", accountId: null };
399
+ expect(configObj.isConfigured(account, {})).toBe(true);
400
+ });
401
+ it("isConfigured returns true with configured=true", () => {
402
+ const account = { appId: "", appSecret: "", configured: true, enabled: false, allowFrom: [], dmPolicy: undefined, homeChannel: undefined, apiGatewayUrl: "", accountId: null };
403
+ expect(configObj.isConfigured(account, {})).toBe(true);
404
+ });
405
+ it("isConfigured returns false with no creds", () => {
406
+ const account = { appId: "", appSecret: "", enabled: false, allowFrom: [], dmPolicy: undefined, homeChannel: undefined, apiGatewayUrl: "", accountId: null };
407
+ expect(configObj.isConfigured(account, {})).toBe(false);
408
+ });
409
+ it("hasConfiguredState returns true with accounts", () => {
410
+ const cfg = { channels: { lansenger: { accounts: { "bot1": { appId: "b1", appSecret: "s1" } } } } };
411
+ expect(configObj.hasConfiguredState({ cfg, env: {} })).toBe(true);
412
+ });
413
+ it("hasConfiguredState returns true with env vars", () => {
414
+ const origId = process.env.LANSENGER_APP_ID;
415
+ const origSecret = process.env.LANSENGER_APP_SECRET;
416
+ process.env.LANSENGER_APP_ID = "env-id";
417
+ process.env.LANSENGER_APP_SECRET = "env-secret";
418
+ const cfg = { channels: {} };
419
+ expect(configObj.hasConfiguredState({ cfg, env: { LANSENGER_APP_ID: "env-id", LANSENGER_APP_SECRET: "env-secret" } })).toBe(true);
420
+ if (origId === undefined)
421
+ delete process.env.LANSENGER_APP_ID;
422
+ else
423
+ process.env.LANSENGER_APP_ID = origId;
424
+ if (origSecret === undefined)
425
+ delete process.env.LANSENGER_APP_SECRET;
426
+ else
427
+ process.env.LANSENGER_APP_SECRET = origSecret;
428
+ });
429
+ it("hasConfiguredState returns false with no creds", () => {
430
+ const cfg = { channels: {} };
431
+ expect(configObj.hasConfiguredState({ cfg, env: {} })).toBe(false);
432
+ });
433
+ it("listAccountIds returns single appId", () => {
434
+ const cfg = { channels: { lansenger: { appId: "single-id" } } };
435
+ expect(configObj.listAccountIds(cfg)).toEqual(["single-id"]);
436
+ });
437
+ it("listAccountIds returns multi-account appIds", () => {
438
+ const cfg = { channels: { lansenger: { accounts: { "key1": { appId: "bot1" }, "key2": { appId: "bot2" } } } } };
439
+ expect(configObj.listAccountIds(cfg)).toEqual(["bot1", "bot2"]);
440
+ });
441
+ it("listAccountIds deduplicates", () => {
442
+ const cfg = { channels: { lansenger: { appId: "bot1", accounts: { "key1": { appId: "bot1" } } } } };
443
+ const ids = configObj.listAccountIds(cfg);
444
+ expect(ids.filter((id) => id === "bot1").length).toBe(1);
445
+ });
446
+ it("inspectAccount returns configured for default account", () => {
447
+ const cfg = { channels: { lansenger: { appId: "id", appSecret: "secret" } } };
448
+ const result = configObj.inspectAccount(cfg, undefined);
449
+ expect(result.configured).toBe(true);
450
+ expect(result.appIdStatus).toBe("available");
451
+ expect(result.appSecretStatus).toBe("available");
452
+ });
453
+ it("inspectAccount returns env status when missing from config", () => {
454
+ const origId = process.env.LANSENGER_APP_ID;
455
+ const origSecret = process.env.LANSENGER_APP_SECRET;
456
+ delete process.env.LANSENGER_APP_ID;
457
+ delete process.env.LANSENGER_APP_SECRET;
458
+ const cfg = { channels: { lansenger: {} } };
459
+ const result = configObj.inspectAccount(cfg, undefined);
460
+ expect(result.appIdStatus).toBe("missing");
461
+ expect(result.appSecretStatus).toBe("missing");
462
+ if (origId === undefined)
463
+ delete process.env.LANSENGER_APP_ID;
464
+ else
465
+ process.env.LANSENGER_APP_ID = origId;
466
+ if (origSecret === undefined)
467
+ delete process.env.LANSENGER_APP_SECRET;
468
+ else
469
+ process.env.LANSENGER_APP_SECRET = origSecret;
470
+ });
471
+ it("inspectAccount looks up account by appId key in accounts", () => {
472
+ const cfg = { channels: { lansenger: { accounts: { "bot1": { appId: "bot1", appSecret: "s1" } } } } };
473
+ const result = configObj.inspectAccount(cfg, "bot1");
474
+ expect(result.configured).toBe(true);
475
+ });
476
+ it("inspectAccount finds account by appId match across accounts", () => {
477
+ const cfg = { channels: { lansenger: { accounts: { "key1": { appId: "target-id", appSecret: "s1" } } } } };
478
+ const result = configObj.inspectAccount(cfg, "target-id");
479
+ expect(result.configured).toBe(true);
480
+ });
481
+ });
482
+ describe("applyAccountConfig", () => {
483
+ const applyAccountConfig = lansengerPlugin.setup?.applyAccountConfig ?? lansengerPlugin.base?.setup?.applyAccountConfig;
484
+ it("patches appId into config", () => {
485
+ const cfg = { channels: { lansenger: { appSecret: "existing-secret" } } };
486
+ const result = applyAccountConfig({ cfg, accountId: undefined, input: { appToken: "new-app-id" } });
487
+ expect(result.channels.lansenger.appId).toBe("new-app-id");
488
+ expect(result.channels.lansenger.appSecret).toBe("existing-secret");
489
+ });
490
+ it("patches secret into config", () => {
491
+ const cfg = { channels: { lansenger: { appId: "existing-id" } } };
492
+ const result = applyAccountConfig({ cfg, accountId: undefined, input: { secret: "new-secret" } });
493
+ expect(result.channels.lansenger.appId).toBe("existing-id");
494
+ expect(result.channels.lansenger.appSecret).toBe("new-secret");
495
+ });
496
+ it("patches baseUrl into config", () => {
497
+ const cfg = { channels: { lansenger: { appId: "id", appSecret: "secret" } } };
498
+ const result = applyAccountConfig({ cfg, accountId: undefined, input: { baseUrl: "https://custom.url" } });
499
+ expect(result.channels.lansenger.apiGatewayUrl).toBe("https://custom.url");
500
+ });
501
+ });
502
+ describe("actions.describeMessageTool", () => {
503
+ it("returns null when account not enabled", () => {
504
+ const result = lansengerPlugin.actions.describeMessageTool({ cfg: { channels: { lansenger: {} } }, accountId: undefined, senderIsOwner: false });
505
+ expect(result).toBeNull();
506
+ });
507
+ it("returns actions schema when account enabled", () => {
508
+ const result = lansengerPlugin.actions.describeMessageTool({ cfg: { channels: { lansenger: { appId: "id", appSecret: "secret" } } }, accountId: undefined, senderIsOwner: false });
509
+ expect(result).toBeDefined();
510
+ expect(result.actions).toContain("send");
511
+ expect(result.actions).toContain("delete");
512
+ expect(result.schema[0].properties.filePath).toBeDefined();
513
+ });
514
+ });
515
+ describe("actions.handleAction", () => {
516
+ beforeEach(() => {
517
+ vi.stubGlobal("fetch", async (url) => {
518
+ const u = typeof url === "string" ? url : url.url;
519
+ if (u.includes("apptoken"))
520
+ return new Response(JSON.stringify({ errCode: 0, errMsg: "", data: { appToken: "tok", expiresIn: 7200 } }), { headers: { "content-type": "application/json" } });
521
+ return new Response(JSON.stringify({ errCode: 0, errMsg: "", data: { msgId: "m1" } }), { headers: { "content-type": "application/json" } });
522
+ });
523
+ });
524
+ afterEach(() => { vi.restoreAllMocks(); });
525
+ it("returns error for unknown action", async () => {
526
+ const ctx = { action: "unknown", cfg: { channels: { lansenger: { appId: "id", appSecret: "secret" } } }, args: {} };
527
+ const result = await lansengerPlugin.actions.handleAction(ctx);
528
+ expect(result.success).toBe(false);
529
+ expect(result.error).toContain("Unknown action");
530
+ });
531
+ it("returns error for send without to and text", async () => {
532
+ const ctx = { action: "send", cfg: { channels: { lansenger: { appId: "id", appSecret: "secret" } } }, args: {} };
533
+ const result = await lansengerPlugin.actions.handleAction(ctx);
534
+ expect(result.success).toBe(false);
535
+ expect(result.error).toContain("to and text are required");
536
+ });
537
+ it("returns error for send with filePath not found", async () => {
538
+ const ctx = { action: "send", cfg: { channels: { lansenger: { appId: "id", appSecret: "secret" } } }, args: { filePath: "/tmp/nonexistent_handle.txt", to: "chat-1" } };
539
+ const result = await lansengerPlugin.actions.handleAction(ctx);
540
+ expect(result.success).toBe(false);
541
+ expect(result.error).toContain("File not found");
542
+ });
543
+ it("returns error for send with filePath pointing to directory", async () => {
544
+ const ctx = { action: "send", cfg: { channels: { lansenger: { appId: "id", appSecret: "secret" } } }, args: { filePath: "/tmp", to: "chat-1" } };
545
+ const result = await lansengerPlugin.actions.handleAction(ctx);
546
+ expect(result.success).toBe(false);
547
+ expect(result.error).toContain("Not a file");
548
+ });
549
+ it("delete action revokes message", async () => {
550
+ const ctx = { action: "delete", cfg: { channels: { lansenger: { appId: "id", appSecret: "secret" } } }, args: { messageId: "msg-to-delete" } };
551
+ const result = await lansengerPlugin.actions.handleAction(ctx);
552
+ expect(result.success).toBeDefined();
553
+ });
554
+ it("send resolves target from sessionKey", async () => {
555
+ const ctx = { action: "send", cfg: { channels: { lansenger: { appId: "id", appSecret: "secret" } } }, args: { text: "hello" }, sessionKey: "lansenger:agent-1:chat-from-session" };
556
+ const result = await lansengerPlugin.actions.handleAction(ctx);
557
+ expect(result).toBeDefined();
558
+ });
559
+ });
560
+ describe("resolveLansengerApprovers", () => {
561
+ it("returns explicit ownerAllowFrom", () => {
562
+ const resolveLansengerApprovers = lansengerPlugin.approvalCapability?.nativeRuntime?.availability?.isConfiguredAndAvailable;
563
+ const cfg = { channels: { lansenger: { appId: "id", appSecret: "secret" } }, commands: { ownerAllowFrom: ["approver-1"] } };
564
+ expect(resolveLansengerApprovers({ cfg, accountId: undefined })).toBe(true);
565
+ });
566
+ });
567
+ describe("approvalCapability", () => {
568
+ it("getActionAvailabilityState returns enabled for configured account", () => {
569
+ const getActionAvailabilityState = lansengerPlugin.approvalCapability?.getActionAvailabilityState;
570
+ const cfg = { channels: { lansenger: { appId: "id", appSecret: "secret" } } };
571
+ const result = getActionAvailabilityState({ cfg, accountId: undefined });
572
+ expect(result.kind).toBe("enabled");
573
+ });
574
+ it("getActionAvailabilityState returns unsupported for unconfigured account", () => {
575
+ const getActionAvailabilityState = lansengerPlugin.approvalCapability?.getActionAvailabilityState;
576
+ const cfg = { channels: { lansenger: {} } };
577
+ const result = getActionAvailabilityState({ cfg, accountId: undefined });
578
+ expect(result.kind).toBe("unsupported");
579
+ });
580
+ it("describeDeliveryCapabilities returns enabled", () => {
581
+ const desc = lansengerPlugin.approvalCapability?.native?.describeDeliveryCapabilities;
582
+ const cfg = { channels: { lansenger: { appId: "id", appSecret: "secret" } } };
583
+ const result = desc({ cfg, accountId: undefined });
584
+ expect(result.enabled).toBe(true);
585
+ expect(result.preferredSurface).toBe("origin");
586
+ });
587
+ it("resolveOriginTarget returns target from request", () => {
588
+ const resolve = lansengerPlugin.approvalCapability?.native?.resolveOriginTarget;
589
+ const cfg = { channels: { lansenger: { appId: "id", appSecret: "secret" } } };
590
+ const result = resolve({ cfg, accountId: undefined, request: { turnSource: { target: { to: "chat-1" } } } });
591
+ expect(result).toBeDefined();
592
+ expect(result.to).toBe("chat-1");
593
+ });
594
+ it("resolveOriginTarget returns null when no target", () => {
595
+ const resolve = lansengerPlugin.approvalCapability?.native?.resolveOriginTarget;
596
+ const cfg = { channels: { lansenger: { appId: "id", appSecret: "secret" } } };
597
+ const result = resolve({ cfg, accountId: undefined, request: {} });
598
+ expect(result).toBeNull();
599
+ });
600
+ it("buildPendingPayload returns appCard type", () => {
601
+ const build = lansengerPlugin.approvalCapability?.nativeRuntime?.presentation?.buildPendingPayload;
602
+ const cfg = { channels: { lansenger: { appId: "id", appSecret: "secret" } } };
603
+ const result = build({ cfg, request: { command: "rm -rf /", sessionKey: "sess-1" }, target: { to: "chat-1" }, nowMs: Date.now() });
604
+ expect(result.type).toBe("appCard");
605
+ expect(result.zh).toBeDefined();
606
+ expect(result.en).toBeDefined();
607
+ expect(result.zh.isDynamic).toBe(true);
608
+ });
609
+ it("buildResolvedPayload returns approved text", () => {
610
+ const build = lansengerPlugin.approvalCapability?.nativeRuntime?.presentation?.buildResolvedPayload;
611
+ const cfg = { channels: { lansenger: { appId: "id", appSecret: "secret" } } };
612
+ const result = build({ cfg, resolved: { kind: "approved", actorLabel: "admin" }, target: { to: "chat-1" } });
613
+ expect(result.type).toBe("text");
614
+ expect(result.text).toContain("已批准");
615
+ });
616
+ it("buildResolvedPayload returns denied text", () => {
617
+ const build = lansengerPlugin.approvalCapability?.nativeRuntime?.presentation?.buildResolvedPayload;
618
+ const cfg = { channels: { lansenger: { appId: "id", appSecret: "secret" } } };
619
+ const result = build({ cfg, resolved: { kind: "denied" }, target: { to: "chat-1" } });
620
+ expect(result.type).toBe("text");
621
+ expect(result.text).toContain("已拒绝");
622
+ });
623
+ });
330
624
  //# sourceMappingURL=channel.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"channel.test.js","sourceRoot":"","sources":["../../src/channel.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE5E,MAAM,mBAAmB,GAAI,eAAuB,CAAC,UAAU,CAAC;AAEhE,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,GAAG,GAAG;YACV,QAAQ,EAAE;gBACR,SAAS,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE;aACpF;SACK,CAAC;QACT,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,GAAG,GAAG;YACV,QAAQ,EAAE;gBACR,SAAS,EAAE;oBACT,KAAK,EAAE,YAAY;oBACnB,SAAS,EAAE,gBAAgB;oBAC3B,QAAQ,EAAE;wBACR,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE;wBACzD,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE;qBAC1D;iBACF;aACF;SACK,CAAC;QACT,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,GAAG,GAAG;YACV,QAAQ,EAAE;gBACR,SAAS,EAAE;oBACT,KAAK,EAAE,YAAY;oBACnB,SAAS,EAAE,gBAAgB;oBAC3B,QAAQ,EAAE;wBACR,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE;qBAC1D;iBACF;aACF;SACK,CAAC;QACT,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,YAAY,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,YAAY,CAAC;QAChD,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAS,CAAC;QACpC,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;;YACzD,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,MAAM,CAAC;QAC3C,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;;YACjE,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,UAAU,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QACpD,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACpC,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QACxC,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAS,CAAC;QACpC,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;;YACzD,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,MAAM,CAAC;QAC3C,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;;YACjE,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,UAAU,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzE,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAC9G,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;QACxB,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;QACxB,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACvB,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAC/D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;YACzB,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE;wBACJ,OAAO,EAAE,MAAM;wBACf,SAAS,EAAE,SAAS;wBACpB,QAAQ,EAAE,KAAK;wBACf,IAAI,EAAE,QAAQ;wBACd,cAAc,EAAE,QAAQ;wBACxB,UAAU,EAAE,OAAO;wBACnB,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;qBACzC;iBACF;aACF;SACF,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;YACzB,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE;wBACJ,OAAO,EAAE,MAAM;wBACf,SAAS,EAAE,SAAS;wBACpB,QAAQ,EAAE,OAAO;wBACjB,IAAI,EAAE,QAAQ;wBACd,cAAc,EAAE,SAAS;wBACzB,iBAAiB,EAAE,WAAW;wBAC9B,UAAU,EAAE,KAAK;wBACjB,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE;qBAC3C;iBACF;aACF;SACF,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;YACzB,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE;wBACJ,OAAO,EAAE,MAAM;wBACf,SAAS,EAAE,WAAW;wBACtB,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE;qBACnC;iBACF;aACF;SACF,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC9E,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACjE,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACzD,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC7B,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC9E,MAAM,MAAM,GAAG,mBAAmB,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;QACjG,MAAM,MAAM,GAAG,mBAAmB,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,YAAY,GAAG;YACnB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,UAAU;YAC5B,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;YACzB,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;YACtB,IAAI,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;SACrB,CAAC;QACF,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QACvG,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3G,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;QAC9E,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,YAAY,GAAG;YACnB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,UAAU;YAC5B,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;YACzB,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;YACtB,IAAI,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;SACrB,CAAC;QACF,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QACvG,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3G,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,YAAY,GAAG;YACnB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;YACtB,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;YACzB,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;YACtB,IAAI,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;SACrB,CAAC;QACF,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC9E,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3G,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,MAAM,YAAY,GAAG;YACnB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;YACpB,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;YACzB,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;YACtB,IAAI,EAAE,KAAK,IAAI,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;SACpC,CAAC;QACF,MAAM,mBAAmB,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9F,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,YAAY,GAAG;YACnB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;YACpB,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;YACzB,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;YACtB,IAAI,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;SACrB,CAAC;QACF,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACvH,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACvF,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,YAAY,GAAG;YACnB,IAAI,EAAE,KAAK,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,OAAO,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;YAChF,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;YACzB,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;YACtB,IAAI,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;SACrB,CAAC;QACF,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3G,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,YAAY,GAAG;YACnB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;YACpB,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;YACzB,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;YACtB,IAAI,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;SACrB,CAAC;QACF,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;QACnH,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3G,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACpE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,YAAY,GAAG;YACnB,IAAI,EAAE,KAAK,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,OAAO,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC1F,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;YAC1B,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;YACtB,IAAI,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;SACrB,CAAC;QACF,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QACtF,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3G,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"channel.test.js","sourceRoot":"","sources":["../../src/channel.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
2
- import { LansengerClient, mediaTypeFromPath, buildI18n } from "./client.js";
2
+ import { LansengerClient, mediaTypeFromPath, buildI18n, DEFAULT_API_GATEWAY_URL, MAX_MESSAGE_LENGTH } from "./client.js";
3
3
  function makeClient() {
4
4
  return new LansengerClient({ appId: "test-id", appSecret: "test-secret" });
5
5
  }
@@ -404,4 +404,156 @@ describe("LansengerClient processRawMessage", () => {
404
404
  expect(events.length).toBe(2);
405
405
  });
406
406
  });
407
+ describe("constants", () => {
408
+ it("DEFAULT_API_GATEWAY_URL is correct", () => {
409
+ expect(DEFAULT_API_GATEWAY_URL).toBe("https://open.e.lanxin.cn/open/apigw");
410
+ });
411
+ it("MAX_MESSAGE_LENGTH is 4000", () => {
412
+ expect(MAX_MESSAGE_LENGTH).toBe(4000);
413
+ });
414
+ });
415
+ describe("LansengerClient.sendText", () => {
416
+ beforeEach(() => {
417
+ vi.stubGlobal("fetch", async (url) => {
418
+ const u = typeof url === "string" ? url : url.url;
419
+ if (u.includes("apptoken"))
420
+ return new Response(JSON.stringify({ errCode: 0, errMsg: "", data: { appToken: "tok", expiresIn: 7200 } }), { headers: { "content-type": "application/json" } });
421
+ if (u.includes("messages/create"))
422
+ return new Response(JSON.stringify({ errCode: 0, errMsg: "", data: { msgId: "m1" } }), { headers: { "content-type": "application/json" } });
423
+ return new Response(JSON.stringify({ errCode: 0, errMsg: "", data: {} }), { headers: { "content-type": "application/json" } });
424
+ });
425
+ });
426
+ afterEach(() => { vi.restoreAllMocks(); });
427
+ it("sends plain text successfully", async () => {
428
+ const client = new LansengerClient({ appId: "id", appSecret: "secret" });
429
+ const result = await client.sendText("user-1", "Hello");
430
+ expect(result.success).toBe(true);
431
+ expect(result.messageId).toBe("m1");
432
+ });
433
+ it("sends plain text with reminder", async () => {
434
+ const client = new LansengerClient({ appId: "id", appSecret: "secret" });
435
+ const result = await client.sendText("user-1", "Hello", { all: true });
436
+ expect(result.success).toBe(true);
437
+ });
438
+ it("returns error when no token", async () => {
439
+ vi.stubGlobal("fetch", async () => new Response(JSON.stringify({ errCode: 40001, errMsg: "bad" }), { headers: { "content-type": "application/json" } }));
440
+ const client = new LansengerClient({ appId: "id", appSecret: "secret" });
441
+ const result = await client.sendText("user-1", "Hello");
442
+ expect(result.success).toBe(false);
443
+ });
444
+ });
445
+ describe("LansengerClient.msgTarget (via sendText group vs dm)", () => {
446
+ beforeEach(() => {
447
+ vi.stubGlobal("fetch", async (url, init) => {
448
+ const u = typeof url === "string" ? url : url.url;
449
+ if (u.includes("apptoken"))
450
+ return new Response(JSON.stringify({ errCode: 0, errMsg: "", data: { appToken: "tok", expiresIn: 7200 } }), { headers: { "content-type": "application/json" } });
451
+ const body = init?.body ? JSON.parse(init.body) : {};
452
+ if (u.includes("messages/group")) {
453
+ return new Response(JSON.stringify({ errCode: 0, errMsg: "", data: { msgId: "group-msg" } }), { headers: { "content-type": "application/json" } });
454
+ }
455
+ return new Response(JSON.stringify({ errCode: 0, errMsg: "", data: { msgId: "dm-msg" } }), { headers: { "content-type": "application/json" } });
456
+ });
457
+ });
458
+ afterEach(() => { vi.restoreAllMocks(); });
459
+ it("uses group endpoint for cached group chatId", async () => {
460
+ const client = new LansengerClient({ appId: "id", appSecret: "secret" });
461
+ client.cacheChatType("group-1", "group");
462
+ const result = await client.sendText("group-1", "Hi group");
463
+ expect(result.success).toBe(true);
464
+ });
465
+ it("uses private endpoint for DM chatId", async () => {
466
+ const client = new LansengerClient({ appId: "id", appSecret: "secret" });
467
+ const result = await client.sendText("user-1", "Hi user");
468
+ expect(result.success).toBe(true);
469
+ });
470
+ it("uses group endpoint for group: prefix chatId", async () => {
471
+ const client = new LansengerClient({ appId: "id", appSecret: "secret" });
472
+ const result = await client.sendText("group:some-id", "Hi");
473
+ expect(result.success).toBe(true);
474
+ });
475
+ });
476
+ describe("processRawMessage additional msgTypes", () => {
477
+ it("handles position message", async () => {
478
+ const client = makeClient();
479
+ const raw = JSON.stringify({
480
+ events: [{ data: { msgType: "position", messageId: "pos-1", chatType: "p2p", from: "user-1", conversationId: "conv-1", senderName: "Alice", msgData: { position: { name: "Office", address: "Building 5", latitude: "39.9", longitude: "116.4" } } } }],
481
+ });
482
+ const events = await client.processRawMessage(raw);
483
+ expect(events.length).toBe(1);
484
+ expect(events[0].text).toContain("[Location]");
485
+ expect(events[0].text).toContain("Office");
486
+ });
487
+ it("handles card (contact card) message", async () => {
488
+ const client = makeClient();
489
+ const raw = JSON.stringify({
490
+ events: [{ data: { msgType: "card", messageId: "card-1", chatType: "p2p", from: "user-1", conversationId: "conv-1", senderName: "Alice", msgData: { card: { staffId: "staff-123" } } } }],
491
+ });
492
+ const events = await client.processRawMessage(raw);
493
+ expect(events.length).toBe(1);
494
+ expect(events[0].text).toContain("[Contact Card]");
495
+ expect(events[0].text).toContain("staff-123");
496
+ });
497
+ it("handles sticker message", async () => {
498
+ const client = makeClient();
499
+ const raw = JSON.stringify({
500
+ events: [{ data: { msgType: "sticker", messageId: "stk-1", chatType: "p2p", from: "user-1", conversationId: "conv-1", senderName: "Alice", msgData: { sticker: { stickerId: "stk-001" } } } }],
501
+ });
502
+ const events = await client.processRawMessage(raw);
503
+ expect(events.length).toBe(1);
504
+ expect(events[0].text).toContain("[Sticker]");
505
+ });
506
+ it("handles unknown msgType gracefully", async () => {
507
+ const client = makeClient();
508
+ const raw = JSON.stringify({
509
+ events: [{ data: { msgType: "unknown_type", messageId: "unk-1", chatType: "p2p", from: "user-1", conversationId: "conv-1", senderName: "Alice", msgData: {} } }],
510
+ });
511
+ const events = await client.processRawMessage(raw);
512
+ expect(events.length).toBe(0);
513
+ });
514
+ });
515
+ describe("convertPxToPtDeep", () => {
516
+ it("converts px in nested object", () => {
517
+ const client = makeClient();
518
+ const input = { bodyTitle: "Title", bodyContent: "font-size:16px text" };
519
+ const card = { bodyTitle: input.bodyTitle, bodyContent: "font-size:16px text" };
520
+ expect(card.bodyContent).toContain("16px");
521
+ });
522
+ it("convertPxToPt in string", () => {
523
+ const result = "font-size:20px and font-size:48px".replace(/font-size:\s*(\d+(?:\.\d+)?)px/gi, (_m, n) => `font-size:${Math.max(12, Math.min(36, Math.round(parseFloat(n) * 0.75)))}pt`);
524
+ expect(result).toBe("font-size:15pt and font-size:36pt");
525
+ });
526
+ });
527
+ describe("LansengerClient.isWsAlive", () => {
528
+ it("returns false when no ws connection", () => {
529
+ const client = makeClient();
530
+ expect(client.isWsAlive()).toBe(false);
531
+ });
532
+ });
533
+ describe("LansengerClient.setMessageHandler", () => {
534
+ it("sets handler", () => {
535
+ const client = makeClient();
536
+ const handler = async () => { };
537
+ client.setMessageHandler(handler);
538
+ expect(client.messageHandler).toBe(handler);
539
+ });
540
+ });
541
+ describe("postJson error handling", () => {
542
+ beforeEach(() => {
543
+ vi.stubGlobal("fetch", async (url) => {
544
+ const u = typeof url === "string" ? url : url.url;
545
+ if (u.includes("apptoken"))
546
+ return new Response(JSON.stringify({ errCode: 0, errMsg: "", data: { appToken: "tok", expiresIn: 7200 } }), { headers: { "content-type": "application/json" } });
547
+ if (u.includes("messages/create"))
548
+ return new Response("Internal Server Error", { status: 500, headers: { "content-type": "text/plain" } });
549
+ return new Response("{}", { status: 200, headers: { "content-type": "application/json" } });
550
+ });
551
+ });
552
+ afterEach(() => { vi.restoreAllMocks(); });
553
+ it("handles HTTP 500 from API", async () => {
554
+ const client = new LansengerClient({ appId: "id", appSecret: "secret" });
555
+ const result = await client.sendText("user-1", "Hello");
556
+ expect(result.success).toBe(false);
557
+ });
558
+ });
407
559
  //# sourceMappingURL=client.test.js.map