@dxos/client-services 0.8.1-main.ba2dec9 → 0.8.1-staging.31c3ee1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/{node-esm/chunk-FLBMHVSB.mjs → browser/chunk-G4AZ6KHY.mjs} +1354 -869
- package/dist/lib/browser/chunk-G4AZ6KHY.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +1 -1
- package/dist/lib/node/{chunk-K7LO776I.cjs → chunk-II76TP7N.cjs} +1058 -722
- package/dist/lib/node/chunk-II76TP7N.cjs.map +7 -0
- package/dist/lib/node/index.cjs +47 -47
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +8 -8
- package/dist/lib/{browser/chunk-VJODS5QE.mjs → node-esm/chunk-2H5CIBX2.mjs} +769 -570
- package/dist/lib/node-esm/chunk-2H5CIBX2.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +1 -1
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +1 -1
- package/dist/types/src/packlets/devtools/feeds.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts +6 -0
- package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity-service.d.ts.map +1 -1
- package/dist/types/src/packlets/space-export/index.d.ts +3 -0
- package/dist/types/src/packlets/space-export/index.d.ts.map +1 -0
- package/dist/types/src/packlets/space-export/space-archive-reader.d.ts +9 -0
- package/dist/types/src/packlets/space-export/space-archive-reader.d.ts.map +1 -0
- package/dist/types/src/packlets/space-export/space-archive-writer.d.ts +23 -0
- package/dist/types/src/packlets/space-export/space-archive-writer.d.ts.map +1 -0
- package/dist/types/src/packlets/space-export/tar.test.d.ts +2 -0
- package/dist/types/src/packlets/space-export/tar.test.d.ts.map +1 -0
- package/dist/types/src/packlets/spaces/data-space-manager.d.ts +8 -2
- package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/data-space.d.ts +1 -0
- package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/spaces-service.d.ts +3 -1
- package/dist/types/src/packlets/spaces/spaces-service.d.ts.map +1 -1
- package/dist/types/src/version.d.ts +1 -1
- package/dist/types/src/version.d.ts.map +1 -1
- package/package.json +39 -38
- package/src/packlets/devices/devices-service.ts +2 -2
- package/src/packlets/devtools/feeds.ts +4 -3
- package/src/packlets/identity/contacts-service.ts +2 -2
- package/src/packlets/identity/identity-recovery-manager.ts +27 -0
- package/src/packlets/identity/identity-service.ts +2 -0
- package/src/packlets/space-export/index.ts +6 -0
- package/src/packlets/space-export/space-archive-reader.ts +33 -0
- package/src/packlets/space-export/space-archive-writer.ts +83 -0
- package/src/packlets/space-export/tar.test.ts +25 -0
- package/src/packlets/spaces/data-space-manager.ts +70 -9
- package/src/packlets/spaces/data-space.ts +14 -1
- package/src/packlets/spaces/spaces-service.ts +45 -7
- package/src/version.ts +1 -1
- package/dist/lib/browser/chunk-VJODS5QE.mjs.map +0 -7
- package/dist/lib/node/chunk-K7LO776I.cjs.map +0 -7
- 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-
|
|
9
|
+
} from "../chunk-2H5CIBX2.mjs";
|
|
10
10
|
|
|
11
11
|
// packages/sdk/client-services/src/packlets/testing/credential-utils.ts
|
|
12
12
|
import { createCredential } from "@dxos/credentials";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feeds.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/devtools/feeds.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAgB,KAAK,SAAS,EAAoB,MAAM,kBAAkB,CAAC;AAGlF,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,EACnC,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAQxE,eAAO,MAAM,gBAAgB,gCACE;IAAE,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAAC,YAAY,EAAE,YAAY,CAAA;CAAE,gBAChF,uBAAuB,qCAuCtC,CAAC;AAmBF,eAAO,MAAM,qBAAqB,kBACjB;IAAE,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAA;CAAE,0BACvB,4BAA4B,
|
|
1
|
+
{"version":3,"file":"feeds.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/devtools/feeds.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAgB,KAAK,SAAS,EAAoB,MAAM,kBAAkB,CAAC;AAGlF,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,EACnC,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAQxE,eAAO,MAAM,gBAAgB,gCACE;IAAE,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAAC,YAAY,EAAE,YAAY,CAAA;CAAE,gBAChF,uBAAuB,qCAuCtC,CAAC;AAmBF,eAAO,MAAM,qBAAqB,kBACjB;IAAE,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAA;CAAE,0BACvB,4BAA4B,0CAmD1D,CAAC"}
|
|
@@ -19,6 +19,12 @@ export declare class EdgeIdentityRecoveryManager {
|
|
|
19
19
|
challenge: string;
|
|
20
20
|
}>;
|
|
21
21
|
recoverIdentityWithExternalSignature({ lookupKey, deviceKey, controlFeedKey, signature, clientDataJson, authenticatorData, }: RecoverIdentityRequest.ExternalSignature): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Recovery identity using an opaque token sent to the user's email.
|
|
24
|
+
*/
|
|
25
|
+
recoverIdentityWithToken({ token }: {
|
|
26
|
+
token: string;
|
|
27
|
+
}): Promise<void>;
|
|
22
28
|
recoverIdentity({ recoveryCode }: {
|
|
23
29
|
recoveryCode: string;
|
|
24
30
|
}): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-recovery-manager.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/identity/identity-recovery-manager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQvC,OAAO,EACL,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC5B,MAAM,4CAA4C,CAAC;AAGpD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,qBAAa,2BAA2B;IAEpC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,wBAAwB;gBAHxB,QAAQ,EAAE,OAAO,EACjB,WAAW,EAAE,cAAc,GAAG,SAAS,EACvC,iBAAiB,EAAE,MAAM,QAAQ,GAAG,SAAS,EAC7C,wBAAwB,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAC,QAAQ,CAAC;IAGjF,wBAAwB,CAAC,EAAE,IAAI,EAAE,EAAE,+BAA+B;;;IAsClE,wBAAwB;;;;;IAyBxB,oCAAoC,CAAC,EAChD,SAAS,EACT,SAAS,EACT,cAAc,EACd,SAAS,EACT,cAAc,EACd,iBAAiB,GAClB,EAAE,sBAAsB,CAAC,iBAAiB;
|
|
1
|
+
{"version":3,"file":"identity-recovery-manager.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/identity/identity-recovery-manager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQvC,OAAO,EACL,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC5B,MAAM,4CAA4C,CAAC;AAGpD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,qBAAa,2BAA2B;IAEpC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,wBAAwB;gBAHxB,QAAQ,EAAE,OAAO,EACjB,WAAW,EAAE,cAAc,GAAG,SAAS,EACvC,iBAAiB,EAAE,MAAM,QAAQ,GAAG,SAAS,EAC7C,wBAAwB,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAC,QAAQ,CAAC;IAGjF,wBAAwB,CAAC,EAAE,IAAI,EAAE,EAAE,+BAA+B;;;IAsClE,wBAAwB;;;;;IAyBxB,oCAAoC,CAAC,EAChD,SAAS,EACT,SAAS,EACT,cAAc,EACd,SAAS,EACT,cAAc,EACd,iBAAiB,GAClB,EAAE,sBAAsB,CAAC,iBAAiB;IA8B3C;;OAEG;IACU,wBAAwB,CAAC,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE;IAwBrD,eAAe,CAAC,EAAE,YAAY,EAAE,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE;CAuCxE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-service.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/identity/identity-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,+BAA+B,EACpC,KAAK,QAAQ,IAAI,aAAa,EAC9B,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAE7B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAGtG,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAIlD,qBAAa,mBAAoB,SAAQ,QAAS,YAAW,eAAe;IAExE,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBALjB,gBAAgB,EAAE,eAAe,EACjC,gBAAgB,EAAE,2BAA2B,EAC7C,QAAQ,EAAE,OAAO,EACjB,yBAAyB,EAAE,MAAM,gBAAgB,EACjD,eAAe,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,OAAO,CAAC,QAAQ,CAAC,EACrE,gBAAgB,CAAC,GAAE,CAAC,OAAO,EAAE,eAAe,GAAG,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,aAAA;cAKpE,KAAK;IAOxB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC;YAO9D,mBAAmB;IAOjC,aAAa,IAAI,MAAM,CAAC,qBAAqB,CAAC;IAS9C,OAAO,CAAC,YAAY;IAad,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;IAO/D,wBAAwB,CAAC,OAAO,EAAE,+BAA+B;;;IAIjE,wBAAwB;;;;;IAIxB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"identity-service.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/identity/identity-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,+BAA+B,EACpC,KAAK,QAAQ,IAAI,aAAa,EAC9B,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAE7B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAGtG,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAIlD,qBAAa,mBAAoB,SAAQ,QAAS,YAAW,eAAe;IAExE,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBALjB,gBAAgB,EAAE,eAAe,EACjC,gBAAgB,EAAE,2BAA2B,EAC7C,QAAQ,EAAE,OAAO,EACjB,yBAAyB,EAAE,MAAM,gBAAgB,EACjD,eAAe,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,OAAO,CAAC,QAAQ,CAAC,EACrE,gBAAgB,CAAC,GAAE,CAAC,OAAO,EAAE,eAAe,GAAG,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,aAAA;cAKpE,KAAK;IAOxB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC;YAO9D,mBAAmB;IAOjC,aAAa,IAAI,MAAM,CAAC,qBAAqB,CAAC;IAS9C,OAAO,CAAC,YAAY;IAad,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;IAO/D,wBAAwB,CAAC,OAAO,EAAE,+BAA+B;;;IAIjE,wBAAwB;;;;;IAIxB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC;IAexE,gBAAgB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,uBAAuB,GAAG,OAAO,CAAC,YAAY,CAAC;IAYzF,oBAAoB;YAeZ,+BAA+B;CA6C9C"}
|
|
@@ -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 @@
|
|
|
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":"AAIA,OAAO,EAAE,KAAK,EAA4B,MAAM,aAAa,CAAC;
|
|
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":"AAIA,OAAO,EAAE,KAAK,EAAwD,MAAM,aAAa,CAAC;
|
|
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":"
|
|
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-
|
|
1
|
+
export declare const DXOS_VERSION = "0.8.1-staging.31c3ee1";
|
|
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,
|
|
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-
|
|
3
|
+
"version": "0.8.1-staging.31c3ee1",
|
|
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-
|
|
47
|
-
"@dxos/
|
|
48
|
-
"@dxos/codec-protobuf": "0.8.1-
|
|
49
|
-
"@dxos/
|
|
50
|
-
"@dxos/config": "0.8.1-
|
|
51
|
-
"@dxos/
|
|
52
|
-
"@dxos/credentials": "0.8.1-
|
|
53
|
-
"@dxos/crypto": "0.8.1-
|
|
54
|
-
"@dxos/debug": "0.8.1-
|
|
55
|
-
"@dxos/echo-
|
|
56
|
-
"@dxos/echo-
|
|
57
|
-
"@dxos/echo-
|
|
58
|
-
"@dxos/echo-
|
|
59
|
-
"@dxos/
|
|
60
|
-
"@dxos/
|
|
61
|
-
"@dxos/indexing": "0.8.1-
|
|
62
|
-
"@dxos/keyring": "0.8.1-
|
|
63
|
-
"@dxos/
|
|
64
|
-
"@dxos/kv-store": "0.8.1-
|
|
65
|
-
"@dxos/
|
|
66
|
-
"@dxos/
|
|
67
|
-
"@dxos/
|
|
68
|
-
"@dxos/messaging": "0.8.1-
|
|
69
|
-
"@dxos/network-manager": "0.8.1-
|
|
70
|
-
"@dxos/
|
|
71
|
-
"@dxos/
|
|
72
|
-
"@dxos/random-access-storage": "0.8.1-
|
|
73
|
-
"@dxos/rpc": "0.8.1-
|
|
74
|
-
"@dxos/teleport": "0.8.1-
|
|
75
|
-
"@dxos/teleport-extension-gossip": "0.8.1-
|
|
76
|
-
"@dxos/
|
|
77
|
-
"@dxos/
|
|
78
|
-
"@dxos/tracing": "0.8.1-
|
|
79
|
-
"@dxos/util": "0.8.1-
|
|
80
|
-
"@dxos/websocket-rpc": "0.8.1-
|
|
47
|
+
"@dxos/async": "0.8.1-staging.31c3ee1",
|
|
48
|
+
"@dxos/automerge": "0.8.1-staging.31c3ee1",
|
|
49
|
+
"@dxos/codec-protobuf": "0.8.1-staging.31c3ee1",
|
|
50
|
+
"@dxos/context": "0.8.1-staging.31c3ee1",
|
|
51
|
+
"@dxos/config": "0.8.1-staging.31c3ee1",
|
|
52
|
+
"@dxos/client-protocol": "0.8.1-staging.31c3ee1",
|
|
53
|
+
"@dxos/credentials": "0.8.1-staging.31c3ee1",
|
|
54
|
+
"@dxos/crypto": "0.8.1-staging.31c3ee1",
|
|
55
|
+
"@dxos/debug": "0.8.1-staging.31c3ee1",
|
|
56
|
+
"@dxos/echo-db": "0.8.1-staging.31c3ee1",
|
|
57
|
+
"@dxos/echo-pipeline": "0.8.1-staging.31c3ee1",
|
|
58
|
+
"@dxos/echo-schema": "0.8.1-staging.31c3ee1",
|
|
59
|
+
"@dxos/echo-protocol": "0.8.1-staging.31c3ee1",
|
|
60
|
+
"@dxos/edge-client": "0.8.1-staging.31c3ee1",
|
|
61
|
+
"@dxos/feed-store": "0.8.1-staging.31c3ee1",
|
|
62
|
+
"@dxos/indexing": "0.8.1-staging.31c3ee1",
|
|
63
|
+
"@dxos/keyring": "0.8.1-staging.31c3ee1",
|
|
64
|
+
"@dxos/invariant": "0.8.1-staging.31c3ee1",
|
|
65
|
+
"@dxos/kv-store": "0.8.1-staging.31c3ee1",
|
|
66
|
+
"@dxos/keys": "0.8.1-staging.31c3ee1",
|
|
67
|
+
"@dxos/lock-file": "0.8.1-staging.31c3ee1",
|
|
68
|
+
"@dxos/log": "0.8.1-staging.31c3ee1",
|
|
69
|
+
"@dxos/messaging": "0.8.1-staging.31c3ee1",
|
|
70
|
+
"@dxos/network-manager": "0.8.1-staging.31c3ee1",
|
|
71
|
+
"@dxos/node-std": "0.8.1-staging.31c3ee1",
|
|
72
|
+
"@dxos/protocols": "0.8.1-staging.31c3ee1",
|
|
73
|
+
"@dxos/random-access-storage": "0.8.1-staging.31c3ee1",
|
|
74
|
+
"@dxos/rpc": "0.8.1-staging.31c3ee1",
|
|
75
|
+
"@dxos/teleport": "0.8.1-staging.31c3ee1",
|
|
76
|
+
"@dxos/teleport-extension-gossip": "0.8.1-staging.31c3ee1",
|
|
77
|
+
"@dxos/timeframe": "0.8.1-staging.31c3ee1",
|
|
78
|
+
"@dxos/teleport-extension-object-sync": "0.8.1-staging.31c3ee1",
|
|
79
|
+
"@dxos/tracing": "0.8.1-staging.31c3ee1",
|
|
80
|
+
"@dxos/util": "0.8.1-staging.31c3ee1",
|
|
81
|
+
"@dxos/websocket-rpc": "0.8.1-staging.31c3ee1"
|
|
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/
|
|
87
|
-
"@dxos/
|
|
87
|
+
"@dxos/test-utils": "0.8.1-staging.31c3ee1",
|
|
88
|
+
"@dxos/signal": "0.8.1-staging.31c3ee1"
|
|
88
89
|
},
|
|
89
90
|
"publishConfig": {
|
|
90
91
|
"access": "public"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2022 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { SubscriptionList } from '@dxos/async';
|
|
6
6
|
import { Stream } from '@dxos/codec-protobuf/stream';
|
|
7
7
|
import { type EdgeConnection } from '@dxos/edge-client';
|
|
8
8
|
import { invariant } from '@dxos/invariant';
|
|
@@ -82,7 +82,7 @@ export class DevicesServiceImpl implements DevicesService {
|
|
|
82
82
|
}
|
|
83
83
|
};
|
|
84
84
|
|
|
85
|
-
const subscriptions = new
|
|
85
|
+
const subscriptions = new SubscriptionList();
|
|
86
86
|
|
|
87
87
|
if (this._identityManager.identity) {
|
|
88
88
|
subscribeIdentity();
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2021 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { SubscriptionList } from '@dxos/async';
|
|
6
6
|
import { Stream } from '@dxos/codec-protobuf/stream';
|
|
7
7
|
import { type SpaceManager } from '@dxos/echo-pipeline';
|
|
8
8
|
import { FeedIterator, type FeedStore, type FeedWrapper } from '@dxos/feed-store';
|
|
@@ -27,7 +27,7 @@ export const subscribeToFeeds = (
|
|
|
27
27
|
{ feedKeys }: SubscribeToFeedsRequest,
|
|
28
28
|
) => {
|
|
29
29
|
return new Stream<SubscribeToFeedsResponse>(({ next }) => {
|
|
30
|
-
const subscriptions = new
|
|
30
|
+
const subscriptions = new SubscriptionList();
|
|
31
31
|
const feedMap = new ComplexMap<PublicKey, FeedInfo>(PublicKey.hash);
|
|
32
32
|
|
|
33
33
|
const update = () => {
|
|
@@ -90,7 +90,8 @@ export const subscribeToFeedBlocks = (
|
|
|
90
90
|
if (!feedKey) {
|
|
91
91
|
return;
|
|
92
92
|
}
|
|
93
|
-
|
|
93
|
+
|
|
94
|
+
const subscriptions = new SubscriptionList();
|
|
94
95
|
|
|
95
96
|
const timeout = setTimeout(async () => {
|
|
96
97
|
const feed = feedStore.getFeed(feedKey);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { scheduleTask, UpdateScheduler, SubscriptionList } from '@dxos/async';
|
|
6
6
|
import { Stream } from '@dxos/codec-protobuf/stream';
|
|
7
7
|
import { type MemberInfo } from '@dxos/credentials';
|
|
8
8
|
import { type SpaceManager } from '@dxos/echo-pipeline';
|
|
@@ -62,7 +62,7 @@ export class ContactsServiceImpl implements ContactsService {
|
|
|
62
62
|
{ maxFrequency: 2 },
|
|
63
63
|
);
|
|
64
64
|
scheduleTask(ctx, async () => {
|
|
65
|
-
const subscriptions = new
|
|
65
|
+
const subscriptions = new SubscriptionList();
|
|
66
66
|
ctx.onDispose(() => subscriptions.clear());
|
|
67
67
|
const subscribeToSpaceAndUpdate = () => {
|
|
68
68
|
const oldSetSize = subscribedSpaceKeySet.size;
|
|
@@ -132,6 +132,33 @@ export class EdgeIdentityRecoveryManager {
|
|
|
132
132
|
});
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
+
/**
|
|
136
|
+
* Recovery identity using an opaque token sent to the user's email.
|
|
137
|
+
*/
|
|
138
|
+
public async recoverIdentityWithToken({ token }: { token: string }) {
|
|
139
|
+
invariant(this._edgeClient, 'Not connected to EDGE.');
|
|
140
|
+
|
|
141
|
+
const deviceKey = await this._keyring.createKey();
|
|
142
|
+
const controlFeedKey = await this._keyring.createKey();
|
|
143
|
+
const request: EdgeRecoverIdentityRequest = {
|
|
144
|
+
deviceKey: deviceKey.toHex(),
|
|
145
|
+
controlFeedKey: controlFeedKey.toHex(),
|
|
146
|
+
token,
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
const response = await this._edgeClient.recoverIdentity(request);
|
|
150
|
+
|
|
151
|
+
await this._acceptRecoveredIdentity({
|
|
152
|
+
authorizedDeviceCredential: decodeCredential(response.deviceAuthCredential),
|
|
153
|
+
haloGenesisFeedKey: PublicKey.fromHex(response.genesisFeedKey),
|
|
154
|
+
haloSpaceKey: PublicKey.fromHex(response.haloSpaceKey),
|
|
155
|
+
identityKey: PublicKey.fromHex(response.identityKey),
|
|
156
|
+
deviceKey,
|
|
157
|
+
controlFeedKey,
|
|
158
|
+
dataFeedKey: await this._keyring.createKey(),
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
|
|
135
162
|
public async recoverIdentity({ recoveryCode }: { recoveryCode: string }) {
|
|
136
163
|
invariant(this._edgeClient, 'Not connected to EDGE.');
|
|
137
164
|
|
|
@@ -104,6 +104,8 @@ export class IdentityServiceImpl extends Resource implements IdentityService {
|
|
|
104
104
|
await this._recoveryManager.recoverIdentity({ recoveryCode: request.recoveryCode });
|
|
105
105
|
} else if (request.external) {
|
|
106
106
|
await this._recoveryManager.recoverIdentityWithExternalSignature(request.external);
|
|
107
|
+
} else if (request.token) {
|
|
108
|
+
await this._recoveryManager.recoverIdentityWithToken({ token: request.token });
|
|
107
109
|
} else {
|
|
108
110
|
throw new Error('Invalid request.');
|
|
109
111
|
}
|
|
@@ -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
|
+
});
|