@dxos/client-services 0.8.1-main.ba2dec9 → 0.8.1-staging.5be625a

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 (43) hide show
  1. package/dist/lib/{node-esm/chunk-FLBMHVSB.mjs → browser/chunk-MHPIENPS.mjs} +1303 -853
  2. package/dist/lib/browser/chunk-MHPIENPS.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +1 -1
  4. package/dist/lib/browser/meta.json +1 -1
  5. package/dist/lib/browser/testing/index.mjs +1 -1
  6. package/dist/lib/node/{chunk-K7LO776I.cjs → chunk-CJ45ZFPW.cjs} +1012 -711
  7. package/dist/lib/node/chunk-CJ45ZFPW.cjs.map +7 -0
  8. package/dist/lib/node/index.cjs +47 -47
  9. package/dist/lib/node/meta.json +1 -1
  10. package/dist/lib/node/testing/index.cjs +8 -8
  11. package/dist/lib/{browser/chunk-VJODS5QE.mjs → node-esm/chunk-B5OK2JAX.mjs} +718 -554
  12. package/dist/lib/node-esm/chunk-B5OK2JAX.mjs.map +7 -0
  13. package/dist/lib/node-esm/index.mjs +1 -1
  14. package/dist/lib/node-esm/meta.json +1 -1
  15. package/dist/lib/node-esm/testing/index.mjs +1 -1
  16. package/dist/types/src/packlets/space-export/index.d.ts +3 -0
  17. package/dist/types/src/packlets/space-export/index.d.ts.map +1 -0
  18. package/dist/types/src/packlets/space-export/space-archive-reader.d.ts +9 -0
  19. package/dist/types/src/packlets/space-export/space-archive-reader.d.ts.map +1 -0
  20. package/dist/types/src/packlets/space-export/space-archive-writer.d.ts +23 -0
  21. package/dist/types/src/packlets/space-export/space-archive-writer.d.ts.map +1 -0
  22. package/dist/types/src/packlets/space-export/tar.test.d.ts +2 -0
  23. package/dist/types/src/packlets/space-export/tar.test.d.ts.map +1 -0
  24. package/dist/types/src/packlets/spaces/data-space-manager.d.ts +8 -2
  25. package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
  26. package/dist/types/src/packlets/spaces/data-space.d.ts +1 -0
  27. package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
  28. package/dist/types/src/packlets/spaces/spaces-service.d.ts +3 -1
  29. package/dist/types/src/packlets/spaces/spaces-service.d.ts.map +1 -1
  30. package/dist/types/src/version.d.ts +1 -1
  31. package/dist/types/src/version.d.ts.map +1 -1
  32. package/package.json +39 -38
  33. package/src/packlets/space-export/index.ts +6 -0
  34. package/src/packlets/space-export/space-archive-reader.ts +33 -0
  35. package/src/packlets/space-export/space-archive-writer.ts +83 -0
  36. package/src/packlets/space-export/tar.test.ts +25 -0
  37. package/src/packlets/spaces/data-space-manager.ts +70 -9
  38. package/src/packlets/spaces/data-space.ts +14 -1
  39. package/src/packlets/spaces/spaces-service.ts +39 -1
  40. package/src/version.ts +1 -1
  41. package/dist/lib/browser/chunk-VJODS5QE.mjs.map +0 -7
  42. package/dist/lib/node/chunk-K7LO776I.cjs.map +0 -7
  43. package/dist/lib/node-esm/chunk-FLBMHVSB.mjs.map +0 -7
@@ -6,7 +6,7 @@ import {
6
6
  InvitationsManager,
7
7
  ServiceContext,
8
8
  SpaceInvitationProtocol
9
- } from "../chunk-FLBMHVSB.mjs";
9
+ } from "../chunk-B5OK2JAX.mjs";
10
10
 
11
11
  // packages/sdk/client-services/src/packlets/testing/credential-utils.ts
12
12
  import { createCredential } from "@dxos/credentials";
