@dxos/client-services 0.1.23 → 0.1.24-next.6b1f434

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 (126) hide show
  1. package/dist/lib/browser/chunk-ZPZBLOQW.mjs +4086 -0
  2. package/dist/lib/browser/chunk-ZPZBLOQW.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +66 -3066
  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 +198 -0
  7. package/dist/lib/browser/packlets/testing/index.mjs.map +7 -0
  8. package/dist/lib/node/index.cjs +1655 -669
  9. package/dist/lib/node/index.cjs.map +4 -4
  10. package/dist/lib/node/meta.json +1 -1
  11. package/dist/lib/node/packlets/testing/index.cjs +3806 -0
  12. package/dist/lib/node/packlets/testing/index.cjs.map +7 -0
  13. package/dist/types/src/packlets/deprecated/profile.d.ts +3 -1
  14. package/dist/types/src/packlets/deprecated/profile.d.ts.map +1 -1
  15. package/dist/types/src/packlets/deprecated/space.d.ts.map +1 -1
  16. package/dist/types/src/packlets/deprecated/system.d.ts +15 -9
  17. package/dist/types/src/packlets/deprecated/system.d.ts.map +1 -1
  18. package/dist/types/src/packlets/devtools/devtools.d.ts +2 -2
  19. package/dist/types/src/packlets/devtools/devtools.d.ts.map +1 -1
  20. package/dist/types/src/packlets/devtools/feeds.d.ts.map +1 -1
  21. package/dist/types/src/packlets/devtools/network.d.ts +3 -3
  22. package/dist/types/src/packlets/devtools/network.d.ts.map +1 -1
  23. package/dist/types/src/packlets/devtools/spaces.d.ts.map +1 -1
  24. package/dist/types/src/packlets/identity/authenticator.d.ts +2 -2
  25. package/dist/types/src/packlets/identity/authenticator.d.ts.map +1 -1
  26. package/dist/types/src/packlets/identity/identity-manager.d.ts +8 -2
  27. package/dist/types/src/packlets/identity/identity-manager.d.ts.map +1 -1
  28. package/dist/types/src/packlets/identity/identity.d.ts +3 -2
  29. package/dist/types/src/packlets/identity/identity.d.ts.map +1 -1
  30. package/dist/types/src/packlets/invitations/halo-invitations-handler.d.ts +11 -3
  31. package/dist/types/src/packlets/invitations/halo-invitations-handler.d.ts.map +1 -1
  32. package/dist/types/src/packlets/invitations/invitations.d.ts +1 -1
  33. package/dist/types/src/packlets/invitations/invitations.d.ts.map +1 -1
  34. package/dist/types/src/packlets/invitations/space-invitations-handler.d.ts +1 -1
  35. package/dist/types/src/packlets/invitations/space-invitations-handler.d.ts.map +1 -1
  36. package/dist/types/src/packlets/services/service-context.d.ts +3 -1
  37. package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
  38. package/dist/types/src/packlets/services/service-context.test.d.ts +2 -0
  39. package/dist/types/src/packlets/services/service-context.test.d.ts.map +1 -0
  40. package/dist/types/src/packlets/services/service-definitions.d.ts +1 -1
  41. package/dist/types/src/packlets/services/service-definitions.d.ts.map +1 -1
  42. package/dist/types/src/packlets/services/service-host.d.ts +9 -6
  43. package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
  44. package/dist/types/src/packlets/services/service-registry.d.ts +4 -3
  45. package/dist/types/src/packlets/services/service-registry.d.ts.map +1 -1
  46. package/dist/types/src/packlets/spaces/data-space-manager.d.ts +9 -2
  47. package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
  48. package/dist/types/src/packlets/spaces/data-space.d.ts +18 -4
  49. package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
  50. package/dist/types/src/packlets/spaces/notarization-plugin.d.ts +50 -0
  51. package/dist/types/src/packlets/spaces/notarization-plugin.d.ts.map +1 -0
  52. package/dist/types/src/packlets/spaces/notarization-plugin.test.d.ts +2 -0
  53. package/dist/types/src/packlets/spaces/notarization-plugin.test.d.ts.map +1 -0
  54. package/dist/types/src/packlets/spaces/spaces-service.d.ts +3 -2
  55. package/dist/types/src/packlets/spaces/spaces-service.d.ts.map +1 -1
  56. package/dist/types/src/packlets/testing/credential-utils.d.ts +8 -0
  57. package/dist/types/src/packlets/testing/credential-utils.d.ts.map +1 -0
  58. package/dist/types/src/packlets/testing/index.d.ts +2 -0
  59. package/dist/types/src/packlets/testing/index.d.ts.map +1 -1
  60. package/dist/types/src/packlets/testing/invitation-utils.d.ts +3 -0
  61. package/dist/types/src/packlets/testing/invitation-utils.d.ts.map +1 -0
  62. package/dist/types/src/packlets/testing/test-builder.d.ts +2 -2
  63. package/dist/types/src/packlets/testing/test-builder.d.ts.map +1 -1
  64. package/dist/types/src/packlets/vault/iframe-host-runtime.d.ts +35 -0
  65. package/dist/types/src/packlets/vault/iframe-host-runtime.d.ts.map +1 -0
  66. package/dist/types/src/packlets/vault/{iframe-runtime.d.ts → iframe-proxy-runtime.d.ts} +9 -4
  67. package/dist/types/src/packlets/vault/iframe-proxy-runtime.d.ts.map +1 -0
  68. package/dist/types/src/packlets/vault/index.d.ts +6 -1
  69. package/dist/types/src/packlets/vault/index.d.ts.map +1 -1
  70. package/dist/types/src/packlets/vault/services.d.ts +9 -1
  71. package/dist/types/src/packlets/vault/services.d.ts.map +1 -1
  72. package/dist/types/src/packlets/vault/shell-controller.d.ts +24 -0
  73. package/dist/types/src/packlets/vault/shell-controller.d.ts.map +1 -0
  74. package/dist/types/src/packlets/vault/shell-runtime.d.ts +45 -0
  75. package/dist/types/src/packlets/vault/shell-runtime.d.ts.map +1 -0
  76. package/dist/types/src/packlets/vault/vault-resource-lock.d.ts +19 -0
  77. package/dist/types/src/packlets/vault/vault-resource-lock.d.ts.map +1 -0
  78. package/dist/types/src/packlets/vault/worker-runtime.d.ts +2 -1
  79. package/dist/types/src/packlets/vault/worker-runtime.d.ts.map +1 -1
  80. package/dist/types/src/packlets/vault/worker-session.d.ts +7 -4
  81. package/dist/types/src/packlets/vault/worker-session.d.ts.map +1 -1
  82. package/package.json +30 -29
  83. package/src/packlets/deprecated/profile.ts +20 -2
  84. package/src/packlets/deprecated/space.ts +41 -37
  85. package/src/packlets/deprecated/system.ts +26 -13
  86. package/src/packlets/devtools/devtools.ts +4 -4
  87. package/src/packlets/devtools/feeds.ts +11 -6
  88. package/src/packlets/devtools/network.ts +20 -9
  89. package/src/packlets/devtools/spaces.ts +8 -7
  90. package/src/packlets/identity/authenticator.ts +12 -7
  91. package/src/packlets/identity/identity-manager.test.ts +25 -16
  92. package/src/packlets/identity/identity-manager.ts +23 -9
  93. package/src/packlets/identity/identity.test.ts +22 -23
  94. package/src/packlets/identity/identity.ts +11 -6
  95. package/src/packlets/invitations/halo-invitations-handler.test.ts +4 -45
  96. package/src/packlets/invitations/halo-invitations-handler.ts +33 -17
  97. package/src/packlets/invitations/invitations.ts +2 -1
  98. package/src/packlets/invitations/space-invitations-handler.test.ts +43 -26
  99. package/src/packlets/invitations/space-invitations-handler.ts +9 -12
  100. package/src/packlets/services/service-context.test.ts +56 -0
  101. package/src/packlets/services/service-context.ts +62 -6
  102. package/src/packlets/services/service-definitions.ts +1 -1
  103. package/src/packlets/services/service-host.test.ts +74 -5
  104. package/src/packlets/services/service-host.ts +86 -24
  105. package/src/packlets/services/service-registry.test.ts +2 -1
  106. package/src/packlets/services/service-registry.ts +5 -1
  107. package/src/packlets/spaces/data-space-manager.test.ts +72 -15
  108. package/src/packlets/spaces/data-space-manager.ts +53 -12
  109. package/src/packlets/spaces/data-space.ts +113 -14
  110. package/src/packlets/spaces/notarization-plugin.test.ts +81 -0
  111. package/src/packlets/spaces/notarization-plugin.ts +211 -0
  112. package/src/packlets/spaces/spaces-service.ts +10 -2
  113. package/src/packlets/testing/credential-utils.ts +28 -0
  114. package/src/packlets/testing/index.ts +2 -0
  115. package/src/packlets/testing/invitation-utils.ts +44 -0
  116. package/src/packlets/testing/test-builder.ts +14 -18
  117. package/src/packlets/vault/iframe-host-runtime.ts +131 -0
  118. package/src/packlets/vault/{iframe-runtime.ts → iframe-proxy-runtime.ts} +18 -3
  119. package/src/packlets/vault/index.ts +6 -1
  120. package/src/packlets/vault/services.ts +17 -1
  121. package/src/packlets/vault/shell-controller.ts +77 -0
  122. package/src/packlets/vault/shell-runtime.ts +133 -0
  123. package/src/packlets/vault/vault-resource-lock.ts +76 -0
  124. package/src/packlets/vault/worker-runtime.ts +16 -4
  125. package/src/packlets/vault/worker-session.ts +36 -26
  126. package/dist/types/src/packlets/vault/iframe-runtime.d.ts.map +0 -1
