@dxos/protocols 0.8.4-main.406dc2a → 0.8.4-main.548089c

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.
@@ -1,8 +1,16 @@
1
- import { type EdgeErrorData, type EdgeHttpFailure } from './edge';
1
+ import { type EdgeErrorData, type EdgeFailure } from './edge.js';
2
+ /**
3
+ * Error thrown when a call to the Edge service fails.
4
+ * There 3 possible sources of failure:
5
+ * 1. EdgeFailure (JSON body with { success: false }) -> Processing the request failed and was gracefully handled by EDGE service.
6
+ * 2. Http failure (non-ok code) -> The HTTP request failed (e.g. timeout, network error).
7
+ * -> Unhandled exception on EDGE side, EDGE would provide serialized error in the response body.
8
+ * 3. Processing failure -> Unhandled exception on client side while processing the response.
9
+ */
2
10
  export declare class EdgeCallFailedError extends Error {
3
- static fromProcessingFailureCause(cause: Error): EdgeCallFailedError;
11
+ static fromUnsuccessfulResponse(response: Response, body: EdgeFailure): EdgeCallFailedError;
4
12
  static fromHttpFailure(response: Response): Promise<EdgeCallFailedError>;
5
- static fromUnsuccessfulResponse(response: Response, body: EdgeHttpFailure): EdgeCallFailedError;
13
+ static fromProcessingFailureCause(cause: Error): EdgeCallFailedError;
6
14
  readonly reason: string;
7
15
  readonly errorData?: EdgeErrorData;
8
16
  readonly isRetryable?: boolean;
@@ -19,8 +27,4 @@ export declare class EdgeAuthChallengeError extends EdgeCallFailedError {
19
27
  readonly challenge: string;
20
28
  constructor(challenge: string, errorData: EdgeErrorData);
21
29
  }
22
- export declare const createRetryableHttpFailure: (args: {
23
- reason: any;
24
- retryAfterSeconds: number;
25
- }) => Response;
26
30
  //# sourceMappingURL=edge-error.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"edge-error.d.ts","sourceRoot":"","sources":["../../src/edge-error.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,QAAQ,CAAC;AAGlE,qBAAa,mBAAoB,SAAQ,KAAK;WAC9B,0BAA0B,CAAC,KAAK,EAAE,KAAK,GAAG,mBAAmB;WAQvD,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC;WASvE,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,GAAG,mBAAmB;IAStG,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,GAAI,MAAM;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,aAI1F,CAAC"}
1
+ {"version":3,"file":"edge-error.d.ts","sourceRoot":"","sources":["../../src/edge-error.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAkC,MAAM,WAAW,CAAC;AAGjG;;;;;;;GAOG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;WAC9B,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,GAAG,mBAAmB;WAY9E,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC;WASvE,0BAA0B,CAAC,KAAK,EAAE,KAAK,GAAG,mBAAmB;IAQ3E,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"}
@@ -1,30 +1,40 @@
1
1
  //
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
- import { BaseError } from '@dxos/errors';
4
+ import { EdgeHttpErrorCodec, ErrorCodec } from './edge.js';
5
5
  // TODO(burdon): Reconcile with @dxos/errors.
6
+ /**
7
+ * Error thrown when a call to the Edge service fails.
8
+ * There 3 possible sources of failure:
9
+ * 1. EdgeFailure (JSON body with { success: false }) -> Processing the request failed and was gracefully handled by EDGE service.
10
+ * 2. Http failure (non-ok code) -> The HTTP request failed (e.g. timeout, network error).
11
+ * -> Unhandled exception on EDGE side, EDGE would provide serialized error in the response body.
12
+ * 3. Processing failure -> Unhandled exception on client side while processing the response.
13
+ */
6
14
  export class EdgeCallFailedError extends Error {
7
- static fromProcessingFailureCause(cause) {
8
- return new EdgeCallFailedError({
9
- reason: 'Error processing request.',
10
- isRetryable: true,
11
- cause,
15
+ static fromUnsuccessfulResponse(response, body) {
16
+ const error = new EdgeCallFailedError({
17
+ reason: body.reason,
18
+ errorData: body.errorData,
19
+ isRetryable: body.errorData == null && response.headers.has('Retry-After'),
20
+ retryAfterMs: getRetryAfterMillis(response),
21
+ cause: body.cause ? ErrorCodec.decode(body.cause) : undefined,
12
22
  });
23
+ return error;
13
24
  }
14
25
  static async fromHttpFailure(response) {
15
26
  return new EdgeCallFailedError({
16
27
  reason: `HTTP code ${response.status}: ${response.statusText}.`,
17
28
  isRetryable: isRetryableCode(response.status),
18
29
  retryAfterMs: getRetryAfterMillis(response),
19
- cause: await parseErrorBody(response),
30
+ cause: await EdgeHttpErrorCodec.decode(response),
20
31
  });
21
32
  }
22
- static fromUnsuccessfulResponse(response, body) {
33
+ static fromProcessingFailureCause(cause) {
23
34
  return new EdgeCallFailedError({
24
- reason: body.reason,
25
- errorData: body.errorData,
26
- isRetryable: body.errorData == null && response.headers.has('Retry-After'),
27
- retryAfterMs: getRetryAfterMillis(response),
35
+ reason: 'Error processing request.',
36
+ isRetryable: true,
37
+ cause,
28
38
  });
29
39
  }
30
40
  reason;
@@ -50,11 +60,6 @@ const getRetryAfterMillis = (response) => {
50
60
  const retryAfter = Number(response.headers.get('Retry-After'));
51
61
  return Number.isNaN(retryAfter) || retryAfter === 0 ? undefined : retryAfter * 1000;
52
62
  };
53
- export const createRetryableHttpFailure = (args) => {
54
- return new Response(JSON.stringify({ success: false, reason: args.reason }), {
55
- headers: { 'Retry-After': String(args.retryAfterSeconds) },
56
- });
57
- };
58
63
  const isRetryableCode = (status) => {
59
64
  if (status === 501) {
60
65
  // Not Implemented
@@ -62,41 +67,4 @@ const isRetryableCode = (status) => {
62
67
  }
63
68
  return !(status >= 400 && status < 500);
64
69
  };
65
- const parseErrorBody = async (response) => {
66
- if (response.headers.get('Content-Type') !== 'application/json') {
67
- const body = await response.text();
68
- return new Error(body.slice(0, 256));
69
- }
70
- const body = await response.json();
71
- if (!('error' in body)) {
72
- return undefined;
73
- }
74
- return parseSerializedError(body.error);
75
- };
76
- const parseSerializedError = (serializedError) => {
77
- let err;
78
- if (typeof serializedError.code === 'string') {
79
- err = new BaseError(serializedError.code, {
80
- message: serializedError.message ?? 'Unknown error',
81
- cause: serializedError.cause ? parseSerializedError(serializedError.cause) : undefined,
82
- context: serializedError.context,
83
- });
84
- if (serializedError.stack) {
85
- Object.defineProperty(err, 'stack', {
86
- value: serializedError.stack,
87
- });
88
- }
89
- }
90
- else {
91
- err = new Error(serializedError.message ?? 'Unknown error', {
92
- cause: serializedError.cause ? parseSerializedError(serializedError.cause) : undefined,
93
- });
94
- if (serializedError.stack) {
95
- Object.defineProperty(err, 'stack', {
96
- value: serializedError.stack,
97
- });
98
- }
99
- }
100
- return err;
101
- };
102
70
  //# sourceMappingURL=edge-error.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"edge-error.js","sourceRoot":"","sources":["../../src/edge-error.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edge-error.js","sourceRoot":"","sources":["../../src/edge-error.ts"],"names":[],"mappings":"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"}
@@ -7,19 +7,37 @@ export declare enum EdgeService {
7
7
  SIGNAL = "signal",
8
8
  STATUS = "status"
9
9
  }
10
- export type EdgeHttpSuccess<T> = {
10
+ export type EdgeSuccess<T> = {
11
11
  success: true;
12
12
  data: T;
13
13
  };
14
+ export type SerializedError = {
15
+ code?: string;
16
+ message?: string;
17
+ context?: Record<string, unknown>;
18
+ stack?: string;
19
+ cause?: SerializedError;
20
+ };
14
21
  export type EdgeErrorData = {
15
22
  type: string;
16
23
  } & Record<string, any>;
17
- export type EdgeHttpFailure = {
24
+ /**
25
+ * This is the shape of the error response from the Edge service,
26
+ * when the error is gracefully handled, the Response will be an object with this shape and have status code 200.
27
+ */
28
+ export type EdgeFailure = {
29
+ /**
30
+ * Branded Type.
31
+ */
18
32
  success: false;
19
33
  /**
20
34
  * An explanation of why the call failed. Used mostly for logging and monitoring.
21
35
  */
22
36
  reason: string;
37
+ /**
38
+ * Cause Error captured on the EDGE service to aid debugging on the client.
39
+ */
40
+ cause?: SerializedError;
23
41
  /**
24
42
  * Information that can be used to retry the request such that it will succeed, for example:
25
43
  * 1. { type: 'auth_required', challenge: string }
@@ -32,7 +50,48 @@ export type EdgeHttpFailure = {
32
50
  */
33
51
  errorData?: EdgeErrorData;
34
52
  };
35
- export type EdgeHttpResponse<T> = EdgeHttpSuccess<T> | EdgeHttpFailure;
53
+ /**
54
+ * Represents a body response from the Edge service.
55
+ */
56
+ export type EdgeBody<T> = EdgeSuccess<T> | EdgeFailure;
57
+ /**
58
+ * Use this to create a response from the Edge service.
59
+ */
60
+ export declare const EdgeResponse: Readonly<{
61
+ success: <T>(data: T, status?: number) => Response;
62
+ failure: ({ reason, cause, errorData, shouldRetryAfter, status, }: {
63
+ /**
64
+ * An explanation of why the call failed. Used mostly for logging and monitoring.
65
+ */
66
+ reason: string;
67
+ /**
68
+ * Error that caused the failure.
69
+ * Useful for debugging.
70
+ */
71
+ cause?: Error;
72
+ /**
73
+ * Information that can be used to retry the request such that it will succeed, for example:
74
+ * 1. { type: 'auth_required', challenge: string }
75
+ * Requires retrying the request with challenge signature included.
76
+ * 2. { type: 'user_confirmation_required', dialog: { title: string, message: string, confirmation_payload: string } }
77
+ * Requires showing a confirmation dialog to a user and retrying the request with confirmation_payload included
78
+ * if the user confirms.
79
+ * When errorData is returned simply retrying the request won't have any effect.
80
+ * EdgeHttpClient should parse well-known errorData into Error types and throw.
81
+ */
82
+ errorData?: EdgeErrorData;
83
+ /**
84
+ * If provided, this request will be marked as retryable and the client will wait for the specified number of milliseconds before retrying.
85
+ * If not provided, the client will not retry the request.
86
+ */
87
+ shouldRetryAfter?: number;
88
+ /**
89
+ * Status code of the response.
90
+ * @default 500
91
+ */
92
+ status?: number;
93
+ }) => Response;
94
+ }>;
36
95
  export type GetNotarizationResponseBody = {
37
96
  awaitingNotarization: {
38
97
  credentials: string[];
@@ -98,7 +157,21 @@ export type UploadFunctionRequest = {
98
157
  ownerPublicKey: string;
99
158
  entryPoint: string;
100
159
  assets: Record<string, Uint8Array>;
160
+ /**
161
+ * Runtime in Edge that will be used to run the function.
162
+ * Runtime cannot be changed once the function was deployed.
163
+ * @default Runtime.WORKERS_FOR_PLATFORMS
164
+ */
165
+ runtime?: Runtime;
101
166
  };
167
+ /**
168
+ * Note: Do not change the values of these enums, this values are stored in the FunctionVersions database.
169
+ */
170
+ export declare enum Runtime {
171
+ WORKERS_FOR_PLATFORMS = "WORKERS_FOR_PLATFORMS",
172
+ WORKER_LOADER = "WORKER_LOADER",
173
+ TEST = "TEST"
174
+ }
102
175
  export type UploadFunctionResponseBody = {
103
176
  functionId: string;
104
177
  version: string;
@@ -239,8 +312,22 @@ export type ExportBundleResponse = {
239
312
  mutation: string;
240
313
  }[];
241
314
  };
242
- export declare const DocumentCodec: {
315
+ export declare const DocumentCodec: Readonly<{
243
316
  encode: (doc: Uint8Array) => string;
244
317
  decode: (doc: string) => Uint8Array<ArrayBuffer>;
245
- };
318
+ }>;
319
+ /**
320
+ * Codec for serializing and deserializing Edge Errors.
321
+ */
322
+ export declare const ErrorCodec: Readonly<{
323
+ encode: (err: Error, depth?: number) => SerializedError;
324
+ decode: (serializedError: SerializedError, depth?: number) => Error;
325
+ }>;
326
+ /**
327
+ * Codec for serializing and deserializing Edge unhandled HTTP errors.
328
+ */
329
+ export declare const EdgeHttpErrorCodec: Readonly<{
330
+ encode: (err: Error) => Response;
331
+ decode: (response: Response) => Promise<Error | undefined>;
332
+ }>;
246
333
  //# 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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"}
package/dist/src/edge.js CHANGED
@@ -2,6 +2,8 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
  import * as Schema from 'effect/Schema';
5
+ import { BaseError } from '@dxos/errors';
6
+ import { invariant } from '@dxos/invariant';
5
7
  import { SpaceId } from '@dxos/keys';
6
8
  // TODO(burdon): Rename EdgerRouterEndpoint.
7
9
  // If we would rename it, we need to be careful to not break composer production.
@@ -13,6 +15,49 @@ export var EdgeService;
13
15
  EdgeService["SIGNAL"] = "signal";
14
16
  EdgeService["STATUS"] = "status";
15
17
  })(EdgeService || (EdgeService = {}));
18
+ /**
19
+ * Use this to create a response from the Edge service.
20
+ */
21
+ export const EdgeResponse = Object.freeze({
22
+ success: (data, status = 200) => {
23
+ invariant(status >= 200 && status < 300, 'Status code must be in the 2xx range');
24
+ const headers = new Headers({ 'Content-Type': 'application/json' });
25
+ return new Response(JSON.stringify({
26
+ success: true,
27
+ data,
28
+ }), {
29
+ status,
30
+ headers,
31
+ });
32
+ },
33
+ failure: ({ reason, cause, errorData, shouldRetryAfter, status = 500, }) => {
34
+ const headers = new Headers({ 'Content-Type': 'application/json' });
35
+ if (shouldRetryAfter) {
36
+ headers.set('Retry-After', String(shouldRetryAfter));
37
+ }
38
+ return new Response(JSON.stringify({
39
+ success: false,
40
+ reason,
41
+ errorData,
42
+ cause: cause ? ErrorCodec.encode(cause) : undefined,
43
+ }), {
44
+ status,
45
+ headers,
46
+ });
47
+ },
48
+ });
49
+ /**
50
+ * Note: Do not change the values of these enums, this values are stored in the FunctionVersions database.
51
+ */
52
+ export var Runtime;
53
+ (function (Runtime) {
54
+ // https://developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/
55
+ Runtime["WORKERS_FOR_PLATFORMS"] = "WORKERS_FOR_PLATFORMS";
56
+ // https://developers.cloudflare.com/workers/runtime-apis/bindings/worker-loader/
57
+ Runtime["WORKER_LOADER"] = "WORKER_LOADER";
58
+ // Local worker dispatcher for testing.
59
+ Runtime["TEST"] = "TEST";
60
+ })(Runtime || (Runtime = {}));
16
61
  export var EdgeAgentStatus;
17
62
  (function (EdgeAgentStatus) {
18
63
  EdgeAgentStatus["ACTIVE"] = "active";
@@ -42,8 +87,69 @@ export var EdgeWebsocketProtocol;
42
87
  */
43
88
  EdgeWebsocketProtocol["V1"] = "edge-ws-v1";
44
89
  })(EdgeWebsocketProtocol || (EdgeWebsocketProtocol = {}));
45
- export const DocumentCodec = {
90
+ export const DocumentCodec = Object.freeze({
46
91
  encode: (doc) => Buffer.from(doc).toString('base64'),
47
92
  decode: (doc) => new Uint8Array(Buffer.from(doc, 'base64')),
48
- };
93
+ });
94
+ const MAX_ERROR_DEPTH = 3;
95
+ /**
96
+ * Codec for serializing and deserializing Edge Errors.
97
+ */
98
+ export const ErrorCodec = Object.freeze({
99
+ encode: (err, depth = 0) => ({
100
+ code: 'code' in err ? err.code : undefined,
101
+ message: err.message,
102
+ stack: err.stack,
103
+ cause: err.cause instanceof Error && depth < MAX_ERROR_DEPTH ? ErrorCodec.encode(err.cause, depth + 1) : undefined,
104
+ }),
105
+ decode: (serializedError, depth = 0) => {
106
+ let err;
107
+ if (typeof serializedError.code === 'string') {
108
+ err = new BaseError(serializedError.code, {
109
+ message: serializedError.message ?? 'Unknown error',
110
+ cause: serializedError.cause && depth < MAX_ERROR_DEPTH
111
+ ? ErrorCodec.decode(serializedError.cause, depth + 1)
112
+ : undefined,
113
+ context: serializedError.context,
114
+ });
115
+ if (serializedError.stack) {
116
+ Object.defineProperty(err, 'stack', {
117
+ value: serializedError.stack,
118
+ });
119
+ }
120
+ }
121
+ else {
122
+ err = new Error(serializedError.message ?? 'Unknown error', {
123
+ cause: serializedError.cause && depth < MAX_ERROR_DEPTH
124
+ ? ErrorCodec.decode(serializedError.cause, depth + 1)
125
+ : undefined,
126
+ });
127
+ if (serializedError.stack) {
128
+ Object.defineProperty(err, 'stack', {
129
+ value: serializedError.stack,
130
+ });
131
+ }
132
+ }
133
+ return err;
134
+ },
135
+ });
136
+ /**
137
+ * Codec for serializing and deserializing Edge unhandled HTTP errors.
138
+ */
139
+ export const EdgeHttpErrorCodec = Object.freeze({
140
+ encode: (err) => new Response(JSON.stringify({
141
+ error: ErrorCodec.encode(err),
142
+ }), { status: 500 }),
143
+ decode: async (response) => {
144
+ if (response.headers.get('Content-Type') !== 'application/json') {
145
+ const body = await response.clone().text();
146
+ return new Error(body.slice(0, 256));
147
+ }
148
+ const body = await response.clone().json();
149
+ if (!('error' in body)) {
150
+ return undefined;
151
+ }
152
+ return ErrorCodec.decode(body.error);
153
+ },
154
+ });
49
155
  //# sourceMappingURL=edge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"edge.js","sourceRoot":"","sources":["../../src/edge.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAEF,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,4CAA4C;AAC5C,iFAAiF;AACjF,MAAM,CAAN,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,4DAA6C,CAAA;IAC7C,kDAAmC,CAAA;IACnC,8BAAe,CAAA;IACf,gCAAiB,CAAA;IACjB,gCAAiB,CAAA;AACnB,CAAC,EANW,WAAW,KAAX,WAAW,QAMtB;AAgJD,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,aAGX;AAHD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,oCAAmB,CAAA;AACrB,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAED,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1D,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,6BAA6B;IAC1F,aAAa,EAAE,MAAM,CAAC,MAAM;IAC5B,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnD,sGAAsG;IACtG,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IAC1C,qFAAqF;IACrF,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;CAC1C,CAAC,CAAC;AAWH,MAAM,CAAN,IAAY,qBAMX;AAND,WAAY,qBAAqB;IAC/B,0CAAiB,CAAA;IACjB;;OAEG;IACH,0CAAiB,CAAA;AACnB,CAAC,EANW,qBAAqB,KAArB,qBAAqB,QAMhC;AAyED,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,MAAM,EAAE,CAAC,GAAe,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAChE,MAAM,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;CACpE,CAAC"}
1
+ {"version":3,"file":"edge.js","sourceRoot":"","sources":["../../src/edge.ts"],"names":[],"mappings":"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"}