matrix-js-sdk 37.3.0 → 37.4.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/git-revision.txt +1 -1
  2. package/lib/@types/auth.js +2 -0
  3. package/lib/@types/auth.js.map +1 -1
  4. package/lib/@types/event.js +15 -0
  5. package/lib/@types/event.js.map +1 -1
  6. package/lib/@types/membership.js +21 -0
  7. package/lib/@types/membership.js.map +1 -1
  8. package/lib/@types/partials.js +3 -0
  9. package/lib/@types/partials.js.map +1 -1
  10. package/lib/autodiscovery.js +2 -1
  11. package/lib/autodiscovery.js.map +1 -1
  12. package/lib/client.d.ts +13 -1
  13. package/lib/client.d.ts.map +1 -1
  14. package/lib/client.js +39 -17
  15. package/lib/client.js.map +1 -1
  16. package/lib/crypto/store/base.js +14 -0
  17. package/lib/crypto/store/base.js.map +1 -1
  18. package/lib/crypto/store/indexeddb-crypto-store.d.ts.map +1 -1
  19. package/lib/crypto/store/indexeddb-crypto-store.js +4 -1
  20. package/lib/crypto/store/indexeddb-crypto-store.js.map +1 -1
  21. package/lib/crypto-api/CryptoEvent.js +96 -0
  22. package/lib/crypto-api/CryptoEvent.js.map +1 -1
  23. package/lib/crypto-api/index.js +73 -0
  24. package/lib/crypto-api/index.js.map +1 -1
  25. package/lib/crypto-api/verification.js +39 -0
  26. package/lib/crypto-api/verification.js.map +1 -1
  27. package/lib/embedded.d.ts +8 -12
  28. package/lib/embedded.d.ts.map +1 -1
  29. package/lib/embedded.js +24 -20
  30. package/lib/embedded.js.map +1 -1
  31. package/lib/feature.js +3 -0
  32. package/lib/feature.js.map +1 -1
  33. package/lib/http-api/fetch.d.ts.map +1 -1
  34. package/lib/http-api/fetch.js +20 -10
  35. package/lib/http-api/fetch.js.map +1 -1
  36. package/lib/http-api/prefix.js +18 -0
  37. package/lib/http-api/prefix.js.map +1 -1
  38. package/lib/interactive-auth.js +3 -0
  39. package/lib/interactive-auth.js.map +1 -1
  40. package/lib/matrixrtc/EncryptionManager.d.ts +29 -38
  41. package/lib/matrixrtc/EncryptionManager.d.ts.map +1 -1
  42. package/lib/matrixrtc/EncryptionManager.js +61 -123
  43. package/lib/matrixrtc/EncryptionManager.js.map +1 -1
  44. package/lib/matrixrtc/IKeyTransport.d.ts +34 -0
  45. package/lib/matrixrtc/IKeyTransport.d.ts.map +1 -0
  46. package/lib/matrixrtc/IKeyTransport.js +26 -0
  47. package/lib/matrixrtc/IKeyTransport.js.map +1 -0
  48. package/lib/matrixrtc/IMembershipManager.d.ts +68 -0
  49. package/lib/matrixrtc/IMembershipManager.d.ts.map +1 -0
  50. package/lib/matrixrtc/IMembershipManager.js +29 -0
  51. package/lib/matrixrtc/IMembershipManager.js.map +1 -0
  52. package/lib/matrixrtc/LegacyMembershipManager.d.ts +2 -1
  53. package/lib/matrixrtc/LegacyMembershipManager.d.ts.map +1 -1
  54. package/lib/matrixrtc/LegacyMembershipManager.js +0 -1
  55. package/lib/matrixrtc/LegacyMembershipManager.js.map +1 -1
  56. package/lib/matrixrtc/MatrixRTCSession.d.ts +12 -19
  57. package/lib/matrixrtc/MatrixRTCSession.d.ts.map +1 -1
  58. package/lib/matrixrtc/MatrixRTCSession.js +56 -39
  59. package/lib/matrixrtc/MatrixRTCSession.js.map +1 -1
  60. package/lib/matrixrtc/MatrixRTCSessionManager.d.ts +0 -2
  61. package/lib/matrixrtc/MatrixRTCSessionManager.d.ts.map +1 -1
  62. package/lib/matrixrtc/MatrixRTCSessionManager.js +14 -39
  63. package/lib/matrixrtc/MatrixRTCSessionManager.js.map +1 -1
  64. package/lib/matrixrtc/NewMembershipManager.d.ts +7 -4
  65. package/lib/matrixrtc/NewMembershipManager.d.ts.map +1 -1
  66. package/lib/matrixrtc/NewMembershipManager.js +52 -35
  67. package/lib/matrixrtc/NewMembershipManager.js.map +1 -1
  68. package/lib/matrixrtc/NewMembershipManagerActionScheduler.d.ts +3 -1
  69. package/lib/matrixrtc/NewMembershipManagerActionScheduler.d.ts.map +1 -1
  70. package/lib/matrixrtc/NewMembershipManagerActionScheduler.js +7 -6
  71. package/lib/matrixrtc/NewMembershipManagerActionScheduler.js.map +1 -1
  72. package/lib/matrixrtc/RoomAndToDeviceKeyTransport.d.ts +43 -0
  73. package/lib/matrixrtc/RoomAndToDeviceKeyTransport.d.ts.map +1 -0
  74. package/lib/matrixrtc/RoomAndToDeviceKeyTransport.js +113 -0
  75. package/lib/matrixrtc/RoomAndToDeviceKeyTransport.js.map +1 -0
  76. package/lib/matrixrtc/RoomKeyTransport.d.ts +23 -0
  77. package/lib/matrixrtc/RoomKeyTransport.d.ts.map +1 -0
  78. package/lib/matrixrtc/RoomKeyTransport.js +142 -0
  79. package/lib/matrixrtc/RoomKeyTransport.js.map +1 -0
  80. package/lib/matrixrtc/ToDeviceKeyTransport.d.ts +27 -0
  81. package/lib/matrixrtc/ToDeviceKeyTransport.d.ts.map +1 -0
  82. package/lib/matrixrtc/ToDeviceKeyTransport.js +149 -0
  83. package/lib/matrixrtc/ToDeviceKeyTransport.js.map +1 -0
  84. package/lib/matrixrtc/index.d.ts +2 -1
  85. package/lib/matrixrtc/index.d.ts.map +1 -1
  86. package/lib/matrixrtc/index.js +2 -1
  87. package/lib/matrixrtc/index.js.map +1 -1
  88. package/lib/matrixrtc/types.d.ts +37 -63
  89. package/lib/matrixrtc/types.d.ts.map +1 -1
  90. package/lib/matrixrtc/types.js +3 -9
  91. package/lib/matrixrtc/types.js.map +1 -1
  92. package/lib/models/MSC3089TreeSpace.js +3 -1
  93. package/lib/models/MSC3089TreeSpace.js.map +1 -1
  94. package/lib/models/event-status.js +6 -0
  95. package/lib/models/event-status.js.map +1 -1
  96. package/lib/models/event.js +10 -0
  97. package/lib/models/event.js.map +1 -1
  98. package/lib/models/invites-ignorer-types.js +12 -0
  99. package/lib/models/invites-ignorer-types.js.map +1 -1
  100. package/lib/models/room-state.js +1 -0
  101. package/lib/models/room-state.js.map +1 -1
  102. package/lib/rendezvous/RendezvousFailureReason.js +9 -0
  103. package/lib/rendezvous/RendezvousFailureReason.js.map +1 -1
  104. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js +3 -0
  105. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js.map +1 -1
  106. package/lib/rust-crypto/rust-crypto.js +1 -1
  107. package/lib/rust-crypto/rust-crypto.js.map +1 -1
  108. package/lib/service-types.js +2 -1
  109. package/lib/service-types.js.map +1 -1
  110. package/lib/sliding-sync.js +24 -0
  111. package/lib/sliding-sync.js.map +1 -1
  112. package/lib/sync.js +11 -0
  113. package/lib/sync.js.map +1 -1
  114. package/lib/types.js +19 -0
  115. package/lib/types.js.map +1 -1
  116. package/lib/webrtc/call.js +62 -2
  117. package/lib/webrtc/call.js.map +1 -1
  118. package/package.json +1 -1
  119. package/src/client.ts +24 -1
  120. package/src/crypto/store/indexeddb-crypto-store.ts +4 -1
  121. package/src/embedded.ts +19 -23
  122. package/src/http-api/fetch.ts +19 -10
  123. package/src/matrixrtc/EncryptionManager.ts +111 -193
  124. package/src/matrixrtc/IKeyTransport.ts +61 -0
  125. package/src/matrixrtc/IMembershipManager.ts +88 -0
  126. package/src/matrixrtc/LegacyMembershipManager.ts +2 -1
  127. package/src/matrixrtc/MatrixRTCSession.ts +90 -53
  128. package/src/matrixrtc/MatrixRTCSessionManager.ts +13 -40
  129. package/src/matrixrtc/NewMembershipManager.ts +51 -47
  130. package/src/matrixrtc/NewMembershipManagerActionScheduler.ts +10 -8
  131. package/src/matrixrtc/RoomAndToDeviceKeyTransport.ts +119 -0
  132. package/src/matrixrtc/RoomKeyTransport.ts +187 -0
  133. package/src/matrixrtc/ToDeviceKeyTransport.ts +172 -0
  134. package/src/matrixrtc/index.ts +2 -1
  135. package/src/matrixrtc/types.ts +40 -66
  136. package/src/rust-crypto/rust-crypto.ts +1 -1
  137. package/src/webrtc/call.ts +1 -1
package/git-revision.txt CHANGED
@@ -1 +1 @@
1
- f7bab544a795bd8c0cba919d8b261ea639518f49
1
+ ac49137c0e110cf9232a3136169d4d41b4582868
@@ -45,7 +45,9 @@ export var IdentityProviderBrand = /*#__PURE__*/function (IdentityProviderBrand)
45
45
  return IdentityProviderBrand;
46
46
  }({});