@@ -4,19 +4,20 @@
4
4
 
5
5
  import assert from 'node:assert';
6
6
 
7
- import { Trigger } from '@dxos/async';
7
+ import { asyncTimeout, Trigger } from '@dxos/async';
8
8
  import { log, logInfo } from '@dxos/log';
9
9
  import { BridgeService } from '@dxos/protocols/proto/dxos/mesh/bridge';
10
10
  import { createProtoRpcPeer, ProtoRpcPeer, RpcPort } from '@dxos/rpc';
11
11
  import { Callback } from '@dxos/util';
12
12
 
13
- import { clientServiceBundle, ClientServices, ClientServicesHost } from '../services';
13
+ import { clientServiceBundle, ClientServices } from '../services';
14
14
  import { IframeServiceBundle, iframeServiceBundle, workerServiceBundle } from './services';
15
15
 
16
16
  export type WorkerSessionParams = {
17
- getServices: () => Promise<ClientServicesHost>;
17
+ getService: <Service>(find: (services: Partial<ClientServices>) => Service | undefined) => Promise<Service>;
18
18
  systemPort: RpcPort;
19
19
  appPort: RpcPort;
20
+ shellPort: RpcPort;
20
21
  readySignal: Trigger<Error | undefined>;
21
22
  options?: {
22
23
  heartbeatInterval: number;
@@ -28,9 +29,10 @@ export type WorkerSessionParams = {
28
29
  */
29
30
  export class WorkerSession {
30
31
  private readonly _clientRpc: ProtoRpcPeer<ClientServices>;
32
+ private readonly _shellClientRpc: ProtoRpcPeer<ClientServices>;
31
33
  private readonly _iframeRpc: ProtoRpcPeer<IframeServiceBundle>;
32
34
  private readonly _startTrigger = new Trigger();
33
- private readonly _getServices: () => Promise<ClientServicesHost>;
35
+ private readonly _getService: WorkerSessionParams['getService'];
34
36
  private readonly _options: NonNullable<WorkerSessionParams['options']>;
35
37
  private _heartbeatTimer?: NodeJS.Timeout;
36
38
 
@@ -42,35 +44,35 @@ export class WorkerSession {
42
44
  public bridgeService?: BridgeService;
43
45
 
44
46
  constructor({
45
- getServices,
47
+ getService,
46
48
  systemPort,
47
49
  appPort,
50
+ shellPort,
48
51
  options = {
49
52
  heartbeatInterval: 1_000
50
53
  }
51
54
  }: WorkerSessionParams) {
52
55
  assert(options);
53
- assert(getServices);
56
+ assert(getService);
54
57
  this._options = options;
55
- this._getServices = getServices;
56
-
57
- this._clientRpc = createProtoRpcPeer({
58
- exposed: clientServiceBundle,
59
- handlers: {
60
- HaloInvitationsService: async () => (await this._getServices()).services.HaloInvitationsService,
61
- DevicesService: async () => (await this._getServices()).services.DevicesService,
62
- SpaceInvitationsService: async () => (await this._getServices()).services.SpaceInvitationsService,
63
- SpacesService: async () => (await this._getServices()).services.SpacesService,
64
- NetworkService: async () => (await this._getServices()).services.NetworkService,
65
- SpaceService: async () => (await this._getServices()).services.SpaceService,
66
- DataService: async () => (await this._getServices()).services.DataService,
67
- ProfileService: async () => (await this._getServices()).services.ProfileService,
68
- SystemService: async () => (await this._getServices()).services.SystemService,
69
- DevtoolsHost: async () => (await this._getServices()).services.DevtoolsHost,
70
- TracingService: async () => (await this._getServices()).services.TracingService
71
- },
72
- port: appPort
73
- });
58
+ this._getService = getService;
59
+
60
+ const handlers = {
61
+ DataService: async () => await this._getService((services) => services.DataService),
62
+ DevicesService: async () => await this._getService((services) => services.DevicesService),
63
+ DevtoolsHost: async () => await this._getService((services) => services.DevtoolsHost),
64
+ HaloInvitationsService: async () => await this._getService((services) => services.HaloInvitationsService),
65
+ NetworkService: async () => await this._getService((services) => services.NetworkService),
66
+ ProfileService: async () => await this._getService((services) => services.ProfileService),
67
+ SpaceInvitationsService: async () => await this._getService((services) => services.SpaceInvitationsService),
68
+ SpaceService: async () => await this._getService((services) => services.SpaceService),
69
+ SpacesService: async () => await this._getService((services) => services.SpacesService),
70
+ SystemService: async () => await this._getService((services) => services.SystemService),
71
+ TracingService: async () => await this._getService((services) => services.TracingService)
72
+ };
73
+
74
+ this._clientRpc = createProtoRpcPeer({ exposed: clientServiceBundle, handlers, port: appPort });
75
+ this._shellClientRpc = createProtoRpcPeer({ exposed: clientServiceBundle, handlers, port: shellPort });
74
76
 
75
77
  this._iframeRpc = createProtoRpcPeer({
76
78
  requested: iframeServiceBundle,
@@ -102,7 +104,7 @@ export class WorkerSession {
102
104
 
103
105
  async open() {
104
106
  log.info('opening..');
105
- await Promise.all([this._clientRpc.open(), this._iframeRpc.open()]);
107
+ await Promise.all([this._clientRpc.open(), this._iframeRpc.open(), this._maybeOpenShell()]);
106
108
 
107
109
  await this._startTrigger.wait({ timeout: 3_000 });
108
110
 
@@ -137,4 +139,12 @@ export class WorkerSession {
137
139
 
138
140
  await Promise.all([this._clientRpc.close(), this._iframeRpc.close()]);
139
141
  }
142
+
143
+ private async _maybeOpenShell() {
144
+ try {
145
+ await asyncTimeout(this._shellClientRpc.open(), 1_000);
146
+ } catch {
147
+ log.info('No shell connected.');
148
+ }
149
+ }
140
150
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"iframe-runtime.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/vault/iframe-runtime.ts"],"names":[],"mappings":"AAMA,OAAO,EAAoC,OAAO,EAAE,MAAM,WAAW,CAAC;AAKtE,oBAAY,mBAAmB,GAAG;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAC/D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;gBAEtD,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,mBAAmB;IAwBvE,IAAI,CAAC,MAAM,EAAE,MAAM;IAKnB,KAAK;CAIZ"}