@dxos/client-services 0.1.53-main.528b72b → 0.1.53-main.52ca4e9

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.
@@ -18,6 +18,10 @@ export type ClientServicesHostParams = {
18
18
  connectionLog?: boolean;
19
19
  storage?: Storage;
20
20
  lockKey?: string;
21
+ callbacks?: ClientServicesHostCallbacks;
22
+ };
23
+ export type ClientServicesHostCallbacks = {
24
+ onReset?: () => Promise<void>;
21
25
  };
22
26
  export type InitializeOptions = {
23
27
  config?: Config;
@@ -39,10 +43,11 @@ export declare class ClientServicesHost {
39
43
  private _signalManager?;
40
44
  private _networkManager?;
41
45
  private _storage?;
46
+ private _callbacks?;
42
47
  _serviceContext: ServiceContext;
43
48
  private _opening;
44
49
  private _open;
45
- constructor({ config, modelFactory, transportFactory, signalManager, connectionLog, storage, lockKey, }?: ClientServicesHostParams);
50
+ constructor({ config, modelFactory, transportFactory, signalManager, connectionLog, storage, lockKey, callbacks, }?: ClientServicesHostParams);
46
51
  get isOpen(): boolean;
47
52
  get serviceRegistry(): ServiceRegistry<ClientServices>;
48
53
  get descriptors(): import("@dxos/rpc").ServiceBundle<ClientServices>;
@@ -1 +1 @@
1
- {"version":3,"file":"service-host.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/service-host.ts"],"names":[],"mappings":"AAOA,OAAO,EAAuB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAKtC,OAAO,EAAE,aAAa,EAA0B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAgD,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGvG,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAatD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,eAAO,MAAM,yBAAyB,oBAErC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAe;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkC;IACnE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoB;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IAErD,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,cAAc,CAAC,CAAgB;IACvC,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,CAAU;IAE3B,eAAe,EAAG,cAAc,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAS;gBAEV,EACV,MAAM,EACN,YAA0C,EAE1C,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,OAAO,EAEP,OAAO,GACR,GAAE,wBAA6B;IAgDhC,IAAI,MAAM,YAET;IAED,IAAI,eAAe,oCAElB;IAED,IAAI,WAAW,sDAEd;IAED,IAAI,QAAQ,4BAEX;IAED;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,EAAE,iBAAiB;IA8B9C,IAAI;IA0EJ,KAAK;IAeL,KAAK;CAUZ"}
1
+ {"version":3,"file":"service-host.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/service-host.ts"],"names":[],"mappings":"AAOA,OAAO,EAAuB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAKtC,OAAO,EAAE,aAAa,EAA0B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAgD,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGvG,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAatD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,eAAO,MAAM,yBAAyB,oBAErC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,2BAA2B,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAe;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkC;IACnE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoB;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IAErD,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,cAAc,CAAC,CAAgB;IACvC,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,CAAU;IAC3B,OAAO,CAAC,UAAU,CAAC,CAA8B;IAEjD,eAAe,EAAG,cAAc,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAS;gBAEV,EACV,MAAM,EACN,YAA0C,EAE1C,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,OAAO,EAEP,OAAO,EACP,SAAS,GACV,GAAE,wBAA6B;IAiDhC,IAAI,MAAM,YAET;IAED,IAAI,eAAe,oCAElB;IAED,IAAI,WAAW,sDAEd;IAED,IAAI,QAAQ,4BAEX;IAED;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,EAAE,iBAAiB;IA8B9C,IAAI;IA0EJ,KAAK;IAeL,KAAK;CAWZ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/client-services",
3
- "version": "0.1.53-main.528b72b",
3
+ "version": "0.1.53-main.52ca4e9",
4
4
  "description": "DXOS client services implementation",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -22,40 +22,40 @@
22
22
  ],
