@dxos/client-services 0.5.8 → 0.5.9-main.079a532

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.
Files changed (90) hide show
  1. package/dist/lib/browser/{chunk-JECXTGZA.mjs → chunk-QZ5LNV55.mjs} +1781 -1480
  2. package/dist/lib/browser/chunk-QZ5LNV55.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +55 -365
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/packlets/testing/index.mjs +14 -14
  7. package/dist/lib/browser/packlets/testing/index.mjs.map +3 -3
  8. package/dist/lib/node/{chunk-OR7LRWDY.cjs → chunk-V7UMWFUS.cjs} +2055 -1761
  9. package/dist/lib/node/chunk-V7UMWFUS.cjs.map +7 -0
  10. package/dist/lib/node/index.cjs +92 -397
  11. package/dist/lib/node/index.cjs.map +4 -4
  12. package/dist/lib/node/meta.json +1 -1
  13. package/dist/lib/node/packlets/testing/index.cjs +19 -19
  14. package/dist/lib/node/packlets/testing/index.cjs.map +3 -3
  15. package/dist/types/src/index.d.ts +3 -3
  16. package/dist/types/src/index.d.ts.map +1 -1
  17. package/dist/types/src/packlets/devtools/network.d.ts +4 -4
  18. package/dist/types/src/packlets/devtools/network.d.ts.map +1 -1
  19. package/dist/types/src/packlets/identity/default-space-state-machine.d.ts +19 -0
  20. package/dist/types/src/packlets/identity/default-space-state-machine.d.ts.map +1 -0
  21. package/dist/types/src/packlets/identity/identity-service.d.ts +14 -7
  22. package/dist/types/src/packlets/identity/identity-service.d.ts.map +1 -1
  23. package/dist/types/src/packlets/identity/identity.d.ts +4 -1
  24. package/dist/types/src/packlets/identity/identity.d.ts.map +1 -1
  25. package/dist/types/src/packlets/network/network-service.d.ts +2 -2
  26. package/dist/types/src/packlets/network/network-service.d.ts.map +1 -1
  27. package/dist/types/src/packlets/services/service-context.d.ts +4 -5
  28. package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
  29. package/dist/types/src/packlets/services/service-host.d.ts +1 -1
  30. package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
  31. package/dist/types/src/packlets/spaces/automerge-space-state.d.ts +4 -1
  32. package/dist/types/src/packlets/spaces/automerge-space-state.d.ts.map +1 -1
  33. package/dist/types/src/packlets/spaces/data-space-manager.d.ts +5 -3
  34. package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
  35. package/dist/types/src/packlets/spaces/data-space.d.ts +11 -9
  36. package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
  37. package/dist/types/src/packlets/spaces/epoch-migrations.d.ts +23 -0
  38. package/dist/types/src/packlets/spaces/epoch-migrations.d.ts.map +1 -0
  39. package/dist/types/src/packlets/spaces/spaces-service.d.ts +2 -2
  40. package/dist/types/src/packlets/spaces/spaces-service.d.ts.map +1 -1
  41. package/dist/types/src/packlets/testing/test-builder.d.ts +11 -9
  42. package/dist/types/src/packlets/testing/test-builder.d.ts.map +1 -1
  43. package/dist/types/src/packlets/worker/index.d.ts +3 -0
  44. package/dist/types/src/packlets/worker/index.d.ts.map +1 -0
  45. package/dist/types/src/packlets/worker/worker-runtime.d.ts.map +1 -0
  46. package/dist/types/src/packlets/worker/worker-session.d.ts.map +1 -0
  47. package/dist/types/src/version.d.ts +1 -1
  48. package/dist/types/src/version.d.ts.map +1 -1
  49. package/package.json +36 -36
  50. package/src/index.ts +3 -3
  51. package/src/packlets/devtools/network.ts +4 -4
  52. package/src/packlets/identity/default-space-state-machine.ts +44 -0
  53. package/src/packlets/identity/identity-manager.test.ts +2 -2
  54. package/src/packlets/identity/identity-service.test.ts +35 -5
  55. package/src/packlets/identity/identity-service.ts +55 -8
  56. package/src/packlets/identity/identity.test.ts +8 -4
  57. package/src/packlets/identity/identity.ts +25 -2
  58. package/src/packlets/invitations/invitations-handler.ts +2 -2
  59. package/src/packlets/network/network-service.ts +2 -2
  60. package/src/packlets/services/service-context.ts +4 -7
  61. package/src/packlets/services/service-host.ts +16 -44
  62. package/src/packlets/spaces/automerge-space-state.ts +11 -2
  63. package/src/packlets/spaces/data-space-manager.test.ts +46 -1
  64. package/src/packlets/spaces/data-space-manager.ts +81 -31
  65. package/src/packlets/spaces/data-space.ts +89 -132
  66. package/src/packlets/spaces/epoch-migrations.ts +135 -0
  67. package/src/packlets/spaces/spaces-service.ts +5 -2
  68. package/src/packlets/testing/test-builder.ts +16 -14
  69. package/src/packlets/worker/index.ts +6 -0
  70. package/src/version.ts +1 -5
  71. package/dist/lib/browser/chunk-JECXTGZA.mjs.map +0 -7
  72. package/dist/lib/node/chunk-OR7LRWDY.cjs.map +0 -7
  73. package/dist/types/src/packlets/vault/iframe-host-runtime.d.ts +0 -37
  74. package/dist/types/src/packlets/vault/iframe-host-runtime.d.ts.map +0 -1
  75. package/dist/types/src/packlets/vault/index.d.ts +0 -6
  76. package/dist/types/src/packlets/vault/index.d.ts.map +0 -1
  77. package/dist/types/src/packlets/vault/shared-worker-connection.d.ts +0 -36
  78. package/dist/types/src/packlets/vault/shared-worker-connection.d.ts.map +0 -1
  79. package/dist/types/src/packlets/vault/shell-runtime.d.ts +0 -33
  80. package/dist/types/src/packlets/vault/shell-runtime.d.ts.map +0 -1
  81. package/dist/types/src/packlets/vault/worker-runtime.d.ts.map +0 -1
  82. package/dist/types/src/packlets/vault/worker-session.d.ts.map +0 -1
  83. package/src/packlets/vault/iframe-host-runtime.ts +0 -130
  84. package/src/packlets/vault/index.ts +0 -9
  85. package/src/packlets/vault/shared-worker-connection.ts +0 -115
  86. package/src/packlets/vault/shell-runtime.ts +0 -111
  87. /package/dist/types/src/packlets/{vault → worker}/worker-runtime.d.ts +0 -0
  88. /package/dist/types/src/packlets/{vault → worker}/worker-session.d.ts +0 -0
  89. /package/src/packlets/{vault → worker}/worker-runtime.ts +0 -0
  90. /package/src/packlets/{vault → worker}/worker-session.ts +0 -0
