@dxos/client-services 0.7.5-main.9d2a38b → 0.7.5-main.e9bb01b
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/browser/{chunk-RFZHCLFI.mjs → chunk-O46EJ5BJ.mjs} +69 -55
- package/dist/lib/browser/chunk-O46EJ5BJ.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-WCTGAZLA.cjs → chunk-WFDMSV4I.cjs} +67 -53
- package/dist/lib/node/chunk-WFDMSV4I.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/node-esm/{chunk-RSOLUJE6.mjs → chunk-UWR5XM7L.mjs} +69 -55
- package/dist/lib/node-esm/chunk-UWR5XM7L.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/invitations/invitations-handler.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/space-invitation-protocol.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/utils.d.ts +1 -0
- package/dist/types/src/packlets/invitations/utils.d.ts.map +1 -1
- package/dist/types/src/version.d.ts +1 -1
- package/package.json +38 -38
- package/src/packlets/invitations/invitations-handler.ts +15 -6
- package/src/packlets/invitations/invitations-manager.ts +1 -1
- package/src/packlets/invitations/space-invitation-protocol.ts +2 -3
- package/src/packlets/invitations/utils.ts +7 -0
- package/src/packlets/spaces/data-space-manager.ts +1 -1
- package/src/version.ts +1 -1
- package/dist/lib/browser/chunk-RFZHCLFI.mjs.map +0 -7
- package/dist/lib/node/chunk-WCTGAZLA.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-RSOLUJE6.mjs.map +0 -7
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
InvitationsManager,
|
|
7
7
|
ServiceContext,
|
|
8
8
|
SpaceInvitationProtocol
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-UWR5XM7L.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":"invitations-handler.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/invitations/invitations-handler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAA8B,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAExF,OAAO,EAAE,KAAK,OAAO,EAAwB,MAAM,eAAe,CAAC;AAQnE,OAAO,EAAE,KAAK,gBAAgB,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAC/F,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AAGzF,OAAO,EAAiD,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIpG,OAAO,EAAE,KAAK,oBAAoB,EAAyB,MAAM,2BAA2B,CAAC;AAG7F,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAQhE,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAClC,eAAe,CAAC,EAAE,oBAAoB,CAAC;CACxC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,kBAAkB;IAK3B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAGrC,oBAAoB,CAClB,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,EAC9B,QAAQ,EAAE,kBAAkB,EAC5B,UAAU,EAAE,UAAU,GACrB,IAAI;
|
|
1
|
+
{"version":3,"file":"invitations-handler.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/invitations/invitations-handler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAA8B,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAExF,OAAO,EAAE,KAAK,OAAO,EAAwB,MAAM,eAAe,CAAC;AAQnE,OAAO,EAAE,KAAK,gBAAgB,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAC/F,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AAGzF,OAAO,EAAiD,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIpG,OAAO,EAAE,KAAK,oBAAoB,EAAyB,MAAM,2BAA2B,CAAC;AAG7F,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAQhE,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAClC,eAAe,CAAC,EAAE,oBAAoB,CAAC;CACxC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,kBAAkB;IAK3B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAGrC,oBAAoB,CAClB,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,EAC9B,QAAQ,EAAE,kBAAkB,EAC5B,UAAU,EAAE,UAAU,GACrB,IAAI;IAyIP,gBAAgB,CACd,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,EAC9B,QAAQ,EAAE,kBAAkB,EAC5B,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,EAClC,aAAa,CAAC,EAAE,qBAAqB,GACpC,IAAI;YAuMO,UAAU;YA0BV,mBAAmB;YA6BnB,mBAAmB;CAqBlC;AAUD,eAAO,MAAM,sBAAsB,QAAO,gBAGzC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"space-invitation-protocol.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/invitations/space-invitation-protocol.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EACL,kBAAkB,EAClB,KAAK,QAAQ,EAEb,sBAAsB,EAEvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACxE,OAAO,EAAe,KAAK,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAChG,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACzB,MAAM,6CAA6C,CAAC;AAErD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"space-invitation-protocol.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/invitations/space-invitation-protocol.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EACL,kBAAkB,EAClB,KAAK,QAAQ,EAEb,sBAAsB,EAEvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACxE,OAAO,EAAe,KAAK,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAChG,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACzB,MAAM,6CAA6C,CAAC;AAErD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAEvE,qBAAa,uBAAwB,YAAW,kBAAkB;IAE9D,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAHV,aAAa,EAAE,gBAAgB,EAC/B,eAAe,EAAE,cAAc,EAC/B,QAAQ,EAAE,OAAO,EACjB,SAAS,CAAC,EAAE,SAAS,YAAA;IAGxC,MAAM,IAAI,MAAM;IAQhB,wBAAwB,IAAI,QAAQ,GAAG,SAAS;IAchD,oBAAoB,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC;IAWhE,KAAK,CACT,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,gBAAgB,EACzB,YAAY,CAAC,EAAE,eAAe,GAAG,SAAS,GACzC,OAAO,CAAC,iBAAiB,CAAC;IAqBvB,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IA+BpD,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB7D,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC;IAS/C,kBAAkB,IAAI,mBAAmB;IAMnC,sBAAsB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAenD,MAAM,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;CAuBxE"}
|
|
@@ -2,5 +2,6 @@ import { type Mutex, type MutexGuard } from '@dxos/async';
|
|
|
2
2
|
import { type Context } from '@dxos/context';
|
|
3
3
|
import { Invitation } from '@dxos/protocols/proto/dxos/client/services';
|
|
4
4
|
export declare const stateToString: (state: Invitation.State) => string;
|
|
5
|
+
export declare const computeExpirationTime: (invitation: Partial<Invitation>) => Date | undefined;
|
|
5
6
|
export declare const tryAcquireBeforeContextDisposed: (ctx: Context, mutex: Mutex) => Promise<MutexGuard>;
|
|
6
7
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/invitations/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAqB,KAAK,OAAO,EAAwB,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAExE,eAAO,MAAM,aAAa,UAAW,UAAU,CAAC,KAAK,KAAG,MAEvD,CAAC;AAEF,eAAO,MAAM,+BAA+B,QAAe,OAAO,SAAS,KAAK,KAAG,OAAO,CAAC,UAAU,CAcpG,CAAC"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/invitations/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAqB,KAAK,OAAO,EAAwB,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAExE,eAAO,MAAM,aAAa,UAAW,UAAU,CAAC,KAAK,KAAG,MAEvD,CAAC;AAEF,eAAO,MAAM,qBAAqB,eAAgB,OAAO,CAAC,UAAU,CAAC,KAAG,IAAI,GAAG,SAK9E,CAAC;AAEF,eAAO,MAAM,+BAA+B,QAAe,OAAO,SAAS,KAAK,KAAG,OAAO,CAAC,UAAU,CAcpG,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const DXOS_VERSION = "0.7.5-main.
|
|
1
|
+
export declare const DXOS_VERSION = "0.7.5-main.e9bb01b";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/client-services",
|
|
3
|
-
"version": "0.7.5-main.
|
|
3
|
+
"version": "0.7.5-main.e9bb01b",
|
|
4
4
|
"description": "DXOS client services implementation",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -42,48 +42,48 @@
|
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"cbor-x": "^1.5.4",
|
|
44
44
|
"platform": "^1.3.6",
|
|
45
|
-
"@dxos/async": "0.7.5-main.
|
|
46
|
-
"@dxos/automerge": "0.7.5-main.
|
|
47
|
-
"@dxos/client-protocol": "0.7.5-main.
|
|
48
|
-
"@dxos/
|
|
49
|
-
"@dxos/
|
|
50
|
-
"@dxos/
|
|
51
|
-
"@dxos/
|
|
52
|
-
"@dxos/crypto": "0.7.5-main.
|
|
53
|
-
"@dxos/debug": "0.7.5-main.
|
|
54
|
-
"@dxos/echo-db": "0.7.5-main.
|
|
55
|
-
"@dxos/echo-pipeline": "0.7.5-main.
|
|
56
|
-
"@dxos/echo-protocol": "0.7.5-main.
|
|
57
|
-
"@dxos/echo-schema": "0.7.5-main.
|
|
58
|
-
"@dxos/edge-client": "0.7.5-main.
|
|
59
|
-
"@dxos/feed-store": "0.7.5-main.
|
|
60
|
-
"@dxos/indexing": "0.7.5-main.
|
|
61
|
-
"@dxos/
|
|
62
|
-
"@dxos/
|
|
63
|
-
"@dxos/
|
|
64
|
-
"@dxos/
|
|
65
|
-
"@dxos/lock-file": "0.7.5-main.
|
|
66
|
-
"@dxos/log": "0.7.5-main.
|
|
67
|
-
"@dxos/messaging": "0.7.5-main.
|
|
68
|
-
"@dxos/network-manager": "0.7.5-main.
|
|
69
|
-
"@dxos/node-std": "0.7.5-main.
|
|
70
|
-
"@dxos/
|
|
71
|
-
"@dxos/
|
|
72
|
-
"@dxos/
|
|
73
|
-
"@dxos/teleport-extension-gossip": "0.7.5-main.
|
|
74
|
-
"@dxos/
|
|
75
|
-
"@dxos/
|
|
76
|
-
"@dxos/
|
|
77
|
-
"@dxos/tracing": "0.7.5-main.
|
|
78
|
-
"@dxos/util": "0.7.5-main.
|
|
79
|
-
"@dxos/websocket-rpc": "0.7.5-main.
|
|
45
|
+
"@dxos/async": "0.7.5-main.e9bb01b",
|
|
46
|
+
"@dxos/automerge": "0.7.5-main.e9bb01b",
|
|
47
|
+
"@dxos/client-protocol": "0.7.5-main.e9bb01b",
|
|
48
|
+
"@dxos/config": "0.7.5-main.e9bb01b",
|
|
49
|
+
"@dxos/codec-protobuf": "0.7.5-main.e9bb01b",
|
|
50
|
+
"@dxos/credentials": "0.7.5-main.e9bb01b",
|
|
51
|
+
"@dxos/context": "0.7.5-main.e9bb01b",
|
|
52
|
+
"@dxos/crypto": "0.7.5-main.e9bb01b",
|
|
53
|
+
"@dxos/debug": "0.7.5-main.e9bb01b",
|
|
54
|
+
"@dxos/echo-db": "0.7.5-main.e9bb01b",
|
|
55
|
+
"@dxos/echo-pipeline": "0.7.5-main.e9bb01b",
|
|
56
|
+
"@dxos/echo-protocol": "0.7.5-main.e9bb01b",
|
|
57
|
+
"@dxos/echo-schema": "0.7.5-main.e9bb01b",
|
|
58
|
+
"@dxos/edge-client": "0.7.5-main.e9bb01b",
|
|
59
|
+
"@dxos/feed-store": "0.7.5-main.e9bb01b",
|
|
60
|
+
"@dxos/indexing": "0.7.5-main.e9bb01b",
|
|
61
|
+
"@dxos/kv-store": "0.7.5-main.e9bb01b",
|
|
62
|
+
"@dxos/keys": "0.7.5-main.e9bb01b",
|
|
63
|
+
"@dxos/invariant": "0.7.5-main.e9bb01b",
|
|
64
|
+
"@dxos/keyring": "0.7.5-main.e9bb01b",
|
|
65
|
+
"@dxos/lock-file": "0.7.5-main.e9bb01b",
|
|
66
|
+
"@dxos/log": "0.7.5-main.e9bb01b",
|
|
67
|
+
"@dxos/messaging": "0.7.5-main.e9bb01b",
|
|
68
|
+
"@dxos/network-manager": "0.7.5-main.e9bb01b",
|
|
69
|
+
"@dxos/node-std": "0.7.5-main.e9bb01b",
|
|
70
|
+
"@dxos/random-access-storage": "0.7.5-main.e9bb01b",
|
|
71
|
+
"@dxos/protocols": "0.7.5-main.e9bb01b",
|
|
72
|
+
"@dxos/teleport": "0.7.5-main.e9bb01b",
|
|
73
|
+
"@dxos/teleport-extension-gossip": "0.7.5-main.e9bb01b",
|
|
74
|
+
"@dxos/rpc": "0.7.5-main.e9bb01b",
|
|
75
|
+
"@dxos/teleport-extension-object-sync": "0.7.5-main.e9bb01b",
|
|
76
|
+
"@dxos/timeframe": "0.7.5-main.e9bb01b",
|
|
77
|
+
"@dxos/tracing": "0.7.5-main.e9bb01b",
|
|
78
|
+
"@dxos/util": "0.7.5-main.e9bb01b",
|
|
79
|
+
"@dxos/websocket-rpc": "0.7.5-main.e9bb01b"
|
|
80
80
|
},
|
|
81
81
|
"devDependencies": {
|
|
82
82
|
"@types/platform": "^1.3.4",
|
|
83
83
|
"@types/readable-stream": "^2.3.9",
|
|
84
84
|
"get-port-please": "^3.1.1",
|
|
85
|
-
"@dxos/signal": "0.7.5-main.
|
|
86
|
-
"@dxos/test-utils": "0.7.5-main.
|
|
85
|
+
"@dxos/signal": "0.7.5-main.e9bb01b",
|
|
86
|
+
"@dxos/test-utils": "0.7.5-main.e9bb01b"
|
|
87
87
|
},
|
|
88
88
|
"publishConfig": {
|
|
89
89
|
"access": "public"
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { type PushStream, scheduleTask, TimeoutError, type Trigger } from '@dxos/async';
|
|
6
|
-
import { INVITATION_TIMEOUT } from '@dxos/client-protocol';
|
|
6
|
+
import { INVITATION_TIMEOUT, getExpirationTime } from '@dxos/client-protocol';
|
|
7
7
|
import { type Context, ContextDisposedError } from '@dxos/context';
|
|
8
8
|
import { createKeyPair, sign } from '@dxos/crypto';
|
|
9
9
|
import { type EdgeHttpClient } from '@dxos/edge-client';
|
|
@@ -11,7 +11,7 @@ import { invariant } from '@dxos/invariant';
|
|
|
11
11
|
import { PublicKey } from '@dxos/keys';
|
|
12
12
|
import { log } from '@dxos/log';
|
|
13
13
|
import { createTeleportProtocolFactory, type SwarmNetworkManager, type SwarmConnection } from '@dxos/network-manager';
|
|
14
|
-
import { InvalidInvitationExtensionRoleError, trace } from '@dxos/protocols';
|
|
14
|
+
import { InvalidInvitationError, InvalidInvitationExtensionRoleError, trace } from '@dxos/protocols';
|
|
15
15
|
import { type AdmissionKeypair, Invitation } from '@dxos/protocols/proto/dxos/client/services';
|
|
16
16
|
import { type DeviceProfileDocument } from '@dxos/protocols/proto/dxos/halo/credentials';
|
|
17
17
|
import { AuthenticationResponse, type IntroductionResponse } from '@dxos/protocols/proto/dxos/halo/invitations';
|
|
@@ -188,8 +188,9 @@ export class InvitationsHandler {
|
|
|
188
188
|
return extension;
|
|
189
189
|
};
|
|
190
190
|
|
|
191
|
-
|
|
192
|
-
|
|
191
|
+
const expiresOn = getExpirationTime(invitation);
|
|
192
|
+
if (expiresOn) {
|
|
193
|
+
if (expiresOn.getTime() < Date.now()) {
|
|
193
194
|
log.warn('invitation has already expired');
|
|
194
195
|
guardedState.set(null, Invitation.State.EXPIRED);
|
|
195
196
|
void ctx.dispose().catch((err) => log.catch(err));
|
|
@@ -204,7 +205,7 @@ export class InvitationsHandler {
|
|
|
204
205
|
metrics.increment('dxos.invitation.expired');
|
|
205
206
|
await ctx.dispose();
|
|
206
207
|
},
|
|
207
|
-
|
|
208
|
+
expiresOn.getTime() - Date.now(),
|
|
208
209
|
);
|
|
209
210
|
}
|
|
210
211
|
|
|
@@ -397,7 +398,7 @@ export class InvitationsHandler {
|
|
|
397
398
|
edgeInvitationHandler.handle(ctx, guardedState, protocol, deviceProfile);
|
|
398
399
|
|
|
399
400
|
scheduleTask(ctx, async () => {
|
|
400
|
-
const error =
|
|
401
|
+
const error = checkInvitation(protocol, invitation);
|
|
401
402
|
if (error) {
|
|
402
403
|
stream.error(error);
|
|
403
404
|
await ctx.dispose();
|
|
@@ -499,6 +500,14 @@ export class InvitationsHandler {
|
|
|
499
500
|
}
|
|
500
501
|
}
|
|
501
502
|
|
|
503
|
+
const checkInvitation = (protocol: InvitationProtocol, invitation: Partial<Invitation>) => {
|
|
504
|
+
const expiresOn = getExpirationTime(invitation);
|
|
505
|
+
if (expiresOn && expiresOn.getTime() < Date.now()) {
|
|
506
|
+
return new InvalidInvitationError('Invitation already expired.');
|
|
507
|
+
}
|
|
508
|
+
return protocol.checkInvitation(invitation);
|
|
509
|
+
};
|
|
510
|
+
|
|
502
511
|
export const createAdmissionKeypair = (): AdmissionKeypair => {
|
|
503
512
|
const keypair = createKeyPair();
|
|
504
513
|
return { publicKey: PublicKey.from(keypair.publicKey), privateKey: keypair.secretKey };
|
|
@@ -202,7 +202,7 @@ export class InvitationsManager {
|
|
|
202
202
|
created = new Date(),
|
|
203
203
|
guestKeypair = undefined,
|
|
204
204
|
role = SpaceMember.Role.ADMIN,
|
|
205
|
-
lifetime = 86400, //
|
|
205
|
+
lifetime = 86400 * 7, // 7 days,
|
|
206
206
|
multiUse = false,
|
|
207
207
|
...options
|
|
208
208
|
} = _options ?? {};
|
|
@@ -28,6 +28,7 @@ import {
|
|
|
28
28
|
} from '@dxos/protocols/proto/dxos/halo/invitations';
|
|
29
29
|
|
|
30
30
|
import { type InvitationProtocol } from './invitation-protocol';
|
|
31
|
+
import { computeExpirationTime } from './utils';
|
|
31
32
|
import { type DataSpaceManager, type SigningContext } from '../spaces';
|
|
32
33
|
|
|
33
34
|
export class SpaceInvitationProtocol implements InvitationProtocol {
|
|
@@ -113,9 +114,7 @@ export class SpaceInvitationProtocol implements InvitationProtocol {
|
|
|
113
114
|
authMethod: invitation.authMethod,
|
|
114
115
|
swarmKey: invitation.swarmKey,
|
|
115
116
|
role: invitation.role ?? SpaceMember.Role.ADMIN,
|
|
116
|
-
expiresOn: invitation
|
|
117
|
-
? new Date((invitation.created?.getTime() ?? Date.now()) + invitation.lifetime)
|
|
118
|
-
: undefined,
|
|
117
|
+
expiresOn: computeExpirationTime(invitation),
|
|
119
118
|
multiUse: invitation.multiUse ?? false,
|
|
120
119
|
guestKey:
|
|
121
120
|
invitation.authMethod === Invitation.AuthMethod.KNOWN_PUBLIC_KEY
|
|
@@ -10,6 +10,13 @@ export const stateToString = (state: Invitation.State): string => {
|
|
|
10
10
|
return Object.entries(Invitation.State).find(([key, val]) => val === state)?.[0] ?? 'unknown';
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
+
export const computeExpirationTime = (invitation: Partial<Invitation>): Date | undefined => {
|
|
14
|
+
if (!invitation.lifetime) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
return new Date((invitation.created?.getTime() ?? Date.now()) + invitation.lifetime * 1000);
|
|
18
|
+
};
|
|
19
|
+
|
|
13
20
|
export const tryAcquireBeforeContextDisposed = async (ctx: Context, mutex: Mutex): Promise<MutexGuard> => {
|
|
14
21
|
let guard: MutexGuard | undefined;
|
|
15
22
|
return cancelWithContext(
|
|
@@ -609,7 +609,7 @@ export class DataSpaceManager extends Resource {
|
|
|
609
609
|
invitationId: invitation.invitationId,
|
|
610
610
|
swarmKey: invitation.swarmKey,
|
|
611
611
|
guestKeypair: invitation.guestKey ? { publicKey: invitation.guestKey } : undefined,
|
|
612
|
-
lifetime: invitation.expiresOn ? invitation.expiresOn.getTime() - Date.now() : undefined,
|
|
612
|
+
lifetime: invitation.expiresOn ? (invitation.expiresOn.getTime() - Date.now()) / 1000 : undefined,
|
|
613
613
|
multiUse: invitation.multiUse,
|
|
614
614
|
delegationCredentialId: credentialId,
|
|
615
615
|
persistent: false,
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const DXOS_VERSION = "0.7.5-main.
|
|
1
|
+
export const DXOS_VERSION = "0.7.5-main.e9bb01b";
|