@dxos/client-services 0.4.8-main.eb5ae94 → 0.4.8-main.fff1521
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/lib/browser/{chunk-CRDK6ZCI.mjs → chunk-B4ULSCLD.mjs} +100 -33
- package/dist/lib/browser/{chunk-CRDK6ZCI.mjs.map → chunk-B4ULSCLD.mjs.map} +4 -4
- package/dist/lib/browser/index.mjs +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/packlets/testing/index.mjs +1 -1
- package/dist/lib/node/{chunk-D7DUALPP.cjs → chunk-RT6CJTQM.cjs} +107 -44
- package/dist/lib/node/{chunk-D7DUALPP.cjs.map → chunk-RT6CJTQM.cjs.map} +4 -4
- package/dist/lib/node/index.cjs +38 -38
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/packlets/testing/index.cjs +8 -8
- package/dist/types/src/packlets/indexing/index.d.ts +2 -0
- package/dist/types/src/packlets/indexing/index.d.ts.map +1 -0
- package/dist/types/src/packlets/indexing/util.d.ts +15 -0
- package/dist/types/src/packlets/indexing/util.d.ts.map +1 -0
- package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
- package/dist/types/src/version.d.ts +1 -1
- package/package.json +37 -37
- package/src/packlets/indexing/index.ts +5 -0
- package/src/packlets/indexing/util.ts +89 -0
- package/src/packlets/services/service-context.ts +5 -16
- package/src/version.ts +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const DXOS_VERSION = "0.4.8-main.
|
|
1
|
+
export declare const DXOS_VERSION = "0.4.8-main.fff1521";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/client-services",
|
|
3
|
-
"version": "0.4.8-main.
|
|
3
|
+
"version": "0.4.8-main.fff1521",
|
|
4
4
|
"description": "DXOS client services implementation",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -22,46 +22,46 @@
|
|
|
22
22
|
],
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"platform": "^1.3.6",
|
|
25
|
-
"@dxos/async": "0.4.8-main.
|
|
26
|
-
"@dxos/
|
|
27
|
-
"@dxos/
|
|
28
|
-
"@dxos/
|
|
29
|
-
"@dxos/client-protocol": "0.4.8-main.
|
|
30
|
-
"@dxos/
|
|
31
|
-
"@dxos/
|
|
32
|
-
"@dxos/
|
|
33
|
-
"@dxos/debug": "0.4.8-main.
|
|
34
|
-
"@dxos/
|
|
35
|
-
"@dxos/
|
|
36
|
-
"@dxos/echo-schema": "0.4.8-main.
|
|
37
|
-
"@dxos/echo-pipeline": "0.4.8-main.
|
|
38
|
-
"@dxos/feed-store": "0.4.8-main.
|
|
39
|
-
"@dxos/
|
|
40
|
-
"@dxos/
|
|
41
|
-
"@dxos/
|
|
42
|
-
"@dxos/
|
|
43
|
-
"@dxos/
|
|
44
|
-
"@dxos/log": "0.4.8-main.
|
|
45
|
-
"@dxos/
|
|
46
|
-
"@dxos/
|
|
47
|
-
"@dxos/
|
|
48
|
-
"@dxos/
|
|
49
|
-
"@dxos/protocols": "0.4.8-main.
|
|
50
|
-
"@dxos/
|
|
51
|
-
"@dxos/
|
|
52
|
-
"@dxos/
|
|
53
|
-
"@dxos/teleport-extension-gossip": "0.4.8-main.
|
|
54
|
-
"@dxos/
|
|
55
|
-
"@dxos/
|
|
56
|
-
"@dxos/timeframe": "0.4.8-main.
|
|
57
|
-
"@dxos/
|
|
58
|
-
"@dxos/
|
|
59
|
-
"@dxos/
|
|
25
|
+
"@dxos/async": "0.4.8-main.fff1521",
|
|
26
|
+
"@dxos/automerge": "0.4.8-main.fff1521",
|
|
27
|
+
"@dxos/codec-protobuf": "0.4.8-main.fff1521",
|
|
28
|
+
"@dxos/config": "0.4.8-main.fff1521",
|
|
29
|
+
"@dxos/client-protocol": "0.4.8-main.fff1521",
|
|
30
|
+
"@dxos/credentials": "0.4.8-main.fff1521",
|
|
31
|
+
"@dxos/context": "0.4.8-main.fff1521",
|
|
32
|
+
"@dxos/crypto": "0.4.8-main.fff1521",
|
|
33
|
+
"@dxos/debug": "0.4.8-main.fff1521",
|
|
34
|
+
"@dxos/document-model": "0.4.8-main.fff1521",
|
|
35
|
+
"@dxos/echo-db": "0.4.8-main.fff1521",
|
|
36
|
+
"@dxos/echo-schema": "0.4.8-main.fff1521",
|
|
37
|
+
"@dxos/echo-pipeline": "0.4.8-main.fff1521",
|
|
38
|
+
"@dxos/feed-store": "0.4.8-main.fff1521",
|
|
39
|
+
"@dxos/indexing": "0.4.8-main.fff1521",
|
|
40
|
+
"@dxos/keyring": "0.4.8-main.fff1521",
|
|
41
|
+
"@dxos/invariant": "0.4.8-main.fff1521",
|
|
42
|
+
"@dxos/keys": "0.4.8-main.fff1521",
|
|
43
|
+
"@dxos/lock-file": "0.4.8-main.fff1521",
|
|
44
|
+
"@dxos/log": "0.4.8-main.fff1521",
|
|
45
|
+
"@dxos/messaging": "0.4.8-main.fff1521",
|
|
46
|
+
"@dxos/network-manager": "0.4.8-main.fff1521",
|
|
47
|
+
"@dxos/node-std": "0.4.8-main.fff1521",
|
|
48
|
+
"@dxos/model-factory": "0.4.8-main.fff1521",
|
|
49
|
+
"@dxos/protocols": "0.4.8-main.fff1521",
|
|
50
|
+
"@dxos/rpc": "0.4.8-main.fff1521",
|
|
51
|
+
"@dxos/teleport": "0.4.8-main.fff1521",
|
|
52
|
+
"@dxos/random-access-storage": "0.4.8-main.fff1521",
|
|
53
|
+
"@dxos/teleport-extension-gossip": "0.4.8-main.fff1521",
|
|
54
|
+
"@dxos/teleport-extension-object-sync": "0.4.8-main.fff1521",
|
|
55
|
+
"@dxos/text-model": "0.4.8-main.fff1521",
|
|
56
|
+
"@dxos/timeframe": "0.4.8-main.fff1521",
|
|
57
|
+
"@dxos/websocket-rpc": "0.4.8-main.fff1521",
|
|
58
|
+
"@dxos/tracing": "0.4.8-main.fff1521",
|
|
59
|
+
"@dxos/util": "0.4.8-main.fff1521"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
62
|
"@types/platform": "^1.3.4",
|
|
63
63
|
"@types/readable-stream": "^2.3.9",
|
|
64
|
-
"@dxos/signal": "0.4.8-main.
|
|
64
|
+
"@dxos/signal": "0.4.8-main.fff1521"
|
|
65
65
|
},
|
|
66
66
|
"publishConfig": {
|
|
67
67
|
"access": "public"
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2024 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { getHeads } from '@dxos/automerge/automerge';
|
|
6
|
+
import { type DocHandle } from '@dxos/automerge/automerge-repo';
|
|
7
|
+
import { warnAfterTimeout } from '@dxos/debug';
|
|
8
|
+
import { type AutomergeHost } from '@dxos/echo-pipeline';
|
|
9
|
+
import { type ObjectSnapshot } from '@dxos/indexing';
|
|
10
|
+
import { idCodec } from '@dxos/protocols';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Factory for `loadDocuments` iterator.
|
|
14
|
+
*/
|
|
15
|
+
export const createLoadDocuments = (automergeHost: AutomergeHost) =>
|
|
16
|
+
/**
|
|
17
|
+
* Get object data blobs from Automerge Repo by ids.
|
|
18
|
+
* @param ids
|
|
19
|
+
*/
|
|
20
|
+
// TODO(mykola): Unload automerge handles after usage.
|
|
21
|
+
async function* loadDocuments(ids: string[]) {
|
|
22
|
+
for (const id of ids) {
|
|
23
|
+
const { documentId, objectId } = idCodec.decode(id);
|
|
24
|
+
const handle = automergeHost.repo.find(documentId as any);
|
|
25
|
+
await warnAfterTimeout(5000, 'to long to load doc', () => handle.whenReady());
|
|
26
|
+
const doc = handle.docSync();
|
|
27
|
+
const heads = getHeads(doc);
|
|
28
|
+
yield [{ id, object: doc.objects[objectId], currentHash: heads.at(-1)! }];
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Factory for `getAllDocuments` iterator.
|
|
34
|
+
*/
|
|
35
|
+
export const createGetAllDocuments = (automergeHost: AutomergeHost) =>
|
|
36
|
+
/**
|
|
37
|
+
* Recursively get all object data blobs from Automerge Repo.
|
|
38
|
+
* @param ids
|
|
39
|
+
*/
|
|
40
|
+
// TODO(mykola): Unload automerge handles after usage.
|
|
41
|
+
async function* getAllDocuments(): AsyncGenerator<ObjectSnapshot[], void, 'done'> {
|
|
42
|
+
/** visited automerge handles */
|
|
43
|
+
const visited = new Set<string>();
|
|
44
|
+
|
|
45
|
+
async function* getObjectsFromHandle(handle: DocHandle<any>): AsyncGenerator<ObjectSnapshot[]> {
|
|
46
|
+
if (visited.has(handle.documentId)) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
await warnAfterTimeout(5000, 'to long to load doc', () => handle.whenReady());
|
|
51
|
+
const doc = handle.docSync();
|
|
52
|
+
|
|
53
|
+
const heads = getHeads(doc);
|
|
54
|
+
|
|
55
|
+
if (doc.objects) {
|
|
56
|
+
yield Object.entries(doc.objects as { [key: string]: any }).map(([objectId, object]) => {
|
|
57
|
+
return {
|
|
58
|
+
id: idCodec.encode({ documentId: handle.documentId, objectId }),
|
|
59
|
+
object,
|
|
60
|
+
currentHash: heads.at(-1)!,
|
|
61
|
+
};
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (doc.links) {
|
|
66
|
+
for (const id of Object.values(doc.links as { [echoId: string]: string })) {
|
|
67
|
+
if (visited.has(id)) {
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
const linkHandle = automergeHost.repo.find(id as any);
|
|
71
|
+
for await (const result of getObjectsFromHandle(linkHandle)) {
|
|
72
|
+
yield result;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
visited.add(handle.documentId);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
for (const handle of Object.values(automergeHost.repo.handles)) {
|
|
81
|
+
if (visited.has(handle.documentId)) {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
for await (const result of getObjectsFromHandle(handle)) {
|
|
85
|
+
yield result;
|
|
86
|
+
}
|
|
87
|
+
visited.add(handle.documentId);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
@@ -3,10 +3,9 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { Trigger } from '@dxos/async';
|
|
6
|
-
import { getHeads } from '@dxos/automerge/automerge';
|
|
7
6
|
import { Context } from '@dxos/context';
|
|
8
7
|
import { type CredentialProcessor, getCredentialAssertion } from '@dxos/credentials';
|
|
9
|
-
import { failUndefined
|
|
8
|
+
import { failUndefined } from '@dxos/debug';
|
|
10
9
|
import {
|
|
11
10
|
valueEncoding,
|
|
12
11
|
MetadataStore,
|
|
@@ -24,7 +23,7 @@ import { log } from '@dxos/log';
|
|
|
24
23
|
import { type SignalManager } from '@dxos/messaging';
|
|
25
24
|
import { type ModelFactory } from '@dxos/model-factory';
|
|
26
25
|
import { type NetworkManager } from '@dxos/network-manager';
|
|
27
|
-
import { InvalidStorageVersionError, STORAGE_VERSION,
|
|
26
|
+
import { InvalidStorageVersionError, STORAGE_VERSION, trace } from '@dxos/protocols';
|
|
28
27
|
import { Invitation } from '@dxos/protocols/proto/dxos/client/services';
|
|
29
28
|
import type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
|
|
30
29
|
import { type ProfileDocument, type Credential } from '@dxos/protocols/proto/dxos/halo/credentials';
|
|
@@ -39,6 +38,7 @@ import {
|
|
|
39
38
|
type IdentityManagerRuntimeParams,
|
|
40
39
|
type JoinIdentityParams,
|
|
41
40
|
} from '../identity';
|
|
41
|
+
import { createGetAllDocuments, createLoadDocuments } from '../indexing';
|
|
42
42
|
import {
|
|
43
43
|
DeviceInvitationProtocol,
|
|
44
44
|
InvitationsHandler,
|
|
@@ -136,19 +136,8 @@ export class ServiceContext {
|
|
|
136
136
|
this.indexer = new Indexer({
|
|
137
137
|
indexStore: new IndexStore({ directory: storage.createDirectory('index-store') }),
|
|
138
138
|
metadataStore: this.indexMetadata,
|
|
139
|
-
loadDocuments:
|
|
140
|
-
|
|
141
|
-
ids.map(async (id) => {
|
|
142
|
-
const { documentId, objectId } = idCodec.decode(id);
|
|
143
|
-
const handle = this.automergeHost.repo.find(documentId as any);
|
|
144
|
-
await warnAfterTimeout(1000, 'to long to load doc', () => handle.whenReady());
|
|
145
|
-
const doc = handle.docSync();
|
|
146
|
-
const heads = getHeads(doc);
|
|
147
|
-
return { id, object: doc.objects[objectId], currentHash: heads.at(-1)! };
|
|
148
|
-
}),
|
|
149
|
-
);
|
|
150
|
-
return snapshots.filter((snapshot) => snapshot.object);
|
|
151
|
-
},
|
|
139
|
+
loadDocuments: createLoadDocuments(this.automergeHost),
|
|
140
|
+
getAllDocuments: createGetAllDocuments(this.automergeHost),
|
|
152
141
|
});
|
|
153
142
|
|
|
154
143
|
this.invitations = new InvitationsHandler(this.networkManager);
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const DXOS_VERSION = "0.4.8-main.
|
|
1
|
+
export const DXOS_VERSION = "0.4.8-main.fff1521";
|