47
47
  export var SSOAction = /*#__PURE__*/function (SSOAction) {
48
+ /** The user intends to login to an existing account */
48
49
  SSOAction["LOGIN"] = "login";
50
+ /** The user intends to register for a new account */
49
51
  SSOAction["REGISTER"] = "register";
50
52
  return SSOAction;
51
53
  }({});
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","names":["UnstableValue","DELEGATED_OIDC_COMPATIBILITY","IdentityProviderBrand","SSOAction"],"sources":["../../src/@types/auth.ts"],"sourcesContent":["/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { UnstableValue } from \"../NamespacedValue.ts\";\nimport { type IClientWellKnown } from \"../client.ts\";\n\n// disable lint because these are wire responses\n/* eslint-disable camelcase */\n\n/**\n * Represents a response to the CSAPI `/refresh` endpoint.\n */\nexport interface IRefreshTokenResponse {\n access_token: string;\n expires_in_ms: number;\n refresh_token: string;\n}\n\n/* eslint-enable camelcase */\n\n/**\n * Response to GET login flows as per https://spec.matrix.org/v1.3/client-server-api/#get_matrixclientv3login\n */\nexport interface ILoginFlowsResponse {\n flows: LoginFlow[];\n}\n\nexport type LoginFlow = ISSOFlow | IPasswordFlow | ILoginFlow;\n\nexport interface ILoginFlow {\n type: string;\n}\n\nexport interface IPasswordFlow extends ILoginFlow {\n type: \"m.login.password\";\n}\n\nexport const DELEGATED_OIDC_COMPATIBILITY = new UnstableValue(\n \"delegated_oidc_compatibility\",\n \"org.matrix.msc3824.delegated_oidc_compatibility\",\n);\n\n/**\n * Representation of SSO flow as per https://spec.matrix.org/v1.3/client-server-api/#client-login-via-sso\n */\nexport interface ISSOFlow extends ILoginFlow {\n type: \"m.login.sso\" | \"m.login.cas\";\n // eslint-disable-next-line camelcase\n identity_providers?: IIdentityProvider[];\n [DELEGATED_OIDC_COMPATIBILITY.name]?: boolean;\n [DELEGATED_OIDC_COMPATIBILITY.altName]?: boolean;\n}\n\nexport enum IdentityProviderBrand {\n Gitlab = \"gitlab\",\n Github = \"github\",\n Apple = \"apple\",\n Google = \"google\",\n Facebook = \"facebook\",\n Twitter = \"twitter\",\n}\n\nexport interface IIdentityProvider {\n id: string;\n name: string;\n icon?: string;\n brand?: IdentityProviderBrand | string;\n}\n\nexport enum SSOAction {\n /** The user intends to login to an existing account */\n LOGIN = \"login\",\n\n /** The user intends to register for a new account */\n REGISTER = \"register\",\n}\n\n/**\n * A client can identify a user using their Matrix ID.\n * This can either be the fully qualified Matrix user ID, or just the localpart of the user ID.\n * @see https://spec.matrix.org/v1.7/client-server-api/#matrix-user-id\n */\ntype UserLoginIdentifier = {\n type: \"m.id.user\";\n user: string;\n};\n\n/**\n * A client can identify a user using a 3PID associated with the user’s account on the homeserver,\n * where the 3PID was previously associated using the /account/3pid API.\n * See the 3PID Types Appendix for a list of Third-party ID media.\n * @see https://spec.matrix.org/v1.7/client-server-api/#third-party-id\n */\ntype ThirdPartyLoginIdentifier = {\n type: \"m.id.thirdparty\";\n medium: string;\n address: string;\n};\n\n/**\n * A client can identify a user using a phone number associated with the user’s account,\n * where the phone number was previously associated using the /account/3pid API.\n * The phone number can be passed in as entered by the user; the homeserver will be responsible for canonicalising it.\n * If the client wishes to canonicalise the phone number,\n * then it can use the m.id.thirdparty identifier type with a medium of msisdn instead.\n *\n * The country is the two-letter uppercase ISO-3166-1 alpha-2 country code that the number in phone should be parsed as if it were dialled from.\n *\n * @see https://spec.matrix.org/v1.7/client-server-api/#phone-number\n */\ntype PhoneLoginIdentifier = {\n type: \"m.id.phone\";\n country: string;\n phone: string;\n};\n\ntype SpecUserIdentifier = UserLoginIdentifier | ThirdPartyLoginIdentifier | PhoneLoginIdentifier;\n\n/**\n * User Identifiers usable for login & user-interactive authentication.\n *\n * Extensibly allows more than Matrix specified identifiers.\n */\nexport type UserIdentifier =\n | SpecUserIdentifier\n | { type: Exclude<string, SpecUserIdentifier[\"type\"]>; [key: string]: any };\n\n/**\n * Request body for POST /login request\n * @see https://spec.matrix.org/v1.7/client-server-api/#post_matrixclientv3login\n */\nexport interface LoginRequest {\n /**\n * The login type being used.\n */\n type: \"m.login.password\" | \"m.login.token\" | string;\n /**\n * ID of the client device.\n * If this does not correspond to a known client device, a new device will be created.\n * The given device ID must not be the same as a cross-signing key ID.\n * The server will auto-generate a device_id if this is not specified.\n */\n device_id?: string;\n /**\n * Identification information for a user\n */\n identifier?: UserIdentifier;\n /**\n * A display name to assign to the newly-created device.\n * Ignored if device_id corresponds to a known device.\n */\n initial_device_display_name?: string;\n /**\n * When logging in using a third-party identifier, the medium of the identifier.\n * Must be `email`.\n * @deprecated in favour of `identifier`.\n */\n medium?: \"email\";\n /**\n * Required when type is `m.login.password`. The user’s password.\n */\n password?: string;\n /**\n * If true, the client supports refresh tokens.\n */\n refresh_token?: boolean;\n /**\n * Required when type is `m.login.token`. Part of Token-based login.\n */\n token?: string;\n /**\n * The fully qualified user ID or just local part of the user ID, to log in.\n * @deprecated in favour of identifier.\n */\n user?: string;\n // Extensible\n [key: string]: any;\n}\n\n// Export for backwards compatibility\nexport type ILoginParams = LoginRequest;\n\n/**\n * Response body for POST /login request\n * @see https://spec.matrix.org/v1.7/client-server-api/#post_matrixclientv3login\n */\nexport interface LoginResponse {\n /**\n * An access token for the account.\n * This access token can then be used to authorize other requests.\n */\n access_token: string;\n /**\n * ID of the logged-in device.\n * Will be the same as the corresponding parameter in the request, if one was specified.\n */\n device_id: string;\n /**\n * The fully-qualified Matrix ID for the account.\n */\n user_id: string;\n /**\n * The lifetime of the access token, in milliseconds.\n * Once the access token has expired a new access token can be obtained by using the provided refresh token.\n * If no refresh token is provided, the client will need to re-log in to obtain a new access token.\n * If not given, the client can assume that the access token will not expire.\n */\n expires_in_ms?: number;\n /**\n * A refresh token for the account.\n * This token can be used to obtain a new access token when it expires by calling the /refresh endpoint.\n */\n refresh_token?: string;\n /**\n * Optional client configuration provided by the server.\n * If present, clients SHOULD use the provided object to reconfigure themselves, optionally validating the URLs within.\n * This object takes the same form as the one returned from .well-known autodiscovery.\n */\n well_known?: IClientWellKnown;\n /**\n * The server_name of the homeserver on which the account has been registered.\n * @deprecated Clients should extract the server_name from user_id (by splitting at the first colon) if they require it.\n */\n home_server?: string;\n}\n\n/**\n * The result of a successful `m.login.token` issuance request as per https://spec.matrix.org/v1.7/client-server-api/#post_matrixclientv1loginget_token\n */\nexport interface LoginTokenPostResponse {\n /**\n * The token to use with `m.login.token` to authenticate.\n */\n login_token: string;\n /**\n * Expiration in milliseconds.\n */\n expires_in_ms: number;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,aAAa,QAAQ,uBAAuB;;AAGrD;AACA;;AAEA;AACA;AACA;;AAOA;;AAEA;AACA;AACA;;AAeA,OAAO,IAAMC,4BAA4B,GAAG,IAAID,aAAa,CACzD,8BAA8B,EAC9B,iDACJ,CAAC;;AAED;AACA;AACA;;AASA,WAAYE,qBAAqB,0BAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAAA,OAArBA,qBAAqB;AAAA;AAgBjC,WAAYC,SAAS,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA;;AAQrB;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;;AAiDA;;AAGA;AACA;AACA;AACA;;AAyCA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"file":"auth.js","names":["UnstableValue","DELEGATED_OIDC_COMPATIBILITY","IdentityProviderBrand","SSOAction"],"sources":["../../src/@types/auth.ts"],"sourcesContent":["/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { UnstableValue } from \"../NamespacedValue.ts\";\nimport { type IClientWellKnown } from \"../client.ts\";\n\n// disable lint because these are wire responses\n/* eslint-disable camelcase */\n\n/**\n * Represents a response to the CSAPI `/refresh` endpoint.\n */\nexport interface IRefreshTokenResponse {\n access_token: string;\n expires_in_ms: number;\n refresh_token: string;\n}\n\n/* eslint-enable camelcase */\n\n/**\n * Response to GET login flows as per https://spec.matrix.org/v1.3/client-server-api/#get_matrixclientv3login\n */\nexport interface ILoginFlowsResponse {\n flows: LoginFlow[];\n}\n\nexport type LoginFlow = ISSOFlow | IPasswordFlow | ILoginFlow;\n\nexport interface ILoginFlow {\n type: string;\n}\n\nexport interface IPasswordFlow extends ILoginFlow {\n type: \"m.login.password\";\n}\n\nexport const DELEGATED_OIDC_COMPATIBILITY = new UnstableValue(\n \"delegated_oidc_compatibility\",\n \"org.matrix.msc3824.delegated_oidc_compatibility\",\n);\n\n/**\n * Representation of SSO flow as per https://spec.matrix.org/v1.3/client-server-api/#client-login-via-sso\n */\nexport interface ISSOFlow extends ILoginFlow {\n type: \"m.login.sso\" | \"m.login.cas\";\n // eslint-disable-next-line camelcase\n identity_providers?: IIdentityProvider[];\n [DELEGATED_OIDC_COMPATIBILITY.name]?: boolean;\n [DELEGATED_OIDC_COMPATIBILITY.altName]?: boolean;\n}\n\nexport enum IdentityProviderBrand {\n Gitlab = \"gitlab\",\n Github = \"github\",\n Apple = \"apple\",\n Google = \"google\",\n Facebook = \"facebook\",\n Twitter = \"twitter\",\n}\n\nexport interface IIdentityProvider {\n id: string;\n name: string;\n icon?: string;\n brand?: IdentityProviderBrand | string;\n}\n\nexport enum SSOAction {\n /** The user intends to login to an existing account */\n LOGIN = \"login\",\n\n /** The user intends to register for a new account */\n REGISTER = \"register\",\n}\n\n/**\n * A client can identify a user using their Matrix ID.\n * This can either be the fully qualified Matrix user ID, or just the localpart of the user ID.\n * @see https://spec.matrix.org/v1.7/client-server-api/#matrix-user-id\n */\ntype UserLoginIdentifier = {\n type: \"m.id.user\";\n user: string;\n};\n\n/**\n * A client can identify a user using a 3PID associated with the user’s account on the homeserver,\n * where the 3PID was previously associated using the /account/3pid API.\n * See the 3PID Types Appendix for a list of Third-party ID media.\n * @see https://spec.matrix.org/v1.7/client-server-api/#third-party-id\n */\ntype ThirdPartyLoginIdentifier = {\n type: \"m.id.thirdparty\";\n medium: string;\n address: string;\n};\n\n/**\n * A client can identify a user using a phone number associated with the user’s account,\n * where the phone number was previously associated using the /account/3pid API.\n * The phone number can be passed in as entered by the user; the homeserver will be responsible for canonicalising it.\n * If the client wishes to canonicalise the phone number,\n * then it can use the m.id.thirdparty identifier type with a medium of msisdn instead.\n *\n * The country is the two-letter uppercase ISO-3166-1 alpha-2 country code that the number in phone should be parsed as if it were dialled from.\n *\n * @see https://spec.matrix.org/v1.7/client-server-api/#phone-number\n */\ntype PhoneLoginIdentifier = {\n type: \"m.id.phone\";\n country: string;\n phone: string;\n};\n\ntype SpecUserIdentifier = UserLoginIdentifier | ThirdPartyLoginIdentifier | PhoneLoginIdentifier;\n\n/**\n * User Identifiers usable for login & user-interactive authentication.\n *\n * Extensibly allows more than Matrix specified identifiers.\n */\nexport type UserIdentifier =\n | SpecUserIdentifier\n | { type: Exclude<string, SpecUserIdentifier[\"type\"]>; [key: string]: any };\n\n/**\n * Request body for POST /login request\n * @see https://spec.matrix.org/v1.7/client-server-api/#post_matrixclientv3login\n */\nexport interface LoginRequest {\n /**\n * The login type being used.\n */\n type: \"m.login.password\" | \"m.login.token\" | string;\n /**\n * ID of the client device.\n * If this does not correspond to a known client device, a new device will be created.\n * The given device ID must not be the same as a cross-signing key ID.\n * The server will auto-generate a device_id if this is not specified.\n */\n device_id?: string;\n /**\n * Identification information for a user\n */\n identifier?: UserIdentifier;\n /**\n * A display name to assign to the newly-created device.\n * Ignored if device_id corresponds to a known device.\n */\n initial_device_display_name?: string;\n /**\n * When logging in using a third-party identifier, the medium of the identifier.\n * Must be `email`.\n * @deprecated in favour of `identifier`.\n */\n medium?: \"email\";\n /**\n * Required when type is `m.login.password`. The user’s password.\n */\n password?: string;\n /**\n * If true, the client supports refresh tokens.\n */\n refresh_token?: boolean;\n /**\n * Required when type is `m.login.token`. Part of Token-based login.\n */\n token?: string;\n /**\n * The fully qualified user ID or just local part of the user ID, to log in.\n * @deprecated in favour of identifier.\n */\n user?: string;\n // Extensible\n [key: string]: any;\n}\n\n// Export for backwards compatibility\nexport type ILoginParams = LoginRequest;\n\n/**\n * Response body for POST /login request\n * @see https://spec.matrix.org/v1.7/client-server-api/#post_matrixclientv3login\n */\nexport interface LoginResponse {\n /**\n * An access token for the account.\n * This access token can then be used to authorize other requests.\n */\n access_token: string;\n /**\n * ID of the logged-in device.\n * Will be the same as the corresponding parameter in the request, if one was specified.\n */\n device_id: string;\n /**\n * The fully-qualified Matrix ID for the account.\n */\n user_id: string;\n /**\n * The lifetime of the access token, in milliseconds.\n * Once the access token has expired a new access token can be obtained by using the provided refresh token.\n * If no refresh token is provided, the client will need to re-log in to obtain a new access token.\n * If not given, the client can assume that the access token will not expire.\n */\n expires_in_ms?: number;\n /**\n * A refresh token for the account.\n * This token can be used to obtain a new access token when it expires by calling the /refresh endpoint.\n */\n refresh_token?: string;\n /**\n * Optional client configuration provided by the server.\n * If present, clients SHOULD use the provided object to reconfigure themselves, optionally validating the URLs within.\n * This object takes the same form as the one returned from .well-known autodiscovery.\n */\n well_known?: IClientWellKnown;\n /**\n * The server_name of the homeserver on which the account has been registered.\n * @deprecated Clients should extract the server_name from user_id (by splitting at the first colon) if they require it.\n */\n home_server?: string;\n}\n\n/**\n * The result of a successful `m.login.token` issuance request as per https://spec.matrix.org/v1.7/client-server-api/#post_matrixclientv1loginget_token\n */\nexport interface LoginTokenPostResponse {\n /**\n * The token to use with `m.login.token` to authenticate.\n */\n login_token: string;\n /**\n * Expiration in milliseconds.\n */\n expires_in_ms: number;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,aAAa,QAAQ,uBAAuB;;AAGrD;AACA;;AAEA;AACA;AACA;;AAOA;;AAEA;AACA;AACA;;AAeA,OAAO,IAAMC,4BAA4B,GAAG,IAAID,aAAa,CACzD,8BAA8B,EAC9B,iDACJ,CAAC;;AAED;AACA;AACA;;AASA,WAAYE,qBAAqB,0BAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAAA,OAArBA,qBAAqB;AAAA;AAgBjC,WAAYC,SAAS,0BAATA,SAAS;EACjB;EADQA,SAAS;EAIjB;EAJQA,SAAS;EAAA,OAATA,SAAS;AAAA;;AAQrB;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;;AAiDA;;AAGA;AACA;AACA;AACA;;AAyCA;AACA;AACA","ignoreList":[]}
@@ -16,6 +16,7 @@ limitations under the License.
16
16
 
17
17
  import { NamespacedValue, UnstableValue } from "../NamespacedValue.js";
