@dxos/protocols 0.8.0 → 0.8.1-main.81238a8

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 (88) hide show
  1. package/dist/cjs/src/buf/proto/gen/dxos/client/services_pb.d.ts +104 -1
  2. package/dist/cjs/src/buf/proto/gen/dxos/client/services_pb.d.ts.map +1 -1
  3. package/dist/cjs/src/buf/proto/gen/dxos/client/services_pb.js +44 -19
  4. package/dist/cjs/src/buf/proto/gen/dxos/client/services_pb.js.map +1 -1
  5. package/dist/cjs/src/buf/proto/gen/dxos/edge/signal_pb.d.ts +14 -0
  6. package/dist/cjs/src/buf/proto/gen/dxos/edge/signal_pb.d.ts.map +1 -1
  7. package/dist/cjs/src/buf/proto/gen/dxos/edge/signal_pb.js +11 -6
  8. package/dist/cjs/src/buf/proto/gen/dxos/edge/signal_pb.js.map +1 -1
  9. package/dist/cjs/src/edge-error.d.ts +26 -0
  10. package/dist/cjs/src/edge-error.d.ts.map +1 -0
  11. package/dist/cjs/src/edge-error.js +63 -0
  12. package/dist/cjs/src/edge-error.js.map +1 -0
  13. package/dist/cjs/src/edge.d.ts +25 -25
  14. package/dist/cjs/src/edge.d.ts.map +1 -1
  15. package/dist/cjs/src/edge.js +13 -57
  16. package/dist/cjs/src/edge.js.map +1 -1
  17. package/dist/cjs/src/index.d.ts +2 -0
  18. package/dist/cjs/src/index.d.ts.map +1 -1
  19. package/dist/cjs/src/index.js +2 -0
  20. package/dist/cjs/src/index.js.map +1 -1
  21. package/dist/cjs/src/invitation.d.ts +1 -1
  22. package/dist/cjs/src/invitation.d.ts.map +1 -1
  23. package/dist/cjs/src/invitation.js +6 -5
  24. package/dist/cjs/src/invitation.js.map +1 -1
  25. package/dist/cjs/src/proto/gen/dxos/client/services.d.ts +45 -0
  26. package/dist/cjs/src/proto/gen/dxos/client/services.d.ts.map +1 -1
  27. package/dist/cjs/src/proto/gen/dxos/client/services.js.map +1 -1
  28. package/dist/cjs/src/proto/gen/dxos/edge/signal.d.ts +7 -0
  29. package/dist/cjs/src/proto/gen/dxos/edge/signal.d.ts.map +1 -1
  30. package/dist/cjs/src/proto/gen/index.d.ts +6 -0
  31. package/dist/cjs/src/proto/gen/index.d.ts.map +1 -1
  32. package/dist/cjs/src/proto/gen/index.js +1 -1
  33. package/dist/cjs/src/proto/gen/index.js.map +1 -1
  34. package/dist/cjs/src/space-archive.d.ts +55 -0
  35. package/dist/cjs/src/space-archive.d.ts.map +1 -0
  36. package/dist/cjs/src/space-archive.js +29 -0
  37. package/dist/cjs/src/space-archive.js.map +1 -0
  38. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  39. package/dist/esm/src/buf/proto/gen/dxos/client/services_pb.d.ts +104 -1
  40. package/dist/esm/src/buf/proto/gen/dxos/client/services_pb.d.ts.map +1 -1
  41. package/dist/esm/src/buf/proto/gen/dxos/client/services_pb.js +42 -17
  42. package/dist/esm/src/buf/proto/gen/dxos/client/services_pb.js.map +1 -1
  43. package/dist/esm/src/buf/proto/gen/dxos/edge/signal_pb.d.ts +14 -0
  44. package/dist/esm/src/buf/proto/gen/dxos/edge/signal_pb.d.ts.map +1 -1
  45. package/dist/esm/src/buf/proto/gen/dxos/edge/signal_pb.js +10 -5
  46. package/dist/esm/src/buf/proto/gen/dxos/edge/signal_pb.js.map +1 -1
  47. package/dist/esm/src/edge-error.d.ts +26 -0
  48. package/dist/esm/src/edge-error.d.ts.map +1 -0
  49. package/dist/esm/src/edge-error.js +62 -0
  50. package/dist/esm/src/edge-error.js.map +1 -0
  51. package/dist/esm/src/edge.d.ts +25 -25
  52. package/dist/esm/src/edge.d.ts.map +1 -1
  53. package/dist/esm/src/edge.js +12 -58
  54. package/dist/esm/src/edge.js.map +1 -1
  55. package/dist/esm/src/index.d.ts +2 -0
  56. package/dist/esm/src/index.d.ts.map +1 -1
  57. package/dist/esm/src/index.js +2 -0
  58. package/dist/esm/src/index.js.map +1 -1
  59. package/dist/esm/src/invitation.d.ts +1 -1
  60. package/dist/esm/src/invitation.d.ts.map +1 -1
  61. package/dist/esm/src/invitation.js +2 -1
  62. package/dist/esm/src/invitation.js.map +1 -1
  63. package/dist/esm/src/proto/gen/dxos/client/services.d.ts +45 -0
  64. package/dist/esm/src/proto/gen/dxos/client/services.d.ts.map +1 -1
  65. package/dist/esm/src/proto/gen/dxos/client/services.js.map +1 -1
  66. package/dist/esm/src/proto/gen/dxos/edge/signal.d.ts +7 -0
  67. package/dist/esm/src/proto/gen/dxos/edge/signal.d.ts.map +1 -1
  68. package/dist/esm/src/proto/gen/index.d.ts +6 -0
  69. package/dist/esm/src/proto/gen/index.d.ts.map +1 -1
  70. package/dist/esm/src/proto/gen/index.js +1 -1
  71. package/dist/esm/src/proto/gen/index.js.map +1 -1
  72. package/dist/esm/src/space-archive.d.ts +55 -0
  73. package/dist/esm/src/space-archive.d.ts.map +1 -0
  74. package/dist/esm/src/space-archive.js +26 -0
  75. package/dist/esm/src/space-archive.js.map +1 -0
  76. package/package.json +12 -8
  77. package/src/buf/proto/gen/dxos/client/services_pb.ts +137 -18
  78. package/src/buf/proto/gen/dxos/edge/signal_pb.ts +22 -5
  79. package/src/edge-error.ts +79 -0
  80. package/src/edge.ts +19 -71
  81. package/src/index.ts +2 -0
  82. package/src/invitation.ts +3 -1
  83. package/src/proto/dxos/client/services.proto +29 -0
  84. package/src/proto/dxos/edge/signal.proto +4 -0
  85. package/src/proto/gen/dxos/client/services.ts +45 -0
  86. package/src/proto/gen/dxos/edge/signal.ts +7 -0
  87. package/src/proto/gen/index.ts +7 -1
  88. package/src/space-archive.ts +66 -0
