@awiki/dsh-plugin 0.3.12 → 0.3.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +24 -2
  2. package/README.zh.md +12 -2
  3. package/cordis.patch.yml +1 -0
  4. package/lib/client.js +997 -122
  5. package/lib/client.js.map +1 -1
  6. package/lib/index.js +203 -46
  7. package/lib/provider.js +2 -1
  8. package/lib/{sdk-adapter-DFDY7Hih.mjs → sdk-adapter-DGcTiEZz.mjs} +91 -7
  9. package/lib/typert.host.js +349 -68
  10. package/lib/typert.remote-client.d.ts +9 -1
  11. package/lib/typert.remote-client.d.ts.map +1 -1
  12. package/lib/typert.remote-client.js +349 -68
  13. package/lib/types/client/AwikiDeviceJoinReminder.d.ts.map +1 -1
  14. package/lib/types/client/AwikiDeviceJoinReminder.js +1 -1
  15. package/lib/types/client/AwikiDeviceJoinReminder.js.map +1 -1
  16. package/lib/types/client/AwikiDevices.d.ts +5 -1
  17. package/lib/types/client/AwikiDevices.d.ts.map +1 -1
  18. package/lib/types/client/AwikiDevices.js +2 -1
  19. package/lib/types/client/AwikiDevices.js.map +1 -1
  20. package/lib/types/client/AwikiIdentityAccess.d.ts.map +1 -1
  21. package/lib/types/client/AwikiIdentityAccess.js +72 -24
  22. package/lib/types/client/AwikiIdentityAccess.js.map +1 -1
  23. package/lib/types/client/AwikiIdentityServices.d.ts +9 -0
  24. package/lib/types/client/AwikiIdentityServices.d.ts.map +1 -0
  25. package/lib/types/client/AwikiIdentityServices.js +66 -0
  26. package/lib/types/client/AwikiIdentityServices.js.map +1 -0
  27. package/lib/types/client/AwikiOverlay.js +1 -1
  28. package/lib/types/client/AwikiOverlay.js.map +1 -1
  29. package/lib/types/client/AwikiSettingsSection.js +1 -1
  30. package/lib/types/client/AwikiSettingsSection.js.map +1 -1
  31. package/lib/types/client/controller.d.ts +8 -0
  32. package/lib/types/client/controller.d.ts.map +1 -1
  33. package/lib/types/client/controller.js +20 -2
  34. package/lib/types/client/controller.js.map +1 -1
  35. package/lib/types/client/index.d.ts.map +1 -1
  36. package/lib/types/client/index.js +8 -0
  37. package/lib/types/client/index.js.map +1 -1
  38. package/lib/types/client/slots.d.ts +3 -1
  39. package/lib/types/client/slots.d.ts.map +1 -1
  40. package/lib/types/index.d.ts +7 -1
  41. package/lib/types/index.d.ts.map +1 -1
  42. package/lib/types/index.js +134 -34
  43. package/lib/types/index.js.map +1 -1
  44. package/lib/types/package-version.generated.d.ts +2 -2
  45. package/lib/types/package-version.generated.d.ts.map +1 -1
  46. package/lib/types/package-version.generated.js +2 -2
  47. package/lib/types/package-version.generated.js.map +1 -1
  48. package/lib/types/provider-api.d.ts +17 -1
  49. package/lib/types/provider-api.d.ts.map +1 -1
  50. package/lib/types/provider.d.ts.map +1 -1
  51. package/lib/types/provider.js +1 -0
  52. package/lib/types/provider.js.map +1 -1
  53. package/lib/types/registration-policy.d.ts +1 -1
  54. package/lib/types/registration-policy.d.ts.map +1 -1
  55. package/lib/types/registration-policy.js +1 -1
  56. package/lib/types/registration-policy.js.map +1 -1
  57. package/lib/types/sdk-adapter.d.ts +17 -1
  58. package/lib/types/sdk-adapter.d.ts.map +1 -1
  59. package/lib/types/sdk-adapter.js +83 -4
  60. package/lib/types/sdk-adapter.js.map +1 -1
  61. package/lib/types/types.d.ts +60 -1
  62. package/lib/types/types.d.ts.map +1 -1
  63. package/lib/types/types.js.map +1 -1
  64. package/lib/types/update-policy.d.ts +2 -2
  65. package/lib/types/update-policy.d.ts.map +1 -1
  66. package/package.json +35 -31
@@ -1 +1 @@
1
- {"version":3,"file":"AwikiDeviceJoinReminder.d.ts","sourceRoot":"","sources":["../../../src/client/AwikiDeviceJoinReminder.tsx"],"names":[],"mappings":"AAAA,6EAA6E;AAK7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAM3D,MAAM,WAAW,4BAA6B,SAAQ,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC;IACrF,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,uDAAuD;IACvD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CACjC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,+BAwG1E"}
1
+ {"version":3,"file":"AwikiDeviceJoinReminder.d.ts","sourceRoot":"","sources":["../../../src/client/AwikiDeviceJoinReminder.tsx"],"names":[],"mappings":"AAAA,6EAA6E;AAK7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAM3D,MAAM,WAAW,4BAA6B,SAAQ,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC;IACrF,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,uDAAuD;IACvD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CACjC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,+BA6G1E"}
@@ -69,6 +69,6 @@ export function AwikiDeviceJoinReminder(props) {
69
69
  setRequest(null);
70
70
  setManaging(true);
71
71
  };
72
- return (_jsxs(_Fragment, { children: [_jsx(Modal, { open: request !== null, onClose: dismiss, title: "\u6709\u65B0\u8BBE\u5907\u8BF7\u6C42\u52A0\u5165", closeLabel: "\u7A0D\u540E\u5904\u7406", description: "\u68C0\u6D4B\u5230\u4E00\u53F0\u65B0\u8BBE\u5907\u6B63\u5728\u8BF7\u6C42\u52A0\u5165\u5F53\u524D AWiki \u8EAB\u4EFD\u3002\u6279\u51C6\u524D\u8BF7\u6838\u5BF9\u4E24\u53F0\u8BBE\u5907\u663E\u793A\u7684\u5B89\u5168\u7801\u3002", footer: (_jsxs(_Fragment, { children: [_jsx(Button, { type: "button", variant: "outline", onClick: dismiss, children: "\u7A0D\u540E\u5904\u7406" }), _jsx(Button, { type: "button", onClick: manage, children: "\u7ACB\u5373\u5904\u7406" })] })), children: request !== null && (_jsxs("div", { className: css.request, children: [_jsx("span", { children: "\u8BBE\u5907\u5BC6\u94A5\u6307\u7EB9" }), _jsx("code", { children: request.candidateKeyFingerprint }), _jsxs("small", { children: ["\u8BF7\u6C42\u6709\u6548\u671F\u81F3 ", request.expiresAt] })] })) }), _jsx(Modal, { open: managing, onClose: () => { setManaging(false); }, title: "\u8BBE\u5907\u7BA1\u7406", closeLabel: "\u5173\u95ED\u8BBE\u5907\u7BA1\u7406", className: css.managementModal ?? '', contentClassName: css.managementContent ?? '', footer: _jsx(Button, { type: "button", variant: "outline", onClick: () => { setManaging(false); }, children: "\u5B8C\u6210" }), children: _jsx(AwikiDevices, { active: managing, pending: props.pending, refreshDeviceManagement: props.refreshDeviceManagement, startDeviceJoinVerification: props.startDeviceJoinVerification, approveDeviceJoin: props.approveDeviceJoin, rejectDeviceJoin: props.rejectDeviceJoin, revokeDevice: props.revokeDevice, prepareRootTransfer: props.prepareRootTransfer, confirmRootTransfer: props.confirmRootTransfer }) })] }));
72
+ return (_jsxs(_Fragment, { children: [_jsx(Modal, { open: request !== null, onClose: dismiss, title: "\u6709\u65B0\u8BBE\u5907\u8BF7\u6C42\u52A0\u5165", closeLabel: "\u7A0D\u540E\u5904\u7406", description: "\u68C0\u6D4B\u5230\u4E00\u53F0\u65B0\u8BBE\u5907\u6B63\u5728\u8BF7\u6C42\u52A0\u5165\u5F53\u524D AWiki \u8EAB\u4EFD\u3002\u6279\u51C6\u524D\u8BF7\u6838\u5BF9\u4E24\u53F0\u8BBE\u5907\u663E\u793A\u7684\u5B89\u5168\u7801\u3002", footer: (_jsxs(_Fragment, { children: [_jsx(Button, { type: "button", variant: "outline", onClick: dismiss, children: "\u7A0D\u540E\u5904\u7406" }), _jsx(Button, { type: "button", onClick: manage, children: "\u7ACB\u5373\u5904\u7406" })] })), children: request !== null && (_jsxs("div", { className: css.request, children: [_jsx("span", { children: "\u8BBE\u5907\u5BC6\u94A5\u6307\u7EB9" }), _jsx("code", { children: request.candidateKeyFingerprint }), _jsxs("small", { children: ["\u8BF7\u6C42\u6709\u6548\u671F\u81F3 ", request.expiresAt] })] })) }), _jsx(Modal, { open: managing, onClose: () => { setManaging(false); }, title: "\u8BBE\u5907\u7BA1\u7406", closeLabel: "\u5173\u95ED\u8BBE\u5907\u7BA1\u7406", className: css.managementModal ?? '', contentClassName: css.managementContent ?? '', footer: _jsx(Button, { type: "button", variant: "outline", onClick: () => { setManaging(false); }, children: "\u5B8C\u6210" }), children: _jsx(AwikiDevices, { active: managing, pending: props.pending, refreshDeviceManagement: props.refreshDeviceManagement, ...props.getIdentityServices === undefined ? {} : { getIdentityServices: props.getIdentityServices }, ...props.updateIdentityServices === undefined ? {} : { updateIdentityServices: props.updateIdentityServices }, ...props.resumeIdentityServicesUpdate === undefined ? {} : { resumeIdentityServicesUpdate: props.resumeIdentityServicesUpdate }, startDeviceJoinVerification: props.startDeviceJoinVerification, approveDeviceJoin: props.approveDeviceJoin, rejectDeviceJoin: props.rejectDeviceJoin, revokeDevice: props.revokeDevice, retryDeviceManagement: props.retryDeviceManagement, prepareRootTransfer: props.prepareRootTransfer, confirmRootTransfer: props.confirmRootTransfer }, props.identityKey) })] }));
73
73
  }
74
74
  //# sourceMappingURL=AwikiDeviceJoinReminder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AwikiDeviceJoinReminder.js","sourceRoot":"","sources":["../../../src/client/AwikiDeviceJoinReminder.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AwikiDeviceJoinReminder.js","sourceRoot":"","sources":["../../../src/client/AwikiDeviceJoinReminder.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  /** Foreground-only ready-admin device management. SAS remains component-local. */
2
2
  import type { AwikiAdminJoinProgress, AwikiDeviceJoinPhase, AwikiDeviceManagementSnapshot, AwikiRootTransferPreparation, AwikiRootTransferReceipt } from '@awiki/dsh-plugin/types';
3
3
  import type { AwikiActionResult } from './controller.ts';
