@openclaw/matrix 2026.9.4 → 2026.9.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/activity.svg +40 -0
- package/assets/icon.png +0 -0
- package/dist/{account-selection-Bbtc483D.js → .setup/account-selection-5koohRSQ.mjs} +2 -2
- package/dist/{accounts-GwSAk9vY.js → .setup/accounts-BF5hyc-1.mjs} +3 -3
- package/dist/{approval-handler.runtime-6I3IpyeX.js → .setup/approval-handler.runtime-CoZCYGUH.mjs} +14 -13
- package/dist/{approval-ids-C4NdeXNz.js → .setup/approval-ids-CZOcdJ-5.mjs} +1 -1
- package/dist/{approval-reaction-auth-cbltZAUQ.js → .setup/approval-reaction-auth-B51E4ZDa.mjs} +2 -2
- package/dist/{approval-reactions-1fwEhoK9.js → .setup/approval-reactions-B0hfA6qz.mjs} +6 -6
- package/dist/{channel-Cg97H4c1.js → .setup/channel-q6TBKEiG.mjs} +25 -17
- package/dist/{channel.runtime-Bhpfa1qc.js → .setup/channel.runtime-DcDBdxe6.mjs} +6 -6
- package/dist/{channel.setup-DmS7m7aT.js → .setup/channel.setup-DZQ5rf9k.mjs} +9 -5
- package/dist/{cli-CLexRrQw.js → .setup/cli-Cx_cNaXN.mjs} +16 -16
- package/dist/{cli-metadata-zRyVmUOL.js → .setup/cli-metadata-DHU1H-Vr.mjs} +1 -1
- package/dist/{client-C0nZFCTj.js → .setup/client-By2B3Wz4.mjs} +5 -3
- package/dist/{client-CPcRv6ab.js → .setup/client-DsJUnWlV.mjs} +95 -93
- package/dist/{client-bootstrap-DLN-K8Xb.js → .setup/client-bootstrap-DGX0f-4x.mjs} +17 -8
- package/dist/{client-support-DLj4vDeu.js → .setup/client-support-Bn9Bk0-H.mjs} +1 -1
- package/dist/{config-update-BnX26jCO.js → .setup/config-update-B_4qZ5bV.mjs} +3 -3
- package/dist/.setup/create-client-DQXAZjTw.mjs +61 -0
- package/dist/{credentials-DysXbkv2.js → .setup/credentials-CeRipapZ.mjs} +40 -17
- package/dist/{credentials-read-WWpqi88V.js → .setup/credentials-read-Dp7BoEdm.mjs} +22 -9
- package/dist/{credentials-write.runtime-D22lPwRO.js → .setup/credentials-write.runtime-M_bUf3rL.mjs} +1 -1
- package/dist/{crypto-runtime-DiyH4R3D.js → .setup/crypto-runtime-9oxuU30y.mjs} +5 -6
- package/dist/{crypto-snapshot-doctor.runtime-DxgUMXUy.js → .setup/crypto-snapshot-doctor.runtime-DXpLbQ7y.mjs} +3 -3
- package/dist/{device-health-B4-YXtJR.js → .setup/device-health-CWOuIirq.mjs} +1 -1
- package/dist/.setup/direct-management-B2Bno2xL.mjs +346 -0
- package/dist/{directory-live-B8-GAVcc.js → .setup/directory-live-CatwztQc.mjs} +8 -6
- package/dist/{doctor-CJE8wO6y.js → .setup/doctor-BLCvdOFo.mjs} +1 -1
- package/dist/{draft-stream--NdEtnZ8.js → .setup/draft-stream-DIFZDNrb.mjs} +2 -2
- package/dist/{encryption-guidance-mDyxJV9U.js → .setup/encryption-guidance-DYEbeYj-.mjs} +2 -2
- package/dist/{http-client-BfPeF4CE.js → .setup/http-client-BJjo-iw5.mjs} +75 -9
- package/dist/{idb-persistence-DBdwHSWg.js → .setup/idb-persistence-CIfFUjP3.mjs} +12 -8
- package/dist/{inbound-dedupe-Ch33GU06.js → .setup/inbound-dedupe-BSlv35xl.mjs} +1 -1
- package/dist/.setup/joined-room-encryption-BCtxQ3hR.mjs +67 -0
- package/dist/{logger-B_71hN6W.js → .setup/logger-xBjiRIp1.mjs} +1 -1
- package/dist/{logging-DRjvUOIh.js → .setup/logging-rgm8ep9H.mjs} +2 -2
- package/dist/{messages-CpZfiQO0.js → .setup/messages-SW0NPYnR.mjs} +4 -4
- package/dist/{monitor-BUek91SW.js → .setup/monitor-DQfYX5rA.mjs} +118 -264
- package/dist/{outbound-D91JinYa.js → .setup/outbound-DRWtSUe-.mjs} +12 -4
- package/dist/.setup/probe.runtime-qPRZE3Yf.mjs +2 -0
- package/dist/{profile-vmjsmhh4.js → .setup/profile-ClrB3IgR.mjs} +1 -1
- package/dist/{profile-update-vnhxwjEt.js → .setup/profile-update-DPttQz3-.mjs} +4 -4
- package/dist/{reaction-events-2WM2nJe_.js → .setup/reaction-events-CdAk_rh_.mjs} +7 -7
- package/dist/{resolve-targets-K8D0HWPX.js → .setup/resolve-targets-drjgAdIe.mjs} +3 -3
- package/dist/{resolver.runtime-C88GwQCx.js → .setup/resolver.runtime-Ci6ddcPh.mjs} +1 -1
- package/dist/{room-info-BPVJkXnp.js → .setup/room-info-DHd1j3qM.mjs} +4 -4
- package/dist/.setup/runtime-1kn1P6io.mjs +29 -0
- package/dist/.setup/runtime-setter-api-DtxDAM-x.mjs +3 -0
- package/dist/{sdk-B4By16Bt.js → .setup/sdk-BkKE4ANj.mjs} +524 -285
- package/dist/{secret-contract-CufozuyJ.js → .setup/secret-contract-JlB6VmI3.mjs} +1 -1
- package/dist/.setup/secret-contract-api-B-iJoQEv.mjs +3 -0
- package/dist/{reaction-common-DkrQdBSZ.js → .setup/send-currentness-BrGXL7b8.mjs} +20 -1
- package/dist/{send-UWLIQ0bG.js → .setup/send-h0gZ_-qk.mjs} +197 -415
- package/dist/{setup-bootstrap-sVqkwtSY.js → .setup/setup-bootstrap-BYgBD504.mjs} +3 -3
- package/dist/{setup-core-8keb-Yre.js → .setup/setup-core-BUcDAM7q.mjs} +7 -7
- package/dist/.setup/setup-plugin-api-DoTm4v2q.mjs +3 -0
- package/dist/{setup-surface-bcluelBI.js → .setup/setup-surface-V_Q-enq-.mjs} +12 -12
- package/dist/{startup-verification-BTSf31hS.js → .setup/startup-verification-Bq5qeEGn.mjs} +3 -3
- package/dist/{storage-CV-pfV_2.js → .setup/storage-DJ-oUgmX.mjs} +42 -27
- package/dist/{storage-metadata-DYArLcq1.js → .setup/storage-metadata-BQJjHC_i.mjs} +58 -51
- package/dist/{subagent-hooks-DeICLbU5.js → .setup/subagent-hooks-jFgft_Mr.mjs} +1 -1
- package/dist/{sync-cache-state-C-mhj3xb.js → .setup/sync-cache-state-CFiZIPhA.mjs} +2 -2
- package/dist/{thread-binding-api-CzkeLZCU.js → .setup/thread-binding-api-DRMC62cs.mjs} +1 -1
- package/dist/{thread-bindings-Bwv87Gve.js → .setup/thread-bindings-Hy96ujd3.mjs} +6 -6
- package/dist/{tool-actions.runtime-Bf98Juk6.js → .setup/tool-actions.runtime-Dckttu43.mjs} +21 -14
- package/dist/{verification-BbG-VC9S.js → .setup/verification-CKqBZ9mI.mjs} +4 -3
- package/dist/api.js +8 -8
- package/dist/auth-presence.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/cli-metadata.js +1 -1
- package/dist/contract-api.js +2 -2
- package/dist/doctor-contract-api.js +8 -8
- package/dist/helper-api.js +3 -3
- package/dist/index.js +4 -1
- package/dist/plugin-entry.handlers.runtime.js +1 -1
- package/dist/runtime-api.js +6 -6
- package/dist/runtime-setter-api.js +2 -2
- package/dist/secret-contract-api.js +1 -1
- package/dist/session-binding-contract-api.js +2 -2
- package/dist/setup-entry.js +4 -3
- package/dist/setup-plugin-api.js +1 -1
- package/dist/subagent-hooks-api.js +1 -1
- package/dist/thread-binding-api.js +1 -1
- package/dist/thread-bindings-runtime.js +1 -1
- package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/package.json +1 -1
- package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.cjs +17 -17
- package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.js +17 -17
- package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.wasm +0 -0
- package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.wasm.d.ts +5 -5
- package/node_modules/markdown-it/dist/browser/markdown-it.esm.min.mjs +442 -434
- package/node_modules/markdown-it/dist/browser/markdown-it.esm.min.mjs.map +1 -1
- package/node_modules/markdown-it/dist/browser/markdown-it.umd.min.js +2 -2
- package/node_modules/markdown-it/dist/browser/markdown-it.umd.min.js.map +1 -1
- package/node_modules/markdown-it/dist/markdown-it.cjs.js +32 -16
- package/node_modules/markdown-it/dist/markdown-it.cjs.js.map +1 -1
- package/node_modules/markdown-it/dist/markdown-it.mjs +32 -16
- package/node_modules/markdown-it/dist/markdown-it.mjs.map +1 -1
- package/node_modules/markdown-it/node_modules/argparse/LICENSE +1 -208
- package/node_modules/markdown-it/node_modules/argparse/package.json +2 -2
- package/node_modules/markdown-it/node_modules/entities/dist/decode-codepoint.d.ts +23 -3
- package/node_modules/markdown-it/node_modules/entities/dist/decode-codepoint.d.ts.map +1 -1
- package/node_modules/markdown-it/node_modules/entities/dist/decode-codepoint.js +52 -37
- package/node_modules/markdown-it/node_modules/entities/dist/decode-codepoint.js.map +1 -1
- package/node_modules/markdown-it/node_modules/entities/dist/decode.d.ts +61 -28
- package/node_modules/markdown-it/node_modules/entities/dist/decode.d.ts.map +1 -1
- package/node_modules/markdown-it/node_modules/entities/dist/decode.js +789 -201
- package/node_modules/markdown-it/node_modules/entities/dist/decode.js.map +1 -1
- package/node_modules/markdown-it/node_modules/entities/dist/encode.d.ts +4 -2
- package/node_modules/markdown-it/node_modules/entities/dist/encode.d.ts.map +1 -1
- package/node_modules/markdown-it/node_modules/entities/dist/encode.js +249 -44
- package/node_modules/markdown-it/node_modules/entities/dist/encode.js.map +1 -1
- package/node_modules/markdown-it/node_modules/entities/dist/escape.d.ts +19 -7
- package/node_modules/markdown-it/node_modules/entities/dist/escape.d.ts.map +1 -1
- package/node_modules/markdown-it/node_modules/entities/dist/escape.js +104 -64
- package/node_modules/markdown-it/node_modules/entities/dist/escape.js.map +1 -1
- package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-html.d.ts.map +1 -1
- package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-html.js +2 -2
- package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-html.js.map +1 -1
- package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-xml.d.ts.map +1 -1
- package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-xml.js +4 -2
- package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-xml.js.map +1 -1
- package/node_modules/markdown-it/node_modules/entities/dist/generated/encode-html.d.ts +2 -4
- package/node_modules/markdown-it/node_modules/entities/dist/generated/encode-html.d.ts.map +1 -1
- package/node_modules/markdown-it/node_modules/entities/dist/generated/encode-html.js +1 -10
- package/node_modules/markdown-it/node_modules/entities/dist/generated/encode-html.js.map +1 -1
- package/node_modules/markdown-it/node_modules/entities/dist/index.d.ts +2 -2
- package/node_modules/markdown-it/node_modules/entities/dist/index.d.ts.map +1 -1
- package/node_modules/markdown-it/node_modules/entities/dist/index.js +2 -6
- package/node_modules/markdown-it/node_modules/entities/dist/index.js.map +1 -1
- package/node_modules/markdown-it/node_modules/entities/dist/internal/bin-trie-flags.d.ts +39 -8
- package/node_modules/markdown-it/node_modules/entities/dist/internal/bin-trie-flags.d.ts.map +1 -1
- package/node_modules/markdown-it/node_modules/entities/dist/internal/bin-trie-flags.js +37 -6
- package/node_modules/markdown-it/node_modules/entities/dist/internal/bin-trie-flags.js.map +1 -1
- package/node_modules/markdown-it/node_modules/entities/dist/internal/decode-shared.d.ts +35 -4
- package/node_modules/markdown-it/node_modules/entities/dist/internal/decode-shared.d.ts.map +1 -1
- package/node_modules/markdown-it/node_modules/entities/dist/internal/decode-shared.js +189 -11
- package/node_modules/markdown-it/node_modules/entities/dist/internal/decode-shared.js.map +1 -1
- package/node_modules/markdown-it/node_modules/entities/package.json +14 -14
- package/node_modules/markdown-it/node_modules/entities/src/decode-codepoint.ts +58 -39
- package/node_modules/markdown-it/node_modules/entities/src/decode.ts +942 -245
- package/node_modules/markdown-it/node_modules/entities/src/encode.ts +289 -47
- package/node_modules/markdown-it/node_modules/entities/src/escape.ts +110 -83
- package/node_modules/markdown-it/node_modules/entities/src/generated/decode-data-html.ts +8 -3
- package/node_modules/markdown-it/node_modules/entities/src/generated/decode-data-xml.ts +4 -4
- package/node_modules/markdown-it/node_modules/entities/src/generated/encode-html.ts +1 -16
- package/node_modules/markdown-it/node_modules/entities/src/index.ts +6 -8
- package/node_modules/markdown-it/node_modules/entities/src/internal/bin-trie-flags.ts +38 -7
- package/node_modules/markdown-it/node_modules/entities/src/internal/decode-shared.ts +203 -12
- package/node_modules/markdown-it/package.json +1 -1
- package/node_modules/matrix-js-sdk/CHANGELOG.md +15 -0
- package/node_modules/matrix-js-sdk/lib/client.d.ts +1 -2
- package/node_modules/matrix-js-sdk/lib/client.d.ts.map +1 -1
- package/node_modules/matrix-js-sdk/lib/client.js +16 -8
- package/node_modules/matrix-js-sdk/lib/client.js.map +1 -1
- package/node_modules/matrix-js-sdk/lib/http-api/errors.d.ts +8 -0
- package/node_modules/matrix-js-sdk/lib/http-api/errors.d.ts.map +1 -1
- package/node_modules/matrix-js-sdk/lib/http-api/errors.js +12 -0
- package/node_modules/matrix-js-sdk/lib/http-api/errors.js.map +1 -1
- package/node_modules/matrix-js-sdk/lib/matrixrtc/MatrixRTCSession.d.ts +5 -0
- package/node_modules/matrix-js-sdk/lib/matrixrtc/MatrixRTCSession.d.ts.map +1 -1
- package/node_modules/matrix-js-sdk/lib/matrixrtc/MatrixRTCSession.js +2 -1
- package/node_modules/matrix-js-sdk/lib/matrixrtc/MatrixRTCSession.js.map +1 -1
- package/node_modules/matrix-js-sdk/lib/oauth/authorize.d.ts +2 -4
- package/node_modules/matrix-js-sdk/lib/oauth/authorize.d.ts.map +1 -1
- package/node_modules/matrix-js-sdk/lib/oauth/authorize.js.map +1 -1
- package/node_modules/matrix-js-sdk/lib/oauth/error.d.ts +44 -0
- package/node_modules/matrix-js-sdk/lib/oauth/error.d.ts.map +1 -1
- package/node_modules/matrix-js-sdk/lib/oauth/error.js +53 -0
- package/node_modules/matrix-js-sdk/lib/oauth/error.js.map +1 -1
- package/node_modules/matrix-js-sdk/lib/oauth/index.d.ts.map +1 -1
- package/node_modules/matrix-js-sdk/lib/oauth/index.js +19 -2
- package/node_modules/matrix-js-sdk/lib/oauth/index.js.map +1 -1
- package/node_modules/matrix-js-sdk/lib/oauth/tokenRefresher.d.ts.map +1 -1
- package/node_modules/matrix-js-sdk/lib/oauth/tokenRefresher.js +4 -2
- package/node_modules/matrix-js-sdk/lib/oauth/tokenRefresher.js.map +1 -1
- package/node_modules/matrix-js-sdk/lib/secret-storage.d.ts +1 -1
- package/node_modules/matrix-js-sdk/lib/secret-storage.d.ts.map +1 -1
- package/node_modules/matrix-js-sdk/lib/secret-storage.js +9 -32
- package/node_modules/matrix-js-sdk/lib/secret-storage.js.map +1 -1
- package/node_modules/matrix-js-sdk/lib/sliding-sync-sdk.d.ts.map +1 -1
- package/node_modules/matrix-js-sdk/lib/sliding-sync-sdk.js +54 -1
- package/node_modules/matrix-js-sdk/lib/sliding-sync-sdk.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/dist/api.js +556 -311
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/dist/api.min.js +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/ClientWidgetApi.d.ts +2 -0
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/ClientWidgetApi.js +221 -129
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/ClientWidgetApi.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/Symbols.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/WidgetApi.d.ts +37 -0
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/WidgetApi.js +182 -63
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/WidgetApi.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/driver/WidgetDriver.d.ts +20 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/driver/WidgetDriver.js +49 -20
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/driver/WidgetDriver.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/index.d.ts +1 -0
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/index.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ApiVersion.d.ts +2 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ApiVersion.js +3 -2
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ApiVersion.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/Capabilities.d.ts +9 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/Capabilities.js +2 -0
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/Capabilities.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/CapabilitiesAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ContentLoadedAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/DownloadFileAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/GetMediaConfigAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/GetOpenIDAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ICustomWidgetData.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/IJitsiWidgetData.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/IRoomAccountData.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/IRoomEvent.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/IStickerpickerWidgetData.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/IToDeviceMessage.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/IWidget.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/IWidgetApiErrorResponse.js +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/IWidgetApiErrorResponse.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/IWidgetApiRequest.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/IWidgetApiResponse.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/LanguageChangeAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ModalButtonKind.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ModalWidgetActions.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/NavigateAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/OpenIDCredentialsAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ReadEventAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ReadRelationsAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ReadRoomAccountDataAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/RtcLivekitActions.d.ts +53 -0
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/RtcLivekitActions.js +6 -0
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/RtcLivekitActions.js.map +1 -0
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/RtcTransportsAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ScreenshotAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/SendEventAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/SendToDeviceAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/SetModalButtonEnabledAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/StickerAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/StickyAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/SupportedVersionsAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ThemeChangeAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/TurnServerActions.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/UpdateDelayedEventAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/UpdateStateAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/UploadFileAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/UserDirectorySearchAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/VisibilityAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/WidgetApiAction.d.ts +9 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/WidgetApiAction.js +2 -0
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/WidgetApiAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/WidgetApiDirection.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/WidgetConfigAction.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/WidgetKind.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/WidgetType.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/models/Widget.js +20 -20
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/models/Widget.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/models/WidgetEventCapability.js +9 -9
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/models/WidgetEventCapability.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/models/WidgetParser.js +23 -23
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/models/WidgetParser.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/models/validation/url.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/models/validation/utils.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/templating/url-template.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/transport/ITransport.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/transport/PostmessageTransport.js +32 -32
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/transport/PostmessageTransport.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/util/SimpleObservable.js +10 -10
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/util/SimpleObservable.js.map +1 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/package.json +2 -2
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/src/ClientWidgetApi.ts +48 -0
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/src/WidgetApi.ts +75 -1
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/src/driver/WidgetDriver.ts +33 -0
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/src/index.ts +1 -0
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/src/interfaces/ApiVersion.ts +2 -0
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/src/interfaces/Capabilities.ts +8 -0
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/src/interfaces/RtcLivekitActions.ts +80 -0
- package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/src/interfaces/WidgetApiAction.ts +10 -0
- package/node_modules/matrix-js-sdk/node_modules/p-retry/index.d.ts +1 -1
- package/node_modules/matrix-js-sdk/node_modules/p-retry/index.js +4 -0
- package/node_modules/matrix-js-sdk/node_modules/p-retry/package.json +1 -1
- package/node_modules/matrix-js-sdk/node_modules/p-retry/readme.md +1 -1
- package/node_modules/matrix-js-sdk/package.json +2 -2
- package/node_modules/matrix-js-sdk/src/client.ts +19 -11
- package/node_modules/matrix-js-sdk/src/http-api/errors.ts +16 -0
- package/node_modules/matrix-js-sdk/src/matrixrtc/MatrixRTCSession.ts +8 -1
- package/node_modules/matrix-js-sdk/src/oauth/authorize.ts +2 -5
- package/node_modules/matrix-js-sdk/src/oauth/error.ts +69 -0
- package/node_modules/matrix-js-sdk/src/oauth/index.ts +19 -2
- package/node_modules/matrix-js-sdk/src/oauth/tokenRefresher.ts +9 -2
- package/node_modules/matrix-js-sdk/src/secret-storage.ts +8 -31
- package/node_modules/matrix-js-sdk/src/sliding-sync-sdk.ts +74 -0
- package/node_modules/typebox/build/compile/validator.d.mts +1 -1
- package/node_modules/typebox/build/compile/validator.mjs +1 -1
- package/node_modules/typebox/build/format/idna/idn-hostname.mjs +7 -5
- package/node_modules/typebox/build/format/iri.mjs +5 -1
- package/node_modules/typebox/build/guard/emit.mjs +2 -4
- package/node_modules/typebox/build/guard/guard.mjs +6 -18
- package/node_modules/typebox/build/guard/string.mjs +16 -24
- package/node_modules/typebox/build/schema/build.mjs +2 -2
- package/node_modules/typebox/build/schema/check.mjs +1 -1
- package/node_modules/typebox/build/schema/compile.d.mts +3 -2
- package/node_modules/typebox/build/schema/compile.mjs +8 -8
- package/node_modules/typebox/build/schema/engine/_context.d.mts +6 -7
- package/node_modules/typebox/build/schema/engine/_context.mjs +23 -15
- package/node_modules/typebox/build/schema/engine/_functions.d.mts +2 -2
- package/node_modules/typebox/build/schema/engine/_functions.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/_reducer.d.mts +3 -3
- package/node_modules/typebox/build/schema/engine/_refine.d.mts +5 -5
- package/node_modules/typebox/build/schema/engine/_refine.mjs +4 -7
- package/node_modules/typebox/build/schema/engine/_stack.d.mts +34 -16
- package/node_modules/typebox/build/schema/engine/_stack.mjs +148 -104
- package/node_modules/typebox/build/schema/engine/additionalItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/additionalProperties.d.mts +8 -8
- package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +26 -18
- package/node_modules/typebox/build/schema/engine/allOf.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/allOf.mjs +3 -3
- package/node_modules/typebox/build/schema/engine/anyOf.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/anyOf.mjs +5 -10
- package/node_modules/typebox/build/schema/engine/boolean.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/boolean.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/const.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/const.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/contains.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/contains.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/dependencies.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/dependencies.mjs +3 -6
- package/node_modules/typebox/build/schema/engine/dependentRequired.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/dependentRequired.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/dependentSchemas.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +11 -7
- package/node_modules/typebox/build/schema/engine/enum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/enum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/exclusiveMaximum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/exclusiveMaximum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/exclusiveMinimum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/exclusiveMinimum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/format.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/format.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/if.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/if.mjs +7 -15
- package/node_modules/typebox/build/schema/engine/items.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/items.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/maxContains.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maxContains.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/maxItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maxItems.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/maxLength.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maxLength.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/maxProperties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maxProperties.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/maximum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maximum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minContains.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/minContains.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minItems.d.mts +5 -5
- package/node_modules/typebox/build/schema/engine/minItems.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minLength.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/minLength.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minProperties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/minProperties.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minimum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/minimum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/multipleOf.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/multipleOf.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/not.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/not.mjs +4 -8
- package/node_modules/typebox/build/schema/engine/oneOf.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/oneOf.mjs +6 -11
- package/node_modules/typebox/build/schema/engine/pattern.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/pattern.mjs +3 -7
- package/node_modules/typebox/build/schema/engine/patternProperties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/patternProperties.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/prefixItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/prefixItems.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/properties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/properties.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/propertyNames.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/propertyNames.mjs +4 -10
- package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +11 -7
- package/node_modules/typebox/build/schema/engine/ref.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/ref.mjs +19 -15
- package/node_modules/typebox/build/schema/engine/required.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/required.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/schema.d.mts +7 -7
- package/node_modules/typebox/build/schema/engine/schema.mjs +137 -133
- package/node_modules/typebox/build/schema/engine/type.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/type.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/unevaluatedItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/unevaluatedItems.mjs +5 -9
- package/node_modules/typebox/build/schema/engine/unevaluatedProperties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/unevaluatedProperties.mjs +5 -9
- package/node_modules/typebox/build/schema/engine/uniqueItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/uniqueItems.mjs +2 -6
- package/node_modules/typebox/build/schema/errors.d.mts +2 -2
- package/node_modules/typebox/build/schema/errors.mjs +8 -14
- package/node_modules/typebox/build/schema/intern/index.d.mts +1 -0
- package/node_modules/typebox/build/schema/intern/index.mjs +1 -0
- package/node_modules/typebox/build/schema/intern/intern.d.mts +11 -0
- package/node_modules/typebox/build/schema/intern/intern.mjs +293 -0
- package/node_modules/typebox/build/schema/meta/draft_2019_09.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_2019_09.mjs +288 -0
- package/node_modules/typebox/build/schema/meta/draft_2020_12.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_2020_12.mjs +300 -0
- package/node_modules/typebox/build/schema/meta/draft_3.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_3.mjs +143 -0
- package/node_modules/typebox/build/schema/meta/draft_4.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_4.mjs +149 -0
- package/node_modules/typebox/build/schema/meta/draft_6.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_6.mjs +155 -0
- package/node_modules/typebox/build/schema/meta/draft_7.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_7.mjs +172 -0
- package/node_modules/typebox/build/schema/meta/index.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/index.mjs +2 -0
- package/node_modules/typebox/build/schema/meta/meta.d.mts +9 -0
- package/node_modules/typebox/build/schema/meta/meta.mjs +15 -0
- package/node_modules/typebox/build/schema/meta/schema.d.mts +6 -0
- package/node_modules/typebox/build/schema/meta/schema.mjs +1 -0
- package/node_modules/typebox/build/schema/parse.d.mts +1 -0
- package/node_modules/typebox/build/schema/parse.mjs +10 -5
- package/node_modules/typebox/build/schema/resolve/resolve.d.mts +8 -3
- package/node_modules/typebox/build/schema/resolve/resolve.mjs +268 -139
- package/node_modules/typebox/build/schema/schema.d.mts +2 -0
- package/node_modules/typebox/build/schema/schema.mjs +2 -0
- package/node_modules/typebox/build/value/errors/errors.d.mts +2 -12
- package/node_modules/typebox/build/value/errors/errors.mjs +2 -7
- package/node_modules/typebox/package.json +1 -1
- package/node_modules/typebox/readme.md +59 -89
- package/node_modules/zod/README.md +27 -0
- package/node_modules/zod/compile.cjs +77 -0
- package/node_modules/zod/compile.d.cts +1 -0
- package/node_modules/zod/compile.d.ts +1 -0
- package/node_modules/zod/compile.js +52 -0
- package/node_modules/zod/index.cjs +2 -2
- package/node_modules/zod/index.d.cts +1 -2
- package/node_modules/zod/index.d.ts +1 -2
- package/node_modules/zod/index.js +5 -2
- package/node_modules/zod/package.json +13 -2
- package/node_modules/zod/src/compile.ts +56 -0
- package/node_modules/zod/src/index.ts +5 -2
- package/node_modules/zod/src/v3/ZodError.ts +22 -12
- package/node_modules/zod/src/v3/tests/error.test.ts +35 -0
- package/node_modules/zod/src/v3/tests/intersection.test.ts +18 -0
- package/node_modules/zod/src/v3/tests/language-server.test.ts +1 -2
- package/node_modules/zod/src/v3/tests/object.test.ts +3 -6
- package/node_modules/zod/src/v3/tests/readonly.test.ts +0 -80
- package/node_modules/zod/src/v3/tests/string.test.ts +6 -0
- package/node_modules/zod/src/v3/types.ts +5 -5
- package/node_modules/zod/src/v4/classic/checks.ts +1 -0
- package/node_modules/zod/src/v4/classic/compat.ts +26 -18
- package/node_modules/zod/src/v4/classic/deep-partial.ts +76 -0
- package/node_modules/zod/src/v4/classic/errors.ts +59 -44
- package/node_modules/zod/src/v4/classic/external.ts +12 -9
- package/node_modules/zod/src/v4/classic/from-json-schema.ts +140 -78
- package/node_modules/zod/src/v4/classic/in-out.ts +45 -0
- package/node_modules/zod/src/v4/classic/index.ts +2 -2
- package/node_modules/zod/src/v4/classic/iso.ts +2 -72
- package/node_modules/zod/src/v4/classic/parse.ts +10 -4
- package/node_modules/zod/src/v4/classic/schemas.ts +452 -262
- package/node_modules/zod/src/v4/classic/tests/apply.test.ts +27 -0
- package/node_modules/zod/src/v4/classic/tests/array.test.ts +2 -2
- package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +135 -0
- package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +30 -1
- package/node_modules/zod/src/v4/classic/tests/catch.test.ts +278 -0
- package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +1 -2
- package/node_modules/zod/src/v4/classic/tests/codec.test.ts +2 -1
- package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
- package/node_modules/zod/src/v4/classic/tests/credit-card.test.ts +76 -0
- package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +720 -0
- package/node_modules/zod/src/v4/classic/tests/date.test.ts +30 -0
- package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +32 -18
- package/node_modules/zod/src/v4/classic/tests/deep-partial.test.ts +380 -0
- package/node_modules/zod/src/v4/classic/tests/default-locale.test.ts +32 -0
- package/node_modules/zod/src/v4/classic/tests/default.test.ts +46 -0
- package/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +31 -7
- package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +155 -13
- package/node_modules/zod/src/v4/classic/tests/enum.test.ts +11 -0
- package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +112 -2
- package/node_modules/zod/src/v4/classic/tests/error.test.ts +274 -6
- package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +425 -10
- package/node_modules/zod/src/v4/classic/tests/function.test.ts +31 -0
- package/node_modules/zod/src/v4/classic/tests/global-config.test.ts +2 -9
- package/node_modules/zod/src/v4/classic/tests/hash.test.ts +1 -2
- package/node_modules/zod/src/v4/classic/tests/in-out.test.ts +159 -0
- package/node_modules/zod/src/v4/classic/tests/index.test.ts +21 -2
- package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +281 -0
- package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +47 -0
- package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +136 -0
- package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +183 -0
- package/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +3 -10
- package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +36 -1
- package/node_modules/zod/src/v4/classic/tests/literal.test.ts +12 -1
- package/node_modules/zod/src/v4/classic/tests/map.test.ts +12 -0
- package/node_modules/zod/src/v4/classic/tests/number.test.ts +46 -9
- package/node_modules/zod/src/v4/classic/tests/object.test.ts +245 -12
- package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +234 -0
- package/node_modules/zod/src/v4/classic/tests/optional.test.ts +49 -16
- package/node_modules/zod/src/v4/classic/tests/partial.test.ts +51 -4
- package/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +20 -2
- package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -68
- package/node_modules/zod/src/v4/classic/tests/record.test.ts +186 -18
- package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +33 -2
- package/node_modules/zod/src/v4/classic/tests/redos.test.ts +68 -0
- package/node_modules/zod/src/v4/classic/tests/refine.test.ts +60 -0
- package/node_modules/zod/src/v4/classic/tests/set.test.ts +9 -0
- package/node_modules/zod/src/v4/classic/tests/string.test.ts +127 -5
- package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +18 -0
- package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +11 -2
- package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +1585 -173
- package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +45 -30
- package/node_modules/zod/src/v4/classic/tests/union.test.ts +39 -2
- package/node_modules/zod/src/v4/classic/tests/validate.test.ts +76 -0
- package/node_modules/zod/src/v4/classic/tests/validations.test.ts +2 -2
- package/node_modules/zod/src/v4/core/api.ts +48 -12
- package/node_modules/zod/src/v4/core/checks.ts +57 -44
- package/node_modules/zod/src/v4/core/compile.ts +2188 -0
- package/node_modules/zod/src/v4/core/core.ts +98 -19
- package/node_modules/zod/src/v4/core/doc.ts +11 -7
- package/node_modules/zod/src/v4/core/errors.ts +115 -24
- package/node_modules/zod/src/v4/core/index.ts +3 -0
- package/node_modules/zod/src/v4/core/json-schema-generator.ts +6 -1
- package/node_modules/zod/src/v4/core/json-schema-processors.ts +257 -93
- package/node_modules/zod/src/v4/core/json-schema.ts +2 -1
- package/node_modules/zod/src/v4/core/memoizer.ts +284 -0
- package/node_modules/zod/src/v4/core/parse.ts +131 -38
- package/node_modules/zod/src/v4/core/regexes.ts +30 -13
- package/node_modules/zod/src/v4/core/registries.ts +2 -2
- package/node_modules/zod/src/v4/core/schemas.ts +759 -461
- package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +969 -0
- package/node_modules/zod/src/v4/core/tests/compile-global.test.ts +89 -0
- package/node_modules/zod/src/v4/core/tests/compile-off-by-default.test.ts +26 -0
- package/node_modules/zod/src/v4/core/tests/compile-stats.test.ts +34 -0
- package/node_modules/zod/src/v4/core/tests/compile.test.ts +1639 -0
- package/node_modules/zod/src/v4/core/tests/locales/el.test.ts +1 -2
- package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +1 -2
- package/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +3 -3
- package/node_modules/zod/src/v4/core/tests/locales/parity.test.ts +42 -0
- package/node_modules/zod/src/v4/core/tests/locales/tk.test.ts +69 -0
- package/node_modules/zod/src/v4/core/tests/treeshake.test.ts +51 -0
- package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +31 -0
- package/node_modules/zod/src/v4/core/to-json-schema.ts +275 -42
- package/node_modules/zod/src/v4/core/util.ts +268 -42
- package/node_modules/zod/src/v4/core/versions.ts +2 -2
- package/node_modules/zod/src/v4/core/visit.ts +193 -0
- package/node_modules/zod/src/v4/index.ts +3 -3
- package/node_modules/zod/src/v4/locales/ar.ts +3 -0
- package/node_modules/zod/src/v4/locales/az.ts +3 -0
- package/node_modules/zod/src/v4/locales/be.ts +10 -0
- package/node_modules/zod/src/v4/locales/bg.ts +3 -0
- package/node_modules/zod/src/v4/locales/bn.ts +121 -0
- package/node_modules/zod/src/v4/locales/ca.ts +3 -0
- package/node_modules/zod/src/v4/locales/ckb.ts +138 -0
- package/node_modules/zod/src/v4/locales/cs.ts +3 -0
- package/node_modules/zod/src/v4/locales/da.ts +5 -2
- package/node_modules/zod/src/v4/locales/de.ts +3 -0
- package/node_modules/zod/src/v4/locales/el.ts +1 -0
- package/node_modules/zod/src/v4/locales/en.ts +15 -4
- package/node_modules/zod/src/v4/locales/eo.ts +3 -0
- package/node_modules/zod/src/v4/locales/es.ts +2 -0
- package/node_modules/zod/src/v4/locales/fa.ts +3 -0
- package/node_modules/zod/src/v4/locales/fi.ts +3 -0
- package/node_modules/zod/src/v4/locales/fr-CA.ts +3 -0
- package/node_modules/zod/src/v4/locales/fr.ts +19 -14
- package/node_modules/zod/src/v4/locales/gu.ts +121 -0
- package/node_modules/zod/src/v4/locales/he.ts +6 -1
- package/node_modules/zod/src/v4/locales/hi.ts +124 -0
- package/node_modules/zod/src/v4/locales/hr.ts +2 -0
- package/node_modules/zod/src/v4/locales/hu.ts +3 -0
- package/node_modules/zod/src/v4/locales/hy.ts +9 -0
- package/node_modules/zod/src/v4/locales/id.ts +3 -0
- package/node_modules/zod/src/v4/locales/index.ts +10 -0
- package/node_modules/zod/src/v4/locales/is.ts +3 -0
- package/node_modules/zod/src/v4/locales/it.ts +3 -0
- package/node_modules/zod/src/v4/locales/ja.ts +3 -0
- package/node_modules/zod/src/v4/locales/ka.ts +3 -0
- package/node_modules/zod/src/v4/locales/km.ts +3 -0
- package/node_modules/zod/src/v4/locales/kn.ts +124 -0
- package/node_modules/zod/src/v4/locales/ko.ts +3 -0
- package/node_modules/zod/src/v4/locales/lt.ts +2 -0
- package/node_modules/zod/src/v4/locales/mk.ts +3 -0
- package/node_modules/zod/src/v4/locales/ms.ts +3 -0
- package/node_modules/zod/src/v4/locales/ne.ts +126 -0
- package/node_modules/zod/src/v4/locales/nl.ts +3 -0
- package/node_modules/zod/src/v4/locales/nn.ts +119 -0
- package/node_modules/zod/src/v4/locales/no.ts +5 -2
- package/node_modules/zod/src/v4/locales/ota.ts +3 -0
- package/node_modules/zod/src/v4/locales/pl.ts +3 -0
- package/node_modules/zod/src/v4/locales/ps.ts +3 -0
- package/node_modules/zod/src/v4/locales/pt-BR.ts +159 -0
- package/node_modules/zod/src/v4/locales/pt.ts +99 -58
- package/node_modules/zod/src/v4/locales/ro.ts +1 -0
- package/node_modules/zod/src/v4/locales/ru.ts +10 -0
- package/node_modules/zod/src/v4/locales/sk.ts +121 -0
- package/node_modules/zod/src/v4/locales/sl.ts +3 -0
- package/node_modules/zod/src/v4/locales/sv.ts +5 -2
- package/node_modules/zod/src/v4/locales/ta.ts +3 -0
- package/node_modules/zod/src/v4/locales/th.ts +3 -0
- package/node_modules/zod/src/v4/locales/tk.ts +111 -0
- package/node_modules/zod/src/v4/locales/tr.ts +3 -0
- package/node_modules/zod/src/v4/locales/uk.ts +3 -0
- package/node_modules/zod/src/v4/locales/ur.ts +3 -0
- package/node_modules/zod/src/v4/locales/uz.ts +1 -0
- package/node_modules/zod/src/v4/locales/vi.ts +3 -0
- package/node_modules/zod/src/v4/locales/yo.ts +3 -0
- package/node_modules/zod/src/v4/locales/zh-CN.ts +3 -0
- package/node_modules/zod/src/v4/locales/zh-TW.ts +3 -0
- package/node_modules/zod/src/v4/mini/checks.ts +1 -0
- package/node_modules/zod/src/v4/mini/deep-partial.ts +73 -0
- package/node_modules/zod/src/v4/mini/external.ts +10 -1
- package/node_modules/zod/src/v4/mini/in-out.ts +45 -0
- package/node_modules/zod/src/v4/mini/parse.ts +2 -0
- package/node_modules/zod/src/v4/mini/schemas.ts +135 -56
- package/node_modules/zod/src/v4/mini/tests/apply.test.ts +33 -0
- package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +62 -1
- package/node_modules/zod/src/v4/mini/tests/checks.test.ts +14 -0
- package/node_modules/zod/src/v4/mini/tests/codec.test.ts +35 -1
- package/node_modules/zod/src/v4/mini/tests/cyclic-data.test.ts +84 -0
- package/node_modules/zod/src/v4/mini/tests/deep-partial.test.ts +54 -0
- package/node_modules/zod/src/v4/mini/tests/error.test.ts +23 -4
- package/node_modules/zod/src/v4/mini/tests/functions.test.ts +9 -0
- package/node_modules/zod/src/v4/mini/tests/index.test.ts +72 -5
- package/node_modules/zod/src/v4/mini/tests/number.test.ts +14 -0
- package/node_modules/zod/src/v4/mini/tests/object.test.ts +65 -0
- package/node_modules/zod/src/v4/mini/tests/string.test.ts +21 -0
- package/node_modules/zod/v3/ZodError.cjs +22 -12
- package/node_modules/zod/v3/ZodError.d.cts +1 -1
- package/node_modules/zod/v3/ZodError.d.ts +1 -1
- package/node_modules/zod/v3/ZodError.js +22 -12
- package/node_modules/zod/v3/types.cjs +7 -5
- package/node_modules/zod/v3/types.js +7 -5
- package/node_modules/zod/v4/classic/checks.cjs +2 -1
- package/node_modules/zod/v4/classic/checks.d.cts +1 -1
- package/node_modules/zod/v4/classic/checks.d.ts +1 -1
- package/node_modules/zod/v4/classic/checks.js +1 -1
- package/node_modules/zod/v4/classic/compat.d.cts +9 -11
- package/node_modules/zod/v4/classic/compat.d.ts +9 -11
- package/node_modules/zod/v4/classic/deep-partial.cjs +39 -0
- package/node_modules/zod/v4/classic/deep-partial.d.cts +14 -0
- package/node_modules/zod/v4/classic/deep-partial.d.ts +14 -0
- package/node_modules/zod/v4/classic/deep-partial.js +13 -0
- package/node_modules/zod/v4/classic/errors.cjs +43 -34
- package/node_modules/zod/v4/classic/errors.d.cts +3 -4
- package/node_modules/zod/v4/classic/errors.d.ts +3 -4
- package/node_modules/zod/v4/classic/errors.js +43 -34
- package/node_modules/zod/v4/classic/external.cjs +30 -27
- package/node_modules/zod/v4/classic/external.d.cts +5 -2
- package/node_modules/zod/v4/classic/external.d.ts +5 -2
- package/node_modules/zod/v4/classic/external.js +5 -8
- package/node_modules/zod/v4/classic/from-json-schema.cjs +136 -75
- package/node_modules/zod/v4/classic/from-json-schema.js +136 -75
- package/node_modules/zod/v4/classic/in-out.cjs +63 -0
- package/node_modules/zod/v4/classic/in-out.d.cts +8 -0
- package/node_modules/zod/v4/classic/in-out.d.ts +8 -0
- package/node_modules/zod/v4/classic/in-out.js +36 -0
- package/node_modules/zod/v4/classic/index.cjs +2 -2
- package/node_modules/zod/v4/classic/index.d.cts +1 -2
- package/node_modules/zod/v4/classic/index.d.ts +1 -2
- package/node_modules/zod/v4/classic/index.js +2 -2
- package/node_modules/zod/v4/classic/iso.cjs +11 -22
- package/node_modules/zod/v4/classic/iso.d.cts +2 -17
- package/node_modules/zod/v4/classic/iso.d.ts +2 -17
- package/node_modules/zod/v4/classic/iso.js +2 -17
- package/node_modules/zod/v4/classic/parse.cjs +4 -1
- package/node_modules/zod/v4/classic/parse.d.cts +17 -4
- package/node_modules/zod/v4/classic/parse.d.ts +17 -4
- package/node_modules/zod/v4/classic/parse.js +1 -0
- package/node_modules/zod/v4/classic/schemas.cjs +498 -398
- package/node_modules/zod/v4/classic/schemas.d.cts +53 -18
- package/node_modules/zod/v4/classic/schemas.d.ts +53 -18
- package/node_modules/zod/v4/classic/schemas.js +492 -396
- package/node_modules/zod/v4/core/api.cjs +23 -4
- package/node_modules/zod/v4/core/api.d.cts +13 -9
- package/node_modules/zod/v4/core/api.d.ts +13 -9
- package/node_modules/zod/v4/core/api.js +21 -4
- package/node_modules/zod/v4/core/checks.cjs +37 -31
- package/node_modules/zod/v4/core/checks.d.cts +13 -13
- package/node_modules/zod/v4/core/checks.d.ts +13 -13
- package/node_modules/zod/v4/core/checks.js +37 -31
- package/node_modules/zod/v4/core/compile.cjs +1813 -0
- package/node_modules/zod/v4/core/compile.d.cts +51 -0
- package/node_modules/zod/v4/core/compile.d.ts +51 -0
- package/node_modules/zod/v4/core/compile.js +1783 -0
- package/node_modules/zod/v4/core/core.cjs +81 -18
- package/node_modules/zod/v4/core/core.d.cts +16 -4
- package/node_modules/zod/v4/core/core.d.ts +16 -4
- package/node_modules/zod/v4/core/core.js +82 -19
- package/node_modules/zod/v4/core/doc.cjs +5 -7
- package/node_modules/zod/v4/core/doc.d.cts +3 -1
- package/node_modules/zod/v4/core/doc.d.ts +3 -1
- package/node_modules/zod/v4/core/doc.js +5 -7
- package/node_modules/zod/v4/core/errors.cjs +110 -25
- package/node_modules/zod/v4/core/errors.d.cts +4 -0
- package/node_modules/zod/v4/core/errors.d.ts +4 -0
- package/node_modules/zod/v4/core/errors.js +110 -25
- package/node_modules/zod/v4/core/index.cjs +5 -1
- package/node_modules/zod/v4/core/index.d.cts +3 -0
- package/node_modules/zod/v4/core/index.d.ts +3 -0
- package/node_modules/zod/v4/core/index.js +3 -0
- package/node_modules/zod/v4/core/json-schema-generator.cjs +4 -0
- package/node_modules/zod/v4/core/json-schema-generator.d.cts +2 -2
- package/node_modules/zod/v4/core/json-schema-generator.d.ts +2 -2
- package/node_modules/zod/v4/core/json-schema-generator.js +4 -0
- package/node_modules/zod/v4/core/json-schema-processors.cjs +264 -95
- package/node_modules/zod/v4/core/json-schema-processors.js +243 -97
- package/node_modules/zod/v4/core/json-schema.d.cts +2 -1
- package/node_modules/zod/v4/core/json-schema.d.ts +2 -1
- package/node_modules/zod/v4/core/memoizer.cjs +272 -0
- package/node_modules/zod/v4/core/memoizer.d.cts +15 -0
- package/node_modules/zod/v4/core/memoizer.d.ts +15 -0
- package/node_modules/zod/v4/core/memoizer.js +265 -0
- package/node_modules/zod/v4/core/parse.cjs +96 -34
- package/node_modules/zod/v4/core/parse.d.cts +14 -11
- package/node_modules/zod/v4/core/parse.d.ts +14 -11
- package/node_modules/zod/v4/core/parse.js +94 -33
- package/node_modules/zod/v4/core/regexes.cjs +27 -15
- package/node_modules/zod/v4/core/regexes.d.cts +2 -0
- package/node_modules/zod/v4/core/regexes.d.ts +2 -0
- package/node_modules/zod/v4/core/regexes.js +24 -13
- package/node_modules/zod/v4/core/registries.js +2 -2
- package/node_modules/zod/v4/core/schemas.cjs +537 -326
- package/node_modules/zod/v4/core/schemas.d.cts +100 -31
- package/node_modules/zod/v4/core/schemas.d.ts +100 -31
- package/node_modules/zod/v4/core/schemas.js +526 -325
- package/node_modules/zod/v4/core/to-json-schema.cjs +242 -39
- package/node_modules/zod/v4/core/to-json-schema.d.cts +42 -3
- package/node_modules/zod/v4/core/to-json-schema.d.ts +42 -3
- package/node_modules/zod/v4/core/to-json-schema.js +241 -39
- package/node_modules/zod/v4/core/util.cjs +212 -31
- package/node_modules/zod/v4/core/util.d.cts +58 -1
- package/node_modules/zod/v4/core/util.d.ts +58 -1
- package/node_modules/zod/v4/core/util.js +202 -30
- package/node_modules/zod/v4/core/versions.cjs +2 -2
- package/node_modules/zod/v4/core/versions.d.cts +1 -1
- package/node_modules/zod/v4/core/versions.d.ts +1 -1
- package/node_modules/zod/v4/core/versions.js +2 -2
- package/node_modules/zod/v4/core/visit.cjs +195 -0
- package/node_modules/zod/v4/core/visit.d.cts +30 -0
- package/node_modules/zod/v4/core/visit.d.ts +30 -0
- package/node_modules/zod/v4/core/visit.js +169 -0
- package/node_modules/zod/v4/index.cjs +15 -5
- package/node_modules/zod/v4/index.d.cts +2 -2
- package/node_modules/zod/v4/index.d.ts +2 -2
- package/node_modules/zod/v4/index.js +3 -2
- package/node_modules/zod/v4/locales/ar.cjs +3 -0
- package/node_modules/zod/v4/locales/ar.js +3 -0
- package/node_modules/zod/v4/locales/az.cjs +3 -0
- package/node_modules/zod/v4/locales/az.js +3 -0
- package/node_modules/zod/v4/locales/be.cjs +10 -0
- package/node_modules/zod/v4/locales/be.js +10 -0
- package/node_modules/zod/v4/locales/bg.cjs +3 -0
- package/node_modules/zod/v4/locales/bg.js +3 -0
- package/node_modules/zod/v4/locales/bn.cjs +138 -0
- package/node_modules/zod/v4/locales/bn.d.cts +5 -0
- package/node_modules/zod/v4/locales/bn.d.ts +4 -0
- package/node_modules/zod/v4/locales/bn.js +111 -0
- package/node_modules/zod/v4/locales/ca.cjs +3 -0
- package/node_modules/zod/v4/locales/ca.js +3 -0
- package/node_modules/zod/v4/locales/ckb.cjs +158 -0
- package/node_modules/zod/v4/locales/ckb.d.cts +5 -0
- package/node_modules/zod/v4/locales/ckb.d.ts +4 -0
- package/node_modules/zod/v4/locales/ckb.js +131 -0
- package/node_modules/zod/v4/locales/cs.cjs +3 -0
- package/node_modules/zod/v4/locales/cs.js +3 -0
- package/node_modules/zod/v4/locales/da.cjs +5 -2
- package/node_modules/zod/v4/locales/da.js +5 -2
- package/node_modules/zod/v4/locales/de.cjs +3 -0
- package/node_modules/zod/v4/locales/de.js +3 -0
- package/node_modules/zod/v4/locales/el.cjs +1 -0
- package/node_modules/zod/v4/locales/el.js +1 -0
- package/node_modules/zod/v4/locales/en.cjs +14 -4
- package/node_modules/zod/v4/locales/en.js +14 -4
- package/node_modules/zod/v4/locales/eo.cjs +3 -0
- package/node_modules/zod/v4/locales/eo.js +3 -0
- package/node_modules/zod/v4/locales/es.cjs +2 -0
- package/node_modules/zod/v4/locales/es.js +2 -0
- package/node_modules/zod/v4/locales/fa.cjs +3 -0
- package/node_modules/zod/v4/locales/fa.js +3 -0
- package/node_modules/zod/v4/locales/fi.cjs +3 -0
- package/node_modules/zod/v4/locales/fi.js +3 -0
- package/node_modules/zod/v4/locales/fr-CA.cjs +3 -0
- package/node_modules/zod/v4/locales/fr-CA.js +3 -0
- package/node_modules/zod/v4/locales/fr.cjs +16 -14
- package/node_modules/zod/v4/locales/fr.js +16 -14
- package/node_modules/zod/v4/locales/gu.cjs +138 -0
- package/node_modules/zod/v4/locales/gu.d.cts +5 -0
- package/node_modules/zod/v4/locales/gu.d.ts +4 -0
- package/node_modules/zod/v4/locales/gu.js +111 -0
- package/node_modules/zod/v4/locales/he.cjs +5 -0
- package/node_modules/zod/v4/locales/he.js +5 -0
- package/node_modules/zod/v4/locales/hi.cjs +136 -0
- package/node_modules/zod/v4/locales/hi.d.cts +5 -0
- package/node_modules/zod/v4/locales/hi.d.ts +4 -0
- package/node_modules/zod/v4/locales/hi.js +109 -0
- package/node_modules/zod/v4/locales/hr.cjs +2 -0
- package/node_modules/zod/v4/locales/hr.js +2 -0
- package/node_modules/zod/v4/locales/hu.cjs +3 -0
- package/node_modules/zod/v4/locales/hu.js +3 -0
- package/node_modules/zod/v4/locales/hy.cjs +9 -0
- package/node_modules/zod/v4/locales/hy.js +9 -0
- package/node_modules/zod/v4/locales/id.cjs +3 -0
- package/node_modules/zod/v4/locales/id.js +3 -0
- package/node_modules/zod/v4/locales/index.cjs +22 -2
- package/node_modules/zod/v4/locales/index.d.cts +10 -0
- package/node_modules/zod/v4/locales/index.d.ts +10 -0
- package/node_modules/zod/v4/locales/index.js +10 -0
- package/node_modules/zod/v4/locales/is.cjs +3 -0
- package/node_modules/zod/v4/locales/is.js +3 -0
- package/node_modules/zod/v4/locales/it.cjs +3 -0
- package/node_modules/zod/v4/locales/it.js +3 -0
- package/node_modules/zod/v4/locales/ja.cjs +3 -0
- package/node_modules/zod/v4/locales/ja.js +3 -0
- package/node_modules/zod/v4/locales/ka.cjs +3 -0
- package/node_modules/zod/v4/locales/ka.js +3 -0
- package/node_modules/zod/v4/locales/km.cjs +3 -0
- package/node_modules/zod/v4/locales/km.js +3 -0
- package/node_modules/zod/v4/locales/kn.cjs +141 -0
- package/node_modules/zod/v4/locales/kn.d.cts +5 -0
- package/node_modules/zod/v4/locales/kn.d.ts +4 -0
- package/node_modules/zod/v4/locales/kn.js +114 -0
- package/node_modules/zod/v4/locales/ko.cjs +3 -0
- package/node_modules/zod/v4/locales/ko.js +3 -0
- package/node_modules/zod/v4/locales/lt.cjs +2 -0
- package/node_modules/zod/v4/locales/lt.js +2 -0
- package/node_modules/zod/v4/locales/mk.cjs +3 -0
- package/node_modules/zod/v4/locales/mk.js +3 -0
- package/node_modules/zod/v4/locales/ms.cjs +3 -0
- package/node_modules/zod/v4/locales/ms.js +3 -0
- package/node_modules/zod/v4/locales/ne.cjs +136 -0
- package/node_modules/zod/v4/locales/ne.d.cts +5 -0
- package/node_modules/zod/v4/locales/ne.d.ts +4 -0
- package/node_modules/zod/v4/locales/ne.js +109 -0
- package/node_modules/zod/v4/locales/nl.cjs +3 -0
- package/node_modules/zod/v4/locales/nl.js +3 -0
- package/node_modules/zod/v4/locales/nn.cjs +138 -0
- package/node_modules/zod/v4/locales/nn.d.cts +5 -0
- package/node_modules/zod/v4/locales/nn.d.ts +4 -0
- package/node_modules/zod/v4/locales/nn.js +111 -0
- package/node_modules/zod/v4/locales/no.cjs +5 -2
- package/node_modules/zod/v4/locales/no.js +5 -2
- package/node_modules/zod/v4/locales/ota.cjs +3 -0
- package/node_modules/zod/v4/locales/ota.js +3 -0
- package/node_modules/zod/v4/locales/pl.cjs +3 -0
- package/node_modules/zod/v4/locales/pl.js +3 -0
- package/node_modules/zod/v4/locales/ps.cjs +3 -0
- package/node_modules/zod/v4/locales/ps.js +3 -0
- package/node_modules/zod/v4/locales/pt-BR.cjs +168 -0
- package/node_modules/zod/v4/locales/pt-BR.d.cts +5 -0
- package/node_modules/zod/v4/locales/pt-BR.d.ts +4 -0
- package/node_modules/zod/v4/locales/pt-BR.js +141 -0
- package/node_modules/zod/v4/locales/pt.cjs +87 -55
- package/node_modules/zod/v4/locales/pt.js +87 -55
- package/node_modules/zod/v4/locales/ro.cjs +1 -0
- package/node_modules/zod/v4/locales/ro.js +1 -0
- package/node_modules/zod/v4/locales/ru.cjs +10 -0
- package/node_modules/zod/v4/locales/ru.js +10 -0
- package/node_modules/zod/v4/locales/sk.cjs +141 -0
- package/node_modules/zod/v4/locales/sk.d.cts +5 -0
- package/node_modules/zod/v4/locales/sk.d.ts +4 -0
- package/node_modules/zod/v4/locales/sk.js +114 -0
- package/node_modules/zod/v4/locales/sl.cjs +3 -0
- package/node_modules/zod/v4/locales/sl.js +3 -0
- package/node_modules/zod/v4/locales/sv.cjs +5 -2
- package/node_modules/zod/v4/locales/sv.js +5 -2
- package/node_modules/zod/v4/locales/ta.cjs +3 -0
- package/node_modules/zod/v4/locales/ta.js +3 -0
- package/node_modules/zod/v4/locales/th.cjs +3 -0
- package/node_modules/zod/v4/locales/th.js +3 -0
- package/node_modules/zod/v4/locales/tk.cjs +132 -0
- package/node_modules/zod/v4/locales/tk.d.cts +5 -0
- package/node_modules/zod/v4/locales/tk.d.ts +4 -0
- package/node_modules/zod/v4/locales/tk.js +105 -0
- package/node_modules/zod/v4/locales/tr.cjs +3 -0
- package/node_modules/zod/v4/locales/tr.js +3 -0
- package/node_modules/zod/v4/locales/uk.cjs +3 -0
- package/node_modules/zod/v4/locales/uk.js +3 -0
- package/node_modules/zod/v4/locales/ur.cjs +3 -0
- package/node_modules/zod/v4/locales/ur.js +3 -0
- package/node_modules/zod/v4/locales/uz.cjs +1 -0
- package/node_modules/zod/v4/locales/uz.js +1 -0
- package/node_modules/zod/v4/locales/vi.cjs +3 -0
- package/node_modules/zod/v4/locales/vi.js +3 -0
- package/node_modules/zod/v4/locales/yo.cjs +3 -0
- package/node_modules/zod/v4/locales/yo.js +3 -0
- package/node_modules/zod/v4/locales/zh-CN.cjs +3 -0
- package/node_modules/zod/v4/locales/zh-CN.js +3 -0
- package/node_modules/zod/v4/locales/zh-TW.cjs +3 -0
- package/node_modules/zod/v4/locales/zh-TW.js +3 -0
- package/node_modules/zod/v4/mini/checks.cjs +2 -1
- package/node_modules/zod/v4/mini/checks.d.cts +1 -1
- package/node_modules/zod/v4/mini/checks.d.ts +1 -1
- package/node_modules/zod/v4/mini/checks.js +1 -1
- package/node_modules/zod/v4/mini/deep-partial.cjs +39 -0
- package/node_modules/zod/v4/mini/deep-partial.d.cts +14 -0
- package/node_modules/zod/v4/mini/deep-partial.d.ts +14 -0
- package/node_modules/zod/v4/mini/deep-partial.js +13 -0
- package/node_modules/zod/v4/mini/external.cjs +12 -1
- package/node_modules/zod/v4/mini/external.d.cts +5 -2
- package/node_modules/zod/v4/mini/external.d.ts +5 -2
- package/node_modules/zod/v4/mini/external.js +3 -1
- package/node_modules/zod/v4/mini/in-out.cjs +63 -0
- package/node_modules/zod/v4/mini/in-out.d.cts +8 -0
- package/node_modules/zod/v4/mini/in-out.d.ts +8 -0
- package/node_modules/zod/v4/mini/in-out.js +36 -0
- package/node_modules/zod/v4/mini/parse.cjs +3 -1
- package/node_modules/zod/v4/mini/parse.d.cts +1 -1
- package/node_modules/zod/v4/mini/parse.d.ts +1 -1
- package/node_modules/zod/v4/mini/parse.js +1 -1
- package/node_modules/zod/v4/mini/schemas.cjs +75 -47
- package/node_modules/zod/v4/mini/schemas.d.cts +43 -13
- package/node_modules/zod/v4/mini/schemas.d.ts +43 -13
- package/node_modules/zod/v4/mini/schemas.js +71 -45
- package/openclaw.plugin.json +222 -45
- package/package.json +12 -10
- package/dist/direct-room-RinHjtqX.js +0 -71
- package/dist/probe.runtime-DWdw74_H.js +0 -2
- package/dist/runtime-6S3DNFNv.js +0 -8
- package/dist/types-DzSc7Sqm.js +0 -32
- package/node_modules/markdown-it/node_modules/entities/dist/internal/encode-shared.d.ts +0 -33
- package/node_modules/markdown-it/node_modules/entities/dist/internal/encode-shared.d.ts.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/dist/internal/encode-shared.js +0 -93
- package/node_modules/markdown-it/node_modules/entities/dist/internal/encode-shared.js.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/src/internal/encode-shared.ts +0 -123
- package/node_modules/zod/src/v4/core/config.ts +0 -15
- /package/dist/{account-config-CRsKoMqJ.js → .setup/account-config-CRsKoMqJ.mjs} +0 -0
- /package/dist/{backup-health-Dm_YMVFT.js → .setup/backup-health-Dm_YMVFT.mjs} +0 -0
- /package/dist/{config-paths-CnREYb1Y.js → .setup/config-paths-CnREYb1Y.mjs} +0 -0
- /package/dist/{config-secret-input.runtime-CwsP3--c.js → .setup/config-secret-input.runtime-CwsP3--c.mjs} +0 -0
- /package/dist/{credentials-state-B3cuUFwZ.js → .setup/credentials-state-B3cuUFwZ.mjs} +0 -0
- /package/dist/{crypto-node.runtime-6Aj_ltHQ.js → .setup/crypto-node.runtime-6Aj_ltHQ.mjs} +0 -0
- /package/dist/{deps-mtxF2mHI.js → .setup/deps-mtxF2mHI.mjs} +0 -0
- /package/dist/{doctor-contract-HyWFZQVG.js → .setup/doctor-contract-HyWFZQVG.mjs} +0 -0
- /package/dist/{env-vars-dGqak9dN.js → .setup/env-vars-dGqak9dN.mjs} +0 -0
- /package/dist/{errors-DKVS3_DO.js → .setup/errors-DKVS3_DO.mjs} +0 -0
- /package/dist/{event-helpers-CspuhE9k.js → .setup/event-helpers-CspuhE9k.mjs} +0 -0
- /package/dist/{idb-persistence-lock-B3fZXyF_.js → .setup/idb-persistence-lock-B3fZXyF_.mjs} +0 -0
- /package/dist/{rolldown-runtime-8H4AJuhK.js → .setup/rolldown-runtime-8H4AJuhK.mjs} +0 -0
- /package/dist/{storage-paths-DVCANXTc.js → .setup/storage-paths-DVCANXTc.mjs} +0 -0
- /package/dist/{target-ids-Nwx7cMVE.js → .setup/target-ids-Nwx7cMVE.mjs} +0 -0
- /package/dist/{thread-bindings-shared-oNPiyMWY.js → .setup/thread-bindings-shared-oNPiyMWY.mjs} +0 -0
- /package/dist/{url-validation-GRHde6lq.js → .setup/url-validation-GRHde6lq.mjs} +0 -0
|
@@ -1,31 +1,34 @@
|
|
|
1
|
-
import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.
|
|
2
|
-
import { t as getMatrixRuntime } from "./runtime-
|
|
3
|
-
import { D as
|
|
4
|
-
import { t as claimCurrentTokenStorageState } from "./storage-
|
|
5
|
-
import "./
|
|
6
|
-
import { i as parseMxc, r as matrixEventToRaw } from "./event-helpers-CspuhE9k.
|
|
7
|
-
import { i as openMatrixSyncCacheStoreOptions, l as writeMatrixSyncCacheStateToSyncStore, n as deleteMatrixSyncCacheStateFromSyncStore, o as readPersistedStoreFromSyncStore } from "./sync-cache-state-
|
|
8
|
-
import { n as isMatrixNotFoundError, t as formatMatrixErrorReason } from "./errors-DKVS3_DO.
|
|
9
|
-
import { a as
|
|
10
|
-
import { n as
|
|
11
|
-
import { n as
|
|
12
|
-
import { n as
|
|
13
|
-
import { t as createMatrixJsSdkClientLogger } from "./logging-
|
|
14
|
-
import { t as MATRIX_IDB_PERSIST_INTERVAL_MS } from "./idb-persistence-lock-B3fZXyF_.
|
|
15
|
-
import { a as isMatrixAccessTokenInvalidatedError, c as resolveMatrixLocalTimeoutMs, f as isMatrixReadySyncState, i as createMatrixExplicitBootstrapOptions, l as unresolvedMatrixDeviceVerificationStatus, n as MATRIX_INITIAL_CRYPTO_BOOTSTRAP_OPTIONS, o as resolveMatrixDiagnostic, p as isMatrixTerminalSyncState, r as MATRIX_STATUS_DIAGNOSTIC_TIMEOUT_MS, s as resolveMatrixDiagnosticResult, t as MATRIX_AUTOMATIC_REPAIR_BOOTSTRAP_OPTIONS, u as unresolvedMatrixRoomKeyBackupStatus } from "./client-support-
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.mjs";
|
|
2
|
+
import { t as getMatrixRuntime } from "./runtime-1kn1P6io.mjs";
|
|
3
|
+
import { D as writeMatrixRecoveryKeyStateForPathAsync, S as readMatrixRecoveryKeyStateForPathAsync, f as migrateLegacyMatrixRecoveryKeyFilePathToStoreAsync, v as readLegacyMatrixRecoveryKeyFile } from "./storage-metadata-BQJjHC_i.mjs";
|
|
4
|
+
import { t as claimCurrentTokenStorageState } from "./storage-DJ-oUgmX.mjs";
|
|
5
|
+
import { r as withoutMatrixSendCurrentness, t as captureMatrixSendCurrentness } from "./send-currentness-BrGXL7b8.mjs";
|
|
6
|
+
import { i as parseMxc, r as matrixEventToRaw } from "./event-helpers-CspuhE9k.mjs";
|
|
7
|
+
import { i as openMatrixSyncCacheStoreOptions, l as writeMatrixSyncCacheStateToSyncStore, n as deleteMatrixSyncCacheStateFromSyncStore, o as readPersistedStoreFromSyncStore } from "./sync-cache-state-CFiZIPhA.mjs";
|
|
8
|
+
import { n as isMatrixNotFoundError, t as formatMatrixErrorReason } from "./errors-DKVS3_DO.mjs";
|
|
9
|
+
import { a as createMatrixStartupAbortError, i as awaitMatrixStartupWithAbort, s as throwIfMatrixStartupAborted } from "./client-DsJUnWlV.mjs";
|
|
10
|
+
import { n as createMatrixGuardedFetch, t as MatrixAuthedHttpClient } from "./http-client-BJjo-iw5.mjs";
|
|
11
|
+
import { n as resolveMatrixRoomKeyBackupReadinessError } from "./backup-health-Dm_YMVFT.mjs";
|
|
12
|
+
import { n as LogService, r as noop, t as ConsoleLogger } from "./logger-xBjiRIp1.mjs";
|
|
13
|
+
import { t as createMatrixJsSdkClientLogger } from "./logging-rgm8ep9H.mjs";
|
|
14
|
+
import { t as MATRIX_IDB_PERSIST_INTERVAL_MS } from "./idb-persistence-lock-B3fZXyF_.mjs";
|
|
15
|
+
import { a as isMatrixAccessTokenInvalidatedError, c as resolveMatrixLocalTimeoutMs, f as isMatrixReadySyncState, i as createMatrixExplicitBootstrapOptions, l as unresolvedMatrixDeviceVerificationStatus, n as MATRIX_INITIAL_CRYPTO_BOOTSTRAP_OPTIONS, o as resolveMatrixDiagnostic, p as isMatrixTerminalSyncState, r as MATRIX_STATUS_DIAGNOSTIC_TIMEOUT_MS, s as resolveMatrixDiagnosticResult, t as MATRIX_AUTOMATIC_REPAIR_BOOTSTRAP_OPTIONS, u as unresolvedMatrixRoomKeyBackupStatus } from "./client-support-Bn9Bk0-H.mjs";
|
|
16
16
|
import { createRequire } from "node:module";
|
|
17
17
|
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
18
18
|
import { normalizeNullableString, normalizeStringEntries, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
19
19
|
import { createHash } from "node:crypto";
|
|
20
20
|
import path from "node:path";
|
|
21
21
|
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
|
22
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
22
23
|
import { KeyedAsyncQueue } from "openclaw/plugin-sdk/keyed-async-queue";
|
|
24
|
+
import { captureChannelReadAuthority } from "openclaw/plugin-sdk/fetch-runtime";
|
|
23
25
|
import { EventEmitter } from "node:events";
|
|
24
26
|
import { ClientEvent, EventType, Filter, MatrixError, MatrixEventEvent, MemoryStore, MsgType, Preset, SyncAccumulator, createClient } from "matrix-js-sdk/lib/matrix.js";
|
|
25
27
|
import { RoomEvent } from "matrix-js-sdk/lib/models/room.js";
|
|
26
28
|
import { VerificationMethod } from "matrix-js-sdk/lib/types.js";
|
|
27
29
|
import { SyncApi, SyncState } from "matrix-js-sdk/lib/sync.js";
|
|
28
30
|
import { decodeRecoveryKey } from "matrix-js-sdk/lib/crypto-api/recovery-key.js";
|
|
31
|
+
import { MatrixScheduler } from "matrix-js-sdk/lib/scheduler.js";
|
|
29
32
|
import { EventStatus } from "matrix-js-sdk/lib/models/event-status.js";
|
|
30
33
|
//#region extensions/matrix/src/matrix/sdk/client-device-info.ts
|
|
31
34
|
async function resolveMatrixCrossSigningPublicationStatus(params) {
|
|
@@ -326,7 +329,7 @@ var SqliteBackedMatrixSyncStore = class extends MemoryStore {
|
|
|
326
329
|
payload,
|
|
327
330
|
store: this.store
|
|
328
331
|
});
|
|
329
|
-
claimCurrentTokenStorageState({ rootDir: this.storageRootDir });
|
|
332
|
+
await claimCurrentTokenStorageState({ rootDir: this.storageRootDir });
|
|
330
333
|
});
|
|
331
334
|
} catch (err) {
|
|
332
335
|
this.dirty = true;
|
|
@@ -359,7 +362,7 @@ function openMatrixSyncCacheStore(storageRootDir) {
|
|
|
359
362
|
//#endregion
|
|
360
363
|
//#region extensions/matrix/src/matrix/sdk/client-sync-quiesce.ts
|
|
361
364
|
const MATRIX_SYNC_QUIESCE_TIMEOUT_MS = 5e3;
|
|
362
|
-
const MATRIX_JS_SDK_SYNC_VERSION = "42.
|
|
365
|
+
const MATRIX_JS_SDK_SYNC_VERSION = "42.3.0";
|
|
363
366
|
const matrixJsSdkPackage = createRequire(import.meta.url)("matrix-js-sdk/package.json");
|
|
364
367
|
function requireMatrixClassicSyncInternals(syncApi) {
|
|
365
368
|
return syncApi;
|
|
@@ -426,6 +429,124 @@ async function quiesceMatrixClientSync(params) {
|
|
|
426
429
|
});
|
|
427
430
|
}
|
|
428
431
|
//#endregion
|
|
432
|
+
//#region extensions/matrix/src/matrix/sdk/client-sync-ready.ts
|
|
433
|
+
async function waitForMatrixInitialSyncReady(params) {
|
|
434
|
+
const timeoutMs = params.timeoutMs ?? 3e4;
|
|
435
|
+
if (isMatrixReadySyncState(params.state)) return;
|
|
436
|
+
if (isMatrixAccessTokenInvalidatedError(params.error)) throw params.error instanceof Error ? params.error : new Error("Matrix access token invalidated", { cause: params.error });
|
|
437
|
+
if (isMatrixTerminalSyncState(params.state)) throw new Error(`Matrix sync entered ${params.state} during startup`);
|
|
438
|
+
await new Promise((resolve, reject) => {
|
|
439
|
+
let settled = false;
|
|
440
|
+
let timeoutId;
|
|
441
|
+
const abortSignal = params.abortSignal;
|
|
442
|
+
const cleanup = () => {
|
|
443
|
+
params.emitter.off("sync.state", onSyncState);
|
|
444
|
+
params.emitter.off("sync.unexpected_error", onUnexpectedError);
|
|
445
|
+
abortSignal?.removeEventListener("abort", onAbort);
|
|
446
|
+
if (timeoutId) {
|
|
447
|
+
clearTimeout(timeoutId);
|
|
448
|
+
timeoutId = void 0;
|
|
449
|
+
}
|
|
450
|
+
};
|
|
451
|
+
const settleResolve = () => {
|
|
452
|
+
if (settled) return;
|
|
453
|
+
settled = true;
|
|
454
|
+
cleanup();
|
|
455
|
+
resolve();
|
|
456
|
+
};
|
|
457
|
+
const settleReject = (error) => {
|
|
458
|
+
if (settled) return;
|
|
459
|
+
settled = true;
|
|
460
|
+
cleanup();
|
|
461
|
+
reject(error);
|
|
462
|
+
};
|
|
463
|
+
const onSyncState = (state, _prevState, error) => {
|
|
464
|
+
if (isMatrixReadySyncState(state)) {
|
|
465
|
+
settleResolve();
|
|
466
|
+
return;
|
|
467
|
+
}
|
|
468
|
+
if (isMatrixAccessTokenInvalidatedError(error)) {
|
|
469
|
+
settleReject(error instanceof Error ? error : /* @__PURE__ */ new Error("Matrix access token invalidated"));
|
|
470
|
+
return;
|
|
471
|
+
}
|
|
472
|
+
if (isMatrixTerminalSyncState(state)) settleReject(new Error(error instanceof Error && error.message ? error.message : `Matrix sync entered ${state} during startup`));
|
|
473
|
+
};
|
|
474
|
+
const onUnexpectedError = (error) => {
|
|
475
|
+
settleReject(error);
|
|
476
|
+
};
|
|
477
|
+
const onAbort = () => {
|
|
478
|
+
settleReject(createMatrixStartupAbortError());
|
|
479
|
+
};
|
|
480
|
+
params.emitter.on("sync.state", onSyncState);
|
|
481
|
+
params.emitter.on("sync.unexpected_error", onUnexpectedError);
|
|
482
|
+
if (abortSignal?.aborted) {
|
|
483
|
+
onAbort();
|
|
484
|
+
return;
|
|
485
|
+
}
|
|
486
|
+
abortSignal?.addEventListener("abort", onAbort, { once: true });
|
|
487
|
+
timeoutId = setTimeout(() => {
|
|
488
|
+
settleReject(/* @__PURE__ */ new Error(`Matrix client did not reach a ready sync state within ${timeoutMs}ms`));
|
|
489
|
+
}, timeoutMs);
|
|
490
|
+
timeoutId.unref?.();
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
//#endregion
|
|
494
|
+
//#region extensions/matrix/src/matrix/sdk/message-wire-dispatch.ts
|
|
495
|
+
function resolveMessageWireDispatch(resource, init) {
|
|
496
|
+
if ((init?.method ?? (resource instanceof Request ? resource.method : "GET")).toUpperCase() !== "PUT") return null;
|
|
497
|
+
const rawUrl = typeof resource === "string" ? resource : resource instanceof URL ? resource.href : resource.url;
|
|
498
|
+
const segments = new URL(rawUrl).pathname.split("/").filter(Boolean);
|
|
499
|
+
const roomsIndex = segments.lastIndexOf("rooms");
|
|
500
|
+
if (roomsIndex < 0 || segments[roomsIndex + 2] !== "send" || segments.length !== roomsIndex + 5) return null;
|
|
501
|
+
const eventType = decodeURIComponent(segments[roomsIndex + 3] ?? "");
|
|
502
|
+
if (eventType !== "m.room.message" && eventType !== "m.room.encrypted") return null;
|
|
503
|
+
return {
|
|
504
|
+
roomId: decodeURIComponent(segments[roomsIndex + 1] ?? ""),
|
|
505
|
+
eventType,
|
|
506
|
+
transactionId: decodeURIComponent(segments[roomsIndex + 4] ?? ""),
|
|
507
|
+
requestPath: new URL(rawUrl).pathname
|
|
508
|
+
};
|
|
509
|
+
}
|
|
510
|
+
var MatrixMessageWireDispatchGuards = class {
|
|
511
|
+
constructor() {
|
|
512
|
+
this.guards = /* @__PURE__ */ new Map();
|
|
513
|
+
}
|
|
514
|
+
captureCurrentness(resource, init, fallback) {
|
|
515
|
+
const dispatch = resolveMessageWireDispatch(resource, init);
|
|
516
|
+
const entry = dispatch ? this.guards.get(dispatch.transactionId) : void 0;
|
|
517
|
+
if (!entry) return fallback;
|
|
518
|
+
const assertCurrent = entry.assertCurrent;
|
|
519
|
+
return assertCurrent ? () => {
|
|
520
|
+
try {
|
|
521
|
+
assertCurrent();
|
|
522
|
+
} catch (error) {
|
|
523
|
+
entry.currentnessRejected = true;
|
|
524
|
+
throw error;
|
|
525
|
+
}
|
|
526
|
+
} : void 0;
|
|
527
|
+
}
|
|
528
|
+
wasCurrentnessRejected(transactionId) {
|
|
529
|
+
return transactionId !== void 0 && this.guards.get(transactionId)?.currentnessRejected === true;
|
|
530
|
+
}
|
|
531
|
+
beforeRequest(resource, init) {
|
|
532
|
+
const dispatch = resolveMessageWireDispatch(resource, init);
|
|
533
|
+
return dispatch ? Promise.resolve(this.guards.get(dispatch.transactionId)?.guard?.(dispatch)) : void 0;
|
|
534
|
+
}
|
|
535
|
+
async run(params) {
|
|
536
|
+
if (!params.transactionId || !params.guard && !params.assertCurrent) return await params.run();
|
|
537
|
+
if (this.guards.has(params.transactionId)) throw new Error(`Matrix transaction ${params.transactionId} already has a dispatch guard`);
|
|
538
|
+
this.guards.set(params.transactionId, {
|
|
539
|
+
guard: params.guard,
|
|
540
|
+
assertCurrent: params.assertCurrent
|
|
541
|
+
});
|
|
542
|
+
try {
|
|
543
|
+
return await params.run();
|
|
544
|
+
} finally {
|
|
545
|
+
this.guards.delete(params.transactionId);
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
};
|
|
549
|
+
//#endregion
|
|
429
550
|
//#region extensions/matrix/src/matrix/sdk/recovery-key-store.ts
|
|
430
551
|
function isRepairableSecretStorageAccessError(err) {
|
|
431
552
|
const message = formatMatrixErrorReason(err);
|
|
@@ -435,63 +556,95 @@ function isRepairableSecretStorageAccessError(err) {
|
|
|
435
556
|
return false;
|
|
436
557
|
}
|
|
437
558
|
var MatrixRecoveryKeyStore = class {
|
|
438
|
-
constructor(recoveryKeyPath) {
|
|
559
|
+
constructor(recoveryKeyPath, stateRuntime) {
|
|
439
560
|
this.secretStorageKeyCache = /* @__PURE__ */ new Map();
|
|
440
561
|
this.stagedRecoveryKey = null;
|
|
441
562
|
this.stagedRecoveryKeyUsed = false;
|
|
442
563
|
this.stagedCacheKeyIds = /* @__PURE__ */ new Set();
|
|
564
|
+
this.pendingPersistence = Promise.resolve();
|
|
565
|
+
this.closed = false;
|
|
443
566
|
this.recoveryKeyPath = recoveryKeyPath;
|
|
444
567
|
this.storageRootDir = recoveryKeyPath ? path.dirname(recoveryKeyPath) : void 0;
|
|
445
|
-
if (
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
this.
|
|
449
|
-
|
|
568
|
+
if (recoveryKeyPath) {
|
|
569
|
+
this.stateRuntime = stateRuntime ?? getMatrixRuntime().state;
|
|
570
|
+
const runtime = this.stateRuntime;
|
|
571
|
+
this.enqueuePersistence(async () => {
|
|
572
|
+
try {
|
|
573
|
+
await migrateLegacyMatrixRecoveryKeyFilePathToStoreAsync(recoveryKeyPath, runtime);
|
|
574
|
+
} catch (err) {
|
|
575
|
+
this.legacyRecoveryKeyPathOnMigrationFailure = recoveryKeyPath;
|
|
576
|
+
LogService.warn("MatrixClientLite", "Failed to migrate Matrix recovery key state:", err);
|
|
577
|
+
}
|
|
578
|
+
});
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
enqueuePersistence(run) {
|
|
582
|
+
if (this.closed) return Promise.reject(/* @__PURE__ */ new Error("Matrix recovery key store is closed"));
|
|
583
|
+
const pending = this.pendingPersistence.then(run);
|
|
584
|
+
this.pendingPersistence = pending.then(() => {}, () => {});
|
|
585
|
+
return pending;
|
|
586
|
+
}
|
|
587
|
+
async afterPersistence(read) {
|
|
588
|
+
for (;;) {
|
|
589
|
+
const pending = this.pendingPersistence;
|
|
590
|
+
await pending;
|
|
591
|
+
if (pending === this.pendingPersistence) return read();
|
|
450
592
|
}
|
|
451
593
|
}
|
|
594
|
+
async drainPendingPersistence() {
|
|
595
|
+
await this.afterPersistence(() => {});
|
|
596
|
+
}
|
|
597
|
+
async close() {
|
|
598
|
+
this.closed = true;
|
|
599
|
+
await this.drainPendingPersistence();
|
|
600
|
+
}
|
|
452
601
|
buildCryptoCallbacks() {
|
|
602
|
+
const getSecretStorageKey = ({ keys }) => this.afterPersistence(async () => {
|
|
603
|
+
if (this.closed) return null;
|
|
604
|
+
const requestedKeyIds = Object.keys(keys ?? {});
|
|
605
|
+
if (requestedKeyIds.length === 0) return null;
|
|
606
|
+
const staged = this.resolveStagedSecretStorageKey(requestedKeyIds);
|
|
607
|
+
if (staged) return staged;
|
|
608
|
+
for (const keyId of requestedKeyIds) {
|
|
609
|
+
const cached = this.secretStorageKeyCache.get(keyId);
|
|
610
|
+
if (cached) return [keyId, new Uint8Array(cached.key)];
|
|
611
|
+
}
|
|
612
|
+
const pending = this.pendingPersistence;
|
|
613
|
+
const stored = await this.loadStoredRecoveryKey();
|
|
614
|
+
if (this.closed) return null;
|
|
615
|
+
if (pending !== this.pendingPersistence) return getSecretStorageKey({ keys });
|
|
616
|
+
if (!stored?.privateKeyBase64) return null;
|
|
617
|
+
const privateKey = new Uint8Array(Buffer.from(stored.privateKeyBase64, "base64"));
|
|
618
|
+
if (privateKey.length === 0) return null;
|
|
619
|
+
if (stored.keyId && requestedKeyIds.includes(stored.keyId)) {
|
|
620
|
+
this.rememberSecretStorageKey(stored.keyId, privateKey, stored.keyInfo);
|
|
621
|
+
return [stored.keyId, privateKey];
|
|
622
|
+
}
|
|
623
|
+
const firstRequestedKeyId = requestedKeyIds[0];
|
|
624
|
+
if (!firstRequestedKeyId) return null;
|
|
625
|
+
this.rememberSecretStorageKey(firstRequestedKeyId, privateKey, stored.keyInfo);
|
|
626
|
+
return [firstRequestedKeyId, privateKey];
|
|
627
|
+
});
|
|
453
628
|
return {
|
|
454
|
-
getSecretStorageKey
|
|
455
|
-
const requestedKeyIds = Object.keys(keys ?? {});
|
|
456
|
-
if (requestedKeyIds.length === 0) return null;
|
|
457
|
-
const staged = this.resolveStagedSecretStorageKey(requestedKeyIds);
|
|
458
|
-
if (staged) return staged;
|
|
459
|
-
for (const keyId of requestedKeyIds) {
|
|
460
|
-
const cached = this.secretStorageKeyCache.get(keyId);
|
|
461
|
-
if (cached) return [keyId, new Uint8Array(cached.key)];
|
|
462
|
-
}
|
|
463
|
-
const stored = this.loadStoredRecoveryKey();
|
|
464
|
-
if (!stored?.privateKeyBase64) return null;
|
|
465
|
-
const privateKey = new Uint8Array(Buffer.from(stored.privateKeyBase64, "base64"));
|
|
466
|
-
if (privateKey.length === 0) return null;
|
|
467
|
-
if (stored.keyId && requestedKeyIds.includes(stored.keyId)) {
|
|
468
|
-
this.rememberSecretStorageKey(stored.keyId, privateKey, stored.keyInfo);
|
|
469
|
-
return [stored.keyId, privateKey];
|
|
470
|
-
}
|
|
471
|
-
const firstRequestedKeyId = requestedKeyIds[0];
|
|
472
|
-
if (!firstRequestedKeyId) return null;
|
|
473
|
-
this.rememberSecretStorageKey(firstRequestedKeyId, privateKey, stored.keyInfo);
|
|
474
|
-
return [firstRequestedKeyId, privateKey];
|
|
475
|
-
},
|
|
629
|
+
getSecretStorageKey,
|
|
476
630
|
cacheSecretStorageKey: (keyId, keyInfo, key) => {
|
|
631
|
+
if (this.closed) return;
|
|
477
632
|
const privateKey = new Uint8Array(key);
|
|
478
633
|
const normalizedKeyInfo = {
|
|
479
634
|
passphrase: keyInfo?.passphrase,
|
|
480
635
|
name: typeof keyInfo?.name === "string" ? keyInfo.name : void 0
|
|
481
636
|
};
|
|
482
637
|
this.rememberSecretStorageKey(keyId, privateKey, normalizedKeyInfo);
|
|
483
|
-
const stored = this.loadStoredRecoveryKey();
|
|
484
638
|
this.saveRecoveryKeyToDisk({
|
|
485
639
|
keyId,
|
|
486
640
|
keyInfo: normalizedKeyInfo,
|
|
487
|
-
privateKey
|
|
488
|
-
|
|
489
|
-
});
|
|
641
|
+
privateKey
|
|
642
|
+
}, true);
|
|
490
643
|
}
|
|
491
644
|
};
|
|
492
645
|
}
|
|
493
|
-
getRecoveryKeySummary() {
|
|
494
|
-
const stored = this.loadStoredRecoveryKey();
|
|
646
|
+
async getRecoveryKeySummary() {
|
|
647
|
+
const stored = await this.afterPersistence(() => this.loadStoredRecoveryKey());
|
|
495
648
|
if (!stored) return null;
|
|
496
649
|
return {
|
|
497
650
|
encodedPrivateKey: stored.encodedPrivateKey,
|
|
@@ -500,16 +653,22 @@ var MatrixRecoveryKeyStore = class {
|
|
|
500
653
|
};
|
|
501
654
|
}
|
|
502
655
|
getSecretStorageKeyCandidate(keyId) {
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
656
|
+
return this.afterPersistence(async () => {
|
|
657
|
+
if (this.closed) return null;
|
|
658
|
+
const normalizedKeyId = keyId.trim();
|
|
659
|
+
if (!normalizedKeyId) return null;
|
|
660
|
+
const staged = this.resolveStagedSecretStorageKey([normalizedKeyId]);
|
|
661
|
+
if (staged) return staged[1];
|
|
662
|
+
const pending = this.pendingPersistence;
|
|
663
|
+
const stored = await this.loadStoredRecoveryKey();
|
|
664
|
+
if (this.closed) return null;
|
|
665
|
+
if (pending !== this.pendingPersistence) return this.getSecretStorageKeyCandidate(keyId);
|
|
666
|
+
if (!stored?.privateKeyBase64) return null;
|
|
667
|
+
const privateKey = new Uint8Array(Buffer.from(stored.privateKeyBase64, "base64"));
|
|
668
|
+
if (privateKey.length === 0) return null;
|
|
669
|
+
this.rememberSecretStorageKey(normalizedKeyId, privateKey, stored.keyInfo);
|
|
670
|
+
return privateKey;
|
|
671
|
+
});
|
|
513
672
|
}
|
|
514
673
|
resolveEncodedRecoveryKeyInput(params) {
|
|
515
674
|
const encodedPrivateKey = params.encodedPrivateKey.trim();
|
|
@@ -525,54 +684,52 @@ var MatrixRecoveryKeyStore = class {
|
|
|
525
684
|
encodedPrivateKey,
|
|
526
685
|
privateKey,
|
|
527
686
|
keyId,
|
|
528
|
-
keyInfo: params.keyInfo
|
|
687
|
+
keyInfo: params.keyInfo
|
|
529
688
|
};
|
|
530
689
|
}
|
|
531
|
-
storeEncodedRecoveryKey(params) {
|
|
532
|
-
const prepared = this.resolveEncodedRecoveryKeyInput(params);
|
|
533
|
-
this.saveRecoveryKeyToDisk({
|
|
534
|
-
keyId: prepared.keyId,
|
|
535
|
-
keyInfo: prepared.keyInfo,
|
|
536
|
-
privateKey: prepared.privateKey,
|
|
537
|
-
encodedPrivateKey: prepared.encodedPrivateKey
|
|
538
|
-
});
|
|
539
|
-
if (prepared.keyId) this.rememberSecretStorageKey(prepared.keyId, prepared.privateKey, prepared.keyInfo);
|
|
540
|
-
return this.getRecoveryKeySummary() ?? {};
|
|
541
|
-
}
|
|
542
690
|
stageEncodedRecoveryKey(params) {
|
|
543
691
|
const prepared = this.resolveEncodedRecoveryKeyInput(params);
|
|
544
|
-
this.
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
692
|
+
return this.enqueuePersistence(async () => {
|
|
693
|
+
const keyInfo = prepared.keyInfo ?? (await this.loadStoredRecoveryKey())?.keyInfo;
|
|
694
|
+
this.clearStagedCache();
|
|
695
|
+
this.stagedRecoveryKey = {
|
|
696
|
+
version: 1,
|
|
697
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
698
|
+
keyId: prepared.keyId,
|
|
699
|
+
encodedPrivateKey: prepared.encodedPrivateKey,
|
|
700
|
+
privateKeyBase64: Buffer.from(prepared.privateKey).toString("base64"),
|
|
701
|
+
keyInfo
|
|
702
|
+
};
|
|
703
|
+
});
|
|
553
704
|
}
|
|
554
705
|
hasStagedRecoveryKeyBeenUsed() {
|
|
555
706
|
return this.stagedRecoveryKeyUsed;
|
|
556
707
|
}
|
|
557
|
-
commitStagedRecoveryKey(params) {
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
708
|
+
async commitStagedRecoveryKey(params) {
|
|
709
|
+
await this.enqueuePersistence(async () => {
|
|
710
|
+
if (!this.stagedRecoveryKey) return;
|
|
711
|
+
const staged = this.stagedRecoveryKey;
|
|
712
|
+
const privateKey = new Uint8Array(Buffer.from(staged.privateKeyBase64, "base64"));
|
|
713
|
+
const keyId = typeof params?.keyId === "string" && params.keyId.trim() ? params.keyId.trim() : staged.keyId;
|
|
714
|
+
await this.persistRecoveryKey({
|
|
715
|
+
keyId,
|
|
716
|
+
keyInfo: params?.keyInfo ?? staged.keyInfo,
|
|
717
|
+
privateKey,
|
|
718
|
+
encodedPrivateKey: staged.encodedPrivateKey
|
|
719
|
+
});
|
|
720
|
+
this.clearStagedRecoveryKeyTracking();
|
|
567
721
|
});
|
|
568
|
-
this.clearStagedRecoveryKeyTracking();
|
|
569
722
|
return this.getRecoveryKeySummary();
|
|
570
723
|
}
|
|
571
724
|
discardStagedRecoveryKey() {
|
|
725
|
+
return this.enqueuePersistence(async () => this.clearStagedCache());
|
|
726
|
+
}
|
|
727
|
+
clearStagedCache() {
|
|
572
728
|
for (const keyId of this.stagedCacheKeyIds) this.secretStorageKeyCache.delete(keyId);
|
|
573
729
|
this.clearStagedRecoveryKeyTracking();
|
|
574
730
|
}
|
|
575
731
|
async bootstrapSecretStorageWithRecoveryKey(crypto, options = {}) {
|
|
732
|
+
await this.drainPendingPersistence();
|
|
576
733
|
let status = null;
|
|
577
734
|
const getSecretStorageStatus = crypto.getSecretStorageStatus;
|
|
578
735
|
if (typeof getSecretStorageStatus === "function") try {
|
|
@@ -583,7 +740,7 @@ var MatrixRecoveryKeyStore = class {
|
|
|
583
740
|
const hasDefaultSecretStorageKey = Boolean(status?.defaultKeyId);
|
|
584
741
|
const hasKnownInvalidSecrets = Object.values(status?.secretStorageKeyValidityMap ?? {}).some((valid) => !valid);
|
|
585
742
|
let generatedRecoveryKey = false;
|
|
586
|
-
const storedRecovery = this.loadStoredRecoveryKey();
|
|
743
|
+
const storedRecovery = await this.afterPersistence(() => this.loadStoredRecoveryKey());
|
|
587
744
|
const stagedRecovery = this.stagedRecoveryKey;
|
|
588
745
|
const sourceRecovery = options.forceNewRecoveryKey === true ? null : stagedRecovery ?? storedRecovery;
|
|
589
746
|
let recoveryKey = sourceRecovery ? {
|
|
@@ -595,7 +752,7 @@ var MatrixRecoveryKeyStore = class {
|
|
|
595
752
|
const defaultKeyId = status.defaultKeyId;
|
|
596
753
|
if (!stagedRecovery) {
|
|
597
754
|
this.rememberSecretStorageKey(defaultKeyId, recoveryKey.privateKey, recoveryKey.keyInfo);
|
|
598
|
-
if (storedRecovery && storedRecovery.keyId !== defaultKeyId) this.saveRecoveryKeyToDisk({
|
|
755
|
+
if (storedRecovery && storedRecovery.keyId !== defaultKeyId) await this.saveRecoveryKeyToDisk({
|
|
599
756
|
keyId: defaultKeyId,
|
|
600
757
|
keyInfo: recoveryKey.keyInfo,
|
|
601
758
|
privateKey: recoveryKey.privateKey,
|
|
@@ -610,7 +767,7 @@ var MatrixRecoveryKeyStore = class {
|
|
|
610
767
|
}
|
|
611
768
|
if (typeof crypto.createRecoveryKeyFromPassphrase !== "function") throw new Error("Matrix crypto backend does not support recovery key generation (createRecoveryKeyFromPassphrase missing)");
|
|
612
769
|
recoveryKey = await crypto.createRecoveryKeyFromPassphrase();
|
|
613
|
-
this.saveRecoveryKeyToDisk(recoveryKey);
|
|
770
|
+
await this.saveRecoveryKeyToDisk(recoveryKey);
|
|
614
771
|
generatedRecoveryKey = true;
|
|
615
772
|
return recoveryKey;
|
|
616
773
|
};
|
|
@@ -622,16 +779,24 @@ var MatrixRecoveryKeyStore = class {
|
|
|
622
779
|
secretStorageOptions.createSecretStorageKey = ensureRecoveryKey;
|
|
623
780
|
}
|
|
624
781
|
try {
|
|
625
|
-
|
|
782
|
+
try {
|
|
783
|
+
await crypto.bootstrapSecretStorage(secretStorageOptions);
|
|
784
|
+
} finally {
|
|
785
|
+
await this.drainPendingPersistence();
|
|
786
|
+
}
|
|
626
787
|
} catch (err) {
|
|
627
788
|
if (!(options.allowSecretStorageRecreateWithoutRecoveryKey === true && hasDefaultSecretStorageKey && isRepairableSecretStorageAccessError(err))) throw err;
|
|
628
789
|
recoveryKey = null;
|
|
629
790
|
LogService.warn("MatrixClientLite", "Secret storage exists on the server but local recovery material cannot unlock it; recreating secret storage during explicit bootstrap.");
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
791
|
+
try {
|
|
792
|
+
await crypto.bootstrapSecretStorage({
|
|
793
|
+
setupNewSecretStorage: true,
|
|
794
|
+
setupNewKeyBackup: options.setupNewKeyBackup === true,
|
|
795
|
+
createSecretStorageKey: ensureRecoveryKey
|
|
796
|
+
});
|
|
797
|
+
} finally {
|
|
798
|
+
await this.drainPendingPersistence();
|
|
799
|
+
}
|
|
635
800
|
}
|
|
636
801
|
if (generatedRecoveryKey && this.storageRootDir) LogService.warn("MatrixClientLite", "Generated Matrix recovery key and saved it to Matrix SQLite state. Keep the displayed recovery key secure.");
|
|
637
802
|
}
|
|
@@ -662,17 +827,20 @@ var MatrixRecoveryKeyStore = class {
|
|
|
662
827
|
keyInfo
|
|
663
828
|
});
|
|
664
829
|
}
|
|
665
|
-
loadStoredRecoveryKey() {
|
|
666
|
-
if (!this.recoveryKeyPath) return null;
|
|
830
|
+
async loadStoredRecoveryKey() {
|
|
831
|
+
if (!this.recoveryKeyPath || !this.stateRuntime) return null;
|
|
667
832
|
try {
|
|
668
|
-
const stored =
|
|
833
|
+
const stored = await readMatrixRecoveryKeyStateForPathAsync(this.recoveryKeyPath, this.stateRuntime);
|
|
669
834
|
if (stored) return stored;
|
|
670
835
|
} catch {}
|
|
671
836
|
if (this.legacyRecoveryKeyPathOnMigrationFailure) return readLegacyMatrixRecoveryKeyFile(this.legacyRecoveryKeyPathOnMigrationFailure);
|
|
672
837
|
return null;
|
|
673
838
|
}
|
|
674
|
-
saveRecoveryKeyToDisk(params) {
|
|
675
|
-
|
|
839
|
+
saveRecoveryKeyToDisk(params, preserveEncodedPrivateKey = false) {
|
|
840
|
+
return this.enqueuePersistence(() => this.persistRecoveryKey(params, preserveEncodedPrivateKey));
|
|
841
|
+
}
|
|
842
|
+
async persistRecoveryKey(params, preserveEncodedPrivateKey = false) {
|
|
843
|
+
if (!this.recoveryKeyPath || !this.stateRuntime) return;
|
|
676
844
|
try {
|
|
677
845
|
const payload = {
|
|
678
846
|
version: 1,
|
|
@@ -685,9 +853,11 @@ var MatrixRecoveryKeyStore = class {
|
|
|
685
853
|
name: params.keyInfo.name
|
|
686
854
|
} : void 0
|
|
687
855
|
};
|
|
688
|
-
|
|
856
|
+
await writeMatrixRecoveryKeyStateForPathAsync({
|
|
689
857
|
recoveryKeyPath: this.recoveryKeyPath,
|
|
690
|
-
payload
|
|
858
|
+
payload,
|
|
859
|
+
stateRuntime: this.stateRuntime,
|
|
860
|
+
preserveEncodedPrivateKey
|
|
691
861
|
});
|
|
692
862
|
} catch (err) {
|
|
693
863
|
LogService.warn("MatrixClientLite", "Failed to persist recovery key:", err);
|
|
@@ -695,28 +865,60 @@ var MatrixRecoveryKeyStore = class {
|
|
|
695
865
|
}
|
|
696
866
|
};
|
|
697
867
|
//#endregion
|
|
868
|
+
//#region extensions/matrix/src/matrix/sdk/send-scheduler.ts
|
|
869
|
+
/** Keep SDK FIFO/backoff while settling a caller's pre-request rejection only for its event. */
|
|
870
|
+
var MatrixSendScheduler = class extends MatrixScheduler {
|
|
871
|
+
constructor(wasCurrentnessRejected) {
|
|
872
|
+
super();
|
|
873
|
+
this.wasCurrentnessRejected = wasCurrentnessRejected;
|
|
874
|
+
this.queue = new MatrixScheduler();
|
|
875
|
+
}
|
|
876
|
+
setProcessFunction(processEvent) {
|
|
877
|
+
this.queue.setProcessFunction(async (event) => {
|
|
878
|
+
try {
|
|
879
|
+
return {
|
|
880
|
+
kind: "sent",
|
|
881
|
+
result: await withoutMatrixSendCurrentness(() => processEvent(event))
|
|
882
|
+
};
|
|
883
|
+
} catch (error) {
|
|
884
|
+
if (!this.wasCurrentnessRejected(event)) throw error;
|
|
885
|
+
return {
|
|
886
|
+
kind: "rejected",
|
|
887
|
+
error
|
|
888
|
+
};
|
|
889
|
+
}
|
|
890
|
+
});
|
|
891
|
+
}
|
|
892
|
+
queueEvent(event) {
|
|
893
|
+
const queued = this.queue.queueEvent(event);
|
|
894
|
+
return queued ? queued.then((outcome) => {
|
|
895
|
+
if (outcome.kind === "rejected") throw outcome.error;
|
|
896
|
+
return outcome.result;
|
|
897
|
+
}) : null;
|
|
898
|
+
}
|
|
899
|
+
getQueueForEvent(event) {
|
|
900
|
+
return this.queue.getQueueForEvent(event);
|
|
901
|
+
}
|
|
902
|
+
removeEventFromQueue(event) {
|
|
903
|
+
return this.queue.removeEventFromQueue(event);
|
|
904
|
+
}
|
|
905
|
+
};
|
|
906
|
+
//#endregion
|
|
698
907
|
//#region extensions/matrix/src/matrix/sdk/client-base.ts
|
|
699
|
-
|
|
700
|
-
if ((init?.method ?? (resource instanceof Request ? resource.method : "GET")).toUpperCase() !== "PUT") return null;
|
|
701
|
-
const rawUrl = typeof resource === "string" ? resource : resource instanceof URL ? resource.href : resource.url;
|
|
702
|
-
const segments = new URL(rawUrl).pathname.split("/").filter(Boolean);
|
|
703
|
-
const roomsIndex = segments.lastIndexOf("rooms");
|
|
704
|
-
if (roomsIndex < 0 || segments[roomsIndex + 2] !== "send" || segments.length !== roomsIndex + 5) return null;
|
|
705
|
-
const eventType = decodeURIComponent(segments[roomsIndex + 3] ?? "");
|
|
706
|
-
if (eventType !== "m.room.message" && eventType !== "m.room.encrypted") return null;
|
|
707
|
-
return {
|
|
708
|
-
roomId: decodeURIComponent(segments[roomsIndex + 1] ?? ""),
|
|
709
|
-
eventType,
|
|
710
|
-
transactionId: decodeURIComponent(segments[roomsIndex + 4] ?? ""),
|
|
711
|
-
requestPath: new URL(rawUrl).pathname
|
|
712
|
-
};
|
|
713
|
-
}
|
|
908
|
+
const MATRIX_ENCRYPTED_STARTUP_TIMEOUT_MS = 6e4;
|
|
714
909
|
let loadedMatrixCryptoRuntime = null;
|
|
715
|
-
const loadMatrixCryptoRuntime = createLazyRuntimeModule(() => import("./crypto-runtime-
|
|
910
|
+
const loadMatrixCryptoRuntime = createLazyRuntimeModule(() => import("./crypto-runtime-9oxuU30y.mjs").then((runtime) => {
|
|
716
911
|
loadedMatrixCryptoRuntime = runtime;
|
|
717
912
|
return runtime;
|
|
718
913
|
}));
|
|
719
914
|
var MatrixClientBase = class {
|
|
915
|
+
withClientCryptoWork(run, requestSignal) {
|
|
916
|
+
this.assertClientActive();
|
|
917
|
+
return withoutMatrixSendCurrentness(() => this.cryptoRequestOwner.run({
|
|
918
|
+
callerAuthority: captureChannelReadAuthority(),
|
|
919
|
+
requestSignal
|
|
920
|
+
}, run));
|
|
921
|
+
}
|
|
720
922
|
constructor(homeserver, accessToken, opts = {}) {
|
|
721
923
|
this.emitter = new EventEmitter();
|
|
722
924
|
this.bridgeRegistered = false;
|
|
@@ -732,11 +934,23 @@ var MatrixClientBase = class {
|
|
|
732
934
|
this.currentSyncError = void 0;
|
|
733
935
|
this.transactionScopeId = null;
|
|
734
936
|
this.transactionScopePromise = null;
|
|
735
|
-
this.messageWireDispatchGuards =
|
|
937
|
+
this.messageWireDispatchGuards = new MatrixMessageWireDispatchGuards();
|
|
938
|
+
this.requestAbortController = new AbortController();
|
|
939
|
+
this.cryptoRequestOwner = new AsyncLocalStorage();
|
|
940
|
+
this.startupPromise = null;
|
|
941
|
+
this.cryptoInitializationPromise = null;
|
|
736
942
|
this.sdkStopped = false;
|
|
737
943
|
this.stopDiscardPromise = null;
|
|
738
944
|
this.idbPersistPromise = null;
|
|
739
945
|
this.idbPersistAbortController = null;
|
|
946
|
+
this.assertClientActive = () => {
|
|
947
|
+
this.requestAbortController.signal.throwIfAborted();
|
|
948
|
+
};
|
|
949
|
+
this.captureRequestAuthority = () => {
|
|
950
|
+
const readAuthority = captureChannelReadAuthority();
|
|
951
|
+
const cryptoOwner = this.cryptoRequestOwner.getStore();
|
|
952
|
+
return cryptoOwner && cryptoOwner.callerAuthority === readAuthority ? this.assertClientActive : readAuthority;
|
|
953
|
+
};
|
|
740
954
|
this.dms = {
|
|
741
955
|
update: async () => {
|
|
742
956
|
return await this.refreshDmCache();
|
|
@@ -751,7 +965,10 @@ var MatrixClientBase = class {
|
|
|
751
965
|
homeserver,
|
|
752
966
|
accessToken,
|
|
753
967
|
ssrfPolicy: opts.ssrfPolicy,
|
|
754
|
-
dispatcherPolicy: opts.dispatcherPolicy
|
|
968
|
+
dispatcherPolicy: opts.dispatcherPolicy,
|
|
969
|
+
captureRequestAuthority: this.captureRequestAuthority,
|
|
970
|
+
captureSendCurrentness: () => captureMatrixSendCurrentness(this),
|
|
971
|
+
signal: this.requestAbortController.signal
|
|
755
972
|
});
|
|
756
973
|
this.localTimeoutMs = resolveMatrixLocalTimeoutMs(opts.localTimeoutMs);
|
|
757
974
|
this.initialSyncLimit = opts.initialSyncLimit;
|
|
@@ -762,13 +979,22 @@ var MatrixClientBase = class {
|
|
|
762
979
|
this.syncStore = opts.storageRootDir ? new SqliteBackedMatrixSyncStore(opts.storageRootDir) : void 0;
|
|
763
980
|
this.idbSnapshotPath = opts.idbSnapshotPath;
|
|
764
981
|
this.cryptoDatabasePrefix = opts.cryptoDatabasePrefix;
|
|
982
|
+
this.stateRuntime = opts.stateRuntime;
|
|
765
983
|
this.selfUserId = opts.userId?.trim() || null;
|
|
766
984
|
this.autoBootstrapCrypto = opts.autoBootstrapCrypto !== false;
|
|
767
|
-
this.recoveryKeyStore = new MatrixRecoveryKeyStore(opts.recoveryKeyPath);
|
|
985
|
+
this.recoveryKeyStore = new MatrixRecoveryKeyStore(opts.recoveryKeyPath, opts.stateRuntime);
|
|
768
986
|
const cryptoCallbacks = this.encryptionEnabled ? this.recoveryKeyStore.buildCryptoCallbacks() : void 0;
|
|
769
987
|
const guardedFetch = createMatrixGuardedFetch({
|
|
988
|
+
captureRequestSignal: () => this.cryptoRequestOwner.getStore()?.requestSignal,
|
|
770
989
|
ssrfPolicy: opts.ssrfPolicy,
|
|
771
|
-
dispatcherPolicy: opts.dispatcherPolicy
|
|
990
|
+
dispatcherPolicy: opts.dispatcherPolicy,
|
|
991
|
+
captureRequestAuthority: this.captureRequestAuthority,
|
|
992
|
+
captureSendCurrentness: (resource, init) => this.messageWireDispatchGuards.captureCurrentness(resource, init, captureMatrixSendCurrentness(this)),
|
|
993
|
+
signal: this.requestAbortController.signal,
|
|
994
|
+
beforeRequest: async (resource, init) => {
|
|
995
|
+
await this.recoveryKeyStore.drainPendingPersistence();
|
|
996
|
+
await this.messageWireDispatchGuards.beforeRequest(resource, init);
|
|
997
|
+
}
|
|
772
998
|
});
|
|
773
999
|
this.client = createClient({
|
|
774
1000
|
baseUrl: homeserver,
|
|
@@ -777,11 +1003,8 @@ var MatrixClientBase = class {
|
|
|
777
1003
|
deviceId: opts.deviceId,
|
|
778
1004
|
logger: createMatrixJsSdkClientLogger("MatrixClient"),
|
|
779
1005
|
localTimeoutMs: this.localTimeoutMs,
|
|
780
|
-
fetchFn:
|
|
781
|
-
|
|
782
|
-
if (dispatch) await this.messageWireDispatchGuards.get(dispatch.transactionId)?.(dispatch);
|
|
783
|
-
return await guardedFetch(resource, init);
|
|
784
|
-
}),
|
|
1006
|
+
fetchFn: guardedFetch,
|
|
1007
|
+
scheduler: new MatrixSendScheduler((event) => this.messageWireDispatchGuards.wasCurrentnessRejected(event.getTxnId())),
|
|
785
1008
|
store: this.syncStore,
|
|
786
1009
|
cryptoCallbacks,
|
|
787
1010
|
verificationMethods: [
|
|
@@ -791,16 +1014,11 @@ var MatrixClientBase = class {
|
|
|
791
1014
|
VerificationMethod.Reciprocate
|
|
792
1015
|
]
|
|
793
1016
|
});
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
try {
|
|
800
|
-
return await params.run();
|
|
801
|
-
} finally {
|
|
802
|
-
this.messageWireDispatchGuards.delete(params.transactionId);
|
|
803
|
-
}
|
|
1017
|
+
const decryptEventIfNeeded = this.client.decryptEventIfNeeded.bind(this.client);
|
|
1018
|
+
this.client.decryptEventIfNeeded = (event, options) => {
|
|
1019
|
+
this.captureRequestAuthority()?.();
|
|
1020
|
+
return this.withClientCryptoWork(() => decryptEventIfNeeded(event, options));
|
|
1021
|
+
};
|
|
804
1022
|
}
|
|
805
1023
|
on(eventName, listener) {
|
|
806
1024
|
this.emitter.on(eventName, listener);
|
|
@@ -841,7 +1059,7 @@ var MatrixClientBase = class {
|
|
|
841
1059
|
const defaultKeyId = await secretStorage.getDefaultKeyId();
|
|
842
1060
|
if (!defaultKeyId) return false;
|
|
843
1061
|
const keyTuple = await secretStorage.getKey(defaultKeyId);
|
|
844
|
-
const key = this.recoveryKeyStore.getSecretStorageKeyCandidate(defaultKeyId);
|
|
1062
|
+
const key = await this.recoveryKeyStore.getSecretStorageKeyCandidate(defaultKeyId);
|
|
845
1063
|
if (!keyTuple || !key) return false;
|
|
846
1064
|
const keyInfo = keyTuple[1];
|
|
847
1065
|
if (!keyInfo.iv?.trim() || !keyInfo.mac?.trim()) return false;
|
|
@@ -874,98 +1092,84 @@ var MatrixClientBase = class {
|
|
|
874
1092
|
});
|
|
875
1093
|
}
|
|
876
1094
|
async waitForInitialSyncReady(params = {}) {
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
let settled = false;
|
|
883
|
-
let timeoutId;
|
|
884
|
-
const abortSignal = params.abortSignal;
|
|
885
|
-
const cleanup = () => {
|
|
886
|
-
this.off("sync.state", onSyncState);
|
|
887
|
-
this.off("sync.unexpected_error", onUnexpectedError);
|
|
888
|
-
abortSignal?.removeEventListener("abort", onAbort);
|
|
889
|
-
if (timeoutId) {
|
|
890
|
-
clearTimeout(timeoutId);
|
|
891
|
-
timeoutId = void 0;
|
|
892
|
-
}
|
|
893
|
-
};
|
|
894
|
-
const settleResolve = () => {
|
|
895
|
-
if (settled) return;
|
|
896
|
-
settled = true;
|
|
897
|
-
cleanup();
|
|
898
|
-
resolve();
|
|
899
|
-
};
|
|
900
|
-
const settleReject = (error) => {
|
|
901
|
-
if (settled) return;
|
|
902
|
-
settled = true;
|
|
903
|
-
cleanup();
|
|
904
|
-
reject(error);
|
|
905
|
-
};
|
|
906
|
-
const onSyncState = (state, _prevState, error) => {
|
|
907
|
-
if (isMatrixReadySyncState(state)) {
|
|
908
|
-
settleResolve();
|
|
909
|
-
return;
|
|
910
|
-
}
|
|
911
|
-
if (isMatrixAccessTokenInvalidatedError(error)) {
|
|
912
|
-
settleReject(error instanceof Error ? error : /* @__PURE__ */ new Error("Matrix access token invalidated"));
|
|
913
|
-
return;
|
|
914
|
-
}
|
|
915
|
-
if (isMatrixTerminalSyncState(state)) settleReject(new Error(error instanceof Error && error.message ? error.message : `Matrix sync entered ${state} during startup`));
|
|
916
|
-
};
|
|
917
|
-
const onUnexpectedError = (error) => {
|
|
918
|
-
settleReject(error);
|
|
919
|
-
};
|
|
920
|
-
const onAbort = () => {
|
|
921
|
-
settleReject(createMatrixStartupAbortError());
|
|
922
|
-
};
|
|
923
|
-
this.on("sync.state", onSyncState);
|
|
924
|
-
this.on("sync.unexpected_error", onUnexpectedError);
|
|
925
|
-
if (abortSignal?.aborted) {
|
|
926
|
-
onAbort();
|
|
927
|
-
return;
|
|
928
|
-
}
|
|
929
|
-
abortSignal?.addEventListener("abort", onAbort, { once: true });
|
|
930
|
-
timeoutId = setTimeout(() => {
|
|
931
|
-
settleReject(/* @__PURE__ */ new Error(`Matrix client did not reach a ready sync state within ${timeoutMs}ms`));
|
|
932
|
-
}, timeoutMs);
|
|
933
|
-
timeoutId.unref?.();
|
|
1095
|
+
await waitForMatrixInitialSyncReady({
|
|
1096
|
+
...params,
|
|
1097
|
+
emitter: this.emitter,
|
|
1098
|
+
state: this.currentSyncState,
|
|
1099
|
+
error: this.currentSyncError
|
|
934
1100
|
});
|
|
935
1101
|
}
|
|
936
1102
|
async startSyncSession(opts) {
|
|
937
1103
|
if (this.started) return;
|
|
938
1104
|
if (this.sdkStopped) throw new Error("Matrix client has been fully stopped and cannot be restarted; acquire a new shared client generation");
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
this.
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
abortSignal
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
1105
|
+
const assertCurrent = this.captureRequestAuthority();
|
|
1106
|
+
assertCurrent?.();
|
|
1107
|
+
this.assertClientActive();
|
|
1108
|
+
if (this.startupPromise) {
|
|
1109
|
+
await awaitMatrixStartupWithAbort(this.startupPromise, opts.abortSignal);
|
|
1110
|
+
return;
|
|
1111
|
+
}
|
|
1112
|
+
const deadline = new AbortController();
|
|
1113
|
+
const signal = AbortSignal.any([
|
|
1114
|
+
this.requestAbortController.signal,
|
|
1115
|
+
deadline.signal,
|
|
1116
|
+
...opts.abortSignal ? [opts.abortSignal] : []
|
|
1117
|
+
]);
|
|
1118
|
+
const timeout = this.encryptionEnabled ? setTimeout(() => deadline.abort(), opts.readyTimeoutMs ?? MATRIX_ENCRYPTED_STARTUP_TIMEOUT_MS) : void 0;
|
|
1119
|
+
timeout?.unref?.();
|
|
1120
|
+
const checkActive = () => {
|
|
1121
|
+
throwIfMatrixStartupAborted(signal);
|
|
1122
|
+
assertCurrent?.();
|
|
1123
|
+
this.assertClientActive();
|
|
1124
|
+
};
|
|
1125
|
+
const startup = (async () => {
|
|
1126
|
+
throwIfMatrixStartupAborted(signal);
|
|
1127
|
+
await this.ensureCryptoSupportInitialized();
|
|
1128
|
+
checkActive();
|
|
1129
|
+
throwIfMatrixStartupAborted(signal);
|
|
1130
|
+
this.registerBridge();
|
|
1131
|
+
await this.withClientCryptoWork(() => this.initializeCryptoIfNeeded(signal), signal);
|
|
1132
|
+
checkActive();
|
|
1133
|
+
throwIfMatrixStartupAborted(signal);
|
|
1134
|
+
await this.withClientCryptoWork(() => this.client.startClient({
|
|
1135
|
+
initialSyncLimit: this.initialSyncLimit,
|
|
1136
|
+
...this.syncFilter ? { filter: Filter.fromJson(this.selfUserId, "", this.syncFilter) } : {}
|
|
1137
|
+
}));
|
|
1138
|
+
await this.waitForInitialSyncReady({
|
|
1139
|
+
abortSignal: signal,
|
|
1140
|
+
timeoutMs: opts.readyTimeoutMs
|
|
1141
|
+
});
|
|
1142
|
+
checkActive();
|
|
1143
|
+
throwIfMatrixStartupAborted(signal);
|
|
1144
|
+
if (this.encryptionEnabled && this.cryptoInitialized) {
|
|
1145
|
+
const { reconcileJoinedRoomEncryption } = await import("./joined-room-encryption-BCtxQ3hR.mjs");
|
|
1146
|
+
checkActive();
|
|
1147
|
+
await this.withClientCryptoWork(() => reconcileJoinedRoomEncryption(this.client, signal, checkActive), signal);
|
|
1148
|
+
checkActive();
|
|
1149
|
+
}
|
|
1150
|
+
clearTimeout(timeout);
|
|
1151
|
+
if (opts.bootstrapCrypto && this.autoBootstrapCrypto) await this.bootstrapCryptoIfNeeded(signal);
|
|
1152
|
+
throwIfMatrixStartupAborted(signal);
|
|
1153
|
+
this.started = true;
|
|
1154
|
+
this.emitOutstandingInviteEvents();
|
|
1155
|
+
await this.refreshDmCache().catch(noop);
|
|
1156
|
+
})();
|
|
1157
|
+
this.startupPromise = startup;
|
|
1158
|
+
startup.finally(() => {
|
|
1159
|
+
clearTimeout(timeout);
|
|
1160
|
+
if (this.startupPromise === startup) this.startupPromise = null;
|
|
1161
|
+
}).catch(noop);
|
|
1162
|
+
await awaitMatrixStartupWithAbort(startup, signal);
|
|
959
1163
|
}
|
|
960
1164
|
async prepareForOneOff() {
|
|
1165
|
+
const assertCurrent = this.captureRequestAuthority();
|
|
1166
|
+
assertCurrent?.();
|
|
1167
|
+
this.assertClientActive();
|
|
961
1168
|
if (!this.encryptionEnabled) return;
|
|
962
1169
|
await this.ensureCryptoSupportInitialized();
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
const joinedRooms = await this.getJoinedRooms();
|
|
967
|
-
await this.crypto.prepare(joinedRooms);
|
|
968
|
-
} catch {}
|
|
1170
|
+
assertCurrent?.();
|
|
1171
|
+
await this.withClientCryptoWork(() => this.initializeCryptoIfNeeded());
|
|
1172
|
+
assertCurrent?.();
|
|
969
1173
|
}
|
|
970
1174
|
hasPersistedSyncState() {
|
|
971
1175
|
return this.syncStore?.hasSavedSyncFromCleanShutdown() === true;
|
|
@@ -978,8 +1182,8 @@ var MatrixClientBase = class {
|
|
|
978
1182
|
if (this.sdkStopped) return;
|
|
979
1183
|
this.currentSyncState = null;
|
|
980
1184
|
this.currentSyncError = void 0;
|
|
981
|
-
this.client.stopClient();
|
|
982
1185
|
this.sdkStopped = true;
|
|
1186
|
+
this.client.stopClient();
|
|
983
1187
|
this.started = false;
|
|
984
1188
|
}
|
|
985
1189
|
async quiesceSync() {
|
|
@@ -995,34 +1199,44 @@ var MatrixClientBase = class {
|
|
|
995
1199
|
await this.syncQuiescePromise;
|
|
996
1200
|
}
|
|
997
1201
|
async drainPendingDecryptions(reason = "matrix client shutdown") {
|
|
998
|
-
await this.decryptBridge?.drainPendingDecryptions(reason);
|
|
1202
|
+
await this.withClientCryptoWork(() => this.decryptBridge?.drainPendingDecryptions(reason));
|
|
999
1203
|
}
|
|
1000
1204
|
stop() {
|
|
1001
1205
|
this.stopAndPersist().catch(() => this.stopWithoutPersist()).catch(noop);
|
|
1002
1206
|
}
|
|
1003
1207
|
async stopClientGeneration(persist) {
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1208
|
+
try {
|
|
1209
|
+
if (persist) await this.quiesceSync();
|
|
1210
|
+
else {
|
|
1211
|
+
await this.quiesceSync().catch(noop);
|
|
1212
|
+
this.syncStore?.discardPendingSyncCursorPersistence();
|
|
1213
|
+
}
|
|
1214
|
+
this.requestAbortController.abort(/* @__PURE__ */ new Error("Matrix client generation is no longer active."));
|
|
1215
|
+
await this.startupPromise?.catch(noop);
|
|
1216
|
+
await this.cryptoInitializationPromise?.catch(noop);
|
|
1217
|
+
clearInterval(this.idbPersistTimer ?? void 0);
|
|
1011
1218
|
this.idbPersistTimer = null;
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1219
|
+
this.idbPersistAbortController?.abort();
|
|
1220
|
+
const activePeriodicPersist = this.idbPersistPromise;
|
|
1221
|
+
try {
|
|
1222
|
+
this.stopSdkClient();
|
|
1223
|
+
this.decryptBridge?.stop();
|
|
1224
|
+
} finally {
|
|
1225
|
+
this.cryptoRequestOwner.disable();
|
|
1226
|
+
}
|
|
1227
|
+
await Promise.all([this.recoveryKeyStore.close(), activePeriodicPersist]);
|
|
1228
|
+
if (persist) {
|
|
1229
|
+
await (loadedMatrixCryptoRuntime ?? await loadMatrixCryptoRuntime()).persistIdbToDisk({
|
|
1230
|
+
snapshotPath: this.idbSnapshotPath,
|
|
1231
|
+
databasePrefix: this.cryptoDatabasePrefix,
|
|
1232
|
+
strict: true,
|
|
1233
|
+
stateRuntime: this.stateRuntime
|
|
1234
|
+
});
|
|
1235
|
+
this.syncStore?.markCleanShutdown();
|
|
1236
|
+
await this.syncStore?.flush();
|
|
1237
|
+
}
|
|
1238
|
+
} finally {
|
|
1239
|
+
await this.recoveryKeyStore.close();
|
|
1026
1240
|
}
|
|
1027
1241
|
}
|
|
1028
1242
|
async stopAndPersist() {
|
|
@@ -1056,10 +1270,25 @@ var MatrixClientBase = class {
|
|
|
1056
1270
|
this.cryptoBootstrapped = true;
|
|
1057
1271
|
}
|
|
1058
1272
|
async initializeCryptoIfNeeded(abortSignal) {
|
|
1059
|
-
if (!this.encryptionEnabled
|
|
1273
|
+
if (!this.encryptionEnabled) return;
|
|
1274
|
+
if (this.cryptoInitializationPromise) {
|
|
1275
|
+
await this.cryptoInitializationPromise;
|
|
1276
|
+
throwIfMatrixStartupAborted(abortSignal);
|
|
1277
|
+
return;
|
|
1278
|
+
}
|
|
1279
|
+
if (this.cryptoInitialized) return;
|
|
1280
|
+
const initialization = this.initializeCrypto(abortSignal ? AbortSignal.any([abortSignal, this.requestAbortController.signal]) : this.requestAbortController.signal);
|
|
1281
|
+
this.cryptoInitializationPromise = initialization;
|
|
1282
|
+
try {
|
|
1283
|
+
await initialization;
|
|
1284
|
+
} finally {
|
|
1285
|
+
if (this.cryptoInitializationPromise === initialization) this.cryptoInitializationPromise = null;
|
|
1286
|
+
}
|
|
1287
|
+
}
|
|
1288
|
+
async initializeCrypto(abortSignal) {
|
|
1060
1289
|
throwIfMatrixStartupAborted(abortSignal);
|
|
1061
1290
|
const { persistIdbToDisk, restoreIdbFromDisk } = await loadMatrixCryptoRuntime();
|
|
1062
|
-
await restoreIdbFromDisk(this.idbSnapshotPath);
|
|
1291
|
+
await restoreIdbFromDisk(this.idbSnapshotPath, this.stateRuntime);
|
|
1063
1292
|
throwIfMatrixStartupAborted(abortSignal);
|
|
1064
1293
|
try {
|
|
1065
1294
|
await this.client.initRustCrypto({ cryptoDatabasePrefix: this.cryptoDatabasePrefix });
|
|
@@ -1068,7 +1297,8 @@ var MatrixClientBase = class {
|
|
|
1068
1297
|
await persistIdbToDisk({
|
|
1069
1298
|
snapshotPath: this.idbSnapshotPath,
|
|
1070
1299
|
databasePrefix: this.cryptoDatabasePrefix,
|
|
1071
|
-
abortSignal
|
|
1300
|
+
abortSignal,
|
|
1301
|
+
stateRuntime: this.stateRuntime
|
|
1072
1302
|
});
|
|
1073
1303
|
throwIfMatrixStartupAborted(abortSignal);
|
|
1074
1304
|
this.idbPersistTimer = setInterval(() => {
|
|
@@ -1078,7 +1308,8 @@ var MatrixClientBase = class {
|
|
|
1078
1308
|
this.idbPersistPromise = persistIdbToDisk({
|
|
1079
1309
|
snapshotPath: this.idbSnapshotPath,
|
|
1080
1310
|
databasePrefix: this.cryptoDatabasePrefix,
|
|
1081
|
-
abortSignal: abortController.signal
|
|
1311
|
+
abortSignal: abortController.signal,
|
|
1312
|
+
stateRuntime: this.stateRuntime
|
|
1082
1313
|
}).catch(noop).finally(() => {
|
|
1083
1314
|
this.idbPersistPromise = null;
|
|
1084
1315
|
this.idbPersistAbortController = null;
|
|
@@ -1117,8 +1348,9 @@ var MatrixClientCore = class extends MatrixClientBase {
|
|
|
1117
1348
|
return Array.isArray(joined.joined_rooms) ? joined.joined_rooms : [];
|
|
1118
1349
|
}
|
|
1119
1350
|
async getTransactionScopeId() {
|
|
1351
|
+
captureMatrixSendCurrentness(this)?.();
|
|
1120
1352
|
if (this.transactionScopeId) return this.transactionScopeId;
|
|
1121
|
-
const active = this.transactionScopePromise ?? (async () => {
|
|
1353
|
+
const active = this.transactionScopePromise ?? withoutMatrixSendCurrentness(async () => {
|
|
1122
1354
|
const configuredUserId = this.client.getUserId()?.trim() || this.selfUserId;
|
|
1123
1355
|
const configuredDeviceId = this.transactionScopeDeviceId || this.client.getDeviceId()?.trim() || null;
|
|
1124
1356
|
const whoami = await this.doRequest("GET", "/_matrix/client/v3/account/whoami");
|
|
@@ -1130,7 +1362,7 @@ var MatrixClientCore = class extends MatrixClientBase {
|
|
|
1130
1362
|
this.selfUserId = userId;
|
|
1131
1363
|
this.transactionScopeDeviceId = deviceId;
|
|
1132
1364
|
return createHash("sha256").update(this.transactionScopeHomeserver).update("\0").update(userId).update("\0").update(deviceId ?? "").update("\0").update(this.transactionScopeAccessTokenHash).digest("hex");
|
|
1133
|
-
})
|
|
1365
|
+
});
|
|
1134
1366
|
this.transactionScopePromise = active;
|
|
1135
1367
|
try {
|
|
1136
1368
|
const resolved = await active;
|
|
@@ -1181,14 +1413,17 @@ var MatrixClientCore = class extends MatrixClientBase {
|
|
|
1181
1413
|
})).room_id;
|
|
1182
1414
|
}
|
|
1183
1415
|
async sendMessage(roomId, content, transactionId, beforeWireDispatch) {
|
|
1416
|
+
const assertCurrent = captureMatrixSendCurrentness(this);
|
|
1417
|
+
const wireTransactionId = transactionId ?? (beforeWireDispatch || assertCurrent ? this.client.makeTxnId() : void 0);
|
|
1184
1418
|
return await this.runSerializedRoomSend(roomId, async () => {
|
|
1185
|
-
return await this.
|
|
1186
|
-
transactionId,
|
|
1419
|
+
return await this.messageWireDispatchGuards.run({
|
|
1420
|
+
transactionId: wireTransactionId,
|
|
1187
1421
|
guard: beforeWireDispatch,
|
|
1422
|
+
assertCurrent,
|
|
1188
1423
|
run: async () => {
|
|
1189
|
-
if (
|
|
1424
|
+
if (wireTransactionId) {
|
|
1190
1425
|
const room = this.client.getRoom(roomId);
|
|
1191
|
-
const existing = room?.getEventForTxnId?.(
|
|
1426
|
+
const existing = room?.getEventForTxnId?.(wireTransactionId);
|
|
1192
1427
|
if (existing) {
|
|
1193
1428
|
const existingId = existing.getId();
|
|
1194
1429
|
if (existing.status === EventStatus.SENT && existingId && !existingId.startsWith("~")) return existingId;
|
|
@@ -1196,11 +1431,11 @@ var MatrixClientCore = class extends MatrixClientBase {
|
|
|
1196
1431
|
await this.prepareRoomForMessageSend(roomId, existing.getContent());
|
|
1197
1432
|
return (await this.client.resendEvent(existing, room)).event_id;
|
|
1198
1433
|
}
|
|
1199
|
-
throw new Error(`Matrix transaction ${
|
|
1434
|
+
throw new Error(`Matrix transaction ${wireTransactionId} is already active with status ${existing.status ?? "unknown"}`);
|
|
1200
1435
|
}
|
|
1201
1436
|
}
|
|
1202
1437
|
await this.prepareRoomForMessageSend(roomId, content);
|
|
1203
|
-
return (await this.client.sendMessage(roomId, content,
|
|
1438
|
+
return (await this.client.sendMessage(roomId, content, wireTransactionId)).event_id;
|
|
1204
1439
|
}
|
|
1205
1440
|
});
|
|
1206
1441
|
});
|
|
@@ -1348,6 +1583,9 @@ var MatrixClientCore = class extends MatrixClientBase {
|
|
|
1348
1583
|
//#region extensions/matrix/src/matrix/sdk/client-verification.ts
|
|
1349
1584
|
const normalizeNullableVerificationString = normalizeNullableString;
|
|
1350
1585
|
var MatrixClientVerification = class extends MatrixClientCore {
|
|
1586
|
+
async refreshOwnDeviceKeys() {
|
|
1587
|
+
await this.client.getCrypto()?.userHasCrossSigningKeys(await this.getUserId(), true);
|
|
1588
|
+
}
|
|
1351
1589
|
async getRoomKeyBackupStatus() {
|
|
1352
1590
|
if (!this.encryptionEnabled) return {
|
|
1353
1591
|
serverVersion: null,
|
|
@@ -1427,7 +1665,7 @@ var MatrixClientVerification = class extends MatrixClientCore {
|
|
|
1427
1665
|
};
|
|
1428
1666
|
}
|
|
1429
1667
|
async getOwnDeviceVerificationStatus() {
|
|
1430
|
-
const recoveryKey = this.recoveryKeyStore.getRecoveryKeySummary();
|
|
1668
|
+
const recoveryKey = await this.recoveryKeyStore.getRecoveryKeySummary();
|
|
1431
1669
|
const userId = this.client.getUserId() ?? this.selfUserId ?? null;
|
|
1432
1670
|
const deviceId = this.client.getDeviceId()?.trim() || null;
|
|
1433
1671
|
const diagnosticTimeoutMs = Math.min(this.localTimeoutMs, MATRIX_STATUS_DIAGNOSTIC_TIMEOUT_MS);
|
|
@@ -1582,22 +1820,22 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1582
1820
|
let stagedKeyId;
|
|
1583
1821
|
try {
|
|
1584
1822
|
stagedKeyId = await this.resolveDefaultSecretStorageKeyId(crypto) ?? null;
|
|
1585
|
-
this.recoveryKeyStore.stageEncodedRecoveryKey({
|
|
1823
|
+
await this.recoveryKeyStore.stageEncodedRecoveryKey({
|
|
1586
1824
|
encodedPrivateKey: trimmedRecoveryKey,
|
|
1587
1825
|
keyId: stagedKeyId
|
|
1588
1826
|
});
|
|
1589
1827
|
} catch (err) {
|
|
1590
1828
|
return await fail(formatErrorMessage(err));
|
|
1591
1829
|
}
|
|
1592
|
-
const storedRecoveryKeyMatches = this.recoveryKeyStore.getRecoveryKeySummary()?.encodedPrivateKey?.trim() === trimmedRecoveryKey;
|
|
1830
|
+
const storedRecoveryKeyMatches = (await this.recoveryKeyStore.getRecoveryKeySummary())?.encodedPrivateKey?.trim() === trimmedRecoveryKey;
|
|
1593
1831
|
if (backupUsableBeforeStagedRecovery && storedRecoveryKeyMatches) {
|
|
1594
1832
|
const status = await this.getOwnDeviceVerificationStatus();
|
|
1595
1833
|
const backupUsable = resolveMatrixRoomKeyBackupReadinessError(status.backup, { requireServerBackup: true }) === null;
|
|
1596
1834
|
const backupError = resolveMatrixRoomKeyBackupReadinessError(status.backup, { requireServerBackup: false });
|
|
1597
1835
|
const recoveryKeyAccepted = backupUsable;
|
|
1598
1836
|
if (!status.verified) {
|
|
1599
|
-
if (recoveryKeyAccepted) this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: stagedKeyId });
|
|
1600
|
-
else this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1837
|
+
if (recoveryKeyAccepted) await this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: stagedKeyId });
|
|
1838
|
+
else await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1601
1839
|
return {
|
|
1602
1840
|
success: false,
|
|
1603
1841
|
recoveryKeyAccepted,
|
|
@@ -1608,7 +1846,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1608
1846
|
};
|
|
1609
1847
|
}
|
|
1610
1848
|
if (backupError) {
|
|
1611
|
-
this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1849
|
+
await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1612
1850
|
return {
|
|
1613
1851
|
success: false,
|
|
1614
1852
|
recoveryKeyAccepted,
|
|
@@ -1618,7 +1856,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1618
1856
|
...status
|
|
1619
1857
|
};
|
|
1620
1858
|
}
|
|
1621
|
-
this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: stagedKeyId });
|
|
1859
|
+
await this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: stagedKeyId });
|
|
1622
1860
|
return {
|
|
1623
1861
|
success: true,
|
|
1624
1862
|
recoveryKeyAccepted: true,
|
|
@@ -1643,8 +1881,8 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1643
1881
|
const stagedRecoveryKeyValidated = stagedRecoveryKeyUsed && (stagedRecoveryKeyConfirmedBySecretStorage || stagedRecoveryKeyUsed && !stagedRecoveryKeyRejectedBySecretStorage && !stagedRecoveryKeyConfirmedBySecretStorage && !backupUsableBeforeStagedRecovery && backupUsable) || storedRecoveryKeyMatches && backupUsable;
|
|
1644
1882
|
const recoveryKeyAccepted = stagedRecoveryKeyValidated && (status.verified || backupUsable);
|
|
1645
1883
|
if (!status.verified) {
|
|
1646
|
-
if (backupUsable && stagedRecoveryKeyValidated) this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: stagedKeyId });
|
|
1647
|
-
else this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1884
|
+
if (backupUsable && stagedRecoveryKeyValidated) await this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: stagedKeyId });
|
|
1885
|
+
else await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1648
1886
|
return {
|
|
1649
1887
|
success: false,
|
|
1650
1888
|
recoveryKeyAccepted,
|
|
@@ -1655,7 +1893,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1655
1893
|
};
|
|
1656
1894
|
}
|
|
1657
1895
|
if (backupError) {
|
|
1658
|
-
this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1896
|
+
await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1659
1897
|
return {
|
|
1660
1898
|
success: false,
|
|
1661
1899
|
recoveryKeyAccepted,
|
|
@@ -1666,7 +1904,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1666
1904
|
};
|
|
1667
1905
|
}
|
|
1668
1906
|
if (!stagedRecoveryKeyValidated) {
|
|
1669
|
-
this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1907
|
+
await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1670
1908
|
return {
|
|
1671
1909
|
success: false,
|
|
1672
1910
|
recoveryKeyAccepted: false,
|
|
@@ -1676,7 +1914,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1676
1914
|
...status
|
|
1677
1915
|
};
|
|
1678
1916
|
}
|
|
1679
|
-
this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: stagedKeyId });
|
|
1917
|
+
await this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: stagedKeyId });
|
|
1680
1918
|
const committedStatus = await this.getOwnDeviceVerificationStatus();
|
|
1681
1919
|
return {
|
|
1682
1920
|
success: true,
|
|
@@ -1687,7 +1925,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1687
1925
|
...committedStatus
|
|
1688
1926
|
};
|
|
1689
1927
|
} catch (err) {
|
|
1690
|
-
this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1928
|
+
await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1691
1929
|
return await fail(formatErrorMessage(err));
|
|
1692
1930
|
}
|
|
1693
1931
|
}
|
|
@@ -1711,7 +1949,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1711
1949
|
if (!crypto) return await fail("Matrix crypto is not available (start client with encryption enabled)");
|
|
1712
1950
|
try {
|
|
1713
1951
|
const rawRecoveryKey = params.recoveryKey?.trim();
|
|
1714
|
-
if (rawRecoveryKey) this.recoveryKeyStore.stageEncodedRecoveryKey({
|
|
1952
|
+
if (rawRecoveryKey) await this.recoveryKeyStore.stageEncodedRecoveryKey({
|
|
1715
1953
|
encodedPrivateKey: rawRecoveryKey,
|
|
1716
1954
|
keyId: await this.resolveDefaultSecretStorageKeyId(crypto)
|
|
1717
1955
|
});
|
|
@@ -1722,15 +1960,15 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1722
1960
|
requireServerBackup: true
|
|
1723
1961
|
});
|
|
1724
1962
|
if (backupError) {
|
|
1725
|
-
this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1963
|
+
await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1726
1964
|
return await fail(backupError);
|
|
1727
1965
|
}
|
|
1728
1966
|
if (typeof crypto.restoreKeyBackup !== "function") {
|
|
1729
|
-
this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1967
|
+
await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1730
1968
|
return await fail("Matrix crypto backend does not support full key backup restore");
|
|
1731
1969
|
}
|
|
1732
1970
|
const restore = await crypto.restoreKeyBackup();
|
|
1733
|
-
if (rawRecoveryKey) this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: await this.resolveDefaultSecretStorageKeyId(crypto) });
|
|
1971
|
+
if (rawRecoveryKey) await this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: await this.resolveDefaultSecretStorageKeyId(crypto) });
|
|
1734
1972
|
const finalBackup = await this.getRoomKeyBackupStatus();
|
|
1735
1973
|
return {
|
|
1736
1974
|
success: true,
|
|
@@ -1742,7 +1980,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1742
1980
|
backup: finalBackup
|
|
1743
1981
|
};
|
|
1744
1982
|
} catch (err) {
|
|
1745
|
-
this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1983
|
+
await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1746
1984
|
return await fail(formatErrorMessage(err));
|
|
1747
1985
|
}
|
|
1748
1986
|
}
|
|
@@ -1764,6 +2002,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1764
2002
|
await this.ensureStartedForCryptoControlPlane();
|
|
1765
2003
|
const crypto = this.client.getCrypto();
|
|
1766
2004
|
if (!crypto) return await fail("Matrix crypto is not available (start client with encryption enabled)");
|
|
2005
|
+
await this.recoveryKeyStore.drainPendingPersistence();
|
|
1767
2006
|
previousVersion = await this.resolveRoomKeyBackupVersion();
|
|
1768
2007
|
const forceNewSecretStorage = options.rotateRecoveryKey === true || await this.shouldForceSecretStorageRecreationForBackupReset(crypto);
|
|
1769
2008
|
try {
|
|
@@ -1827,7 +2066,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1827
2066
|
const crypto = this.client.getCrypto();
|
|
1828
2067
|
if (!crypto) throw new Error("Matrix crypto is not available (start client with encryption enabled)");
|
|
1829
2068
|
rawRecoveryKey = params?.recoveryKey?.trim();
|
|
1830
|
-
if (rawRecoveryKey) this.recoveryKeyStore.stageEncodedRecoveryKey({
|
|
2069
|
+
if (rawRecoveryKey) await this.recoveryKeyStore.stageEncodedRecoveryKey({
|
|
1831
2070
|
encodedPrivateKey: rawRecoveryKey,
|
|
1832
2071
|
keyId: await this.resolveDefaultSecretStorageKeyId(crypto)
|
|
1833
2072
|
});
|
|
@@ -1839,7 +2078,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1839
2078
|
}));
|
|
1840
2079
|
await this.ensureRoomKeyBackupEnabled(crypto);
|
|
1841
2080
|
} catch (err) {
|
|
1842
|
-
this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
2081
|
+
await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1843
2082
|
bootstrapError = formatErrorMessage(err);
|
|
1844
2083
|
}
|
|
1845
2084
|
const verification = await this.getOwnDeviceVerificationStatus();
|
|
@@ -1850,8 +2089,8 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1850
2089
|
requireServerBackup: true
|
|
1851
2090
|
}) : null;
|
|
1852
2091
|
const success = verificationError === null && backupError === null;
|
|
1853
|
-
if (success) this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: await this.resolveDefaultSecretStorageKeyId(this.client.getCrypto()) });
|
|
1854
|
-
else this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
2092
|
+
if (success) await this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: await this.resolveDefaultSecretStorageKeyId(this.client.getCrypto()) });
|
|
2093
|
+
else await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1855
2094
|
return {
|
|
1856
2095
|
success,
|
|
1857
2096
|
error: success ? void 0 : backupError ?? verificationError ?? void 0,
|