@dxos/protocols 0.8.1-staging.391c573 → 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.
@@ -0,0 +1,26 @@
1
+ import { type EdgeErrorData, type EdgeHttpFailure } from './edge';
2
+ export declare class EdgeCallFailedError extends Error {
3
+ static fromProcessingFailureCause(cause: Error): EdgeCallFailedError;
4
+ static fromHttpFailure(response: Response): EdgeCallFailedError;
5
+ static fromUnsuccessfulResponse(response: Response, body: EdgeHttpFailure): EdgeCallFailedError;
6
+ readonly reason: string;
7
+ readonly errorData?: EdgeErrorData;
8
+ readonly isRetryable?: boolean;
9
+ readonly retryAfterMs?: number;
10
+ constructor(args: {
11
+ reason: string;
12
+ isRetryable?: boolean;
13
+ errorData?: EdgeErrorData;
14
+ retryAfterMs?: number;
15
+ cause?: Error;
16
+ });
17
+ }
18
+ export declare class EdgeAuthChallengeError extends EdgeCallFailedError {
19
+ readonly challenge: string;
20
+ constructor(challenge: string, errorData: EdgeErrorData);
21
+ }
22
+ export declare const createRetryableHttpFailure: (args: {
23
+ reason: any;
24
+ retryAfterSeconds: number;
25
+ }) => Response;
26
+ //# sourceMappingURL=edge-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge-error.d.ts","sourceRoot":"","sources":["../../../src/edge-error.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,QAAQ,CAAC;AAElE,qBAAa,mBAAoB,SAAQ,KAAK;WAC9B,0BAA0B,CAAC,KAAK,EAAE,KAAK;WAQvC,eAAe,CAAC,QAAQ,EAAE,QAAQ;WAQlC,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe;IAShF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;gBAEnB,IAAI,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,SAAS,CAAC,EAAE,aAAa,CAAC;QAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,KAAK,CAAC;KACf;CAOF;AAED,qBAAa,sBAAuB,SAAQ,mBAAmB;aAE3C,SAAS,EAAE,MAAM;gBAAjB,SAAS,EAAE,MAAM,EACjC,SAAS,EAAE,aAAa;CAI3B;AAOD,eAAO,MAAM,0BAA0B,SAAU;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,aAI1F,CAAC"}
@@ -0,0 +1,62 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+ export class EdgeCallFailedError extends Error {
5
+ static fromProcessingFailureCause(cause) {
6
+ return new EdgeCallFailedError({
7
+ reason: 'Error processing request.',
8
+ isRetryable: true,
9
+ cause,
10
+ });
11
+ }
12
+ static fromHttpFailure(response) {
13
+ return new EdgeCallFailedError({
14
+ reason: `HTTP code ${response.status}: ${response.statusText}.`,
15
+ isRetryable: isRetryableCode(response.status),
16
+ retryAfterMs: getRetryAfterMillis(response),
17
+ });
18
+ }
19
+ static fromUnsuccessfulResponse(response, body) {
20
+ return new EdgeCallFailedError({
21
+ reason: body.reason,
22
+ errorData: body.errorData,
23
+ isRetryable: body.errorData == null && response.headers.has('Retry-After'),
24
+ retryAfterMs: getRetryAfterMillis(response),
25
+ });
26
+ }
27
+ reason;
28
+ errorData;
29
+ isRetryable;
30
+ retryAfterMs;
31
+ constructor(args) {
32
+ super(args.reason, { cause: args.cause });
33
+ this.reason = args.reason;
34
+ this.errorData = args.errorData;
35
+ this.retryAfterMs = args.retryAfterMs;
36
+ this.isRetryable = Boolean(args.isRetryable);
37
+ }
38
+ }
39
+ export class EdgeAuthChallengeError extends EdgeCallFailedError {
40
+ challenge;
41
+ constructor(challenge, errorData) {
42
+ super({ reason: 'Auth challenge.', errorData, isRetryable: false });
43
+ this.challenge = challenge;
44
+ }
45
+ }
46
+ const getRetryAfterMillis = (response) => {
47
+ const retryAfter = Number(response.headers.get('Retry-After'));
48
+ return Number.isNaN(retryAfter) || retryAfter === 0 ? undefined : retryAfter * 1000;
49
+ };
50
+ export const createRetryableHttpFailure = (args) => {
51
+ return new Response(JSON.stringify({ success: false, reason: args.reason }), {
52
+ headers: { 'Retry-After': String(args.retryAfterSeconds) },
53
+ });
54
+ };
55
+ const isRetryableCode = (status) => {
56
+ if (status === 501) {
57
+ // Not Implemented
58
+ return false;
59
+ }
60
+ return !(status >= 400 && status < 500);
61
+ };
62
+ //# sourceMappingURL=edge-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge-error.js","sourceRoot":"","sources":["../../../src/edge-error.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAIF,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACrC,MAAM,CAAC,0BAA0B,CAAC,KAAY;QACnD,OAAO,IAAI,mBAAmB,CAAC;YAC7B,MAAM,EAAE,2BAA2B;YACnC,WAAW,EAAE,IAAI;YACjB,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,QAAkB;QAC9C,OAAO,IAAI,mBAAmB,CAAC;YAC7B,MAAM,EAAE,aAAa,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,GAAG;YAC/D,WAAW,EAAE,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC7C,YAAY,EAAE,mBAAmB,CAAC,QAAQ,CAAC;SAC5C,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,wBAAwB,CAAC,QAAkB,EAAE,IAAqB;QAC9E,OAAO,IAAI,mBAAmB,CAAC;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;YAC1E,YAAY,EAAE,mBAAmB,CAAC,QAAQ,CAAC;SAC5C,CAAC,CAAC;IACL,CAAC;IAEQ,MAAM,CAAS;IACf,SAAS,CAAiB;IAC1B,WAAW,CAAW;IACtB,YAAY,CAAU;IAE/B,YAAY,IAMX;QACC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,mBAAmB;IAE3C;IADlB,YACkB,SAAiB,EACjC,SAAwB;QAExB,KAAK,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QAHpD,cAAS,GAAT,SAAS,CAAQ;IAInC,CAAC;CACF;AAED,MAAM,mBAAmB,GAAG,CAAC,QAAkB,EAAE,EAAE;IACjD,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IAC/D,OAAO,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;AACtF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,IAAgD,EAAE,EAAE;IAC7F,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;QAC3E,OAAO,EAAE,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;KAC3D,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,MAAc,EAAE,EAAE;IACzC,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QACnB,kBAAkB;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC;AAC1C,CAAC,CAAC"}
@@ -1,4 +1,5 @@
1
- import { type SpaceId } from '@dxos/keys';
1
+ import { Schema as S } from 'effect';
2
+ import { SpaceId } from '@dxos/keys';
2
3
  export declare enum EdgeService {
3
4
  AUTOMERGE_REPLICATOR = "automerge-replicator",
4
5
  FEED_REPLICATOR = "feed-replicator",
@@ -114,32 +115,31 @@ export declare enum EdgeAgentStatus {
114
115
  INACTIVE = "inactive",
115
116
  NOT_FOUND = "not_found"
116
117
  }
117
- export declare class EdgeCallFailedError extends Error {
118
- static fromProcessingFailureCause(cause: Error): EdgeCallFailedError;
119
- static fromHttpFailure(response: Response): EdgeCallFailedError;
120
- static fromUnsuccessfulResponse(response: Response, body: EdgeHttpFailure): EdgeCallFailedError;
121
- readonly reason: string;
122
- readonly errorData?: EdgeErrorData;
123
- readonly isRetryable?: boolean;
124
- readonly retryAfterMs?: number;
125
- constructor(args: {
126
- reason: string;
127
- isRetryable?: boolean;
128
- errorData?: EdgeErrorData;
129
- retryAfterMs?: number;
130
- cause?: Error;
131
- });
132
- }
133
- export declare class EdgeAuthChallengeError extends EdgeCallFailedError {
134
- readonly challenge: string;
135
- constructor(challenge: string, errorData: EdgeErrorData);
136
- }
137
118
  export type EdgeAuthChallenge = {
138
119
  type: 'auth_challenge';
139
120
  challenge: string;
140
121
  };
141
- export declare const createRetryableHttpFailure: (args: {
142
- reason: any;
143
- retryAfterSeconds: number;
144
- }) => Response;
122
+ export declare enum OAuthProvider {
123
+ GOOGLE = "google"
124
+ }
125
+ export declare const InitiateOAuthFlowRequestSchema: S.Struct<{
126
+ provider: S.Enums<typeof OAuthProvider>;
127
+ spaceId: S.refine<string & {
128
+ __SpaceId: true;
129
+ }, S.Schema<string, string, never>>;
130
+ accessTokenId: typeof S.String;
131
+ scopes: S.mutable<S.Array$<typeof S.String>>;
132
+ }>;
133
+ export type InitiateOAuthFlowRequest = S.Schema.Type<typeof InitiateOAuthFlowRequestSchema>;
134
+ export type InitiateOAuthFlowResponse = {
135
+ authUrl: string;
136
+ };
137
+ export type OAuthFlowResult = {
138
+ success: true;
139
+ accessToken: string;
140
+ accessTokenId: string;
141
+ } | {
142
+ success: false;
143
+ reason: string;
144
+ };
145
145
  //# sourceMappingURL=edge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../../src/edge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../../src/edge.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  //
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
+ import { Schema as S } from 'effect';
5
+ import { SpaceId } from '@dxos/keys';
4
6
  // TODO(burdon): Rename EdgerRouterEndpoint?
5
7
  export var EdgeService;
6
8
  (function (EdgeService) {
@@ -15,62 +17,14 @@ export var EdgeAgentStatus;
15
17
  EdgeAgentStatus["INACTIVE"] = "inactive";
16
18
  EdgeAgentStatus["NOT_FOUND"] = "not_found";
17
19
  })(EdgeAgentStatus || (EdgeAgentStatus = {}));
18
- export class EdgeCallFailedError extends Error {
19
- static fromProcessingFailureCause(cause) {
20
- return new EdgeCallFailedError({
21
- reason: 'Error processing request.',
22
- isRetryable: true,
23
- cause,
24
- });
25
- }
26
- static fromHttpFailure(response) {
27
- return new EdgeCallFailedError({
28
- reason: `HTTP code ${response.status}: ${response.statusText}.`,
29
- isRetryable: isRetryableCode(response.status),
30
- retryAfterMs: getRetryAfterMillis(response),
31
- });
32
- }
33
- static fromUnsuccessfulResponse(response, body) {
34
- return new EdgeCallFailedError({
35
- reason: body.reason,
36
- errorData: body.errorData,
37
- isRetryable: body.errorData == null && response.headers.has('Retry-After'),
38
- retryAfterMs: getRetryAfterMillis(response),
39
- });
40
- }
41
- reason;
42
- errorData;
43
- isRetryable;
44
- retryAfterMs;
45
- constructor(args) {
46
- super(args.reason, { cause: args.cause });
47
- this.reason = args.reason;
48
- this.errorData = args.errorData;
49
- this.retryAfterMs = args.retryAfterMs;
50
- this.isRetryable = Boolean(args.isRetryable);
51
- }
52
- }
53
- export class EdgeAuthChallengeError extends EdgeCallFailedError {
54
- challenge;
55
- constructor(challenge, errorData) {
56
- super({ reason: 'Auth challenge.', errorData, isRetryable: false });
57
- this.challenge = challenge;
58
- }
59
- }
60
- const getRetryAfterMillis = (response) => {
61
- const retryAfter = Number(response.headers.get('Retry-After'));
62
- return Number.isNaN(retryAfter) || retryAfter === 0 ? undefined : retryAfter * 1000;
63
- };
64
- export const createRetryableHttpFailure = (args) => {
65
- return new Response(JSON.stringify({ success: false, reason: args.reason }), {
66
- headers: { 'Retry-After': String(args.retryAfterSeconds) },
67
- });
68
- };
69
- const isRetryableCode = (status) => {
70
- if (status === 501) {
71
- // Not Implemented
72
- return false;
73
- }
74
- return !(status >= 400 && status < 500);
75
- };
20
+ export var OAuthProvider;
21
+ (function (OAuthProvider) {
22
+ OAuthProvider["GOOGLE"] = "google";
23
+ })(OAuthProvider || (OAuthProvider = {}));
24
+ export const InitiateOAuthFlowRequestSchema = S.Struct({
25
+ provider: S.Enums(OAuthProvider),
26
+ spaceId: S.String.pipe(S.filter(SpaceId.isValid)),
27
+ accessTokenId: S.String,
28
+ scopes: S.mutable(S.Array(S.String)),
29
+ });
76
30
  //# sourceMappingURL=edge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"edge.js","sourceRoot":"","sources":["../../../src/edge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edge.js","sourceRoot":"","sources":["../../../src/edge.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAEF,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,4CAA4C;AAC5C,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,4DAA6C,CAAA;IAC7C,kDAAmC,CAAA;IACnC,8BAAe,CAAA;IACf,gCAAiB,CAAA;AACnB,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AA0HD,MAAM,CAAN,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,wCAAqB,CAAA;IACrB,0CAAuB,CAAA;AACzB,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;AAOD,MAAM,CAAN,IAAY,aAEX;AAFD,WAAY,aAAa;IACvB,kCAAiB,CAAA;AACnB,CAAC,EAFW,aAAa,KAAb,aAAa,QAExB;AAED,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,aAAa,EAAE,CAAC,CAAC,MAAM;IACvB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;CACrC,CAAC,CAAC"}
@@ -9,4 +9,5 @@ export * from './automerge.js';
9
9
  export * from './edge.js';
10
10
  export * from './queue.js';
11
11
  export * from './space-archive.js';
12
+ export * from './edge-error.js';
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC"}
@@ -12,4 +12,5 @@ export * from './automerge.js';
12
12
  export * from './edge.js';
13
13
  export * from './queue.js';
14
14
  export * from './space-archive.js';
15
+ export * from './edge-error.js';
15
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAEF,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAEF,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/protocols",
3
- "version": "0.8.1-staging.391c573",
3
+ "version": "0.8.1-staging.5be625a",
4
4
  "description": "Protobuf definitions for DXOS protocols.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -72,12 +72,12 @@
72
72
  ],