4
- export interface AwikiDevicesProps {
4
+ import { type AwikiIdentityServicesActions } from './AwikiIdentityServices.tsx';
5
+ export interface AwikiDevicesProps extends Partial<AwikiIdentityServicesActions> {
5
6
  readonly active: boolean;
6
7
  readonly pending: boolean;
7
8
  refreshDeviceManagement: () => Promise<AwikiActionResult<AwikiDeviceManagementSnapshot>>;
@@ -21,6 +22,9 @@ export interface AwikiDevicesProps {
21
22
  readonly deviceRef: string;
22
23
  readonly confirmation: string;
23
24
  }) => Promise<AwikiActionResult<AwikiDeviceManagementSnapshot>>;
25
+ retryDeviceManagement?: ((request: {
26
+ readonly deviceRef: string;
27
+ }) => Promise<AwikiActionResult<null>>) | undefined;
24
28
  prepareRootTransfer: (request: {
25
29
  readonly deviceRef: string;
26
30
  }) => Promise<AwikiActionResult<AwikiRootTransferPreparation>>;
@@ -1 +1 @@
1
- {"version":3,"file":"AwikiDevices.d.ts","sourceRoot":"","sources":["../../../src/client/AwikiDevices.tsx"],"names":[],"mappings":"AAAA,kFAAkF;AAIlF,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACpB,6BAA6B,EAC7B,4BAA4B,EAC5B,wBAAwB,EACzB,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAGxD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,uBAAuB,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,CAAC,CAAA;IACxF,2BAA2B,EAAE,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,CAAA;IAC7H,iBAAiB,EAAE,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,CAAA;IAC/K,gBAAgB,EAAE,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;KAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,CAAA;IACpJ,YAAY,EAAE,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,CAAC,CAAA;IACnJ,mBAAmB,EAAE,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,CAAC,CAAA;IAC1H,mBAAmB,EAAE,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,CAAC,CAAA;CACzH;AAYD,eAAO,MAAM,2BAA2B,EAAE,WAAW,CAAC,oBAAoB,CAKxE,CAAA;AAaF,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BAoLpD"}
1
+ {"version":3,"file":"AwikiDevices.d.ts","sourceRoot":"","sources":["../../../src/client/AwikiDevices.tsx"],"names":[],"mappings":"AAAA,kFAAkF;AAIlF,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACpB,6BAA6B,EAC7B,4BAA4B,EAC5B,wBAAwB,EACzB,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExD,OAAO,EAAyB,KAAK,4BAA4B,EAAE,MAAM,6BAA6B,CAAA;AAEtG,MAAM,WAAW,iBAAkB,SAAQ,OAAO,CAAC,4BAA4B,CAAC;IAC9E,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,uBAAuB,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,CAAC,CAAA;IACxF,2BAA2B,EAAE,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,CAAA;IAC7H,iBAAiB,EAAE,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,CAAA;IAC/K,gBAAgB,EAAE,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;KAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,CAAA;IACpJ,YAAY,EAAE,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,CAAC,CAAA;IACnJ,qBAAqB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAA;IACnH,mBAAmB,EAAE,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,CAAC,CAAA;IAC1H,mBAAmB,EAAE,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,CAAC,CAAA;CACzH;AAYD,eAAO,MAAM,2BAA2B,EAAE,WAAW,CAAC,oBAAoB,CAKxE,CAAA;AAaF,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BA0LpD"}
@@ -3,6 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
3
3
  import { useEffect, useId, useState } from 'react';
4
4
  import { Button, IconRefreshOutline16 } from '@deepseek-ai/dsh-client-ui-primitives';
5
5
  import css from './AwikiDevices.module.css';
6
+ import { AwikiIdentityServices } from "./AwikiIdentityServices.js";
6
7
  const requestStateLabels = {
7
8
  pending: '待验证',
8
9
  verifying: '验证中',
@@ -134,7 +135,7 @@ export function AwikiDevices(props) {
134
135
  setError(null);
135
136
  await refresh();
136
137
  };
137
- return (_jsxs("section", { className: css.page, "aria-label": "AWiki \u8BBE\u5907\u7BA1\u7406", children: [_jsxs("header", { className: css.heading, children: [_jsxs("div", { children: [_jsx("h3", { children: "\u8BBE\u5907" }), _jsx("p", { children: "\u53EA\u6709\u5F53\u524D\u7BA1\u7406\u8BBE\u5907\u53EF\u4EE5\u6279\u51C6\u52A0\u5165\u6216\u7BA1\u7406\u5176\u4ED6\u8BBE\u5907\u3002" })] }), _jsx(Button, { className: css.button, type: "button", variant: "outline", icon: _jsx(IconRefreshOutline16, {}), disabled: props.pending, onClick: () => { void refresh(); }, children: "\u5237\u65B0" })] }), snapshot === null && _jsxs("div", { className: css.loading, role: "status", children: [_jsx("span", { "aria-hidden": "true" }), "\u6B63\u5728\u8BFB\u53D6\u8BBE\u5907\u72B6\u6001\u2026"] }), snapshot !== null && !snapshot.canManage && _jsx("div", { className: css.notice, children: "\u5F53\u524D\u8BBE\u5907\u4E0D\u662F\u53EF\u7528\u7684\u7BA1\u7406\u8BBE\u5907\uFF0C\u4E0D\u80FD\u6279\u51C6\u6216\u64A4\u9500\u5176\u4ED6\u8BBE\u5907\u3002" }), snapshot?.canManage && (_jsxs(_Fragment, { children: [_jsxs("section", { className: css.section, "aria-labelledby": "awiki-pending-devices", children: [_jsxs("div", { className: css.sectionHeading, children: [_jsx("h4", { id: "awiki-pending-devices", children: "\u5F85\u52A0\u5165" }), _jsx("span", { className: css.count, children: pendingRequests.length })] }), pendingRequests.length === 0 && _jsx("div", { className: css.empty, children: "\u6682\u65F6\u6CA1\u6709\u5F85\u5904\u7406\u7684\u8BBE\u5907\u8BF7\u6C42\u3002" }), pendingRequests.map(request => _jsxs("article", { className: css.card, children: [_jsxs("div", { className: css.cardHeader, children: [_jsxs("div", { className: css.cardIdentity, children: [_jsx("span", { className: css.deviceIcon, children: _jsx(DeviceGlyph, {}) }), _jsxs("div", { children: [_jsx("strong", { children: "\u65B0\u8BBE\u5907\u8BF7\u6C42" }), _jsx("code", { title: request.candidateKeyFingerprint, children: request.candidateKeyFingerprint })] })] }), _jsx("span", { className: css.badge, "data-tone": request.state, children: requestStateLabels[request.state] ?? request.state })] }), _jsxs("p", { className: css.metadata, children: ["\u6709\u6548\u671F\u81F3 ", readableDate(request.expiresAt)] }), _jsxs("div", { className: css.actions, children: [_jsx(Button, { className: css.button, type: "button", variant: "primary", disabled: props.pending || (!request.canStartVerification && !request.claimedByCurrentDevice), onClick: () => { void start(request.requestRef); }, children: request.claimedByCurrentDevice ? '继续验证' : '开始验证' }), _jsx(Button, { className: `${css.button} ${css.dangerButton}`, type: "button", variant: "outline", disabled: props.pending, onClick: () => { void reject(request.requestRef); }, children: "\u62D2\u7EDD" })] })] }, request.requestRef))] }), progress?.phase === 'sas-ready' && _jsxs("section", { className: `${css.card} ${css.verificationCard}`, "aria-labelledby": "awiki-device-sas-title", children: [_jsxs("div", { className: css.verificationHeading, children: [_jsx("span", { children: "\u7B2C 2 \u6B65" }), _jsx("h4", { id: "awiki-device-sas-title", children: "\u6838\u5BF9\u5B89\u5168\u7801" })] }), _jsx("strong", { className: css.sas, "aria-label": `安全码 ${progress.sas ?? ''}`, children: progress.sas }), _jsx("p", { className: css.verificationIntro, children: "\u786E\u8BA4\u624B\u673A\u663E\u793A\u76F8\u540C\u53F7\u7801\u540E\uFF0C\u518D\u5B8C\u6210\u4E0B\u9762\u4E24\u9879\u786E\u8BA4\u3002" }), _jsxs("div", { className: css.fields, children: [_jsxs("div", { className: css.field, children: [_jsx("label", { htmlFor: sasInputId, children: "\u624B\u673A\u5B89\u5168\u7801" }), _jsx("input", { id: sasInputId, className: `${css.input} ${css.numericInput}`, "aria-describedby": sasHelpId, value: enteredSas, inputMode: "numeric", autoComplete: "one-time-code", maxLength: 6, placeholder: "\u8BF7\u8F93\u5165 6 \u4F4D\u6570\u5B57", onChange: event => { setEnteredSas(event.target.value.replace(/\D/gu, '').slice(0, 6)); } }), _jsx("small", { id: sasHelpId, children: "\u586B\u5199\u624B\u673A\u4E0A\u663E\u793A\u7684 6 \u4F4D\u6570\u5B57\u3002" })] }), _jsxs("div", { className: css.field, children: [_jsx("label", { htmlFor: approvalInputId, children: "\u6279\u51C6\u786E\u8BA4\u8BCD" }), _jsx("input", { id: approvalInputId, className: css.input, "aria-describedby": approvalHelpId, value: approval, autoComplete: "off", spellCheck: false, onChange: event => { setApproval(event.target.value); }, placeholder: "\u8F93\u5165 APPROVE" }), _jsx("small", { id: approvalHelpId, children: "\u8F93\u5165 APPROVE\uFF0C\u786E\u8BA4\u4F60\u540C\u610F\u52A0\u5165\u6B64\u8BBE\u5907\u3002" })] })] }), _jsx(Button, { className: `${css.button} ${css.fullButton}`, type: "button", variant: "primary", disabled: props.pending || enteredSas.length !== 6 || approval !== 'APPROVE', onClick: () => { void approve(); }, children: "\u6279\u51C6\u4E3A member" })] }), rootPreparation !== null && _jsxs("section", { className: `${css.card} ${css.verificationCard}`, children: [_jsx("h4", { children: "\u6388\u4E88\u8BBE\u5907\u7BA1\u7406\u6743" }), _jsxs("p", { className: css.metadata, children: ["\u7CFB\u7EDF\u5C06\u9A8C\u8BC1\u672C\u673A\u7528\u6237\u8EAB\u4EFD\uFF0C\u518D\u5411\u76EE\u6807 member \u53D1\u9001\u7BA1\u7406\u80FD\u529B\u3002\u6709\u6548\u671F\u81F3 ", readableDate(rootPreparation.expiresAt), "\u3002"] }), _jsx(Button, { className: css.button, type: "button", variant: "primary", disabled: props.pending, onClick: () => { void confirmRootTransfer(); }, children: "\u4F7F\u7528\u7CFB\u7EDF\u8BA4\u8BC1\u5E76\u53D1\u9001" })] }), rootReceipt !== null && _jsxs("div", { className: css.successNotice, role: "status", children: ["\u7BA1\u7406\u80FD\u529B\u5DF2\u53D1\u9001\uFF1B\u76EE\u6807\u8BBE\u5907\u5B8C\u6210\u63A5\u6536\u540E\u4F1A\u663E\u793A\u4E3A admin\u3002\u63A5\u53D7\u65F6\u95F4\uFF1A", readableDate(rootReceipt.acceptedAt)] }), !snapshot.rootTransferSupported && _jsxs("div", { className: css.notice, children: [_jsx("strong", { children: "\u7BA1\u7406\u6743\u8F6C\u79FB\u6682\u4E0D\u53EF\u7528" }), _jsx("span", { children: "\u8BE5\u529F\u80FD\u76EE\u524D\u53EA\u80FD\u5728\u914D\u5907 Intel \u82AF\u7247\u7684 Mac \u4E0A\u901A\u8FC7\u7CFB\u7EDF\u8EAB\u4EFD\u9A8C\u8BC1\u4F7F\u7528\u3002" })] }), _jsxs("section", { className: css.section, "aria-labelledby": "awiki-joined-devices", children: [_jsxs("div", { className: css.sectionHeading, children: [_jsx("h4", { id: "awiki-joined-devices", children: "\u5DF2\u52A0\u5165\u8BBE\u5907" }), _jsx("span", { className: css.count, children: joinedDevices.length })] }), joinedDevices.length === 0 && _jsx("div", { className: css.empty, children: "\u6682\u65E0\u5DF2\u52A0\u5165\u8BBE\u5907\u3002" }), _jsx("div", { className: css.deviceList, children: joinedDevices.map(device => _jsxs("article", { className: css.deviceCard, children: [_jsxs("div", { className: css.deviceSummary, children: [_jsx("span", { className: css.deviceIcon, children: _jsx(DeviceGlyph, {}) }), _jsxs("div", { children: [_jsx("strong", { children: device.isCurrent ? '当前设备' : '其他设备' }), _jsx("span", { children: device.role === 'admin' ? '管理设备' : '成员设备' }), _jsxs("code", { className: css.deviceIdentifier, title: "\u7528\u4E8E\u533A\u5206\u8BBE\u5907\uFF0C\u4E0D\u5305\u542B\u5B8C\u6574\u8BBE\u5907 ID", children: ["\u6807\u8BC6 ", device.displayId] }), _jsxs("span", { className: css.deviceJoinedAt, children: ["\u52A0\u5165\u65F6\u95F4\uFF1A", device.joinedAt === undefined ? '暂无记录' : readableDate(device.joinedAt)] })] }), _jsxs("div", { className: css.deviceActions, children: [device.managementReady && _jsx("span", { className: css.badge, "data-tone": "admin", children: "\u7BA1\u7406\u5C31\u7EEA" }), !device.isCurrent && revokeRef !== device.deviceRef && _jsx(Button, { className: `${css.button} ${css.dangerButton} ${css.compactDangerButton}`, type: "button", variant: "ghost", disabled: props.pending, onClick: () => { setRevokeRef(device.deviceRef); setRevokeConfirmation(''); }, children: "\u64A4\u9500" })] })] }), snapshot.rootTransferSupported && !device.isCurrent && device.status === 'active' && device.role === 'member' && !device.managementReady
138
+ return (_jsxs("section", { className: css.page, "aria-label": "AWiki \u8BBE\u5907\u7BA1\u7406", children: [_jsxs("header", { className: css.heading, children: [_jsxs("div", { children: [_jsx("h3", { children: "\u8BBE\u5907" }), _jsx("p", { children: "\u53EA\u6709\u5F53\u524D\u7BA1\u7406\u8BBE\u5907\u53EF\u4EE5\u6279\u51C6\u52A0\u5165\u6216\u7BA1\u7406\u5176\u4ED6\u8BBE\u5907\u3002" })] }), _jsx(Button, { className: css.button, type: "button", variant: "outline", icon: _jsx(IconRefreshOutline16, {}), disabled: props.pending, onClick: () => { void refresh(); }, children: "\u5237\u65B0" })] }), snapshot === null && _jsxs("div", { className: css.loading, role: "status", children: [_jsx("span", { "aria-hidden": "true" }), "\u6B63\u5728\u8BFB\u53D6\u8BBE\u5907\u72B6\u6001\u2026"] }), snapshot !== null && !snapshot.canManage && _jsx("div", { className: css.notice, children: "\u5F53\u524D\u8BBE\u5907\u4E0D\u662F\u53EF\u7528\u7684\u7BA1\u7406\u8BBE\u5907\uFF0C\u4E0D\u80FD\u6279\u51C6\u6216\u64A4\u9500\u5176\u4ED6\u8BBE\u5907\u3002" }), snapshot?.canManage && (_jsxs(_Fragment, { children: [_jsxs("section", { className: css.section, "aria-labelledby": "awiki-pending-devices", children: [_jsxs("div", { className: css.sectionHeading, children: [_jsx("h4", { id: "awiki-pending-devices", children: "\u5F85\u52A0\u5165" }), _jsx("span", { className: css.count, children: pendingRequests.length })] }), pendingRequests.length === 0 && _jsx("div", { className: css.empty, children: "\u6682\u65F6\u6CA1\u6709\u5F85\u5904\u7406\u7684\u8BBE\u5907\u8BF7\u6C42\u3002" }), pendingRequests.map(request => _jsxs("article", { className: css.card, children: [_jsxs("div", { className: css.cardHeader, children: [_jsxs("div", { className: css.cardIdentity, children: [_jsx("span", { className: css.deviceIcon, children: _jsx(DeviceGlyph, {}) }), _jsxs("div", { children: [_jsx("strong", { children: "\u65B0\u8BBE\u5907\u8BF7\u6C42" }), _jsx("code", { title: request.candidateKeyFingerprint, children: request.candidateKeyFingerprint })] })] }), _jsx("span", { className: css.badge, "data-tone": request.state, children: requestStateLabels[request.state] ?? request.state })] }), _jsxs("p", { className: css.metadata, children: ["\u6709\u6548\u671F\u81F3 ", readableDate(request.expiresAt)] }), _jsxs("div", { className: css.actions, children: [_jsx(Button, { className: css.button, type: "button", variant: "primary", disabled: props.pending || (!request.canStartVerification && !request.claimedByCurrentDevice), onClick: () => { void start(request.requestRef); }, children: request.claimedByCurrentDevice ? '继续验证' : '开始验证' }), _jsx(Button, { className: `${css.button} ${css.dangerButton}`, type: "button", variant: "outline", disabled: props.pending, onClick: () => { void reject(request.requestRef); }, children: "\u62D2\u7EDD" })] })] }, request.requestRef))] }), progress?.phase === 'sas-ready' && _jsxs("section", { className: `${css.card} ${css.verificationCard}`, "aria-labelledby": "awiki-device-sas-title", children: [_jsxs("div", { className: css.verificationHeading, children: [_jsx("span", { children: "\u7B2C 2 \u6B65" }), _jsx("h4", { id: "awiki-device-sas-title", children: "\u6838\u5BF9\u5B89\u5168\u7801" })] }), _jsx("strong", { className: css.sas, "aria-label": `安全码 ${progress.sas ?? ''}`, children: progress.sas }), _jsx("p", { className: css.verificationIntro, children: "\u786E\u8BA4\u624B\u673A\u663E\u793A\u76F8\u540C\u53F7\u7801\u540E\uFF0C\u518D\u5B8C\u6210\u4E0B\u9762\u4E24\u9879\u786E\u8BA4\u3002" }), _jsxs("div", { className: css.fields, children: [_jsxs("div", { className: css.field, children: [_jsx("label", { htmlFor: sasInputId, children: "\u624B\u673A\u5B89\u5168\u7801" }), _jsx("input", { id: sasInputId, className: `${css.input} ${css.numericInput}`, "aria-describedby": sasHelpId, value: enteredSas, inputMode: "numeric", autoComplete: "one-time-code", maxLength: 6, placeholder: "\u8BF7\u8F93\u5165 6 \u4F4D\u6570\u5B57", onChange: event => { setEnteredSas(event.target.value.replace(/\D/gu, '').slice(0, 6)); } }), _jsx("small", { id: sasHelpId, children: "\u586B\u5199\u624B\u673A\u4E0A\u663E\u793A\u7684 6 \u4F4D\u6570\u5B57\u3002" })] }), _jsxs("div", { className: css.field, children: [_jsx("label", { htmlFor: approvalInputId, children: "\u6279\u51C6\u786E\u8BA4\u8BCD" }), _jsx("input", { id: approvalInputId, className: css.input, "aria-describedby": approvalHelpId, value: approval, autoComplete: "off", spellCheck: false, onChange: event => { setApproval(event.target.value); }, placeholder: "\u8F93\u5165 APPROVE" }), _jsx("small", { id: approvalHelpId, children: "\u8F93\u5165 APPROVE\uFF0C\u786E\u8BA4\u4F60\u540C\u610F\u52A0\u5165\u6B64\u8BBE\u5907\u3002" })] })] }), _jsx(Button, { className: `${css.button} ${css.fullButton}`, type: "button", variant: "primary", disabled: props.pending || enteredSas.length !== 6 || approval !== 'APPROVE', onClick: () => { void approve(); }, children: "\u6279\u51C6\u52A0\u5165\u5E76\u81EA\u52A8\u914D\u7F6E\u7BA1\u7406\u6743" })] }), rootPreparation !== null && _jsxs("section", { className: `${css.card} ${css.verificationCard}`, children: [_jsx("h4", { children: "\u6388\u4E88\u8BBE\u5907\u7BA1\u7406\u6743" }), _jsxs("p", { className: css.metadata, children: ["\u7CFB\u7EDF\u5C06\u9A8C\u8BC1\u672C\u673A\u7528\u6237\u8EAB\u4EFD\uFF0C\u518D\u5411\u76EE\u6807 member \u53D1\u9001\u7BA1\u7406\u80FD\u529B\u3002\u6709\u6548\u671F\u81F3 ", readableDate(rootPreparation.expiresAt), "\u3002"] }), _jsx(Button, { className: css.button, type: "button", variant: "primary", disabled: props.pending, onClick: () => { void confirmRootTransfer(); }, children: "\u4F7F\u7528\u7CFB\u7EDF\u8BA4\u8BC1\u5E76\u53D1\u9001" })] }), rootReceipt !== null && _jsxs("div", { className: css.successNotice, role: "status", children: ["\u7BA1\u7406\u80FD\u529B\u5DF2\u53D1\u9001\uFF1B\u76EE\u6807\u8BBE\u5907\u5B8C\u6210\u63A5\u6536\u540E\u4F1A\u663E\u793A\u4E3A admin\u3002\u63A5\u53D7\u65F6\u95F4\uFF1A", readableDate(rootReceipt.acceptedAt)] }), !snapshot.rootTransferSupported && (snapshot.methodCapabilities?.method === 'web' || snapshot.devices.some(device => device.role === 'member' && device.provisioning === undefined)) && _jsxs("div", { className: css.notice, children: [_jsx("strong", { children: "\u7BA1\u7406\u6743\u8F6C\u79FB\u6682\u4E0D\u53EF\u7528" }), _jsx("span", { children: snapshot.methodCapabilities?.method === 'web' ? 'Web 身份不支持恢复或管理权转移;首个管理员丢失后无法恢复管理能力。' : '该功能目前只能在配备 Intel 芯片的 Mac 上通过系统身份验证使用。' })] }), snapshot.methodCapabilities?.servicesUpdate === true && props.getIdentityServices !== undefined && props.updateIdentityServices !== undefined && props.resumeIdentityServicesUpdate !== undefined && _jsx(AwikiIdentityServices, { getIdentityServices: props.getIdentityServices, updateIdentityServices: props.updateIdentityServices, resumeIdentityServicesUpdate: props.resumeIdentityServicesUpdate }), _jsxs("section", { className: css.section, "aria-labelledby": "awiki-joined-devices", children: [_jsxs("div", { className: css.sectionHeading, children: [_jsx("h4", { id: "awiki-joined-devices", children: "\u5DF2\u52A0\u5165\u8BBE\u5907" }), _jsx("span", { className: css.count, children: joinedDevices.length })] }), joinedDevices.length === 0 && _jsx("div", { className: css.empty, children: "\u6682\u65E0\u5DF2\u52A0\u5165\u8BBE\u5907\u3002" }), _jsx("div", { className: css.deviceList, children: joinedDevices.map(device => _jsxs("article", { className: css.deviceCard, children: [_jsxs("div", { className: css.deviceSummary, children: [_jsx("span", { className: css.deviceIcon, children: _jsx(DeviceGlyph, {}) }), _jsxs("div", { children: [_jsx("strong", { children: device.isCurrent ? '当前设备' : '其他设备' }), _jsx("span", { children: device.role === 'admin' ? '管理设备' : '成员设备' }), _jsxs("code", { className: css.deviceIdentifier, title: "\u7528\u4E8E\u533A\u5206\u8BBE\u5907\uFF0C\u4E0D\u5305\u542B\u5B8C\u6574\u8BBE\u5907 ID", children: ["\u6807\u8BC6 ", device.displayId] }), _jsxs("span", { className: css.deviceJoinedAt, children: ["\u52A0\u5165\u65F6\u95F4\uFF1A", device.joinedAt === undefined ? '暂无记录' : readableDate(device.joinedAt)] })] }), _jsxs("div", { className: css.deviceActions, children: [device.managementReady && _jsx("span", { className: css.badge, "data-tone": "admin", children: "\u7BA1\u7406\u5C31\u7EEA" }), !device.isCurrent && revokeRef !== device.deviceRef && _jsx(Button, { className: `${css.button} ${css.dangerButton} ${css.compactDangerButton}`, type: "button", variant: "ghost", disabled: props.pending, onClick: () => { setRevokeRef(device.deviceRef); setRevokeConfirmation(''); }, children: "\u64A4\u9500" })] })] }), device.provisioning !== undefined && !device.managementReady && _jsxs("div", { role: "status", children: [device.provisioning.phase === 'failed' ? '自动配置失败' : device.provisioning.phase === 'waiting' ? '已发送,等待设备接收' : '正在自动配置管理权', "\uFF08\u5DF2\u5C1D\u8BD5 ", device.provisioning.attempts, " \u6B21\uFF09", device.provisioning.requiresRejoin && _jsx("p", { children: "\u7BA1\u7406\u6743\u9650\u914D\u7F6E\u5DF2\u5931\u6548\uFF0C\u8BF7\u64A4\u9500\u6B64\u6210\u5458\u8BBE\u5907\uFF0C\u518D\u5728\u8BE5\u8BBE\u5907\u4E0A\u9000\u51FA\u672C\u5730\u8EAB\u4EFD\uFF08\u4FDD\u7559\u6570\u636E\uFF09\u540E\u91CD\u65B0\u52A0\u5165\u3002" }), device.provisioning.phase === 'failed' && !device.provisioning.requiresRejoin && props.retryDeviceManagement !== undefined && _jsx(Button, { className: css.button, type: "button", disabled: props.pending, onClick: () => { void props.retryDeviceManagement?.({ deviceRef: device.deviceRef }).then(result => result.ok ? refresh() : setError(result.error)); }, children: "\u91CD\u8BD5\u81EA\u52A8\u914D\u7F6E" })] }), device.provisioning === undefined && snapshot.rootTransferSupported && !device.isCurrent && device.status === 'active' && device.role === 'member' && !device.managementReady
138
139
  && _jsx(Button, { className: css.button, type: "button", variant: "outline", disabled: props.pending, onClick: () => { void prepareRootTransfer(device.deviceRef); }, children: "\u6388\u4E88\u7BA1\u7406\u6743" }), !device.isCurrent && revokeRef === device.deviceRef
139
140
  && _jsxs("div", { className: css.revokePanel, children: [_jsxs("div", { className: css.field, children: [_jsx("label", { htmlFor: revokeInputId, children: "\u64A4\u9500\u786E\u8BA4\u8BCD" }), _jsx("input", { id: revokeInputId, className: css.input, "aria-describedby": revokeHelpId, value: revokeConfirmation, autoComplete: "off", spellCheck: false, onChange: event => { setRevokeConfirmation(event.target.value); }, placeholder: "\u8F93\u5165 REVOKE" }), _jsx("small", { id: revokeHelpId, children: "\u64A4\u9500\u540E\uFF0C\u8FD9\u53F0\u8BBE\u5907\u5C06\u65E0\u6CD5\u7EE7\u7EED\u8BBF\u95EE\u5F53\u524D\u8EAB\u4EFD\u3002" })] }), _jsxs("div", { className: css.actions, children: [_jsx(Button, { className: `${css.button} ${css.dangerButton}`, type: "button", variant: "outline", disabled: props.pending || revokeConfirmation !== 'REVOKE', onClick: () => { void revoke(); }, children: "\u786E\u8BA4\u64A4\u9500" }), _jsx(Button, { className: css.button, type: "button", variant: "ghost", disabled: props.pending, onClick: () => { setRevokeRef(null); setRevokeConfirmation(''); }, children: "\u53D6\u6D88" })] })] })] }, device.deviceRef)) })] })] })), error !== null && _jsxs("div", { className: css.error, role: "alert", children: [_jsx("strong", { children: "\u64CD\u4F5C\u672A\u5B8C\u6210" }), _jsx("span", { children: error })] })] }));
140
141
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AwikiDevices.js","sourceRoot":"","sources":["../../../src/client/AwikiDevices.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AwikiDevices.js","sourceRoot":"","sources":["../../../src/client/AwikiDevices.tsx"],"names":[],"mappings":";AAAA,kFAAkF;AAElF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AASpF,OAAO,GAAG,MAAM,2BAA2B,CAAA;AAC3C,OAAO,EAAE,qBAAqB,EAAqC,MAAM,4BAA6B,CAAA;AAetG,MAAM,kBAAkB,GAA2B;IACjD,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,KAAK;IAChB,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,KAAK;CACf,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAsC,IAAI,GAAG,CAAC;IACpF,YAAY;IACZ,WAAW;IACX,UAAU;IACV,SAAS;CACV,CAAC,CAAA;AAEF,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;IAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACnC,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;AAChG,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,8BAAiB,MAAM,EAAC,OAAO,EAAC,WAAW,aAAC,eAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,EAAE,EAAC,KAAK,GAAG,EAAA,eAAM,CAAC,EAAC,YAAY,GAAG,IAAM,CAAA;AACxI,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,SAAS,GAAG,KAAK,EAAE,CAAA;IACzB,MAAM,UAAU,GAAG,KAAK,EAAE,CAAA;IAC1B,MAAM,cAAc,GAAG,KAAK,EAAE,CAAA;IAC9B,MAAM,eAAe,GAAG,KAAK,EAAE,CAAA;IAC/B,MAAM,YAAY,GAAG,KAAK,EAAE,CAAA;IAC5B,MAAM,aAAa,GAAG,KAAK,EAAE,CAAA;IAC7B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAuC,IAAI,CAAC,CAAA;IACpF,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAgC,IAAI,CAAC,CAAA;IAC7E,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAChD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC5C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IAC/D,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAChE,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAsC,IAAI,CAAC,CAAA;IACjG,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAkC,IAAI,CAAC,CAAA;IACrF,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IACvD,MAAM,eAAe,GAAG,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA;IACnH,MAAM,aAAa,GAAG,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAA;IAE1F,MAAM,OAAO,GAAG,KAAK,EAAE,WAAW,GAAG,IAAI,EAAE,EAAE;QAC3C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,uBAAuB,EAAE,CAAA;QACpD,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC7C,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACzB,IAAI,WAAW,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACrH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,2BAA2B,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;YAC7F,IAAI,QAAQ,CAAC,EAAE;gBAAE,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC9C,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,CAAA;IAChB,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAM;QACzB,IAAI,KAAK,GAAG,IAAI,CAAA;QAChB,KAAK,KAAK,CAAC,uBAAuB,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACnD,IAAI,CAAC,KAAK;gBAAE,OAAM;YAClB,IAAI,MAAM,CAAC,EAAE;gBAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;;gBACnC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAA;QACF,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK;YAAE,KAAK,OAAO,EAAE,CAAA,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;QACrE,OAAO,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,CAAA;IACtD,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAA;IAEzD,MAAM,KAAK,GAAG,KAAK,EAAE,UAAkB,EAAE,EAAE;QACzC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,2BAA2B,CAAC,EAAE,UAAU,EAAE,CAAC,CAAA;QACtE,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC7C,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACzB,QAAQ,CAAC,IAAI,CAAC,CAAA;IAChB,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAM;QAC7B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC;YAC3C,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,UAAU;YACV,YAAY,EAAE,QAAQ;SACvB,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC7C,WAAW,CAAC,IAAI,CAAC,CAAA;QACjB,aAAa,CAAC,EAAE,CAAC,CAAA;QACjB,WAAW,CAAC,EAAE,CAAC,CAAA;QACf,MAAM,OAAO,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,KAAK,EAAE,UAAkB,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAA;QACpF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC7C,WAAW,CAAC,IAAI,CAAC,CAAA;QACjB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACxB,IAAI,SAAS,KAAK,IAAI;YAAE,OAAM;QAC9B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC,CAAA;QACnG,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC7C,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACzB,YAAY,CAAC,IAAI,CAAC,CAAA;QAClB,qBAAqB,CAAC,EAAE,CAAC,CAAA;QACzB,QAAQ,CAAC,IAAI,CAAC,CAAA;IAChB,CAAC,CAAA;IAED,MAAM,mBAAmB,GAAG,KAAK,EAAE,SAAiB,EAAE,EAAE;QACtD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;QAC7D,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC7C,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAChC,cAAc,CAAC,IAAI,CAAC,CAAA;QACpB,QAAQ,CAAC,IAAI,CAAC,CAAA;IAChB,CAAC,CAAA;IAED,MAAM,mBAAmB,GAAG,KAAK,IAAI,EAAE;QACrC,IAAI,eAAe,KAAK,IAAI;YAAE,OAAM;QACpC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,EAAE,WAAW,EAAE,eAAe,CAAC,WAAW,EAAE,CAAC,CAAA;QAC5F,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,kBAAkB,CAAC,IAAI,CAAC,CAAA;YACxB,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC/B,CAAC;QACD,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACxB,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC5B,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,MAAM,OAAO,EAAE,CAAA;IACjB,CAAC,CAAA;IAED,OAAO,CACL,mBAAS,SAAS,EAAE,GAAG,CAAC,IAAI,gBAAa,gCAAY,aACnD,kBAAQ,SAAS,EAAE,GAAG,CAAC,OAAO,aAC5B,0BAAK,wCAAW,EAAA,+JAA6B,IAAM,EACnD,KAAC,MAAM,IAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAE,KAAC,oBAAoB,KAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,EAAE,CAAA,CAAC,CAAC,6BAAa,IAC/J,EACR,QAAQ,KAAK,IAAI,IAAI,eAAK,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAC,QAAQ,aAAC,8BAAkB,MAAM,GAAG,8DAAe,EAC1G,QAAQ,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,cAAK,SAAS,EAAE,GAAG,CAAC,MAAM,6KAAkC,EACxG,QAAQ,EAAE,SAAS,IAAI,CACtB,8BACE,mBAAS,SAAS,EAAE,GAAG,CAAC,OAAO,qBAAkB,uBAAuB,aACtE,eAAK,SAAS,EAAE,GAAG,CAAC,cAAc,aAChC,aAAI,EAAE,EAAC,uBAAuB,mCAAS,EACvC,eAAM,SAAS,EAAE,GAAG,CAAC,KAAK,YAAG,eAAe,CAAC,MAAM,GAAQ,IACvD,EACL,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,cAAK,SAAS,EAAE,GAAG,CAAC,KAAK,+FAAqB,EAC9E,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,mBAAS,SAAS,EAAE,GAAG,CAAC,IAAI,aAC1D,eAAK,SAAS,EAAE,GAAG,CAAC,UAAU,aAC5B,eAAK,SAAS,EAAE,GAAG,CAAC,YAAY,aAC9B,eAAM,SAAS,EAAE,GAAG,CAAC,UAAU,YAAE,KAAC,WAAW,KAAG,GAAO,EACvD,0BAAK,8DAAsB,EAAA,eAAM,KAAK,EAAE,OAAO,CAAC,uBAAuB,YAAG,OAAO,CAAC,uBAAuB,GAAQ,IAAM,IACnH,EACN,eAAM,SAAS,EAAE,GAAG,CAAC,KAAK,eAAa,OAAO,CAAC,KAAK,YAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,GAAQ,IAC7G,EACN,aAAG,SAAS,EAAE,GAAG,CAAC,QAAQ,0CAAQ,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAK,EACtE,eAAK,SAAS,EAAE,GAAG,CAAC,OAAO,aACzB,KAAC,MAAM,IAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,oBAAoB,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA,CAAC,CAAC,YAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAU,EAC5Q,KAAC,MAAM,IAAC,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,YAAY,EAAE,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA,CAAC,CAAC,6BAAa,IAC5K,KAZ2D,OAAO,CAAC,UAAU,CAa3E,CAAC,IACH,EACT,QAAQ,EAAE,KAAK,KAAK,WAAW,IAAI,mBAAS,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,gBAAgB,EAAE,qBAAkB,wBAAwB,aACrI,eAAK,SAAS,EAAE,GAAG,CAAC,mBAAmB,aAAE,6CAAkB,EAAA,aAAI,EAAE,EAAC,wBAAwB,+CAAW,IAAM,EAC3G,iBAAQ,SAAS,EAAE,GAAG,CAAC,GAAG,gBAAc,OAAO,QAAQ,CAAC,GAAG,IAAI,EAAE,EAAE,YAAG,QAAQ,CAAC,GAAG,GAAU,EAC5F,YAAG,SAAS,EAAE,GAAG,CAAC,iBAAiB,qJAA4B,EAC/D,eAAK,SAAS,EAAE,GAAG,CAAC,MAAM,aACxB,eAAK,SAAS,EAAE,GAAG,CAAC,KAAK,aACvB,gBAAO,OAAO,EAAE,UAAU,+CAAe,EACzC,gBAAO,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,YAAY,EAAE,sBAAoB,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAC,SAAS,EAAC,YAAY,EAAC,eAAe,EAAC,SAAS,EAAE,CAAC,EAAE,WAAW,EAAC,yCAAW,EAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC,GAAI,EACzS,gBAAO,EAAE,EAAE,SAAS,4FAAyB,IACzC,EACN,eAAK,SAAS,EAAE,GAAG,CAAC,KAAK,aACvB,gBAAO,OAAO,EAAE,eAAe,+CAAe,EAC9C,gBAAO,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,CAAC,KAAK,sBAAoB,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAC,KAAK,EAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,EAAE,WAAW,EAAC,sBAAY,GAAG,EAC9N,gBAAO,EAAE,EAAE,cAAc,6GAAgC,IACrD,IACF,EACN,KAAC,MAAM,IAAC,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,KAAK,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,EAAE,CAAA,CAAC,CAAC,yFAAuB,IACpN,EACT,eAAe,KAAK,IAAI,IAAI,mBAAS,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,gBAAgB,EAAE,aAAE,sEAAgB,EAAA,aAAG,SAAS,EAAE,GAAG,CAAC,QAAQ,4LAAuC,YAAY,CAAC,eAAe,CAAC,SAAS,CAAC,cAAM,EAAA,KAAC,MAAM,IAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,mBAAmB,EAAE,CAAA,CAAC,CAAC,uEAAoB,IAAU,EACxX,WAAW,KAAK,IAAI,IAAI,eAAK,SAAS,EAAE,GAAG,CAAC,aAAa,EAAE,IAAI,EAAC,QAAQ,yLAAmC,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC,IAAO,EACtJ,CAAC,QAAQ,CAAC,qBAAqB,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,KAAK,KAAK,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,IAAI,eAAK,SAAS,EAAE,GAAG,CAAC,MAAM,aAAE,sFAA0B,EAAA,yBAAO,QAAQ,CAAC,kBAAkB,EAAE,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,uCAAuC,GAAQ,IAAM,EAClY,QAAQ,CAAC,kBAAkB,EAAE,cAAc,KAAK,IAAI,IAAI,KAAK,CAAC,mBAAmB,KAAK,SAAS,IAAI,KAAK,CAAC,sBAAsB,KAAK,SAAS,IAAI,KAAK,CAAC,4BAA4B,KAAK,SAAS,IAAI,KAAC,qBAAqB,IAAC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,KAAK,CAAC,sBAAsB,EAAE,4BAA4B,EAAE,KAAK,CAAC,4BAA4B,GAAI,EACvY,mBAAS,SAAS,EAAE,GAAG,CAAC,OAAO,qBAAkB,sBAAsB,aACrE,eAAK,SAAS,EAAE,GAAG,CAAC,cAAc,aAAE,aAAI,EAAE,EAAC,sBAAsB,+CAAW,EAAA,eAAM,SAAS,EAAE,GAAG,CAAC,KAAK,YAAG,aAAa,CAAC,MAAM,GAAQ,IAAM,EAC1I,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,cAAK,SAAS,EAAE,GAAG,CAAC,KAAK,iEAAgB,EACxE,cAAK,SAAS,EAAE,GAAG,CAAC,UAAU,YAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,mBAAS,SAAS,EAAE,GAAG,CAAC,UAAU,aAC/F,eAAK,SAAS,EAAE,GAAG,CAAC,aAAa,aAC/B,eAAM,SAAS,EAAE,GAAG,CAAC,UAAU,YAAE,KAAC,WAAW,KAAG,GAAO,EACvD,0BACE,2BAAS,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAU,EACrD,yBAAO,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAQ,EACxD,gBAAM,SAAS,EAAE,GAAG,CAAC,gBAAgB,EAAE,KAAK,EAAC,yFAAmB,8BAAK,MAAM,CAAC,SAAS,IAAQ,EAC7F,gBAAM,SAAS,EAAE,GAAG,CAAC,cAAc,+CAAQ,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAQ,IACrH,EACN,eAAK,SAAS,EAAE,GAAG,CAAC,aAAa,aAC9B,MAAM,CAAC,eAAe,IAAI,eAAM,SAAS,EAAE,GAAG,CAAC,KAAK,eAAY,OAAO,yCAAY,EACnF,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,KAAC,MAAM,IAAC,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,OAAO,EAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAA,CAAC,CAAC,6BAAa,IACvR,IACF,EACL,MAAM,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,eAAK,IAAI,EAAC,QAAQ,aAChF,MAAM,CAAC,YAAY,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,+BAAO,MAAM,CAAC,YAAY,CAAC,QAAQ,mBAC3J,MAAM,CAAC,YAAY,CAAC,cAAc,IAAI,6RAAkD,EACxF,MAAM,CAAC,YAAY,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc,IAAI,KAAK,CAAC,qBAAqB,KAAK,SAAS,IAAI,KAAC,MAAM,IAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,KAAK,CAAC,qBAAqB,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA,CAAC,CAAC,qDAAiB,IACvW,EACL,MAAM,CAAC,YAAY,KAAK,SAAS,IAAI,QAAQ,CAAC,qBAAqB,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,eAAe;+CACzK,KAAC,MAAM,IAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA,CAAC,CAAC,+CAAgB,EACzK,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS;+CAC/C,eAAK,SAAS,EAAE,GAAG,CAAC,WAAW,aAAE,eAAK,SAAS,EAAE,GAAG,CAAC,KAAK,aAAE,gBAAO,OAAO,EAAE,aAAa,+CAAe,EAAA,gBAAO,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,KAAK,sBAAoB,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAC,KAAK,EAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,EAAE,WAAW,EAAC,qBAAW,GAAG,EAAA,gBAAO,EAAE,EAAE,YAAY,yIAA8B,IAAM,EAAA,eAAK,SAAS,EAAE,GAAG,CAAC,OAAO,aAAE,KAAC,MAAM,IAAC,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,YAAY,EAAE,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,IAAI,kBAAkB,KAAK,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,MAAM,EAAE,CAAA,CAAC,CAAC,yCAAe,EAAA,KAAC,MAAM,IAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,OAAO,EAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAA,CAAC,CAAC,6BAAa,IAAM,IAAM,KAtB9rB,MAAM,CAAC,SAAS,CAuB9G,CAAC,GAAO,IAAU,IAC3B,CACJ,EACA,KAAK,KAAK,IAAI,IAAI,eAAK,SAAS,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAC,OAAO,aAAC,8DAAsB,EAAA,yBAAO,KAAK,GAAQ,IAAM,IACnG,CACX,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AwikiIdentityAccess.d.ts","sourceRoot":"","sources":["../../../src/client/AwikiIdentityAccess.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,uBAAuB,EACvB,aAAa,EACb,6BAA6B,EAC7B,oCAAoC,EACpC,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,EACxB,YAAY,EACb,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAEhF,OAAO,EAEL,KAAK,oBAAoB,EAE1B,MAAM,yBAAyB,CAAA;AAGhC,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE,qBAAqB,EAAE,CAAC,OAAO,EAAE,oCAAoC,KAAK,OAAO,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,CAAC,CAAA;IACnI,mBAAmB,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,OAAO,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,CAAC,CAAA;IACrH,gBAAgB,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,OAAO,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,CAAC,CAAA;IAC9G,eAAe,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAAC,CAAA;IAC1E,mBAAmB,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC,CAAA;IACrF,gBAAgB,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAClD,2BAA2B,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,OAAO,CAAC,iBAAiB,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC,CAAA;IAC5H,6BAA6B,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC/D,KAAK,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAA;IACrD,kBAAkB,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;CACrD;AAED,MAAM,WAAW,wBAAyB,SAAQ,0BAA0B;IAC1E,QAAQ,CAAC,MAAM,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAA;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACxD,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACpE,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,QAAQ,CAAC,aAAa,EAAE,sBAAsB,CAAA;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C,QAAQ,CAAC,gBAAgB,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACvD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACvD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CACnC;AAwCD,uGAAuG;AACvG,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,+BAoiBlE"}
1
+ {"version":3,"file":"AwikiIdentityAccess.d.ts","sourceRoot":"","sources":["../../../src/client/AwikiIdentityAccess.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,uBAAuB,EACvB,aAAa,EACb,6BAA6B,EAC7B,oCAAoC,EACpC,yBAAyB,EACzB,wBAAwB,EAGxB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,EACxB,YAAY,EACb,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAEhF,OAAO,EAEL,KAAK,oBAAoB,EAE1B,MAAM,yBAAyB,CAAA;AAGhC,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE,qBAAqB,EAAE,CAAC,OAAO,EAAE,oCAAoC,KAAK,OAAO,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,CAAC,CAAA;IACnI,mBAAmB,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,OAAO,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,CAAC,CAAA;IACrH,gBAAgB,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,OAAO,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,CAAC,CAAA;IAC9G,eAAe,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAAC,CAAA;IAC1E,mBAAmB,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC,CAAA;IACrF,gBAAgB,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAClD,2BAA2B,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,OAAO,CAAC,iBAAiB,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC,CAAA;IAC5H,6BAA6B,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC/D,KAAK,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAA;IACrD,kBAAkB,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;CACrD;AAED,MAAM,WAAW,wBAAyB,SAAQ,0BAA0B;IAC1E,QAAQ,CAAC,MAAM,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAA;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACxD,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACpE,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,QAAQ,CAAC,aAAa,EAAE,sBAAsB,CAAA;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C,QAAQ,CAAC,gBAAgB,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACvD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACvD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CACnC;AAwCD,uGAAuG;AACvG,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,+BAslBlE"}
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { SHORT_HANDLE_INVITE_MESSAGE } from "../registration-policy.js";
3
3
  import { useRecoveryOtpCooldown } from "./otp-cooldown.js";
4
4
  import { useDraftState } from "./drafts.js";
@@ -20,8 +20,15 @@ export function AwikiIdentityAccess(props) {
20
20
  const recoveryCooldown = useRecoveryOtpCooldown();
21
21
  const [phone, setPhone] = useDraftState('identity:phone', '');
22
22
  const [handle, setHandle] = useDraftState('identity:handle', '');
23
+ const [inviteCode, setInviteCode] = useDraftState('identity:inviteCode', '');
24
+ const entryInFlight = useRef(false);
25
+ const [entryPending, setEntryPending] = useState(false);
23
26
  const [otp, setOtp] = useDraftState('identity:otp', '');
24
27
  const [registrationOtpSent, setRegistrationOtpSent] = useDraftState('identity:registrationOtpSent', false, false);
28
+ const [didMethod, setDidMethod] = useDraftState('identity:didMethod', 'wba', false);
29
+ const [pendingRegistration, setPendingRegistration] = useDraftState('identity:pendingRegistration', null, false);
30
+ const creationMethods = props.access?.creationMethods ?? ['wba'];
31
+ const canRegister = creationMethods.includes(didMethod) || (pendingRegistration?.method === didMethod && pendingRegistration.fullHandle === handle.trim());
25
32
  const [recoveryFactorContext, setRecoveryFactorContext] = useDraftState('identity:recoveryFactorContext', null, false);
26
33
  const [notice, setNotice] = useDraftState('identity:notice', null, false);
27
34
  const [error, setError] = useDraftState('identity:error', null, false);
@@ -34,12 +41,17 @@ export function AwikiIdentityAccess(props) {
34
41
  const [recoveryChoice, setRecoveryChoice] = useDraftState('identity:recoveryChoice', null, false);
35
42
  const [recoveryRiskConfirmed, setRecoveryRiskConfirmed] = useDraftState('identity:recoveryRiskConfirmed', false, false);
36
43
  const [recoveryEntryOpen, setRecoveryEntryOpen] = useDraftState('identity:recoveryEntryOpen', false, false);
37
- const validRecoveryEntryOpen = recoveryEntryOpen && props.sessionStatus === 'recovery-required';
44
+ const validRecoveryEntryOpen = recoveryEntryOpen && props.sessionStatus === 'recovery-required' && props.access?.methodCapabilities?.handleRecovery !== false;
38
45
  const recoveryConfirmationInFlight = useRef(false);
39
46
  const [recoveryConfirming, setRecoveryConfirming] = useState(false);
40
47
  const [joinCheck, setJoinCheck] = useState('loading');
41
48
  const [joinProgress, setJoinProgress] = useState(null);
42
49
  const [deviceRejoinHandle, setDeviceRejoinHandle] = useDraftState('identity:deviceRejoinHandle', null, false);
50
+ useEffect(() => {
51
+ if (!registrationOtpSent && pendingRegistration === null && creationMethods.length > 0 && !creationMethods.includes(didMethod)) {
52
+ setDidMethod(creationMethods.includes('wba') ? 'wba' : creationMethods[0]);
53
+ }
54
+ }, [props.access?.creationMethods, registrationOtpSent, pendingRegistration, didMethod]);
43
55
  useEffect(() => {
44
56
  if (retryDeadline === null)
45
57
  return;
@@ -61,6 +73,7 @@ export function AwikiIdentityAccess(props) {
61
73
  setRegistrationConfirmation(null);
62
74
  setShortHandleInviteNotice(false);
63
75
  setOtp('');
76
+ setInviteCode('');
64
77
  setRegistrationOtpSent(false);
65
78
  setRecoveryFactorContext(null);
66
79
  setRecoveryChoice(null);
@@ -83,34 +96,65 @@ export function AwikiIdentityAccess(props) {
83
96
  };
84
97
  const requestRegistrationOtp = async () => {
85
98
  setError(null);
86
- const result = await props.sendRegistrationOtp({ handle: handle.trim(), phone: phone.trim() });
87
- if (!result.ok) {
88
- if (result.failureCode === 'short-handle-invite-required') {
89
- setNotice(null);
99
+ if (entryInFlight.current)
100
+ return;
101
+ entryInFlight.current = true;
102
+ setEntryPending(true);
103
+ try {
104
+ const checked = await props.inspectIdentityAccess({ handle: handle.trim(), phone: phone.trim(),
105
+ ...(inviteCode.trim() === '' ? {} : { inviteCode: inviteCode.trim() }) });
106
+ if (!checked.ok)
107
+ return setError(checked.error);
108
+ if (checked.value.status === 'unavailable')
109
+ return setError('此 Handle 暂不可注册,请更换后重试。');
110
+ if (checked.value.status !== 'existing' && checked.value.inviteRequired && checked.value.inviteStatus !== 'valid') {
90
111
  setShortHandleInviteNotice(true);
112
+ setNotice(null);
113
+ if (checked.value.inviteStatus === 'invalid')
114
+ setError('邀请码无效或不适用于当前账号,请检查后重试。');
91
115
  return;
92
116
  }
93
- setError(result.error);
94
- return;
117
+ if (checked.value.status !== 'existing' && !canRegister)
118
+ return setError('当前服务暂不接受所选方法的新注册。');
119
+ const admissionInvite = checked.value.status === 'existing' ? '' : inviteCode.trim();
120
+ if (checked.value.status === 'existing') {
121
+ setInviteCode('');
122
+ setShortHandleInviteNotice(false);
123
+ }
124
+ const result = await props.sendRegistrationOtp({ handle: handle.trim(), phone: phone.trim(),
125
+ ...(didMethod === 'web' ? { didMethod } : {}),
126
+ ...(admissionInvite === '' ? {} : { inviteCode: admissionInvite }) });
127
+ if (!result.ok) {
128
+ if (result.failureCode === 'short-handle-invite-required') {
129
+ setNotice(null);
130
+ setShortHandleInviteNotice(true);
131
+ return;
132
+ }
133
+ setError(result.error);
134
+ return;
135
+ }
136
+ const cooldownSeconds = Math.max(0, Math.ceil(result.value.retryAfterSeconds));
137
+ setRegistrationOtpSent(true);
138
+ setRetryDeadline(Date.now() + cooldownSeconds * 1000);
139
+ setRetrySeconds(cooldownSeconds);
140
+ setNotice(`注册验证码已发送;${cooldownSeconds} 秒后可重新获取。`);
141
+ }
142
+ finally {
143
+ entryInFlight.current = false;
144
+ setEntryPending(false);
95
145
  }
96
- const cooldownSeconds = Math.max(0, Math.ceil(result.value.retryAfterSeconds));
97
- setRegistrationOtpSent(true);
98
- setRetryDeadline(Date.now() + cooldownSeconds * 1000);
99
- setRetrySeconds(cooldownSeconds);
100
- setNotice(`注册验证码已发送;${cooldownSeconds} 秒后可重新获取。`);
101
146
  };
102
147
  const requestIdentityOtp = async () => {
103
148
  setError(null);
104
- const result = await props.continueRecoveryForHandle?.(handle.trim());
149
+ const result = didMethod === 'wba' ? await props.continueRecoveryForHandle?.(handle.trim()) : undefined;
105
150
  if (result !== undefined && !result.ok)
106
151
  return setError(result.error);
107
152
  if (result?.ok && result.value)
108
153
  return;
109
- setShortHandleInviteNotice(false);
110
154
  await requestRegistrationOtp();
111
155
  };
112
156
  const completeRegistration = async () => {
113
- if (!registrationOtpSent || registrationConfirmation === null || registrationInFlight.current || props.pending)
157
+ if (!canRegister || !registrationOtpSent || registrationConfirmation === null || registrationInFlight.current || props.pending)
114
158
  return;
115
159
  registrationInFlight.current = true;
116
160
  setRegistrationSubmitting(true);
@@ -130,12 +174,13 @@ export function AwikiIdentityAccess(props) {
130
174
  }
131
175
  if (result.value.status === 'join-required') {
132
176
  setOtp('');
133
- setJoinContext({ fullHandle: result.value.fullHandle, phone: phone.trim() });
177
+ setJoinContext({ fullHandle: result.value.fullHandle, phone: phone.trim(), ...result.value.methodCapabilities === undefined ? {} : { methodCapabilities: result.value.methodCapabilities } });
134
178
  return;
135
179
  }
136
180
  setPhone('');
137
181
  setHandle('');
138
182
  setDeviceRejoinHandle(null);
183
+ setPendingRegistration(null);
139
184
  resetIdentityEntry();
140
185
  }
141
186
  catch {
@@ -151,7 +196,7 @@ export function AwikiIdentityAccess(props) {
151
196
  if (props.access === undefined || props.access === null)
152
197
  return;
153
198
  const choice = props.access.choice;
154
- setJoinContext(choice === null ? null : { fullHandle: choice.fullHandle, phone });
199
+ setJoinContext(choice === null ? null : { fullHandle: choice.fullHandle, phone, ...choice.methodCapabilities === undefined ? {} : { methodCapabilities: choice.methodCapabilities } });
155
200
  }, [props.access]);
156
201
  const beginJoin = async () => {
157
202
  setError(null);
@@ -322,7 +367,7 @@ export function AwikiIdentityAccess(props) {
322
367
  setDeviceRejoinHandle(currentHandle);
323
368
  resetIdentityEntry();
324
369
  };
325
- const signedOutRecoveryOpen = props.sessionStatus === 'signed-out' && signedOutAlternative === 'recover';
370
+ const signedOutRecoveryOpen = props.sessionStatus === 'signed-out' && signedOutAlternative === 'recover' && props.access?.methodCapabilities?.handleRecovery === true;
326
371
  const revokedHandle = props.sessionStatus === 'recovery-required' ? props.identity?.handle : undefined;
327
372
  if (props.recoveryOperationId !== null && !signedOutRecoveryOpen) {
328
373
  return (_jsx(Recovery, { ...props, onExit: exitRecovery, onExitLabel: props.sessionStatus === 'signed-out' ? '返回本机身份' : '返回身份入口', ...recoveryFactorContext === null ? {} : { initialFactorContext: recoveryFactorContext }, ...revokedHandle === undefined ? {} : {
@@ -331,6 +376,9 @@ export function AwikiIdentityAccess(props) {
331
376
  requestDescription: '这个 Handle 已在另一台设备完成了更新恢复,当前设备的旧凭证因此失效。验证绑定手机号后即可继续使用本机数据。',
332
377
  } }));
333
378
  }
379
+ if (props.sessionStatus === 'recovery-required' && props.access?.methodCapabilities?.handleRecovery === false) {
380
+ return _jsxs(AwikiIdentityPage, { children: [_jsx("p", { role: "status", children: "\u6B64\u8EAB\u4EFD\u4E0D\u652F\u6301\u6062\u590D\u3002Web \u9996\u4E2A\u7BA1\u7406\u5458\u4E22\u5931\u540E\u65E0\u6CD5\u6062\u590D\u7BA1\u7406\u80FD\u529B\uFF1B\u53EF\u4F7F\u7528\u4ECD\u6709\u6548\u7684\u8BBE\u5907\u7EE7\u7EED\u8BBF\u95EE\u3002" }), _jsx("button", { type: "button", className: css.secondary, disabled: props.accessLoading, onClick: () => { void props.refreshIdentityAccess?.(); }, children: "\u91CD\u65B0\u68C0\u67E5\u8EAB\u4EFD\u72B6\u6001" })] });
381
+ }
334
382
  if (!validRecoveryEntryOpen && ((props.access === null && props.accessLoading) || (props.access === null && props.accessError))) {
335
383
  return _jsxs(AwikiIdentityPage, { children: [_jsx("p", { role: "status", children: props.accessError ?? '正在确认本机身份操作…' }), props.accessError && _jsxs(_Fragment, { children: [props.sessionStatus === 'recovery-required' && _jsx("button", { type: "button", className: css.primary, disabled: props.accessLoading, onClick: () => { setRecoveryEntryOpen(true); }, children: "\u6062\u590D\u8EAB\u4EFD" }), _jsx("button", { type: "button", className: css.secondary, disabled: props.accessLoading, onClick: () => { void props.refreshIdentityAccess?.(); }, children: "\u91CD\u65B0\u68C0\u67E5\u8EAB\u4EFD\u72B6\u6001" })] })] });
336
384
  }
@@ -377,23 +425,23 @@ export function AwikiIdentityAccess(props) {
377
425
  : '请在已有 AWiki Me 或 CLI 管理设备上处理加入请求。' })] }), joinProgress.phase === 'sas-ready' && _jsx("strong", { className: css.sas, children: joinProgress.sas }), !terminal && _jsxs("small", { className: css.notice, role: "status", children: ["\u6709\u6548\u671F\u81F3 ", joinProgress.expiresAt] }), _jsx("button", { type: "button", className: terminal ? css.primary : css.secondary, disabled: props.pending, onClick: () => { void cancelJoin(); }, children: terminal ? '返回身份入口' : '取消加入' }), error !== null && _jsx("small", { className: css.error, role: "alert", children: error })] }) }));
378
426
  }
379
427
  if (props.sessionStatus === 'unregistered' && joinContext !== null) {
380
- return (_jsx(AwikiIdentityPage, { children: _jsxs("div", { className: css.accessFlow, children: [_jsx("div", { className: css.identityIcon, children: _jsx(IconUserOutline16, { size: 24 }) }), _jsxs("div", { className: css.headingGroup, children: [_jsx("h3", { children: "\u8FD9\u4E2A Handle \u5DF2\u5B58\u5728" }), _jsx("p", { children: "\u63A8\u8350\u628A\u5F53\u524D DSH \u4F5C\u4E3A\u65B0\u8BBE\u5907\u52A0\u5165\uFF0C\u539F\u8EAB\u4EFD\u548C\u5176\u4ED6\u8BBE\u5907\u4F1A\u7EE7\u7EED\u6709\u6548\u3002" })] }), _jsx("button", { type: "button", className: css.primary, disabled: props.pending, onClick: () => { void beginJoin(); }, children: "\u52A0\u5165\u65B0\u8BBE\u5907\uFF08\u63A8\u8350\uFF09" }), _jsx("button", { type: "button", className: css.dangerLink, disabled: props.pending, onClick: chooseRecovery, children: "\u6062\u590D Handle\uFF08\u4F1A\u66FF\u6362 DID\uFF09" }), _jsx("button", { type: "button", className: css.secondary, disabled: props.pending, onClick: () => { void cancelJoin(); }, children: "\u53D6\u6D88" }), error !== null && _jsx("small", { className: css.error, role: "alert", children: error })] }) }));
428
+ return (_jsx(AwikiIdentityPage, { children: _jsxs("div", { className: css.accessFlow, children: [_jsx("div", { className: css.identityIcon, children: _jsx(IconUserOutline16, { size: 24 }) }), _jsxs("div", { className: css.headingGroup, children: [_jsx("h3", { children: "\u8FD9\u4E2A Handle \u5DF2\u5B58\u5728" }), _jsx("p", { children: "\u63A8\u8350\u628A\u5F53\u524D DSH \u4F5C\u4E3A\u65B0\u8BBE\u5907\u52A0\u5165\uFF0C\u539F\u8EAB\u4EFD\u548C\u5176\u4ED6\u8BBE\u5907\u4F1A\u7EE7\u7EED\u6709\u6548\u3002" })] }), _jsx("button", { type: "button", className: css.primary, disabled: props.pending, onClick: () => { void beginJoin(); }, children: "\u52A0\u5165\u65B0\u8BBE\u5907\uFF08\u63A8\u8350\uFF09" }), joinContext.methodCapabilities?.handleRecovery === true && _jsx("button", { type: "button", className: css.dangerLink, disabled: props.pending, onClick: chooseRecovery, children: "\u6062\u590D Handle\uFF08\u4F1A\u66FF\u6362 DID\uFF09" }), joinContext.methodCapabilities?.method === 'web' && _jsx("p", { className: css.notice, children: "Web \u8EAB\u4EFD\u4E0D\u652F\u6301\u6062\u590D\u6216\u7BA1\u7406\u6743\u8F6C\u79FB\uFF1B\u9996\u4E2A\u7BA1\u7406\u5458\u4E22\u5931\u540E\u65E0\u6CD5\u6062\u590D\u7BA1\u7406\u80FD\u529B\u3002\u8BF7\u4F7F\u7528\u5DF2\u6709\u7BA1\u7406\u8BBE\u5907\u6279\u51C6\u52A0\u5165\u3002" }), _jsx("button", { type: "button", className: css.secondary, disabled: props.pending, onClick: () => { void cancelJoin(); }, children: "\u53D6\u6D88" }), error !== null && _jsx("small", { className: css.error, role: "alert", children: error })] }) }));
381
429
  }
382
430
  if (props.sessionStatus === 'signed-out') {
383
- if (signedOutAlternative === 'recover') {
431
+ if (signedOutRecoveryOpen) {
384
432
  return _jsx(Recovery, { ...props, onExit: exitRecovery, onExitLabel: "\u8FD4\u56DE\u672C\u673A\u8EAB\u4EFD" });
385
433
  }
386
434
  if (signedOutAlternative === 'replace') {
387
435
  return (_jsx(AwikiIdentityPage, { onBack: returnToSignedOutHome, backLabel: "\u8FD4\u56DE\u672C\u673A\u8EAB\u4EFD", backDisabled: props.pending, children: _jsxs("div", { className: css.accessFlow, children: [_jsx("div", { className: css.identityIcon, children: _jsx(IconUserOutline16, { size: 24 }) }), _jsxs("div", { className: css.headingGroup, children: [_jsx("h3", { children: "\u4F7F\u7528\u5176\u4ED6\u8EAB\u4EFD" }), _jsx("p", { children: "\u7EE7\u7EED\u524D\u9700\u8981\u5148\u6E05\u9664\u8FD9\u53F0\u8BBE\u5907\u4E0A\u4FDD\u7559\u7684 AWiki \u8EAB\u4EFD\u548C\u672C\u5730\u6570\u636E\u3002" })] }), _jsxs("div", { className: css.dangerPanel, children: [_jsx("strong", { children: "\u6B64\u64CD\u4F5C\u53EA\u6E05\u9664\u672C\u673A\u6570\u636E\uFF0C\u5E76\u4E14\u65E0\u6CD5\u64A4\u9500" }), _jsx("p", { children: "\u672C\u673A\u79C1\u94A5\u3001\u6D88\u606F\u3001\u9644\u4EF6\u7D22\u5F15\u548C\u8EAB\u4EFD\u7F13\u5B58\u5C06\u6C38\u4E45\u5220\u9664\uFF1B\u670D\u52A1\u7AEF\u8D26\u6237\u4E0D\u4F1A\u5220\u9664\uFF0C\u4F46\u672C\u5730\u6570\u636E\u65E0\u6CD5\u6062\u590D\u3002" }), _jsxs("label", { className: css.confirmation, children: [_jsx("input", { type: "checkbox", checked: replaceConfirmed, onChange: event => { setReplaceConfirmed(event.target.checked); } }), _jsx("span", { children: "\u6211\u5DF2\u4E86\u89E3\u672C\u5730\u6570\u636E\u4F1A\u88AB\u6C38\u4E45\u6E05\u9664" })] })] }), _jsx("button", { type: "button", className: css.dangerButton, disabled: props.pending || !replaceConfirmed, onClick: () => { void clearLocalIdentity(); }, children: "\u6E05\u9664\u5E76\u4F7F\u7528\u5176\u4ED6\u8EAB\u4EFD" }), error !== null && _jsx("small", { className: css.error, role: "alert", children: error })] }) }));
388
436
  }
389
- return (_jsx(AwikiIdentityPage, { children: _jsxs("div", { className: css.accessFlow, children: [_jsx("div", { className: css.identityIcon, children: _jsx(IconUserOutline16, { size: 24 }) }), _jsxs("div", { className: css.headingGroup, children: [_jsx("h3", { children: "\u5DF2\u9000\u51FA AWiki" }), _jsx("p", { children: "\u8FD9\u53F0\u8BBE\u5907\u4ECD\u5B89\u5168\u4FDD\u7559\u539F\u8EAB\u4EFD\u548C\u672C\u5730\u6D88\u606F\uFF0C\u91CD\u65B0\u8FDB\u5165\u4E0D\u4F1A\u521B\u5EFA\u65B0\u8EAB\u4EFD\u3002" })] }), _jsxs("div", { className: css.actionStack, children: [_jsx("button", { type: "button", className: css.primary, disabled: props.pending, onClick: () => { void login(); }, children: "\u91CD\u65B0\u8FDB\u5165\u672C\u673A\u8EAB\u4EFD" }), _jsx("button", { type: "button", className: css.dangerLink, disabled: props.pending, onClick: () => { setSignedOutAlternative('replace'); setLoginFailed(false); setError(null); }, children: "\u4F7F\u7528\u5176\u4ED6\u8EAB\u4EFD" })] }), error !== null && _jsx("small", { className: css.error, role: "alert", children: error }), loginFailed && (_jsxs("div", { className: css.recoveryHelp, children: [_jsx("p", { children: "\u5982\u679C\u672C\u673A\u8EAB\u4EFD\u51ED\u8BC1\u5DF2\u7ECF\u635F\u574F\u6216\u4E0D\u53EF\u7528\uFF0C\u53EF\u4EE5\u9A8C\u8BC1\u539F\u7ED1\u5B9A\u624B\u673A\u53F7\u540E\u6062\u590D\u8FD9\u4E2A\u8EAB\u4EFD\u3002" }), _jsx("button", { type: "button", className: css.secondary, disabled: props.pending, onClick: () => { setSignedOutAlternative('recover'); setError(null); }, children: "\u6062\u590D\u672C\u673A\u539F\u6709\u8EAB\u4EFD" })] }))] }) }));
437
+ return (_jsx(AwikiIdentityPage, { children: _jsxs("div", { className: css.accessFlow, children: [_jsx("div", { className: css.identityIcon, children: _jsx(IconUserOutline16, { size: 24 }) }), _jsxs("div", { className: css.headingGroup, children: [_jsx("h3", { children: "\u5DF2\u9000\u51FA AWiki" }), _jsx("p", { children: "\u8FD9\u53F0\u8BBE\u5907\u4ECD\u5B89\u5168\u4FDD\u7559\u539F\u8EAB\u4EFD\u548C\u672C\u5730\u6D88\u606F\uFF0C\u91CD\u65B0\u8FDB\u5165\u4E0D\u4F1A\u521B\u5EFA\u65B0\u8EAB\u4EFD\u3002" })] }), _jsxs("div", { className: css.actionStack, children: [_jsx("button", { type: "button", className: css.primary, disabled: props.pending, onClick: () => { void login(); }, children: "\u91CD\u65B0\u8FDB\u5165\u672C\u673A\u8EAB\u4EFD" }), _jsx("button", { type: "button", className: css.dangerLink, disabled: props.pending, onClick: () => { setSignedOutAlternative('replace'); setLoginFailed(false); setError(null); }, children: "\u4F7F\u7528\u5176\u4ED6\u8EAB\u4EFD" })] }), error !== null && _jsx("small", { className: css.error, role: "alert", children: error }), loginFailed && props.access?.methodCapabilities?.handleRecovery === true && (_jsxs("div", { className: css.recoveryHelp, children: [_jsx("p", { children: "\u5982\u679C\u672C\u673A\u8EAB\u4EFD\u51ED\u8BC1\u5DF2\u7ECF\u635F\u574F\u6216\u4E0D\u53EF\u7528\uFF0C\u53EF\u4EE5\u9A8C\u8BC1\u539F\u7ED1\u5B9A\u624B\u673A\u53F7\u540E\u6062\u590D\u8FD9\u4E2A\u8EAB\u4EFD\u3002" }), _jsx("button", { type: "button", className: css.secondary, disabled: props.pending, onClick: () => { setSignedOutAlternative('recover'); setError(null); }, children: "\u6062\u590D\u672C\u673A\u539F\u6709\u8EAB\u4EFD" })] }))] }) }));
390
438
  }
391
439
  return (_jsxs(AwikiIdentityPage, { ...registrationOtpSent ? { onBack: resetIdentityEntry, backLabel: '修改身份信息' } : {}, backDisabled: props.pending, children: [_jsxs("form", { className: css.accessFlow, onSubmit: (event) => {
392
440
  event.preventDefault();
393
441
  if (props.pending || registrationInFlight.current)
394
442
  return;
395
443
  if (registrationOtpSent) {
396
- setRegistrationConfirmation({ phone: phone.trim(), handle: handle.trim(), otp: otp.trim() });
444
+ setRegistrationConfirmation({ phone: phone.trim(), handle: handle.trim(), otp: otp.trim(), ...(didMethod === 'web' ? { didMethod } : {}), ...(inviteCode.trim() === '' ? {} : { inviteCode: inviteCode.trim() }) });
397
445
  }
398
446
  else {
399
447
  void requestIdentityOtp();
@@ -402,7 +450,7 @@ export function AwikiIdentityAccess(props) {
402
450
  ? '输入注册验证码。新 Handle 会创建身份,已有 Handle 会进入设备加入选择。'
403
451
  : deviceRejoinHandle === null
404
452
  ? '输入 Handle 和手机号继续。已有恢复进度会直接继续,无需重复获取验证码。'
405
- : '验证绑定手机号后,这台设备会以一把新密钥重新申请加入;本机消息数据不会清除。' })] }), _jsxs("label", { className: css.field, children: ["Handle", _jsx("input", { value: handle, onChange: event => { setHandle(event.target.value); setShortHandleInviteNotice(false); }, readOnly: registrationOtpSent || deviceRejoinHandle !== null, autoComplete: "username", placeholder: "\u4F8B\u5982 alice", autoFocus: props.autoFocusHandle })] }), _jsxs("label", { className: css.field, children: ["\u624B\u673A\u53F7", _jsx("input", { value: phone, onChange: event => { setPhone(event.target.value); }, readOnly: registrationOtpSent, type: "tel", autoComplete: "tel" })] }), registrationOtpSent && _jsxs("label", { className: css.field, children: ["\u6CE8\u518C\u9A8C\u8BC1\u7801", _jsx("input", { value: otp, onChange: event => { setOtp(event.target.value); }, inputMode: "numeric", autoComplete: "one-time-code", autoFocus: true })] }), _jsx("button", { type: "submit", className: css.primary, disabled: props.pending || props.accessLoading || handle.trim() === '' || phone.trim() === '' || (registrationOtpSent && otp.trim() === ''), children: registrationOtpSent ? '继续' : '获取验证码' }), registrationOtpSent && (_jsx("button", { type: "button", className: css.linkButton, disabled: props.pending || retrySeconds > 0, onClick: () => { void requestRegistrationOtp(); }, children: retrySeconds > 0 ? `${retrySeconds} 秒后重新获取` : '重新获取注册验证码' })), shortHandleInviteNotice && _jsx("div", { className: css.inviteNotice, role: "alert", children: SHORT_HANDLE_INVITE_MESSAGE }), notice !== null && _jsx("small", { className: css.notice, role: "status", children: notice }), error !== null && _jsx("small", { className: css.error, role: "alert", children: error })] }), _jsxs(Modal, { open: registrationConfirmation !== null, title: "\u786E\u8BA4\u521B\u5EFA AWiki \u8EAB\u4EFD", description: "\u65B0 Handle \u5C06\u901A\u8FC7 ANP Identity \u521B\u5EFA\u8EAB\u4EFD\u5E76\u6CE8\u518C\u5230 AWiki\uFF1B\u5982\u679C Handle \u5DF2\u5B58\u5728\uFF0C\u5C06\u7EE7\u7EED\u8BBE\u5907\u52A0\u5165\u6D41\u7A0B\u3002", closeLabel: "\u53D6\u6D88", onClose: () => { if (!registrationInFlight.current)
453
+ : '验证绑定手机号后,这台设备会以一把新密钥重新申请加入;本机消息数据不会清除。' })] }), !registrationOtpSent && (props.access?.pendingRegistrations?.length ?? 0) > 0 && _jsxs("div", { className: css.actionStack, "aria-label": "\u672A\u5B8C\u6210\u7684\u6CE8\u518C", children: [_jsx("p", { children: "\u9009\u62E9\u539F\u6CE8\u518C\u7EE7\u7EED\uFF1B\u8BF7\u91CD\u65B0\u8F93\u5165\u624B\u673A\u53F7\u548C\u6709\u6548\u9A8C\u8BC1\u7801\u3002" }), props.access?.pendingRegistrations?.filter(value => value.verificationKind === 'phone').map(value => _jsxs("button", { type: "button", className: css.secondary, disabled: entryPending || props.pending, onClick: () => { setPendingRegistration(value); setHandle(value.fullHandle); setDidMethod(value.method); setOtp(''); setNotice('将继续原注册,保留同一个 DID。'); }, children: ["\u7EE7\u7EED\u6CE8\u518C ", value.fullHandle] }, value.did))] }), (creationMethods.length > 1 || (creationMethods.length === 1 && creationMethods[0] === 'web')) && _jsxs("label", { className: css.field, children: ["\u8EAB\u4EFD\u65B9\u6CD5", _jsx("select", { "aria-label": "\u8EAB\u4EFD\u65B9\u6CD5", value: didMethod, disabled: entryPending || registrationOtpSent || props.pending, onChange: event => { setDidMethod(event.target.value); setPendingRegistration(null); }, children: creationMethods.map(method => _jsx("option", { value: method, children: method === 'wba' ? 'WBA(默认)' : 'Web' }, method)) })] }), didMethod === 'web' && _jsx("p", { className: css.notice, children: "Web \u8EAB\u4EFD\u652F\u6301\u72EC\u7ACB\u8BBE\u5907\u52A0\u5165\u548C\u64A4\u9500\uFF0C\u4E0D\u652F\u6301\u6062\u590D\u6216\u7BA1\u7406\u6743\u8F6C\u79FB\u3002\u9996\u4E2A\u7BA1\u7406\u5458\u4E22\u5931\u540E\u65E0\u6CD5\u6062\u590D\u7BA1\u7406\u80FD\u529B\u3002" }), !canRegister && _jsx("p", { className: css.notice, children: "\u5F53\u524D\u670D\u52A1\u6682\u4E0D\u63A5\u53D7\u6240\u9009\u65B9\u6CD5\u7684\u65B0\u6CE8\u518C\u3002\u53EF\u7EE7\u7EED\u5DF2\u4FDD\u5B58\u7684\u6CE8\u518C\uFF0C\u6216\u91CD\u65B0\u68C0\u67E5\u3002" }), _jsxs("label", { className: css.field, children: ["Handle", _jsx("input", { value: handle, onChange: event => { setHandle(event.target.value); setPendingRegistration(null); setShortHandleInviteNotice(false); setInviteCode(''); setError(null); }, readOnly: entryPending || props.pending || registrationOtpSent || deviceRejoinHandle !== null, autoComplete: "username", placeholder: "\u4F8B\u5982 alice", autoFocus: props.autoFocusHandle })] }), _jsxs("label", { className: css.field, children: ["\u624B\u673A\u53F7", _jsx("input", { value: phone, onChange: event => { setPhone(event.target.value); }, readOnly: entryPending || props.pending || registrationOtpSent, type: "tel", autoComplete: "tel" })] }), shortHandleInviteNotice && _jsxs("label", { className: css.field, children: ["\u9080\u8BF7\u7801", _jsx("input", { value: inviteCode, onChange: event => { setInviteCode(event.target.value); setError(null); }, readOnly: entryPending || props.pending || registrationOtpSent, autoComplete: "off", maxLength: 512, placeholder: "\u8BF7\u8F93\u5165\u9080\u8BF7\u7801" })] }), registrationOtpSent && _jsxs("label", { className: css.field, children: ["\u6CE8\u518C\u9A8C\u8BC1\u7801", _jsx("input", { value: otp, onChange: event => { setOtp(event.target.value); }, inputMode: "numeric", autoComplete: "one-time-code", autoFocus: true })] }), _jsx("button", { type: "submit", className: css.primary, disabled: entryPending || props.pending || props.accessLoading || (shortHandleInviteNotice && inviteCode.trim() === '') || handle.trim() === '' || phone.trim() === '' || (registrationOtpSent && otp.trim() === ''), children: registrationOtpSent ? '继续' : '获取验证码' }), registrationOtpSent && (_jsx("button", { type: "button", className: css.linkButton, disabled: entryPending || props.pending || retrySeconds > 0, onClick: () => { void requestRegistrationOtp(); }, children: retrySeconds > 0 ? `${retrySeconds} 秒后重新获取` : '重新获取注册验证码' })), shortHandleInviteNotice && _jsx("div", { className: css.inviteNotice, role: "alert", children: SHORT_HANDLE_INVITE_MESSAGE }), notice !== null && _jsx("small", { className: css.notice, role: "status", children: notice }), error !== null && _jsx("small", { className: css.error, role: "alert", children: error })] }), _jsxs(Modal, { open: registrationConfirmation !== null, title: "\u786E\u8BA4\u521B\u5EFA AWiki \u8EAB\u4EFD", description: "\u65B0 Handle \u5C06\u901A\u8FC7 ANP Identity \u521B\u5EFA\u8EAB\u4EFD\u5E76\u6CE8\u518C\u5230 AWiki\uFF1B\u5982\u679C Handle \u5DF2\u5B58\u5728\uFF0C\u5C06\u7EE7\u7EED\u8BBE\u5907\u52A0\u5165\u6D41\u7A0B\u3002", closeLabel: "\u53D6\u6D88", onClose: () => { if (!registrationInFlight.current)
406
454
  setRegistrationConfirmation(null); }, footer: _jsxs(_Fragment, { children: [_jsx(Button, { type: "button", variant: "outline", disabled: registrationSubmitting || props.pending, onClick: () => { if (!registrationInFlight.current)
407
455
  setRegistrationConfirmation(null); }, children: "\u8FD4\u56DE\u4FEE\u6539" }), _jsx(Button, { type: "button", disabled: registrationSubmitting || props.pending, onClick: () => { void completeRegistration(); }, children: registrationSubmitting ? '正在提交…' : '确认并继续' })] }), children: [_jsxs("p", { children: ["Handle\uFF1A", registrationConfirmation?.handle] }), _jsx("p", { children: "\u8EAB\u4EFD\u5BC6\u94A5\u7531\u672C\u673A ANP Identity \u4FDD\u7BA1\u3002\u53D6\u6D88\u4E0D\u4F1A\u63D0\u4EA4\u6CE8\u518C\u6216\u521B\u5EFA\u8EAB\u4EFD\u3002" })] })] }));
408
456
  }