@openclaw/matrix 2026.9.4 → 2026.9.6
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-BHkfU1eC.mjs} +12 -3
- package/dist/{accounts-GwSAk9vY.js → .setup/accounts-iThMol10.mjs} +39 -38
- package/dist/{approval-handler.runtime-6I3IpyeX.js → .setup/approval-handler.runtime-9W7R2ZMq.mjs} +16 -15
- package/dist/{approval-ids-C4NdeXNz.js → .setup/approval-ids-j08q8LEG.mjs} +1 -1
- package/dist/{approval-reaction-auth-cbltZAUQ.js → .setup/approval-reaction-auth-DMVE7VSp.mjs} +7 -3
- package/dist/{approval-reactions-1fwEhoK9.js → .setup/approval-reactions-B0hfA6qz.mjs} +6 -6
- package/dist/{channel-Cg97H4c1.js → .setup/channel-ConuJfxT.mjs} +59 -38
- package/dist/{channel.runtime-Bhpfa1qc.js → .setup/channel.runtime-CnxR2JUK.mjs} +6 -6
- package/dist/{channel.setup-DmS7m7aT.js → .setup/channel.setup-C6KvBV8l.mjs} +9 -5
- package/dist/{cli-CLexRrQw.js → .setup/cli-O196sg8g.mjs} +19 -19
- package/dist/{cli-metadata-zRyVmUOL.js → .setup/cli-metadata-DFHQj5XR.mjs} +1 -1
- package/dist/{client-C0nZFCTj.js → .setup/client-C2yVkVdw.mjs} +5 -3
- package/dist/{client-CPcRv6ab.js → .setup/client-ChrXpxos.mjs} +170 -109
- package/dist/{client-bootstrap-DLN-K8Xb.js → .setup/client-bootstrap-BSnUAoz1.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-CHxcron_.mjs +67 -0
- package/dist/{credentials-DysXbkv2.js → .setup/credentials-BGKfiaJW.mjs} +40 -17
- package/dist/{credentials-read-WWpqi88V.js → .setup/credentials-read-Q5sHkkHv.mjs} +30 -9
- package/dist/{credentials-write.runtime-D22lPwRO.js → .setup/credentials-write.runtime-DxbXh-pK.mjs} +1 -1
- package/dist/{crypto-runtime-DiyH4R3D.js → .setup/crypto-runtime-D9qn_Pbj.mjs} +6 -7
- package/dist/{crypto-snapshot-doctor.runtime-DxgUMXUy.js → .setup/crypto-snapshot-doctor.runtime-CMWa1d9Y.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-CxqkcYbT.mjs} +8 -6
- package/dist/{doctor-CJE8wO6y.js → .setup/doctor-BLCvdOFo.mjs} +1 -1
- package/dist/{draft-stream--NdEtnZ8.js → .setup/draft-stream-y0Vq5f38.mjs} +22 -6
- package/dist/{encryption-guidance-mDyxJV9U.js → .setup/encryption-guidance-CMWXiBzJ.mjs} +2 -2
- package/dist/.setup/file-sync-store-CsalA4yI.mjs +213 -0
- package/dist/{http-client-BfPeF4CE.js → .setup/http-client-Bi6uKmzh.mjs} +90 -9
- package/dist/{idb-persistence-DBdwHSWg.js → .setup/idb-persistence-c8uxcofH.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-COuAcrz-.mjs} +12 -5
- package/dist/{monitor-BUek91SW.js → .setup/monitor-CzE3myC_.mjs} +224 -476
- package/dist/{outbound-D91JinYa.js → .setup/outbound-B508VPBM.mjs} +12 -4
- package/dist/.setup/probe.runtime-C-NMeYk2.mjs +2 -0
- package/dist/{profile-vmjsmhh4.js → .setup/profile-ClrB3IgR.mjs} +1 -1
- package/dist/{profile-update-vnhxwjEt.js → .setup/profile-update-DrblJttE.mjs} +4 -4
- package/dist/{reaction-events-2WM2nJe_.js → .setup/reaction-events-BvZmhjLC.mjs} +8 -7
- package/dist/{resolve-targets-K8D0HWPX.js → .setup/resolve-targets-BLz748lX.mjs} +3 -3
- package/dist/{resolver.runtime-C88GwQCx.js → .setup/resolver.runtime-CuLQ2uHe.mjs} +1 -1
- package/dist/{room-info-BPVJkXnp.js → .setup/room-info-DTyP1k5g.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-rqFjgltR.mjs} +523 -503
- 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/{send-UWLIQ0bG.js → .setup/send-aVdC5NJO.mjs} +218 -439
- package/dist/{reaction-common-DkrQdBSZ.js → .setup/send-currentness-BrGXL7b8.mjs} +20 -1
- package/dist/{setup-bootstrap-sVqkwtSY.js → .setup/setup-bootstrap-A_WGFq1Y.mjs} +3 -3
- package/dist/{setup-core-8keb-Yre.js → .setup/setup-core-D2hMbIi3.mjs} +7 -7
- package/dist/.setup/setup-plugin-api-JiRgm8s6.mjs +3 -0
- package/dist/{setup-surface-bcluelBI.js → .setup/setup-surface-BL3ha1l-.mjs} +12 -12
- package/dist/{startup-verification-BTSf31hS.js → .setup/startup-verification-Cp1Gf7pM.mjs} +8 -8
- package/dist/{storage-CV-pfV_2.js → .setup/storage-BXaFc0S4.mjs} +97 -93
- package/dist/{storage-metadata-DYArLcq1.js → .setup/storage-metadata-fHN6Df2m.mjs} +74 -83
- 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-BMtGMxU1.mjs} +31 -44
- package/dist/{thread-binding-api-CzkeLZCU.js → .setup/thread-binding-api-DRMC62cs.mjs} +1 -1
- package/dist/{thread-bindings-Bwv87Gve.js → .setup/thread-bindings-JlnLDfPM.mjs} +8 -8
- package/dist/{tool-actions.runtime-Bf98Juk6.js → .setup/tool-actions.runtime-REzYTNxm.mjs} +29 -14
- package/dist/{verification-BbG-VC9S.js → .setup/verification-0o8MOW9T.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 +10 -10
- package/dist/helper-api.js +4 -4
- 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/lib/argparse.js +18 -2
- 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/@babel/runtime/package.json +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/music-metadata/node_modules/file-type/package.json +3 -2
- package/node_modules/music-metadata/node_modules/file-type/readme.md +3 -0
- package/node_modules/music-metadata/node_modules/file-type/source/index.js +28 -1
- package/node_modules/music-metadata/node_modules/file-type/source/supported.js +2 -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 +29 -2
- package/node_modules/zod/compile.cjs +96 -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 +21 -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/locales/index.cjs +19 -0
- package/node_modules/zod/mini/index.cjs +19 -0
- package/node_modules/zod/package.json +20 -8
- 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/helpers/errorUtil.ts +1 -1
- 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 +14 -9
- package/node_modules/zod/src/v4/classic/from-json-schema.ts +363 -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 +640 -375
- 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 +186 -0
- package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +36 -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 +3 -3
- 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 +985 -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 +261 -13
- package/node_modules/zod/src/v4/classic/tests/enum.test.ts +20 -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 +403 -6
- package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +582 -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/iban.test.ts +81 -0
- 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 +319 -0
- package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +67 -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 +215 -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 +85 -9
- package/node_modules/zod/src/v4/classic/tests/object.test.ts +301 -12
- package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +235 -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/prefault.test.ts +70 -0
- package/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +20 -2
- package/node_modules/zod/src/v4/classic/tests/properties.test.ts +141 -0
- 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 +79 -3
- 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/standard-schema.test.ts +19 -0
- package/node_modules/zod/src/v4/classic/tests/string.test.ts +222 -6
- 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 +44 -3
- package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +1812 -204
- 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 +645 -0
- package/node_modules/zod/src/v4/classic/tests/validations.test.ts +2 -2
- package/node_modules/zod/src/v4/core/api.ts +87 -35
- package/node_modules/zod/src/v4/core/checks.ts +119 -146
- package/node_modules/zod/src/v4/core/compile.ts +2313 -0
- package/node_modules/zod/src/v4/core/core.ts +99 -22
- package/node_modules/zod/src/v4/core/doc.ts +17 -9
- package/node_modules/zod/src/v4/core/errors.ts +113 -25
- package/node_modules/zod/src/v4/core/index.ts +3 -0
- package/node_modules/zod/src/v4/core/json-schema-generator.ts +8 -3
- package/node_modules/zod/src/v4/core/json-schema-processors.ts +424 -156
- package/node_modules/zod/src/v4/core/json-schema.ts +2 -1
- package/node_modules/zod/src/v4/core/memoizer.ts +331 -0
- package/node_modules/zod/src/v4/core/parse.ts +164 -50
- package/node_modules/zod/src/v4/core/regexes.ts +42 -15
- package/node_modules/zod/src/v4/core/registries.ts +2 -2
- package/node_modules/zod/src/v4/core/schemas.ts +1000 -538
- package/node_modules/zod/src/v4/core/tests/cached.test.ts +54 -0
- package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +1004 -0
- package/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +445 -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 +2036 -0
- package/node_modules/zod/src/v4/core/tests/email-regex.test.ts +140 -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/tg.test.ts +85 -0
- package/node_modules/zod/src/v4/core/tests/locales/tk.test.ts +69 -0
- package/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +46 -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 +133 -0
- package/node_modules/zod/src/v4/core/to-json-schema.ts +283 -48
- package/node_modules/zod/src/v4/core/util.ts +454 -157
- 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 +5 -0
- package/node_modules/zod/src/v4/locales/az.ts +5 -0
- package/node_modules/zod/src/v4/locales/be.ts +12 -0
- package/node_modules/zod/src/v4/locales/bg.ts +5 -0
- package/node_modules/zod/src/v4/locales/bn.ts +123 -0
- package/node_modules/zod/src/v4/locales/ca.ts +5 -0
- package/node_modules/zod/src/v4/locales/ckb.ts +140 -0
- package/node_modules/zod/src/v4/locales/cs.ts +5 -0
- package/node_modules/zod/src/v4/locales/da.ts +7 -2
- package/node_modules/zod/src/v4/locales/de.ts +5 -0
- package/node_modules/zod/src/v4/locales/el.ts +3 -0
- package/node_modules/zod/src/v4/locales/en.ts +17 -4
- package/node_modules/zod/src/v4/locales/eo.ts +5 -0
- package/node_modules/zod/src/v4/locales/es.ts +4 -0
- package/node_modules/zod/src/v4/locales/fa.ts +5 -0
- package/node_modules/zod/src/v4/locales/fi.ts +5 -0
- package/node_modules/zod/src/v4/locales/fr-CA.ts +5 -0
- package/node_modules/zod/src/v4/locales/fr.ts +21 -14
- package/node_modules/zod/src/v4/locales/gu.ts +123 -0
- package/node_modules/zod/src/v4/locales/he.ts +8 -1
- package/node_modules/zod/src/v4/locales/hi.ts +126 -0
- package/node_modules/zod/src/v4/locales/hr.ts +4 -0
- package/node_modules/zod/src/v4/locales/hu.ts +5 -0
- package/node_modules/zod/src/v4/locales/hy.ts +11 -0
- package/node_modules/zod/src/v4/locales/id.ts +5 -0
- package/node_modules/zod/src/v4/locales/index.ts +11 -0
- package/node_modules/zod/src/v4/locales/is.ts +5 -0
- package/node_modules/zod/src/v4/locales/it.ts +5 -0
- package/node_modules/zod/src/v4/locales/ja.ts +5 -0
- package/node_modules/zod/src/v4/locales/ka.ts +5 -0
- package/node_modules/zod/src/v4/locales/km.ts +5 -0
- package/node_modules/zod/src/v4/locales/kn.ts +126 -0
- package/node_modules/zod/src/v4/locales/ko.ts +5 -0
- package/node_modules/zod/src/v4/locales/lt.ts +4 -0
- package/node_modules/zod/src/v4/locales/mk.ts +5 -0
- package/node_modules/zod/src/v4/locales/ms.ts +5 -0
- package/node_modules/zod/src/v4/locales/ne.ts +128 -0
- package/node_modules/zod/src/v4/locales/nl.ts +5 -0
- package/node_modules/zod/src/v4/locales/nn.ts +121 -0
- package/node_modules/zod/src/v4/locales/no.ts +7 -2
- package/node_modules/zod/src/v4/locales/ota.ts +5 -0
- package/node_modules/zod/src/v4/locales/pl.ts +5 -0
- package/node_modules/zod/src/v4/locales/ps.ts +5 -0
- package/node_modules/zod/src/v4/locales/pt-BR.ts +161 -0
- package/node_modules/zod/src/v4/locales/pt.ts +101 -58
- package/node_modules/zod/src/v4/locales/ro.ts +3 -0
- package/node_modules/zod/src/v4/locales/ru.ts +12 -0
- package/node_modules/zod/src/v4/locales/sk.ts +123 -0
- package/node_modules/zod/src/v4/locales/sl.ts +5 -0
- package/node_modules/zod/src/v4/locales/sv.ts +7 -2
- package/node_modules/zod/src/v4/locales/ta.ts +5 -0
- package/node_modules/zod/src/v4/locales/tg.ts +135 -0
- package/node_modules/zod/src/v4/locales/th.ts +5 -0
- package/node_modules/zod/src/v4/locales/tk.ts +113 -0
- package/node_modules/zod/src/v4/locales/tr.ts +5 -0
- package/node_modules/zod/src/v4/locales/uk.ts +5 -0
- package/node_modules/zod/src/v4/locales/ur.ts +5 -0
- package/node_modules/zod/src/v4/locales/uz.ts +3 -0
- package/node_modules/zod/src/v4/locales/vi.ts +5 -0
- package/node_modules/zod/src/v4/locales/yo.ts +5 -0
- package/node_modules/zod/src/v4/locales/zh-CN.ts +5 -0
- package/node_modules/zod/src/v4/locales/zh-TW.ts +5 -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 +12 -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 +167 -63
- 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/computed.test.ts +11 -17
- 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 +158 -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/recursive-types.test.ts +16 -0
- package/node_modules/zod/src/v4/mini/tests/string.test.ts +44 -0
- package/node_modules/zod/v3/ZodError.cjs +41 -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/errors.cjs +19 -0
- package/node_modules/zod/v3/external.cjs +19 -0
- package/node_modules/zod/v3/helpers/enumUtil.cjs +19 -0
- package/node_modules/zod/v3/helpers/errorUtil.cjs +20 -1
- package/node_modules/zod/v3/helpers/errorUtil.js +1 -1
- package/node_modules/zod/v3/helpers/parseUtil.cjs +19 -0
- package/node_modules/zod/v3/helpers/partialUtil.cjs +19 -0
- package/node_modules/zod/v3/helpers/typeAliases.cjs +19 -0
- package/node_modules/zod/v3/helpers/util.cjs +19 -0
- package/node_modules/zod/v3/index.cjs +19 -0
- package/node_modules/zod/v3/standard-schema.cjs +19 -0
- package/node_modules/zod/v3/types.cjs +26 -5
- package/node_modules/zod/v3/types.js +7 -5
- package/node_modules/zod/v4/classic/checks.cjs +21 -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/coerce.cjs +19 -0
- package/node_modules/zod/v4/classic/compat.cjs +19 -0
- 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 +58 -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 +62 -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 +51 -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 +376 -75
- package/node_modules/zod/v4/classic/from-json-schema.js +357 -75
- package/node_modules/zod/v4/classic/in-out.cjs +82 -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 +21 -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 +30 -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 +23 -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 +591 -426
- package/node_modules/zod/v4/classic/schemas.d.cts +68 -19
- package/node_modules/zod/v4/classic/schemas.d.ts +68 -19
- package/node_modules/zod/v4/classic/schemas.js +564 -424
- package/node_modules/zod/v4/core/api.cjs +66 -24
- package/node_modules/zod/v4/core/api.d.cts +22 -12
- package/node_modules/zod/v4/core/api.d.ts +22 -12
- package/node_modules/zod/v4/core/api.js +44 -24
- package/node_modules/zod/v4/core/checks.cjs +88 -128
- package/node_modules/zod/v4/core/checks.d.cts +29 -13
- package/node_modules/zod/v4/core/checks.d.ts +29 -13
- package/node_modules/zod/v4/core/checks.js +68 -127
- package/node_modules/zod/v4/core/compile.cjs +1908 -0
- package/node_modules/zod/v4/core/compile.d.cts +65 -0
- package/node_modules/zod/v4/core/compile.d.ts +65 -0
- package/node_modules/zod/v4/core/compile.js +1858 -0
- package/node_modules/zod/v4/core/core.cjs +101 -19
- 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 +83 -20
- package/node_modules/zod/v4/core/doc.cjs +31 -9
- 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 +12 -9
- package/node_modules/zod/v4/core/errors.cjs +126 -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 +107 -25
- package/node_modules/zod/v4/core/index.cjs +24 -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 +24 -1
- 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 +6 -2
- package/node_modules/zod/v4/core/json-schema-processors.cjs +441 -156
- package/node_modules/zod/v4/core/json-schema-processors.d.cts +16 -0
- package/node_modules/zod/v4/core/json-schema-processors.d.ts +16 -0
- package/node_modules/zod/v4/core/json-schema-processors.js +400 -158
- package/node_modules/zod/v4/core/json-schema.cjs +19 -0
- 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 +360 -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 +311 -0
- package/node_modules/zod/v4/core/parse.cjs +148 -46
- 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 +127 -45
- package/node_modules/zod/v4/core/regexes.cjs +54 -17
- package/node_modules/zod/v4/core/regexes.d.cts +5 -0
- package/node_modules/zod/v4/core/regexes.d.ts +5 -0
- package/node_modules/zod/v4/core/regexes.js +32 -15
- package/node_modules/zod/v4/core/registries.cjs +19 -0
- package/node_modules/zod/v4/core/registries.js +2 -2
- package/node_modules/zod/v4/core/schemas.cjs +785 -386
- package/node_modules/zod/v4/core/schemas.d.cts +123 -34
- package/node_modules/zod/v4/core/schemas.d.ts +123 -34
- package/node_modules/zod/v4/core/schemas.js +753 -386
- package/node_modules/zod/v4/core/standard-schema.cjs +19 -0
- package/node_modules/zod/v4/core/to-json-schema.cjs +269 -45
- package/node_modules/zod/v4/core/to-json-schema.d.cts +45 -5
- package/node_modules/zod/v4/core/to-json-schema.d.ts +45 -5
- package/node_modules/zod/v4/core/to-json-schema.js +247 -44
- package/node_modules/zod/v4/core/util.cjs +372 -157
- package/node_modules/zod/v4/core/util.d.cts +79 -1
- package/node_modules/zod/v4/core/util.d.ts +79 -1
- package/node_modules/zod/v4/core/util.js +341 -156
- package/node_modules/zod/v4/core/versions.cjs +21 -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 +214 -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 +34 -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 +5 -0
- package/node_modules/zod/v4/locales/ar.js +5 -0
- package/node_modules/zod/v4/locales/az.cjs +5 -0
- package/node_modules/zod/v4/locales/az.js +5 -0
- package/node_modules/zod/v4/locales/be.cjs +12 -0
- package/node_modules/zod/v4/locales/be.js +12 -0
- package/node_modules/zod/v4/locales/bg.cjs +5 -0
- package/node_modules/zod/v4/locales/bg.js +5 -0
- package/node_modules/zod/v4/locales/bn.cjs +140 -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 +113 -0
- package/node_modules/zod/v4/locales/ca.cjs +5 -0
- package/node_modules/zod/v4/locales/ca.js +5 -0
- package/node_modules/zod/v4/locales/ckb.cjs +160 -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 +133 -0
- package/node_modules/zod/v4/locales/cs.cjs +5 -0
- package/node_modules/zod/v4/locales/cs.js +5 -0
- package/node_modules/zod/v4/locales/da.cjs +7 -2
- package/node_modules/zod/v4/locales/da.js +7 -2
- package/node_modules/zod/v4/locales/de.cjs +5 -0
- package/node_modules/zod/v4/locales/de.js +5 -0
- package/node_modules/zod/v4/locales/el.cjs +3 -0
- package/node_modules/zod/v4/locales/el.js +3 -0
- package/node_modules/zod/v4/locales/en.cjs +16 -4
- package/node_modules/zod/v4/locales/en.js +16 -4
- package/node_modules/zod/v4/locales/eo.cjs +5 -0
- package/node_modules/zod/v4/locales/eo.js +5 -0
- package/node_modules/zod/v4/locales/es.cjs +4 -0
- package/node_modules/zod/v4/locales/es.js +4 -0
- package/node_modules/zod/v4/locales/fa.cjs +5 -0
- package/node_modules/zod/v4/locales/fa.js +5 -0
- package/node_modules/zod/v4/locales/fi.cjs +5 -0
- package/node_modules/zod/v4/locales/fi.js +5 -0
- package/node_modules/zod/v4/locales/fr-CA.cjs +5 -0
- package/node_modules/zod/v4/locales/fr-CA.js +5 -0
- package/node_modules/zod/v4/locales/fr.cjs +18 -14
- package/node_modules/zod/v4/locales/fr.js +18 -14
- package/node_modules/zod/v4/locales/gu.cjs +140 -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 +113 -0
- package/node_modules/zod/v4/locales/he.cjs +7 -0
- package/node_modules/zod/v4/locales/he.js +7 -0
- package/node_modules/zod/v4/locales/hi.cjs +138 -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 +111 -0
- package/node_modules/zod/v4/locales/hr.cjs +4 -0
- package/node_modules/zod/v4/locales/hr.js +4 -0
- package/node_modules/zod/v4/locales/hu.cjs +5 -0
- package/node_modules/zod/v4/locales/hu.js +5 -0
- package/node_modules/zod/v4/locales/hy.cjs +11 -0
- package/node_modules/zod/v4/locales/hy.js +11 -0
- package/node_modules/zod/v4/locales/id.cjs +5 -0
- package/node_modules/zod/v4/locales/id.js +5 -0
- package/node_modules/zod/v4/locales/index.cjs +43 -2
- package/node_modules/zod/v4/locales/index.d.cts +11 -0
- package/node_modules/zod/v4/locales/index.d.ts +11 -0
- package/node_modules/zod/v4/locales/index.js +11 -0
- package/node_modules/zod/v4/locales/is.cjs +5 -0
- package/node_modules/zod/v4/locales/is.js +5 -0
- package/node_modules/zod/v4/locales/it.cjs +5 -0
- package/node_modules/zod/v4/locales/it.js +5 -0
- package/node_modules/zod/v4/locales/ja.cjs +5 -0
- package/node_modules/zod/v4/locales/ja.js +5 -0
- package/node_modules/zod/v4/locales/ka.cjs +5 -0
- package/node_modules/zod/v4/locales/ka.js +5 -0
- package/node_modules/zod/v4/locales/km.cjs +5 -0
- package/node_modules/zod/v4/locales/km.js +5 -0
- package/node_modules/zod/v4/locales/kn.cjs +143 -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 +116 -0
- package/node_modules/zod/v4/locales/ko.cjs +5 -0
- package/node_modules/zod/v4/locales/ko.js +5 -0
- package/node_modules/zod/v4/locales/lt.cjs +4 -0
- package/node_modules/zod/v4/locales/lt.js +4 -0
- package/node_modules/zod/v4/locales/mk.cjs +5 -0
- package/node_modules/zod/v4/locales/mk.js +5 -0
- package/node_modules/zod/v4/locales/ms.cjs +5 -0
- package/node_modules/zod/v4/locales/ms.js +5 -0
- package/node_modules/zod/v4/locales/ne.cjs +138 -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 +111 -0
- package/node_modules/zod/v4/locales/nl.cjs +5 -0
- package/node_modules/zod/v4/locales/nl.js +5 -0
- package/node_modules/zod/v4/locales/nn.cjs +140 -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 +113 -0
- package/node_modules/zod/v4/locales/no.cjs +7 -2
- package/node_modules/zod/v4/locales/no.js +7 -2
- package/node_modules/zod/v4/locales/ota.cjs +5 -0
- package/node_modules/zod/v4/locales/ota.js +5 -0
- package/node_modules/zod/v4/locales/pl.cjs +5 -0
- package/node_modules/zod/v4/locales/pl.js +5 -0
- package/node_modules/zod/v4/locales/ps.cjs +5 -0
- package/node_modules/zod/v4/locales/ps.js +5 -0
- package/node_modules/zod/v4/locales/pt-BR.cjs +170 -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 +143 -0
- package/node_modules/zod/v4/locales/pt.cjs +89 -55
- package/node_modules/zod/v4/locales/pt.js +89 -55
- package/node_modules/zod/v4/locales/ro.cjs +3 -0
- package/node_modules/zod/v4/locales/ro.js +3 -0
- package/node_modules/zod/v4/locales/ru.cjs +12 -0
- package/node_modules/zod/v4/locales/ru.js +12 -0
- package/node_modules/zod/v4/locales/sk.cjs +143 -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 +116 -0
- package/node_modules/zod/v4/locales/sl.cjs +5 -0
- package/node_modules/zod/v4/locales/sl.js +5 -0
- package/node_modules/zod/v4/locales/sv.cjs +7 -2
- package/node_modules/zod/v4/locales/sv.js +7 -2
- package/node_modules/zod/v4/locales/ta.cjs +5 -0
- package/node_modules/zod/v4/locales/ta.js +5 -0
- package/node_modules/zod/v4/locales/tg.cjs +144 -0
- package/node_modules/zod/v4/locales/tg.d.cts +5 -0
- package/node_modules/zod/v4/locales/tg.d.ts +4 -0
- package/node_modules/zod/v4/locales/tg.js +117 -0
- package/node_modules/zod/v4/locales/th.cjs +5 -0
- package/node_modules/zod/v4/locales/th.js +5 -0
- package/node_modules/zod/v4/locales/tk.cjs +134 -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 +107 -0
- package/node_modules/zod/v4/locales/tr.cjs +5 -0
- package/node_modules/zod/v4/locales/tr.js +5 -0
- package/node_modules/zod/v4/locales/uk.cjs +5 -0
- package/node_modules/zod/v4/locales/uk.js +5 -0
- package/node_modules/zod/v4/locales/ur.cjs +5 -0
- package/node_modules/zod/v4/locales/ur.js +5 -0
- package/node_modules/zod/v4/locales/uz.cjs +3 -0
- package/node_modules/zod/v4/locales/uz.js +3 -0
- package/node_modules/zod/v4/locales/vi.cjs +5 -0
- package/node_modules/zod/v4/locales/vi.js +5 -0
- package/node_modules/zod/v4/locales/yo.cjs +5 -0
- package/node_modules/zod/v4/locales/yo.js +5 -0
- package/node_modules/zod/v4/locales/zh-CN.cjs +5 -0
- package/node_modules/zod/v4/locales/zh-CN.js +5 -0
- package/node_modules/zod/v4/locales/zh-TW.cjs +5 -0
- package/node_modules/zod/v4/locales/zh-TW.js +5 -0
- package/node_modules/zod/v4/mini/checks.cjs +21 -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/coerce.cjs +19 -0
- package/node_modules/zod/v4/mini/deep-partial.cjs +58 -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 +33 -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 +82 -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/index.cjs +19 -0
- package/node_modules/zod/v4/mini/iso.cjs +19 -0
- package/node_modules/zod/v4/mini/parse.cjs +22 -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 +117 -53
- package/node_modules/zod/v4/mini/schemas.d.cts +49 -14
- package/node_modules/zod/v4/mini/schemas.d.ts +49 -14
- package/node_modules/zod/v4/mini/schemas.js +92 -51
- package/node_modules/zod/v4-mini/index.cjs +19 -0
- package/openclaw.plugin.json +222 -45
- package/package.json +14 -11
- 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,32 @@
|
|
|
1
|
-
import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.
|
|
2
|
-
import { t as getMatrixRuntime } from "./runtime-
|
|
3
|
-
import {
|
|
4
|
-
import { t as
|
|
5
|
-
import "./
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { n as
|
|
9
|
-
import {
|
|
10
|
-
import { n as LogService, r as noop, t as ConsoleLogger } from "./logger-
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { t as
|
|
14
|
-
import { t as MATRIX_IDB_PERSIST_INTERVAL_MS } from "./idb-persistence-lock-B3fZXyF_.js";
|
|
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-DLj4vDeu.js";
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.mjs";
|
|
2
|
+
import { t as getMatrixRuntime } from "./runtime-1kn1P6io.mjs";
|
|
3
|
+
import { E as writeMatrixRecoveryKeyStateForPathAsync, _ as readLegacyMatrixRecoveryKeyFile, f as migrateLegacyMatrixRecoveryKeyFilePathToStoreAsync, x as readMatrixRecoveryKeyStateForPathAsync } from "./storage-metadata-fHN6Df2m.mjs";
|
|
4
|
+
import { r as withoutMatrixSendCurrentness, t as captureMatrixSendCurrentness } from "./send-currentness-BrGXL7b8.mjs";
|
|
5
|
+
import { i as parseMxc, r as matrixEventToRaw } from "./event-helpers-CspuhE9k.mjs";
|
|
6
|
+
import { n as isMatrixNotFoundError, t as formatMatrixErrorReason } from "./errors-DKVS3_DO.mjs";
|
|
7
|
+
import { a as createMatrixStartupAbortError, i as awaitMatrixStartupWithAbort, s as throwIfMatrixStartupAborted } from "./client-ChrXpxos.mjs";
|
|
8
|
+
import { n as createMatrixGuardedFetch, t as MatrixAuthedHttpClient } from "./http-client-Bi6uKmzh.mjs";
|
|
9
|
+
import { n as resolveMatrixRoomKeyBackupReadinessError } from "./backup-health-Dm_YMVFT.mjs";
|
|
10
|
+
import { n as LogService, r as noop, t as ConsoleLogger } from "./logger-xBjiRIp1.mjs";
|
|
11
|
+
import { t as createMatrixJsSdkClientLogger } from "./logging-rgm8ep9H.mjs";
|
|
12
|
+
import { t as MATRIX_IDB_PERSIST_INTERVAL_MS } from "./idb-persistence-lock-B3fZXyF_.mjs";
|
|
13
|
+
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
14
|
import { createRequire } from "node:module";
|
|
17
15
|
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
18
16
|
import { normalizeNullableString, normalizeStringEntries, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
19
17
|
import { createHash } from "node:crypto";
|
|
20
18
|
import path from "node:path";
|
|
21
19
|
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
|
20
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
22
21
|
import { KeyedAsyncQueue } from "openclaw/plugin-sdk/keyed-async-queue";
|
|
22
|
+
import { captureChannelReadAuthority } from "openclaw/plugin-sdk/fetch-runtime";
|
|
23
|
+
import { ClientEvent, EventType, Filter, MatrixError, MatrixEventEvent, MsgType, Preset, createClient } from "matrix-js-sdk/lib/matrix.js";
|
|
23
24
|
import { EventEmitter } from "node:events";
|
|
24
|
-
import { ClientEvent, EventType, Filter, MatrixError, MatrixEventEvent, MemoryStore, MsgType, Preset, SyncAccumulator, createClient } from "matrix-js-sdk/lib/matrix.js";
|
|
25
25
|
import { RoomEvent } from "matrix-js-sdk/lib/models/room.js";
|
|
26
26
|
import { VerificationMethod } from "matrix-js-sdk/lib/types.js";
|
|
27
27
|
import { SyncApi, SyncState } from "matrix-js-sdk/lib/sync.js";
|
|
28
28
|
import { decodeRecoveryKey } from "matrix-js-sdk/lib/crypto-api/recovery-key.js";
|
|
29
|
+
import { MatrixScheduler } from "matrix-js-sdk/lib/scheduler.js";
|
|
29
30
|
import { EventStatus } from "matrix-js-sdk/lib/models/event-status.js";
|
|
30
31
|
//#region extensions/matrix/src/matrix/sdk/client-device-info.ts
|
|
31
32
|
async function resolveMatrixCrossSigningPublicationStatus(params) {
|
|
@@ -140,226 +141,9 @@ function refreshMatrixDmRoomIds(direct, dmRoomIds) {
|
|
|
140
141
|
return true;
|
|
141
142
|
}
|
|
142
143
|
//#endregion
|
|
143
|
-
//#region extensions/matrix/src/matrix/async-lock.ts
|
|
144
|
-
function createAsyncLock() {
|
|
145
|
-
let lock = Promise.resolve();
|
|
146
|
-
return async function withLock(fn) {
|
|
147
|
-
const previous = lock;
|
|
148
|
-
let release;
|
|
149
|
-
lock = new Promise((resolve) => {
|
|
150
|
-
release = resolve;
|
|
151
|
-
});
|
|
152
|
-
await previous;
|
|
153
|
-
try {
|
|
154
|
-
return await fn();
|
|
155
|
-
} finally {
|
|
156
|
-
release?.();
|
|
157
|
-
}
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
//#endregion
|
|
161
|
-
//#region extensions/matrix/src/matrix/client/file-sync-store.ts
|
|
162
|
-
const PERSIST_DEBOUNCE_MS = 250;
|
|
163
|
-
function cloneJson(value) {
|
|
164
|
-
return structuredClone(value);
|
|
165
|
-
}
|
|
166
|
-
function syncDataToSyncResponse(syncData) {
|
|
167
|
-
return {
|
|
168
|
-
next_batch: syncData.nextBatch,
|
|
169
|
-
rooms: syncData.roomsData,
|
|
170
|
-
account_data: { events: syncData.accountData }
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
var SqliteBackedMatrixSyncStore = class extends MemoryStore {
|
|
174
|
-
constructor(storageRootDir) {
|
|
175
|
-
super();
|
|
176
|
-
this.storageRootDir = storageRootDir;
|
|
177
|
-
this.persistLock = createAsyncLock();
|
|
178
|
-
this.accumulator = new SyncAccumulator();
|
|
179
|
-
this.savedSync = null;
|
|
180
|
-
this.cleanShutdown = false;
|
|
181
|
-
this.dirty = false;
|
|
182
|
-
this.frozen = false;
|
|
183
|
-
this.persistTimer = null;
|
|
184
|
-
this.persistPromise = null;
|
|
185
|
-
let restoredSavedSync = null;
|
|
186
|
-
let restoredClientOptions;
|
|
187
|
-
let restoredCleanShutdown = false;
|
|
188
|
-
let syncCacheStore = createNoopMatrixSyncCacheStore();
|
|
189
|
-
let syncCacheStoreUnavailableError;
|
|
190
|
-
try {
|
|
191
|
-
syncCacheStore = openMatrixSyncCacheStore(storageRootDir);
|
|
192
|
-
const persisted = readPersistedStoreFromSyncStore(syncCacheStore);
|
|
193
|
-
if (persisted) {
|
|
194
|
-
restoredSavedSync = persisted.savedSync;
|
|
195
|
-
restoredClientOptions = persisted.clientOptions;
|
|
196
|
-
restoredCleanShutdown = persisted.cleanShutdown === true;
|
|
197
|
-
}
|
|
198
|
-
} catch (err) {
|
|
199
|
-
syncCacheStoreUnavailableError = err;
|
|
200
|
-
LogService.warn("MatrixSyncCacheStore", "Failed to load Matrix sync cache:", err);
|
|
201
|
-
}
|
|
202
|
-
this.store = syncCacheStore;
|
|
203
|
-
this.storeUnavailableError = syncCacheStoreUnavailableError;
|
|
204
|
-
this.savedSync = restoredSavedSync;
|
|
205
|
-
this.savedClientOptions = restoredClientOptions;
|
|
206
|
-
this.hadSavedSyncOnLoad = restoredSavedSync !== null;
|
|
207
|
-
this.hadCleanShutdownOnLoad = this.hadSavedSyncOnLoad && restoredCleanShutdown;
|
|
208
|
-
this.cleanShutdown = this.hadCleanShutdownOnLoad;
|
|
209
|
-
if (this.savedSync) {
|
|
210
|
-
this.accumulator.accumulate(syncDataToSyncResponse(this.savedSync), true);
|
|
211
|
-
super.setSyncToken(this.savedSync.nextBatch);
|
|
212
|
-
}
|
|
213
|
-
if (this.savedClientOptions) super.storeClientOptions(this.savedClientOptions);
|
|
214
|
-
}
|
|
215
|
-
hasSavedSync() {
|
|
216
|
-
return this.hadSavedSyncOnLoad;
|
|
217
|
-
}
|
|
218
|
-
hasSavedSyncFromCleanShutdown() {
|
|
219
|
-
return this.hadCleanShutdownOnLoad;
|
|
220
|
-
}
|
|
221
|
-
getSavedSync() {
|
|
222
|
-
return Promise.resolve(this.savedSync ? cloneJson(this.savedSync) : null);
|
|
223
|
-
}
|
|
224
|
-
getSavedSyncToken() {
|
|
225
|
-
return Promise.resolve(this.savedSync?.nextBatch ?? null);
|
|
226
|
-
}
|
|
227
|
-
setSyncData(syncData) {
|
|
228
|
-
if (this.frozen) return Promise.resolve();
|
|
229
|
-
this.accumulator.accumulate(syncData);
|
|
230
|
-
this.savedSync = this.accumulator.getJSON();
|
|
231
|
-
this.markDirtyAndSchedulePersist();
|
|
232
|
-
return Promise.resolve();
|
|
233
|
-
}
|
|
234
|
-
getClientOptions() {
|
|
235
|
-
return Promise.resolve(this.savedClientOptions ? cloneJson(this.savedClientOptions) : void 0);
|
|
236
|
-
}
|
|
237
|
-
storeClientOptions(options) {
|
|
238
|
-
if (this.frozen) return Promise.resolve();
|
|
239
|
-
this.savedClientOptions = cloneJson(options);
|
|
240
|
-
super.storeClientOptions(options);
|
|
241
|
-
this.markDirtyAndSchedulePersist();
|
|
242
|
-
return Promise.resolve();
|
|
243
|
-
}
|
|
244
|
-
save(force = false) {
|
|
245
|
-
if (force) return this.flush();
|
|
246
|
-
return Promise.resolve();
|
|
247
|
-
}
|
|
248
|
-
wantsSave() {
|
|
249
|
-
return false;
|
|
250
|
-
}
|
|
251
|
-
async deleteAllData() {
|
|
252
|
-
this.assertStoreAvailable();
|
|
253
|
-
if (this.persistTimer) {
|
|
254
|
-
clearTimeout(this.persistTimer);
|
|
255
|
-
this.persistTimer = null;
|
|
256
|
-
}
|
|
257
|
-
this.dirty = false;
|
|
258
|
-
await this.persistPromise?.catch(() => void 0);
|
|
259
|
-
await super.deleteAllData();
|
|
260
|
-
this.savedSync = null;
|
|
261
|
-
this.savedClientOptions = void 0;
|
|
262
|
-
this.cleanShutdown = false;
|
|
263
|
-
await deleteMatrixSyncCacheStateFromSyncStore({
|
|
264
|
-
storageRootDir: this.storageRootDir,
|
|
265
|
-
store: this.store
|
|
266
|
-
});
|
|
267
|
-
}
|
|
268
|
-
markCleanShutdown() {
|
|
269
|
-
this.cleanShutdown = true;
|
|
270
|
-
this.dirty = true;
|
|
271
|
-
}
|
|
272
|
-
async freezeSyncCursorPersistence() {
|
|
273
|
-
this.frozen = true;
|
|
274
|
-
if (this.persistTimer) {
|
|
275
|
-
clearTimeout(this.persistTimer);
|
|
276
|
-
this.persistTimer = null;
|
|
277
|
-
}
|
|
278
|
-
await this.persistPromise;
|
|
279
|
-
}
|
|
280
|
-
discardPendingSyncCursorPersistence() {
|
|
281
|
-
this.frozen = true;
|
|
282
|
-
if (this.persistTimer) {
|
|
283
|
-
clearTimeout(this.persistTimer);
|
|
284
|
-
this.persistTimer = null;
|
|
285
|
-
}
|
|
286
|
-
this.cleanShutdown = false;
|
|
287
|
-
this.dirty = false;
|
|
288
|
-
}
|
|
289
|
-
async flush() {
|
|
290
|
-
if (this.persistTimer) {
|
|
291
|
-
clearTimeout(this.persistTimer);
|
|
292
|
-
this.persistTimer = null;
|
|
293
|
-
}
|
|
294
|
-
while (this.dirty || this.persistPromise) {
|
|
295
|
-
if (this.dirty && !this.persistPromise) this.persistPromise = this.persist().finally(() => {
|
|
296
|
-
this.persistPromise = null;
|
|
297
|
-
});
|
|
298
|
-
await this.persistPromise;
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
markDirtyAndSchedulePersist() {
|
|
302
|
-
if (this.frozen) return;
|
|
303
|
-
this.cleanShutdown = false;
|
|
304
|
-
this.dirty = true;
|
|
305
|
-
if (this.persistTimer) return;
|
|
306
|
-
this.persistTimer = setTimeout(() => {
|
|
307
|
-
this.persistTimer = null;
|
|
308
|
-
this.flush().catch((err) => {
|
|
309
|
-
LogService.warn("MatrixSyncCacheStore", "Failed to persist Matrix sync store:", err);
|
|
310
|
-
});
|
|
311
|
-
}, PERSIST_DEBOUNCE_MS);
|
|
312
|
-
this.persistTimer.unref?.();
|
|
313
|
-
}
|
|
314
|
-
async persist() {
|
|
315
|
-
this.assertStoreAvailable();
|
|
316
|
-
this.dirty = false;
|
|
317
|
-
const payload = {
|
|
318
|
-
version: 1,
|
|
319
|
-
savedSync: this.savedSync ? cloneJson(this.savedSync) : null,
|
|
320
|
-
cleanShutdown: this.cleanShutdown,
|
|
321
|
-
...this.savedClientOptions ? { clientOptions: cloneJson(this.savedClientOptions) } : {}
|
|
322
|
-
};
|
|
323
|
-
try {
|
|
324
|
-
await this.persistLock(async () => {
|
|
325
|
-
writeMatrixSyncCacheStateToSyncStore({
|
|
326
|
-
payload,
|
|
327
|
-
store: this.store
|
|
328
|
-
});
|
|
329
|
-
claimCurrentTokenStorageState({ rootDir: this.storageRootDir });
|
|
330
|
-
});
|
|
331
|
-
} catch (err) {
|
|
332
|
-
this.dirty = true;
|
|
333
|
-
throw err;
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
assertStoreAvailable() {
|
|
337
|
-
if (this.storeUnavailableError == null) return;
|
|
338
|
-
throw new Error("Matrix sync cache SQLite store is unavailable; cannot persist sync state", { cause: this.storeUnavailableError });
|
|
339
|
-
}
|
|
340
|
-
};
|
|
341
|
-
function createNoopMatrixSyncCacheStore() {
|
|
342
|
-
return {
|
|
343
|
-
register: () => {},
|
|
344
|
-
registerIfAbsent: () => false,
|
|
345
|
-
lookup: () => void 0,
|
|
346
|
-
lookupMany: (keys) => keys.map(() => ({
|
|
347
|
-
ok: true,
|
|
348
|
-
value: void 0
|
|
349
|
-
})),
|
|
350
|
-
consume: () => void 0,
|
|
351
|
-
delete: () => false,
|
|
352
|
-
entries: () => [],
|
|
353
|
-
clear: () => {}
|
|
354
|
-
};
|
|
355
|
-
}
|
|
356
|
-
function openMatrixSyncCacheStore(storageRootDir) {
|
|
357
|
-
return getMatrixRuntime().state.openSyncKeyedStore(openMatrixSyncCacheStoreOptions(storageRootDir));
|
|
358
|
-
}
|
|
359
|
-
//#endregion
|
|
360
144
|
//#region extensions/matrix/src/matrix/sdk/client-sync-quiesce.ts
|
|
361
145
|
const MATRIX_SYNC_QUIESCE_TIMEOUT_MS = 5e3;
|
|
362
|
-
const MATRIX_JS_SDK_SYNC_VERSION = "42.
|
|
146
|
+
const MATRIX_JS_SDK_SYNC_VERSION = "42.3.0";
|
|
363
147
|
const matrixJsSdkPackage = createRequire(import.meta.url)("matrix-js-sdk/package.json");
|
|
364
148
|
function requireMatrixClassicSyncInternals(syncApi) {
|
|
365
149
|
return syncApi;
|
|
@@ -426,6 +210,124 @@ async function quiesceMatrixClientSync(params) {
|
|
|
426
210
|
});
|
|
427
211
|
}
|
|
428
212
|
//#endregion
|
|
213
|
+
//#region extensions/matrix/src/matrix/sdk/client-sync-ready.ts
|
|
214
|
+
async function waitForMatrixInitialSyncReady(params) {
|
|
215
|
+
const timeoutMs = params.timeoutMs ?? 3e4;
|
|
216
|
+
if (isMatrixReadySyncState(params.state)) return;
|
|
217
|
+
if (isMatrixAccessTokenInvalidatedError(params.error)) throw params.error instanceof Error ? params.error : new Error("Matrix access token invalidated", { cause: params.error });
|
|
218
|
+
if (isMatrixTerminalSyncState(params.state)) throw new Error(`Matrix sync entered ${params.state} during startup`);
|
|
219
|
+
await new Promise((resolve, reject) => {
|
|
220
|
+
let settled = false;
|
|
221
|
+
let timeoutId;
|
|
222
|
+
const abortSignal = params.abortSignal;
|
|
223
|
+
const cleanup = () => {
|
|
224
|
+
params.emitter.off("sync.state", onSyncState);
|
|
225
|
+
params.emitter.off("sync.unexpected_error", onUnexpectedError);
|
|
226
|
+
abortSignal?.removeEventListener("abort", onAbort);
|
|
227
|
+
if (timeoutId) {
|
|
228
|
+
clearTimeout(timeoutId);
|
|
229
|
+
timeoutId = void 0;
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
const settleResolve = () => {
|
|
233
|
+
if (settled) return;
|
|
234
|
+
settled = true;
|
|
235
|
+
cleanup();
|
|
236
|
+
resolve();
|
|
237
|
+
};
|
|
238
|
+
const settleReject = (error) => {
|
|
239
|
+
if (settled) return;
|
|
240
|
+
settled = true;
|
|
241
|
+
cleanup();
|
|
242
|
+
reject(error);
|
|
243
|
+
};
|
|
244
|
+
const onSyncState = (state, _prevState, error) => {
|
|
245
|
+
if (isMatrixReadySyncState(state)) {
|
|
246
|
+
settleResolve();
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
if (isMatrixAccessTokenInvalidatedError(error)) {
|
|
250
|
+
settleReject(error instanceof Error ? error : /* @__PURE__ */ new Error("Matrix access token invalidated"));
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
if (isMatrixTerminalSyncState(state)) settleReject(new Error(error instanceof Error && error.message ? error.message : `Matrix sync entered ${state} during startup`));
|
|
254
|
+
};
|
|
255
|
+
const onUnexpectedError = (error) => {
|
|
256
|
+
settleReject(error);
|
|
257
|
+
};
|
|
258
|
+
const onAbort = () => {
|
|
259
|
+
settleReject(createMatrixStartupAbortError());
|
|
260
|
+
};
|
|
261
|
+
params.emitter.on("sync.state", onSyncState);
|
|
262
|
+
params.emitter.on("sync.unexpected_error", onUnexpectedError);
|
|
263
|
+
if (abortSignal?.aborted) {
|
|
264
|
+
onAbort();
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
abortSignal?.addEventListener("abort", onAbort, { once: true });
|
|
268
|
+
timeoutId = setTimeout(() => {
|
|
269
|
+
settleReject(/* @__PURE__ */ new Error(`Matrix client did not reach a ready sync state within ${timeoutMs}ms`));
|
|
270
|
+
}, timeoutMs);
|
|
271
|
+
timeoutId.unref?.();
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
//#endregion
|
|
275
|
+
//#region extensions/matrix/src/matrix/sdk/message-wire-dispatch.ts
|
|
276
|
+
function resolveMessageWireDispatch(resource, init) {
|
|
277
|
+
if ((init?.method ?? (resource instanceof Request ? resource.method : "GET")).toUpperCase() !== "PUT") return null;
|
|
278
|
+
const rawUrl = typeof resource === "string" ? resource : resource instanceof URL ? resource.href : resource.url;
|
|
279
|
+
const segments = new URL(rawUrl).pathname.split("/").filter(Boolean);
|
|
280
|
+
const roomsIndex = segments.lastIndexOf("rooms");
|
|
281
|
+
if (roomsIndex < 0 || segments[roomsIndex + 2] !== "send" || segments.length !== roomsIndex + 5) return null;
|
|
282
|
+
const eventType = decodeURIComponent(segments[roomsIndex + 3] ?? "");
|
|
283
|
+
if (eventType !== "m.room.message" && eventType !== "m.room.encrypted") return null;
|
|
284
|
+
return {
|
|
285
|
+
roomId: decodeURIComponent(segments[roomsIndex + 1] ?? ""),
|
|
286
|
+
eventType,
|
|
287
|
+
transactionId: decodeURIComponent(segments[roomsIndex + 4] ?? ""),
|
|
288
|
+
requestPath: new URL(rawUrl).pathname
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
var MatrixMessageWireDispatchGuards = class {
|
|
292
|
+
constructor() {
|
|
293
|
+
this.guards = /* @__PURE__ */ new Map();
|
|
294
|
+
}
|
|
295
|
+
captureCurrentness(resource, init, fallback) {
|
|
296
|
+
const dispatch = resolveMessageWireDispatch(resource, init);
|
|
297
|
+
const entry = dispatch ? this.guards.get(dispatch.transactionId) : void 0;
|
|
298
|
+
if (!entry) return fallback;
|
|
299
|
+
const assertCurrent = entry.assertCurrent;
|
|
300
|
+
return assertCurrent ? () => {
|
|
301
|
+
try {
|
|
302
|
+
assertCurrent();
|
|
303
|
+
} catch (error) {
|
|
304
|
+
entry.currentnessRejected = true;
|
|
305
|
+
throw error;
|
|
306
|
+
}
|
|
307
|
+
} : void 0;
|
|
308
|
+
}
|
|
309
|
+
wasCurrentnessRejected(transactionId) {
|
|
310
|
+
return transactionId !== void 0 && this.guards.get(transactionId)?.currentnessRejected === true;
|
|
311
|
+
}
|
|
312
|
+
beforeRequest(resource, init) {
|
|
313
|
+
const dispatch = resolveMessageWireDispatch(resource, init);
|
|
314
|
+
return dispatch ? Promise.resolve(this.guards.get(dispatch.transactionId)?.guard?.(dispatch)) : void 0;
|
|
315
|
+
}
|
|
316
|
+
async run(params) {
|
|
317
|
+
if (!params.transactionId || !params.guard && !params.assertCurrent) return await params.run();
|
|
318
|
+
if (this.guards.has(params.transactionId)) throw new Error(`Matrix transaction ${params.transactionId} already has a dispatch guard`);
|
|
319
|
+
this.guards.set(params.transactionId, {
|
|
320
|
+
guard: params.guard,
|
|
321
|
+
assertCurrent: params.assertCurrent
|
|
322
|
+
});
|
|
323
|
+
try {
|
|
324
|
+
return await params.run();
|
|
325
|
+
} finally {
|
|
326
|
+
this.guards.delete(params.transactionId);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
};
|
|
330
|
+
//#endregion
|
|
429
331
|
//#region extensions/matrix/src/matrix/sdk/recovery-key-store.ts
|
|
430
332
|
function isRepairableSecretStorageAccessError(err) {
|
|
431
333
|
const message = formatMatrixErrorReason(err);
|
|
@@ -435,63 +337,95 @@ function isRepairableSecretStorageAccessError(err) {
|
|
|
435
337
|
return false;
|
|
436
338
|
}
|
|
437
339
|
var MatrixRecoveryKeyStore = class {
|
|
438
|
-
constructor(recoveryKeyPath) {
|
|
340
|
+
constructor(recoveryKeyPath, stateRuntime) {
|
|
439
341
|
this.secretStorageKeyCache = /* @__PURE__ */ new Map();
|
|
440
342
|
this.stagedRecoveryKey = null;
|
|
441
343
|
this.stagedRecoveryKeyUsed = false;
|
|
442
344
|
this.stagedCacheKeyIds = /* @__PURE__ */ new Set();
|
|
345
|
+
this.pendingPersistence = Promise.resolve();
|
|
346
|
+
this.closed = false;
|
|
443
347
|
this.recoveryKeyPath = recoveryKeyPath;
|
|
444
348
|
this.storageRootDir = recoveryKeyPath ? path.dirname(recoveryKeyPath) : void 0;
|
|
445
|
-
if (
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
this.
|
|
449
|
-
|
|
349
|
+
if (recoveryKeyPath) {
|
|
350
|
+
this.stateRuntime = stateRuntime ?? getMatrixRuntime().state;
|
|
351
|
+
const runtime = this.stateRuntime;
|
|
352
|
+
this.enqueuePersistence(async () => {
|
|
353
|
+
try {
|
|
354
|
+
await migrateLegacyMatrixRecoveryKeyFilePathToStoreAsync(recoveryKeyPath, runtime);
|
|
355
|
+
} catch (err) {
|
|
356
|
+
this.legacyRecoveryKeyPathOnMigrationFailure = recoveryKeyPath;
|
|
357
|
+
LogService.warn("MatrixClientLite", "Failed to migrate Matrix recovery key state:", err);
|
|
358
|
+
}
|
|
359
|
+
});
|
|
450
360
|
}
|
|
451
361
|
}
|
|
362
|
+
enqueuePersistence(run) {
|
|
363
|
+
if (this.closed) return Promise.reject(/* @__PURE__ */ new Error("Matrix recovery key store is closed"));
|
|
364
|
+
const pending = this.pendingPersistence.then(run);
|
|
365
|
+
this.pendingPersistence = pending.then(() => {}, () => {});
|
|
366
|
+
return pending;
|
|
367
|
+
}
|
|
368
|
+
async afterPersistence(read) {
|
|
369
|
+
for (;;) {
|
|
370
|
+
const pending = this.pendingPersistence;
|
|
371
|
+
await pending;
|
|
372
|
+
if (pending === this.pendingPersistence) return read();
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
async drainPendingPersistence() {
|
|
376
|
+
await this.afterPersistence(() => {});
|
|
377
|
+
}
|
|
378
|
+
async close() {
|
|
379
|
+
this.closed = true;
|
|
380
|
+
await this.drainPendingPersistence();
|
|
381
|
+
}
|
|
452
382
|
buildCryptoCallbacks() {
|
|
383
|
+
const getSecretStorageKey = ({ keys }) => this.afterPersistence(async () => {
|
|
384
|
+
if (this.closed) return null;
|
|
385
|
+
const requestedKeyIds = Object.keys(keys ?? {});
|
|
386
|
+
if (requestedKeyIds.length === 0) return null;
|
|
387
|
+
const staged = this.resolveStagedSecretStorageKey(requestedKeyIds);
|
|
388
|
+
if (staged) return staged;
|
|
389
|
+
for (const keyId of requestedKeyIds) {
|
|
390
|
+
const cached = this.secretStorageKeyCache.get(keyId);
|
|
391
|
+
if (cached) return [keyId, new Uint8Array(cached.key)];
|
|
392
|
+
}
|
|
393
|
+
const pending = this.pendingPersistence;
|
|
394
|
+
const stored = await this.loadStoredRecoveryKey();
|
|
395
|
+
if (this.closed) return null;
|
|
396
|
+
if (pending !== this.pendingPersistence) return getSecretStorageKey({ keys });
|
|
397
|
+
if (!stored?.privateKeyBase64) return null;
|
|
398
|
+
const privateKey = new Uint8Array(Buffer.from(stored.privateKeyBase64, "base64"));
|
|
399
|
+
if (privateKey.length === 0) return null;
|
|
400
|
+
if (stored.keyId && requestedKeyIds.includes(stored.keyId)) {
|
|
401
|
+
this.rememberSecretStorageKey(stored.keyId, privateKey, stored.keyInfo);
|
|
402
|
+
return [stored.keyId, privateKey];
|
|
403
|
+
}
|
|
404
|
+
const firstRequestedKeyId = requestedKeyIds[0];
|
|
405
|
+
if (!firstRequestedKeyId) return null;
|
|
406
|
+
this.rememberSecretStorageKey(firstRequestedKeyId, privateKey, stored.keyInfo);
|
|
407
|
+
return [firstRequestedKeyId, privateKey];
|
|
408
|
+
});
|
|
453
409
|
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
|
-
},
|
|
410
|
+
getSecretStorageKey,
|
|
476
411
|
cacheSecretStorageKey: (keyId, keyInfo, key) => {
|
|
412
|
+
if (this.closed) return;
|
|
477
413
|
const privateKey = new Uint8Array(key);
|
|
478
414
|
const normalizedKeyInfo = {
|
|
479
415
|
passphrase: keyInfo?.passphrase,
|
|
480
416
|
name: typeof keyInfo?.name === "string" ? keyInfo.name : void 0
|
|
481
417
|
};
|
|
482
418
|
this.rememberSecretStorageKey(keyId, privateKey, normalizedKeyInfo);
|
|
483
|
-
const stored = this.loadStoredRecoveryKey();
|
|
484
419
|
this.saveRecoveryKeyToDisk({
|
|
485
420
|
keyId,
|
|
486
421
|
keyInfo: normalizedKeyInfo,
|
|
487
|
-
privateKey
|
|
488
|
-
|
|
489
|
-
});
|
|
422
|
+
privateKey
|
|
423
|
+
}, true);
|
|
490
424
|
}
|
|
491
425
|
};
|
|
492
426
|
}
|
|
493
|
-
getRecoveryKeySummary() {
|
|
494
|
-
const stored = this.loadStoredRecoveryKey();
|
|
427
|
+
async getRecoveryKeySummary() {
|
|
428
|
+
const stored = await this.afterPersistence(() => this.loadStoredRecoveryKey());
|
|
495
429
|
if (!stored) return null;
|
|
496
430
|
return {
|
|
497
431
|
encodedPrivateKey: stored.encodedPrivateKey,
|
|
@@ -500,16 +434,22 @@ var MatrixRecoveryKeyStore = class {
|
|
|
500
434
|
};
|
|
501
435
|
}
|
|
502
436
|
getSecretStorageKeyCandidate(keyId) {
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
437
|
+
return this.afterPersistence(async () => {
|
|
438
|
+
if (this.closed) return null;
|
|
439
|
+
const normalizedKeyId = keyId.trim();
|
|
440
|
+
if (!normalizedKeyId) return null;
|
|
441
|
+
const staged = this.resolveStagedSecretStorageKey([normalizedKeyId]);
|
|
442
|
+
if (staged) return staged[1];
|
|
443
|
+
const pending = this.pendingPersistence;
|
|
444
|
+
const stored = await this.loadStoredRecoveryKey();
|
|
445
|
+
if (this.closed) return null;
|
|
446
|
+
if (pending !== this.pendingPersistence) return this.getSecretStorageKeyCandidate(keyId);
|
|
447
|
+
if (!stored?.privateKeyBase64) return null;
|
|
448
|
+
const privateKey = new Uint8Array(Buffer.from(stored.privateKeyBase64, "base64"));
|
|
449
|
+
if (privateKey.length === 0) return null;
|
|
450
|
+
this.rememberSecretStorageKey(normalizedKeyId, privateKey, stored.keyInfo);
|
|
451
|
+
return privateKey;
|
|
452
|
+
});
|
|
513
453
|
}
|
|
514
454
|
resolveEncodedRecoveryKeyInput(params) {
|
|
515
455
|
const encodedPrivateKey = params.encodedPrivateKey.trim();
|
|
@@ -525,54 +465,52 @@ var MatrixRecoveryKeyStore = class {
|
|
|
525
465
|
encodedPrivateKey,
|
|
526
466
|
privateKey,
|
|
527
467
|
keyId,
|
|
528
|
-
keyInfo: params.keyInfo
|
|
468
|
+
keyInfo: params.keyInfo
|
|
529
469
|
};
|
|
530
470
|
}
|
|
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
471
|
stageEncodedRecoveryKey(params) {
|
|
543
472
|
const prepared = this.resolveEncodedRecoveryKeyInput(params);
|
|
544
|
-
this.
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
473
|
+
return this.enqueuePersistence(async () => {
|
|
474
|
+
const keyInfo = prepared.keyInfo ?? (await this.loadStoredRecoveryKey())?.keyInfo;
|
|
475
|
+
this.clearStagedCache();
|
|
476
|
+
this.stagedRecoveryKey = {
|
|
477
|
+
version: 1,
|
|
478
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
479
|
+
keyId: prepared.keyId,
|
|
480
|
+
encodedPrivateKey: prepared.encodedPrivateKey,
|
|
481
|
+
privateKeyBase64: Buffer.from(prepared.privateKey).toString("base64"),
|
|
482
|
+
keyInfo
|
|
483
|
+
};
|
|
484
|
+
});
|
|
553
485
|
}
|
|
554
486
|
hasStagedRecoveryKeyBeenUsed() {
|
|
555
487
|
return this.stagedRecoveryKeyUsed;
|
|
556
488
|
}
|
|
557
|
-
commitStagedRecoveryKey(params) {
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
489
|
+
async commitStagedRecoveryKey(params) {
|
|
490
|
+
await this.enqueuePersistence(async () => {
|
|
491
|
+
if (!this.stagedRecoveryKey) return;
|
|
492
|
+
const staged = this.stagedRecoveryKey;
|
|
493
|
+
const privateKey = new Uint8Array(Buffer.from(staged.privateKeyBase64, "base64"));
|
|
494
|
+
const keyId = typeof params?.keyId === "string" && params.keyId.trim() ? params.keyId.trim() : staged.keyId;
|
|
495
|
+
await this.persistRecoveryKey({
|
|
496
|
+
keyId,
|
|
497
|
+
keyInfo: params?.keyInfo ?? staged.keyInfo,
|
|
498
|
+
privateKey,
|
|
499
|
+
encodedPrivateKey: staged.encodedPrivateKey
|
|
500
|
+
});
|
|
501
|
+
this.clearStagedRecoveryKeyTracking();
|
|
567
502
|
});
|
|
568
|
-
this.clearStagedRecoveryKeyTracking();
|
|
569
503
|
return this.getRecoveryKeySummary();
|
|
570
504
|
}
|
|
571
505
|
discardStagedRecoveryKey() {
|
|
506
|
+
return this.enqueuePersistence(async () => this.clearStagedCache());
|
|
507
|
+
}
|
|
508
|
+
clearStagedCache() {
|
|
572
509
|
for (const keyId of this.stagedCacheKeyIds) this.secretStorageKeyCache.delete(keyId);
|
|
573
510
|
this.clearStagedRecoveryKeyTracking();
|
|
574
511
|
}
|
|
575
512
|
async bootstrapSecretStorageWithRecoveryKey(crypto, options = {}) {
|
|
513
|
+
await this.drainPendingPersistence();
|
|
576
514
|
let status = null;
|
|
577
515
|
const getSecretStorageStatus = crypto.getSecretStorageStatus;
|
|
578
516
|
if (typeof getSecretStorageStatus === "function") try {
|
|
@@ -583,7 +521,7 @@ var MatrixRecoveryKeyStore = class {
|
|
|
583
521
|
const hasDefaultSecretStorageKey = Boolean(status?.defaultKeyId);
|
|
584
522
|
const hasKnownInvalidSecrets = Object.values(status?.secretStorageKeyValidityMap ?? {}).some((valid) => !valid);
|
|
585
523
|
let generatedRecoveryKey = false;
|
|
586
|
-
const storedRecovery = this.loadStoredRecoveryKey();
|
|
524
|
+
const storedRecovery = await this.afterPersistence(() => this.loadStoredRecoveryKey());
|
|
587
525
|
const stagedRecovery = this.stagedRecoveryKey;
|
|
588
526
|
const sourceRecovery = options.forceNewRecoveryKey === true ? null : stagedRecovery ?? storedRecovery;
|
|
589
527
|
let recoveryKey = sourceRecovery ? {
|
|
@@ -595,7 +533,7 @@ var MatrixRecoveryKeyStore = class {
|
|
|
595
533
|
const defaultKeyId = status.defaultKeyId;
|
|
596
534
|
if (!stagedRecovery) {
|
|
597
535
|
this.rememberSecretStorageKey(defaultKeyId, recoveryKey.privateKey, recoveryKey.keyInfo);
|
|
598
|
-
if (storedRecovery && storedRecovery.keyId !== defaultKeyId) this.saveRecoveryKeyToDisk({
|
|
536
|
+
if (storedRecovery && storedRecovery.keyId !== defaultKeyId) await this.saveRecoveryKeyToDisk({
|
|
599
537
|
keyId: defaultKeyId,
|
|
600
538
|
keyInfo: recoveryKey.keyInfo,
|
|
601
539
|
privateKey: recoveryKey.privateKey,
|
|
@@ -610,7 +548,7 @@ var MatrixRecoveryKeyStore = class {
|
|
|
610
548
|
}
|
|
611
549
|
if (typeof crypto.createRecoveryKeyFromPassphrase !== "function") throw new Error("Matrix crypto backend does not support recovery key generation (createRecoveryKeyFromPassphrase missing)");
|
|
612
550
|
recoveryKey = await crypto.createRecoveryKeyFromPassphrase();
|
|
613
|
-
this.saveRecoveryKeyToDisk(recoveryKey);
|
|
551
|
+
await this.saveRecoveryKeyToDisk(recoveryKey);
|
|
614
552
|
generatedRecoveryKey = true;
|
|
615
553
|
return recoveryKey;
|
|
616
554
|
};
|
|
@@ -622,16 +560,24 @@ var MatrixRecoveryKeyStore = class {
|
|
|
622
560
|
secretStorageOptions.createSecretStorageKey = ensureRecoveryKey;
|
|
623
561
|
}
|
|
624
562
|
try {
|
|
625
|
-
|
|
563
|
+
try {
|
|
564
|
+
await crypto.bootstrapSecretStorage(secretStorageOptions);
|
|
565
|
+
} finally {
|
|
566
|
+
await this.drainPendingPersistence();
|
|
567
|
+
}
|
|
626
568
|
} catch (err) {
|
|
627
569
|
if (!(options.allowSecretStorageRecreateWithoutRecoveryKey === true && hasDefaultSecretStorageKey && isRepairableSecretStorageAccessError(err))) throw err;
|
|
628
570
|
recoveryKey = null;
|
|
629
571
|
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
|
-
|
|
572
|
+
try {
|
|
573
|
+
await crypto.bootstrapSecretStorage({
|
|
574
|
+
setupNewSecretStorage: true,
|
|
575
|
+
setupNewKeyBackup: options.setupNewKeyBackup === true,
|
|
576
|
+
createSecretStorageKey: ensureRecoveryKey
|
|
577
|
+
});
|
|
578
|
+
} finally {
|
|
579
|
+
await this.drainPendingPersistence();
|
|
580
|
+
}
|
|
635
581
|
}
|
|
636
582
|
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
583
|
}
|
|
@@ -662,17 +608,20 @@ var MatrixRecoveryKeyStore = class {
|
|
|
662
608
|
keyInfo
|
|
663
609
|
});
|
|
664
610
|
}
|
|
665
|
-
loadStoredRecoveryKey() {
|
|
666
|
-
if (!this.recoveryKeyPath) return null;
|
|
611
|
+
async loadStoredRecoveryKey() {
|
|
612
|
+
if (!this.recoveryKeyPath || !this.stateRuntime) return null;
|
|
667
613
|
try {
|
|
668
|
-
const stored =
|
|
614
|
+
const stored = await readMatrixRecoveryKeyStateForPathAsync(this.recoveryKeyPath, this.stateRuntime);
|
|
669
615
|
if (stored) return stored;
|
|
670
616
|
} catch {}
|
|
671
617
|
if (this.legacyRecoveryKeyPathOnMigrationFailure) return readLegacyMatrixRecoveryKeyFile(this.legacyRecoveryKeyPathOnMigrationFailure);
|
|
672
618
|
return null;
|
|
673
619
|
}
|
|
674
|
-
saveRecoveryKeyToDisk(params) {
|
|
675
|
-
|
|
620
|
+
saveRecoveryKeyToDisk(params, preserveEncodedPrivateKey = false) {
|
|
621
|
+
return this.enqueuePersistence(() => this.persistRecoveryKey(params, preserveEncodedPrivateKey));
|
|
622
|
+
}
|
|
623
|
+
async persistRecoveryKey(params, preserveEncodedPrivateKey = false) {
|
|
624
|
+
if (!this.recoveryKeyPath || !this.stateRuntime) return;
|
|
676
625
|
try {
|
|
677
626
|
const payload = {
|
|
678
627
|
version: 1,
|
|
@@ -685,9 +634,11 @@ var MatrixRecoveryKeyStore = class {
|
|
|
685
634
|
name: params.keyInfo.name
|
|
686
635
|
} : void 0
|
|
687
636
|
};
|
|
688
|
-
|
|
637
|
+
await writeMatrixRecoveryKeyStateForPathAsync({
|
|
689
638
|
recoveryKeyPath: this.recoveryKeyPath,
|
|
690
|
-
payload
|
|
639
|
+
payload,
|
|
640
|
+
stateRuntime: this.stateRuntime,
|
|
641
|
+
preserveEncodedPrivateKey
|
|
691
642
|
});
|
|
692
643
|
} catch (err) {
|
|
693
644
|
LogService.warn("MatrixClientLite", "Failed to persist recovery key:", err);
|
|
@@ -695,28 +646,60 @@ var MatrixRecoveryKeyStore = class {
|
|
|
695
646
|
}
|
|
696
647
|
};
|
|
697
648
|
//#endregion
|
|
649
|
+
//#region extensions/matrix/src/matrix/sdk/send-scheduler.ts
|
|
650
|
+
/** Keep SDK FIFO/backoff while settling a caller's pre-request rejection only for its event. */
|
|
651
|
+
var MatrixSendScheduler = class extends MatrixScheduler {
|
|
652
|
+
constructor(wasCurrentnessRejected) {
|
|
653
|
+
super();
|
|
654
|
+
this.wasCurrentnessRejected = wasCurrentnessRejected;
|
|
655
|
+
this.queue = new MatrixScheduler();
|
|
656
|
+
}
|
|
657
|
+
setProcessFunction(processEvent) {
|
|
658
|
+
this.queue.setProcessFunction(async (event) => {
|
|
659
|
+
try {
|
|
660
|
+
return {
|
|
661
|
+
kind: "sent",
|
|
662
|
+
result: await withoutMatrixSendCurrentness(() => processEvent(event))
|
|
663
|
+
};
|
|
664
|
+
} catch (error) {
|
|
665
|
+
if (!this.wasCurrentnessRejected(event)) throw error;
|
|
666
|
+
return {
|
|
667
|
+
kind: "rejected",
|
|
668
|
+
error
|
|
669
|
+
};
|
|
670
|
+
}
|
|
671
|
+
});
|
|
672
|
+
}
|
|
673
|
+
queueEvent(event) {
|
|
674
|
+
const queued = this.queue.queueEvent(event);
|
|
675
|
+
return queued ? queued.then((outcome) => {
|
|
676
|
+
if (outcome.kind === "rejected") throw outcome.error;
|
|
677
|
+
return outcome.result;
|
|
678
|
+
}) : null;
|
|
679
|
+
}
|
|
680
|
+
getQueueForEvent(event) {
|
|
681
|
+
return this.queue.getQueueForEvent(event);
|
|
682
|
+
}
|
|
683
|
+
removeEventFromQueue(event) {
|
|
684
|
+
return this.queue.removeEventFromQueue(event);
|
|
685
|
+
}
|
|
686
|
+
};
|
|
687
|
+
//#endregion
|
|
698
688
|
//#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
|
-
}
|
|
689
|
+
const MATRIX_ENCRYPTED_STARTUP_TIMEOUT_MS = 6e4;
|
|
714
690
|
let loadedMatrixCryptoRuntime = null;
|
|
715
|
-
const loadMatrixCryptoRuntime = createLazyRuntimeModule(() => import("./crypto-runtime-
|
|
691
|
+
const loadMatrixCryptoRuntime = createLazyRuntimeModule(() => import("./crypto-runtime-D9qn_Pbj.mjs").then((runtime) => {
|
|
716
692
|
loadedMatrixCryptoRuntime = runtime;
|
|
717
693
|
return runtime;
|
|
718
694
|
}));
|
|
719
695
|
var MatrixClientBase = class {
|
|
696
|
+
withClientCryptoWork(run, requestSignal) {
|
|
697
|
+
this.assertClientActive();
|
|
698
|
+
return withoutMatrixSendCurrentness(() => this.cryptoRequestOwner.run({
|
|
699
|
+
callerAuthority: captureChannelReadAuthority(),
|
|
700
|
+
requestSignal
|
|
701
|
+
}, run));
|
|
702
|
+
}
|
|
720
703
|
constructor(homeserver, accessToken, opts = {}) {
|
|
721
704
|
this.emitter = new EventEmitter();
|
|
722
705
|
this.bridgeRegistered = false;
|
|
@@ -732,11 +715,23 @@ var MatrixClientBase = class {
|
|
|
732
715
|
this.currentSyncError = void 0;
|
|
733
716
|
this.transactionScopeId = null;
|
|
734
717
|
this.transactionScopePromise = null;
|
|
735
|
-
this.messageWireDispatchGuards =
|
|
718
|
+
this.messageWireDispatchGuards = new MatrixMessageWireDispatchGuards();
|
|
719
|
+
this.requestAbortController = new AbortController();
|
|
720
|
+
this.cryptoRequestOwner = new AsyncLocalStorage();
|
|
721
|
+
this.startupPromise = null;
|
|
722
|
+
this.cryptoInitializationPromise = null;
|
|
736
723
|
this.sdkStopped = false;
|
|
737
724
|
this.stopDiscardPromise = null;
|
|
738
725
|
this.idbPersistPromise = null;
|
|
739
726
|
this.idbPersistAbortController = null;
|
|
727
|
+
this.assertClientActive = () => {
|
|
728
|
+
this.requestAbortController.signal.throwIfAborted();
|
|
729
|
+
};
|
|
730
|
+
this.captureRequestAuthority = () => {
|
|
731
|
+
const readAuthority = captureChannelReadAuthority();
|
|
732
|
+
const cryptoOwner = this.cryptoRequestOwner.getStore();
|
|
733
|
+
return cryptoOwner && cryptoOwner.callerAuthority === readAuthority ? this.assertClientActive : readAuthority;
|
|
734
|
+
};
|
|
740
735
|
this.dms = {
|
|
741
736
|
update: async () => {
|
|
742
737
|
return await this.refreshDmCache();
|
|
@@ -751,7 +746,10 @@ var MatrixClientBase = class {
|
|
|
751
746
|
homeserver,
|
|
752
747
|
accessToken,
|
|
753
748
|
ssrfPolicy: opts.ssrfPolicy,
|
|
754
|
-
dispatcherPolicy: opts.dispatcherPolicy
|
|
749
|
+
dispatcherPolicy: opts.dispatcherPolicy,
|
|
750
|
+
captureRequestAuthority: this.captureRequestAuthority,
|
|
751
|
+
captureSendCurrentness: () => captureMatrixSendCurrentness(this),
|
|
752
|
+
signal: this.requestAbortController.signal
|
|
755
753
|
});
|
|
756
754
|
this.localTimeoutMs = resolveMatrixLocalTimeoutMs(opts.localTimeoutMs);
|
|
757
755
|
this.initialSyncLimit = opts.initialSyncLimit;
|
|
@@ -759,16 +757,25 @@ var MatrixClientBase = class {
|
|
|
759
757
|
this.encryptionEnabled = opts.encryption === true;
|
|
760
758
|
const { password: loginPassword } = opts;
|
|
761
759
|
this.password = loginPassword;
|
|
762
|
-
this.syncStore = opts.
|
|
760
|
+
this.syncStore = opts.syncStore;
|
|
763
761
|
this.idbSnapshotPath = opts.idbSnapshotPath;
|
|
764
762
|
this.cryptoDatabasePrefix = opts.cryptoDatabasePrefix;
|
|
763
|
+
this.stateRuntime = opts.stateRuntime;
|
|
765
764
|
this.selfUserId = opts.userId?.trim() || null;
|
|
766
765
|
this.autoBootstrapCrypto = opts.autoBootstrapCrypto !== false;
|
|
767
|
-
this.recoveryKeyStore = new MatrixRecoveryKeyStore(opts.recoveryKeyPath);
|
|
766
|
+
this.recoveryKeyStore = new MatrixRecoveryKeyStore(opts.recoveryKeyPath, opts.stateRuntime);
|
|
768
767
|
const cryptoCallbacks = this.encryptionEnabled ? this.recoveryKeyStore.buildCryptoCallbacks() : void 0;
|
|
769
768
|
const guardedFetch = createMatrixGuardedFetch({
|
|
769
|
+
captureRequestSignal: () => this.cryptoRequestOwner.getStore()?.requestSignal,
|
|
770
770
|
ssrfPolicy: opts.ssrfPolicy,
|
|
771
|
-
dispatcherPolicy: opts.dispatcherPolicy
|
|
771
|
+
dispatcherPolicy: opts.dispatcherPolicy,
|
|
772
|
+
captureRequestAuthority: this.captureRequestAuthority,
|
|
773
|
+
captureSendCurrentness: (resource, init) => this.messageWireDispatchGuards.captureCurrentness(resource, init, captureMatrixSendCurrentness(this)),
|
|
774
|
+
signal: this.requestAbortController.signal,
|
|
775
|
+
beforeRequest: async (resource, init) => {
|
|
776
|
+
await this.recoveryKeyStore.drainPendingPersistence();
|
|
777
|
+
await this.messageWireDispatchGuards.beforeRequest(resource, init);
|
|
778
|
+
}
|
|
772
779
|
});
|
|
773
780
|
this.client = createClient({
|
|
774
781
|
baseUrl: homeserver,
|
|
@@ -777,11 +784,8 @@ var MatrixClientBase = class {
|
|
|
777
784
|
deviceId: opts.deviceId,
|
|
778
785
|
logger: createMatrixJsSdkClientLogger("MatrixClient"),
|
|
779
786
|
localTimeoutMs: this.localTimeoutMs,
|
|
780
|
-
fetchFn:
|
|
781
|
-
|
|
782
|
-
if (dispatch) await this.messageWireDispatchGuards.get(dispatch.transactionId)?.(dispatch);
|
|
783
|
-
return await guardedFetch(resource, init);
|
|
784
|
-
}),
|
|
787
|
+
fetchFn: guardedFetch,
|
|
788
|
+
scheduler: new MatrixSendScheduler((event) => this.messageWireDispatchGuards.wasCurrentnessRejected(event.getTxnId())),
|
|
785
789
|
store: this.syncStore,
|
|
786
790
|
cryptoCallbacks,
|
|
787
791
|
verificationMethods: [
|
|
@@ -791,16 +795,11 @@ var MatrixClientBase = class {
|
|
|
791
795
|
VerificationMethod.Reciprocate
|
|
792
796
|
]
|
|
793
797
|
});
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
try {
|
|
800
|
-
return await params.run();
|
|
801
|
-
} finally {
|
|
802
|
-
this.messageWireDispatchGuards.delete(params.transactionId);
|
|
803
|
-
}
|
|
798
|
+
const decryptEventIfNeeded = this.client.decryptEventIfNeeded.bind(this.client);
|
|
799
|
+
this.client.decryptEventIfNeeded = (event, options) => {
|
|
800
|
+
this.captureRequestAuthority()?.();
|
|
801
|
+
return this.withClientCryptoWork(() => decryptEventIfNeeded(event, options));
|
|
802
|
+
};
|
|
804
803
|
}
|
|
805
804
|
on(eventName, listener) {
|
|
806
805
|
this.emitter.on(eventName, listener);
|
|
@@ -841,7 +840,7 @@ var MatrixClientBase = class {
|
|
|
841
840
|
const defaultKeyId = await secretStorage.getDefaultKeyId();
|
|
842
841
|
if (!defaultKeyId) return false;
|
|
843
842
|
const keyTuple = await secretStorage.getKey(defaultKeyId);
|
|
844
|
-
const key = this.recoveryKeyStore.getSecretStorageKeyCandidate(defaultKeyId);
|
|
843
|
+
const key = await this.recoveryKeyStore.getSecretStorageKeyCandidate(defaultKeyId);
|
|
845
844
|
if (!keyTuple || !key) return false;
|
|
846
845
|
const keyInfo = keyTuple[1];
|
|
847
846
|
if (!keyInfo.iv?.trim() || !keyInfo.mac?.trim()) return false;
|
|
@@ -874,98 +873,84 @@ var MatrixClientBase = class {
|
|
|
874
873
|
});
|
|
875
874
|
}
|
|
876
875
|
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?.();
|
|
876
|
+
await waitForMatrixInitialSyncReady({
|
|
877
|
+
...params,
|
|
878
|
+
emitter: this.emitter,
|
|
879
|
+
state: this.currentSyncState,
|
|
880
|
+
error: this.currentSyncError
|
|
934
881
|
});
|
|
935
882
|
}
|
|
936
883
|
async startSyncSession(opts) {
|
|
937
884
|
if (this.started) return;
|
|
938
885
|
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
|
-
|
|
886
|
+
const assertCurrent = this.captureRequestAuthority();
|
|
887
|
+
assertCurrent?.();
|
|
888
|
+
this.assertClientActive();
|
|
889
|
+
if (this.startupPromise) {
|
|
890
|
+
await awaitMatrixStartupWithAbort(this.startupPromise, opts.abortSignal);
|
|
891
|
+
return;
|
|
892
|
+
}
|
|
893
|
+
const deadline = new AbortController();
|
|
894
|
+
const signal = AbortSignal.any([
|
|
895
|
+
this.requestAbortController.signal,
|
|
896
|
+
deadline.signal,
|
|
897
|
+
...opts.abortSignal ? [opts.abortSignal] : []
|
|
898
|
+
]);
|
|
899
|
+
const timeout = this.encryptionEnabled ? setTimeout(() => deadline.abort(), opts.readyTimeoutMs ?? MATRIX_ENCRYPTED_STARTUP_TIMEOUT_MS) : void 0;
|
|
900
|
+
timeout?.unref?.();
|
|
901
|
+
const checkActive = () => {
|
|
902
|
+
throwIfMatrixStartupAborted(signal);
|
|
903
|
+
assertCurrent?.();
|
|
904
|
+
this.assertClientActive();
|
|
905
|
+
};
|
|
906
|
+
const startup = (async () => {
|
|
907
|
+
throwIfMatrixStartupAborted(signal);
|
|
908
|
+
await this.ensureCryptoSupportInitialized();
|
|
909
|
+
checkActive();
|
|
910
|
+
throwIfMatrixStartupAborted(signal);
|
|
911
|
+
this.registerBridge();
|
|
912
|
+
await this.withClientCryptoWork(() => this.initializeCryptoIfNeeded(signal), signal);
|
|
913
|
+
checkActive();
|
|
914
|
+
throwIfMatrixStartupAborted(signal);
|
|
915
|
+
await this.withClientCryptoWork(() => this.client.startClient({
|
|
916
|
+
initialSyncLimit: this.initialSyncLimit,
|
|
917
|
+
...this.syncFilter ? { filter: Filter.fromJson(this.selfUserId, "", this.syncFilter) } : {}
|
|
918
|
+
}));
|
|
919
|
+
await this.waitForInitialSyncReady({
|
|
920
|
+
abortSignal: signal,
|
|
921
|
+
timeoutMs: opts.readyTimeoutMs
|
|
922
|
+
});
|
|
923
|
+
checkActive();
|
|
924
|
+
throwIfMatrixStartupAborted(signal);
|
|
925
|
+
if (this.encryptionEnabled && this.cryptoInitialized) {
|
|
926
|
+
const { reconcileJoinedRoomEncryption } = await import("./joined-room-encryption-BCtxQ3hR.mjs");
|
|
927
|
+
checkActive();
|
|
928
|
+
await this.withClientCryptoWork(() => reconcileJoinedRoomEncryption(this.client, signal, checkActive), signal);
|
|
929
|
+
checkActive();
|
|
930
|
+
}
|
|
931
|
+
clearTimeout(timeout);
|
|
932
|
+
if (opts.bootstrapCrypto && this.autoBootstrapCrypto) await this.bootstrapCryptoIfNeeded(signal);
|
|
933
|
+
throwIfMatrixStartupAborted(signal);
|
|
934
|
+
this.started = true;
|
|
935
|
+
this.emitOutstandingInviteEvents();
|
|
936
|
+
await this.refreshDmCache().catch(noop);
|
|
937
|
+
})();
|
|
938
|
+
this.startupPromise = startup;
|
|
939
|
+
startup.finally(() => {
|
|
940
|
+
clearTimeout(timeout);
|
|
941
|
+
if (this.startupPromise === startup) this.startupPromise = null;
|
|
942
|
+
}).catch(noop);
|
|
943
|
+
await awaitMatrixStartupWithAbort(startup, signal);
|
|
959
944
|
}
|
|
960
945
|
async prepareForOneOff() {
|
|
946
|
+
const assertCurrent = this.captureRequestAuthority();
|
|
947
|
+
assertCurrent?.();
|
|
948
|
+
this.assertClientActive();
|
|
961
949
|
if (!this.encryptionEnabled) return;
|
|
962
950
|
await this.ensureCryptoSupportInitialized();
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
const joinedRooms = await this.getJoinedRooms();
|
|
967
|
-
await this.crypto.prepare(joinedRooms);
|
|
968
|
-
} catch {}
|
|
951
|
+
assertCurrent?.();
|
|
952
|
+
await this.withClientCryptoWork(() => this.initializeCryptoIfNeeded());
|
|
953
|
+
assertCurrent?.();
|
|
969
954
|
}
|
|
970
955
|
hasPersistedSyncState() {
|
|
971
956
|
return this.syncStore?.hasSavedSyncFromCleanShutdown() === true;
|
|
@@ -978,8 +963,8 @@ var MatrixClientBase = class {
|
|
|
978
963
|
if (this.sdkStopped) return;
|
|
979
964
|
this.currentSyncState = null;
|
|
980
965
|
this.currentSyncError = void 0;
|
|
981
|
-
this.client.stopClient();
|
|
982
966
|
this.sdkStopped = true;
|
|
967
|
+
this.client.stopClient();
|
|
983
968
|
this.started = false;
|
|
984
969
|
}
|
|
985
970
|
async quiesceSync() {
|
|
@@ -995,34 +980,44 @@ var MatrixClientBase = class {
|
|
|
995
980
|
await this.syncQuiescePromise;
|
|
996
981
|
}
|
|
997
982
|
async drainPendingDecryptions(reason = "matrix client shutdown") {
|
|
998
|
-
await this.decryptBridge?.drainPendingDecryptions(reason);
|
|
983
|
+
await this.withClientCryptoWork(() => this.decryptBridge?.drainPendingDecryptions(reason));
|
|
999
984
|
}
|
|
1000
985
|
stop() {
|
|
1001
986
|
this.stopAndPersist().catch(() => this.stopWithoutPersist()).catch(noop);
|
|
1002
987
|
}
|
|
1003
988
|
async stopClientGeneration(persist) {
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
989
|
+
try {
|
|
990
|
+
if (persist) await this.quiesceSync();
|
|
991
|
+
else {
|
|
992
|
+
await this.quiesceSync().catch(noop);
|
|
993
|
+
this.syncStore?.discardPendingSyncCursorPersistence();
|
|
994
|
+
}
|
|
995
|
+
this.requestAbortController.abort(/* @__PURE__ */ new Error("Matrix client generation is no longer active."));
|
|
996
|
+
await this.startupPromise?.catch(noop);
|
|
997
|
+
await this.cryptoInitializationPromise?.catch(noop);
|
|
998
|
+
clearInterval(this.idbPersistTimer ?? void 0);
|
|
1011
999
|
this.idbPersistTimer = null;
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1000
|
+
this.idbPersistAbortController?.abort();
|
|
1001
|
+
const activePeriodicPersist = this.idbPersistPromise;
|
|
1002
|
+
try {
|
|
1003
|
+
this.stopSdkClient();
|
|
1004
|
+
this.decryptBridge?.stop();
|
|
1005
|
+
} finally {
|
|
1006
|
+
this.cryptoRequestOwner.disable();
|
|
1007
|
+
}
|
|
1008
|
+
await Promise.all([this.recoveryKeyStore.close(), activePeriodicPersist]);
|
|
1009
|
+
if (persist) {
|
|
1010
|
+
await (loadedMatrixCryptoRuntime ?? await loadMatrixCryptoRuntime()).persistIdbToDisk({
|
|
1011
|
+
snapshotPath: this.idbSnapshotPath,
|
|
1012
|
+
databasePrefix: this.cryptoDatabasePrefix,
|
|
1013
|
+
strict: true,
|
|
1014
|
+
stateRuntime: this.stateRuntime
|
|
1015
|
+
});
|
|
1016
|
+
this.syncStore?.markCleanShutdown();
|
|
1017
|
+
await this.syncStore?.flush();
|
|
1018
|
+
}
|
|
1019
|
+
} finally {
|
|
1020
|
+
await this.recoveryKeyStore.close();
|
|
1026
1021
|
}
|
|
1027
1022
|
}
|
|
1028
1023
|
async stopAndPersist() {
|
|
@@ -1056,10 +1051,25 @@ var MatrixClientBase = class {
|
|
|
1056
1051
|
this.cryptoBootstrapped = true;
|
|
1057
1052
|
}
|
|
1058
1053
|
async initializeCryptoIfNeeded(abortSignal) {
|
|
1059
|
-
if (!this.encryptionEnabled
|
|
1054
|
+
if (!this.encryptionEnabled) return;
|
|
1055
|
+
if (this.cryptoInitializationPromise) {
|
|
1056
|
+
await this.cryptoInitializationPromise;
|
|
1057
|
+
throwIfMatrixStartupAborted(abortSignal);
|
|
1058
|
+
return;
|
|
1059
|
+
}
|
|
1060
|
+
if (this.cryptoInitialized) return;
|
|
1061
|
+
const initialization = this.initializeCrypto(abortSignal ? AbortSignal.any([abortSignal, this.requestAbortController.signal]) : this.requestAbortController.signal);
|
|
1062
|
+
this.cryptoInitializationPromise = initialization;
|
|
1063
|
+
try {
|
|
1064
|
+
await initialization;
|
|
1065
|
+
} finally {
|
|
1066
|
+
if (this.cryptoInitializationPromise === initialization) this.cryptoInitializationPromise = null;
|
|
1067
|
+
}
|
|
1068
|
+
}
|
|
1069
|
+
async initializeCrypto(abortSignal) {
|
|
1060
1070
|
throwIfMatrixStartupAborted(abortSignal);
|
|
1061
1071
|
const { persistIdbToDisk, restoreIdbFromDisk } = await loadMatrixCryptoRuntime();
|
|
1062
|
-
await restoreIdbFromDisk(this.idbSnapshotPath);
|
|
1072
|
+
await restoreIdbFromDisk(this.idbSnapshotPath, this.stateRuntime);
|
|
1063
1073
|
throwIfMatrixStartupAborted(abortSignal);
|
|
1064
1074
|
try {
|
|
1065
1075
|
await this.client.initRustCrypto({ cryptoDatabasePrefix: this.cryptoDatabasePrefix });
|
|
@@ -1068,7 +1078,8 @@ var MatrixClientBase = class {
|
|
|
1068
1078
|
await persistIdbToDisk({
|
|
1069
1079
|
snapshotPath: this.idbSnapshotPath,
|
|
1070
1080
|
databasePrefix: this.cryptoDatabasePrefix,
|
|
1071
|
-
abortSignal
|
|
1081
|
+
abortSignal,
|
|
1082
|
+
stateRuntime: this.stateRuntime
|
|
1072
1083
|
});
|
|
1073
1084
|
throwIfMatrixStartupAborted(abortSignal);
|
|
1074
1085
|
this.idbPersistTimer = setInterval(() => {
|
|
@@ -1078,7 +1089,8 @@ var MatrixClientBase = class {
|
|
|
1078
1089
|
this.idbPersistPromise = persistIdbToDisk({
|
|
1079
1090
|
snapshotPath: this.idbSnapshotPath,
|
|
1080
1091
|
databasePrefix: this.cryptoDatabasePrefix,
|
|
1081
|
-
abortSignal: abortController.signal
|
|
1092
|
+
abortSignal: abortController.signal,
|
|
1093
|
+
stateRuntime: this.stateRuntime
|
|
1082
1094
|
}).catch(noop).finally(() => {
|
|
1083
1095
|
this.idbPersistPromise = null;
|
|
1084
1096
|
this.idbPersistAbortController = null;
|
|
@@ -1117,8 +1129,9 @@ var MatrixClientCore = class extends MatrixClientBase {
|
|
|
1117
1129
|
return Array.isArray(joined.joined_rooms) ? joined.joined_rooms : [];
|
|
1118
1130
|
}
|
|
1119
1131
|
async getTransactionScopeId() {
|
|
1132
|
+
captureMatrixSendCurrentness(this)?.();
|
|
1120
1133
|
if (this.transactionScopeId) return this.transactionScopeId;
|
|
1121
|
-
const active = this.transactionScopePromise ?? (async () => {
|
|
1134
|
+
const active = this.transactionScopePromise ?? withoutMatrixSendCurrentness(async () => {
|
|
1122
1135
|
const configuredUserId = this.client.getUserId()?.trim() || this.selfUserId;
|
|
1123
1136
|
const configuredDeviceId = this.transactionScopeDeviceId || this.client.getDeviceId()?.trim() || null;
|
|
1124
1137
|
const whoami = await this.doRequest("GET", "/_matrix/client/v3/account/whoami");
|
|
@@ -1130,7 +1143,7 @@ var MatrixClientCore = class extends MatrixClientBase {
|
|
|
1130
1143
|
this.selfUserId = userId;
|
|
1131
1144
|
this.transactionScopeDeviceId = deviceId;
|
|
1132
1145
|
return createHash("sha256").update(this.transactionScopeHomeserver).update("\0").update(userId).update("\0").update(deviceId ?? "").update("\0").update(this.transactionScopeAccessTokenHash).digest("hex");
|
|
1133
|
-
})
|
|
1146
|
+
});
|
|
1134
1147
|
this.transactionScopePromise = active;
|
|
1135
1148
|
try {
|
|
1136
1149
|
const resolved = await active;
|
|
@@ -1181,14 +1194,17 @@ var MatrixClientCore = class extends MatrixClientBase {
|
|
|
1181
1194
|
})).room_id;
|
|
1182
1195
|
}
|
|
1183
1196
|
async sendMessage(roomId, content, transactionId, beforeWireDispatch) {
|
|
1197
|
+
const assertCurrent = captureMatrixSendCurrentness(this);
|
|
1198
|
+
const wireTransactionId = transactionId ?? (beforeWireDispatch || assertCurrent ? this.client.makeTxnId() : void 0);
|
|
1184
1199
|
return await this.runSerializedRoomSend(roomId, async () => {
|
|
1185
|
-
return await this.
|
|
1186
|
-
transactionId,
|
|
1200
|
+
return await this.messageWireDispatchGuards.run({
|
|
1201
|
+
transactionId: wireTransactionId,
|
|
1187
1202
|
guard: beforeWireDispatch,
|
|
1203
|
+
assertCurrent,
|
|
1188
1204
|
run: async () => {
|
|
1189
|
-
if (
|
|
1205
|
+
if (wireTransactionId) {
|
|
1190
1206
|
const room = this.client.getRoom(roomId);
|
|
1191
|
-
const existing = room?.getEventForTxnId?.(
|
|
1207
|
+
const existing = room?.getEventForTxnId?.(wireTransactionId);
|
|
1192
1208
|
if (existing) {
|
|
1193
1209
|
const existingId = existing.getId();
|
|
1194
1210
|
if (existing.status === EventStatus.SENT && existingId && !existingId.startsWith("~")) return existingId;
|
|
@@ -1196,11 +1212,11 @@ var MatrixClientCore = class extends MatrixClientBase {
|
|
|
1196
1212
|
await this.prepareRoomForMessageSend(roomId, existing.getContent());
|
|
1197
1213
|
return (await this.client.resendEvent(existing, room)).event_id;
|
|
1198
1214
|
}
|
|
1199
|
-
throw new Error(`Matrix transaction ${
|
|
1215
|
+
throw new Error(`Matrix transaction ${wireTransactionId} is already active with status ${existing.status ?? "unknown"}`);
|
|
1200
1216
|
}
|
|
1201
1217
|
}
|
|
1202
1218
|
await this.prepareRoomForMessageSend(roomId, content);
|
|
1203
|
-
return (await this.client.sendMessage(roomId, content,
|
|
1219
|
+
return (await this.client.sendMessage(roomId, content, wireTransactionId)).event_id;
|
|
1204
1220
|
}
|
|
1205
1221
|
});
|
|
1206
1222
|
});
|
|
@@ -1348,6 +1364,9 @@ var MatrixClientCore = class extends MatrixClientBase {
|
|
|
1348
1364
|
//#region extensions/matrix/src/matrix/sdk/client-verification.ts
|
|
1349
1365
|
const normalizeNullableVerificationString = normalizeNullableString;
|
|
1350
1366
|
var MatrixClientVerification = class extends MatrixClientCore {
|
|
1367
|
+
async refreshOwnDeviceKeys() {
|
|
1368
|
+
await this.client.getCrypto()?.userHasCrossSigningKeys(await this.getUserId(), true);
|
|
1369
|
+
}
|
|
1351
1370
|
async getRoomKeyBackupStatus() {
|
|
1352
1371
|
if (!this.encryptionEnabled) return {
|
|
1353
1372
|
serverVersion: null,
|
|
@@ -1427,7 +1446,7 @@ var MatrixClientVerification = class extends MatrixClientCore {
|
|
|
1427
1446
|
};
|
|
1428
1447
|
}
|
|
1429
1448
|
async getOwnDeviceVerificationStatus() {
|
|
1430
|
-
const recoveryKey = this.recoveryKeyStore.getRecoveryKeySummary();
|
|
1449
|
+
const recoveryKey = await this.recoveryKeyStore.getRecoveryKeySummary();
|
|
1431
1450
|
const userId = this.client.getUserId() ?? this.selfUserId ?? null;
|
|
1432
1451
|
const deviceId = this.client.getDeviceId()?.trim() || null;
|
|
1433
1452
|
const diagnosticTimeoutMs = Math.min(this.localTimeoutMs, MATRIX_STATUS_DIAGNOSTIC_TIMEOUT_MS);
|
|
@@ -1582,22 +1601,22 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1582
1601
|
let stagedKeyId;
|
|
1583
1602
|
try {
|
|
1584
1603
|
stagedKeyId = await this.resolveDefaultSecretStorageKeyId(crypto) ?? null;
|
|
1585
|
-
this.recoveryKeyStore.stageEncodedRecoveryKey({
|
|
1604
|
+
await this.recoveryKeyStore.stageEncodedRecoveryKey({
|
|
1586
1605
|
encodedPrivateKey: trimmedRecoveryKey,
|
|
1587
1606
|
keyId: stagedKeyId
|
|
1588
1607
|
});
|
|
1589
1608
|
} catch (err) {
|
|
1590
1609
|
return await fail(formatErrorMessage(err));
|
|
1591
1610
|
}
|
|
1592
|
-
const storedRecoveryKeyMatches = this.recoveryKeyStore.getRecoveryKeySummary()?.encodedPrivateKey?.trim() === trimmedRecoveryKey;
|
|
1611
|
+
const storedRecoveryKeyMatches = (await this.recoveryKeyStore.getRecoveryKeySummary())?.encodedPrivateKey?.trim() === trimmedRecoveryKey;
|
|
1593
1612
|
if (backupUsableBeforeStagedRecovery && storedRecoveryKeyMatches) {
|
|
1594
1613
|
const status = await this.getOwnDeviceVerificationStatus();
|
|
1595
1614
|
const backupUsable = resolveMatrixRoomKeyBackupReadinessError(status.backup, { requireServerBackup: true }) === null;
|
|
1596
1615
|
const backupError = resolveMatrixRoomKeyBackupReadinessError(status.backup, { requireServerBackup: false });
|
|
1597
1616
|
const recoveryKeyAccepted = backupUsable;
|
|
1598
1617
|
if (!status.verified) {
|
|
1599
|
-
if (recoveryKeyAccepted) this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: stagedKeyId });
|
|
1600
|
-
else this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1618
|
+
if (recoveryKeyAccepted) await this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: stagedKeyId });
|
|
1619
|
+
else await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1601
1620
|
return {
|
|
1602
1621
|
success: false,
|
|
1603
1622
|
recoveryKeyAccepted,
|
|
@@ -1608,7 +1627,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1608
1627
|
};
|
|
1609
1628
|
}
|
|
1610
1629
|
if (backupError) {
|
|
1611
|
-
this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1630
|
+
await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1612
1631
|
return {
|
|
1613
1632
|
success: false,
|
|
1614
1633
|
recoveryKeyAccepted,
|
|
@@ -1618,7 +1637,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1618
1637
|
...status
|
|
1619
1638
|
};
|
|
1620
1639
|
}
|
|
1621
|
-
this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: stagedKeyId });
|
|
1640
|
+
await this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: stagedKeyId });
|
|
1622
1641
|
return {
|
|
1623
1642
|
success: true,
|
|
1624
1643
|
recoveryKeyAccepted: true,
|
|
@@ -1643,8 +1662,8 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1643
1662
|
const stagedRecoveryKeyValidated = stagedRecoveryKeyUsed && (stagedRecoveryKeyConfirmedBySecretStorage || stagedRecoveryKeyUsed && !stagedRecoveryKeyRejectedBySecretStorage && !stagedRecoveryKeyConfirmedBySecretStorage && !backupUsableBeforeStagedRecovery && backupUsable) || storedRecoveryKeyMatches && backupUsable;
|
|
1644
1663
|
const recoveryKeyAccepted = stagedRecoveryKeyValidated && (status.verified || backupUsable);
|
|
1645
1664
|
if (!status.verified) {
|
|
1646
|
-
if (backupUsable && stagedRecoveryKeyValidated) this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: stagedKeyId });
|
|
1647
|
-
else this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1665
|
+
if (backupUsable && stagedRecoveryKeyValidated) await this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: stagedKeyId });
|
|
1666
|
+
else await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1648
1667
|
return {
|
|
1649
1668
|
success: false,
|
|
1650
1669
|
recoveryKeyAccepted,
|
|
@@ -1655,7 +1674,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1655
1674
|
};
|
|
1656
1675
|
}
|
|
1657
1676
|
if (backupError) {
|
|
1658
|
-
this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1677
|
+
await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1659
1678
|
return {
|
|
1660
1679
|
success: false,
|
|
1661
1680
|
recoveryKeyAccepted,
|
|
@@ -1666,7 +1685,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1666
1685
|
};
|
|
1667
1686
|
}
|
|
1668
1687
|
if (!stagedRecoveryKeyValidated) {
|
|
1669
|
-
this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1688
|
+
await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1670
1689
|
return {
|
|
1671
1690
|
success: false,
|
|
1672
1691
|
recoveryKeyAccepted: false,
|
|
@@ -1676,7 +1695,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1676
1695
|
...status
|
|
1677
1696
|
};
|
|
1678
1697
|
}
|
|
1679
|
-
this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: stagedKeyId });
|
|
1698
|
+
await this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: stagedKeyId });
|
|
1680
1699
|
const committedStatus = await this.getOwnDeviceVerificationStatus();
|
|
1681
1700
|
return {
|
|
1682
1701
|
success: true,
|
|
@@ -1687,7 +1706,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1687
1706
|
...committedStatus
|
|
1688
1707
|
};
|
|
1689
1708
|
} catch (err) {
|
|
1690
|
-
this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1709
|
+
await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1691
1710
|
return await fail(formatErrorMessage(err));
|
|
1692
1711
|
}
|
|
1693
1712
|
}
|
|
@@ -1711,7 +1730,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1711
1730
|
if (!crypto) return await fail("Matrix crypto is not available (start client with encryption enabled)");
|
|
1712
1731
|
try {
|
|
1713
1732
|
const rawRecoveryKey = params.recoveryKey?.trim();
|
|
1714
|
-
if (rawRecoveryKey) this.recoveryKeyStore.stageEncodedRecoveryKey({
|
|
1733
|
+
if (rawRecoveryKey) await this.recoveryKeyStore.stageEncodedRecoveryKey({
|
|
1715
1734
|
encodedPrivateKey: rawRecoveryKey,
|
|
1716
1735
|
keyId: await this.resolveDefaultSecretStorageKeyId(crypto)
|
|
1717
1736
|
});
|
|
@@ -1722,15 +1741,15 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1722
1741
|
requireServerBackup: true
|
|
1723
1742
|
});
|
|
1724
1743
|
if (backupError) {
|
|
1725
|
-
this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1744
|
+
await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1726
1745
|
return await fail(backupError);
|
|
1727
1746
|
}
|
|
1728
1747
|
if (typeof crypto.restoreKeyBackup !== "function") {
|
|
1729
|
-
this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1748
|
+
await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1730
1749
|
return await fail("Matrix crypto backend does not support full key backup restore");
|
|
1731
1750
|
}
|
|
1732
1751
|
const restore = await crypto.restoreKeyBackup();
|
|
1733
|
-
if (rawRecoveryKey) this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: await this.resolveDefaultSecretStorageKeyId(crypto) });
|
|
1752
|
+
if (rawRecoveryKey) await this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: await this.resolveDefaultSecretStorageKeyId(crypto) });
|
|
1734
1753
|
const finalBackup = await this.getRoomKeyBackupStatus();
|
|
1735
1754
|
return {
|
|
1736
1755
|
success: true,
|
|
@@ -1742,7 +1761,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1742
1761
|
backup: finalBackup
|
|
1743
1762
|
};
|
|
1744
1763
|
} catch (err) {
|
|
1745
|
-
this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1764
|
+
await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1746
1765
|
return await fail(formatErrorMessage(err));
|
|
1747
1766
|
}
|
|
1748
1767
|
}
|
|
@@ -1764,6 +1783,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1764
1783
|
await this.ensureStartedForCryptoControlPlane();
|
|
1765
1784
|
const crypto = this.client.getCrypto();
|
|
1766
1785
|
if (!crypto) return await fail("Matrix crypto is not available (start client with encryption enabled)");
|
|
1786
|
+
await this.recoveryKeyStore.drainPendingPersistence();
|
|
1767
1787
|
previousVersion = await this.resolveRoomKeyBackupVersion();
|
|
1768
1788
|
const forceNewSecretStorage = options.rotateRecoveryKey === true || await this.shouldForceSecretStorageRecreationForBackupReset(crypto);
|
|
1769
1789
|
try {
|
|
@@ -1827,7 +1847,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1827
1847
|
const crypto = this.client.getCrypto();
|
|
1828
1848
|
if (!crypto) throw new Error("Matrix crypto is not available (start client with encryption enabled)");
|
|
1829
1849
|
rawRecoveryKey = params?.recoveryKey?.trim();
|
|
1830
|
-
if (rawRecoveryKey) this.recoveryKeyStore.stageEncodedRecoveryKey({
|
|
1850
|
+
if (rawRecoveryKey) await this.recoveryKeyStore.stageEncodedRecoveryKey({
|
|
1831
1851
|
encodedPrivateKey: rawRecoveryKey,
|
|
1832
1852
|
keyId: await this.resolveDefaultSecretStorageKeyId(crypto)
|
|
1833
1853
|
});
|
|
@@ -1839,7 +1859,7 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1839
1859
|
}));
|
|
1840
1860
|
await this.ensureRoomKeyBackupEnabled(crypto);
|
|
1841
1861
|
} catch (err) {
|
|
1842
|
-
this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1862
|
+
await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1843
1863
|
bootstrapError = formatErrorMessage(err);
|
|
1844
1864
|
}
|
|
1845
1865
|
const verification = await this.getOwnDeviceVerificationStatus();
|
|
@@ -1850,8 +1870,8 @@ var MatrixClient = class extends MatrixClientVerification {
|
|
|
1850
1870
|
requireServerBackup: true
|
|
1851
1871
|
}) : null;
|
|
1852
1872
|
const success = verificationError === null && backupError === null;
|
|
1853
|
-
if (success) this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: await this.resolveDefaultSecretStorageKeyId(this.client.getCrypto()) });
|
|
1854
|
-
else this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1873
|
+
if (success) await this.recoveryKeyStore.commitStagedRecoveryKey({ keyId: await this.resolveDefaultSecretStorageKeyId(this.client.getCrypto()) });
|
|
1874
|
+
else await this.recoveryKeyStore.discardStagedRecoveryKey();
|
|
1855
1875
|
return {
|
|
1856
1876
|
success,
|
|
1857
1877
|
error: success ? void 0 : backupError ?? verificationError ?? void 0,
|