@dxos/echo-db 2.33.5-dev.4dcc5349 → 2.33.5-dev.61c93034
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/api/selection/queries.d.ts.map +1 -1
- package/dist/src/api/selection/queries.js +13 -17
- package/dist/src/api/selection/queries.js.map +1 -1
- package/dist/src/api/selection/selection.d.ts.map +1 -1
- package/dist/src/api/selection/selection.js +1 -3
- package/dist/src/api/selection/selection.js.map +1 -1
- package/dist/src/api/selection/selection.test.js +4 -12
- package/dist/src/api/selection/selection.test.js.map +1 -1
- package/dist/src/database/item-demuxer.d.ts +1 -1
- package/dist/src/database/item-demuxer.d.ts.map +1 -1
- package/dist/src/database/item-demuxer.js +3 -5
- package/dist/src/database/item-demuxer.js.map +1 -1
- package/dist/src/database/item-manager.js +2 -2
- package/dist/src/database/item-manager.js.map +1 -1
- package/dist/src/database/testing.js +1 -1
- package/dist/src/database/testing.js.map +1 -1
- package/dist/src/halo/halo-party.d.ts.map +1 -1
- package/dist/src/halo/halo-party.js +3 -1
- package/dist/src/halo/halo-party.js.map +1 -1
- package/dist/src/halo/identity.js +2 -2
- package/dist/src/halo/identity.js.map +1 -1
- package/dist/src/halo/party-opener.d.ts +1 -1
- package/dist/src/halo/party-opener.d.ts.map +1 -1
- package/dist/src/halo/party-opener.js +2 -2
- package/dist/src/halo/party-opener.js.map +1 -1
- package/dist/src/halo/preferences.d.ts.map +1 -1
- package/dist/src/halo/preferences.js +7 -10
- package/dist/src/halo/preferences.js.map +1 -1
- package/dist/src/invitations/greeting-protocol-provider.d.ts.map +1 -1
- package/dist/src/invitations/greeting-protocol-provider.js +5 -9
- package/dist/src/invitations/greeting-protocol-provider.js.map +1 -1
- package/dist/src/invitations/greeting-responder.d.ts.map +1 -1
- package/dist/src/invitations/greeting-responder.js +8 -12
- package/dist/src/invitations/greeting-responder.js.map +1 -1
- package/dist/src/invitations/offline-invitation-claimer.d.ts.map +1 -1
- package/dist/src/invitations/offline-invitation-claimer.js +5 -7
- package/dist/src/invitations/offline-invitation-claimer.js.map +1 -1
- package/dist/src/parties/data-party.d.ts.map +1 -1
- package/dist/src/parties/data-party.js +3 -1
- package/dist/src/parties/data-party.js.map +1 -1
- package/dist/src/pipeline/message-selector.d.ts +1 -1
- package/dist/src/pipeline/message-selector.d.ts.map +1 -1
- package/dist/src/pipeline/message-selector.js +29 -32
- package/dist/src/pipeline/message-selector.js.map +1 -1
- package/dist/src/pipeline/party-core.test.js +2 -1
- package/dist/src/pipeline/party-core.test.js.map +1 -1
- package/dist/src/protocol/auth-plugin.d.ts +1 -1
- package/dist/src/protocol/auth-plugin.d.ts.map +1 -1
- package/dist/src/protocol/auth-plugin.js +1 -3
- package/dist/src/protocol/auth-plugin.js.map +1 -1
- package/dist/src/protocol/authenticator.d.ts +2 -2
- package/dist/src/protocol/authenticator.d.ts.map +1 -1
- package/dist/src/protocol/authenticator.js +12 -16
- package/dist/src/protocol/authenticator.js.map +1 -1
- package/dist/src/protocol/halo-recovery-plugin.d.ts +1 -1
- package/dist/src/protocol/halo-recovery-plugin.d.ts.map +1 -1
- package/dist/src/protocol/halo-recovery-plugin.js +1 -3
- package/dist/src/protocol/halo-recovery-plugin.js.map +1 -1
- package/dist/src/protocol/identity-credentials.d.ts +2 -2
- package/dist/src/protocol/identity-credentials.d.ts.map +1 -1
- package/dist/src/protocol/identity-credentials.js +4 -4
- package/dist/src/protocol/identity-credentials.js.map +1 -1
- package/dist/src/protocol/offline-invitation-plugin.d.ts +1 -1
- package/dist/src/protocol/offline-invitation-plugin.d.ts.map +1 -1
- package/dist/src/protocol/offline-invitation-plugin.js +1 -3
- package/dist/src/protocol/offline-invitation-plugin.js.map +1 -1
- package/dist/src/protocol/party-protocol-factory.d.ts +1 -14
- package/dist/src/protocol/party-protocol-factory.d.ts.map +1 -1
- package/dist/src/protocol/party-protocol-factory.js +2 -55
- package/dist/src/protocol/party-protocol-factory.js.map +1 -1
- package/dist/src/protocol/replicator-plugin.d.ts +7 -0
- package/dist/src/protocol/replicator-plugin.d.ts.map +1 -0
- package/dist/src/protocol/replicator-plugin.js +36 -0
- package/dist/src/protocol/replicator-plugin.js.map +1 -0
- package/dist/src/snapshots/snapshot-generator.d.ts +1 -1
- package/dist/src/snapshots/snapshot-generator.d.ts.map +1 -1
- package/dist/src/snapshots/snapshot-generator.js +13 -15
- package/dist/src/snapshots/snapshot-generator.js.map +1 -1
- package/dist/src/testing/benchmark.test.d.ts +2 -0
- package/dist/src/testing/benchmark.test.d.ts.map +1 -0
- package/dist/src/testing/benchmark.test.js +25 -0
- package/dist/src/testing/benchmark.test.js.map +1 -0
- package/dist/src/testing/testing-factories.js +2 -2
- package/dist/src/testing/testing-factories.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +18 -18
- package/src/api/selection/queries.ts +14 -18
- package/src/api/selection/selection.test.ts +4 -12
- package/src/api/selection/selection.ts +1 -7
- package/src/database/item-demuxer.ts +2 -4
- package/src/database/item-manager.ts +2 -2
- package/src/database/testing.ts +1 -1
- package/src/halo/halo-party.ts +2 -1
- package/src/halo/identity.ts +2 -2
- package/src/halo/party-opener.ts +2 -2
- package/src/halo/preferences.ts +7 -10
- package/src/invitations/greeting-protocol-provider.ts +5 -9
- package/src/invitations/greeting-responder.ts +9 -13
- package/src/invitations/offline-invitation-claimer.ts +5 -7
- package/src/parties/data-party.ts +2 -1
- package/src/pipeline/message-selector.ts +30 -36
- package/src/pipeline/party-core.test.ts +4 -7
- package/src/protocol/auth-plugin.ts +1 -3
- package/src/protocol/authenticator.ts +27 -31
- package/src/protocol/halo-recovery-plugin.ts +4 -6
- package/src/protocol/identity-credentials.ts +4 -4
- package/src/protocol/offline-invitation-plugin.ts +4 -6
- package/src/protocol/party-protocol-factory.ts +3 -56
- package/src/protocol/replicator-plugin.ts +37 -0
- package/src/snapshots/snapshot-generator.ts +12 -16
- package/src/testing/benchmark.test.ts +30 -0
- package/src/testing/testing-factories.ts +2 -2
|
@@ -1,33 +1,20 @@
|
|
|
1
1
|
import { PublicKey } from '@dxos/crypto';
|
|
2
2
|
import { PartyKey } from '@dxos/echo-protocol';
|
|
3
3
|
import { NetworkManager, Plugin } from '@dxos/network-manager';
|
|
4
|
-
import { Replicator } from '@dxos/protocol-plugin-replicator';
|
|
5
4
|
import { CredentialsProvider } from '.';
|
|
6
|
-
import { PartyFeedProvider } from '../pipeline/party-feed-provider';
|
|
7
5
|
/**
|
|
8
6
|
* Manages the party's connection to the network swarm.
|
|
9
7
|
*/
|
|
10
8
|
export declare class PartyProtocolFactory {
|
|
11
9
|
private readonly _partyKey;
|
|
12
10
|
private readonly _networkManager;
|
|
13
|
-
private readonly _feedProvider;
|
|
14
11
|
private readonly _peerId;
|
|
15
12
|
private readonly _credentials;
|
|
16
13
|
private readonly _presencePlugin;
|
|
17
|
-
private readonly _replicatorProtocolPluginFactory;
|
|
18
14
|
private _started;
|
|
19
|
-
constructor(_partyKey: PartyKey, _networkManager: NetworkManager,
|
|
15
|
+
constructor(_partyKey: PartyKey, _networkManager: NetworkManager, _peerId: PublicKey, _credentials: CredentialsProvider);
|
|
20
16
|
start(plugins: Plugin[]): Promise<(() => Promise<void>) | undefined>;
|
|
21
17
|
stop(): Promise<void>;
|
|
22
18
|
private _createProtocol;
|
|
23
19
|
}
|
|
24
|
-
/**
|
|
25
|
-
* Creates the protocol plugin for feed replication.
|
|
26
|
-
*/
|
|
27
|
-
export declare class ReplicatorProtocolPluginFactory {
|
|
28
|
-
private readonly _feedProvider;
|
|
29
|
-
constructor(_feedProvider: PartyFeedProvider);
|
|
30
|
-
createPlugins(): Replicator[];
|
|
31
|
-
private _openFeed;
|
|
32
|
-
}
|
|
33
20
|
//# sourceMappingURL=party-protocol-factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"party-protocol-factory.d.ts","sourceRoot":"","sources":["../../../src/protocol/party-protocol-factory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"party-protocol-factory.d.ts","sourceRoot":"","sources":["../../../src/protocol/party-protocol-factory.ts"],"names":[],"mappings":"AAMA,OAAO,EAA6B,SAAS,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAgB,cAAc,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,GAAG,CAAC;AAIxC;;GAEG;AACH,qBAAa,oBAAoB;IAM7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAR/B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA+C;IAE/E,OAAO,CAAC,QAAQ,CAAS;gBAGN,SAAS,EAAE,QAAQ,EACnB,eAAe,EAAE,cAAc,EAC/B,OAAO,EAAE,SAAS,EAClB,YAAY,EAAE,mBAAmB;IAG9C,KAAK,CAAE,OAAO,EAAE,MAAM,EAAE;IAwBxB,IAAI;IAUV,OAAO,CAAC,eAAe;CA2CxB"}
|
|
@@ -2,40 +2,28 @@
|
|
|
2
2
|
//
|
|
3
3
|
// Copyright 2020 DXOS.org
|
|
4
4
|
//
|
|
5
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
6
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
7
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
8
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
9
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
10
|
-
};
|
|
11
5
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
6
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
7
|
};
|
|
14
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.
|
|
9
|
+
exports.PartyProtocolFactory = void 0;
|
|
16
10
|
const debug_1 = __importDefault(require("debug"));
|
|
17
|
-
const async_1 = require("@dxos/async");
|
|
18
11
|
const crypto_1 = require("@dxos/crypto");
|
|
19
12
|
const mesh_protocol_1 = require("@dxos/mesh-protocol");
|
|
20
13
|
const network_manager_1 = require("@dxos/network-manager");
|
|
21
14
|
const protocol_plugin_presence_1 = require("@dxos/protocol-plugin-presence");
|
|
22
|
-
const protocol_plugin_replicator_1 = require("@dxos/protocol-plugin-replicator");
|
|
23
15
|
const log = (0, debug_1.default)('dxos:echo-db:party-protocol-factory');
|
|
24
16
|
/**
|
|
25
17
|
* Manages the party's connection to the network swarm.
|
|
26
18
|
*/
|
|
27
19
|
class PartyProtocolFactory {
|
|
28
|
-
constructor(_partyKey, _networkManager,
|
|
20
|
+
constructor(_partyKey, _networkManager, _peerId, _credentials) {
|
|
29
21
|
this._partyKey = _partyKey;
|
|
30
22
|
this._networkManager = _networkManager;
|
|
31
|
-
this._feedProvider = _feedProvider;
|
|
32
23
|
this._peerId = _peerId;
|
|
33
24
|
this._credentials = _credentials;
|
|
34
25
|
this._presencePlugin = new protocol_plugin_presence_1.PresencePlugin(this._peerId.asBuffer());
|
|
35
26
|
this._started = false;
|
|
36
|
-
// Replication.
|
|
37
|
-
this._replicatorProtocolPluginFactory =
|
|
38
|
-
new ReplicatorProtocolPluginFactory(this._feedProvider);
|
|
39
27
|
}
|
|
40
28
|
async start(plugins) {
|
|
41
29
|
if (this._started) {
|
|
@@ -68,7 +56,6 @@ class PartyProtocolFactory {
|
|
|
68
56
|
}
|
|
69
57
|
_createProtocol(channel, opts, extraPlugins) {
|
|
70
58
|
const plugins = [
|
|
71
|
-
...this._replicatorProtocolPluginFactory.createPlugins(),
|
|
72
59
|
...extraPlugins,
|
|
73
60
|
this._presencePlugin
|
|
74
61
|
];
|
|
@@ -103,44 +90,4 @@ class PartyProtocolFactory {
|
|
|
103
90
|
}
|
|
104
91
|
}
|
|
105
92
|
exports.PartyProtocolFactory = PartyProtocolFactory;
|
|
106
|
-
/**
|
|
107
|
-
* Creates the protocol plugin for feed replication.
|
|
108
|
-
*/
|
|
109
|
-
class ReplicatorProtocolPluginFactory {
|
|
110
|
-
constructor(_feedProvider) {
|
|
111
|
-
this._feedProvider = _feedProvider;
|
|
112
|
-
}
|
|
113
|
-
createPlugins() {
|
|
114
|
-
return [
|
|
115
|
-
new protocol_plugin_replicator_1.Replicator({
|
|
116
|
-
load: async () => {
|
|
117
|
-
const feeds = this._feedProvider.getFeeds();
|
|
118
|
-
log(`Loading feeds: ${feeds.map(feed => (0, crypto_1.keyToString)(feed.key))}`);
|
|
119
|
-
return feeds.map((feed) => ({ discoveryKey: feed.feed.discoveryKey }));
|
|
120
|
-
},
|
|
121
|
-
subscribe: (addFeedToReplicatedSet) => {
|
|
122
|
-
return this._feedProvider.feedOpened.on(async (feed) => {
|
|
123
|
-
log(`Adding feed: ${feed.key.toHex()}`);
|
|
124
|
-
addFeedToReplicatedSet({ discoveryKey: feed.feed.discoveryKey });
|
|
125
|
-
});
|
|
126
|
-
},
|
|
127
|
-
replicate: async (remoteFeeds, info) => {
|
|
128
|
-
// We can ignore remoteFeeds entirely, since the set of feeds we want to replicate is dictated by the Party.
|
|
129
|
-
// TODO(telackey): Why are we opening feeds? Necessary or belt/braces thinking, or because open party does it?
|
|
130
|
-
const feeds = this._feedProvider.getFeeds();
|
|
131
|
-
log(`Replicating: peerId=${info.session}; feeds=${feeds.map(feed => feed.key.toHex())}`);
|
|
132
|
-
return feeds.map(feed => feed.feed);
|
|
133
|
-
}
|
|
134
|
-
})
|
|
135
|
-
];
|
|
136
|
-
}
|
|
137
|
-
async _openFeed(key) {
|
|
138
|
-
const descriptor = await this._feedProvider.createOrOpenReadOnlyFeed(key);
|
|
139
|
-
return descriptor.feed;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
__decorate([
|
|
143
|
-
async_1.synchronized
|
|
144
|
-
], ReplicatorProtocolPluginFactory.prototype, "_openFeed", null);
|
|
145
|
-
exports.ReplicatorProtocolPluginFactory = ReplicatorProtocolPluginFactory;
|
|
146
93
|
//# sourceMappingURL=party-protocol-factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"party-protocol-factory.js","sourceRoot":"","sources":["../../../src/protocol/party-protocol-factory.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE
|
|
1
|
+
{"version":3,"file":"party-protocol-factory.js","sourceRoot":"","sources":["../../../src/protocol/party-protocol-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Replicator } from '@dxos/protocol-plugin-replicator';
|
|
2
|
+
import { PartyFeedProvider } from '../pipeline';
|
|
3
|
+
/**
|
|
4
|
+
* Creates the protocol plugin for feed replication.
|
|
5
|
+
*/
|
|
6
|
+
export declare const createReplicatorPlugin: (feedProvider: PartyFeedProvider) => Replicator;
|
|
7
|
+
//# sourceMappingURL=replicator-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replicator-plugin.d.ts","sourceRoot":"","sources":["../../../src/protocol/replicator-plugin.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIhD;;GAEG;AACH,eAAO,MAAM,sBAAsB,iBAAkB,iBAAiB,eAoBlE,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
//
|
|
3
|
+
// Copyright 2022 DXOS.org
|
|
4
|
+
//
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.createReplicatorPlugin = void 0;
|
|
10
|
+
const debug_1 = __importDefault(require("debug"));
|
|
11
|
+
const crypto_1 = require("@dxos/crypto");
|
|
12
|
+
const protocol_plugin_replicator_1 = require("@dxos/protocol-plugin-replicator");
|
|
13
|
+
const log = (0, debug_1.default)('dxos:echo-db:protocol:replicator');
|
|
14
|
+
/**
|
|
15
|
+
* Creates the protocol plugin for feed replication.
|
|
16
|
+
*/
|
|
17
|
+
const createReplicatorPlugin = (feedProvider) => new protocol_plugin_replicator_1.Replicator({
|
|
18
|
+
load: async () => {
|
|
19
|
+
const feeds = feedProvider.getFeeds();
|
|
20
|
+
log(`Loading feeds: ${feeds.map(feed => (0, crypto_1.keyToString)(feed.key))}`);
|
|
21
|
+
return feeds.map((feed) => ({ discoveryKey: feed.feed.discoveryKey }));
|
|
22
|
+
},
|
|
23
|
+
subscribe: (addFeedToReplicatedSet) => feedProvider.feedOpened.on(async (feed) => {
|
|
24
|
+
log(`Adding feed: ${feed.key.toHex()}`);
|
|
25
|
+
addFeedToReplicatedSet({ discoveryKey: feed.feed.discoveryKey });
|
|
26
|
+
}),
|
|
27
|
+
replicate: async (remoteFeeds, info) => {
|
|
28
|
+
// We can ignore remoteFeeds entirely, since the set of feeds we want to replicate is dictated by the Party.
|
|
29
|
+
// TODO(telackey): Why are we opening feeds? Necessary or belt/braces thinking, or because open party does it?
|
|
30
|
+
const feeds = feedProvider.getFeeds();
|
|
31
|
+
log(`Replicating: peerId=${info.session}; feeds=${feeds.map(feed => feed.key.toHex())}`);
|
|
32
|
+
return feeds.map(feed => feed.feed);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
exports.createReplicatorPlugin = createReplicatorPlugin;
|
|
36
|
+
//# sourceMappingURL=replicator-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replicator-plugin.js","sourceRoot":"","sources":["../../../src/protocol/replicator-plugin.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,kDAA0B;AAE1B,yCAA2C;AAC3C,iFAA8D;AAI9D,MAAM,GAAG,GAAG,IAAA,eAAK,EAAC,kCAAkC,CAAC,CAAC;AAEtD;;GAEG;AACI,MAAM,sBAAsB,GAAG,CAAC,YAA+B,EAAE,EAAE,CACxE,IAAI,uCAAU,CAAC;IACb,IAAI,EAAE,KAAK,IAAI,EAAE;QACf,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QACtC,GAAG,CAAC,kBAAkB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAA,oBAAW,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QAClE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,SAAS,EAAE,CAAC,sBAA2C,EAAE,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACpG,GAAG,CAAC,gBAAgB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACxC,sBAAsB,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC;IAEF,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;QACrC,4GAA4G;QAC5G,8GAA8G;QAC9G,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QACtC,GAAG,CAAC,uBAAuB,IAAI,CAAC,OAAO,WAAW,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACzF,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;CACF,CAAC,CAAC;AApBQ,QAAA,sBAAsB,0BAoB9B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TimeframeClock } from '../database';
|
|
2
2
|
import { PartyCore } from '../pipeline';
|
|
3
3
|
import { SnapshotStore } from './snapshot-store';
|
|
4
|
-
export declare
|
|
4
|
+
export declare const createAutomaticSnapshots: (party: PartyCore, clock: TimeframeClock, store: SnapshotStore, interval: number) => () => void;
|
|
5
5
|
//# sourceMappingURL=snapshot-generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot-generator.d.ts","sourceRoot":"","sources":["../../../src/snapshots/snapshot-generator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,
|
|
1
|
+
{"version":3,"file":"snapshot-generator.d.ts","sourceRoot":"","sources":["../../../src/snapshots/snapshot-generator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,eAAO,MAAM,wBAAwB,UAAW,SAAS,SAAS,cAAc,SAAS,aAAa,YAAY,MAAM,eAYtH,CAAC"}
|
|
@@ -9,21 +9,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.createAutomaticSnapshots = void 0;
|
|
10
10
|
const debug_1 = __importDefault(require("debug"));
|
|
11
11
|
const log = (0, debug_1.default)('dxos:snapshot-generator');
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
await store.save(snapshot);
|
|
20
|
-
}
|
|
21
|
-
catch (err) {
|
|
22
|
-
console.error('Failed to save snapshot');
|
|
23
|
-
console.error(err);
|
|
24
|
-
}
|
|
12
|
+
const createAutomaticSnapshots = (party, clock, store, interval) => clock.update.on(async (timeframe) => {
|
|
13
|
+
const totalMessages = timeframe.totalMessages();
|
|
14
|
+
if (totalMessages > 0 && totalMessages % interval === 0) {
|
|
15
|
+
log(`Saving snapshot of ${party.key.humanize()}...`);
|
|
16
|
+
try {
|
|
17
|
+
const snapshot = party.createSnapshot();
|
|
18
|
+
await store.save(snapshot);
|
|
25
19
|
}
|
|
26
|
-
|
|
27
|
-
|
|
20
|
+
catch (err) {
|
|
21
|
+
console.error('Failed to save snapshot');
|
|
22
|
+
console.error(err);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
});
|
|
28
26
|
exports.createAutomaticSnapshots = createAutomaticSnapshots;
|
|
29
27
|
//# sourceMappingURL=snapshot-generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot-generator.js","sourceRoot":"","sources":["../../../src/snapshots/snapshot-generator.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,kDAA0B;AAM1B,MAAM,GAAG,GAAG,IAAA,eAAK,EAAC,yBAAyB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"snapshot-generator.js","sourceRoot":"","sources":["../../../src/snapshots/snapshot-generator.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,kDAA0B;AAM1B,MAAM,GAAG,GAAG,IAAA,eAAK,EAAC,yBAAyB,CAAC,CAAC;AAEtC,MAAM,wBAAwB,GAAG,CAAC,KAAgB,EAAE,KAAqB,EAAE,KAAoB,EAAE,QAAgB,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAC,SAAS,EAAC,EAAE;IAC7J,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;IAChD,IAAI,aAAa,GAAG,CAAC,IAAI,aAAa,GAAG,QAAQ,KAAK,CAAC,EAAE;QACvD,GAAG,CAAC,sBAAsB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI;YACF,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;YACxC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC5B;QAAC,OAAO,GAAQ,EAAE;YACjB,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACpB;KACF;AACH,CAAC,CAAC,CAAC;AAZU,QAAA,wBAAwB,4BAYlC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"benchmark.test.d.ts","sourceRoot":"","sources":["../../../src/testing/benchmark.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
//
|
|
3
|
+
// Copyright 2022 DXOS.org
|
|
4
|
+
//
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const object_model_1 = require("@dxos/object-model");
|
|
7
|
+
const echo_1 = require("../echo");
|
|
8
|
+
const ITEMS = 100;
|
|
9
|
+
const MUTATIONS = 1000;
|
|
10
|
+
it.skip('Database benchmark', async () => {
|
|
11
|
+
const echo = new echo_1.ECHO({ snapshots: false });
|
|
12
|
+
await echo.open();
|
|
13
|
+
await echo.halo.createProfile();
|
|
14
|
+
const party = await echo.createParty();
|
|
15
|
+
const start = Date.now();
|
|
16
|
+
for (let i = 0; i < ITEMS; i++) {
|
|
17
|
+
const item = await party.database.createItem({ model: object_model_1.ObjectModel, type: 'test:item' });
|
|
18
|
+
for (let j = 0; j < MUTATIONS; j++) {
|
|
19
|
+
await item.model.set(`key${j % 100}`, `value-${j}`);
|
|
20
|
+
}
|
|
21
|
+
console.log(`${i * MUTATIONS}/${ITEMS * MUTATIONS} ${((Date.now() - start) / ((i + 1) * MUTATIONS / 1000)).toFixed(1)} µs/mut ${((i + 1) * MUTATIONS / (Date.now() - start) * 1000).toFixed(1)} mut/s`);
|
|
22
|
+
}
|
|
23
|
+
await echo.close();
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=benchmark.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"benchmark.test.js","sourceRoot":"","sources":["../../../src/testing/benchmark.test.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;AAEF,qDAAiD;AAEjD,kCAA+B;AAE/B,MAAM,KAAK,GAAG,GAAG,CAAC;AAClB,MAAM,SAAS,GAAG,IAAI,CAAC;AAEvB,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;IACvC,MAAM,IAAI,GAAG,IAAI,WAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5C,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAClB,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IAEvC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;QAC9B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,0BAAW,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QAExF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;SACrD;QAED,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,KAAK,GAAG,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;KACzM;IAED,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC"}
|
|
@@ -11,10 +11,10 @@ const assert_1 = __importDefault(require("assert"));
|
|
|
11
11
|
const object_model_1 = require("@dxos/object-model");
|
|
12
12
|
const util_1 = require("@dxos/util");
|
|
13
13
|
const testing_1 = require("./testing");
|
|
14
|
-
|
|
14
|
+
const addTestMeta = (obj, meta) => {
|
|
15
15
|
obj.testMeta = meta;
|
|
16
16
|
return obj;
|
|
17
|
-
}
|
|
17
|
+
};
|
|
18
18
|
/**
|
|
19
19
|
* Creates a number of test ECHO instances and a party that's shared between all of them.
|
|
20
20
|
* @returns Party instances from each of the peers.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing-factories.js","sourceRoot":"","sources":["../../../src/testing/testing-factories.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,oDAA4B;AAG5B,qDAAiD;AACjD,qCAAmC;AAKnC,uCAA+D;AAW/D,
|
|
1
|
+
{"version":3,"file":"testing-factories.js","sourceRoot":"","sources":["../../../src/testing/testing-factories.ts"],"names":[],"mappings":"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"}
|