package/src/edge.ts CHANGED
@@ -2,7 +2,9 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { type SpaceId } from '@dxos/keys';
5
+ import { Schema as S } from 'effect';
6
+
7
+ import { SpaceId } from '@dxos/keys';
6
8
 
7
9
  // TODO(burdon): Rename EdgerRouterEndpoint?
8
10
  export enum EdgeService {
@@ -138,81 +140,27 @@ export enum EdgeAgentStatus {
138
140
  NOT_FOUND = 'not_found',
139
141
  }
140
142
 
141
- export class EdgeCallFailedError extends Error {
142
- public static fromProcessingFailureCause(cause: Error) {
143
- return new EdgeCallFailedError({
144
- reason: 'Error processing request.',
145
- isRetryable: true,
146
- cause,
147
- });
148
- }
149
-
150
- public static fromHttpFailure(response: Response) {
151
- return new EdgeCallFailedError({
152
- reason: `HTTP code ${response.status}: ${response.statusText}.`,
153
- isRetryable: isRetryableCode(response.status),
154
- retryAfterMs: getRetryAfterMillis(response),
155
- });
156
- }
157
-
158
- public static fromUnsuccessfulResponse(response: Response, body: EdgeHttpFailure) {
159
- return new EdgeCallFailedError({
160
- reason: body.reason,
161
- errorData: body.errorData,
162
- isRetryable: body.errorData == null && response.headers.has('Retry-After'),
163
- retryAfterMs: getRetryAfterMillis(response),
164
- });
165
- }
166
-
167
- readonly reason: string;
168
- readonly errorData?: EdgeErrorData;
169
- readonly isRetryable?: boolean;
170
- readonly retryAfterMs?: number;
171
-
172
- constructor(args: {
173
- reason: string;
174
- isRetryable?: boolean;
175
- errorData?: EdgeErrorData;
176
- retryAfterMs?: number;
177
- cause?: Error;
178
- }) {
179
- super(args.reason, { cause: args.cause });
180
- this.reason = args.reason;
181
- this.errorData = args.errorData;
182
- this.retryAfterMs = args.retryAfterMs;
183
- this.isRetryable = Boolean(args.isRetryable);
184
- }
185
- }
186
-
187
- export class EdgeAuthChallengeError extends EdgeCallFailedError {
188
- constructor(
189
- public readonly challenge: string,
190
- errorData: EdgeErrorData,
191
- ) {
192
- super({ reason: 'Auth challenge.', errorData, isRetryable: false });
193
- }
194
- }
195
-
196
143
  export type EdgeAuthChallenge = {
197
144
  type: 'auth_challenge';
198
145
  challenge: string;
199
146
  };
200
147
 
201
- const getRetryAfterMillis = (response: Response) => {
202
- const retryAfter = Number(response.headers.get('Retry-After'));
203
- return Number.isNaN(retryAfter) || retryAfter === 0 ? undefined : retryAfter * 1000;
204
- };
148
+ export enum OAuthProvider {
149
+ GOOGLE = 'google',
150
+ }
205
151
 
206
- export const createRetryableHttpFailure = (args: { reason: any; retryAfterSeconds: number }) => {
207
- return new Response(JSON.stringify({ success: false, reason: args.reason }), {
208
- headers: { 'Retry-After': String(args.retryAfterSeconds) },
209
- });
210
- };
152
+ export const InitiateOAuthFlowRequestSchema = S.Struct({
153
+ provider: S.Enums(OAuthProvider),
154
+ spaceId: S.String.pipe(S.filter(SpaceId.isValid)),
155
+ accessTokenId: S.String,
156
+ scopes: S.mutable(S.Array(S.String)),
157
+ });
158
+ export type InitiateOAuthFlowRequest = S.Schema.Type<typeof InitiateOAuthFlowRequestSchema>;
211
159
 
212
- const isRetryableCode = (status: number) => {
213
- if (status === 501) {
214
- // Not Implemented
215
- return false;
216
- }
217
- return !(status >= 400 && status < 500);
160
+ export type InitiateOAuthFlowResponse = {
161
+ authUrl: string;
218
162
  };
163
+
164
+ export type OAuthFlowResult =
165
+ | { success: true; accessToken: string; accessTokenId: string }
166
+ | { success: false; reason: string };
package/src/index.ts CHANGED
@@ -12,3 +12,5 @@ export * from './profile-archive.js';
12
12
  export * from './automerge.js';
13
13
  export * from './edge.js';
14
14
  export * from './queue.js';
15
+ export * from './space-archive.js';
16
+ export * from './edge-error.js';
package/src/invitation.ts CHANGED
@@ -2,7 +2,9 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { ParamKeyAnnotation, S } from '@dxos/effect';
5
+ import { Schema as S } from 'effect';
6
+
7
+ import { ParamKeyAnnotation } from '@dxos/effect';
6
8
 
7
9
  // TODO(burdon): Use uniformly for processing HTTP params.
8
10
  export const InvitationUrl = S.Struct({
@@ -433,6 +433,28 @@ message JoinBySpaceKeyRequest {
433
433
  dxos.keys.PublicKey space_key = 1;
434
434
  }
435
435
 
436
+ message SpaceArchive {
437
+ string filename = 1;
438
+ bytes contents = 2;
439
+ }
440
+
441
+ message ExportSpaceRequest {
442
+ string space_id = 1;
443
+ }
444
+
445
+ message ExportSpaceResponse {
446
+ SpaceArchive archive = 1;
447
+ }
448
+
449
+ message ImportSpaceRequest {
450
+ SpaceArchive archive = 1;
451
+ }
452
+
453
+ message ImportSpaceResponse {
454
+ /// the ID of the new space.
455
+ string new_space_id = 1;
456
+ }
457
+
436
458
  service SpacesService {
437
459
  rpc CreateSpace(google.protobuf.Empty) returns (Space);
438
460
  rpc UpdateSpace(UpdateSpaceRequest) returns (google.protobuf.Empty);
@@ -454,6 +476,9 @@ service SpacesService {
454
476
  rpc QueryCredentials(QueryCredentialsRequest) returns (stream dxos.halo.credentials.Credential);
455
477
 
456
478
  rpc CreateEpoch(CreateEpochRequest) returns (CreateEpochResponse);
479
+
480
+ rpc ExportSpace(ExportSpaceRequest) returns (ExportSpaceResponse);
481
+ rpc ImportSpace(ImportSpaceRequest) returns (ImportSpaceResponse);
457
482
  }
458
483
 
459
484
  //
@@ -555,6 +580,10 @@ service NetworkService {
555
580
  rpc QueryStatus(google.protobuf.Empty) returns (stream NetworkStatus);
556
581
  rpc JoinSwarm(dxos.edge.signal.JoinRequest) returns (google.protobuf.Empty);
557
582
  rpc LeaveSwarm(dxos.edge.signal.LeaveRequest) returns (google.protobuf.Empty);
583
+ /**
584
+ * Query the swarm state without joining it.
585
+ */
586
+ rpc QuerySwarm(dxos.edge.signal.QueryRequest) returns (dxos.edge.messenger.SwarmResponse);
558
587
  rpc SubscribeSwarmState(SubscribeSwarmStateRequest) returns (stream dxos.edge.messenger.SwarmResponse);
559
588
  rpc SendMessage(dxos.edge.signal.Message) returns (google.protobuf.Empty);
560
589
  rpc SubscribeMessages(dxos.edge.messenger.Peer) returns (stream dxos.edge.signal.Message);
@@ -22,6 +22,10 @@ message LeaveRequest {
22
22
  dxos.edge.messenger.Peer peer = 2;
23
23
  }
24
24
 
25
+ message QueryRequest {
26
+ dxos.keys.PublicKey topic = 1;
27
+ }
28
+
25
29
  message Message {
26
30
  dxos.edge.messenger.Peer author = 1;
27
31
  dxos.edge.messenger.Peer recipient = 2;
@@ -1170,6 +1170,45 @@ export interface JoinSpaceResponse {
1170
1170
  export interface JoinBySpaceKeyRequest {
1171
1171
  spaceKey: ReturnType<(typeof substitutions)["dxos.keys.PublicKey"]["decode"]>;
1172
1172
  }
1173
+ /**
1174
+ * Defined in:
1175
+ * {@link file://./../../../dxos/client/services.proto}
1176
+ */
1177
+ export interface SpaceArchive {
1178
+ filename: string;
1179
+ contents: Uint8Array;
1180
+ }
1181
+ /**
1182
+ * Defined in:
1183
+ * {@link file://./../../../dxos/client/services.proto}
1184
+ */
1185
+ export interface ExportSpaceRequest {
1186
+ spaceId: string;
1187
+ }
1188
+ /**
1189
+ * Defined in:
1190
+ * {@link file://./../../../dxos/client/services.proto}
1191
+ */
1192
+ export interface ExportSpaceResponse {
1193
+ archive: SpaceArchive;
1194
+ }
1195
+ /**
1196
+ * Defined in:
1197
+ * {@link file://./../../../dxos/client/services.proto}
1198
+ */
1199
+ export interface ImportSpaceRequest {
1200
+ archive: SpaceArchive;
1201
+ }
1202
+ /**
1203
+ * Defined in:
1204
+ * {@link file://./../../../dxos/client/services.proto}
1205
+ */
1206
+ export interface ImportSpaceResponse {
1207
+ /**
1208
+ * the ID of the new space.
1209
+ */
1210
+ newSpaceId: string;
1211
+ }
1173
1212
  /**
1174
1213
  * Defined in:
1175
1214
  * {@link file://./../../../dxos/client/services.proto}
@@ -1198,6 +1237,8 @@ export interface SpacesService {
1198
1237
  */
1199
1238
  queryCredentials: (request: QueryCredentialsRequest, options?: RequestOptions) => Stream<dxos_halo_credentials.Credential>;
1200
1239
  createEpoch: (request: CreateEpochRequest, options?: RequestOptions) => Promise<CreateEpochResponse>;
1240
+ exportSpace: (request: ExportSpaceRequest, options?: RequestOptions) => Promise<ExportSpaceResponse>;
1241
+ importSpace: (request: ImportSpaceRequest, options?: RequestOptions) => Promise<ImportSpaceResponse>;
1201
1242
  }
1202
1243
  /**
1203
1244
  * Defined in:
@@ -1336,6 +1377,10 @@ export interface NetworkService {
1336
1377
  queryStatus: (request: void, options?: RequestOptions) => Stream<NetworkStatus>;
1337
1378
  joinSwarm: (request: dxos_edge_signal.JoinRequest, options?: RequestOptions) => Promise<void>;
1338
1379
  leaveSwarm: (request: dxos_edge_signal.LeaveRequest, options?: RequestOptions) => Promise<void>;
1380
+ /**
1381
+ * Query the swarm state without joining it.
1382
+ */
1383
+ querySwarm: (request: dxos_edge_signal.QueryRequest, options?: RequestOptions) => Promise<dxos_edge_messenger.SwarmResponse>;
1339
1384
  subscribeSwarmState: (request: SubscribeSwarmStateRequest, options?: RequestOptions) => Stream<dxos_edge_messenger.SwarmResponse>;
1340
1385
  sendMessage: (request: dxos_edge_signal.Message, options?: RequestOptions) => Promise<void>;
1341
1386
  subscribeMessages: (request: dxos_edge_messenger.Peer, options?: RequestOptions) => Stream<dxos_edge_signal.Message>;
@@ -81,6 +81,13 @@ export interface LeaveRequest {
81
81
  topic: ReturnType<(typeof substitutions)["dxos.keys.PublicKey"]["decode"]>;
82
82
  peer: dxos_edge_messenger.Peer;
83
83
  }
84
+ /**
85
+ * Defined in:
86
+ * {@link file://./../../../dxos/edge/signal.proto}
87
+ */
88
+ export interface QueryRequest {
89
+ topic: ReturnType<(typeof substitutions)["dxos.keys.PublicKey"]["decode"]>;
90
+ }
84
91
  /**
85
92
  * Defined in:
86
93
  * {@link file://./../../../dxos/edge/signal.proto}