You've already forked matrix-js-sdk
mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-08-07 23:02:56 +03:00
Merge branch 'develop' into fix/12652/screen-share
This commit is contained in:
23
CHANGELOG.md
23
CHANGELOG.md
@@ -1,3 +1,26 @@
|
|||||||
|
Changes in [11.1.0](https://github.com/matrix-org/matrix-js-sdk/releases/tag/v11.1.0) (2021-05-24)
|
||||||
|
==================================================================================================
|
||||||
|
[Full Changelog](https://github.com/matrix-org/matrix-js-sdk/compare/v11.1.0-rc.1...v11.1.0)
|
||||||
|
|
||||||
|
* [Release] Bump libolm version and update package name
|
||||||
|
[\#1707](https://github.com/matrix-org/matrix-js-sdk/pull/1707)
|
||||||
|
* [Release] Change call event handlers to adapt to undecrypted events
|
||||||
|
[\#1699](https://github.com/matrix-org/matrix-js-sdk/pull/1699)
|
||||||
|
|
||||||
|
Changes in [11.1.0-rc.1](https://github.com/matrix-org/matrix-js-sdk/releases/tag/v11.1.0-rc.1) (2021-05-19)
|
||||||
|
============================================================================================================
|
||||||
|
[Full Changelog](https://github.com/matrix-org/matrix-js-sdk/compare/v11.0.0...v11.1.0-rc.1)
|
||||||
|
|
||||||
|
* Fix regressed glare
|
||||||
|
[\#1690](https://github.com/matrix-org/matrix-js-sdk/pull/1690)
|
||||||
|
* Add m.reaction to EventType enum
|
||||||
|
[\#1692](https://github.com/matrix-org/matrix-js-sdk/pull/1692)
|
||||||
|
* Prioritise and reduce the amount of events decrypted on application startup
|
||||||
|
[\#1684](https://github.com/matrix-org/matrix-js-sdk/pull/1684)
|
||||||
|
* Decrypt relations before applying them to target event
|
||||||
|
[\#1696](https://github.com/matrix-org/matrix-js-sdk/pull/1696)
|
||||||
|
* Guard against duplicates in `Relations` model
|
||||||
|
|
||||||
Changes in [11.0.0](https://github.com/matrix-org/matrix-js-sdk/releases/tag/v11.0.0) (2021-05-17)
|
Changes in [11.0.0](https://github.com/matrix-org/matrix-js-sdk/releases/tag/v11.0.0) (2021-05-17)
|
||||||
==================================================================================================
|
==================================================================================================
|
||||||
[Full Changelog](https://github.com/matrix-org/matrix-js-sdk/compare/v11.0.0-rc.1...v11.0.0)
|
[Full Changelog](https://github.com/matrix-org/matrix-js-sdk/compare/v11.0.0-rc.1...v11.0.0)
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "matrix-js-sdk",
|
"name": "matrix-js-sdk",
|
||||||
"version": "11.0.0",
|
"version": "11.1.0",
|
||||||
"description": "Matrix Client-Server SDK for Javascript",
|
"description": "Matrix Client-Server SDK for Javascript",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"prepublishOnly": "yarn build",
|
"prepublishOnly": "yarn build",
|
||||||
@@ -72,6 +72,7 @@
|
|||||||
"@babel/preset-env": "^7.12.11",
|
"@babel/preset-env": "^7.12.11",
|
||||||
"@babel/preset-typescript": "^7.12.7",
|
"@babel/preset-typescript": "^7.12.7",
|
||||||
"@babel/register": "^7.12.10",
|
"@babel/register": "^7.12.10",
|
||||||
|
"@matrix-org/olm": "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.3.tgz",
|
||||||
"@types/jest": "^26.0.20",
|
"@types/jest": "^26.0.20",
|
||||||
"@types/node": "12",
|
"@types/node": "12",
|
||||||
"@types/request": "^2.48.5",
|
"@types/request": "^2.48.5",
|
||||||
@@ -91,7 +92,6 @@
|
|||||||
"jest-localstorage-mock": "^2.4.6",
|
"jest-localstorage-mock": "^2.4.6",
|
||||||
"jsdoc": "^3.6.6",
|
"jsdoc": "^3.6.6",
|
||||||
"matrix-mock-request": "^1.2.3",
|
"matrix-mock-request": "^1.2.3",
|
||||||
"olm": "https://packages.matrix.org/npm/olm/olm-3.2.1.tgz",
|
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"terser": "^5.5.1",
|
"terser": "^5.5.1",
|
||||||
"tsify": "^5.0.2",
|
"tsify": "^5.0.2",
|
||||||
|
@@ -133,7 +133,6 @@ TestClient.prototype.expectDeviceKeyUpload = function() {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If one-time keys have already been uploaded, return them. Otherwise,
|
* If one-time keys have already been uploaded, return them. Otherwise,
|
||||||
* set up an expectation that the keys will be uploaded, and wait for
|
* set up an expectation that the keys will be uploaded, and wait for
|
||||||
@@ -197,7 +196,6 @@ TestClient.prototype.expectKeyQuery = function(response) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get the uploaded curve25519 device key
|
* get the uploaded curve25519 device key
|
||||||
*
|
*
|
||||||
@@ -208,7 +206,6 @@ TestClient.prototype.getDeviceKey = function() {
|
|||||||
return this.deviceKeys.keys[keyId];
|
return this.deviceKeys.keys[keyId];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get the uploaded ed25519 device key
|
* get the uploaded ed25519 device key
|
||||||
*
|
*
|
||||||
|
@@ -67,7 +67,6 @@ function getSyncResponse(roomMembers) {
|
|||||||
return syncResponse;
|
return syncResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
describe("DeviceList management:", function() {
|
describe("DeviceList management:", function() {
|
||||||
if (!global.Olm) {
|
if (!global.Olm) {
|
||||||
logger.warn('not running deviceList tests: Olm not present');
|
logger.warn('not running deviceList tests: Olm not present');
|
||||||
@@ -137,7 +136,6 @@ describe("DeviceList management:", function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
it("We should not get confused by out-of-order device query responses",
|
it("We should not get confused by out-of-order device query responses",
|
||||||
() => {
|
() => {
|
||||||
// https://github.com/vector-im/element-web/issues/3126
|
// https://github.com/vector-im/element-web/issues/3126
|
||||||
@@ -323,7 +321,6 @@ describe("DeviceList management:", function() {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
await aliceTestClient.flushSync();
|
await aliceTestClient.flushSync();
|
||||||
await aliceTestClient.client._crypto._deviceList.saveIfDirty();
|
await aliceTestClient.client._crypto._deviceList.saveIfDirty();
|
||||||
|
|
||||||
|
@@ -141,7 +141,6 @@ describe("getEventTimeline support", function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
it("scrollback should be able to scroll back to before a gappy /sync",
|
it("scrollback should be able to scroll back to before a gappy /sync",
|
||||||
function() {
|
function() {
|
||||||
// need a client with timelineSupport disabled to make this work
|
// need a client with timelineSupport disabled to make this work
|
||||||
@@ -532,7 +531,6 @@ describe("MatrixClient event timelines", function() {
|
|||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
it("should allow you to paginate forwards", function() {
|
it("should allow you to paginate forwards", function() {
|
||||||
const room = client.getRoom(roomId);
|
const room = client.getRoom(roomId);
|
||||||
const timelineSet = room.getTimelineSets()[0];
|
const timelineSet = room.getTimelineSets()[0];
|
||||||
@@ -680,7 +678,6 @@ describe("MatrixClient event timelines", function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
it("should handle gappy syncs after redactions", function() {
|
it("should handle gappy syncs after redactions", function() {
|
||||||
// https://github.com/vector-im/vector-web/issues/1389
|
// https://github.com/vector-im/vector-web/issues/1389
|
||||||
|
|
||||||
|
@@ -285,7 +285,6 @@ describe("MatrixClient", function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
describe("downloadKeys", function() {
|
describe("downloadKeys", function() {
|
||||||
if (!CRYPTO_ENABLED) {
|
if (!CRYPTO_ENABLED) {
|
||||||
return;
|
return;
|
||||||
|
@@ -2,7 +2,6 @@ import * as utils from "../test-utils";
|
|||||||
import { EventStatus } from "../../src/models/event";
|
import { EventStatus } from "../../src/models/event";
|
||||||
import { TestClient } from "../TestClient";
|
import { TestClient } from "../TestClient";
|
||||||
|
|
||||||
|
|
||||||
describe("MatrixClient room timelines", function() {
|
describe("MatrixClient room timelines", function() {
|
||||||
let client = null;
|
let client = null;
|
||||||
let httpBackend = null;
|
let httpBackend = null;
|
||||||
|
@@ -122,7 +122,6 @@ describe("MatrixClient syncing", function() {
|
|||||||
resolveInvitesToProfiles: true,
|
resolveInvitesToProfiles: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
return Promise.all([
|
return Promise.all([
|
||||||
httpBackend.flushAllExpected(),
|
httpBackend.flushAllExpected(),
|
||||||
awaitSyncEvent(),
|
awaitSyncEvent(),
|
||||||
|
@@ -196,7 +196,6 @@ function getSyncResponse(roomMembers) {
|
|||||||
return syncResponse;
|
return syncResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
describe("megolm", function() {
|
describe("megolm", function() {
|
||||||
if (!global.Olm) {
|
if (!global.Olm) {
|
||||||
logger.warn('not running megolm tests: Olm not present');
|
logger.warn('not running megolm tests: Olm not present');
|
||||||
@@ -841,7 +840,6 @@ describe("megolm", function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
it('Alice should wait for device list to complete when sending a megolm message',
|
it('Alice should wait for device list to complete when sending a megolm message',
|
||||||
function() {
|
function() {
|
||||||
let downloadPromise;
|
let downloadPromise;
|
||||||
@@ -887,7 +885,6 @@ describe("megolm", function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
it("Alice exports megolm keys and imports them to a new device", function() {
|
it("Alice exports megolm keys and imports them to a new device", function() {
|
||||||
let messageEncrypted;
|
let messageEncrypted;
|
||||||
|
|
||||||
|
@@ -20,7 +20,7 @@ import * as utils from "../src/utils";
|
|||||||
|
|
||||||
// try to load the olm library.
|
// try to load the olm library.
|
||||||
try {
|
try {
|
||||||
global.Olm = require('olm');
|
global.Olm = require('@matrix-org/olm');
|
||||||
logger.log('loaded libolm');
|
logger.log('loaded libolm');
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logger.warn("unable to run crypto tests: libolm not available");
|
logger.warn("unable to run crypto tests: libolm not available");
|
||||||
|
@@ -177,7 +177,6 @@ export function mkMessage(opts) {
|
|||||||
return mkEvent(opts);
|
return mkEvent(opts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A mock implementation of webstorage
|
* A mock implementation of webstorage
|
||||||
*
|
*
|
||||||
@@ -204,7 +203,6 @@ MockStorageApi.prototype = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If an event is being decrypted, wait for it to finish being decrypted.
|
* If an event is being decrypted, wait for it to finish being decrypted.
|
||||||
*
|
*
|
||||||
@@ -229,7 +227,6 @@ export function awaitDecryption(event) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export function HttpResponse(
|
export function HttpResponse(
|
||||||
httpLookups, acceptKeepalives, ignoreUnhandledSync,
|
httpLookups, acceptKeepalives, ignoreUnhandledSync,
|
||||||
) {
|
) {
|
||||||
|
@@ -50,7 +50,6 @@ describe("MegolmDecryption", function() {
|
|||||||
roomId: ROOM_ID,
|
roomId: ROOM_ID,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
// we stub out the olm encryption bits
|
// we stub out the olm encryption bits
|
||||||
mockOlmLib = {};
|
mockOlmLib = {};
|
||||||
mockOlmLib.ensureOlmSessionsForDevices = jest.fn();
|
mockOlmLib.ensureOlmSessionsForDevices = jest.fn();
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
import { IndexedDBCryptoStore } from '../../../src/crypto/store/indexeddb-crypto-store';
|
import { IndexedDBCryptoStore } from '../../../src/crypto/store/indexeddb-crypto-store';
|
||||||
|
|
||||||
|
|
||||||
// needs to be phased out and replaced with bootstrapSecretStorage,
|
// needs to be phased out and replaced with bootstrapSecretStorage,
|
||||||
// but that is doing too much extra stuff for it to be an easy transition.
|
// but that is doing too much extra stuff for it to be an easy transition.
|
||||||
export async function resetCrossSigningKeys(client, {
|
export async function resetCrossSigningKeys(client, {
|
||||||
|
@@ -94,7 +94,6 @@ describe("EventTimeline", function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
describe("neighbouringTimelines", function() {
|
describe("neighbouringTimelines", function() {
|
||||||
it("neighbouring timelines should start null", function() {
|
it("neighbouring timelines should start null", function() {
|
||||||
expect(timeline.getNeighbouringTimeline(EventTimeline.BACKWARDS)).toBe(null);
|
expect(timeline.getNeighbouringTimeline(EventTimeline.BACKWARDS)).toBe(null);
|
||||||
@@ -278,7 +277,6 @@ describe("EventTimeline", function() {
|
|||||||
not.toHaveBeenCalled();
|
not.toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
it("should call setStateEvents on the right RoomState with the right " +
|
it("should call setStateEvents on the right RoomState with the right " +
|
||||||
"forwardLooking value for old events", function() {
|
"forwardLooking value for old events", function() {
|
||||||
const events = [
|
const events = [
|
||||||
|
@@ -14,6 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import { EventTimelineSet } from "../../src/models/event-timeline-set";
|
||||||
import { MatrixEvent } from "../../src/models/event";
|
import { MatrixEvent } from "../../src/models/event";
|
||||||
import { Relations } from "../../src/models/relations";
|
import { Relations } from "../../src/models/relations";
|
||||||
|
|
||||||
@@ -70,4 +71,63 @@ describe("Relations", function() {
|
|||||||
expect(events.size).toEqual(1);
|
expect(events.size).toEqual(1);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should emit created regardless of ordering", async function () {
|
||||||
|
const targetEvent = new MatrixEvent({
|
||||||
|
"sender": "@bob:example.com",
|
||||||
|
"type": "m.room.message",
|
||||||
|
"event_id": "$2s4yYpEkVQrPglSCSqB_m6E8vDhWsg0yFNyOJdVIb_o",
|
||||||
|
"room_id": "!pzVjCQSoQPpXQeHpmK:example.com",
|
||||||
|
"content": {},
|
||||||
|
});
|
||||||
|
const relationEvent = new MatrixEvent({
|
||||||
|
"sender": "@bob:example.com",
|
||||||
|
"type": "m.reaction",
|
||||||
|
"event_id": "$cZ1biX33ENJqIm00ks0W_hgiO_6CHrsAc3ZQrnLeNTw",
|
||||||
|
"room_id": "!pzVjCQSoQPpXQeHpmK:example.com",
|
||||||
|
"content": {
|
||||||
|
"m.relates_to": {
|
||||||
|
"event_id": "$2s4yYpEkVQrPglSCSqB_m6E8vDhWsg0yFNyOJdVIb_o",
|
||||||
|
"key": "👍️",
|
||||||
|
"rel_type": "m.annotation",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// Stub the room
|
||||||
|
const room = {
|
||||||
|
getPendingEvent() { return null; },
|
||||||
|
getUnfilteredTimelineSet() { return null; },
|
||||||
|
};
|
||||||
|
|
||||||
|
// Add the target event first, then the relation event
|
||||||
|
{
|
||||||
|
const relationsCreated = new Promise(resolve => {
|
||||||
|
targetEvent.once("Event.relationsCreated", resolve);
|
||||||
|
})
|
||||||
|
|
||||||
|
const timelineSet = new EventTimelineSet(room, {
|
||||||
|
unstableClientRelationAggregation: true,
|
||||||
|
});
|
||||||
|
timelineSet.addLiveEvent(targetEvent);
|
||||||
|
timelineSet.addLiveEvent(relationEvent);
|
||||||
|
|
||||||
|
await relationsCreated;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the relation event first, then the target event
|
||||||
|
{
|
||||||
|
const relationsCreated = new Promise(resolve => {
|
||||||
|
targetEvent.once("Event.relationsCreated", resolve);
|
||||||
|
})
|
||||||
|
|
||||||
|
const timelineSet = new EventTimelineSet(room, {
|
||||||
|
unstableClientRelationAggregation: true,
|
||||||
|
});
|
||||||
|
timelineSet.addLiveEvent(relationEvent);
|
||||||
|
timelineSet.addLiveEvent(targetEvent);
|
||||||
|
|
||||||
|
await relationsCreated;
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@@ -1267,7 +1267,6 @@ describe("Room", function() {
|
|||||||
expect(callCount).toEqual(1);
|
expect(callCount).toEqual(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
it("should remove cancelled events from the timeline", function() {
|
it("should remove cancelled events from the timeline", function() {
|
||||||
const room = new Room(roomId, null, userA);
|
const room = new Room(roomId, null, userA);
|
||||||
const eventA = utils.mkMessage({
|
const eventA = utils.mkMessage({
|
||||||
|
@@ -46,7 +46,6 @@ function addEventsToTimeline(timeline, numEvents, atStart) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* create a pair of linked timelines
|
* create a pair of linked timelines
|
||||||
*/
|
*/
|
||||||
@@ -58,7 +57,6 @@ function createLinkedTimelines() {
|
|||||||
return [tl1, tl2];
|
return [tl1, tl2];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
describe("TimelineIndex", function() {
|
describe("TimelineIndex", function() {
|
||||||
describe("minIndex", function() {
|
describe("minIndex", function() {
|
||||||
it("should return the min index relative to BaseIndex", function() {
|
it("should return the min index relative to BaseIndex", function() {
|
||||||
@@ -133,7 +131,6 @@ describe("TimelineIndex", function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
describe("TimelineWindow", function() {
|
describe("TimelineWindow", function() {
|
||||||
/**
|
/**
|
||||||
* create a dummy eventTimelineSet and client, and a TimelineWindow
|
* create a dummy eventTimelineSet and client, and a TimelineWindow
|
||||||
@@ -385,7 +382,6 @@ describe("TimelineWindow", function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
it("should make backward pagination requests", function() {
|
it("should make backward pagination requests", function() {
|
||||||
const timeline = createTimeline();
|
const timeline = createTimeline();
|
||||||
timeline.setPaginationToken("toktok", EventTimeline.BACKWARDS);
|
timeline.setPaginationToken("toktok", EventTimeline.BACKWARDS);
|
||||||
|
@@ -175,7 +175,6 @@ describe("utils", function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
describe("extend", function() {
|
describe("extend", function() {
|
||||||
const SOURCE = { "prop2": 1, "string2": "x", "newprop": "new" };
|
const SOURCE = { "prop2": 1, "string2": "x", "newprop": "new" };
|
||||||
|
|
||||||
|
2
src/@types/global.d.ts
vendored
2
src/@types/global.d.ts
vendored
@@ -15,7 +15,7 @@ limitations under the License.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// this is needed to tell TS about global.Olm
|
// this is needed to tell TS about global.Olm
|
||||||
import * as Olm from "olm"; // eslint-disable-line @typescript-eslint/no-unused-vars
|
import * as Olm from "@matrix-org/olm"; // eslint-disable-line @typescript-eslint/no-unused-vars
|
||||||
|
|
||||||
export {};
|
export {};
|
||||||
|
|
||||||
|
@@ -158,7 +158,6 @@ MatrixBaseApis.prototype.makeTxnId = function() {
|
|||||||
return "m" + new Date().getTime() + "." + (this._txnCtr++);
|
return "m" + new Date().getTime() + "." + (this._txnCtr++);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Registration/Login operations
|
// Registration/Login operations
|
||||||
// =============================
|
// =============================
|
||||||
|
|
||||||
@@ -401,7 +400,6 @@ MatrixBaseApis.prototype.loginWithToken = function(token, callback) {
|
|||||||
}, callback);
|
}, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Logs out the current session.
|
* Logs out the current session.
|
||||||
* Obviously, further calls that require authorisation should fail after this
|
* Obviously, further calls that require authorisation should fail after this
|
||||||
@@ -613,7 +611,6 @@ MatrixBaseApis.prototype.upgradeRoom = function(roomId, newVersion) {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string} groupId
|
* @param {string} groupId
|
||||||
* @return {Promise} Resolves: Group summary object
|
* @return {Promise} Resolves: Group summary object
|
||||||
@@ -1278,7 +1275,6 @@ MatrixBaseApis.prototype.searchUserDirectory = function(opts) {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Media operations
|
// Media operations
|
||||||
// ================
|
// ================
|
||||||
|
|
||||||
@@ -1347,7 +1343,6 @@ MatrixBaseApis.prototype.getCurrentUploads = function() {
|
|||||||
return this._http.getCurrentUploads();
|
return this._http.getCurrentUploads();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Profile operations
|
// Profile operations
|
||||||
// ==================
|
// ==================
|
||||||
|
|
||||||
@@ -1372,7 +1367,6 @@ MatrixBaseApis.prototype.getProfileInfo = function(userId, info, callback) {
|
|||||||
return this._http.authedRequest(callback, "GET", path);
|
return this._http.authedRequest(callback, "GET", path);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Account operations
|
// Account operations
|
||||||
// ==================
|
// ==================
|
||||||
|
|
||||||
@@ -1518,7 +1512,6 @@ MatrixBaseApis.prototype.setPassword = function(authDict, newPassword, callback)
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Device operations
|
// Device operations
|
||||||
// =================
|
// =================
|
||||||
|
|
||||||
@@ -1605,7 +1598,6 @@ MatrixBaseApis.prototype.deleteMultipleDevices = function(devices, auth) {
|
|||||||
return this._http.authedRequest(undefined, "POST", path, undefined, body);
|
return this._http.authedRequest(undefined, "POST", path, undefined, body);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Push operations
|
// Push operations
|
||||||
// ===============
|
// ===============
|
||||||
|
|
||||||
@@ -1728,7 +1720,6 @@ MatrixBaseApis.prototype.setPushRuleActions = function(scope, kind,
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Search
|
// Search
|
||||||
// ======
|
// ======
|
||||||
|
|
||||||
|
@@ -17,7 +17,6 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is an internal module. See {@link MatrixClient} for the public class.
|
* This is an internal module. See {@link MatrixClient} for the public class.
|
||||||
* @module client
|
* @module client
|
||||||
@@ -706,7 +705,6 @@ MatrixClient.prototype.getDeviceId = function() {
|
|||||||
return this.deviceId;
|
return this.deviceId;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if the runtime environment supports VoIP calling.
|
* Check if the runtime environment supports VoIP calling.
|
||||||
* @return {boolean} True if VoIP is supported.
|
* @return {boolean} True if VoIP is supported.
|
||||||
@@ -969,14 +967,12 @@ MatrixClient.prototype.initCrypto = async function() {
|
|||||||
|
|
||||||
this.olmVersion = Crypto.getOlmVersion();
|
this.olmVersion = Crypto.getOlmVersion();
|
||||||
|
|
||||||
|
|
||||||
// if crypto initialisation was successful, tell it to attach its event
|
// if crypto initialisation was successful, tell it to attach its event
|
||||||
// handlers.
|
// handlers.
|
||||||
crypto.registerEventHandlers(this);
|
crypto.registerEventHandlers(this);
|
||||||
this._crypto = crypto;
|
this._crypto = crypto;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is end-to-end crypto enabled for this client.
|
* Is end-to-end crypto enabled for this client.
|
||||||
* @return {boolean} True if end-to-end is enabled.
|
* @return {boolean} True if end-to-end is enabled.
|
||||||
@@ -2882,7 +2878,6 @@ MatrixClient.prototype._sendCompleteEvent = function(roomId, eventObject, txnId,
|
|||||||
return _sendEvent(this, room, localEvent, callback);
|
return _sendEvent(this, room, localEvent, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// encrypts the event if necessary
|
// encrypts the event if necessary
|
||||||
// adds the event to the queue, or sends it
|
// adds the event to the queue, or sends it
|
||||||
// marks the event as sent/unsent
|
// marks the event as sent/unsent
|
||||||
@@ -4566,7 +4561,6 @@ MatrixClient.prototype._requestTokenFromEndpoint = async function(endpoint, para
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Push operations
|
// Push operations
|
||||||
// ===============
|
// ===============
|
||||||
|
|
||||||
@@ -4822,7 +4816,6 @@ MatrixClient.prototype._processRoomEventsSearch = function(searchResults, respon
|
|||||||
return searchResults;
|
return searchResults;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Populate the store with rooms the user has left.
|
* Populate the store with rooms the user has left.
|
||||||
* @return {Promise} Resolves: TODO - Resolved when the rooms have
|
* @return {Promise} Resolves: TODO - Resolved when the rooms have
|
||||||
@@ -4968,7 +4961,6 @@ MatrixClient.prototype.getOrCreateFilter = async function(filterName, filter) {
|
|||||||
return createdFilter.filterId;
|
return createdFilter.filterId;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets a bearer token from the Home Server that the user can
|
* Gets a bearer token from the Home Server that the user can
|
||||||
* present to a third party in order to prove their ownership
|
* present to a third party in order to prove their ownership
|
||||||
@@ -4986,7 +4978,6 @@ MatrixClient.prototype.getOpenIdToken = function() {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// VoIP operations
|
// VoIP operations
|
||||||
// ===============
|
// ===============
|
||||||
|
|
||||||
@@ -5154,7 +5145,6 @@ MatrixClient.prototype.deactivateSynapseUser = function(userId) {
|
|||||||
// due to ambiguity (or should this be on a chat-specific layer)?
|
// due to ambiguity (or should this be on a chat-specific layer)?
|
||||||
// reconnect after connectivity outages
|
// reconnect after connectivity outages
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* High level helper method to begin syncing and poll for new events. To listen for these
|
* High level helper method to begin syncing and poll for new events. To listen for these
|
||||||
* events, add a listener for {@link module:client~MatrixClient#event:"event"}
|
* events, add a listener for {@link module:client~MatrixClient#event:"event"}
|
||||||
|
@@ -30,7 +30,6 @@ import * as olmlib from './olmlib';
|
|||||||
import { IndexedDBCryptoStore } from './store/indexeddb-crypto-store';
|
import { IndexedDBCryptoStore } from './store/indexeddb-crypto-store';
|
||||||
import { chunkPromises, defer, sleep } from '../utils';
|
import { chunkPromises, defer, sleep } from '../utils';
|
||||||
|
|
||||||
|
|
||||||
/* State transition diagram for DeviceList._deviceTrackingStatus
|
/* State transition diagram for DeviceList._deviceTrackingStatus
|
||||||
*
|
*
|
||||||
* |
|
* |
|
||||||
@@ -51,7 +50,6 @@ import {chunkPromises, defer, sleep} from '../utils';
|
|||||||
* +----------------------- UP_TO_DATE ------------------------+
|
* +----------------------- UP_TO_DATE ------------------------+
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
// constants for DeviceList._deviceTrackingStatus
|
// constants for DeviceList._deviceTrackingStatus
|
||||||
const TRACKING_STATUS_NOT_TRACKED = 0;
|
const TRACKING_STATUS_NOT_TRACKED = 0;
|
||||||
const TRACKING_STATUS_PENDING_DOWNLOAD = 1;
|
const TRACKING_STATUS_PENDING_DOWNLOAD = 1;
|
||||||
@@ -892,7 +890,6 @@ class DeviceListUpdateSerialiser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async function _updateStoredDeviceKeysForUser(
|
async function _updateStoredDeviceKeysForUser(
|
||||||
_olmDevice, userId, userStore, userResult, localUserId, localDeviceId,
|
_olmDevice, userId, userStore, userResult, localUserId, localDeviceId,
|
||||||
) {
|
) {
|
||||||
|
@@ -86,7 +86,6 @@ export class EncryptionSetupBuilder {
|
|||||||
userSignatures[deviceId] = signature;
|
userSignatures[deviceId] = signature;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {String} type
|
* @param {String} type
|
||||||
* @param {Object} content
|
* @param {Object} content
|
||||||
@@ -225,7 +224,6 @@ export class EncryptionSetupOperation {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Catches account data set by SecretStorage during bootstrapping by
|
* Catches account data set by SecretStorage during bootstrapping by
|
||||||
* implementing the methods related to account data in MatrixClient
|
* implementing the methods related to account data in MatrixClient
|
||||||
|
@@ -48,7 +48,6 @@ function checkPayloadLength(payloadString) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The type of object we use for importing and exporting megolm session data.
|
* The type of object we use for importing and exporting megolm session data.
|
||||||
*
|
*
|
||||||
@@ -62,7 +61,6 @@ function checkPayloadLength(payloadString) {
|
|||||||
* @property {String} session_key Base64'ed key data
|
* @property {String} session_key Base64'ed key data
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manages the olm cryptography functions. Each OlmDevice has a single
|
* Manages the olm cryptography functions. Each OlmDevice has a single
|
||||||
* OlmAccount and a number of OlmSessions.
|
* OlmAccount and a number of OlmSessions.
|
||||||
@@ -376,7 +374,6 @@ OlmDevice.prototype._saveSession = function(deviceKey, sessionInfo, txn) {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get an OlmUtility and call the given function
|
* get an OlmUtility and call the given function
|
||||||
*
|
*
|
||||||
@@ -393,7 +390,6 @@ OlmDevice.prototype._getUtility = function(func) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Signs a message with the ed25519 key for this account.
|
* Signs a message with the ed25519 key for this account.
|
||||||
*
|
*
|
||||||
@@ -434,7 +430,6 @@ OlmDevice.prototype.getOneTimeKeys = async function() {
|
|||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the maximum number of one-time keys we can store.
|
* Get the maximum number of one-time keys we can store.
|
||||||
*
|
*
|
||||||
@@ -550,7 +545,6 @@ OlmDevice.prototype.createOutboundSession = async function(
|
|||||||
return newSessionId;
|
return newSessionId;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate a new inbound session, given an incoming message
|
* Generate a new inbound session, given an incoming message
|
||||||
*
|
*
|
||||||
@@ -612,7 +606,6 @@ OlmDevice.prototype.createInboundSession = async function(
|
|||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a list of known session IDs for the given device
|
* Get a list of known session IDs for the given device
|
||||||
*
|
*
|
||||||
@@ -856,7 +849,6 @@ OlmDevice.prototype.filterOutNotifiedErrorDevices = async function(devices) {
|
|||||||
return await this._cryptoStore.filterOutNotifiedErrorDevices(devices);
|
return await this._cryptoStore.filterOutNotifiedErrorDevices(devices);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Outbound group session
|
// Outbound group session
|
||||||
// ======================
|
// ======================
|
||||||
|
|
||||||
@@ -871,7 +863,6 @@ OlmDevice.prototype._saveOutboundGroupSession = function(session) {
|
|||||||
this._outboundGroupSessionStore[session.session_id()] = pickledSession;
|
this._outboundGroupSessionStore[session.session_id()] = pickledSession;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* extract an OutboundGroupSession from _outboundGroupSessionStore and call the
|
* extract an OutboundGroupSession from _outboundGroupSessionStore and call the
|
||||||
* given function
|
* given function
|
||||||
@@ -896,7 +887,6 @@ OlmDevice.prototype._getOutboundGroupSession = function(sessionId, func) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate a new outbound group session
|
* Generate a new outbound group session
|
||||||
*
|
*
|
||||||
@@ -913,7 +903,6 @@ OlmDevice.prototype.createOutboundGroupSession = function() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Encrypt an outgoing message with an outbound group session
|
* Encrypt an outgoing message with an outbound group session
|
||||||
*
|
*
|
||||||
@@ -953,7 +942,6 @@ OlmDevice.prototype.getOutboundGroupSessionKey = function(sessionId) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Inbound group session
|
// Inbound group session
|
||||||
// =====================
|
// =====================
|
||||||
|
|
||||||
|
@@ -75,7 +75,6 @@ function OutboundSessionInfo(sessionId, sharedHistory = false) {
|
|||||||
this.sharedHistory = sharedHistory;
|
this.sharedHistory = sharedHistory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if it's time to rotate the session
|
* Check if it's time to rotate the session
|
||||||
*
|
*
|
||||||
@@ -158,7 +157,6 @@ OutboundSessionInfo.prototype.sharedWithTooManyDevices = function(
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Megolm encryption implementation
|
* Megolm encryption implementation
|
||||||
*
|
*
|
||||||
@@ -1341,7 +1339,6 @@ MegolmDecryption.prototype._removeEventFromPendingList = function(event) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*
|
*
|
||||||
|
@@ -358,5 +358,4 @@ OlmDecryption.prototype._reallyDecryptMessage = async function(
|
|||||||
return res.payload;
|
return res.payload;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
registerAlgorithm(olmlib.OLM_ALGORITHM, OlmEncryption, OlmDecryption);
|
registerAlgorithm(olmlib.OLM_ALGORITHM, OlmEncryption, OlmDecryption);
|
||||||
|
@@ -1774,7 +1774,6 @@ Crypto.prototype.registerEventHandlers = function(eventEmitter) {
|
|||||||
eventEmitter.on("Event.decrypted", timelineHandler);
|
eventEmitter.on("Event.decrypted", timelineHandler);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/** Start background processes related to crypto */
|
/** Start background processes related to crypto */
|
||||||
Crypto.prototype.start = function() {
|
Crypto.prototype.start = function() {
|
||||||
this._outgoingRoomKeyRequestManager.start();
|
this._outgoingRoomKeyRequestManager.start();
|
||||||
@@ -2368,7 +2367,6 @@ Crypto.prototype.legacyDeviceVerification = async function(
|
|||||||
return request;
|
return request;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get information on the active olm sessions with a user
|
* Get information on the active olm sessions with a user
|
||||||
* <p>
|
* <p>
|
||||||
@@ -2399,7 +2397,6 @@ Crypto.prototype.getOlmSessionsForUser = async function(userId) {
|
|||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the device which sent an event
|
* Get the device which sent an event
|
||||||
*
|
*
|
||||||
@@ -2644,7 +2641,6 @@ Crypto.prototype.setRoomEncryption = async function(roomId, config, inhibitDevic
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Make sure we are tracking the device lists for all users in this room.
|
* Make sure we are tracking the device lists for all users in this room.
|
||||||
*
|
*
|
||||||
@@ -3301,7 +3297,6 @@ Crypto.prototype._getTrackedE2eRooms = function() {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
Crypto.prototype._onToDeviceEvent = function(event) {
|
Crypto.prototype._onToDeviceEvent = function(event) {
|
||||||
try {
|
try {
|
||||||
logger.log(`received to_device ${event.getType()} from: ` +
|
logger.log(`received to_device ${event.getType()} from: ` +
|
||||||
@@ -3592,7 +3587,6 @@ Crypto.prototype._onToDeviceBadEncrypted = async function(event) {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
// Most of the time this probably won't be necessary since we'll have queued up a key request when
|
// Most of the time this probably won't be necessary since we'll have queued up a key request when
|
||||||
// we failed to decrypt the message and will be waiting a bit for the key to arrive before sending
|
// we failed to decrypt the message and will be waiting a bit for the key to arrive before sending
|
||||||
// it. This won't always be the case though so we need to re-send any that have already been sent
|
// it. This won't always be the case though so we need to re-send any that have already been sent
|
||||||
@@ -3649,7 +3643,6 @@ Crypto.prototype._onRoomMembership = function(event, member, oldMembership) {
|
|||||||
alg.onRoomMembership(event, member, oldMembership);
|
alg.onRoomMembership(event, member, oldMembership);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when we get an m.room_key_request event.
|
* Called when we get an m.room_key_request event.
|
||||||
*
|
*
|
||||||
@@ -3802,7 +3795,6 @@ Crypto.prototype._processReceivedRoomKeyRequest = async function(req) {
|
|||||||
this.emit("crypto.roomKeyRequest", req);
|
this.emit("crypto.roomKeyRequest", req);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper for processReceivedRoomKeyRequests
|
* Helper for processReceivedRoomKeyRequests
|
||||||
*
|
*
|
||||||
@@ -3878,7 +3870,6 @@ Crypto.prototype._getRoomDecryptor = function(roomId, algorithm) {
|
|||||||
return alg;
|
return alg;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all the room decryptors for a given encryption algorithm.
|
* Get all the room decryptors for a given encryption algorithm.
|
||||||
*
|
*
|
||||||
@@ -3896,7 +3887,6 @@ Crypto.prototype._getRoomDecryptors = function(algorithm) {
|
|||||||
return decryptors;
|
return decryptors;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sign the given object with our ed25519 key
|
* sign the given object with our ed25519 key
|
||||||
*
|
*
|
||||||
@@ -3916,7 +3906,6 @@ Crypto.prototype._signObject = async function(obj) {
|
|||||||
if (unsigned !== undefined) obj.unsigned = unsigned;
|
if (unsigned !== undefined) obj.unsigned = unsigned;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The parameters of a room key request. The details of the request may
|
* The parameters of a room key request. The details of the request may
|
||||||
* vary with the crypto algorithm, but the management and storage layers for
|
* vary with the crypto algorithm, but the management and storage layers for
|
||||||
|
@@ -41,7 +41,6 @@ export const MEGOLM_ALGORITHM = "m.megolm.v1.aes-sha2";
|
|||||||
*/
|
*/
|
||||||
export const MEGOLM_BACKUP_ALGORITHM = "m.megolm_backup.v1.curve25519-aes-sha2";
|
export const MEGOLM_BACKUP_ALGORITHM = "m.megolm_backup.v1.curve25519-aes-sha2";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Encrypt an event payload for an Olm device
|
* Encrypt an event payload for an Olm device
|
||||||
*
|
*
|
||||||
@@ -408,7 +407,6 @@ async function _verifyKeyAndStartSession(olmDevice, oneTimeKey, userId, deviceIn
|
|||||||
return sid;
|
return sid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Verify the signature on an object
|
* Verify the signature on an object
|
||||||
*
|
*
|
||||||
|
@@ -323,7 +323,6 @@ export class SAS extends Base {
|
|||||||
key: this.ourSASPubKey,
|
key: this.ourSASPubKey,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
e = await this._waitForEvent("m.key.verification.key");
|
e = await this._waitForEvent("m.key.verification.key");
|
||||||
// FIXME: make sure event is properly formed
|
// FIXME: make sure event is properly formed
|
||||||
content = e.getContent();
|
content = e.getContent();
|
||||||
@@ -353,7 +352,6 @@ export class SAS extends Base {
|
|||||||
this.emit("show_sas", this.sasEvent);
|
this.emit("show_sas", this.sasEvent);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
[e] = await Promise.all([
|
[e] = await Promise.all([
|
||||||
this._waitForEvent("m.key.verification.mac")
|
this._waitForEvent("m.key.verification.mac")
|
||||||
.then((e) => {
|
.then((e) => {
|
||||||
@@ -411,7 +409,6 @@ export class SAS extends Base {
|
|||||||
commitment: olmutil.sha256(commitmentStr),
|
commitment: olmutil.sha256(commitmentStr),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
let e = await this._waitForEvent("m.key.verification.key");
|
let e = await this._waitForEvent("m.key.verification.key");
|
||||||
// FIXME: make sure event is properly formed
|
// FIXME: make sure event is properly formed
|
||||||
content = e.getContent();
|
content = e.getContent();
|
||||||
@@ -440,7 +437,6 @@ export class SAS extends Base {
|
|||||||
this.emit("show_sas", this.sasEvent);
|
this.emit("show_sas", this.sasEvent);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
[e] = await Promise.all([
|
[e] = await Promise.all([
|
||||||
this._waitForEvent("m.key.verification.mac")
|
this._waitForEvent("m.key.verification.mac")
|
||||||
.then((e) => {
|
.then((e) => {
|
||||||
|
@@ -292,7 +292,6 @@ export class ToDeviceChannel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export class ToDeviceRequests {
|
export class ToDeviceRequests {
|
||||||
constructor() {
|
constructor() {
|
||||||
this._requestsByUserId = new Map();
|
this._requestsByUserId = new Map();
|
||||||
|
@@ -37,7 +37,6 @@ const TIMEOUT_FROM_EVENT_RECEIPT = 2 * 60 * 1000; // 2 minutes
|
|||||||
// are this amount of time away from expiring.
|
// are this amount of time away from expiring.
|
||||||
const VERIFICATION_REQUEST_MARGIN = 3 * 1000; // 3 seconds
|
const VERIFICATION_REQUEST_MARGIN = 3 * 1000; // 3 seconds
|
||||||
|
|
||||||
|
|
||||||
export const EVENT_PREFIX = "m.key.verification.";
|
export const EVENT_PREFIX = "m.key.verification.";
|
||||||
export const REQUEST_TYPE = EVENT_PREFIX + "request";
|
export const REQUEST_TYPE = EVENT_PREFIX + "request";
|
||||||
export const START_TYPE = EVENT_PREFIX + "start";
|
export const START_TYPE = EVENT_PREFIX + "start";
|
||||||
@@ -52,7 +51,6 @@ export const PHASE_STARTED = 4;
|
|||||||
export const PHASE_CANCELLED = 5;
|
export const PHASE_CANCELLED = 5;
|
||||||
export const PHASE_DONE = 6;
|
export const PHASE_DONE = 6;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* State machine for verification requests.
|
* State machine for verification requests.
|
||||||
* Things that differ based on what channel is used to
|
* Things that differ based on what channel is used to
|
||||||
@@ -98,7 +96,6 @@ export class VerificationRequest extends EventEmitter {
|
|||||||
static validateEvent(type, event, client) {
|
static validateEvent(type, event, client) {
|
||||||
const content = event.getContent();
|
const content = event.getContent();
|
||||||
|
|
||||||
|
|
||||||
if (!type || !type.startsWith(EVENT_PREFIX)) {
|
if (!type || !type.startsWith(EVENT_PREFIX)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -355,7 +352,6 @@ export class VerificationRequest extends EventEmitter {
|
|||||||
return this._observeOnly;
|
return this._observeOnly;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets which device the verification should be started with
|
* Gets which device the verification should be started with
|
||||||
* given the events sent so far in the verification. This is the
|
* given the events sent so far in the verification. This is the
|
||||||
|
@@ -22,7 +22,6 @@ InvalidStoreError.prototype = Object.create(Error.prototype, {
|
|||||||
});
|
});
|
||||||
Reflect.setPrototypeOf(InvalidStoreError, Error);
|
Reflect.setPrototypeOf(InvalidStoreError, Error);
|
||||||
|
|
||||||
|
|
||||||
export function InvalidCryptoStoreError(reason) {
|
export function InvalidCryptoStoreError(reason) {
|
||||||
const message = `Crypto store is invalid because ${reason}, ` +
|
const message = `Crypto store is invalid because ${reason}, ` +
|
||||||
`please stop the client, delete all data and start the client again`;
|
`please stop the client, delete all data and start the client again`;
|
||||||
|
@@ -803,7 +803,8 @@ const requestCallback = function(
|
|||||||
}
|
}
|
||||||
if (!err) {
|
if (!err) {
|
||||||
try {
|
try {
|
||||||
if (response.statusCode >= 400) {
|
const httpStatus = response.status || response.statusCode; // XMLHttpRequest vs http.IncomingMessage
|
||||||
|
if (httpStatus >= 400) {
|
||||||
err = parseErrorResponse(response, body);
|
err = parseErrorResponse(response, body);
|
||||||
} else if (bodyParser) {
|
} else if (bodyParser) {
|
||||||
body = bodyParser(body);
|
body = bodyParser(body);
|
||||||
@@ -818,7 +819,7 @@ const requestCallback = function(
|
|||||||
userDefinedCallback(err);
|
userDefinedCallback(err);
|
||||||
} else {
|
} else {
|
||||||
const res = {
|
const res = {
|
||||||
code: response.statusCode,
|
code: response.status || response.statusCode, // XMLHttpRequest vs http.IncomingMessage
|
||||||
|
|
||||||
// XXX: why do we bother with this? it doesn't work for
|
// XXX: why do we bother with this? it doesn't work for
|
||||||
// XMLHttpRequest, so clearly we don't use it.
|
// XMLHttpRequest, so clearly we don't use it.
|
||||||
@@ -842,7 +843,7 @@ const requestCallback = function(
|
|||||||
* @returns {Error}
|
* @returns {Error}
|
||||||
*/
|
*/
|
||||||
function parseErrorResponse(response, body) {
|
function parseErrorResponse(response, body) {
|
||||||
const httpStatus = response.statusCode;
|
const httpStatus = response.status || response.statusCode; // XMLHttpRequest vs http.IncomingMessage
|
||||||
const contentType = getResponseContentType(response);
|
const contentType = getResponseContentType(response);
|
||||||
|
|
||||||
let err;
|
let err;
|
||||||
@@ -862,7 +863,6 @@ function parseErrorResponse(response, body) {
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* extract the Content-Type header from the response object, and
|
* extract the Content-Type header from the response object, and
|
||||||
* parse it to a `{type, parameters}` object.
|
* parse it to a `{type, parameters}` object.
|
||||||
|
@@ -59,7 +59,6 @@ export {
|
|||||||
setVideoInput as setMatrixCallVideoInput,
|
setVideoInput as setMatrixCallVideoInput,
|
||||||
} from "./webrtc/call";
|
} from "./webrtc/call";
|
||||||
|
|
||||||
|
|
||||||
// expose the underlying request object so different environments can use
|
// expose the underlying request object so different environments can use
|
||||||
// different request libs (e.g. request or browser-request)
|
// different request libs (e.g. request or browser-request)
|
||||||
let requestInstance;
|
let requestInstance;
|
||||||
|
@@ -271,7 +271,6 @@ EventTimelineSet.prototype.addTimeline = function() {
|
|||||||
return timeline;
|
return timeline;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add events to a timeline
|
* Add events to a timeline
|
||||||
*
|
*
|
||||||
@@ -740,17 +739,12 @@ EventTimelineSet.prototype.setRelationsTarget = function(event) {
|
|||||||
if (!relationsForEvent) {
|
if (!relationsForEvent) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// don't need it for non m.replace relations for now
|
|
||||||
const relationsWithRelType = relationsForEvent["m.replace"];
|
|
||||||
if (!relationsWithRelType) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// only doing replacements for messages for now (e.g. edits)
|
|
||||||
const relationsWithEventType = relationsWithRelType["m.room.message"];
|
|
||||||
|
|
||||||
if (relationsWithEventType) {
|
for (const relationsWithRelType of Object.values(relationsForEvent)) {
|
||||||
|
for (const relationsWithEventType of Object.values(relationsWithRelType)) {
|
||||||
relationsWithEventType.setTargetEvent(event);
|
relationsWithEventType.setTargetEvent(event);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -797,7 +791,6 @@ EventTimelineSet.prototype.aggregateRelations = function(event) {
|
|||||||
}
|
}
|
||||||
let relationsWithEventType = relationsWithRelType[eventType];
|
let relationsWithEventType = relationsWithRelType[eventType];
|
||||||
|
|
||||||
let isNewRelations = false;
|
|
||||||
let relatesToEvent;
|
let relatesToEvent;
|
||||||
if (!relationsWithEventType) {
|
if (!relationsWithEventType) {
|
||||||
relationsWithEventType = relationsWithRelType[eventType] = new Relations(
|
relationsWithEventType = relationsWithRelType[eventType] = new Relations(
|
||||||
@@ -805,7 +798,6 @@ EventTimelineSet.prototype.aggregateRelations = function(event) {
|
|||||||
eventType,
|
eventType,
|
||||||
this.room,
|
this.room,
|
||||||
);
|
);
|
||||||
isNewRelations = true;
|
|
||||||
relatesToEvent = this.findEventById(relatesToEventId) || this.room.getPendingEvent(relatesToEventId);
|
relatesToEvent = this.findEventById(relatesToEventId) || this.room.getPendingEvent(relatesToEventId);
|
||||||
if (relatesToEvent) {
|
if (relatesToEvent) {
|
||||||
relationsWithEventType.setTargetEvent(relatesToEvent);
|
relationsWithEventType.setTargetEvent(relatesToEvent);
|
||||||
@@ -813,11 +805,6 @@ EventTimelineSet.prototype.aggregateRelations = function(event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
relationsWithEventType.addEvent(event);
|
relationsWithEventType.addEvent(event);
|
||||||
|
|
||||||
// only emit once event has been added to relations
|
|
||||||
if (isNewRelations && relatesToEvent) {
|
|
||||||
relatesToEvent.emit("Event.relationsCreated", relationType, eventType);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -180,7 +180,6 @@ export const MatrixEvent = function(
|
|||||||
};
|
};
|
||||||
utils.inherits(MatrixEvent, EventEmitter);
|
utils.inherits(MatrixEvent, EventEmitter);
|
||||||
|
|
||||||
|
|
||||||
utils.extend(MatrixEvent.prototype, {
|
utils.extend(MatrixEvent.prototype, {
|
||||||
/**
|
/**
|
||||||
* Get the event_id for this event.
|
* Get the event_id for this event.
|
||||||
@@ -1146,7 +1145,6 @@ utils.extend(MatrixEvent.prototype, {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
/* _REDACT_KEEP_KEY_MAP gives the keys we keep when an event is redacted
|
/* _REDACT_KEEP_KEY_MAP gives the keys we keep when an event is redacted
|
||||||
*
|
*
|
||||||
* This is specified here:
|
* This is specified here:
|
||||||
@@ -1175,7 +1173,6 @@ const _REDACT_KEEP_CONTENT_MAP = {
|
|||||||
'm.room.aliases': { 'aliases': 1 },
|
'm.room.aliases': { 'aliases': 1 },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fires when an event is decrypted
|
* Fires when an event is decrypted
|
||||||
*
|
*
|
||||||
|
@@ -48,6 +48,7 @@ export class Relations extends EventEmitter {
|
|||||||
this._sortedAnnotationsByKey = [];
|
this._sortedAnnotationsByKey = [];
|
||||||
this._targetEvent = null;
|
this._targetEvent = null;
|
||||||
this._room = room;
|
this._room = room;
|
||||||
|
this._creationEmitted = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -94,6 +95,8 @@ export class Relations extends EventEmitter {
|
|||||||
event.on("Event.beforeRedaction", this._onBeforeRedaction);
|
event.on("Event.beforeRedaction", this._onBeforeRedaction);
|
||||||
|
|
||||||
this.emit("Relations.add", event);
|
this.emit("Relations.add", event);
|
||||||
|
|
||||||
|
this._maybeEmitCreated();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -345,6 +348,7 @@ export class Relations extends EventEmitter {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this._targetEvent = event;
|
this._targetEvent = event;
|
||||||
|
|
||||||
if (this.relationType === "m.replace") {
|
if (this.relationType === "m.replace") {
|
||||||
const replacement = await this.getLastReplacement();
|
const replacement = await this.getLastReplacement();
|
||||||
// this is the initial update, so only call it if we already have something
|
// this is the initial update, so only call it if we already have something
|
||||||
@@ -353,5 +357,24 @@ export class Relations extends EventEmitter {
|
|||||||
this._targetEvent.makeReplaced(replacement);
|
this._targetEvent.makeReplaced(replacement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._maybeEmitCreated();
|
||||||
|
}
|
||||||
|
|
||||||
|
_maybeEmitCreated() {
|
||||||
|
if (this._creationEmitted) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Only emit we're "created" once we have a target event instance _and_
|
||||||
|
// at least one related event.
|
||||||
|
if (!this._targetEvent || !this._relations.size) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._creationEmitted = true;
|
||||||
|
this._targetEvent.emit(
|
||||||
|
"Event.relationsCreated",
|
||||||
|
this.relationType,
|
||||||
|
this.eventType,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -203,7 +203,6 @@ RoomMember.prototype.getLastModifiedTime = function() {
|
|||||||
return this._modified;
|
return this._modified;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
RoomMember.prototype.isKicked = function() {
|
RoomMember.prototype.isKicked = function() {
|
||||||
return this.membership === "leave" &&
|
return this.membership === "leave" &&
|
||||||
this.events.member.getSender() !== this.events.member.getStateKey();
|
this.events.member.getSender() !== this.events.member.getStateKey();
|
||||||
@@ -240,7 +239,6 @@ RoomMember.prototype.getDMInviter = function() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the avatar URL for a room member.
|
* Get the avatar URL for a room member.
|
||||||
* @param {string} baseUrl The base homeserver URL See
|
* @param {string} baseUrl The base homeserver URL See
|
||||||
|
@@ -735,7 +735,6 @@ RoomState.prototype.getJoinRule = function() {
|
|||||||
return joinRuleContent["join_rule"] || "invite";
|
return joinRuleContent["join_rule"] || "invite";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
function _updateThirdPartyTokenCache(roomState, memberEvent) {
|
function _updateThirdPartyTokenCache(roomState, memberEvent) {
|
||||||
if (!memberEvent.getContent().third_party_invite) {
|
if (!memberEvent.getContent().third_party_invite) {
|
||||||
return;
|
return;
|
||||||
|
@@ -139,7 +139,6 @@ User.prototype.setDisplayName = function(name) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manually set this user's non-disambiguated display name. No event is emitted
|
* Manually set this user's non-disambiguated display name. No event is emitted
|
||||||
* in response to this as there is no underlying MatrixEvent to emit with.
|
* in response to this as there is no underlying MatrixEvent to emit with.
|
||||||
@@ -153,7 +152,6 @@ User.prototype.setRawDisplayName = function(name) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manually set this user's avatar URL. No event is emitted in response to this
|
* Manually set this user's avatar URL. No event is emitted in response to this
|
||||||
* as there is no underlying MatrixEvent to emit with.
|
* as there is no underlying MatrixEvent to emit with.
|
||||||
|
@@ -360,7 +360,6 @@ export function PushProcessor(client) {
|
|||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the user's push actions for the given event
|
* Get the user's push actions for the given event
|
||||||
*
|
*
|
||||||
@@ -468,4 +467,3 @@ PushProcessor.rewriteDefaultRules = function(incomingRules) {
|
|||||||
* noise.
|
* noise.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
@@ -177,7 +177,6 @@ function _runCallbacks() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* search in a sorted array.
|
/* search in a sorted array.
|
||||||
*
|
*
|
||||||
* returns the index of the last element for which func returns
|
* returns the index of the last element for which func returns
|
||||||
|
@@ -93,7 +93,6 @@ MatrixScheduler.prototype.removeEventFromQueue = function(event) {
|
|||||||
return removed;
|
return removed;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the process function. Required for events in the queue to be processed.
|
* Set the process function. Required for events in the queue to be processed.
|
||||||
* If set after events have been added to the queue, this will immediately start
|
* If set after events have been added to the queue, this will immediately start
|
||||||
|
@@ -48,7 +48,6 @@ function upgradeSchemaV3(db) {
|
|||||||
{ keyPath: ["clobber"] });
|
{ keyPath: ["clobber"] });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper method to collect results from a Cursor and promiseify it.
|
* Helper method to collect results from a Cursor and promiseify it.
|
||||||
* @param {ObjectStore|Index} store The store to perform openCursor on.
|
* @param {ObjectStore|Index} store The store to perform openCursor on.
|
||||||
|
@@ -48,7 +48,6 @@ export function RemoteIndexedDBStoreBackend(
|
|||||||
this._startPromise = null;
|
this._startPromise = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RemoteIndexedDBStoreBackend.prototype = {
|
RemoteIndexedDBStoreBackend.prototype = {
|
||||||
/**
|
/**
|
||||||
* Attempt to connect to the database. This can fail if the user does not
|
* Attempt to connect to the database. This can fail if the user does not
|
||||||
|
@@ -39,7 +39,6 @@ import {logger} from '../logger';
|
|||||||
// response is persisted each time.
|
// response is persisted each time.
|
||||||
const WRITE_DELAY_MS = 1000 * 60 * 5; // once every 5 minutes
|
const WRITE_DELAY_MS = 1000 * 60 * 5; // once every 5 minutes
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct a new Indexed Database store, which extends MemoryStore.
|
* Construct a new Indexed Database store, which extends MemoryStore.
|
||||||
*
|
*
|
||||||
|
@@ -62,7 +62,6 @@ function debuglog(...params) {
|
|||||||
logger.log(...params);
|
logger.log(...params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <b>Internal class - unstable.</b>
|
* <b>Internal class - unstable.</b>
|
||||||
* Construct an entity which is able to sync with a homeserver.
|
* Construct an entity which is able to sync with a homeserver.
|
||||||
@@ -188,7 +187,6 @@ SyncApi.prototype._deregisterStateListeners = function(room) {
|
|||||||
room.currentState.removeAllListeners("RoomState.newMember");
|
room.currentState.removeAllListeners("RoomState.newMember");
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sync rooms the user has left.
|
* Sync rooms the user has left.
|
||||||
* @return {Promise} Resolved when they've been added to the store.
|
* @return {Promise} Resolved when they've been added to the store.
|
||||||
|
@@ -335,7 +335,6 @@ TimelineWindow.prototype.paginate = function(direction, size, makeRequest,
|
|||||||
return prom;
|
return prom;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove `delta` events from the start or end of the timeline.
|
* Remove `delta` events from the start or end of the timeline.
|
||||||
*
|
*
|
||||||
@@ -368,7 +367,6 @@ TimelineWindow.prototype.unpaginate = function(delta, startOfTimeline) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a list of the events currently in the window
|
* Get a list of the events currently in the window
|
||||||
*
|
*
|
||||||
@@ -420,7 +418,6 @@ TimelineWindow.prototype.getEvents = function() {
|
|||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* a thing which contains a timeline reference, and an index into it.
|
* a thing which contains a timeline reference, and an index into it.
|
||||||
*
|
*
|
||||||
|
@@ -39,7 +39,6 @@ import {
|
|||||||
} from './callEventTypes';
|
} from './callEventTypes';
|
||||||
import { CallFeed } from './callFeed';
|
import { CallFeed } from './callFeed';
|
||||||
|
|
||||||
|
|
||||||
// events: hangup, error(err), replaced(call), state(state, oldState)
|
// events: hangup, error(err), replaced(call), state(state, oldState)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1130,6 +1130,10 @@
|
|||||||
"@types/yargs" "^15.0.0"
|
"@types/yargs" "^15.0.0"
|
||||||
chalk "^4.0.0"
|
chalk "^4.0.0"
|
||||||
|
|
||||||
|
"@matrix-org/olm@https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.3.tgz":
|
||||||
|
version "3.2.3"
|
||||||
|
resolved "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.3.tgz#cc332fdd25c08ef0e40f4d33fc3f822a0f98b6f4"
|
||||||
|
|
||||||
"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents":
|
"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents":
|
||||||
version "2.1.8-no-fsevents"
|
version "2.1.8-no-fsevents"
|
||||||
resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.tgz#da7c3996b8e6e19ebd14d82eaced2313e7769f9b"
|
resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.tgz#da7c3996b8e6e19ebd14d82eaced2313e7769f9b"
|
||||||
@@ -5142,10 +5146,6 @@ object.pick@^1.3.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
isobject "^3.0.1"
|
isobject "^3.0.1"
|
||||||
|
|
||||||
"olm@https://packages.matrix.org/npm/olm/olm-3.2.1.tgz":
|
|
||||||
version "3.2.1"
|
|
||||||
resolved "https://packages.matrix.org/npm/olm/olm-3.2.1.tgz#d623d76f99c3518dde68be8c86618d68bc7b004a"
|
|
||||||
|
|
||||||
once@^1.3.0, once@^1.3.1, once@^1.4.0:
|
once@^1.3.0, once@^1.3.1, once@^1.4.0:
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
||||||
|
Reference in New Issue
Block a user