23
23
  "dependencies": {
24
24
  "tiny-invariant": "^1.3.1",
25
- "@dxos/async": "0.1.53-main.528b72b",
26
- "@dxos/client-protocol": "0.1.53-main.528b72b",
27
- "@dxos/codec-protobuf": "0.1.53-main.528b72b",
28
- "@dxos/config": "0.1.53-main.528b72b",
29
- "@dxos/context": "0.1.53-main.528b72b",
30
- "@dxos/credentials": "0.1.53-main.528b72b",
31
- "@dxos/crypto": "0.1.53-main.528b72b",
32
- "@dxos/debug": "0.1.53-main.528b72b",
33
- "@dxos/document-model": "0.1.53-main.528b72b",
34
- "@dxos/echo-db": "0.1.53-main.528b72b",
35
- "@dxos/echo-pipeline": "0.1.53-main.528b72b",
36
- "@dxos/errors": "0.1.53-main.528b72b",
37
- "@dxos/feed-store": "0.1.53-main.528b72b",
38
- "@dxos/keyring": "0.1.53-main.528b72b",
39
- "@dxos/keys": "0.1.53-main.528b72b",
40
- "@dxos/lock-file": "0.1.53-main.528b72b",
41
- "@dxos/log": "0.1.53-main.528b72b",
42
- "@dxos/messaging": "0.1.53-main.528b72b",
43
- "@dxos/model-factory": "0.1.53-main.528b72b",
44
- "@dxos/network-manager": "0.1.53-main.528b72b",
45
- "@dxos/node-std": "0.1.53-main.528b72b",
46
- "@dxos/protocols": "0.1.53-main.528b72b",
47
- "@dxos/random-access-storage": "0.1.53-main.528b72b",
48
- "@dxos/rpc": "0.1.53-main.528b72b",
49
- "@dxos/teleport": "0.1.53-main.528b72b",
50
- "@dxos/teleport-extension-gossip": "0.1.53-main.528b72b",
51
- "@dxos/teleport-extension-object-sync": "0.1.53-main.528b72b",
52
- "@dxos/text-model": "0.1.53-main.528b72b",
53
- "@dxos/timeframe": "0.1.53-main.528b72b",
54
- "@dxos/util": "0.1.53-main.528b72b"
25
+ "@dxos/async": "0.1.53-main.52ca4e9",
26
+ "@dxos/client-protocol": "0.1.53-main.52ca4e9",
27
+ "@dxos/codec-protobuf": "0.1.53-main.52ca4e9",
28
+ "@dxos/config": "0.1.53-main.52ca4e9",
29
+ "@dxos/context": "0.1.53-main.52ca4e9",
30
+ "@dxos/credentials": "0.1.53-main.52ca4e9",
31
+ "@dxos/crypto": "0.1.53-main.52ca4e9",
32
+ "@dxos/debug": "0.1.53-main.52ca4e9",
33
+ "@dxos/document-model": "0.1.53-main.52ca4e9",
34
+ "@dxos/echo-db": "0.1.53-main.52ca4e9",
35
+ "@dxos/echo-pipeline": "0.1.53-main.52ca4e9",
36
+ "@dxos/errors": "0.1.53-main.52ca4e9",
37
+ "@dxos/feed-store": "0.1.53-main.52ca4e9",
38
+ "@dxos/keyring": "0.1.53-main.52ca4e9",
39
+ "@dxos/keys": "0.1.53-main.52ca4e9",
40
+ "@dxos/lock-file": "0.1.53-main.52ca4e9",
41
+ "@dxos/log": "0.1.53-main.52ca4e9",
42
+ "@dxos/messaging": "0.1.53-main.52ca4e9",
43
+ "@dxos/model-factory": "0.1.53-main.52ca4e9",
44
+ "@dxos/network-manager": "0.1.53-main.52ca4e9",
45
+ "@dxos/node-std": "0.1.53-main.52ca4e9",
46
+ "@dxos/protocols": "0.1.53-main.52ca4e9",
47
+ "@dxos/random-access-storage": "0.1.53-main.52ca4e9",
48
+ "@dxos/rpc": "0.1.53-main.52ca4e9",
49
+ "@dxos/teleport": "0.1.53-main.52ca4e9",
50
+ "@dxos/teleport-extension-gossip": "0.1.53-main.52ca4e9",
51
+ "@dxos/teleport-extension-object-sync": "0.1.53-main.52ca4e9",
52
+ "@dxos/text-model": "0.1.53-main.52ca4e9",
53
+ "@dxos/timeframe": "0.1.53-main.52ca4e9",
54
+ "@dxos/util": "0.1.53-main.52ca4e9"
55
55
  },
56
56
  "devDependencies": {
57
57
  "@types/readable-stream": "^2.3.9",
58
- "@dxos/signal": "0.1.53-main.528b72b"
58
+ "@dxos/signal": "0.1.53-main.52ca4e9"
59
59
  },