@@ -0,0 +1,3 @@
1
+ export * from './space-archive-writer';
2
+ export * from './space-archive-reader';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/space-export/index.ts"],"names":[],"mappings":"AAIA,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { DocumentId } from '@dxos/automerge/automerge-repo';
2
+ import { type SpaceArchiveMetadata } from '@dxos/protocols';
3
+ import type { SpaceArchive } from '@dxos/protocols/proto/dxos/client/services';
4
+ export type ExtractedSpaceArchive = {
5
+ metadata: SpaceArchiveMetadata;
6
+ documents: Record<DocumentId, Uint8Array>;
7
+ };
8
+ export declare const extractSpaceArchive: (archive: SpaceArchive) => Promise<ExtractedSpaceArchive>;
9
+ //# sourceMappingURL=space-archive-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"space-archive-reader.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/space-export/space-archive-reader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAGjE,OAAO,EAA6B,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAE/E,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,mBAAmB,YAAmB,YAAY,KAAG,OAAO,CAAC,qBAAqB,CAiB9F,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { Resource, type Context } from '@dxos/context';
2
+ import type { IdentityDid, SpaceId } from '@dxos/keys';
3
+ import type { SpaceArchive } from '@dxos/protocols/proto/dxos/client/services';
4
+ export type SpaceArchiveBeginProps = {
5
+ spaceId?: SpaceId;
6
+ /**
7
+ * DID of the identity that exported the space.
8
+ */
9
+ exportedBy?: IdentityDid;
10
+ };
11
+ export declare class SpaceArchiveWriter extends Resource {
12
+ private _tar?;
13
+ private _archive?;
14
+ private _meta?;
15
+ private _currentRootUrl?;
16
+ protected _open(ctx: Context): Promise<void>;
17
+ protected _close(): Promise<void>;
18
+ begin(meta: SpaceArchiveBeginProps): Promise<void>;
19
+ setCurrentRootUrl(url: string): Promise<void>;
20
+ writeDocument(documentId: string, data: Uint8Array): Promise<void>;
21
+ finish(): Promise<SpaceArchive>;
22
+ }
23
+ //# sourceMappingURL=space-archive-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"space-archive-writer.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/space-export/space-archive-writer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAE/E,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC;CAC1B,CAAC;AAIF,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,OAAO,CAAC,IAAI,CAAC,CAAa;IAC1B,OAAO,CAAC,QAAQ,CAAC,CAAc;IAE/B,OAAO,CAAC,KAAK,CAAC,CAAqC;IACnD,OAAO,CAAC,eAAe,CAAC,CAAqB;cAEpB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;cAIlC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1C,KAAK,CAAC,IAAI,EAAE,sBAAsB;IAOlC,iBAAiB,CAAC,GAAG,EAAE,MAAM;IAO7B,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU;IAMlD,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;CAwBtC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tar.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tar.test.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/space-export/tar.test.ts"],"names":[],"mappings":""}
@@ -1,11 +1,12 @@
1
1
  import { Event } from '@dxos/async';
2
+ import { type AutomergeUrl, type DocumentId } from '@dxos/automerge/automerge-repo';
2
3
  import { Resource } from '@dxos/context';
3
4
  import { type CredentialSigner } from '@dxos/credentials';
4
5
  import { type EchoEdgeReplicator, type EchoHost, type MeshEchoReplicator, type MetadataStore, type SpaceManager } from '@dxos/echo-pipeline';
5
6
  import type { EdgeConnection, EdgeHttpClient } from '@dxos/edge-client';
6
7
  import { type FeedStore } from '@dxos/feed-store';
7
8
  import { type Keyring } from '@dxos/keyring';
8
- import { PublicKey } from '@dxos/keys';
9
+ import { PublicKey, type SpaceId } from '@dxos/keys';
9
10
  import { type Runtime } from '@dxos/protocols/proto/dxos/config';
