@powerhousedao/reactor 5.1.0-dev.1 → 5.1.0-dev.11
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/src/client/reactor-client.d.ts +6 -6
- package/dist/src/client/reactor-client.d.ts.map +1 -1
- package/dist/src/client/reactor-client.js +23 -43
- package/dist/src/client/reactor-client.js.map +1 -1
- package/dist/src/client/types.d.ts +10 -10
- package/dist/src/client/types.d.ts.map +1 -1
- package/dist/src/core/reactor-builder.d.ts +9 -3
- package/dist/src/core/reactor-builder.d.ts.map +1 -1
- package/dist/src/core/reactor-builder.js +62 -28
- package/dist/src/core/reactor-builder.js.map +1 -1
- package/dist/src/core/{builder.d.ts → reactor-client-builder.d.ts} +11 -4
- package/dist/src/core/reactor-client-builder.d.ts.map +1 -0
- package/dist/src/core/{builder.js → reactor-client-builder.js} +43 -23
- package/dist/src/core/reactor-client-builder.js.map +1 -0
- package/dist/src/core/reactor.d.ts +8 -11
- package/dist/src/core/reactor.d.ts.map +1 -1
- package/dist/src/core/reactor.js +30 -26
- package/dist/src/core/reactor.js.map +1 -1
- package/dist/src/core/types.d.ts +84 -20
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/core/utils.d.ts +9 -0
- package/dist/src/core/utils.d.ts.map +1 -1
- package/dist/src/core/utils.js +30 -0
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/executor/simple-job-executor.d.ts +5 -1
- package/dist/src/executor/simple-job-executor.d.ts.map +1 -1
- package/dist/src/executor/simple-job-executor.js +75 -2
- package/dist/src/executor/simple-job-executor.js.map +1 -1
- package/dist/src/index.d.ts +9 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/logging/console.d.ts +13 -0
- package/dist/src/logging/console.d.ts.map +1 -0
- package/dist/src/logging/console.js +77 -0
- package/dist/src/logging/console.js.map +1 -0
- package/dist/src/logging/types.d.ts +11 -0
- package/dist/src/logging/types.d.ts.map +1 -0
- package/dist/src/logging/types.js +2 -0
- package/dist/src/logging/types.js.map +1 -0
- package/dist/src/shared/errors.d.ts +8 -0
- package/dist/src/shared/errors.d.ts.map +1 -1
- package/dist/src/shared/errors.js +14 -0
- package/dist/src/shared/errors.js.map +1 -1
- package/dist/src/signer/types.d.ts +23 -1
- package/dist/src/signer/types.d.ts.map +1 -1
- package/dist/src/storage/kysely/sync-remote-storage.d.ts.map +1 -1
- package/dist/src/storage/kysely/sync-remote-storage.js +3 -4
- package/dist/src/storage/kysely/sync-remote-storage.js.map +1 -1
- package/dist/src/storage/migrations/run-migrations.js +3 -3
- package/dist/src/storage/migrations/run-migrations.js.map +1 -1
- package/dist/src/sync/channels/gql-channel-factory.d.ts +22 -0
- package/dist/src/sync/channels/gql-channel-factory.d.ts.map +1 -0
- package/dist/src/sync/channels/gql-channel-factory.js +70 -0
- package/dist/src/sync/channels/gql-channel-factory.js.map +1 -0
- package/dist/src/sync/channels/gql-channel.d.ts +91 -0
- package/dist/src/sync/channels/gql-channel.d.ts.map +1 -0
- package/dist/src/sync/channels/gql-channel.js +295 -0
- package/dist/src/sync/channels/gql-channel.js.map +1 -0
- package/dist/src/sync/channels/index.d.ts +2 -0
- package/dist/src/sync/channels/index.d.ts.map +1 -1
- package/dist/src/sync/channels/index.js +2 -0
- package/dist/src/sync/channels/index.js.map +1 -1
- package/dist/src/sync/index.d.ts +1 -1
- package/dist/src/sync/index.d.ts.map +1 -1
- package/dist/src/sync/index.js +1 -1
- package/dist/src/sync/index.js.map +1 -1
- package/dist/src/sync/interfaces.d.ts +18 -3
- package/dist/src/sync/interfaces.d.ts.map +1 -1
- package/dist/src/sync/sync-builder.d.ts +2 -1
- package/dist/src/sync/sync-builder.d.ts.map +1 -1
- package/dist/src/sync/sync-builder.js +11 -1
- package/dist/src/sync/sync-builder.js.map +1 -1
- package/dist/src/sync/sync-manager.d.ts +3 -2
- package/dist/src/sync/sync-manager.d.ts.map +1 -1
- package/dist/src/sync/sync-manager.js +16 -4
- package/dist/src/sync/sync-manager.js.map +1 -1
- package/dist/src/sync/types.d.ts +1 -2
- package/dist/src/sync/types.d.ts.map +1 -1
- package/package.json +4 -4
- package/dist/src/core/builder.d.ts.map +0 -1
- package/dist/src/core/builder.js.map +0 -1
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EACL,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,cAAc,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
// Reactor Interface and Implementation
|
|
2
2
|
export { ReactorClient } from "./client/reactor-client.js";
|
|
3
3
|
export { DocumentChangeType, } from "./client/types.js";
|
|
4
|
-
export { ReactorClientBuilder } from "./core/builder.js";
|
|
5
4
|
export { ReactorBuilder } from "./core/reactor-builder.js";
|
|
5
|
+
export { ReactorClientBuilder } from "./core/reactor-client-builder.js";
|
|
6
6
|
export { Reactor } from "./core/reactor.js";
|
|
7
7
|
export {} from "./core/types.js";
|
|
8
8
|
export { JobAwaiter } from "./shared/awaiter.js";
|
|
9
9
|
export { ConsistencyTracker, makeConsistencyKey, } from "./shared/consistency-tracker.js";
|
|
10
10
|
export { createMutableShutdownStatus } from "./shared/factories.js";
|
|
11
11
|
export { JobStatus, PropagationMode, RelationshipChangeType, } from "./shared/types.js";
|
|
12
|
+
export {} from "./signer/types.js";
|
|
12
13
|
// Subscription Manager
|
|
13
14
|
export { DefaultSubscriptionErrorHandler } from "./subs/default-error-handler.js";
|
|
14
15
|
export { ReactorSubscriptionManager } from "./subs/react-subscription-manager.js";
|
|
@@ -43,7 +44,10 @@ export {} from "./read-models/interfaces.js";
|
|
|
43
44
|
// Cache
|
|
44
45
|
export { KyselyWriteCache } from "./cache/kysely-write-cache.js";
|
|
45
46
|
export {} from "./cache/write/interfaces.js";
|
|
47
|
+
// Logging
|
|
48
|
+
export { ConsoleLogger } from "./logging/console.js";
|
|
49
|
+
export {} from "./logging/types.js";
|
|
46
50
|
// Synchronization
|
|
47
|
-
export { ChannelError, InternalChannelError, InternalChannel, SyncOperation, SyncOperationAggregateError, Mailbox, SyncBuilder, ChannelErrorSource, SyncOperationStatus, } from "./sync/index.js";
|
|
48
51
|
export { KyselySyncCursorStorage, KyselySyncRemoteStorage, } from "./storage/index.js";
|
|
52
|
+
export { ChannelError, ChannelErrorSource, GqlChannelFactory, InternalChannel, InternalChannelError, Mailbox, SyncBuilder, SyncOperation, SyncOperationAggregateError, SyncOperationStatus, } from "./sync/index.js";
|
|
49
53
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EACL,kBAAkB,GAGnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ILogger, LoggerErrorHandler } from "./types.js";
|
|
2
|
+
export declare class ConsoleLogger implements ILogger {
|
|
3
|
+
#private;
|
|
4
|
+
errorHandler: LoggerErrorHandler;
|
|
5
|
+
level: "verbose" | "debug" | "info" | "warn" | "error";
|
|
6
|
+
constructor(tags?: string[], handler?: LoggerErrorHandler);
|
|
7
|
+
verbose(message: string, ...replacements: any[]): void;
|
|
8
|
+
debug(message: string, ...replacements: any[]): void;
|
|
9
|
+
info(message: string, ...replacements: any[]): void;
|
|
10
|
+
warn(message: string, ...replacements: any[]): void;
|
|
11
|
+
error(message: string, ...replacements: any[]): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=console.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../../src/logging/console.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA2D9D,qBAAa,aAAc,YAAW,OAAO;;IAG3C,YAAY,EAAE,kBAAkB,CAAC;IACjC,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAU;gBAEpD,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB;IAKzD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,GAAG,IAAI;IAItD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,GAAG,IAAI;IAUpD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,GAAG,IAAI;IAUnD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,GAAG,IAAI;IAUnD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,GAAG,IAAI;CASrD"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
const tokenSub = /@([a-zA-Z0-9_]+)/g;
|
|
2
|
+
const dtf = new Intl.DateTimeFormat();
|
|
3
|
+
const formatMessage = (tags, message, ...replacements) => {
|
|
4
|
+
const meta = {};
|
|
5
|
+
const uniqueTokens = [];
|
|
6
|
+
let results;
|
|
7
|
+
while ((results = tokenSub.exec(message)) !== null) {
|
|
8
|
+
const tokenName = results[1];
|
|
9
|
+
const index = uniqueTokens.indexOf(tokenName);
|
|
10
|
+
if (index === -1) {
|
|
11
|
+
uniqueTokens.push(tokenName);
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
13
|
+
const replacement = replacements[uniqueTokens.length - 1];
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
15
|
+
meta[tokenName] = replacement;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
// replace
|
|
19
|
+
for (const [key, value] of Object.entries(meta)) {
|
|
20
|
+
let stringValue;
|
|
21
|
+
if (!value) {
|
|
22
|
+
stringValue = "null";
|
|
23
|
+
}
|
|
24
|
+
else if (typeof value === "string") {
|
|
25
|
+
stringValue = value;
|
|
26
|
+
}
|
|
27
|
+
else if (typeof value === "object") {
|
|
28
|
+
stringValue = JSON.stringify(value);
|
|
29
|
+
}
|
|
30
|
+
else if (typeof value === "function") {
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
32
|
+
const name = value.name;
|
|
33
|
+
stringValue = name ? `${name}()` : "anonymous()";
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
stringValue = String(value);
|
|
37
|
+
}
|
|
38
|
+
message = message.replaceAll(`@${key}`, stringValue);
|
|
39
|
+
}
|
|
40
|
+
if (tags.length > 0) {
|
|
41
|
+
message = `${tags.map((tag) => `[${tag}]`).join("")} ${message}`;
|
|
42
|
+
}
|
|
43
|
+
// timestamp
|
|
44
|
+
const now = new Date();
|
|
45
|
+
const timestamp = dtf.format(now);
|
|
46
|
+
meta["timestamp"] = timestamp;
|
|
47
|
+
return [message, meta];
|
|
48
|
+
};
|
|
49
|
+
export class ConsoleLogger {
|
|
50
|
+
#tags;
|
|
51
|
+
errorHandler;
|
|
52
|
+
level = "info";
|
|
53
|
+
constructor(tags, handler) {
|
|
54
|
+
this.#tags = (tags || []).map((tag) => `[${tag}]`);
|
|
55
|
+
this.errorHandler = handler ?? (() => { });
|
|
56
|
+
}
|
|
57
|
+
verbose(message, ...replacements) {
|
|
58
|
+
this.debug(message, replacements);
|
|
59
|
+
}
|
|
60
|
+
debug(message, ...replacements) {
|
|
61
|
+
const [formattedMessage, meta] = formatMessage(this.#tags, message, replacements);
|
|
62
|
+
console.debug(`[${meta["timestamp"]}] ${formattedMessage}`, meta);
|
|
63
|
+
}
|
|
64
|
+
info(message, ...replacements) {
|
|
65
|
+
const [formattedMessage, meta] = formatMessage(this.#tags, message, replacements);
|
|
66
|
+
console.info(`[${meta["timestamp"]}] ${formattedMessage}`, meta);
|
|
67
|
+
}
|
|
68
|
+
warn(message, ...replacements) {
|
|
69
|
+
const [formattedMessage, meta] = formatMessage(this.#tags, message, replacements);
|
|
70
|
+
console.warn(`[${meta["timestamp"]}] ${formattedMessage}`, meta);
|
|
71
|
+
}
|
|
72
|
+
error(message, ...replacements) {
|
|
73
|
+
const [formattedMessage, meta] = formatMessage(this.#tags, message, replacements);
|
|
74
|
+
console.error(`[${meta["timestamp"]}] ${formattedMessage}`, meta);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=console.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../../src/logging/console.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type LoggerErrorHandler = (...data: any[]) => void;
|
|
2
|
+
export type ILogger = {
|
|
3
|
+
level: "verbose" | "debug" | "info" | "warn" | "error";
|
|
4
|
+
verbose: (message: string, ...replacements: any[]) => void;
|
|
5
|
+
debug: (message: string, ...replacements: any[]) => void;
|
|
6
|
+
info: (message: string, ...replacements: any[]) => void;
|
|
7
|
+
warn: (message: string, ...replacements: any[]) => void;
|
|
8
|
+
error: (message: string, ...replacements: any[]) => void;
|
|
9
|
+
errorHandler: LoggerErrorHandler;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/logging/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAE1D,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAEvD,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC3D,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACzD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACxD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACxD,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAEzD,YAAY,EAAE,kBAAkB,CAAC;CAClC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/logging/types.ts"],"names":[],"mappings":""}
|
|
@@ -14,4 +14,12 @@ export declare class CreateDocumentRequiredError extends Error {
|
|
|
14
14
|
readonly scope: string;
|
|
15
15
|
constructor(documentId: string, scope: string);
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Error thrown when an operation has an invalid signature.
|
|
19
|
+
*/
|
|
20
|
+
export declare class InvalidSignatureError extends Error {
|
|
21
|
+
readonly documentId: string;
|
|
22
|
+
readonly reason: string;
|
|
23
|
+
constructor(documentId: string, reason: string);
|
|
24
|
+
}
|
|
17
25
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/shared/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEnC,UAAU,EAAE,MAAM,EAAE,eAAe,GAAE,MAAM,GAAG,IAAW;CAYtE;AAED;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,KAAK,EAAE,MAAM,CAAC;gBAElB,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAU9C"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/shared/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEnC,UAAU,EAAE,MAAM,EAAE,eAAe,GAAE,MAAM,GAAG,IAAW;CAYtE;AAED;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,KAAK,EAAE,MAAM,CAAC;gBAElB,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAU9C;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAEnB,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAQ/C"}
|
|
@@ -30,4 +30,18 @@ export class CreateDocumentRequiredError extends Error {
|
|
|
30
30
|
Error.captureStackTrace(this, CreateDocumentRequiredError);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Error thrown when an operation has an invalid signature.
|
|
35
|
+
*/
|
|
36
|
+
export class InvalidSignatureError extends Error {
|
|
37
|
+
documentId;
|
|
38
|
+
reason;
|
|
39
|
+
constructor(documentId, reason) {
|
|
40
|
+
super(`Invalid signature in document ${documentId}: ${reason}`);
|
|
41
|
+
this.name = "InvalidSignatureError";
|
|
42
|
+
this.documentId = documentId;
|
|
43
|
+
this.reason = reason;
|
|
44
|
+
Error.captureStackTrace(this, InvalidSignatureError);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
33
47
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/shared/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7B,UAAU,CAAS;IACnB,eAAe,CAAgB;IAE/C,YAAY,UAAkB,EAAE,kBAAiC,IAAI;QACnE,MAAM,OAAO,GAAG,eAAe;YAC7B,CAAC,CAAC,YAAY,UAAU,mBAAmB,eAAe,EAAE;YAC5D,CAAC,CAAC,YAAY,UAAU,mBAAmB,CAAC;QAE9C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QAEvC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IACtD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACpC,UAAU,CAAS;IACnB,KAAK,CAAS;IAE9B,YAAY,UAAkB,EAAE,KAAa;QAC3C,MAAM,OAAO,GAAG,YAAY,UAAU,wHAAwH,KAAK,GAAG,CAAC;QAEvK,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC;IAC7D,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/shared/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7B,UAAU,CAAS;IACnB,eAAe,CAAgB;IAE/C,YAAY,UAAkB,EAAE,kBAAiC,IAAI;QACnE,MAAM,OAAO,GAAG,eAAe;YAC7B,CAAC,CAAC,YAAY,UAAU,mBAAmB,eAAe,EAAE;YAC5D,CAAC,CAAC,YAAY,UAAU,mBAAmB,CAAC;QAE9C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QAEvC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IACtD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACpC,UAAU,CAAS;IACnB,KAAK,CAAS;IAE9B,YAAY,UAAkB,EAAE,KAAa;QAC3C,MAAM,OAAO,GAAG,YAAY,UAAU,wHAAwH,KAAK,GAAG,CAAC;QAEvK,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC;IAC7D,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9B,UAAU,CAAS;IACnB,MAAM,CAAS;IAE/B,YAAY,UAAkB,EAAE,MAAc;QAC5C,KAAK,CAAC,iCAAiC,UAAU,KAAK,MAAM,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;IACvD,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Action, Signature } from "document-model";
|
|
1
|
+
import type { Action, Operation, Signature } from "document-model";
|
|
2
2
|
/**
|
|
3
3
|
* Interface for signing actions before submission to the reactor.
|
|
4
4
|
*/
|
|
@@ -12,4 +12,26 @@ export interface ISigner {
|
|
|
12
12
|
*/
|
|
13
13
|
sign(action: Action, abortSignal?: AbortSignal): Promise<Signature>;
|
|
14
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Handler for verifying operation signatures.
|
|
17
|
+
*
|
|
18
|
+
* @param operation - The operation to verify
|
|
19
|
+
* @param publicKey - The public key to verify against (from signer.app.key)
|
|
20
|
+
* @returns Promise that resolves to true if signature is valid, false otherwise
|
|
21
|
+
*/
|
|
22
|
+
export type SignatureVerificationHandler = (operation: Operation, publicKey: string) => Promise<boolean>;
|
|
23
|
+
/**
|
|
24
|
+
* Configuration for signing and verification.
|
|
25
|
+
*/
|
|
26
|
+
export type SignerConfig = {
|
|
27
|
+
/**
|
|
28
|
+
* The signer used to sign actions before submission.
|
|
29
|
+
*/
|
|
30
|
+
signer: ISigner;
|
|
31
|
+
/**
|
|
32
|
+
* Optional handler for verifying signatures on incoming operations.
|
|
33
|
+
* If not provided, signature verification will be skipped.
|
|
34
|
+
*/
|
|
35
|
+
verifier?: SignatureVerificationHandler;
|
|
36
|
+
};
|
|
15
37
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/signer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/signer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB;;;;;;OAMG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CACrE;AAED;;;;;;GAMG;AACH,MAAM,MAAM,4BAA4B,GAAG,CACzC,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,MAAM,KACd,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,QAAQ,CAAC,EAAE,4BAA4B,CAAC;CACzC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-remote-storage.d.ts","sourceRoot":"","sources":["../../../../src/storage/kysely/sync-remote-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAuC,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"sync-remote-storage.d.ts","sourceRoot":"","sources":["../../../../src/storage/kysely/sync-remote-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAuC,MAAM,YAAY,CAAC;AAyEhF,qBAAa,uBAAwB,YAAW,kBAAkB;IACpD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC;IAE3C,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAcnD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAsB9D,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBjE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAahE"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { sql } from "kysely";
|
|
2
2
|
function rowToRemoteRecord(row) {
|
|
3
3
|
return {
|
|
4
|
+
id: row.channel_id,
|
|
4
5
|
name: row.name,
|
|
5
6
|
collectionId: row.collection_id,
|
|
6
7
|
channelConfig: {
|
|
7
8
|
type: row.channel_type,
|
|
8
|
-
channelId: row.channel_id,
|
|
9
|
-
remoteName: row.remote_name,
|
|
10
9
|
parameters: (row.channel_parameters ?? {}),
|
|
11
10
|
},
|
|
12
11
|
filter: {
|
|
@@ -44,8 +43,8 @@ function remoteRecordToRow(remote) {
|
|
|
44
43
|
name: remote.name,
|
|
45
44
|
collection_id: remote.collectionId,
|
|
46
45
|
channel_type: remote.channelConfig.type,
|
|
47
|
-
channel_id: remote.
|
|
48
|
-
remote_name: remote.
|
|
46
|
+
channel_id: remote.id,
|
|
47
|
+
remote_name: remote.name,
|
|
49
48
|
channel_parameters: remote.channelConfig.parameters,
|
|
50
49
|
filter_document_ids: remote.filter.documentId.length > 0 ? remote.filter.documentId : null,
|
|
51
50
|
filter_scopes: remote.filter.scope.length > 0 ? remote.filter.scope : null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-remote-storage.js","sourceRoot":"","sources":["../../../../src/storage/kysely/sync-remote-storage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAK7B,SAAS,iBAAiB,CAAC,GAAkB;IAC3C,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,YAAY,EAAE,GAAG,CAAC,aAAa;QAC/B,aAAa,EAAE;YACb,IAAI,EAAE,GAAG,CAAC,YAAY;YACtB,
|
|
1
|
+
{"version":3,"file":"sync-remote-storage.js","sourceRoot":"","sources":["../../../../src/storage/kysely/sync-remote-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
import { PGlite } from "@electric-sql/pglite";
|
|
1
2
|
import { Kysely } from "kysely";
|
|
2
|
-
import {
|
|
3
|
+
import { PGliteDialect } from "kysely-pglite-dialect";
|
|
3
4
|
import { runMigrations, getMigrationStatus } from "./migrator.js";
|
|
4
5
|
async function main() {
|
|
5
6
|
const command = process.argv[2];
|
|
6
|
-
const kyselyPGlite = await KyselyPGlite.create();
|
|
7
7
|
const db = new Kysely({
|
|
8
|
-
dialect:
|
|
8
|
+
dialect: new PGliteDialect(new PGlite()),
|
|
9
9
|
});
|
|
10
10
|
try {
|
|
11
11
|
if (command === "up" || !command) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-migrations.js","sourceRoot":"","sources":["../../../../src/storage/migrations/run-migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"run-migrations.js","sourceRoot":"","sources":["../../../../src/storage/migrations/run-migrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ISyncCursorStorage } from "../../storage/interfaces.js";
|
|
2
|
+
import type { IChannel, IChannelFactory } from "../interfaces.js";
|
|
3
|
+
import type { ChannelConfig } from "../types.js";
|
|
4
|
+
/**
|
|
5
|
+
* Factory for creating GqlChannel instances.
|
|
6
|
+
*
|
|
7
|
+
* Extracts GraphQL-specific configuration from ChannelConfig.parameters and
|
|
8
|
+
* instantiates GqlChannel instances for network-based synchronization.
|
|
9
|
+
*/
|
|
10
|
+
export declare class GqlChannelFactory implements IChannelFactory {
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new GqlChannel instance with the given configuration.
|
|
13
|
+
* See GqlChannelConfig for the expected parameters.
|
|
14
|
+
*
|
|
15
|
+
* @param config - Channel configuration including type and parameters
|
|
16
|
+
* @param cursorStorage - Storage for persisting synchronization cursors
|
|
17
|
+
* @returns A new GqlChannel instance
|
|
18
|
+
* @throws Error if config.type is not "gql" or required parameters are missing
|
|
19
|
+
*/
|
|
20
|
+
instance(remoteId: string, remoteName: string, config: ChannelConfig, cursorStorage: ISyncCursorStorage): IChannel;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=gql-channel-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gql-channel-factory.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/gql-channel-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,eAAe;IACvD;;;;;;;;OAQG;IACH,QAAQ,CACN,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,kBAAkB,GAChC,QAAQ;CAgEZ"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { GqlChannel } from "./gql-channel.js";
|
|
2
|
+
/**
|
|
3
|
+
* Factory for creating GqlChannel instances.
|
|
4
|
+
*
|
|
5
|
+
* Extracts GraphQL-specific configuration from ChannelConfig.parameters and
|
|
6
|
+
* instantiates GqlChannel instances for network-based synchronization.
|
|
7
|
+
*/
|
|
8
|
+
export class GqlChannelFactory {
|
|
9
|
+
/**
|
|
10
|
+
* Creates a new GqlChannel instance with the given configuration.
|
|
11
|
+
* See GqlChannelConfig for the expected parameters.
|
|
12
|
+
*
|
|
13
|
+
* @param config - Channel configuration including type and parameters
|
|
14
|
+
* @param cursorStorage - Storage for persisting synchronization cursors
|
|
15
|
+
* @returns A new GqlChannel instance
|
|
16
|
+
* @throws Error if config.type is not "gql" or required parameters are missing
|
|
17
|
+
*/
|
|
18
|
+
instance(remoteId, remoteName, config, cursorStorage) {
|
|
19
|
+
if (config.type !== "gql") {
|
|
20
|
+
throw new Error(`GqlChannelFactory can only create channels of type "gql", got "${config.type}"`);
|
|
21
|
+
}
|
|
22
|
+
// Extract and validate required parameters
|
|
23
|
+
const url = config.parameters.url;
|
|
24
|
+
if (typeof url !== "string" || !url) {
|
|
25
|
+
throw new Error('GqlChannelFactory requires "url" parameter in config.parameters');
|
|
26
|
+
}
|
|
27
|
+
// Extract optional parameters with validation
|
|
28
|
+
const gqlConfig = {
|
|
29
|
+
url,
|
|
30
|
+
};
|
|
31
|
+
if (config.parameters.authToken !== undefined) {
|
|
32
|
+
if (typeof config.parameters.authToken !== "string") {
|
|
33
|
+
throw new Error('"authToken" parameter must be a string');
|
|
34
|
+
}
|
|
35
|
+
gqlConfig.authToken = config.parameters.authToken;
|
|
36
|
+
}
|
|
37
|
+
if (config.parameters.pollIntervalMs !== undefined) {
|
|
38
|
+
if (typeof config.parameters.pollIntervalMs !== "number") {
|
|
39
|
+
throw new Error('"pollIntervalMs" parameter must be a number');
|
|
40
|
+
}
|
|
41
|
+
gqlConfig.pollIntervalMs = config.parameters.pollIntervalMs;
|
|
42
|
+
}
|
|
43
|
+
if (config.parameters.retryBaseDelayMs !== undefined) {
|
|
44
|
+
if (typeof config.parameters.retryBaseDelayMs !== "number") {
|
|
45
|
+
throw new Error('"retryBaseDelayMs" parameter must be a number');
|
|
46
|
+
}
|
|
47
|
+
gqlConfig.retryBaseDelayMs = config.parameters.retryBaseDelayMs;
|
|
48
|
+
}
|
|
49
|
+
if (config.parameters.retryMaxDelayMs !== undefined) {
|
|
50
|
+
if (typeof config.parameters.retryMaxDelayMs !== "number") {
|
|
51
|
+
throw new Error('"retryMaxDelayMs" parameter must be a number');
|
|
52
|
+
}
|
|
53
|
+
gqlConfig.retryMaxDelayMs = config.parameters.retryMaxDelayMs;
|
|
54
|
+
}
|
|
55
|
+
if (config.parameters.maxFailures !== undefined) {
|
|
56
|
+
if (typeof config.parameters.maxFailures !== "number") {
|
|
57
|
+
throw new Error('"maxFailures" parameter must be a number');
|
|
58
|
+
}
|
|
59
|
+
gqlConfig.maxFailures = config.parameters.maxFailures;
|
|
60
|
+
}
|
|
61
|
+
if (config.parameters.fetchFn !== undefined) {
|
|
62
|
+
if (typeof config.parameters.fetchFn !== "function") {
|
|
63
|
+
throw new Error('"fetchFn" parameter must be a function');
|
|
64
|
+
}
|
|
65
|
+
gqlConfig.fetchFn = config.parameters.fetchFn;
|
|
66
|
+
}
|
|
67
|
+
return new GqlChannel(remoteId, remoteName, cursorStorage, gqlConfig);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=gql-channel-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gql-channel-factory.js","sourceRoot":"","sources":["../../../../src/sync/channels/gql-channel-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { ISyncCursorStorage } from "../../storage/interfaces.js";
|
|
2
|
+
import type { IChannel } from "../interfaces.js";
|
|
3
|
+
import { Mailbox } from "../mailbox.js";
|
|
4
|
+
import type { SyncOperation } from "../sync-operation.js";
|
|
5
|
+
/**
|
|
6
|
+
* Configuration parameters for GqlChannel
|
|
7
|
+
*/
|
|
8
|
+
export type GqlChannelConfig = {
|
|
9
|
+
/** The GraphQL endpoint URL */
|
|
10
|
+
url: string;
|
|
11
|
+
/** Authentication token for the remote */
|
|
12
|
+
authToken?: string;
|
|
13
|
+
/** Polling interval in milliseconds (default: 5000) */
|
|
14
|
+
pollIntervalMs?: number;
|
|
15
|
+
/** Base delay for exponential backoff retries in milliseconds (default: 1000) */
|
|
16
|
+
retryBaseDelayMs?: number;
|
|
17
|
+
/** Maximum delay for exponential backoff retries in milliseconds (default: 300000) */
|
|
18
|
+
retryMaxDelayMs?: number;
|
|
19
|
+
/** Maximum number of consecutive failures before marking as error (default: 5) */
|
|
20
|
+
maxFailures?: number;
|
|
21
|
+
/** Custom fetch function for testing (default: global fetch) */
|
|
22
|
+
fetchFn?: typeof fetch;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* GraphQL-based synchronization channel for network communication between reactors.
|
|
26
|
+
*/
|
|
27
|
+
export declare class GqlChannel implements IChannel {
|
|
28
|
+
readonly inbox: Mailbox<SyncOperation>;
|
|
29
|
+
readonly outbox: Mailbox<SyncOperation>;
|
|
30
|
+
readonly deadLetter: Mailbox<SyncOperation>;
|
|
31
|
+
private readonly channelId;
|
|
32
|
+
private readonly remoteName;
|
|
33
|
+
private readonly cursorStorage;
|
|
34
|
+
private readonly config;
|
|
35
|
+
private isShutdown;
|
|
36
|
+
private pollTimer?;
|
|
37
|
+
private failureCount;
|
|
38
|
+
private lastSuccessUtcMs?;
|
|
39
|
+
private lastFailureUtcMs?;
|
|
40
|
+
constructor(channelId: string, remoteName: string, cursorStorage: ISyncCursorStorage, config: GqlChannelConfig);
|
|
41
|
+
/**
|
|
42
|
+
* Shuts down the channel and prevents further operations.
|
|
43
|
+
*/
|
|
44
|
+
shutdown(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Starts the polling loop to fetch operations from the remote.
|
|
47
|
+
*/
|
|
48
|
+
private startPolling;
|
|
49
|
+
/**
|
|
50
|
+
* Polls the remote for new sync envelopes.
|
|
51
|
+
*/
|
|
52
|
+
private poll;
|
|
53
|
+
/**
|
|
54
|
+
* Handles polling errors with exponential backoff.
|
|
55
|
+
*/
|
|
56
|
+
private handlePollError;
|
|
57
|
+
/**
|
|
58
|
+
* Queries the remote GraphQL endpoint for sync envelopes.
|
|
59
|
+
*/
|
|
60
|
+
private pollSyncEnvelopes;
|
|
61
|
+
/**
|
|
62
|
+
* Handles sync operations added to the outbox by sending them to the remote.
|
|
63
|
+
*/
|
|
64
|
+
private handleOutboxAdded;
|
|
65
|
+
/**
|
|
66
|
+
* Pushes a sync operation to the remote via GraphQL mutation.
|
|
67
|
+
*/
|
|
68
|
+
private pushSyncOperation;
|
|
69
|
+
/**
|
|
70
|
+
* Serializes a SyncEnvelope for GraphQL transport.
|
|
71
|
+
*/
|
|
72
|
+
private serializeEnvelope;
|
|
73
|
+
/**
|
|
74
|
+
* Executes a GraphQL query or mutation against the remote endpoint.
|
|
75
|
+
*/
|
|
76
|
+
private executeGraphQL;
|
|
77
|
+
/**
|
|
78
|
+
* Updates the synchronization cursor for this channel's remote.
|
|
79
|
+
*/
|
|
80
|
+
updateCursor(cursorOrdinal: number): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Gets the current health status of the channel.
|
|
83
|
+
*/
|
|
84
|
+
getHealth(): {
|
|
85
|
+
state: "idle" | "running" | "error";
|
|
86
|
+
lastSuccessUtcMs?: number;
|
|
87
|
+
lastFailureUtcMs?: number;
|
|
88
|
+
failureCount: number;
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=gql-channel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gql-channel.d.ts","sourceRoot":"","sources":["../../../../src/sync/channels/gql-channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAK1D;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sFAAsF;IACtF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,qBAAa,UAAW,YAAW,QAAQ;IACzC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAE5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAClC,OAAO,CAAC,gBAAgB,CAAC,CAAS;gBAGhC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,kBAAkB,EACjC,MAAM,EAAE,gBAAgB;IA6B1B;;OAEG;IACH,QAAQ,IAAI,IAAI;IAQhB;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;YACW,IAAI;IAuClB;;OAEG;IACH,OAAO,CAAC,eAAe;IAmBvB;;OAEG;YACW,iBAAiB;IAkD/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB;;OAEG;YACW,iBAAiB;IA6B/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqBzB;;OAEG;YACW,cAAc;IA4D5B;;OAEG;IACG,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxD;;OAEG;IACH,SAAS,IAAI;QACX,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;QACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;KACtB;CAaF"}
|