73
73
  "dependencies": {
74
74
  "@bufbuild/protobuf": "^2.1.0",
75
- "@dxos/codec-protobuf": "0.8.1-staging.391c573",
76
- "@dxos/invariant": "0.8.1-staging.391c573",
77
- "@dxos/keys": "0.8.1-staging.391c573",
78
- "@dxos/timeframe": "0.8.1-staging.391c573",
79
- "@dxos/util": "0.8.1-staging.391c573",
80
- "@dxos/effect": "0.8.1-staging.391c573"
75
+ "@dxos/codec-protobuf": "0.8.1-staging.5be625a",
76
+ "@dxos/effect": "0.8.1-staging.5be625a",
77
+ "@dxos/invariant": "0.8.1-staging.5be625a",
78
+ "@dxos/timeframe": "0.8.1-staging.5be625a",
79
+ "@dxos/keys": "0.8.1-staging.5be625a",
80
+ "@dxos/util": "0.8.1-staging.5be625a"
81
81
  },
82
82
  "devDependencies": {
83
83
  "@bufbuild/buf": "^1.43.0",
@@ -0,0 +1,79 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type EdgeErrorData, type EdgeHttpFailure } from './edge';
6
+
7
+ export class EdgeCallFailedError extends Error {
8
+ public static fromProcessingFailureCause(cause: Error) {
9
+ return new EdgeCallFailedError({
10
+ reason: 'Error processing request.',
11
+ isRetryable: true,
12
+ cause,
13
+ });
14
+ }
15
+
16
+ public static fromHttpFailure(response: Response) {
17
+ return new EdgeCallFailedError({
18
+ reason: `HTTP code ${response.status}: ${response.statusText}.`,
19
+ isRetryable: isRetryableCode(response.status),
20
+ retryAfterMs: getRetryAfterMillis(response),
21
+ });
22
+ }
23
+
24
+ public static fromUnsuccessfulResponse(response: Response, body: EdgeHttpFailure) {
25
+ return new EdgeCallFailedError({
26
+ reason: body.reason,
27
+ errorData: body.errorData,
28
+ isRetryable: body.errorData == null && response.headers.has('Retry-After'),
29
+ retryAfterMs: getRetryAfterMillis(response),
30
+ });
31
+ }
32
+
33
+ readonly reason: string;
34
+ readonly errorData?: EdgeErrorData;
35
+ readonly isRetryable?: boolean;
36
+ readonly retryAfterMs?: number;
37
+
38
+ constructor(args: {
39
+ reason: string;
40
+ isRetryable?: boolean;
41
+ errorData?: EdgeErrorData;
42
+ retryAfterMs?: number;
43
+ cause?: Error;
44
+ }) {
45
+ super(args.reason, { cause: args.cause });
46
+ this.reason = args.reason;
47
+ this.errorData = args.errorData;
48
+ this.retryAfterMs = args.retryAfterMs;
49
+ this.isRetryable = Boolean(args.isRetryable);
50
+ }
51
+ }
52
+
53
+ export class EdgeAuthChallengeError extends EdgeCallFailedError {
54
+ constructor(
55
+ public readonly challenge: string,
56
+ errorData: EdgeErrorData,
57
+ ) {
58
+ super({ reason: 'Auth challenge.', errorData, isRetryable: false });
59
+ }
60
+ }
61
+
62
+ const getRetryAfterMillis = (response: Response) => {
63
+ const retryAfter = Number(response.headers.get('Retry-After'));
64
+ return Number.isNaN(retryAfter) || retryAfter === 0 ? undefined : retryAfter * 1000;
65
+ };
66
+
67
+ export const createRetryableHttpFailure = (args: { reason: any; retryAfterSeconds: number }) => {
68
+ return new Response(JSON.stringify({ success: false, reason: args.reason }), {
69
+ headers: { 'Retry-After': String(args.retryAfterSeconds) },
70
+ });
71
+ };
72
+
73
+ const isRetryableCode = (status: number) => {
74
+ if (status === 501) {
75
+ // Not Implemented
76
+ return false;
77
+ }
78
+ return !(status >= 400 && status < 500);
79
+ };
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
@@ -13,3 +13,4 @@ export * from './automerge.js';
13
13
  export * from './edge.js';
14
14
  export * from './queue.js';
15
15
  export * from './space-archive.js';
16
+ export * from './edge-error.js';