@@ -1,14 +1,14 @@
1
1
  import { Event } from '@dxos/async';
2
- import { type EchoHost } from '@dxos/echo-db';
2
+ import type { SpecificCredential } from '@dxos/credentials';
3
+ import { type EchoHost, type DatabaseRoot } from '@dxos/echo-db';
3
4
  import { type MetadataStore, type Space } from '@dxos/echo-pipeline';
4
- import { type ObjectStructure, type SpaceDoc } from '@dxos/echo-protocol';
5
5
  import { type FeedStore } from '@dxos/feed-store';
6
6
  import { type Keyring } from '@dxos/keyring';
7
7
  import { PublicKey } from '@dxos/keys';
8
- import { CreateEpochRequest, SpaceState, type Space as SpaceProto } from '@dxos/protocols/proto/dxos/client/services';
8
+ import { type CreateEpochRequest, SpaceState, type Space as SpaceProto } from '@dxos/protocols/proto/dxos/client/services';
9
9
  import { type FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
10
10
  import { type SpaceCache } from '@dxos/protocols/proto/dxos/echo/metadata';
11
- import { type ProfileDocument } from '@dxos/protocols/proto/dxos/halo/credentials';
11
+ import { type Epoch, type ProfileDocument } from '@dxos/protocols/proto/dxos/halo/credentials';
12
12
  import { type GossipMessage } from '@dxos/protocols/proto/dxos/mesh/teleport/gossip';
13
13
  import { type Gossip, type Presence } from '@dxos/teleport-extension-gossip';
14
14
  import { AutomergeSpaceState } from './automerge-space-state';
@@ -44,6 +44,7 @@ export type DataSpaceParams = {
44
44
  };
45
45
  export type CreateEpochOptions = {
46
46
  migration?: CreateEpochRequest.Migration;
47
+ newAutomergeRoot?: string;
47
48
  };
48
49
  export declare class DataSpace {
49
50
  private _ctx;
@@ -59,7 +60,9 @@ export declare class DataSpace {
59
60
  private readonly _cache?;
60
61
  private readonly _echoHost;
61
62
  private readonly _automergeSpaceState;
63
+ private readonly _epochProcessingMutex;
62
64
  private _state;
65
+ private _databaseRoot;
63
66
  /**
64
67
  * Error for _state === SpaceState.ERROR.
65
68
  */
@@ -68,6 +71,7 @@ export declare class DataSpace {
68
71
  readonly stateUpdate: Event<void>;
69
72
  metrics: SpaceProto.Metrics;
70
73
  constructor(params: DataSpaceParams);
74
+ get id(): import("@dxos/keys").SpaceId;
71
75
  get key(): PublicKey;
72
76
  get isOpen(): boolean;
73
77
  get state(): SpaceState;
@@ -76,6 +80,7 @@ export declare class DataSpace {
76
80
  get notarizationPlugin(): NotarizationPlugin;
77
81
  get cache(): SpaceCache | undefined;
78
82
  get automergeSpaceState(): AutomergeSpaceState;
83
+ get databaseRoot(): DatabaseRoot | null;
79
84
  private get _automergeInfo();
80
85
  open(): Promise<void>;
81
86
  private _open;
@@ -90,16 +95,13 @@ export declare class DataSpace {
90
95
  */
91
96
  initializeDataPipelineAsync(): void;
92
97
  initializeDataPipeline(): Promise<void>;
98
+ private _enterReadyState;
93
99
  private _initializeAndReadControlPipeline;
94
100
  private _createWritableFeeds;
95
101
  private _onNewAutomergeRoot;
96
102
  updateOwnProfile(profile: ProfileDocument): Promise<void>;
97
- createEpoch(options?: CreateEpochOptions): Promise<void>;
103
+ createEpoch(options?: CreateEpochOptions): Promise<SpecificCredential<Epoch> | null>;
98
104
  activate(): Promise<void>;
99
105
  deactivate(): Promise<void>;
100
106
  }
101
- /**
102
- * Assumes properties are at root.
103
- */
104
- export declare const findPropertiesObject: (spaceDoc: SpaceDoc) => [string, ObjectStructure] | undefined;
105
107
  //# sourceMappingURL=data-space.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-space.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/data-space.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-space.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/data-space.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { Repo } from '@dxos/automerge/automerge-repo';
2
+ import { type Context } from '@dxos/context';
3
+ import type { PublicKey, SpaceId } from '@dxos/keys';
4
+ import { CreateEpochRequest } from '@dxos/protocols/proto/dxos/client/services';
5
+ export type MigrationContext = {
6
+ repo: Repo;
7
+ spaceId: SpaceId;
8
+ /**
9
+ * @deprecated Remove.
10
+ */
11
+ spaceKey: PublicKey;
12
+ migration: CreateEpochRequest.Migration;
13
+ currentRoot: string | null;
14
+ /**
15
+ * For set automerge root migration type.
16
+ */
17
+ newAutomergeRoot?: string;
18
+ };
19
+ export type MigrationResult = {
20
+ newRoot?: string;
21
+ };
22
+ export declare const runEpochMigration: (ctx: Context, context: MigrationContext) => Promise<MigrationResult>;
23
+ //# sourceMappingURL=epoch-migrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"epoch-migrations.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/epoch-migrations.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAgB,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAqB,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAWhE,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAGhF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC;IACxC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAe,OAAO,WAAW,gBAAgB,KAAG,QAAQ,eAAe,CA2FxG,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { Stream } from '@dxos/codec-protobuf';
2
2
  import { type SpaceManager } from '@dxos/echo-pipeline';
3
- import { type CreateEpochRequest, type PostMessageRequest, type QueryCredentialsRequest, type QuerySpacesResponse, type Space, type SpacesService, type SubscribeMessagesRequest, type UpdateSpaceRequest, type WriteCredentialsRequest, type UpdateMemberRoleRequest } from '@dxos/protocols/proto/dxos/client/services';
3
+ import { type CreateEpochRequest, type PostMessageRequest, type QueryCredentialsRequest, type QuerySpacesResponse, type Space, type SpacesService, type SubscribeMessagesRequest, type UpdateSpaceRequest, type WriteCredentialsRequest, type UpdateMemberRoleRequest, type CreateEpochResponse } from '@dxos/protocols/proto/dxos/client/services';
4
4
  import { type Credential } from '@dxos/protocols/proto/dxos/halo/credentials';
5
5
  import { type GossipMessage } from '@dxos/protocols/proto/dxos/mesh/teleport/gossip';
6
6
  import { type Provider } from '@dxos/util';
@@ -19,7 +19,7 @@ export declare class SpacesServiceImpl implements SpacesService {
19
19
  subscribeMessages({ spaceKey, channel }: SubscribeMessagesRequest): Stream<GossipMessage>;
20
20
  queryCredentials({ spaceKey, noTail }: QueryCredentialsRequest): Stream<Credential>;
21
21
  writeCredentials({ spaceKey, credentials }: WriteCredentialsRequest): Promise<void>;
22
- createEpoch({ spaceKey, migration }: CreateEpochRequest): Promise<void>;
22
+ createEpoch({ spaceKey, migration, automergeRootUrl }: CreateEpochRequest): Promise<CreateEpochResponse>;
23
23
  private _serializeSpace;
24
24
  private _requireIdentity;
25
25
  private _updateMetrics;
@@ -1 +1 @@
1
- {"version":3,"file":"spaces-service.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/spaces-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAWxD,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,KAAK,EACV,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC7B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAErF,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,qBAAa,iBAAkB,YAAW,aAAa;IAEnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,oBAAoB;gBAFpB,gBAAgB,EAAE,eAAe,EACjC,aAAa,EAAE,YAAY,EAC3B,oBAAoB,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAGtE,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;IAQ7B,WAAW,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,kBAAkB;IAmBnD,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BvE,WAAW,IAAI,MAAM,CAAC,mBAAmB,CAAC;IAmDpC,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,kBAAkB;IAMpE,iBAAiB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,wBAAwB;IAajE,gBAAgB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,uBAAuB,GAAG,MAAM,CAAC,UAAU,CAAC;IAmB7E,gBAAgB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,uBAAuB;IAmBnE,WAAW,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,kBAAkB;IAM7D,OAAO,CAAC,eAAe;IA4CvB,OAAO,CAAC,gBAAgB;YASV,cAAc;CAS7B"}
1
+ {"version":3,"file":"spaces-service.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/spaces-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAWxD,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,KAAK,EACV,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACzB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAErF,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,qBAAa,iBAAkB,YAAW,aAAa;IAEnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,oBAAoB;gBAFpB,gBAAgB,EAAE,eAAe,EACjC,aAAa,EAAE,YAAY,EAC3B,oBAAoB,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAGtE,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;IAQ7B,WAAW,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,kBAAkB;IAmBnD,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BvE,WAAW,IAAI,MAAM,CAAC,mBAAmB,CAAC;IAmDpC,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,kBAAkB;IAMpE,iBAAiB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,wBAAwB;IAajE,gBAAgB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,uBAAuB,GAAG,MAAM,CAAC,UAAU,CAAC;IAmB7E,gBAAgB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,uBAAuB;IAmBnE,WAAW,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAO9G,OAAO,CAAC,eAAe;IA6CvB,OAAO,CAAC,gBAAgB;YASV,cAAc;CAS7B"}
@@ -5,16 +5,17 @@ import { FeedStore } from '@dxos/feed-store';
5
5
  import { Keyring } from '@dxos/keyring';
6
6
  import { type LevelDB } from '@dxos/kv-store';
7
7
  import { MemorySignalManagerContext } from '@dxos/messaging';
8
- import { NetworkManager } from '@dxos/network-manager';
8
+ import { SwarmNetworkManager } from '@dxos/network-manager';
9
9
  import { StorageType, type Storage } from '@dxos/random-access-storage';
10
10
  import { BlobStore } from '@dxos/teleport-extension-object-sync';
11
11
  import { InvitationsManager } from '../invitations';
12
- import { ClientServicesHost, ServiceContext } from '../services';
13
- import { DataSpaceManager, type SigningContext } from '../spaces';
12
+ import { ClientServicesHost, ServiceContext, type ServiceContextRuntimeParams } from '../services';
13
+ import { DataSpaceManager, type DataSpaceManagerRuntimeParams, type SigningContext } from '../spaces';
14
14
  export declare const createServiceHost: (config: Config, signalManagerContext: MemorySignalManagerContext) => ClientServicesHost;
15
- export declare const createServiceContext: ({ signalContext, storage, }?: {
15
+ export declare const createServiceContext: ({ signalContext, storage, runtimeParams, }?: {
16
16
  signalContext?: MemorySignalManagerContext;
17
17
  storage?: Storage;
18
+ runtimeParams?: ServiceContextRuntimeParams;
18
19
  }) => Promise<ServiceContext>;
19
20
  export declare const createPeers: (numPeers: number) => Promise<ServiceContext[]>;
20
21
  export declare const createIdentity: (peer: ServiceContext) => Promise<ServiceContext>;
@@ -26,6 +27,7 @@ export declare class TestBuilder {
26
27
  }
27
28
  export type TestPeerOpts = {
28
29
  dataStore?: StorageType;
30
+ dataSpaceParams?: DataSpaceManagerRuntimeParams;
29
31
  };
30
32
  export type TestPeerProps = {
31
33
  storage?: Storage;
@@ -33,7 +35,7 @@ export type TestPeerProps = {
33
35
  feedStore?: FeedStore<any>;
34
36
  metadataStore?: MetadataStore;
35
37
  keyring?: Keyring;
36
- networkManager?: NetworkManager;
38
+ networkManager?: SwarmNetworkManager;
37
39
  spaceManager?: SpaceManager;
38
40
  dataSpaceManager?: DataSpaceManager;
39
41
  snapshotStore?: SnapshotStore;
@@ -43,10 +45,10 @@ export type TestPeerProps = {
43
45
  invitationsManager?: InvitationsManager;
44
46
  };
45
47
  export declare class TestPeer {
46
- private readonly signalContext;
47
- private readonly opts;
48
+ private readonly _signalContext;
49
+ private readonly _opts;
48
50
  private _props;
49
- constructor(signalContext: MemorySignalManagerContext, opts?: TestPeerOpts);
51
+ constructor(_signalContext: MemorySignalManagerContext, _opts?: TestPeerOpts);
50
52
  get props(): TestPeerProps;
51
53
  get storage(): Storage;
52
54
  get keyring(): Keyring;
@@ -55,7 +57,7 @@ export declare class TestPeer {
55
57
  get metadataStore(): MetadataStore;
56
58
  get blobStore(): BlobStore;
57
59
  get snapshotStore(): SnapshotStore;
58
- get networkManager(): NetworkManager;
60
+ get networkManager(): SwarmNetworkManager;
59
61
  get spaceManager(): SpaceManager;
60
62
  get identity(): SigningContext;
61
63
  get echoHost(): EchoHost;
@@ -1 +1 @@
1
- {"version":3,"file":"test-builder.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/testing/test-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-builder.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/testing/test-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './worker-runtime';
2
+ export * from './worker-session';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/worker/index.ts"],"names":[],"mappings":"AAIA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-runtime.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/worker/worker-runtime.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAW3C,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,qBAAa,aAAa;IAatB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAZlC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAa;IAC1C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyC;IAC3E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;IACtD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsB;IACtD,OAAO,CAAC,qBAAqB,CAAC,CAAgB;IAC9C,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,uBAAuB,CAAkB;gBAG9B,eAAe,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC,EAC5D,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,sBAAsB;IAW/D,IAAI,IAAI,uBAEP;IAEK,KAAK;IA8BL,IAAI;IAMV;;OAEG;IACG,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAsC3E;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAoBzB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-session.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/worker/worker-session.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,OAAO,EAAE,MAAM,aAAa,CAAC;AASpD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAyC,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAqB,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,KAAK,kBAAkB,EAA+C,MAAM,aAAa,CAAC;AAEnG,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,kBAAkB,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IAEjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAC/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAElD,SAAgB,OAAO,iBAAsB,QAAQ,IAAI,CAAC,EAAI;IAGvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAGjC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,aAAa,CAAC,EAAE,aAAa,CAAC;gBAEzB,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,mBAAmB;IAoEvF,IAAI;IAeJ,KAAK;YAYG,eAAe;IAQ7B,OAAO,CAAC,kBAAkB;CAO3B"}
@@ -1,2 +1,2 @@
1
- export declare const DXOS_VERSION = "0.5.8";
1
+ export declare const DXOS_VERSION = "0.5.9-main.079a532";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/version.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY,UAAU,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,uBAAuB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/client-services",
3
- "version": "0.5.8",
3
+ "version": "0.5.9-main.079a532",
4
4
  "description": "DXOS client services implementation",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -23,45 +23,45 @@
23
23
  ],
24
24
  "dependencies": {
25
25
  "platform": "^1.3.6",
26
- "@dxos/automerge": "0.5.8",
27
- "@dxos/async": "0.5.8",
28
- "@dxos/codec-protobuf": "0.5.8",
29
- "@dxos/client-protocol": "0.5.8",
30
- "@dxos/config": "0.5.8",
31
- "@dxos/context": "0.5.8",
32
- "@dxos/crypto": "0.5.8",
33
- "@dxos/debug": "0.5.8",
34
- "@dxos/credentials": "0.5.8",
35
- "@dxos/echo-db": "0.5.8",
36
- "@dxos/echo-pipeline": "0.5.8",
37
- "@dxos/echo-protocol": "0.5.8",
38
- "@dxos/feed-store": "0.5.8",
39
- "@dxos/echo-schema": "0.5.8",
40
- "@dxos/indexing": "0.5.8",
41
- "@dxos/invariant": "0.5.8",
42
- "@dxos/keyring": "0.5.8",
43
- "@dxos/keys": "0.5.8",
44
- "@dxos/lock-file": "0.5.8",
45
- "@dxos/kv-store": "0.5.8",
46
- "@dxos/log": "0.5.8",
47
- "@dxos/messaging": "0.5.8",
48
- "@dxos/network-manager": "0.5.8",
49
- "@dxos/protocols": "0.5.8",
50
- "@dxos/node-std": "0.5.8",
51
- "@dxos/random-access-storage": "0.5.8",
52
- "@dxos/rpc": "0.5.8",
53
- "@dxos/teleport": "0.5.8",
54
- "@dxos/teleport-extension-gossip": "0.5.8",
55
- "@dxos/tracing": "0.5.8",
56
- "@dxos/timeframe": "0.5.8",
57
- "@dxos/util": "0.5.8",
58
- "@dxos/websocket-rpc": "0.5.8",
59
- "@dxos/teleport-extension-object-sync": "0.5.8"
26
+ "@dxos/async": "0.5.9-main.079a532",
27
+ "@dxos/client-protocol": "0.5.9-main.079a532",
28
+ "@dxos/automerge": "0.5.9-main.079a532",
29
+ "@dxos/codec-protobuf": "0.5.9-main.079a532",
30
+ "@dxos/config": "0.5.9-main.079a532",
31
+ "@dxos/context": "0.5.9-main.079a532",
32
+ "@dxos/credentials": "0.5.9-main.079a532",
33
+ "@dxos/crypto": "0.5.9-main.079a532",
34
+ "@dxos/debug": "0.5.9-main.079a532",
35
+ "@dxos/echo-pipeline": "0.5.9-main.079a532",
36
+ "@dxos/echo-db": "0.5.9-main.079a532",
37
+ "@dxos/echo-protocol": "0.5.9-main.079a532",
38
+ "@dxos/echo-schema": "0.5.9-main.079a532",
39
+ "@dxos/indexing": "0.5.9-main.079a532",
40
+ "@dxos/feed-store": "0.5.9-main.079a532",
41
+ "@dxos/invariant": "0.5.9-main.079a532",
42
+ "@dxos/keyring": "0.5.9-main.079a532",
43
+ "@dxos/keys": "0.5.9-main.079a532",
44
+ "@dxos/kv-store": "0.5.9-main.079a532",
45
+ "@dxos/lock-file": "0.5.9-main.079a532",
46
+ "@dxos/log": "0.5.9-main.079a532",
47
+ "@dxos/messaging": "0.5.9-main.079a532",
48
+ "@dxos/network-manager": "0.5.9-main.079a532",
49
+ "@dxos/node-std": "0.5.9-main.079a532",
50
+ "@dxos/protocols": "0.5.9-main.079a532",
51
+ "@dxos/random-access-storage": "0.5.9-main.079a532",
52
+ "@dxos/rpc": "0.5.9-main.079a532",
53
+ "@dxos/teleport": "0.5.9-main.079a532",
54
+ "@dxos/teleport-extension-gossip": "0.5.9-main.079a532",
55
+ "@dxos/teleport-extension-object-sync": "0.5.9-main.079a532",
56
+ "@dxos/timeframe": "0.5.9-main.079a532",
57
+ "@dxos/tracing": "0.5.9-main.079a532",
58
+ "@dxos/util": "0.5.9-main.079a532",
59
+ "@dxos/websocket-rpc": "0.5.9-main.079a532"
60
60
  },
61
61
  "devDependencies": {
62
62
  "@types/platform": "^1.3.4",
63
63
  "@types/readable-stream": "^2.3.9",
64
- "@dxos/signal": "0.5.8"
64
+ "@dxos/signal": "0.5.9-main.079a532"
65
65
  },
66
66
  "publishConfig": {
67
67
  "access": "public"
package/src/index.ts CHANGED
@@ -3,11 +3,11 @@
3
3
  //
4
4
 
5
5
  export * from './packlets/devtools';
6
+ export * from './packlets/diagnostics';
6
7
  export * from './packlets/identity';
7
8
  export * from './packlets/invitations';
9
+ export * from './packlets/locks';
8
10
  export * from './packlets/services';
9
11
  export * from './packlets/spaces';
10
12
  export * from './packlets/storage';
11
- export * from './packlets/vault';
12
- export * from './packlets/locks';
13
- export * from './packlets/diagnostics';
13
+ export * from './packlets/worker';
@@ -6,7 +6,7 @@ import { Stream } from '@dxos/codec-protobuf';
6
6
  import { Context } from '@dxos/context';
7
7
  import { PublicKey } from '@dxos/keys';
8
8
  import { type SignalManager } from '@dxos/messaging';
9
- import { type NetworkManager } from '@dxos/network-manager';
9
+ import { type SwarmNetworkManager } from '@dxos/network-manager';
10
10
  import {
11
11
  type GetNetworkPeersRequest,
12
12
  type GetNetworkPeersResponse,
@@ -56,7 +56,7 @@ export const subscribeToSignal = ({ signalManager }: { signalManager: SignalMana
56
56
  };
57
57
  });
58
58
 
59
- export const subscribeToNetworkTopics = ({ networkManager }: { networkManager: NetworkManager }) =>
59
+ export const subscribeToNetworkTopics = ({ networkManager }: { networkManager: SwarmNetworkManager }) =>
60
60
  new Stream<SubscribeToNetworkTopicsResponse>(({ next, close }) => {
61
61
  const update = () => {
62
62
  try {
@@ -75,7 +75,7 @@ export const subscribeToNetworkTopics = ({ networkManager }: { networkManager: N
75
75
  update();
76
76
  });
77
77
 
78
- export const subscribeToSwarmInfo = ({ networkManager }: { networkManager: NetworkManager }) =>
78
+ export const subscribeToSwarmInfo = ({ networkManager }: { networkManager: SwarmNetworkManager }) =>
79
79
  new Stream<SubscribeToSwarmInfoResponse>(({ next }) => {
80
80
  const update = () => {
81
81
  const info = networkManager.connectionLog?.swarms;
@@ -88,7 +88,7 @@ export const subscribeToSwarmInfo = ({ networkManager }: { networkManager: Netwo
88
88
  });
89
89
 
90
90
  export const getNetworkPeers = (
91
- { networkManager }: { networkManager: NetworkManager },
91
+ { networkManager }: { networkManager: SwarmNetworkManager },
92
92
  request: GetNetworkPeersRequest,
93
93
  ): GetNetworkPeersResponse => {
94
94
  if (!request.topic) {
@@ -0,0 +1,44 @@
1
+ //
2
+ // Copyright 2022 DXOS.org
3
+ //
4
+
5
+ import { type CredentialProcessor, getCredentialAssertion } from '@dxos/credentials';
6
+ import { SpaceId, type PublicKey } from '@dxos/keys';
7
+ import { log } from '@dxos/log';
8
+ import { type Credential } from '@dxos/protocols/proto/dxos/halo/credentials';
9
+
10
+ type DefaultSpaceStateMachineParams = {
11
+ identityKey: PublicKey;
12
+ onUpdate?: () => void;
13
+ };
14
+
15
+ /**
16
+ * Processes device invitation credentials.
17
+ */
18
+ export class DefaultSpaceStateMachine implements CredentialProcessor {
19
+ private _spaceId: SpaceId | undefined;
20
+
21
+ constructor(private readonly _params: DefaultSpaceStateMachineParams) {}
22
+
23
+ public get spaceId(): SpaceId | undefined {
24
+ return this._spaceId;
25
+ }
26
+
27
+ async processCredential(credential: Credential) {
28
+ const assertion = getCredentialAssertion(credential);
29
+ switch (assertion['@type']) {
30
+ case 'dxos.halo.credentials.DefaultSpace': {
31
+ if (!credential.subject.id.equals(this._params.identityKey)) {
32
+ log.warn('Invalid default space credential', { expectedIdentity: this._params.identityKey, credential });
33
+ return;
34
+ }
35
+ if (!SpaceId.isValid(assertion.spaceId)) {
36
+ log.warn('Invalid default space id', { id: assertion.spaceId });
37
+ return;
38
+ }
39
+ this._spaceId = assertion.spaceId;
40
+ break;
41
+ }
42
+ }
43
+ }
44
+ }
@@ -9,7 +9,7 @@ import { valueEncoding, MetadataStore, SpaceManager, AuthStatus, SnapshotStore }
9
9
  import { FeedFactory, FeedStore } from '@dxos/feed-store';
10
10
  import { Keyring } from '@dxos/keyring';
11
11
  import { MemorySignalManager, MemorySignalManagerContext } from '@dxos/messaging';
12
- import { MemoryTransportFactory, NetworkManager } from '@dxos/network-manager';
12
+ import { MemoryTransportFactory, SwarmNetworkManager } from '@dxos/network-manager';
13
13
  import type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
14
14
  import { createStorage, type Storage, StorageType } from '@dxos/random-access-storage';
15
15
  import { BlobStore } from '@dxos/teleport-extension-object-sync';
@@ -41,7 +41,7 @@ describe('identity/identity-manager', () => {
41
41
 
42
42
  afterTest(() => feedStore.close());
43
43
 
44
- const networkManager = new NetworkManager({
44
+ const networkManager = new SwarmNetworkManager({
45
45
  signalManager: new MemorySignalManager(signalContext),
46
46
  transportFactory: MemoryTransportFactory,
47
47
  });
@@ -24,11 +24,7 @@ describe('IdentityService', () => {
24
24
  beforeEach(async () => {
25
25
  serviceContext = await createServiceContext();
26
26
  await serviceContext.open(new Context());
27
- identityService = new IdentityServiceImpl(
28
- (options) => serviceContext.createIdentity(options),
29
- serviceContext.identityManager,
30
- serviceContext.keyring,
31
- );
27
+ identityService = createIdentityService(serviceContext);
32
28
  });
33
29
 
34
30
  afterEach(async () => {
@@ -95,3 +91,37 @@ describe('IdentityService', () => {
95
91
  });
96
92
  });
97
93
  });
94
+
95
+ describe('open', () => {
96
+ test('identity without default space fixed', async () => {
97
+ const serviceContext = await createServiceContext();
98
+ await serviceContext.open(new Context());
99
+ const identity = await serviceContext.createIdentity();
100
+ const identityService = createIdentityService(serviceContext);
101
+ const getDataSpaces = () => [...(serviceContext.dataSpaceManager?.spaces?.values() ?? [])];
102
+ expect(getDataSpaces().length).to.eq(0);
103
+ expect(identity.defaultSpaceId).to.be.undefined;
104
+ await identityService.open();
105
+ expect(getDataSpaces()[0].id === identity.defaultSpaceId).to.be.true;
106
+ });
107
+
108
+ test('identity without default space credential fixed', async () => {
109
+ const serviceContext = await createServiceContext();
110
+ await serviceContext.open(new Context());
111
+ const identity = await serviceContext.createIdentity();
112
+ const space = await serviceContext.dataSpaceManager!.createDefaultSpace();
113
+ const identityService = createIdentityService(serviceContext);
114
+ expect(identity.defaultSpaceId).to.be.undefined;
115
+ await identityService.open();
116
+ expect(identity.defaultSpaceId === space.id).to.be.true;
117
+ });
118
+ });
119
+
120
+ const createIdentityService = (serviceContext: ServiceContext) => {
121
+ return new IdentityServiceImpl(
122
+ serviceContext.identityManager,
123
+ serviceContext.keyring,
124
+ () => serviceContext.dataSpaceManager!,
125
+ (options) => serviceContext.createIdentity(options),
126
+ );
127
+ };
@@ -3,36 +3,59 @@
3
3
  //
4
4
 
5
5
  import { Stream } from '@dxos/codec-protobuf';
6
+ import { Resource } from '@dxos/context';
6
7
  import { signPresentation } from '@dxos/credentials';
7
8
  import { todo } from '@dxos/debug';
8
9
  import { invariant } from '@dxos/invariant';
9
10
  import { type Keyring } from '@dxos/keyring';
10
11
  import {
11
12
  type CreateIdentityRequest,
12
- type Identity,
13
+ type Identity as IdentityProto,
13
14
  type IdentityService,
14
15
  type QueryIdentityResponse,
15
16
  type RecoverIdentityRequest,
16
17
  type SignPresentationRequest,
18
+ SpaceState,
17
19
  } from '@dxos/protocols/proto/dxos/client/services';
18
20
  import { type Presentation, type ProfileDocument } from '@dxos/protocols/proto/dxos/halo/credentials';
19
21
 
22
+ import { type Identity } from './identity';
20
23
  import { type CreateIdentityOptions, type IdentityManager } from './identity-manager';
24
+ import { type DataSpaceManager } from '../spaces';
21
25
 
22
- export class IdentityServiceImpl implements IdentityService {
26
+ export class IdentityServiceImpl extends Resource implements IdentityService {
23
27
  constructor(
24
- private readonly _createIdentity: (params: CreateIdentityOptions) => Promise<Identity>,
25
28
  private readonly _identityManager: IdentityManager,
26
29
  private readonly _keyring: Keyring,
30
+ private readonly _dataSpaceManagerProvider: () => DataSpaceManager,
31
+ private readonly _createIdentity: (params: CreateIdentityOptions) => Promise<Identity>,
27
32
  private readonly _onProfileUpdate?: (profile: ProfileDocument | undefined) => Promise<void>,
28
- ) {}
33
+ ) {
34
+ super();
35
+ }
29
36
 
30
- async createIdentity(request: CreateIdentityRequest): Promise<Identity> {
37
+ protected override async _open() {
38
+ const identity = this._identityManager.identity;
39
+ if (identity && !identity.defaultSpaceId) {
40
+ await this._fixIdentityWithoutDefaultSpace(identity);
41
+ }
42
+ }
43
+
44
+ async createIdentity(request: CreateIdentityRequest): Promise<IdentityProto> {
31
45
  await this._createIdentity({ displayName: request.profile?.displayName, deviceProfile: request.deviceProfile });
46
+ const dataSpaceManager = this._dataSpaceManagerProvider();
47
+ await this._createDefaultSpace(dataSpaceManager);
32
48
  return this._getIdentity()!;
33
49
  }
34
50
 
35
- async recoverIdentity(request: RecoverIdentityRequest): Promise<Identity> {
51
+ private async _createDefaultSpace(dataSpaceManager: DataSpaceManager) {
52
+ const space = await dataSpaceManager!.createDefaultSpace();
53
+ const identity = this._identityManager.identity;
54
+ invariant(identity);
55
+ await identity.updateDefaultSpace(space.id);
56
+ }
57
+
58
+ async recoverIdentity(request: RecoverIdentityRequest): Promise<IdentityProto> {
36
59
  return todo();
37
60
  }
38
61
 
@@ -45,7 +68,7 @@ export class IdentityServiceImpl implements IdentityService {
45
68
  });
46
69
  }
47
70
 
48
- private _getIdentity(): Identity | undefined {
71
+ private _getIdentity(): IdentityProto | undefined {
49
72
  if (!this._identityManager.identity) {
50
73
  return undefined;
51
74
  }
@@ -57,7 +80,7 @@ export class IdentityServiceImpl implements IdentityService {
57
80
  };
58
81
  }
59
82
 
60
- async updateProfile(profile: ProfileDocument): Promise<Identity> {
83
+ async updateProfile(profile: ProfileDocument): Promise<IdentityProto> {
61
84
  invariant(this._identityManager.identity, 'Identity not initialized.');
62
85
  await this._identityManager.updateProfile(profile);
63
86
  await this._onProfileUpdate?.(this._identityManager.identity.profileDocument);
@@ -75,4 +98,28 @@ export class IdentityServiceImpl implements IdentityService {
75
98
  nonce,
76
99
  });
77
100
  }
101
+
102
+ private async _fixIdentityWithoutDefaultSpace(identity: Identity) {
103
+ let hasDefaultSpace = false;
104
+ const dataSpaceManager = this._dataSpaceManagerProvider();
105
+ for (const space of dataSpaceManager.spaces.values()) {
106
+ if (space.state === SpaceState.CLOSED) {
107
+ await space.open();
108
+
109
+ // Wait until the space is either READY or REQUIRES_MIGRATION.
110
+ const requiresMigration = space.stateUpdate.waitForCondition(
111
+ () => space.state === SpaceState.REQUIRES_MIGRATION,
112
+ );
113
+ await Promise.race([space.initializeDataPipeline(), requiresMigration]);
114
+ }
115
+ if (await dataSpaceManager.isDefaultSpace(space)) {
116
+ await identity.updateDefaultSpace(space.id);
117
+ hasDefaultSpace = true;
118
+ break;
119
+ }
120
+ }
121
+ if (!hasDefaultSpace) {
122
+ await this._createDefaultSpace(dataSpaceManager);
123
+ }
124
+ }
78
125
  }