18
18
  export var EventType = /*#__PURE__*/function (EventType) {
19
+ // Room state events
19
20
  EventType["RoomCanonicalAlias"] = "m.room.canonical_alias";
20
21
  EventType["RoomCreate"] = "m.room.create";
21
22
  EventType["RoomJoinRules"] = "m.room.join_rules";
@@ -32,11 +33,13 @@ export var EventType = /*#__PURE__*/function (EventType) {
32
33
  EventType["RoomServerAcl"] = "m.room.server_acl";
33
34
  EventType["RoomTombstone"] = "m.room.tombstone";
34
35
  EventType["RoomPredecessor"] = "org.matrix.msc3946.room_predecessor";
36
+ // Moderation policy lists
35
37
  EventType["PolicyRuleUser"] = "m.policy.rule.user";
36
38
  EventType["PolicyRuleRoom"] = "m.policy.rule.room";
37
39
  EventType["PolicyRuleServer"] = "m.policy.rule.server";
38
40
  EventType["SpaceChild"] = "m.space.child";
39
41
  EventType["SpaceParent"] = "m.space.parent";
42
+ // Room timeline events
40
43
  EventType["RoomRedaction"] = "m.room.redaction";
41
44
  EventType["RoomMessage"] = "m.room.message";
42
45
  EventType["RoomMessageEncrypted"] = "m.room.encrypted";
@@ -61,27 +64,36 @@ export var EventType = /*#__PURE__*/function (EventType) {
61
64
  EventType["KeyVerificationDone"] = "m.key.verification.done";
62
65
  EventType["KeyVerificationKey"] = "m.key.verification.key";
63
66
  EventType["KeyVerificationAccept"] = "m.key.verification.accept";
67
+ // Not used directly - see READY_TYPE in VerificationRequest.
64
68
  EventType["KeyVerificationReady"] = "m.key.verification.ready";
69
+ // use of this is discouraged https://matrix.org/docs/spec/client_server/r0.6.1#m-room-message-feedback
65
70
  EventType["RoomMessageFeedback"] = "m.room.message.feedback";
66
71
  EventType["Reaction"] = "m.reaction";
67
72
  EventType["PollStart"] = "org.matrix.msc3381.poll.start";
73
+ // Room ephemeral events
68
74
  EventType["Typing"] = "m.typing";
69
75
  EventType["Receipt"] = "m.receipt";
70
76
  EventType["Presence"] = "m.presence";
77
+ // Room account_data events
71
78
  EventType["FullyRead"] = "m.fully_read";
72
79
  EventType["Tag"] = "m.tag";
73
80
  EventType["SpaceOrder"] = "org.matrix.msc3230.space_order";
81
+ // MSC3230
82
+ // User account_data events
74
83
  EventType["PushRules"] = "m.push_rules";
75
84
  EventType["Direct"] = "m.direct";
76
85
  EventType["IgnoredUserList"] = "m.ignored_user_list";
86
+ // to_device events
77
87
  EventType["RoomKey"] = "m.room_key";
78
88
  EventType["RoomKeyRequest"] = "m.room_key_request";
79
89
  EventType["ForwardedRoomKey"] = "m.forwarded_room_key";
80
90
  EventType["Dummy"] = "m.dummy";
81
91
  EventType["SecretRequest"] = "m.secret.request";
82
92
  EventType["SecretSend"] = "m.secret.send";
93
+ // Group call events
83
94
  EventType["GroupCallPrefix"] = "org.matrix.msc3401.call";
84
95
  EventType["GroupCallMemberPrefix"] = "org.matrix.msc3401.call.member";
96
+ // MatrixRTC events
85
97
  EventType["CallNotify"] = "org.matrix.msc4075.call.notify";
86
98
  return EventType;
87
99
  }({});
@@ -89,6 +101,9 @@ export var RelationType = /*#__PURE__*/function (RelationType) {
89
101
  RelationType["Annotation"] = "m.annotation";
90
102
  RelationType["Replace"] = "m.replace";
91
103
  RelationType["Reference"] = "m.reference";
104
+ // Don't use this yet: it's only the stable version. The code still assumes we support the unstable prefix and,
105
+ // moreover, our tests currently use the unstable prefix. Use THREAD_RELATION_TYPE.name.
106
+ // Once we support *only* the stable prefix, THREAD_RELATION_TYPE can die and we can switch to this.
92
107
  RelationType["Thread"] = "m.thread";
93
108
  return RelationType;
94
109
  }({});
@@ -1 +1 @@
1
- {"version":3,"file":"event.js","names":["NamespacedValue","UnstableValue","EventType","RelationType","MsgType","RoomCreateTypeField","RoomType","ToDeviceMessageId","UNSTABLE_MSC3088_PURPOSE","UNSTABLE_MSC3088_ENABLED","UNSTABLE_MSC3089_TREE_SUBTYPE","UNSTABLE_MSC3089_LEAF","UNSTABLE_MSC3089_BRANCH","UNSTABLE_MSC2716_MARKER","MSC3912_RELATION_BASED_REDACTIONS_PROP","UNSTABLE_ELEMENT_FUNCTIONAL_USERS","EVENT_VISIBILITY_CHANGE_TYPE","PUSHER_ENABLED","PUSHER_DEVICE_ID","LOCAL_NOTIFICATION_SETTINGS_PREFIX","UNSIGNED_THREAD_ID_FIELD","UNSIGNED_MEMBERSHIP_FIELD"],"sources":["../../src/@types/event.ts"],"sourcesContent":["/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { NamespacedValue, UnstableValue } from \"../NamespacedValue.ts\";\nimport {\n type PolicyRuleEventContent,\n type RoomAvatarEventContent,\n type RoomCanonicalAliasEventContent,\n type RoomCreateEventContent,\n type RoomEncryptionEventContent,\n type RoomGuestAccessEventContent,\n type RoomHistoryVisibilityEventContent,\n type RoomJoinRulesEventContent,\n type RoomMemberEventContent,\n type RoomNameEventContent,\n type RoomPinnedEventsEventContent,\n type RoomPowerLevelsEventContent,\n type RoomServerAclEventContent,\n type RoomThirdPartyInviteEventContent,\n type RoomTombstoneEventContent,\n type RoomTopicEventContent,\n type SpaceChildEventContent,\n type SpaceParentEventContent,\n} from \"./state_events.ts\";\nimport { type IGroupCallRoomMemberState, type IGroupCallRoomState } from \"../webrtc/groupCall.ts\";\nimport { type MSC3089EventContent } from \"../models/MSC3089Branch.ts\";\nimport { type M_BEACON, type M_BEACON_INFO, type MBeaconEventContent, type MBeaconInfoEventContent } from \"./beacon.ts\";\nimport { type EmptyObject } from \"./common.ts\";\nimport { type ReactionEventContent, type RoomMessageEventContent, type StickerEventContent } from \"./events.ts\";\nimport {\n type MCallAnswer,\n type MCallBase,\n type MCallCandidates,\n type MCallHangupReject,\n type MCallInviteNegotiate,\n type MCallReplacesEvent,\n type MCallSelectAnswer,\n type SDPStreamMetadata,\n type SDPStreamMetadataKey,\n} from \"../webrtc/callEventTypes.ts\";\nimport { type EncryptionKeysEventContent, type ICallNotifyContent } from \"../matrixrtc/types.ts\";\nimport { type M_POLL_END, type M_POLL_START, type PollEndEventContent, type PollStartEventContent } from \"./polls.ts\";\nimport { type SessionMembershipData } from \"../matrixrtc/CallMembership.ts\";\nimport { type LocalNotificationSettings } from \"./local_notifications.ts\";\nimport { type IPushRules } from \"./PushRules.ts\";\nimport { type SecretInfo, type SecretStorageKeyDescription } from \"../secret-storage.ts\";\nimport { type POLICIES_ACCOUNT_EVENT_TYPE } from \"../models/invites-ignorer-types.ts\";\n\nexport enum EventType {\n // Room state events\n RoomCanonicalAlias = \"m.room.canonical_alias\",\n RoomCreate = \"m.room.create\",\n RoomJoinRules = \"m.room.join_rules\",\n RoomMember = \"m.room.member\",\n RoomThirdPartyInvite = \"m.room.third_party_invite\",\n RoomPowerLevels = \"m.room.power_levels\",\n RoomName = \"m.room.name\",\n RoomTopic = \"m.room.topic\",\n RoomAvatar = \"m.room.avatar\",\n RoomPinnedEvents = \"m.room.pinned_events\",\n RoomEncryption = \"m.room.encryption\",\n RoomHistoryVisibility = \"m.room.history_visibility\",\n RoomGuestAccess = \"m.room.guest_access\",\n RoomServerAcl = \"m.room.server_acl\",\n RoomTombstone = \"m.room.tombstone\",\n RoomPredecessor = \"org.matrix.msc3946.room_predecessor\",\n\n // Moderation policy lists\n PolicyRuleUser = \"m.policy.rule.user\",\n PolicyRuleRoom = \"m.policy.rule.room\",\n PolicyRuleServer = \"m.policy.rule.server\",\n\n SpaceChild = \"m.space.child\",\n SpaceParent = \"m.space.parent\",\n\n // Room timeline events\n RoomRedaction = \"m.room.redaction\",\n RoomMessage = \"m.room.message\",\n RoomMessageEncrypted = \"m.room.encrypted\",\n Sticker = \"m.sticker\",\n CallInvite = \"m.call.invite\",\n CallCandidates = \"m.call.candidates\",\n CallAnswer = \"m.call.answer\",\n CallHangup = \"m.call.hangup\",\n CallReject = \"m.call.reject\",\n CallSelectAnswer = \"m.call.select_answer\",\n CallNegotiate = \"m.call.negotiate\",\n CallSDPStreamMetadataChanged = \"m.call.sdp_stream_metadata_changed\",\n CallSDPStreamMetadataChangedPrefix = \"org.matrix.call.sdp_stream_metadata_changed\",\n CallReplaces = \"m.call.replaces\",\n CallAssertedIdentity = \"m.call.asserted_identity\",\n CallAssertedIdentityPrefix = \"org.matrix.call.asserted_identity\",\n CallEncryptionKeysPrefix = \"io.element.call.encryption_keys\",\n KeyVerificationRequest = \"m.key.verification.request\",\n KeyVerificationStart = \"m.key.verification.start\",\n KeyVerificationCancel = \"m.key.verification.cancel\",\n KeyVerificationMac = \"m.key.verification.mac\",\n KeyVerificationDone = \"m.key.verification.done\",\n KeyVerificationKey = \"m.key.verification.key\",\n KeyVerificationAccept = \"m.key.verification.accept\",\n // Not used directly - see READY_TYPE in VerificationRequest.\n KeyVerificationReady = \"m.key.verification.ready\",\n // use of this is discouraged https://matrix.org/docs/spec/client_server/r0.6.1#m-room-message-feedback\n RoomMessageFeedback = \"m.room.message.feedback\",\n Reaction = \"m.reaction\",\n PollStart = \"org.matrix.msc3381.poll.start\",\n\n // Room ephemeral events\n Typing = \"m.typing\",\n Receipt = \"m.receipt\",\n Presence = \"m.presence\",\n\n // Room account_data events\n FullyRead = \"m.fully_read\",\n Tag = \"m.tag\",\n SpaceOrder = \"org.matrix.msc3230.space_order\", // MSC3230\n\n // User account_data events\n PushRules = \"m.push_rules\",\n Direct = \"m.direct\",\n IgnoredUserList = \"m.ignored_user_list\",\n\n // to_device events\n RoomKey = \"m.room_key\",\n RoomKeyRequest = \"m.room_key_request\",\n ForwardedRoomKey = \"m.forwarded_room_key\",\n Dummy = \"m.dummy\",\n SecretRequest = \"m.secret.request\",\n SecretSend = \"m.secret.send\",\n\n // Group call events\n GroupCallPrefix = \"org.matrix.msc3401.call\",\n GroupCallMemberPrefix = \"org.matrix.msc3401.call.member\",\n\n // MatrixRTC events\n CallNotify = \"org.matrix.msc4075.call.notify\",\n}\n\nexport enum RelationType {\n Annotation = \"m.annotation\",\n Replace = \"m.replace\",\n Reference = \"m.reference\",\n\n // Don't use this yet: it's only the stable version. The code still assumes we support the unstable prefix and,\n // moreover, our tests currently use the unstable prefix. Use THREAD_RELATION_TYPE.name.\n // Once we support *only* the stable prefix, THREAD_RELATION_TYPE can die and we can switch to this.\n Thread = \"m.thread\",\n}\n\nexport enum MsgType {\n Text = \"m.text\",\n Emote = \"m.emote\",\n Notice = \"m.notice\",\n Image = \"m.image\",\n File = \"m.file\",\n Audio = \"m.audio\",\n Location = \"m.location\",\n Video = \"m.video\",\n KeyVerificationRequest = \"m.key.verification.request\",\n}\n\nexport const RoomCreateTypeField = \"type\";\n\nexport enum RoomType {\n Space = \"m.space\",\n UnstableCall = \"org.matrix.msc3417.call\",\n ElementVideo = \"io.element.video\",\n}\n\nexport const ToDeviceMessageId = \"org.matrix.msgid\";\n\n/**\n * Identifier for an [MSC3088](https://github.com/matrix-org/matrix-doc/pull/3088)\n * room purpose. Note that this reference is UNSTABLE and subject to breaking changes,\n * including its eventual removal.\n */\nexport const UNSTABLE_MSC3088_PURPOSE = new UnstableValue(\"m.room.purpose\", \"org.matrix.msc3088.purpose\");\n\n/**\n * Enabled flag for an [MSC3088](https://github.com/matrix-org/matrix-doc/pull/3088)\n * room purpose. Note that this reference is UNSTABLE and subject to breaking changes,\n * including its eventual removal.\n */\nexport const UNSTABLE_MSC3088_ENABLED = new UnstableValue(\"m.enabled\", \"org.matrix.msc3088.enabled\");\n\n/**\n * Subtype for an [MSC3089](https://github.com/matrix-org/matrix-doc/pull/3089) space-room.\n * Note that this reference is UNSTABLE and subject to breaking changes, including its\n * eventual removal.\n */\nexport const UNSTABLE_MSC3089_TREE_SUBTYPE = new UnstableValue(\"m.data_tree\", \"org.matrix.msc3089.data_tree\");\n\n/**\n * Leaf type for an event in a [MSC3089](https://github.com/matrix-org/matrix-doc/pull/3089) space-room.\n * Note that this reference is UNSTABLE and subject to breaking changes, including its\n * eventual removal.\n */\nexport const UNSTABLE_MSC3089_LEAF = new UnstableValue(\"m.leaf\", \"org.matrix.msc3089.leaf\");\n\n/**\n * Branch (Leaf Reference) type for the index approach in a\n * [MSC3089](https://github.com/matrix-org/matrix-doc/pull/3089) space-room. Note that this reference is\n * UNSTABLE and subject to breaking changes, including its eventual removal.\n */\nexport const UNSTABLE_MSC3089_BRANCH = new UnstableValue(\"m.branch\", \"org.matrix.msc3089.branch\");\n\n/**\n * Marker event type to point back at imported historical content in a room. See\n * [MSC2716](https://github.com/matrix-org/matrix-spec-proposals/pull/2716).\n * Note that this reference is UNSTABLE and subject to breaking changes,\n * including its eventual removal.\n */\nexport const UNSTABLE_MSC2716_MARKER = new UnstableValue(\"m.room.marker\", \"org.matrix.msc2716.marker\");\n\n/**\n * Name of the request property for relation based redactions.\n * {@link https://github.com/matrix-org/matrix-spec-proposals/pull/3912}\n */\nexport const MSC3912_RELATION_BASED_REDACTIONS_PROP = new UnstableValue(\n \"with_rel_types\",\n \"org.matrix.msc3912.with_relations\",\n);\n\n/**\n * Functional members type for declaring a purpose of room members (e.g. helpful bots).\n * Note that this reference is UNSTABLE and subject to breaking changes, including its\n * eventual removal.\n *\n * Schema (TypeScript):\n * ```\n * {\n * service_members?: string[]\n * }\n * ```\n *\n * @example\n * ```\n * {\n * \"service_members\": [\n * \"@helperbot:localhost\",\n * \"@reminderbot:alice.tdl\"\n * ]\n * }\n * ```\n */\nexport const UNSTABLE_ELEMENT_FUNCTIONAL_USERS = new UnstableValue(\n \"io.element.functional_members\",\n \"io.element.functional_members\",\n);\n\n/**\n * A type of message that affects visibility of a message,\n * as per https://github.com/matrix-org/matrix-doc/pull/3531\n *\n * @experimental\n */\nexport const EVENT_VISIBILITY_CHANGE_TYPE = new UnstableValue(\"m.visibility\", \"org.matrix.msc3531.visibility\");\n\n/**\n * https://github.com/matrix-org/matrix-doc/pull/3881\n *\n * @experimental\n */\nexport const PUSHER_ENABLED = new UnstableValue(\"enabled\", \"org.matrix.msc3881.enabled\");\n\n/**\n * https://github.com/matrix-org/matrix-doc/pull/3881\n *\n * @experimental\n */\nexport const PUSHER_DEVICE_ID = new UnstableValue(\"device_id\", \"org.matrix.msc3881.device_id\");\n\n/**\n * https://github.com/matrix-org/matrix-doc/pull/3890\n *\n * @experimental\n */\nexport const LOCAL_NOTIFICATION_SETTINGS_PREFIX = new UnstableValue(\n \"m.local_notification_settings\",\n \"org.matrix.msc3890.local_notification_settings\",\n);\n\n/**\n * https://github.com/matrix-org/matrix-doc/pull/4023\n *\n * @experimental\n */\nexport const UNSIGNED_THREAD_ID_FIELD = new UnstableValue(\"thread_id\", \"org.matrix.msc4023.thread_id\");\n\n/**\n * https://github.com/matrix-org/matrix-spec-proposals/pull/4115\n *\n * @experimental\n */\nexport const UNSIGNED_MEMBERSHIP_FIELD = new NamespacedValue(\"membership\", \"io.element.msc4115.membership\");\n\n/**\n * Mapped type from event type to content type for all specified non-state room events.\n */\nexport interface TimelineEvents {\n [EventType.RoomMessage]: RoomMessageEventContent;\n [EventType.Sticker]: StickerEventContent;\n [EventType.Reaction]: ReactionEventContent;\n [EventType.CallReplaces]: MCallReplacesEvent;\n [EventType.CallAnswer]: MCallAnswer;\n [EventType.CallSelectAnswer]: MCallSelectAnswer;\n [EventType.CallNegotiate]: Omit<MCallInviteNegotiate, \"offer\">;\n [EventType.CallInvite]: MCallInviteNegotiate;\n [EventType.CallCandidates]: MCallCandidates;\n [EventType.CallHangup]: MCallHangupReject;\n [EventType.CallReject]: MCallHangupReject;\n [EventType.CallSDPStreamMetadataChangedPrefix]: MCallBase & { [SDPStreamMetadataKey]: SDPStreamMetadata };\n [EventType.CallEncryptionKeysPrefix]: EncryptionKeysEventContent;\n [EventType.CallNotify]: ICallNotifyContent;\n [M_BEACON.name]: MBeaconEventContent;\n [M_POLL_START.name]: PollStartEventContent;\n [M_POLL_END.name]: PollEndEventContent;\n}\n\n/**\n * Mapped type from event type to content type for all specified room state events.\n */\nexport interface StateEvents {\n [EventType.RoomCanonicalAlias]: RoomCanonicalAliasEventContent;\n [EventType.RoomCreate]: RoomCreateEventContent;\n [EventType.RoomJoinRules]: RoomJoinRulesEventContent;\n [EventType.RoomMember]: RoomMemberEventContent;\n // XXX: Spec says this event has 3 required fields but kicking such an invitation requires sending `{}`\n [EventType.RoomThirdPartyInvite]: RoomThirdPartyInviteEventContent | EmptyObject;\n [EventType.RoomPowerLevels]: RoomPowerLevelsEventContent;\n [EventType.RoomName]: RoomNameEventContent;\n [EventType.RoomTopic]: RoomTopicEventContent;\n [EventType.RoomAvatar]: RoomAvatarEventContent;\n [EventType.RoomPinnedEvents]: RoomPinnedEventsEventContent;\n [EventType.RoomEncryption]: RoomEncryptionEventContent;\n [EventType.RoomHistoryVisibility]: RoomHistoryVisibilityEventContent;\n [EventType.RoomGuestAccess]: RoomGuestAccessEventContent;\n [EventType.RoomServerAcl]: RoomServerAclEventContent;\n [EventType.RoomTombstone]: RoomTombstoneEventContent;\n [EventType.SpaceChild]: SpaceChildEventContent;\n [EventType.SpaceParent]: SpaceParentEventContent;\n\n [EventType.PolicyRuleUser]: PolicyRuleEventContent | EmptyObject;\n [EventType.PolicyRuleRoom]: PolicyRuleEventContent | EmptyObject;\n [EventType.PolicyRuleServer]: PolicyRuleEventContent | EmptyObject;\n\n // MSC3401\n [EventType.GroupCallPrefix]: IGroupCallRoomState;\n [EventType.GroupCallMemberPrefix]: IGroupCallRoomMemberState | SessionMembershipData | EmptyObject;\n\n // MSC3089\n [UNSTABLE_MSC3089_BRANCH.name]: MSC3089EventContent;\n\n // MSC3672\n [M_BEACON_INFO.name]: MBeaconInfoEventContent;\n}\n\n/**\n * Mapped type from event type to content type for all specified global account_data events.\n */\nexport interface AccountDataEvents extends SecretStorageAccountDataEvents {\n [EventType.PushRules]: IPushRules;\n [EventType.Direct]: { [userId: string]: string[] };\n [EventType.IgnoredUserList]: { ignored_users: { [userId: string]: EmptyObject } };\n \"m.secret_storage.default_key\": { key: string };\n // Flag set by the rust SDK (Element X) and also used by us to mark that the user opted out of backup\n // (I don't know why it's m.org.matrix...)\n \"m.org.matrix.custom.backup_disabled\": { disabled: boolean };\n \"m.identity_server\": { base_url: string | null };\n [key: `${typeof LOCAL_NOTIFICATION_SETTINGS_PREFIX.name}.${string}`]: LocalNotificationSettings;\n [key: `m.secret_storage.key.${string}`]: SecretStorageKeyDescription;\n\n // Invites-ignorer events\n [POLICIES_ACCOUNT_EVENT_TYPE.name]: { [key: string]: any };\n [POLICIES_ACCOUNT_EVENT_TYPE.altName]: { [key: string]: any };\n}\n\n/**\n * Mapped type from event type to content type for all specified global events encrypted by secret storage.\n *\n * See https://spec.matrix.org/v1.13/client-server-api/#msecret_storagev1aes-hmac-sha2-1\n */\nexport interface SecretStorageAccountDataEvents {\n \"m.megolm_backup.v1\": SecretInfo;\n \"m.cross_signing.master\": SecretInfo;\n \"m.cross_signing.self_signing\": SecretInfo;\n \"m.cross_signing.user_signing\": SecretInfo;\n \"org.matrix.msc3814\": SecretInfo;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"event.js","names":["NamespacedValue","UnstableValue","EventType","RelationType","MsgType","RoomCreateTypeField","RoomType","ToDeviceMessageId","UNSTABLE_MSC3088_PURPOSE","UNSTABLE_MSC3088_ENABLED","UNSTABLE_MSC3089_TREE_SUBTYPE","UNSTABLE_MSC3089_LEAF","UNSTABLE_MSC3089_BRANCH","UNSTABLE_MSC2716_MARKER","MSC3912_RELATION_BASED_REDACTIONS_PROP","UNSTABLE_ELEMENT_FUNCTIONAL_USERS","EVENT_VISIBILITY_CHANGE_TYPE","PUSHER_ENABLED","PUSHER_DEVICE_ID","LOCAL_NOTIFICATION_SETTINGS_PREFIX","UNSIGNED_THREAD_ID_FIELD","UNSIGNED_MEMBERSHIP_FIELD"],"sources":["../../src/@types/event.ts"],"sourcesContent":["/*\nCopyright 2020 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { NamespacedValue, UnstableValue } from \"../NamespacedValue.ts\";\nimport {\n type PolicyRuleEventContent,\n type RoomAvatarEventContent,\n type RoomCanonicalAliasEventContent,\n type RoomCreateEventContent,\n type RoomEncryptionEventContent,\n type RoomGuestAccessEventContent,\n type RoomHistoryVisibilityEventContent,\n type RoomJoinRulesEventContent,\n type RoomMemberEventContent,\n type RoomNameEventContent,\n type RoomPinnedEventsEventContent,\n type RoomPowerLevelsEventContent,\n type RoomServerAclEventContent,\n type RoomThirdPartyInviteEventContent,\n type RoomTombstoneEventContent,\n type RoomTopicEventContent,\n type SpaceChildEventContent,\n type SpaceParentEventContent,\n} from \"./state_events.ts\";\nimport { type IGroupCallRoomMemberState, type IGroupCallRoomState } from \"../webrtc/groupCall.ts\";\nimport { type MSC3089EventContent } from \"../models/MSC3089Branch.ts\";\nimport { type M_BEACON, type M_BEACON_INFO, type MBeaconEventContent, type MBeaconInfoEventContent } from \"./beacon.ts\";\nimport { type EmptyObject } from \"./common.ts\";\nimport { type ReactionEventContent, type RoomMessageEventContent, type StickerEventContent } from \"./events.ts\";\nimport {\n type MCallAnswer,\n type MCallBase,\n type MCallCandidates,\n type MCallHangupReject,\n type MCallInviteNegotiate,\n type MCallReplacesEvent,\n type MCallSelectAnswer,\n type SDPStreamMetadata,\n type SDPStreamMetadataKey,\n} from \"../webrtc/callEventTypes.ts\";\nimport { type EncryptionKeysEventContent, type ICallNotifyContent } from \"../matrixrtc/types.ts\";\nimport { type M_POLL_END, type M_POLL_START, type PollEndEventContent, type PollStartEventContent } from \"./polls.ts\";\nimport { type SessionMembershipData } from \"../matrixrtc/CallMembership.ts\";\nimport { type LocalNotificationSettings } from \"./local_notifications.ts\";\nimport { type IPushRules } from \"./PushRules.ts\";\nimport { type SecretInfo, type SecretStorageKeyDescription } from \"../secret-storage.ts\";\nimport { type POLICIES_ACCOUNT_EVENT_TYPE } from \"../models/invites-ignorer-types.ts\";\n\nexport enum EventType {\n // Room state events\n RoomCanonicalAlias = \"m.room.canonical_alias\",\n RoomCreate = \"m.room.create\",\n RoomJoinRules = \"m.room.join_rules\",\n RoomMember = \"m.room.member\",\n RoomThirdPartyInvite = \"m.room.third_party_invite\",\n RoomPowerLevels = \"m.room.power_levels\",\n RoomName = \"m.room.name\",\n RoomTopic = \"m.room.topic\",\n RoomAvatar = \"m.room.avatar\",\n RoomPinnedEvents = \"m.room.pinned_events\",\n RoomEncryption = \"m.room.encryption\",\n RoomHistoryVisibility = \"m.room.history_visibility\",\n RoomGuestAccess = \"m.room.guest_access\",\n RoomServerAcl = \"m.room.server_acl\",\n RoomTombstone = \"m.room.tombstone\",\n RoomPredecessor = \"org.matrix.msc3946.room_predecessor\",\n\n // Moderation policy lists\n PolicyRuleUser = \"m.policy.rule.user\",\n PolicyRuleRoom = \"m.policy.rule.room\",\n PolicyRuleServer = \"m.policy.rule.server\",\n\n SpaceChild = \"m.space.child\",\n SpaceParent = \"m.space.parent\",\n\n // Room timeline events\n RoomRedaction = \"m.room.redaction\",\n RoomMessage = \"m.room.message\",\n RoomMessageEncrypted = \"m.room.encrypted\",\n Sticker = \"m.sticker\",\n CallInvite = \"m.call.invite\",\n CallCandidates = \"m.call.candidates\",\n CallAnswer = \"m.call.answer\",\n CallHangup = \"m.call.hangup\",\n CallReject = \"m.call.reject\",\n CallSelectAnswer = \"m.call.select_answer\",\n CallNegotiate = \"m.call.negotiate\",\n CallSDPStreamMetadataChanged = \"m.call.sdp_stream_metadata_changed\",\n CallSDPStreamMetadataChangedPrefix = \"org.matrix.call.sdp_stream_metadata_changed\",\n CallReplaces = \"m.call.replaces\",\n CallAssertedIdentity = \"m.call.asserted_identity\",\n CallAssertedIdentityPrefix = \"org.matrix.call.asserted_identity\",\n CallEncryptionKeysPrefix = \"io.element.call.encryption_keys\",\n KeyVerificationRequest = \"m.key.verification.request\",\n KeyVerificationStart = \"m.key.verification.start\",\n KeyVerificationCancel = \"m.key.verification.cancel\",\n KeyVerificationMac = \"m.key.verification.mac\",\n KeyVerificationDone = \"m.key.verification.done\",\n KeyVerificationKey = \"m.key.verification.key\",\n KeyVerificationAccept = \"m.key.verification.accept\",\n // Not used directly - see READY_TYPE in VerificationRequest.\n KeyVerificationReady = \"m.key.verification.ready\",\n // use of this is discouraged https://matrix.org/docs/spec/client_server/r0.6.1#m-room-message-feedback\n RoomMessageFeedback = \"m.room.message.feedback\",\n Reaction = \"m.reaction\",\n PollStart = \"org.matrix.msc3381.poll.start\",\n\n // Room ephemeral events\n Typing = \"m.typing\",\n Receipt = \"m.receipt\",\n Presence = \"m.presence\",\n\n // Room account_data events\n FullyRead = \"m.fully_read\",\n Tag = \"m.tag\",\n SpaceOrder = \"org.matrix.msc3230.space_order\", // MSC3230\n\n // User account_data events\n PushRules = \"m.push_rules\",\n Direct = \"m.direct\",\n IgnoredUserList = \"m.ignored_user_list\",\n\n // to_device events\n RoomKey = \"m.room_key\",\n RoomKeyRequest = \"m.room_key_request\",\n ForwardedRoomKey = \"m.forwarded_room_key\",\n Dummy = \"m.dummy\",\n SecretRequest = \"m.secret.request\",\n SecretSend = \"m.secret.send\",\n\n // Group call events\n GroupCallPrefix = \"org.matrix.msc3401.call\",\n GroupCallMemberPrefix = \"org.matrix.msc3401.call.member\",\n\n // MatrixRTC events\n CallNotify = \"org.matrix.msc4075.call.notify\",\n}\n\nexport enum RelationType {\n Annotation = \"m.annotation\",\n Replace = \"m.replace\",\n Reference = \"m.reference\",\n\n // Don't use this yet: it's only the stable version. The code still assumes we support the unstable prefix and,\n // moreover, our tests currently use the unstable prefix. Use THREAD_RELATION_TYPE.name.\n // Once we support *only* the stable prefix, THREAD_RELATION_TYPE can die and we can switch to this.\n Thread = \"m.thread\",\n}\n\nexport enum MsgType {\n Text = \"m.text\",\n Emote = \"m.emote\",\n Notice = \"m.notice\",\n Image = \"m.image\",\n File = \"m.file\",\n Audio = \"m.audio\",\n Location = \"m.location\",\n Video = \"m.video\",\n KeyVerificationRequest = \"m.key.verification.request\",\n}\n\nexport const RoomCreateTypeField = \"type\";\n\nexport enum RoomType {\n Space = \"m.space\",\n UnstableCall = \"org.matrix.msc3417.call\",\n ElementVideo = \"io.element.video\",\n}\n\nexport const ToDeviceMessageId = \"org.matrix.msgid\";\n\n/**\n * Identifier for an [MSC3088](https://github.com/matrix-org/matrix-doc/pull/3088)\n * room purpose. Note that this reference is UNSTABLE and subject to breaking changes,\n * including its eventual removal.\n */\nexport const UNSTABLE_MSC3088_PURPOSE = new UnstableValue(\"m.room.purpose\", \"org.matrix.msc3088.purpose\");\n\n/**\n * Enabled flag for an [MSC3088](https://github.com/matrix-org/matrix-doc/pull/3088)\n * room purpose. Note that this reference is UNSTABLE and subject to breaking changes,\n * including its eventual removal.\n */\nexport const UNSTABLE_MSC3088_ENABLED = new UnstableValue(\"m.enabled\", \"org.matrix.msc3088.enabled\");\n\n/**\n * Subtype for an [MSC3089](https://github.com/matrix-org/matrix-doc/pull/3089) space-room.\n * Note that this reference is UNSTABLE and subject to breaking changes, including its\n * eventual removal.\n */\nexport const UNSTABLE_MSC3089_TREE_SUBTYPE = new UnstableValue(\"m.data_tree\", \"org.matrix.msc3089.data_tree\");\n\n/**\n * Leaf type for an event in a [MSC3089](https://github.com/matrix-org/matrix-doc/pull/3089) space-room.\n * Note that this reference is UNSTABLE and subject to breaking changes, including its\n * eventual removal.\n */\nexport const UNSTABLE_MSC3089_LEAF = new UnstableValue(\"m.leaf\", \"org.matrix.msc3089.leaf\");\n\n/**\n * Branch (Leaf Reference) type for the index approach in a\n * [MSC3089](https://github.com/matrix-org/matrix-doc/pull/3089) space-room. Note that this reference is\n * UNSTABLE and subject to breaking changes, including its eventual removal.\n */\nexport const UNSTABLE_MSC3089_BRANCH = new UnstableValue(\"m.branch\", \"org.matrix.msc3089.branch\");\n\n/**\n * Marker event type to point back at imported historical content in a room. See\n * [MSC2716](https://github.com/matrix-org/matrix-spec-proposals/pull/2716).\n * Note that this reference is UNSTABLE and subject to breaking changes,\n * including its eventual removal.\n */\nexport const UNSTABLE_MSC2716_MARKER = new UnstableValue(\"m.room.marker\", \"org.matrix.msc2716.marker\");\n\n/**\n * Name of the request property for relation based redactions.\n * {@link https://github.com/matrix-org/matrix-spec-proposals/pull/3912}\n */\nexport const MSC3912_RELATION_BASED_REDACTIONS_PROP = new UnstableValue(\n \"with_rel_types\",\n \"org.matrix.msc3912.with_relations\",\n);\n\n/**\n * Functional members type for declaring a purpose of room members (e.g. helpful bots).\n * Note that this reference is UNSTABLE and subject to breaking changes, including its\n * eventual removal.\n *\n * Schema (TypeScript):\n * ```\n * {\n * service_members?: string[]\n * }\n * ```\n *\n * @example\n * ```\n * {\n * \"service_members\": [\n * \"@helperbot:localhost\",\n * \"@reminderbot:alice.tdl\"\n * ]\n * }\n * ```\n */\nexport const UNSTABLE_ELEMENT_FUNCTIONAL_USERS = new UnstableValue(\n \"io.element.functional_members\",\n \"io.element.functional_members\",\n);\n\n/**\n * A type of message that affects visibility of a message,\n * as per https://github.com/matrix-org/matrix-doc/pull/3531\n *\n * @experimental\n */\nexport const EVENT_VISIBILITY_CHANGE_TYPE = new UnstableValue(\"m.visibility\", \"org.matrix.msc3531.visibility\");\n\n/**\n * https://github.com/matrix-org/matrix-doc/pull/3881\n *\n * @experimental\n */\nexport const PUSHER_ENABLED = new UnstableValue(\"enabled\", \"org.matrix.msc3881.enabled\");\n\n/**\n * https://github.com/matrix-org/matrix-doc/pull/3881\n *\n * @experimental\n */\nexport const PUSHER_DEVICE_ID = new UnstableValue(\"device_id\", \"org.matrix.msc3881.device_id\");\n\n/**\n * https://github.com/matrix-org/matrix-doc/pull/3890\n *\n * @experimental\n */\nexport const LOCAL_NOTIFICATION_SETTINGS_PREFIX = new UnstableValue(\n \"m.local_notification_settings\",\n \"org.matrix.msc3890.local_notification_settings\",\n);\n\n/**\n * https://github.com/matrix-org/matrix-doc/pull/4023\n *\n * @experimental\n */\nexport const UNSIGNED_THREAD_ID_FIELD = new UnstableValue(\"thread_id\", \"org.matrix.msc4023.thread_id\");\n\n/**\n * https://github.com/matrix-org/matrix-spec-proposals/pull/4115\n *\n * @experimental\n */\nexport const UNSIGNED_MEMBERSHIP_FIELD = new NamespacedValue(\"membership\", \"io.element.msc4115.membership\");\n\n/**\n * Mapped type from event type to content type for all specified non-state room events.\n */\nexport interface TimelineEvents {\n [EventType.RoomMessage]: RoomMessageEventContent;\n [EventType.Sticker]: StickerEventContent;\n [EventType.Reaction]: ReactionEventContent;\n [EventType.CallReplaces]: MCallReplacesEvent;\n [EventType.CallAnswer]: MCallAnswer;\n [EventType.CallSelectAnswer]: MCallSelectAnswer;\n [EventType.CallNegotiate]: Omit<MCallInviteNegotiate, \"offer\">;\n [EventType.CallInvite]: MCallInviteNegotiate;\n [EventType.CallCandidates]: MCallCandidates;\n [EventType.CallHangup]: MCallHangupReject;\n [EventType.CallReject]: MCallHangupReject;\n [EventType.CallSDPStreamMetadataChangedPrefix]: MCallBase & { [SDPStreamMetadataKey]: SDPStreamMetadata };\n [EventType.CallEncryptionKeysPrefix]: EncryptionKeysEventContent;\n [EventType.CallNotify]: ICallNotifyContent;\n [M_BEACON.name]: MBeaconEventContent;\n [M_POLL_START.name]: PollStartEventContent;\n [M_POLL_END.name]: PollEndEventContent;\n}\n\n/**\n * Mapped type from event type to content type for all specified room state events.\n */\nexport interface StateEvents {\n [EventType.RoomCanonicalAlias]: RoomCanonicalAliasEventContent;\n [EventType.RoomCreate]: RoomCreateEventContent;\n [EventType.RoomJoinRules]: RoomJoinRulesEventContent;\n [EventType.RoomMember]: RoomMemberEventContent;\n // XXX: Spec says this event has 3 required fields but kicking such an invitation requires sending `{}`\n [EventType.RoomThirdPartyInvite]: RoomThirdPartyInviteEventContent | EmptyObject;\n [EventType.RoomPowerLevels]: RoomPowerLevelsEventContent;\n [EventType.RoomName]: RoomNameEventContent;\n [EventType.RoomTopic]: RoomTopicEventContent;\n [EventType.RoomAvatar]: RoomAvatarEventContent;\n [EventType.RoomPinnedEvents]: RoomPinnedEventsEventContent;\n [EventType.RoomEncryption]: RoomEncryptionEventContent;\n [EventType.RoomHistoryVisibility]: RoomHistoryVisibilityEventContent;\n [EventType.RoomGuestAccess]: RoomGuestAccessEventContent;\n [EventType.RoomServerAcl]: RoomServerAclEventContent;\n [EventType.RoomTombstone]: RoomTombstoneEventContent;\n [EventType.SpaceChild]: SpaceChildEventContent;\n [EventType.SpaceParent]: SpaceParentEventContent;\n\n [EventType.PolicyRuleUser]: PolicyRuleEventContent | EmptyObject;\n [EventType.PolicyRuleRoom]: PolicyRuleEventContent | EmptyObject;\n [EventType.PolicyRuleServer]: PolicyRuleEventContent | EmptyObject;\n\n // MSC3401\n [EventType.GroupCallPrefix]: IGroupCallRoomState;\n [EventType.GroupCallMemberPrefix]: IGroupCallRoomMemberState | SessionMembershipData | EmptyObject;\n\n // MSC3089\n [UNSTABLE_MSC3089_BRANCH.name]: MSC3089EventContent;\n\n // MSC3672\n [M_BEACON_INFO.name]: MBeaconInfoEventContent;\n}\n\n/**\n * Mapped type from event type to content type for all specified global account_data events.\n */\nexport interface AccountDataEvents extends SecretStorageAccountDataEvents {\n [EventType.PushRules]: IPushRules;\n [EventType.Direct]: { [userId: string]: string[] };\n [EventType.IgnoredUserList]: { ignored_users: { [userId: string]: EmptyObject } };\n \"m.secret_storage.default_key\": { key: string };\n // Flag set by the rust SDK (Element X) and also used by us to mark that the user opted out of backup\n // (I don't know why it's m.org.matrix...)\n \"m.org.matrix.custom.backup_disabled\": { disabled: boolean };\n \"m.identity_server\": { base_url: string | null };\n [key: `${typeof LOCAL_NOTIFICATION_SETTINGS_PREFIX.name}.${string}`]: LocalNotificationSettings;\n [key: `m.secret_storage.key.${string}`]: SecretStorageKeyDescription;\n\n // Invites-ignorer events\n [POLICIES_ACCOUNT_EVENT_TYPE.name]: { [key: string]: any };\n [POLICIES_ACCOUNT_EVENT_TYPE.altName]: { [key: string]: any };\n}\n\n/**\n * Mapped type from event type to content type for all specified global events encrypted by secret storage.\n *\n * See https://spec.matrix.org/v1.13/client-server-api/#msecret_storagev1aes-hmac-sha2-1\n */\nexport interface SecretStorageAccountDataEvents {\n \"m.megolm_backup.v1\": SecretInfo;\n \"m.cross_signing.master\": SecretInfo;\n \"m.cross_signing.self_signing\": SecretInfo;\n \"m.cross_signing.user_signing\": SecretInfo;\n \"org.matrix.msc3814\": SecretInfo;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -19,10 +19,31 @@ limitations under the License.
19
19
  * {@link Membership} type.
20
20
  */
21
21
  export var KnownMembership = /*#__PURE__*/function (KnownMembership) {
22
+ /**
23
+ * The user has been banned from the room, and is no longer allowed to join
24
+ * it until they are un-banned from the room (by having their membership
25
+ * state set to a value other than ban).
26
+ */
22
27
  KnownMembership["Ban"] = "ban";
28
+ /**
29
+ * The user has been invited to join a room, but has not yet joined it.
30
+ * They may not participate in the room until they join.
31
+ * */
23
32
  KnownMembership["Invite"] = "invite";
33
+ /**
34
+ * The user has joined the room (possibly after accepting an invite), and
35
+ * may participate in it.
36
+ */
24
37
  KnownMembership["Join"] = "join";
38
+ /**
39
+ * The user has knocked on the room, requesting permission to participate.
40
+ * They may not participate in the room until they join.
41
+ */
25
42
  KnownMembership["Knock"] = "knock";
43
+ /**
44
+ * The user was once joined to the room, but has since left (possibly by
45
+ * choice, or possibly by being kicked).
46
+ */
26
47
  KnownMembership["Leave"] = "leave";
27
48
  return KnownMembership;
28
49
  }({});
@@ -1 +1 @@
1
- {"version":3,"file":"membership.js","names":["KnownMembership"],"sources":["../../src/@types/membership.ts"],"sourcesContent":["/*\nCopyright 2024 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Well-known values (from the spec or MSCs) that are allowed in the\n * {@link Membership} type.\n */\nexport enum KnownMembership {\n /**\n * The user has been banned from the room, and is no longer allowed to join\n * it until they are un-banned from the room (by having their membership\n * state set to a value other than ban).\n */\n Ban = \"ban\",\n /**\n * The user has been invited to join a room, but has not yet joined it.\n * They may not participate in the room until they join.\n * */\n Invite = \"invite\",\n /**\n * The user has joined the room (possibly after accepting an invite), and\n * may participate in it.\n */\n Join = \"join\",\n /**\n * The user has knocked on the room, requesting permission to participate.\n * They may not participate in the room until they join.\n */\n Knock = \"knock\",\n /**\n * The user was once joined to the room, but has since left (possibly by\n * choice, or possibly by being kicked).\n */\n Leave = \"leave\",\n}\n\n/**\n * The membership state for a user in a room [1]. A value from\n * {@link KnownMembership} should be used where available, but all string values\n * are allowed to provide flexibility for upcoming spec changes or proposals.\n *\n * [1] https://spec.matrix.org/latest/client-server-api/#mroommember\n */\nexport type Membership = KnownMembership | string;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAYA,eAAe,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;;AA6B3B;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"file":"membership.js","names":["KnownMembership"],"sources":["../../src/@types/membership.ts"],"sourcesContent":["/*\nCopyright 2024 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Well-known values (from the spec or MSCs) that are allowed in the\n * {@link Membership} type.\n */\nexport enum KnownMembership {\n /**\n * The user has been banned from the room, and is no longer allowed to join\n * it until they are un-banned from the room (by having their membership\n * state set to a value other than ban).\n */\n Ban = \"ban\",\n /**\n * The user has been invited to join a room, but has not yet joined it.\n * They may not participate in the room until they join.\n * */\n Invite = \"invite\",\n /**\n * The user has joined the room (possibly after accepting an invite), and\n * may participate in it.\n */\n Join = \"join\",\n /**\n * The user has knocked on the room, requesting permission to participate.\n * They may not participate in the room until they join.\n */\n Knock = \"knock\",\n /**\n * The user was once joined to the room, but has since left (possibly by\n * choice, or possibly by being kicked).\n */\n Leave = \"leave\",\n}\n\n/**\n * The membership state for a user in a room [1]. A value from\n * {@link KnownMembership} should be used where available, but all string values\n * are allowed to provide flexibility for upcoming spec changes or proposals.\n *\n * [1] https://spec.matrix.org/latest/client-server-api/#mroommember\n */\nexport type Membership = KnownMembership | string;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAYA,eAAe,0BAAfA,eAAe;EACvB;AACJ;AACA;AACA;AACA;EALYA,eAAe;EAOvB;AACJ;AACA;AACA;EAVYA,eAAe;EAYvB;AACJ;AACA;AACA;EAfYA,eAAe;EAiBvB;AACJ;AACA;AACA;EApBYA,eAAe;EAsBvB;AACJ;AACA;AACA;EAzBYA,eAAe;EAAA,OAAfA,eAAe;AAAA;;AA6B3B;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
@@ -29,6 +29,9 @@ export var Preset = /*#__PURE__*/function (Preset) {
29
29
  export var JoinRule = /*#__PURE__*/function (JoinRule) {
30
30
  JoinRule["Public"] = "public";
31
31
  JoinRule["Invite"] = "invite";
32
+ /**
33
+ * @deprecated Reserved keyword. Should not be used. Not yet implemented.
34
+ */
32
35
  JoinRule["Private"] = "private";
33
36
  JoinRule["Knock"] = "knock";
34
37
  JoinRule["Restricted"] = "restricted";
@@ -1 +1 @@
1
- {"version":3,"file":"partials.js","names":["Visibility","Preset","JoinRule","RestrictedAllowType","GuestAccess","HistoryVisibility"],"sources":["../../src/@types/partials.ts"],"sourcesContent":["/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport enum Visibility {\n Public = \"public\",\n Private = \"private\",\n}\n\nexport enum Preset {\n PrivateChat = \"private_chat\",\n TrustedPrivateChat = \"trusted_private_chat\",\n PublicChat = \"public_chat\",\n}\n\nexport type ResizeMethod = \"crop\" | \"scale\";\n\nexport type IdServerUnbindResult = \"no-support\" | \"success\";\n\n// Knock and private are reserved keywords which are not yet implemented.\nexport enum JoinRule {\n Public = \"public\",\n Invite = \"invite\",\n /**\n * @deprecated Reserved keyword. Should not be used. Not yet implemented.\n */\n Private = \"private\",\n Knock = \"knock\",\n Restricted = \"restricted\",\n}\n\nexport enum RestrictedAllowType {\n RoomMembership = \"m.room_membership\",\n}\n\nexport enum GuestAccess {\n CanJoin = \"can_join\",\n Forbidden = \"forbidden\",\n}\n\nexport enum HistoryVisibility {\n Invited = \"invited\",\n Joined = \"joined\",\n Shared = \"shared\",\n WorldReadable = \"world_readable\",\n}\n\nexport interface IUsageLimit {\n // \"hs_disabled\" is NOT a specced string, but is used in Synapse\n // This is tracked over at https://github.com/matrix-org/synapse/issues/9237\n // eslint-disable-next-line camelcase\n limit_type: \"monthly_active_user\" | \"hs_disabled\" | string;\n // eslint-disable-next-line camelcase\n admin_contact?: string;\n}\n\n/**\n * A policy name & url in a specific internationalisation\n * @see https://spec.matrix.org/v1.13/identity-service-api/#get_matrixidentityv2terms_response-200_internationalised-policy\n */\nexport interface InternationalisedPolicy {\n name: string;\n url: string;\n}\n\n/**\n * A versioned policy with internationalised variants\n * @see https://spec.matrix.org/v1.13/identity-service-api/#get_matrixidentityv2terms_response-200_policy-object\n */\nexport interface Policy {\n /**\n * The version for the policy.\n * There are no requirements on what this might be and could be “alpha”, semantically versioned, or arbitrary.\n */\n version: string;\n /**\n * The policy information for the specified language.\n * @remarks the type has to include a union with string due to limitations in the type system.\n */\n [lang: string]: InternationalisedPolicy | string;\n}\n\n/**\n * Response from the Terms API for Identity servers\n * @see https://spec.matrix.org/v1.13/identity-service-api/#get_matrixidentityv2terms\n */\nexport interface Terms {\n policies: {\n [policyName: string]: Policy;\n };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAYA,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAKtB,WAAYC,MAAM,0BAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAAA,OAANA,MAAM;AAAA;AAUlB;AACA,WAAYC,QAAQ,0BAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA;AAWpB,WAAYC,mBAAmB,0BAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA;AAI/B,WAAYC,WAAW,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAKvB,WAAYC,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;;AAgB7B;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;;AAcA;AACA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"file":"partials.js","names":["Visibility","Preset","JoinRule","RestrictedAllowType","GuestAccess","HistoryVisibility"],"sources":["../../src/@types/partials.ts"],"sourcesContent":["/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport enum Visibility {\n Public = \"public\",\n Private = \"private\",\n}\n\nexport enum Preset {\n PrivateChat = \"private_chat\",\n TrustedPrivateChat = \"trusted_private_chat\",\n PublicChat = \"public_chat\",\n}\n\nexport type ResizeMethod = \"crop\" | \"scale\";\n\nexport type IdServerUnbindResult = \"no-support\" | \"success\";\n\n// Knock and private are reserved keywords which are not yet implemented.\nexport enum JoinRule {\n Public = \"public\",\n Invite = \"invite\",\n /**\n * @deprecated Reserved keyword. Should not be used. Not yet implemented.\n */\n Private = \"private\",\n Knock = \"knock\",\n Restricted = \"restricted\",\n}\n\nexport enum RestrictedAllowType {\n RoomMembership = \"m.room_membership\",\n}\n\nexport enum GuestAccess {\n CanJoin = \"can_join\",\n Forbidden = \"forbidden\",\n}\n\nexport enum HistoryVisibility {\n Invited = \"invited\",\n Joined = \"joined\",\n Shared = \"shared\",\n WorldReadable = \"world_readable\",\n}\n\nexport interface IUsageLimit {\n // \"hs_disabled\" is NOT a specced string, but is used in Synapse\n // This is tracked over at https://github.com/matrix-org/synapse/issues/9237\n // eslint-disable-next-line camelcase\n limit_type: \"monthly_active_user\" | \"hs_disabled\" | string;\n // eslint-disable-next-line camelcase\n admin_contact?: string;\n}\n\n/**\n * A policy name & url in a specific internationalisation\n * @see https://spec.matrix.org/v1.13/identity-service-api/#get_matrixidentityv2terms_response-200_internationalised-policy\n */\nexport interface InternationalisedPolicy {\n name: string;\n url: string;\n}\n\n/**\n * A versioned policy with internationalised variants\n * @see https://spec.matrix.org/v1.13/identity-service-api/#get_matrixidentityv2terms_response-200_policy-object\n */\nexport interface Policy {\n /**\n * The version for the policy.\n * There are no requirements on what this might be and could be “alpha”, semantically versioned, or arbitrary.\n */\n version: string;\n /**\n * The policy information for the specified language.\n * @remarks the type has to include a union with string due to limitations in the type system.\n */\n [lang: string]: InternationalisedPolicy | string;\n}\n\n/**\n * Response from the Terms API for Identity servers\n * @see https://spec.matrix.org/v1.13/identity-service-api/#get_matrixidentityv2terms\n */\nexport interface Terms {\n policies: {\n [policyName: string]: Policy;\n };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAYA,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAKtB,WAAYC,MAAM,0BAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAAA,OAANA,MAAM;AAAA;AAUlB;AACA,WAAYC,QAAQ,0BAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAGhB;AACJ;AACA;EALYA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA;AAWpB,WAAYC,mBAAmB,0BAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA;AAI/B,WAAYC,WAAW,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAKvB,WAAYC,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;;AAgB7B;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;;AAcA;AACA;AACA;AACA","ignoreList":[]}
@@ -42,7 +42,8 @@ export var AutoDiscoveryError = /*#__PURE__*/function (AutoDiscoveryError) {
42
42
  AutoDiscoveryError["InvalidIs"] = "Invalid identity server discovery response";
43
43
  AutoDiscoveryError["MissingWellknown"] = "No .well-known JSON file found";
44
44
  AutoDiscoveryError["InvalidJson"] = "Invalid JSON";
45
- AutoDiscoveryError["UnsupportedHomeserverSpecVersion"] = "The homeserver does not meet the version requirements";
45
+ AutoDiscoveryError["UnsupportedHomeserverSpecVersion"] = "The homeserver does not meet the version requirements"; // TODO: Implement when Sydent supports the `/versions` endpoint - https://github.com/matrix-org/sydent/issues/424
46
+ //IdentityServerTooOld = "The identity server does not meet the minimum version requirements",
46
47
  return AutoDiscoveryError;
47
48
  }({});
48
49
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"autodiscovery.js","names":["logger","Method","timeoutSignal","SUPPORTED_MATRIX_VERSIONS","AutoDiscoveryAction","AutoDiscoveryError","AutoDiscovery","fromDiscoveryConfig","wellknown","_this","_asyncToGenerator","_hsVersions$raw","clientConfig","state","FAIL_ERROR","error","ERROR_INVALID","base_url","PROMPT","FAIL_PROMPT","Promise","resolve","ERROR_INVALID_HS_BASE_URL","hsUrl","sanitizeWellKnownUrl","hsVersions","fetchWellKnownObject","concat","Array","isArray","raw","ERROR_INVALID_HOMESERVER","hsVersionSet","Set","supportedVersionFound","version","has","ERROR_UNSUPPORTED_HOMESERVER_SPEC_VERSION","SUCCESS","isUrl","failingClientConfig","ERROR_INVALID_IS","ERROR_INVALID_IS_BASE_URL","isResponse","action","ERROR_INVALID_IDENTITY_SERVER","toString","length","Object","keys","forEach","k","notProps","prop","includes","findClientConfig","domain","_this2","Error","domainWithProtocol","reason","IGNORE","getRawClientConfig","_this3","_response$raw","response","url","_parsed","parsed","URL","e","hostname","protocol","port","path","pathname","saferUrl","endsWith","substring","fetch","resource","options","fetchFn","globalThis","setFetchFn","method","Get","signal","status","ERROR_MISSING_WELLKNOWN","ok","err","message","json","name","ERROR_INVALID_JSON","_defineProperty","Invalid","GenericFailure","InvalidHsBaseUrl","InvalidHomeserver","InvalidIsBaseUrl","InvalidIdentityServer","InvalidIs","MissingWellknown","InvalidJson","UnsupportedHomeserverSpecVersion"],"sources":["../src/autodiscovery.ts"],"sourcesContent":["/*\nCopyright 2018 New Vector Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { type IClientWellKnown, type IWellKnownConfig, type IServerVersions } from \"./client.ts\";\nimport { logger } from \"./logger.ts\";\nimport { type MatrixError, Method, timeoutSignal } from \"./http-api/index.ts\";\nimport { SUPPORTED_MATRIX_VERSIONS } from \"./version-support.ts\";\n\n// Dev note: Auto discovery is part of the spec.\n// See: https://matrix.org/docs/spec/client_server/r0.4.0.html#server-discovery\n\nexport enum AutoDiscoveryAction {\n SUCCESS = \"SUCCESS\",\n IGNORE = \"IGNORE\",\n PROMPT = \"PROMPT\",\n FAIL_PROMPT = \"FAIL_PROMPT\",\n FAIL_ERROR = \"FAIL_ERROR\",\n}\n\nexport enum AutoDiscoveryError {\n Invalid = \"Invalid homeserver discovery response\",\n GenericFailure = \"Failed to get autodiscovery configuration from server\",\n InvalidHsBaseUrl = \"Invalid base_url for m.homeserver\",\n InvalidHomeserver = \"Homeserver URL does not appear to be a valid Matrix homeserver\",\n InvalidIsBaseUrl = \"Invalid base_url for m.identity_server\",\n InvalidIdentityServer = \"Identity server URL does not appear to be a valid identity server\",\n InvalidIs = \"Invalid identity server discovery response\",\n MissingWellknown = \"No .well-known JSON file found\",\n InvalidJson = \"Invalid JSON\",\n UnsupportedHomeserverSpecVersion = \"The homeserver does not meet the version requirements\",\n\n // TODO: Implement when Sydent supports the `/versions` endpoint - https://github.com/matrix-org/sydent/issues/424\n //IdentityServerTooOld = \"The identity server does not meet the minimum version requirements\",\n}\n\ninterface AutoDiscoveryState {\n state: AutoDiscoveryAction;\n error?: IWellKnownConfig[\"error\"] | null;\n}\ninterface WellKnownConfig extends Omit<IWellKnownConfig, \"error\">, AutoDiscoveryState {}\n\nexport interface ClientConfig extends Omit<IClientWellKnown, \"m.homeserver\" | \"m.identity_server\"> {\n \"m.homeserver\": WellKnownConfig;\n \"m.identity_server\": WellKnownConfig;\n}\n\n/**\n * Utilities for automatically discovery resources, such as homeservers\n * for users to log in to.\n */\nexport class AutoDiscovery {\n // Dev note: the constants defined here are related to but not\n // exactly the same as those in the spec. This is to hopefully\n // translate the meaning of the states in the spec, but also\n // support our own if needed.\n\n public static readonly ERROR_INVALID = AutoDiscoveryError.Invalid;\n\n public static readonly ERROR_GENERIC_FAILURE = AutoDiscoveryError.GenericFailure;\n\n public static readonly ERROR_INVALID_HS_BASE_URL = AutoDiscoveryError.InvalidHsBaseUrl;\n\n public static readonly ERROR_INVALID_HOMESERVER = AutoDiscoveryError.InvalidHomeserver;\n\n public static readonly ERROR_INVALID_IS_BASE_URL = AutoDiscoveryError.InvalidIsBaseUrl;\n\n public static readonly ERROR_INVALID_IDENTITY_SERVER = AutoDiscoveryError.InvalidIdentityServer;\n\n public static readonly ERROR_INVALID_IS = AutoDiscoveryError.InvalidIs;\n\n public static readonly ERROR_MISSING_WELLKNOWN = AutoDiscoveryError.MissingWellknown;\n\n public static readonly ERROR_INVALID_JSON = AutoDiscoveryError.InvalidJson;\n\n public static readonly ERROR_UNSUPPORTED_HOMESERVER_SPEC_VERSION =\n AutoDiscoveryError.UnsupportedHomeserverSpecVersion;\n\n public static readonly ALL_ERRORS = Object.keys(AutoDiscoveryError) as AutoDiscoveryError[];\n\n /**\n * The auto discovery failed. The client is expected to communicate\n * the error to the user and refuse logging in.\n */\n public static readonly FAIL_ERROR = AutoDiscoveryAction.FAIL_ERROR;\n\n /**\n * The auto discovery failed, however the client may still recover\n * from the problem. The client is recommended to that the same\n * action it would for PROMPT while also warning the user about\n * what went wrong. The client may also treat this the same as\n * a FAIL_ERROR state.\n */\n public static readonly FAIL_PROMPT = AutoDiscoveryAction.FAIL_PROMPT;\n\n /**\n * The auto discovery didn't fail but did not find anything of\n * interest. The client is expected to prompt the user for more\n * information, or fail if it prefers.\n */\n public static readonly PROMPT = AutoDiscoveryAction.PROMPT;\n\n /**\n * The auto discovery was successful.\n */\n public static readonly SUCCESS = AutoDiscoveryAction.SUCCESS;\n\n /**\n * Validates and verifies client configuration information for purposes\n * of logging in. Such information includes the homeserver URL\n * and identity server URL the client would want. Additional details\n * may also be included, and will be transparently brought into the\n * response object unaltered.\n * @param wellknown - The configuration object itself, as returned\n * by the .well-known auto-discovery endpoint.\n * @returns Promise which resolves to the verified\n * configuration, which may include error states. Rejects on unexpected\n * failure, not when verification fails.\n */\n public static async fromDiscoveryConfig(wellknown?: IClientWellKnown): Promise<ClientConfig> {\n // Step 1 is to get the config, which is provided to us here.\n\n // We default to an error state to make the first few checks easier to\n // write. We'll update the properties of this object over the duration\n // of this function.\n const clientConfig: ClientConfig = {\n \"m.homeserver\": {\n state: AutoDiscovery.FAIL_ERROR,\n error: AutoDiscovery.ERROR_INVALID,\n base_url: null,\n },\n \"m.identity_server\": {\n // Technically, we don't have a problem with the identity server\n // config at this point.\n state: AutoDiscovery.PROMPT,\n error: null,\n base_url: null,\n },\n };\n\n if (!wellknown?.[\"m.homeserver\"]) {\n logger.error(\"No m.homeserver key in config\");\n\n clientConfig[\"m.homeserver\"].state = AutoDiscovery.FAIL_PROMPT;\n clientConfig[\"m.homeserver\"].error = AutoDiscovery.ERROR_INVALID;\n\n return Promise.resolve(clientConfig);\n }\n\n if (!wellknown[\"m.homeserver\"][\"base_url\"]) {\n logger.error(\"No m.homeserver base_url in config\");\n\n clientConfig[\"m.homeserver\"].state = AutoDiscovery.FAIL_PROMPT;\n clientConfig[\"m.homeserver\"].error = AutoDiscovery.ERROR_INVALID_HS_BASE_URL;\n\n return Promise.resolve(clientConfig);\n }\n\n // Step 2: Make sure the homeserver URL is valid *looking*. We'll make\n // sure it points to a homeserver in Step 3.\n const hsUrl = this.sanitizeWellKnownUrl(wellknown[\"m.homeserver\"][\"base_url\"]);\n if (!hsUrl) {\n logger.error(\"Invalid base_url for m.homeserver\");\n clientConfig[\"m.homeserver\"].error = AutoDiscovery.ERROR_INVALID_HS_BASE_URL;\n return Promise.resolve(clientConfig);\n }\n\n // Step 3: Make sure the homeserver URL points to a homeserver.\n const hsVersions = await this.fetchWellKnownObject<IServerVersions>(`${hsUrl}/_matrix/client/versions`);\n if (!hsVersions || !Array.isArray(hsVersions.raw?.[\"versions\"])) {\n logger.error(\"Invalid /versions response\");\n clientConfig[\"m.homeserver\"].error = AutoDiscovery.ERROR_INVALID_HOMESERVER;\n\n // Supply the base_url to the caller because they may be ignoring liveliness\n // errors, like this one.\n clientConfig[\"m.homeserver\"].base_url = hsUrl;\n\n return Promise.resolve(clientConfig);\n }\n\n // Step 3.1: Non-spec check to ensure the server will actually work for us. We need to check if\n // any of the versions in `SUPPORTED_MATRIX_VERSIONS` are listed in the /versions response.\n const hsVersionSet = new Set(hsVersions.raw![\"versions\"]);\n let supportedVersionFound = false;\n for (const version of SUPPORTED_MATRIX_VERSIONS) {\n if (hsVersionSet.has(version)) {\n supportedVersionFound = true;\n break;\n }\n }\n if (!supportedVersionFound) {\n logger.error(\"Homeserver does not meet version requirements\");\n clientConfig[\"m.homeserver\"].error = AutoDiscovery.ERROR_UNSUPPORTED_HOMESERVER_SPEC_VERSION;\n\n // Supply the base_url to the caller because they may be ignoring liveliness\n // errors, like this one.\n clientConfig[\"m.homeserver\"].base_url = hsUrl;\n\n return Promise.resolve(clientConfig);\n }\n\n // Step 4: Now that the homeserver looks valid, update our client config.\n clientConfig[\"m.homeserver\"] = {\n state: AutoDiscovery.SUCCESS,\n error: null,\n base_url: hsUrl,\n };\n\n // Step 5: Try to pull out the identity server configuration\n let isUrl: string | boolean = \"\";\n if (wellknown[\"m.identity_server\"]) {\n // We prepare a failing identity server response to save lines later\n // in this branch.\n const failingClientConfig: ClientConfig = {\n \"m.homeserver\": clientConfig[\"m.homeserver\"],\n \"m.identity_server\": {\n state: AutoDiscovery.FAIL_PROMPT,\n error: AutoDiscovery.ERROR_INVALID_IS,\n base_url: null,\n },\n };\n\n // Step 5a: Make sure the URL is valid *looking*. We'll make sure it\n // points to an identity server in Step 5b.\n isUrl = this.sanitizeWellKnownUrl(wellknown[\"m.identity_server\"][\"base_url\"]);\n if (!isUrl) {\n logger.error(\"Invalid base_url for m.identity_server\");\n failingClientConfig[\"m.identity_server\"].error = AutoDiscovery.ERROR_INVALID_IS_BASE_URL;\n return Promise.resolve(failingClientConfig);\n }\n\n // Step 5b: Verify there is an identity server listening on the provided\n // URL.\n const isResponse = await this.fetchWellKnownObject(`${isUrl}/_matrix/identity/v2`);\n if (!isResponse?.raw || isResponse.action !== AutoDiscoveryAction.SUCCESS) {\n logger.error(\"Invalid /v2 response\");\n failingClientConfig[\"m.identity_server\"].error = AutoDiscovery.ERROR_INVALID_IDENTITY_SERVER;\n\n // Supply the base_url to the caller because they may be ignoring\n // liveliness errors, like this one.\n failingClientConfig[\"m.identity_server\"].base_url = isUrl;\n\n return Promise.resolve(failingClientConfig);\n }\n }\n\n // Step 6: Now that the identity server is valid, or never existed,\n // populate the IS section.\n if (isUrl && isUrl.toString().length > 0) {\n clientConfig[\"m.identity_server\"] = {\n state: AutoDiscovery.SUCCESS,\n error: null,\n base_url: isUrl,\n };\n }\n\n // Step 7: Copy any other keys directly into the clientConfig. This is for\n // things like custom configuration of services.\n Object.keys(wellknown).forEach((k: keyof IClientWellKnown) => {\n if (k === \"m.homeserver\" || k === \"m.identity_server\") {\n // Only copy selected parts of the config to avoid overwriting\n // properties computed by the validation logic above.\n const notProps = [\"error\", \"state\", \"base_url\"];\n for (const prop of Object.keys(wellknown[k]!)) {\n if (notProps.includes(prop)) continue;\n type Prop = Exclude<keyof IWellKnownConfig, \"error\" | \"state\" | \"base_url\">;\n // @ts-ignore - ts gets unhappy as we're mixing types here\n clientConfig[k][prop as Prop] = wellknown[k]![prop as Prop];\n }\n } else {\n // Just copy the whole thing over otherwise\n clientConfig[k] = wellknown[k];\n }\n });\n\n // Step 8: Give the config to the caller (finally)\n return Promise.resolve(clientConfig);\n }\n\n /**\n * Attempts to automatically discover client configuration information\n * prior to logging in. Such information includes the homeserver URL\n * and identity server URL the client would want. Additional details\n * may also be discovered, and will be transparently included in the\n * response object unaltered.\n * @param domain - The homeserver domain to perform discovery\n * on. For example, \"matrix.org\".\n * @returns Promise which resolves to the discovered\n * configuration, which may include error states. Rejects on unexpected\n * failure, not when discovery fails.\n */\n public static async findClientConfig(domain: string): Promise<ClientConfig> {\n if (!domain || typeof domain !== \"string\" || domain.length === 0) {\n throw new Error(\"'domain' must be a string of non-zero length\");\n }\n\n // We use a .well-known lookup for all cases. According to the spec, we\n // can do other discovery mechanisms if we want such as custom lookups\n // however we won't bother with that here (mostly because the spec only\n // supports .well-known right now).\n //\n // By using .well-known, we need to ensure we at least pull out a URL\n // for the homeserver. We don't really need an identity server configuration\n // but will return one anyways (with state PROMPT) to make development\n // easier for clients. If we can't get a homeserver URL, all bets are\n // off on the rest of the config and we'll assume it is invalid too.\n\n // We default to an error state to make the first few checks easier to\n // write. We'll update the properties of this object over the duration\n // of this function.\n const clientConfig: ClientConfig = {\n \"m.homeserver\": {\n state: AutoDiscovery.FAIL_ERROR,\n error: AutoDiscovery.ERROR_INVALID,\n base_url: null,\n },\n \"m.identity_server\": {\n // Technically, we don't have a problem with the identity server\n // config at this point.\n state: AutoDiscovery.PROMPT,\n error: null,\n base_url: null,\n },\n };\n\n // Step 1: Actually request the .well-known JSON file and make sure it\n // at least has a homeserver definition.\n const domainWithProtocol = domain.includes(\"://\") ? domain : `https://${domain}`;\n const wellknown = await this.fetchWellKnownObject(`${domainWithProtocol}/.well-known/matrix/client`);\n if (!wellknown || wellknown.action !== AutoDiscoveryAction.SUCCESS) {\n logger.error(\"No response or error when parsing .well-known\");\n if (wellknown.reason) logger.error(wellknown.reason);\n if (wellknown.action === AutoDiscoveryAction.IGNORE) {\n clientConfig[\"m.homeserver\"] = {\n state: AutoDiscovery.PROMPT,\n error: null,\n base_url: null,\n };\n } else {\n // this can only ever be FAIL_PROMPT at this point.\n clientConfig[\"m.homeserver\"].state = AutoDiscovery.FAIL_PROMPT;\n clientConfig[\"m.homeserver\"].error = AutoDiscovery.ERROR_INVALID;\n }\n return Promise.resolve(clientConfig);\n }\n\n // Step 2: Validate and parse the config\n return AutoDiscovery.fromDiscoveryConfig(wellknown.raw!);\n }\n\n /**\n * Gets the raw discovery client configuration for the given domain name.\n * Should only be used if there's no validation to be done on the resulting\n * object, otherwise use findClientConfig().\n * @param domain - The domain to get the client config for.\n * @returns Promise which resolves to the domain's client config. Can\n * be an empty object.\n */\n public static async getRawClientConfig(domain?: string): Promise<IClientWellKnown> {\n if (!domain || typeof domain !== \"string\" || domain.length === 0) {\n throw new Error(\"'domain' must be a string of non-zero length\");\n }\n\n const response = await this.fetchWellKnownObject(`https://${domain}/.well-known/matrix/client`);\n if (!response) return {};\n return response.raw ?? {};\n }\n\n /**\n * Sanitizes a given URL to ensure it is either an HTTP or HTTP URL and\n * is suitable for the requirements laid out by .well-known auto discovery.\n * If valid, the URL will also be stripped of any trailing slashes.\n * @param url - The potentially invalid URL to sanitize.\n * @returns The sanitized URL or a falsey value if the URL is invalid.\n * @internal\n */\n private static sanitizeWellKnownUrl(url?: string | null): string | false {\n if (!url) return false;\n\n try {\n let parsed: URL | undefined;\n try {\n parsed = new URL(url);\n } catch (e) {\n logger.error(\"Could not parse url\", e);\n }\n\n if (!parsed?.hostname) return false;\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") return false;\n\n const port = parsed.port ? `:${parsed.port}` : \"\";\n const path = parsed.pathname ? parsed.pathname : \"\";\n let saferUrl = `${parsed.protocol}//${parsed.hostname}${port}${path}`;\n if (saferUrl.endsWith(\"/\")) {\n saferUrl = saferUrl.substring(0, saferUrl.length - 1);\n }\n return saferUrl;\n } catch (e) {\n logger.error(e);\n return false;\n }\n }\n\n private static fetch(resource: URL | string, options?: RequestInit): ReturnType<typeof globalThis.fetch> {\n if (this.fetchFn) {\n return this.fetchFn(resource, options);\n }\n return globalThis.fetch(resource, options);\n }\n\n private static fetchFn?: typeof globalThis.fetch;\n\n public static setFetchFn(fetchFn: typeof globalThis.fetch): void {\n AutoDiscovery.fetchFn = fetchFn;\n }\n\n /**\n * Fetches a JSON object from a given URL, as expected by all .well-known\n * related lookups. If the server gives a 404 then the `action` will be\n * IGNORE. If the server returns something that isn't JSON, the `action`\n * will be FAIL_PROMPT. For any other failure the `action` will be FAIL_PROMPT.\n *\n * The returned object will be a result of the call in object form with\n * the following properties:\n * raw: The JSON object returned by the server.\n * action: One of SUCCESS, IGNORE, or FAIL_PROMPT.\n * reason: Relatively human-readable description of what went wrong.\n * error: The actual Error, if one exists.\n * @param url - The URL to fetch a JSON object from.\n * @returns Promise which resolves to the returned state.\n * @internal\n */\n private static async fetchWellKnownObject<T = IWellKnownConfig>(\n url: string,\n ): Promise<IWellKnownConfig<Partial<T>>> {\n let response: Response;\n\n try {\n response = await AutoDiscovery.fetch(url, {\n method: Method.Get,\n signal: timeoutSignal(5000),\n });\n\n if (response.status === 404) {\n return {\n raw: {},\n action: AutoDiscoveryAction.IGNORE,\n reason: AutoDiscovery.ERROR_MISSING_WELLKNOWN,\n };\n }\n\n if (!response.ok) {\n return {\n raw: {},\n action: AutoDiscoveryAction.FAIL_PROMPT,\n reason: \"General failure\",\n };\n }\n } catch (err) {\n const error = err as AutoDiscoveryError | string | undefined;\n let reason = \"\";\n if (typeof error === \"object\") {\n reason = (<Error>error)?.message;\n }\n\n return {\n error,\n raw: {},\n action: AutoDiscoveryAction.FAIL_PROMPT,\n reason: reason || \"General failure\",\n };\n }\n\n try {\n return {\n raw: await response.json(),\n action: AutoDiscoveryAction.SUCCESS,\n };\n } catch (err) {\n const error = err as Error;\n return {\n error,\n raw: {},\n action: AutoDiscoveryAction.FAIL_PROMPT,\n reason:\n (error as MatrixError)?.name === \"SyntaxError\"\n ? AutoDiscovery.ERROR_INVALID_JSON\n : AutoDiscovery.ERROR_INVALID,\n };\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"autodiscovery.js","names":["logger","Method","timeoutSignal","SUPPORTED_MATRIX_VERSIONS","AutoDiscoveryAction","AutoDiscoveryError","AutoDiscovery","fromDiscoveryConfig","wellknown","_this","_asyncToGenerator","_hsVersions$raw","clientConfig","state","FAIL_ERROR","error","ERROR_INVALID","base_url","PROMPT","FAIL_PROMPT","Promise","resolve","ERROR_INVALID_HS_BASE_URL","hsUrl","sanitizeWellKnownUrl","hsVersions","fetchWellKnownObject","concat","Array","isArray","raw","ERROR_INVALID_HOMESERVER","hsVersionSet","Set","supportedVersionFound","version","has","ERROR_UNSUPPORTED_HOMESERVER_SPEC_VERSION","SUCCESS","isUrl","failingClientConfig","ERROR_INVALID_IS","ERROR_INVALID_IS_BASE_URL","isResponse","action","ERROR_INVALID_IDENTITY_SERVER","toString","length","Object","keys","forEach","k","notProps","prop","includes","findClientConfig","domain","_this2","Error","domainWithProtocol","reason","IGNORE","getRawClientConfig","_this3","_response$raw","response","url","_parsed","parsed","URL","e","hostname","protocol","port","path","pathname","saferUrl","endsWith","substring","fetch","resource","options","fetchFn","globalThis","setFetchFn","method","Get","signal","status","ERROR_MISSING_WELLKNOWN","ok","err","message","json","name","ERROR_INVALID_JSON","_defineProperty","Invalid","GenericFailure","InvalidHsBaseUrl","InvalidHomeserver","InvalidIsBaseUrl","InvalidIdentityServer","InvalidIs","MissingWellknown","InvalidJson","UnsupportedHomeserverSpecVersion"],"sources":["../src/autodiscovery.ts"],"sourcesContent":["/*\nCopyright 2018 New Vector Ltd\nCopyright 2019 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { type IClientWellKnown, type IWellKnownConfig, type IServerVersions } from \"./client.ts\";\nimport { logger } from \"./logger.ts\";\nimport { type MatrixError, Method, timeoutSignal } from \"./http-api/index.ts\";\nimport { SUPPORTED_MATRIX_VERSIONS } from \"./version-support.ts\";\n\n// Dev note: Auto discovery is part of the spec.\n// See: https://matrix.org/docs/spec/client_server/r0.4.0.html#server-discovery\n\nexport enum AutoDiscoveryAction {\n SUCCESS = \"SUCCESS\",\n IGNORE = \"IGNORE\",\n PROMPT = \"PROMPT\",\n FAIL_PROMPT = \"FAIL_PROMPT\",\n FAIL_ERROR = \"FAIL_ERROR\",\n}\n\nexport enum AutoDiscoveryError {\n Invalid = \"Invalid homeserver discovery response\",\n GenericFailure = \"Failed to get autodiscovery configuration from server\",\n InvalidHsBaseUrl = \"Invalid base_url for m.homeserver\",\n InvalidHomeserver = \"Homeserver URL does not appear to be a valid Matrix homeserver\",\n InvalidIsBaseUrl = \"Invalid base_url for m.identity_server\",\n InvalidIdentityServer = \"Identity server URL does not appear to be a valid identity server\",\n InvalidIs = \"Invalid identity server discovery response\",\n MissingWellknown = \"No .well-known JSON file found\",\n InvalidJson = \"Invalid JSON\",\n UnsupportedHomeserverSpecVersion = \"The homeserver does not meet the version requirements\",\n\n // TODO: Implement when Sydent supports the `/versions` endpoint - https://github.com/matrix-org/sydent/issues/424\n //IdentityServerTooOld = \"The identity server does not meet the minimum version requirements\",\n}\n\ninterface AutoDiscoveryState {\n state: AutoDiscoveryAction;\n error?: IWellKnownConfig[\"error\"] | null;\n}\ninterface WellKnownConfig extends Omit<IWellKnownConfig, \"error\">, AutoDiscoveryState {}\n\nexport interface ClientConfig extends Omit<IClientWellKnown, \"m.homeserver\" | \"m.identity_server\"> {\n \"m.homeserver\": WellKnownConfig;\n \"m.identity_server\": WellKnownConfig;\n}\n\n/**\n * Utilities for automatically discovery resources, such as homeservers\n * for users to log in to.\n */\nexport class AutoDiscovery {\n // Dev note: the constants defined here are related to but not\n // exactly the same as those in the spec. This is to hopefully\n // translate the meaning of the states in the spec, but also\n // support our own if needed.\n\n public static readonly ERROR_INVALID = AutoDiscoveryError.Invalid;\n\n public static readonly ERROR_GENERIC_FAILURE = AutoDiscoveryError.GenericFailure;\n\n public static readonly ERROR_INVALID_HS_BASE_URL = AutoDiscoveryError.InvalidHsBaseUrl;\n\n public static readonly ERROR_INVALID_HOMESERVER = AutoDiscoveryError.InvalidHomeserver;\n\n public static readonly ERROR_INVALID_IS_BASE_URL = AutoDiscoveryError.InvalidIsBaseUrl;\n\n public static readonly ERROR_INVALID_IDENTITY_SERVER = AutoDiscoveryError.InvalidIdentityServer;\n\n public static readonly ERROR_INVALID_IS = AutoDiscoveryError.InvalidIs;\n\n public static readonly ERROR_MISSING_WELLKNOWN = AutoDiscoveryError.MissingWellknown;\n\n public static readonly ERROR_INVALID_JSON = AutoDiscoveryError.InvalidJson;\n\n public static readonly ERROR_UNSUPPORTED_HOMESERVER_SPEC_VERSION =\n AutoDiscoveryError.UnsupportedHomeserverSpecVersion;\n\n public static readonly ALL_ERRORS = Object.keys(AutoDiscoveryError) as AutoDiscoveryError[];\n\n /**\n * The auto discovery failed. The client is expected to communicate\n * the error to the user and refuse logging in.\n */\n public static readonly FAIL_ERROR = AutoDiscoveryAction.FAIL_ERROR;\n\n /**\n * The auto discovery failed, however the client may still recover\n * from the problem. The client is recommended to that the same\n * action it would for PROMPT while also warning the user about\n * what went wrong. The client may also treat this the same as\n * a FAIL_ERROR state.\n */\n public static readonly FAIL_PROMPT = AutoDiscoveryAction.FAIL_PROMPT;\n\n /**\n * The auto discovery didn't fail but did not find anything of\n * interest. The client is expected to prompt the user for more\n * information, or fail if it prefers.\n */\n public static readonly PROMPT = AutoDiscoveryAction.PROMPT;\n\n /**\n * The auto discovery was successful.\n */\n public static readonly SUCCESS = AutoDiscoveryAction.SUCCESS;\n\n /**\n * Validates and verifies client configuration information for purposes\n * of logging in. Such information includes the homeserver URL\n * and identity server URL the client would want. Additional details\n * may also be included, and will be transparently brought into the\n * response object unaltered.\n * @param wellknown - The configuration object itself, as returned\n * by the .well-known auto-discovery endpoint.\n * @returns Promise which resolves to the verified\n * configuration, which may include error states. Rejects on unexpected\n * failure, not when verification fails.\n */\n public static async fromDiscoveryConfig(wellknown?: IClientWellKnown): Promise<ClientConfig> {\n // Step 1 is to get the config, which is provided to us here.\n\n // We default to an error state to make the first few checks easier to\n // write. We'll update the properties of this object over the duration\n // of this function.\n const clientConfig: ClientConfig = {\n \"m.homeserver\": {\n state: AutoDiscovery.FAIL_ERROR,\n error: AutoDiscovery.ERROR_INVALID,\n base_url: null,\n },\n \"m.identity_server\": {\n // Technically, we don't have a problem with the identity server\n // config at this point.\n state: AutoDiscovery.PROMPT,\n error: null,\n base_url: null,\n },\n };\n\n if (!wellknown?.[\"m.homeserver\"]) {\n logger.error(\"No m.homeserver key in config\");\n\n clientConfig[\"m.homeserver\"].state = AutoDiscovery.FAIL_PROMPT;\n clientConfig[\"m.homeserver\"].error = AutoDiscovery.ERROR_INVALID;\n\n return Promise.resolve(clientConfig);\n }\n\n if (!wellknown[\"m.homeserver\"][\"base_url\"]) {\n logger.error(\"No m.homeserver base_url in config\");\n\n clientConfig[\"m.homeserver\"].state = AutoDiscovery.FAIL_PROMPT;\n clientConfig[\"m.homeserver\"].error = AutoDiscovery.ERROR_INVALID_HS_BASE_URL;\n\n return Promise.resolve(clientConfig);\n }\n\n // Step 2: Make sure the homeserver URL is valid *looking*. We'll make\n // sure it points to a homeserver in Step 3.\n const hsUrl = this.sanitizeWellKnownUrl(wellknown[\"m.homeserver\"][\"base_url\"]);\n if (!hsUrl) {\n logger.error(\"Invalid base_url for m.homeserver\");\n clientConfig[\"m.homeserver\"].error = AutoDiscovery.ERROR_INVALID_HS_BASE_URL;\n return Promise.resolve(clientConfig);\n }\n\n // Step 3: Make sure the homeserver URL points to a homeserver.\n const hsVersions = await this.fetchWellKnownObject<IServerVersions>(`${hsUrl}/_matrix/client/versions`);\n if (!hsVersions || !Array.isArray(hsVersions.raw?.[\"versions\"])) {\n logger.error(\"Invalid /versions response\");\n clientConfig[\"m.homeserver\"].error = AutoDiscovery.ERROR_INVALID_HOMESERVER;\n\n // Supply the base_url to the caller because they may be ignoring liveliness\n // errors, like this one.\n clientConfig[\"m.homeserver\"].base_url = hsUrl;\n\n return Promise.resolve(clientConfig);\n }\n\n // Step 3.1: Non-spec check to ensure the server will actually work for us. We need to check if\n // any of the versions in `SUPPORTED_MATRIX_VERSIONS` are listed in the /versions response.\n const hsVersionSet = new Set(hsVersions.raw![\"versions\"]);\n let supportedVersionFound = false;\n for (const version of SUPPORTED_MATRIX_VERSIONS) {\n if (hsVersionSet.has(version)) {\n supportedVersionFound = true;\n break;\n }\n }\n if (!supportedVersionFound) {\n logger.error(\"Homeserver does not meet version requirements\");\n clientConfig[\"m.homeserver\"].error = AutoDiscovery.ERROR_UNSUPPORTED_HOMESERVER_SPEC_VERSION;\n\n // Supply the base_url to the caller because they may be ignoring liveliness\n // errors, like this one.\n clientConfig[\"m.homeserver\"].base_url = hsUrl;\n\n return Promise.resolve(clientConfig);\n }\n\n // Step 4: Now that the homeserver looks valid, update our client config.\n clientConfig[\"m.homeserver\"] = {\n state: AutoDiscovery.SUCCESS,\n error: null,\n base_url: hsUrl,\n };\n\n // Step 5: Try to pull out the identity server configuration\n let isUrl: string | boolean = \"\";\n if (wellknown[\"m.identity_server\"]) {\n // We prepare a failing identity server response to save lines later\n // in this branch.\n const failingClientConfig: ClientConfig = {\n \"m.homeserver\": clientConfig[\"m.homeserver\"],\n \"m.identity_server\": {\n state: AutoDiscovery.FAIL_PROMPT,\n error: AutoDiscovery.ERROR_INVALID_IS,\n base_url: null,\n },\n };\n\n // Step 5a: Make sure the URL is valid *looking*. We'll make sure it\n // points to an identity server in Step 5b.\n isUrl = this.sanitizeWellKnownUrl(wellknown[\"m.identity_server\"][\"base_url\"]);\n if (!isUrl) {\n logger.error(\"Invalid base_url for m.identity_server\");\n failingClientConfig[\"m.identity_server\"].error = AutoDiscovery.ERROR_INVALID_IS_BASE_URL;\n return Promise.resolve(failingClientConfig);\n }\n\n // Step 5b: Verify there is an identity server listening on the provided\n // URL.\n const isResponse = await this.fetchWellKnownObject(`${isUrl}/_matrix/identity/v2`);\n if (!isResponse?.raw || isResponse.action !== AutoDiscoveryAction.SUCCESS) {\n logger.error(\"Invalid /v2 response\");\n failingClientConfig[\"m.identity_server\"].error = AutoDiscovery.ERROR_INVALID_IDENTITY_SERVER;\n\n // Supply the base_url to the caller because they may be ignoring\n // liveliness errors, like this one.\n failingClientConfig[\"m.identity_server\"].base_url = isUrl;\n\n return Promise.resolve(failingClientConfig);\n }\n }\n\n // Step 6: Now that the identity server is valid, or never existed,\n // populate the IS section.\n if (isUrl && isUrl.toString().length > 0) {\n clientConfig[\"m.identity_server\"] = {\n state: AutoDiscovery.SUCCESS,\n error: null,\n base_url: isUrl,\n };\n }\n\n // Step 7: Copy any other keys directly into the clientConfig. This is for\n // things like custom configuration of services.\n Object.keys(wellknown).forEach((k: keyof IClientWellKnown) => {\n if (k === \"m.homeserver\" || k === \"m.identity_server\") {\n // Only copy selected parts of the config to avoid overwriting\n // properties computed by the validation logic above.\n const notProps = [\"error\", \"state\", \"base_url\"];\n for (const prop of Object.keys(wellknown[k]!)) {\n if (notProps.includes(prop)) continue;\n type Prop = Exclude<keyof IWellKnownConfig, \"error\" | \"state\" | \"base_url\">;\n // @ts-ignore - ts gets unhappy as we're mixing types here\n clientConfig[k][prop as Prop] = wellknown[k]![prop as Prop];\n }\n } else {\n // Just copy the whole thing over otherwise\n clientConfig[k] = wellknown[k];\n }\n });\n\n // Step 8: Give the config to the caller (finally)\n return Promise.resolve(clientConfig);\n }\n\n /**\n * Attempts to automatically discover client configuration information\n * prior to logging in. Such information includes the homeserver URL\n * and identity server URL the client would want. Additional details\n * may also be discovered, and will be transparently included in the\n * response object unaltered.\n * @param domain - The homeserver domain to perform discovery\n * on. For example, \"matrix.org\".\n * @returns Promise which resolves to the discovered\n * configuration, which may include error states. Rejects on unexpected\n * failure, not when discovery fails.\n */\n public static async findClientConfig(domain: string): Promise<ClientConfig> {\n if (!domain || typeof domain !== \"string\" || domain.length === 0) {\n throw new Error(\"'domain' must be a string of non-zero length\");\n }\n\n // We use a .well-known lookup for all cases. According to the spec, we\n // can do other discovery mechanisms if we want such as custom lookups\n // however we won't bother with that here (mostly because the spec only\n // supports .well-known right now).\n //\n // By using .well-known, we need to ensure we at least pull out a URL\n // for the homeserver. We don't really need an identity server configuration\n // but will return one anyways (with state PROMPT) to make development\n // easier for clients. If we can't get a homeserver URL, all bets are\n // off on the rest of the config and we'll assume it is invalid too.\n\n // We default to an error state to make the first few checks easier to\n // write. We'll update the properties of this object over the duration\n // of this function.\n const clientConfig: ClientConfig = {\n \"m.homeserver\": {\n state: AutoDiscovery.FAIL_ERROR,\n error: AutoDiscovery.ERROR_INVALID,\n base_url: null,\n },\n \"m.identity_server\": {\n // Technically, we don't have a problem with the identity server\n // config at this point.\n state: AutoDiscovery.PROMPT,\n error: null,\n base_url: null,\n },\n };\n\n // Step 1: Actually request the .well-known JSON file and make sure it\n // at least has a homeserver definition.\n const domainWithProtocol = domain.includes(\"://\") ? domain : `https://${domain}`;\n const wellknown = await this.fetchWellKnownObject(`${domainWithProtocol}/.well-known/matrix/client`);\n if (!wellknown || wellknown.action !== AutoDiscoveryAction.SUCCESS) {\n logger.error(\"No response or error when parsing .well-known\");\n if (wellknown.reason) logger.error(wellknown.reason);\n if (wellknown.action === AutoDiscoveryAction.IGNORE) {\n clientConfig[\"m.homeserver\"] = {\n state: AutoDiscovery.PROMPT,\n error: null,\n base_url: null,\n };\n } else {\n // this can only ever be FAIL_PROMPT at this point.\n clientConfig[\"m.homeserver\"].state = AutoDiscovery.FAIL_PROMPT;\n clientConfig[\"m.homeserver\"].error = AutoDiscovery.ERROR_INVALID;\n }\n return Promise.resolve(clientConfig);\n }\n\n // Step 2: Validate and parse the config\n return AutoDiscovery.fromDiscoveryConfig(wellknown.raw!);\n }\n\n /**\n * Gets the raw discovery client configuration for the given domain name.\n * Should only be used if there's no validation to be done on the resulting\n * object, otherwise use findClientConfig().\n * @param domain - The domain to get the client config for.\n * @returns Promise which resolves to the domain's client config. Can\n * be an empty object.\n */\n public static async getRawClientConfig(domain?: string): Promise<IClientWellKnown> {\n if (!domain || typeof domain !== \"string\" || domain.length === 0) {\n throw new Error(\"'domain' must be a string of non-zero length\");\n }\n\n const response = await this.fetchWellKnownObject(`https://${domain}/.well-known/matrix/client`);\n if (!response) return {};\n return response.raw ?? {};\n }\n\n /**\n * Sanitizes a given URL to ensure it is either an HTTP or HTTP URL and\n * is suitable for the requirements laid out by .well-known auto discovery.\n * If valid, the URL will also be stripped of any trailing slashes.\n * @param url - The potentially invalid URL to sanitize.\n * @returns The sanitized URL or a falsey value if the URL is invalid.\n * @internal\n */\n private static sanitizeWellKnownUrl(url?: string | null): string | false {\n if (!url) return false;\n\n try {\n let parsed: URL | undefined;\n try {\n parsed = new URL(url);\n } catch (e) {\n logger.error(\"Could not parse url\", e);\n }\n\n if (!parsed?.hostname) return false;\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") return false;\n\n const port = parsed.port ? `:${parsed.port}` : \"\";\n const path = parsed.pathname ? parsed.pathname : \"\";\n let saferUrl = `${parsed.protocol}//${parsed.hostname}${port}${path}`;\n if (saferUrl.endsWith(\"/\")) {\n saferUrl = saferUrl.substring(0, saferUrl.length - 1);\n }\n return saferUrl;\n } catch (e) {\n logger.error(e);\n return false;\n }\n }\n\n private static fetch(resource: URL | string, options?: RequestInit): ReturnType<typeof globalThis.fetch> {\n if (this.fetchFn) {\n return this.fetchFn(resource, options);\n }\n return globalThis.fetch(resource, options);\n }\n\n private static fetchFn?: typeof globalThis.fetch;\n\n public static setFetchFn(fetchFn: typeof globalThis.fetch): void {\n AutoDiscovery.fetchFn = fetchFn;\n }\n\n /**\n * Fetches a JSON object from a given URL, as expected by all .well-known\n * related lookups. If the server gives a 404 then the `action` will be\n * IGNORE. If the server returns something that isn't JSON, the `action`\n * will be FAIL_PROMPT. For any other failure the `action` will be FAIL_PROMPT.\n *\n * The returned object will be a result of the call in object form with\n * the following properties:\n * raw: The JSON object returned by the server.\n * action: One of SUCCESS, IGNORE, or FAIL_PROMPT.\n * reason: Relatively human-readable description of what went wrong.\n * error: The actual Error, if one exists.\n * @param url - The URL to fetch a JSON object from.\n * @returns Promise which resolves to the returned state.\n * @internal\n */\n private static async fetchWellKnownObject<T = IWellKnownConfig>(\n url: string,\n ): Promise<IWellKnownConfig<Partial<T>>> {\n let response: Response;\n\n try {\n response = await AutoDiscovery.fetch(url, {\n method: Method.Get,\n signal: timeoutSignal(5000),\n });\n\n if (response.status === 404) {\n return {\n raw: {},\n action: AutoDiscoveryAction.IGNORE,\n reason: AutoDiscovery.ERROR_MISSING_WELLKNOWN,\n };\n }\n\n if (!response.ok) {\n return {\n raw: {},\n action: AutoDiscoveryAction.FAIL_PROMPT,\n reason: \"General failure\",\n };\n }\n } catch (err) {\n const error = err as AutoDiscoveryError | string | undefined;\n let reason = \"\";\n if (typeof error === \"object\") {\n reason = (<Error>error)?.message;\n }\n\n return {\n error,\n raw: {},\n action: AutoDiscoveryAction.FAIL_PROMPT,\n reason: reason || \"General failure\",\n };\n }\n\n try {\n return {\n raw: await response.json(),\n action: AutoDiscoveryAction.SUCCESS,\n };\n } catch (err) {\n const error = err as Error;\n return {\n error,\n raw: {},\n action: AutoDiscoveryAction.FAIL_PROMPT,\n reason:\n (error as MatrixError)?.name === \"SyntaxError\"\n ? AutoDiscovery.ERROR_INVALID_JSON\n : AutoDiscovery.ERROR_INVALID,\n };\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/lib/client.d.ts CHANGED
@@ -50,7 +50,7 @@ import { SlidingSyncSdk } from "./sliding-sync-sdk.ts";
50
50
  import { FeatureSupport, ThreadFilterType } from "./models/thread.ts";
51
51
  import { type MBeaconInfoEventContent } from "./@types/beacon.ts";
52
52
  import { NamespacedValue, UnstableValue } from "./NamespacedValue.ts";
53
- import { type ToDeviceBatch } from "./models/ToDeviceMessage.ts";
53
+ import { type ToDeviceBatch, type ToDevicePayload } from "./models/ToDeviceMessage.ts";
54
54
  import { IgnoredInvites } from "./models/invites-ignorer.ts";
55
55
  import { type LocalNotificationSettings } from "./@types/local_notifications.ts";
56
56
  import { Feature, ServerSupport } from "./feature.ts";
@@ -3098,6 +3098,18 @@ export declare class MatrixClient extends TypedEventEmitter<EmittedEvents, Clien
3098
3098
  * @returns Promise which resolves: to an empty object `{}`
3099
3099
  */
3100
3100
  sendToDevice(eventType: string, contentMap: SendToDeviceContentMap, txnId?: string): Promise<EmptyObject>;
3101
+ /**
3102
+ * This will encrypt the payload for all devices in the list and will queue it.
3103
+ * The type of the sent to-device message will be `m.room.encrypted`.
3104
+ * @param eventType - The type of event to send
3105
+ * @param devices - The list of devices to send the event to.
3106
+ * @param payload - The payload to send. This will be encrypted.
3107
+ * @returns Promise which resolves once queued there is no error feedback when sending fails.
3108
+ */
3109
+ encryptAndSendToDevice(eventType: string, devices: {
3110
+ userId: string;
3111
+ deviceId: string;
3112
+ }[], payload: ToDevicePayload): Promise<void>;
3101
3113
  /**
3102
3114
  * Sends events directly to specific devices using Matrix's to-device
3103
3115
  * messaging system. The batch will be split up into appropriately sized