10
11
  import { type FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
11
12
  import { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';
@@ -63,6 +64,10 @@ export type DataSpaceManagerRuntimeParams = {
63
64
  activeEdgeNotarizationPollingInterval?: number;
64
65
  disableP2pReplication?: boolean;
65
66
  };
67
+ export type CreateSpaceOptions = {
68
+ rootUrl?: AutomergeUrl;
69
+ documents?: Record<DocumentId, Uint8Array>;
70
+ };
66
71
  export declare class DataSpaceManager extends Resource {
67
72
  readonly updated: Event<void>;
68
73
  private readonly _spaces;
@@ -82,12 +87,13 @@ export declare class DataSpaceManager extends Resource {
82
87
  private readonly _runtimeParams?;
83
88
  constructor(params: DataSpaceManagerParams);
84
89
  get spaces(): ComplexMap<PublicKey, DataSpace>;
90
+ getSpaceById(spaceId: SpaceId): DataSpace | undefined;
85
91
  protected _open(): Promise<void>;
86
92
  protected _close(): Promise<void>;
87
93
  /**
88
94
  * Creates a new space writing the genesis credentials to the control feed.
89
95
  */
90
- createSpace(): Promise<DataSpace>;
96
+ createSpace(options?: CreateSpaceOptions): Promise<DataSpace>;
91
97
  isDefaultSpace(space: DataSpace): Promise<boolean>;
92
98
  createDefaultSpace(): Promise<DataSpace>;
93
99
  private _getSpaceRootDocument;
@@ -1 +1 @@
1
- {"version":3,"file":"data-space-manager.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/data-space-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-space-manager.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/data-space-manager.ts"],"names":[],"mappings":"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"}
@@ -105,6 +105,7 @@ export declare class DataSpace {
105
105
  */
106
106
  initializeDataPipelineAsync(): void;
107
107
  initializeDataPipeline(): Promise<void>;
108
+ getAllDocuments(): AsyncIterable<[string, Uint8Array]>;
108
109
  private _enterReadyState;
109
110
  private _initializeAndReadControlPipeline;
110
111
  private _createWritableFeeds;
@@ -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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"}
@@ -1,6 +1,6 @@
1
1
  import { Stream } from '@dxos/codec-protobuf/stream';
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, type AdmitContactRequest, type JoinSpaceResponse, type JoinBySpaceKeyRequest, type CreateEpochResponse } 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 AdmitContactRequest, type JoinSpaceResponse, type JoinBySpaceKeyRequest, type CreateEpochResponse, type ExportSpaceResponse, type ExportSpaceRequest, type ImportSpaceRequest, type ImportSpaceResponse } 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';
@@ -22,6 +22,8 @@ export declare class SpacesServiceImpl implements SpacesService {
22
22
  createEpoch({ spaceKey, migration, automergeRootUrl }: CreateEpochRequest): Promise<CreateEpochResponse>;
23
23
  admitContact(request: AdmitContactRequest): Promise<void>;
24
24
  joinBySpaceKey({ spaceKey }: JoinBySpaceKeyRequest): Promise<JoinSpaceResponse>;
25
+ exportSpace(request: ExportSpaceRequest): Promise<ExportSpaceResponse>;
26
+ importSpace(request: ImportSpaceRequest): Promise<ImportSpaceResponse>;
25
27
  private _joinByAdmission;
26
28
  private _serializeSpace;
27
29
  private _requireIdentity;
@@ -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,6BAA6B,CAAC;AAQrD,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,EAExB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,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,EAAE,EAAE,kBAAkB;IAuBpE,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BvE,WAAW,IAAI,MAAM,CAAC,mBAAmB,CAAC;IA+DpC,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;IAOxG,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IASzD,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAMvE,gBAAgB;YAmBhB,eAAe;IAmD7B,OAAO,CAAC,gBAAgB;YASV,cAAc;CAS7B"}
1
+ {"version":3,"file":"spaces-service.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/spaces-service.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAQrD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAYxD,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,EAExB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,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;AAGnD,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,EAAE,EAAE,kBAAkB;IAuBpE,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BvE,WAAW,IAAI,MAAM,CAAC,mBAAmB,CAAC;IA+DpC,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;IAOxG,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IASzD,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAM/E,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAmBtE,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAY9D,gBAAgB;YAmBhB,eAAe;IAmD7B,OAAO,CAAC,gBAAgB;YASV,cAAc;CAS7B"}
@@ -1,2 +1,2 @@
1
- export declare const DXOS_VERSION = "0.8.1-main.ba2dec9";
1
+ export declare const DXOS_VERSION = "0.8.1-staging.5be625a";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,uBAAuB,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,0BAA0B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/client-services",
3
- "version": "0.8.1-main.ba2dec9",
3
+ "version": "0.8.1-staging.5be625a",
4
4
  "description": "DXOS client services implementation",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -41,50 +41,51 @@
41
41
  "src"
42
42
  ],
43
43
  "dependencies": {
44
+ "@obsidize/tar-browserify": "^5.2.0",
44
45
  "cbor-x": "^1.5.4",
45
46
  "platform": "^1.3.6",
46
- "@dxos/async": "0.8.1-main.ba2dec9",
47
- "@dxos/client-protocol": "0.8.1-main.ba2dec9",
48
- "@dxos/codec-protobuf": "0.8.1-main.ba2dec9",
49
- "@dxos/automerge": "0.8.1-main.ba2dec9",
50
- "@dxos/config": "0.8.1-main.ba2dec9",
51
- "@dxos/context": "0.8.1-main.ba2dec9",
52
- "@dxos/credentials": "0.8.1-main.ba2dec9",
53
- "@dxos/crypto": "0.8.1-main.ba2dec9",
54
- "@dxos/debug": "0.8.1-main.ba2dec9",
55
- "@dxos/echo-pipeline": "0.8.1-main.ba2dec9",
56
- "@dxos/echo-db": "0.8.1-main.ba2dec9",
57
- "@dxos/echo-protocol": "0.8.1-main.ba2dec9",
58
- "@dxos/echo-schema": "0.8.1-main.ba2dec9",
59
- "@dxos/feed-store": "0.8.1-main.ba2dec9",
60
- "@dxos/edge-client": "0.8.1-main.ba2dec9",
61
- "@dxos/indexing": "0.8.1-main.ba2dec9",
62
- "@dxos/keyring": "0.8.1-main.ba2dec9",
63
- "@dxos/keys": "0.8.1-main.ba2dec9",
64
- "@dxos/kv-store": "0.8.1-main.ba2dec9",
65
- "@dxos/lock-file": "0.8.1-main.ba2dec9",
66
- "@dxos/log": "0.8.1-main.ba2dec9",
67
- "@dxos/invariant": "0.8.1-main.ba2dec9",
68
- "@dxos/messaging": "0.8.1-main.ba2dec9",
69
- "@dxos/network-manager": "0.8.1-main.ba2dec9",
70
- "@dxos/protocols": "0.8.1-main.ba2dec9",
71
- "@dxos/node-std": "0.8.1-main.ba2dec9",
72
- "@dxos/random-access-storage": "0.8.1-main.ba2dec9",
73
- "@dxos/rpc": "0.8.1-main.ba2dec9",
74
- "@dxos/teleport": "0.8.1-main.ba2dec9",
75
- "@dxos/teleport-extension-gossip": "0.8.1-main.ba2dec9",
76
- "@dxos/teleport-extension-object-sync": "0.8.1-main.ba2dec9",
77
- "@dxos/timeframe": "0.8.1-main.ba2dec9",
78
- "@dxos/tracing": "0.8.1-main.ba2dec9",
79
- "@dxos/util": "0.8.1-main.ba2dec9",
80
- "@dxos/websocket-rpc": "0.8.1-main.ba2dec9"
47
+ "@dxos/async": "0.8.1-staging.5be625a",
48
+ "@dxos/automerge": "0.8.1-staging.5be625a",
49
+ "@dxos/client-protocol": "0.8.1-staging.5be625a",
50
+ "@dxos/codec-protobuf": "0.8.1-staging.5be625a",
51
+ "@dxos/config": "0.8.1-staging.5be625a",
52
+ "@dxos/context": "0.8.1-staging.5be625a",
53
+ "@dxos/credentials": "0.8.1-staging.5be625a",
54
+ "@dxos/debug": "0.8.1-staging.5be625a",
55
+ "@dxos/crypto": "0.8.1-staging.5be625a",
56
+ "@dxos/echo-db": "0.8.1-staging.5be625a",
57
+ "@dxos/echo-protocol": "0.8.1-staging.5be625a",
58
+ "@dxos/echo-pipeline": "0.8.1-staging.5be625a",
59
+ "@dxos/edge-client": "0.8.1-staging.5be625a",
60
+ "@dxos/echo-schema": "0.8.1-staging.5be625a",
61
+ "@dxos/feed-store": "0.8.1-staging.5be625a",
62
+ "@dxos/invariant": "0.8.1-staging.5be625a",
63
+ "@dxos/keys": "0.8.1-staging.5be625a",
64
+ "@dxos/indexing": "0.8.1-staging.5be625a",
65
+ "@dxos/kv-store": "0.8.1-staging.5be625a",
66
+ "@dxos/lock-file": "0.8.1-staging.5be625a",
67
+ "@dxos/log": "0.8.1-staging.5be625a",
68
+ "@dxos/messaging": "0.8.1-staging.5be625a",
69
+ "@dxos/keyring": "0.8.1-staging.5be625a",
70
+ "@dxos/network-manager": "0.8.1-staging.5be625a",
71
+ "@dxos/node-std": "0.8.1-staging.5be625a",
72
+ "@dxos/protocols": "0.8.1-staging.5be625a",
73
+ "@dxos/rpc": "0.8.1-staging.5be625a",
74
+ "@dxos/random-access-storage": "0.8.1-staging.5be625a",
75
+ "@dxos/teleport-extension-gossip": "0.8.1-staging.5be625a",
76
+ "@dxos/teleport": "0.8.1-staging.5be625a",
77
+ "@dxos/teleport-extension-object-sync": "0.8.1-staging.5be625a",
78
+ "@dxos/timeframe": "0.8.1-staging.5be625a",
79
+ "@dxos/tracing": "0.8.1-staging.5be625a",
80
+ "@dxos/util": "0.8.1-staging.5be625a",
81
+ "@dxos/websocket-rpc": "0.8.1-staging.5be625a"
81
82
  },
82
83
  "devDependencies": {
83
84
  "@types/platform": "^1.3.4",
84
85
  "@types/readable-stream": "^2.3.9",
85
86
  "get-port-please": "^3.1.1",
86
- "@dxos/signal": "0.8.1-main.ba2dec9",
87
- "@dxos/test-utils": "0.8.1-main.ba2dec9"
87
+ "@dxos/signal": "0.8.1-staging.5be625a",
88
+ "@dxos/test-utils": "0.8.1-staging.5be625a"
88
89
  },
89
90
  "publishConfig": {
90
91
  "access": "public"
@@ -0,0 +1,6 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export * from './space-archive-writer';
6
+ export * from './space-archive-reader';
@@ -0,0 +1,33 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import type { DocumentId } from '@dxos/automerge/automerge-repo';
6
+ import { assertArgument, failedInvariant, invariant } from '@dxos/invariant';
7
+ import { log } from '@dxos/log';
8
+ import { SpaceArchiveFileStructure, type SpaceArchiveMetadata } from '@dxos/protocols';
9
+ import type { SpaceArchive } from '@dxos/protocols/proto/dxos/client/services';
10
+
11
+ export type ExtractedSpaceArchive = {
12
+ metadata: SpaceArchiveMetadata;
13
+ documents: Record<DocumentId, Uint8Array>;
14
+ };
15
+
16
+ export const extractSpaceArchive = async (archive: SpaceArchive): Promise<ExtractedSpaceArchive> => {
17
+ const { Archive } = await import('@obsidize/tar-browserify');
18
+ const { entries } = await Archive.extract(archive.contents);
19
+ const metadataEntry = entries.find((entry) => entry.fileName === SpaceArchiveFileStructure.metadata);
20
+ assertArgument(metadataEntry, 'Metadata entry not found');
21
+ const metadata = JSON.parse(metadataEntry.getContentAsText());
22
+ const documents: Record<DocumentId, Uint8Array> = {};
23
+ for (const entry of entries.filter((entry) => entry.fileName.startsWith(`${SpaceArchiveFileStructure.documents}/`))) {
24
+ const documentId = entry.fileName
25
+ .replace(`${SpaceArchiveFileStructure.documents}/`, '')
26
+ .replace(/\.bin$/, '') as DocumentId;
27
+ invariant(!documentId.includes('/'));
28
+ documents[documentId] = entry.content ?? failedInvariant();
29
+ }
30
+
31
+ log.info('extracted space archive', { metadata, documents });
32
+ return { metadata, documents };
33
+ };
@@ -0,0 +1,83 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import type * as tar from '@obsidize/tar-browserify';
6
+
7
+ import { Resource, type Context } from '@dxos/context';
8
+ import { assertArgument, assertState } from '@dxos/invariant';
9
+ import type { IdentityDid, SpaceId } from '@dxos/keys';
10
+ import { SpaceArchiveFileStructure, SpaceArchiveVersion, type SpaceArchiveMetadata } from '@dxos/protocols';
11
+ import type { SpaceArchive } from '@dxos/protocols/proto/dxos/client/services';
12
+
13
+ export type SpaceArchiveBeginProps = {
14
+ spaceId?: SpaceId;
15
+
16
+ /**
17
+ * DID of the identity that exported the space.
18
+ */
19
+ exportedBy?: IdentityDid;
20
+ };
21
+
22
+ const CURRENT_VERSION = SpaceArchiveVersion.V1;
23
+
24
+ export class SpaceArchiveWriter extends Resource {
25
+ private _tar?: typeof tar;
26
+ private _archive?: tar.Archive;
27
+
28
+ private _meta?: SpaceArchiveBeginProps = undefined;
29
+ private _currentRootUrl?: string = undefined;
30
+
31
+ protected override async _open(ctx: Context): Promise<void> {
32
+ this._tar = await import('@obsidize/tar-browserify');
33
+ }
34
+
35
+ protected override async _close(): Promise<void> {
36
+ return Promise.resolve();
37
+ }
38
+
39
+ async begin(meta: SpaceArchiveBeginProps) {
40
+ assertState(this._tar, 'Not open');
41
+ assertState(!this._meta, 'Already started');
42
+ this._meta = meta;
43
+ this._archive = new this._tar.Archive();
44
+ }
45
+
46
+ async setCurrentRootUrl(url: string) {
47
+ assertArgument(url.startsWith('automerge:'), 'Invalid root URL');
48
+ assertState(this._tar, 'Not open');
49
+ assertState(this._meta, 'Not started');
50
+ this._currentRootUrl = url;
51
+ }
52
+
53
+ async writeDocument(documentId: string, data: Uint8Array) {
54
+ assertArgument(!documentId.startsWith('automerge:'), 'Invalid document ID');
55
+ assertState(this._archive, 'Not open');
56
+ this._archive.addBinaryFile(`${SpaceArchiveFileStructure.documents}/${documentId}.bin`, data);
57
+ }
58
+
59
+ async finish(): Promise<SpaceArchive> {
60
+ assertState(this._archive, 'Not open');
61
+ assertState(this._meta, 'Not started');
62
+ assertState(this._currentRootUrl, 'No root URL set');
63
+
64
+ const metadata: SpaceArchiveMetadata = {
65
+ version: CURRENT_VERSION,
66
+ createdAt: Date.now(),
67
+ exportedBy: this._meta.exportedBy,
68
+ originalSpaceId: this._meta.spaceId,
69
+ echo: {
70
+ currentRootUrl: this._currentRootUrl,
71
+ },
72
+ };
73
+
74
+ this._archive.addTextFile(SpaceArchiveFileStructure.metadata, JSON.stringify(metadata));
75
+
76
+ const binary = this._archive.toUint8Array();
77
+
78
+ return {
79
+ filename: `${this._meta.spaceId}.tar`,
80
+ contents: binary,
81
+ };
82
+ }
83
+ }
@@ -0,0 +1,25 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Archive } from '@obsidize/tar-browserify';
6
+ import { describe, it, expect } from 'vitest';
7
+
8
+ describe('tar', () => {
9
+ it('should create a tar archive', async () => {
10
+ const archive = new Archive();
11
+
12
+ archive.addTextFile('test.txt', 'Hello, world!');
13
+ archive.addTextFile('dir/test.txt', 'Hello, world!');
14
+
15
+ const bytes = await archive.toUint8Array();
16
+
17
+ const unpackaged = await Archive.extract(bytes);
18
+
19
+ expect(unpackaged.entries[0].fileName).toBe('test.txt');
20
+ expect(unpackaged.entries[0].getContentAsText()).toBe('Hello, world!');
21
+
22
+ expect(unpackaged.entries[1].fileName).toBe('dir/test.txt');
23
+ expect(unpackaged.entries[1].getContentAsText()).toBe('Hello, world!');
24
+ });
25
+ });
@@ -4,9 +4,14 @@
4
4
 
5
5
  import { Event, synchronized, trackLeaks } from '@dxos/async';
6
6
  import { type Doc } from '@dxos/automerge/automerge';
7
- import { type AutomergeUrl, type DocHandle } from '@dxos/automerge/automerge-repo';
7
+ import {
8
+ interpretAsDocumentId,
9
+ type AutomergeUrl,
10
+ type DocHandle,
11
+ type DocumentId,
12
+ } from '@dxos/automerge/automerge-repo';
8
13
  import { PropertiesType, TYPE_PROPERTIES } from '@dxos/client-protocol';
9
- import { LifecycleState, Resource, cancelWithContext } from '@dxos/context';
14
+ import { Context, LifecycleState, Resource, cancelWithContext } from '@dxos/context';
10
15
  import {
11
16
  createAdmissionCredentials,
12
17
  getCredentialAssertion,
@@ -15,6 +20,7 @@ import {
15
20
  type MemberInfo,
16
21
  } from '@dxos/credentials';
17
22
  import {
23
+ DatabaseRoot,
18
24
  findInlineObjectOfType,
19
25
  type EchoEdgeReplicator,
20
26
  type EchoHost,
@@ -27,13 +33,19 @@ import {
27
33
  type SpaceProtocol,
28
34
  type SpaceProtocolSession,
29
35
  } from '@dxos/echo-pipeline';
30
- import { SpaceDocVersion, encodeReference, type ObjectStructure, type SpaceDoc } from '@dxos/echo-protocol';
36
+ import {
37
+ SpaceDocVersion,
38
+ createIdFromSpaceKey,
39
+ encodeReference,
40
+ type ObjectStructure,
41
+ type SpaceDoc,
42
+ } from '@dxos/echo-protocol';
31
43
  import { createObjectId, getTypeReference } from '@dxos/echo-schema';
32
44
  import type { EdgeConnection, EdgeHttpClient } from '@dxos/edge-client';
33
45
  import { writeMessages, type FeedStore } from '@dxos/feed-store';
34
- import { invariant } from '@dxos/invariant';
46
+ import { assertArgument, assertState, failedInvariant, invariant } from '@dxos/invariant';
35
47
  import { type Keyring } from '@dxos/keyring';
36
- import { PublicKey } from '@dxos/keys';
48
+ import { PublicKey, type SpaceId } from '@dxos/keys';
37
49
  import { log } from '@dxos/log';
38
50
  import { AlreadyJoinedError, trace as Trace } from '@dxos/protocols';
39
51
  import { Invitation, SpaceState } from '@dxos/protocols/proto/dxos/client/services';
@@ -117,6 +129,11 @@ export type DataSpaceManagerRuntimeParams = {
117
129
  disableP2pReplication?: boolean;
118
130
  };
119
131
 
132
+ export type CreateSpaceOptions = {
133
+ rootUrl?: AutomergeUrl;
134
+ documents?: Record<DocumentId, Uint8Array>;
135
+ };
136
+
120
137
  @trackLeaks('open', 'close')
121
138
  export class DataSpaceManager extends Resource {
122
139
  public readonly updated = new Event();
@@ -187,6 +204,10 @@ export class DataSpaceManager extends Resource {
187
204
  return this._spaces;
188
205
  }
189
206
 
207
+ getSpaceById(spaceId: SpaceId): DataSpace | undefined {
208
+ return [...this._spaces.values()].find((space) => space.id === spaceId);
209
+ }
210
+
190
211
  @synchronized
191
212
  protected override async _open() {
192
213
  log('open');
@@ -220,11 +241,16 @@ export class DataSpaceManager extends Resource {
220
241
  * Creates a new space writing the genesis credentials to the control feed.
221
242
  */
222
243
  @synchronized
223
- async createSpace() {
224
- invariant(this._lifecycleState === LifecycleState.OPEN, 'Not open.');
244
+ async createSpace(options: CreateSpaceOptions = {}) {
245
+ assertArgument(!!options.rootUrl === !!options.documents, 'root url must be required when providing documents');
246
+
247
+ assertState(this._lifecycleState === LifecycleState.OPEN, 'Not open.');
225
248
  const spaceKey = await this._keyring.createKey();
226
249
  const controlFeedKey = await this._keyring.createKey();
227
250
  const dataFeedKey = await this._keyring.createKey();
251
+
252
+ const spaceId = await createIdFromSpaceKey(spaceKey);
253
+
228
254
  const metadata: SpaceMetadata = {
229
255
  key: spaceKey,
230
256
  genesisFeedKey: controlFeedKey,
@@ -233,12 +259,45 @@ export class DataSpaceManager extends Resource {
233
259
  state: SpaceState.SPACE_ACTIVE,
234
260
  };
235
261
 
236
- log('creating space...', { spaceKey });
262
+ log('creating space...', { spaceId, spaceKey });
263
+
264
+ // New document IDs for the space.
265
+ const documentIdMapping: Record<DocumentId, DocumentId> = {};
266
+ if (options.documents) {
267
+ invariant(
268
+ Object.keys(options.documents).every((documentId) => /^[a-zA-Z0-9]+$/.test(documentId)),
269
+ 'Invalid document IDs',
270
+ );
271
+
272
+ await Promise.all(
273
+ Object.entries(options.documents).map(async ([documentId, data]) => {
274
+ log('creating document...', { documentId });
275
+ const newDoc = await this._echoHost.createDoc(data, { preserveHistory: true });
276
+ documentIdMapping[documentId as DocumentId] = newDoc.documentId;
277
+ }),
278
+ );
279
+ }
280
+
281
+ log('opening space...', { spaceKey });
282
+
283
+ let root: DatabaseRoot;
284
+ if (options.rootUrl) {
285
+ const newRootDocId = documentIdMapping[interpretAsDocumentId(options.rootUrl)] ?? failedInvariant();
286
+ const rootDocHandle = await this._echoHost.loadDoc<SpaceDoc>(Context.default(), newRootDocId);
287
+ DatabaseRoot.mapLinks(rootDocHandle, documentIdMapping);
288
+
289
+ root = await this._echoHost.openSpaceRoot(spaceId, `automerge:${newRootDocId}` as AutomergeUrl);
290
+ } else {
291
+ root = await this._echoHost.createSpaceRoot(spaceKey);
292
+ }
293
+
294
+ log('constructing space...', { spaceKey });
237
295
 
238
- const root = await this._echoHost.createSpaceRoot(spaceKey);
239
296
  const space = await this._constructSpace(metadata);
240
297
  await space.open();
241
298
 
299
+ log('adding space...', { spaceKey });
300
+
242
301
  const credentials = await spaceGenesis(this._keyring, this._signingContext, space.inner, root.url);
243
302
  await this._metadataStore.addSpace(metadata);
244
303
 
@@ -248,6 +307,8 @@ export class DataSpaceManager extends Resource {
248
307
 
249
308
  await space.initializeDataPipeline();
250
309
 
310
+ log('space ready.', { spaceId, spaceKey });
311
+
251
312
  this.updated.emit();
252
313
  return space;
253
314
  }
@@ -3,6 +3,7 @@
3
3
  //
4
4
 
5
5
  import { Event, Mutex, scheduleTask, sleep, synchronized, trackLeaks } from '@dxos/async';
6
+ import { save } from '@dxos/automerge/automerge';
6
7
  import { AUTH_TIMEOUT } from '@dxos/client-protocol';
7
8
  import { Context, ContextDisposedError, cancelWithContext } from '@dxos/context';
8
9
  import type { SpecificCredential } from '@dxos/credentials';
@@ -17,7 +18,7 @@ import {
17
18
  import { SpaceDocVersion, type SpaceDoc } from '@dxos/echo-protocol';
18
19
  import type { EdgeConnection, EdgeHttpClient } from '@dxos/edge-client';
19
20
  import { type FeedStore, type FeedWrapper } from '@dxos/feed-store';
20
- import { failedInvariant } from '@dxos/invariant';
21
+ import { failedInvariant, invariant } from '@dxos/invariant';
21
22
  import { type Keyring } from '@dxos/keyring';
22
23
  import { PublicKey } from '@dxos/keys';
23
24
  import { log } from '@dxos/log';
@@ -349,6 +350,18 @@ export class DataSpace {
349
350
  log('space is ready');
350
351
  }
351
352
 
353
+ async *getAllDocuments(): AsyncIterable<[string, Uint8Array]> {
354
+ invariant(this._databaseRoot, 'Space is not ready');
355
+ const doc = this._databaseRoot.docSync() ?? failedInvariant();
356
+ const root = save(doc);
357
+ yield [this._databaseRoot.documentId, root];
358
+
359
+ for (const documentUrl of this._databaseRoot.getAllLinkedDocuments()) {
360
+ const data = await this._echoHost.exportDoc(Context.default(), documentUrl);
361
+ yield [documentUrl.replace(/^automerge:/, ''), data];
362
+ }
363
+ }
364
+
352
365
  private async _enterReadyState() {
353
366
  await this._callbacks.beforeReady?.();
354
367