60
60
  "publishConfig": {
61
61
  "access": "public"
@@ -2,19 +2,32 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { expect } from 'chai';
5
+ import chai, { expect } from 'chai';
6
+ import chaiAsPromised from 'chai-as-promised';
7
+ import { rmSync } from 'node:fs';
6
8
 
7
- import { latch, Trigger } from '@dxos/async';
9
+ import { asyncTimeout, latch, Trigger } from '@dxos/async';
8
10
  import { Config } from '@dxos/config';
9
11
  import { verifyPresentation } from '@dxos/credentials';
10
12
  import { PublicKey } from '@dxos/keys';
11
13
  import { MemorySignalManagerContext } from '@dxos/messaging';
14
+ import { Identity } from '@dxos/protocols/proto/dxos/client/services';
12
15
  import { Credential } from '@dxos/protocols/proto/dxos/halo/credentials';
13
16
  import { afterTest, describe, test } from '@dxos/test';
17
+ import { isNode } from '@dxos/util';
14
18
 
15
19
  import { createMockCredential, createServiceHost } from '../testing';
16
20
 
21
+ chai.use(chaiAsPromised);
22
+
17
23
  describe('ClientServicesHost', () => {
24
+ const persistentStoragePath = '/tmp/dxos/client-services/service-host/storage';
25
+
26
+ afterEach(async () => {
27
+ // Clean up.
28
+ isNode() && rmSync(persistentStoragePath, { recursive: true, force: true });
29
+ });
30
+
18
31
  test('queryCredentials', async () => {
19
32
  const host = createServiceHost(new Config(), new MemorySignalManagerContext());
20
33
  await host.open();
@@ -97,4 +110,39 @@ describe('ClientServicesHost', () => {
97
110
  kind: 'pass',
98
111
  });
99
112
  });
113
+
114
+ test('storage reset', async () => {
115
+ const config = new Config({
116
+ runtime: { client: { storage: { persistent: true, path: persistentStoragePath } } },
117
+ });
118
+ {
119
+ const host = createServiceHost(config, new MemorySignalManagerContext());
120
+ await host.open();
121
+
122
+ await host.services.IdentityService?.createIdentity({});
123
+
124
+ expect(host._serviceContext.storage.size).to.exist;
125
+
126
+ await asyncTimeout(host.reset(), 1000);
127
+ await host.close();
128
+ }
129
+
130
+ {
131
+ const host = createServiceHost(config, new MemorySignalManagerContext());
132
+ await host.open();
133
+ const trigger = new Trigger<Identity>();
134
+
135
+ const stream = host.services.IdentityService?.queryIdentity();
136
+ await stream?.waitUntilReady();
137
+
138
+ stream?.subscribe((identity) => {
139
+ if (identity.identity) {
140
+ trigger.wake(identity.identity);
141
+ }
142
+ });
143
+ await expect(asyncTimeout(trigger.wait(), 200)).to.be.rejectedWith();
144
+ stream?.close();
145
+ await host.close();
146
+ }
147
+ }).onlyEnvironments('nodejs', 'chromium', 'firefox');
100
148
  });
@@ -48,6 +48,11 @@ export type ClientServicesHostParams = {
48
48
  connectionLog?: boolean;
49
49
  storage?: Storage;
50
50
  lockKey?: string;
51
+ callbacks?: ClientServicesHostCallbacks;
52
+ };
53
+
54
+ export type ClientServicesHostCallbacks = {
55
+ onReset?: () => Promise<void>;
51
56
  };
52
57
 
53
58
  export type InitializeOptions = {
@@ -72,6 +77,7 @@ export class ClientServicesHost {
72
77
  private _signalManager?: SignalManager;
73
78
  private _networkManager?: NetworkManager;
74
79
  private _storage?: Storage;
80
+ private _callbacks?: ClientServicesHostCallbacks;
75
81
 
76
82
  _serviceContext!: ServiceContext;
77
83
  private _opening = false;
@@ -87,9 +93,11 @@ export class ClientServicesHost {
87
93
  storage,
88
94
  // TODO(wittjosiah): Turn this on by default.
89
95
  lockKey,
96
+ callbacks,
90
97
  }: ClientServicesHostParams = {}) {
91
98
  this._storage = storage;
92
99
  this._modelFactory = modelFactory;
100
+ this._callbacks = callbacks;
93
101
 
94
102
  if (config) {
95
103
  this.initialize({ config, transportFactory, signalManager });
@@ -284,5 +292,6 @@ export class ClientServicesHost {
284
292
  await this._storage!.reset();
285
293
  log('reset');
286
294
  log.trace('dxos.sdk.client-services-host.reset', trace.end({ id: traceId }));
295
+ await this._callbacks?.onReset?.();
287
296
  }
288
297
  }
@@ -37,7 +37,7 @@ export class WorkerRuntime {
37
37
  constructor(
38
38
  private readonly _configProvider: () => MaybePromise<Config>
39
39
  ) {
40
- this._clientServices = new ClientServicesHost();
40
+ this._clientServices = new ClientServicesHost({ callbacks: { onReset: async () => { self.close(); } } });
41
41
  }
42
42
 
43
43
  get host() {