@dxos/client-services 0.4.8-main.de30065 → 0.4.8-main.e23f3c5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"service-context.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/service-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service-context.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/service-context.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const DXOS_VERSION = "0.4.8-main.de30065";
1
+ export declare const DXOS_VERSION = "0.4.8-main.e23f3c5";
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.de30065",
3
+ "version": "0.4.8-main.e23f3c5",
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/client-protocol": "0.4.8-main.de30065",
26
- "@dxos/async": "0.4.8-main.de30065",
27
- "@dxos/automerge": "0.4.8-main.de30065",
28
- "@dxos/config": "0.4.8-main.de30065",
29
- "@dxos/codec-protobuf": "0.4.8-main.de30065",
30
- "@dxos/crypto": "0.4.8-main.de30065",
31
- "@dxos/context": "0.4.8-main.de30065",
32
- "@dxos/debug": "0.4.8-main.de30065",
33
- "@dxos/credentials": "0.4.8-main.de30065",
34
- "@dxos/document-model": "0.4.8-main.de30065",
35
- "@dxos/echo-schema": "0.4.8-main.de30065",
36
- "@dxos/echo-db": "0.4.8-main.de30065",
37
- "@dxos/echo-pipeline": "0.4.8-main.de30065",
38
- "@dxos/feed-store": "0.4.8-main.de30065",
39
- "@dxos/indexing": "0.4.8-main.de30065",
40
- "@dxos/invariant": "0.4.8-main.de30065",
41
- "@dxos/keyring": "0.4.8-main.de30065",
42
- "@dxos/keys": "0.4.8-main.de30065",
43
- "@dxos/lock-file": "0.4.8-main.de30065",
44
- "@dxos/log": "0.4.8-main.de30065",
45
- "@dxos/messaging": "0.4.8-main.de30065",
46
- "@dxos/network-manager": "0.4.8-main.de30065",
47
- "@dxos/model-factory": "0.4.8-main.de30065",
48
- "@dxos/node-std": "0.4.8-main.de30065",
49
- "@dxos/protocols": "0.4.8-main.de30065",
50
- "@dxos/rpc": "0.4.8-main.de30065",
51
- "@dxos/random-access-storage": "0.4.8-main.de30065",
52
- "@dxos/teleport": "0.4.8-main.de30065",
53
- "@dxos/teleport-extension-gossip": "0.4.8-main.de30065",
54
- "@dxos/teleport-extension-object-sync": "0.4.8-main.de30065",
55
- "@dxos/text-model": "0.4.8-main.de30065",
56
- "@dxos/tracing": "0.4.8-main.de30065",
57
- "@dxos/timeframe": "0.4.8-main.de30065",
58
- "@dxos/util": "0.4.8-main.de30065",
59
- "@dxos/websocket-rpc": "0.4.8-main.de30065"
25
+ "@dxos/async": "0.4.8-main.e23f3c5",
26
+ "@dxos/client-protocol": "0.4.8-main.e23f3c5",
27
+ "@dxos/automerge": "0.4.8-main.e23f3c5",
28
+ "@dxos/codec-protobuf": "0.4.8-main.e23f3c5",
29
+ "@dxos/config": "0.4.8-main.e23f3c5",
30
+ "@dxos/context": "0.4.8-main.e23f3c5",
31
+ "@dxos/crypto": "0.4.8-main.e23f3c5",
32
+ "@dxos/credentials": "0.4.8-main.e23f3c5",
33
+ "@dxos/debug": "0.4.8-main.e23f3c5",
34
+ "@dxos/document-model": "0.4.8-main.e23f3c5",
35
+ "@dxos/echo-db": "0.4.8-main.e23f3c5",
36
+ "@dxos/echo-pipeline": "0.4.8-main.e23f3c5",
37
+ "@dxos/echo-schema": "0.4.8-main.e23f3c5",
38
+ "@dxos/indexing": "0.4.8-main.e23f3c5",
39
+ "@dxos/feed-store": "0.4.8-main.e23f3c5",
40
+ "@dxos/keyring": "0.4.8-main.e23f3c5",
41
+ "@dxos/invariant": "0.4.8-main.e23f3c5",
42
+ "@dxos/keys": "0.4.8-main.e23f3c5",
43
+ "@dxos/log": "0.4.8-main.e23f3c5",
44
+ "@dxos/lock-file": "0.4.8-main.e23f3c5",
45
+ "@dxos/messaging": "0.4.8-main.e23f3c5",
46
+ "@dxos/model-factory": "0.4.8-main.e23f3c5",
47
+ "@dxos/network-manager": "0.4.8-main.e23f3c5",
48
+ "@dxos/node-std": "0.4.8-main.e23f3c5",
49
+ "@dxos/protocols": "0.4.8-main.e23f3c5",
50
+ "@dxos/random-access-storage": "0.4.8-main.e23f3c5",
51
+ "@dxos/teleport": "0.4.8-main.e23f3c5",
52
+ "@dxos/teleport-extension-gossip": "0.4.8-main.e23f3c5",
53
+ "@dxos/teleport-extension-object-sync": "0.4.8-main.e23f3c5",
54
+ "@dxos/timeframe": "0.4.8-main.e23f3c5",
55
+ "@dxos/rpc": "0.4.8-main.e23f3c5",
56
+ "@dxos/text-model": "0.4.8-main.e23f3c5",
57
+ "@dxos/websocket-rpc": "0.4.8-main.e23f3c5",
58
+ "@dxos/tracing": "0.4.8-main.e23f3c5",
59
+ "@dxos/util": "0.4.8-main.e23f3c5"
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.de30065"
64
+ "@dxos/signal": "0.4.8-main.e23f3c5"
65
65
  },
66
66
  "publishConfig": {
67
67
  "access": "public"
@@ -97,6 +97,7 @@ export class Identity {
97
97
 
98
98
  @trace.span()
99
99
  async close(ctx: Context) {
100
+ await this._presence?.destroy();
100
101
  await this.authVerifier.close();
101
102
  await this.space.spaceState.removeCredentialProcessor(this._profileStateMachine);
102
103
  await this.space.spaceState.removeCredentialProcessor(this._deviceStateMachine);
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ export * from './util';
@@ -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, warnAfterTimeout } from '@dxos/debug';
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, idCodec, trace } from '@dxos/protocols';
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: async (ids: string[]) => {
140
- const snapshots = await Promise.all(
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.de30065";
1
+ export const DXOS_VERSION = "0.4.8-main.e23f3c5";