@quereus/sync-coordinator 0.3.4 → 0.3.6
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/README.md +7 -1
- package/package.json +3 -3
- package/dist/src/bin/sync-coordinator.d.ts +0 -6
- package/dist/src/bin/sync-coordinator.d.ts.map +0 -1
- package/dist/src/bin/sync-coordinator.js +0 -85
- package/dist/src/bin/sync-coordinator.js.map +0 -1
- package/dist/src/common/index.d.ts +0 -5
- package/dist/src/common/index.d.ts.map +0 -1
- package/dist/src/common/index.js +0 -5
- package/dist/src/common/index.js.map +0 -1
- package/dist/src/common/logger.d.ts +0 -20
- package/dist/src/common/logger.d.ts.map +0 -1
- package/dist/src/common/logger.js +0 -24
- package/dist/src/common/logger.js.map +0 -1
- package/dist/src/config/index.d.ts +0 -6
- package/dist/src/config/index.d.ts.map +0 -1
- package/dist/src/config/index.js +0 -6
- package/dist/src/config/index.js.map +0 -1
- package/dist/src/config/loader.d.ts +0 -27
- package/dist/src/config/loader.d.ts.map +0 -1
- package/dist/src/config/loader.js +0 -144
- package/dist/src/config/loader.js.map +0 -1
- package/dist/src/config/types.d.ts +0 -74
- package/dist/src/config/types.d.ts.map +0 -1
- package/dist/src/config/types.js +0 -27
- package/dist/src/config/types.js.map +0 -1
- package/dist/src/index.d.ts +0 -21
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -26
- package/dist/src/index.js.map +0 -1
- package/dist/src/metrics/coordinator-metrics.d.ts +0 -27
- package/dist/src/metrics/coordinator-metrics.d.ts.map +0 -1
- package/dist/src/metrics/coordinator-metrics.js +0 -57
- package/dist/src/metrics/coordinator-metrics.js.map +0 -1
- package/dist/src/metrics/index.d.ts +0 -7
- package/dist/src/metrics/index.d.ts.map +0 -1
- package/dist/src/metrics/index.js +0 -7
- package/dist/src/metrics/index.js.map +0 -1
- package/dist/src/metrics/registry.d.ts +0 -53
- package/dist/src/metrics/registry.d.ts.map +0 -1
- package/dist/src/metrics/registry.js +0 -158
- package/dist/src/metrics/registry.js.map +0 -1
- package/dist/src/metrics/types.d.ts +0 -62
- package/dist/src/metrics/types.d.ts.map +0 -1
- package/dist/src/metrics/types.js +0 -16
- package/dist/src/metrics/types.js.map +0 -1
- package/dist/src/server/index.d.ts +0 -7
- package/dist/src/server/index.d.ts.map +0 -1
- package/dist/src/server/index.js +0 -7
- package/dist/src/server/index.js.map +0 -1
- package/dist/src/server/routes.d.ts +0 -10
- package/dist/src/server/routes.d.ts.map +0 -1
- package/dist/src/server/routes.js +0 -153
- package/dist/src/server/routes.js.map +0 -1
- package/dist/src/server/server.d.ts +0 -34
- package/dist/src/server/server.d.ts.map +0 -1
- package/dist/src/server/server.js +0 -57
- package/dist/src/server/server.js.map +0 -1
- package/dist/src/server/websocket.d.ts +0 -10
- package/dist/src/server/websocket.d.ts.map +0 -1
- package/dist/src/server/websocket.js +0 -159
- package/dist/src/server/websocket.js.map +0 -1
- package/dist/src/service/coordinator-service.d.ts +0 -114
- package/dist/src/service/coordinator-service.d.ts.map +0 -1
- package/dist/src/service/coordinator-service.js +0 -373
- package/dist/src/service/coordinator-service.js.map +0 -1
- package/dist/src/service/index.d.ts +0 -6
- package/dist/src/service/index.d.ts.map +0 -1
- package/dist/src/service/index.js +0 -5
- package/dist/src/service/index.js.map +0 -1
- package/dist/src/service/types.d.ts +0 -142
- package/dist/src/service/types.d.ts.map +0 -1
- package/dist/src/service/types.js +0 -5
- package/dist/src/service/types.js.map +0 -1
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Coordinator-specific metrics definitions.
|
|
3
|
-
*/
|
|
4
|
-
import { globalRegistry } from './registry.js';
|
|
5
|
-
import { DEFAULT_SIZE_BUCKETS } from './types.js';
|
|
6
|
-
/**
|
|
7
|
-
* Create coordinator metrics on a registry.
|
|
8
|
-
*/
|
|
9
|
-
export function createCoordinatorMetrics(registry = globalRegistry) {
|
|
10
|
-
// Connection metrics
|
|
11
|
-
const wsConnectionsActive = registry.registerGauge('sync_websocket_connections_active', 'Current number of active WebSocket connections');
|
|
12
|
-
const wsConnectionsTotal = registry.registerCounter('sync_websocket_connections_total', 'Total WebSocket connections since startup');
|
|
13
|
-
// HTTP request metrics
|
|
14
|
-
const httpRequestsTotal = registry.registerCounter('sync_http_requests_total', 'Total HTTP requests by endpoint and status');
|
|
15
|
-
const httpRequestDuration = registry.registerHistogram('sync_http_request_duration_seconds', 'HTTP request duration in seconds');
|
|
16
|
-
// Sync operation metrics
|
|
17
|
-
const changesAppliedTotal = registry.registerCounter('sync_changes_applied_total', 'Total number of changes applied');
|
|
18
|
-
const changesReceivedTotal = registry.registerCounter('sync_changes_received_total', 'Total number of changes received from clients');
|
|
19
|
-
const changesRejectedTotal = registry.registerCounter('sync_changes_rejected_total', 'Total number of changes rejected during validation');
|
|
20
|
-
const changesBroadcastTotal = registry.registerCounter('sync_changes_broadcast_total', 'Total number of changes broadcast to clients');
|
|
21
|
-
// Snapshot metrics
|
|
22
|
-
const snapshotRequestsTotal = registry.registerCounter('sync_snapshot_requests_total', 'Total snapshot requests');
|
|
23
|
-
const snapshotChunksTotal = registry.registerCounter('sync_snapshot_chunks_total', 'Total snapshot chunks sent');
|
|
24
|
-
// Performance metrics
|
|
25
|
-
const applyChangesDuration = registry.registerHistogram('sync_apply_changes_duration_seconds', 'Time to apply a batch of changes');
|
|
26
|
-
const getChangesDuration = registry.registerHistogram('sync_get_changes_duration_seconds', 'Time to retrieve changes for a client');
|
|
27
|
-
const changeBatchSize = registry.registerHistogram('sync_change_batch_size', 'Number of changes in a batch', DEFAULT_SIZE_BUCKETS);
|
|
28
|
-
// Auth metrics
|
|
29
|
-
const authAttemptsTotal = registry.registerCounter('sync_auth_attempts_total', 'Total authentication attempts');
|
|
30
|
-
const authFailuresTotal = registry.registerCounter('sync_auth_failures_total', 'Total authentication failures');
|
|
31
|
-
return {
|
|
32
|
-
// Connection
|
|
33
|
-
wsConnectionsActive,
|
|
34
|
-
wsConnectionsTotal,
|
|
35
|
-
// HTTP
|
|
36
|
-
httpRequestsTotal,
|
|
37
|
-
httpRequestDuration,
|
|
38
|
-
// Sync operations
|
|
39
|
-
changesAppliedTotal,
|
|
40
|
-
changesReceivedTotal,
|
|
41
|
-
changesRejectedTotal,
|
|
42
|
-
changesBroadcastTotal,
|
|
43
|
-
// Snapshots
|
|
44
|
-
snapshotRequestsTotal,
|
|
45
|
-
snapshotChunksTotal,
|
|
46
|
-
// Performance
|
|
47
|
-
applyChangesDuration,
|
|
48
|
-
getChangesDuration,
|
|
49
|
-
changeBatchSize,
|
|
50
|
-
// Auth
|
|
51
|
-
authAttemptsTotal,
|
|
52
|
-
authFailuresTotal,
|
|
53
|
-
// Registry reference
|
|
54
|
-
registry,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=coordinator-metrics.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"coordinator-metrics.js","sourceRoot":"","sources":["../../../src/metrics/coordinator-metrics.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAwB,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,WAA4B,cAAc;IACjF,qBAAqB;IACrB,MAAM,mBAAmB,GAAG,QAAQ,CAAC,aAAa,CAChD,mCAAmC,EACnC,gDAAgD,CACjD,CAAC;IAEF,MAAM,kBAAkB,GAAG,QAAQ,CAAC,eAAe,CACjD,kCAAkC,EAClC,2CAA2C,CAC5C,CAAC;IAEF,uBAAuB;IACvB,MAAM,iBAAiB,GAAG,QAAQ,CAAC,eAAe,CAChD,0BAA0B,EAC1B,4CAA4C,CAC7C,CAAC;IAEF,MAAM,mBAAmB,GAAG,QAAQ,CAAC,iBAAiB,CACpD,oCAAoC,EACpC,kCAAkC,CACnC,CAAC;IAEF,yBAAyB;IACzB,MAAM,mBAAmB,GAAG,QAAQ,CAAC,eAAe,CAClD,4BAA4B,EAC5B,iCAAiC,CAClC,CAAC;IAEF,MAAM,oBAAoB,GAAG,QAAQ,CAAC,eAAe,CACnD,6BAA6B,EAC7B,+CAA+C,CAChD,CAAC;IAEF,MAAM,oBAAoB,GAAG,QAAQ,CAAC,eAAe,CACnD,6BAA6B,EAC7B,oDAAoD,CACrD,CAAC;IAEF,MAAM,qBAAqB,GAAG,QAAQ,CAAC,eAAe,CACpD,8BAA8B,EAC9B,8CAA8C,CAC/C,CAAC;IAEF,mBAAmB;IACnB,MAAM,qBAAqB,GAAG,QAAQ,CAAC,eAAe,CACpD,8BAA8B,EAC9B,yBAAyB,CAC1B,CAAC;IAEF,MAAM,mBAAmB,GAAG,QAAQ,CAAC,eAAe,CAClD,4BAA4B,EAC5B,4BAA4B,CAC7B,CAAC;IAEF,sBAAsB;IACtB,MAAM,oBAAoB,GAAG,QAAQ,CAAC,iBAAiB,CACrD,qCAAqC,EACrC,kCAAkC,CACnC,CAAC;IAEF,MAAM,kBAAkB,GAAG,QAAQ,CAAC,iBAAiB,CACnD,mCAAmC,EACnC,uCAAuC,CACxC,CAAC;IAEF,MAAM,eAAe,GAAG,QAAQ,CAAC,iBAAiB,CAChD,wBAAwB,EACxB,8BAA8B,EAC9B,oBAAoB,CACrB,CAAC;IAEF,eAAe;IACf,MAAM,iBAAiB,GAAG,QAAQ,CAAC,eAAe,CAChD,0BAA0B,EAC1B,+BAA+B,CAChC,CAAC;IAEF,MAAM,iBAAiB,GAAG,QAAQ,CAAC,eAAe,CAChD,0BAA0B,EAC1B,+BAA+B,CAChC,CAAC;IAEF,OAAO;QACL,aAAa;QACb,mBAAmB;QACnB,kBAAkB;QAElB,OAAO;QACP,iBAAiB;QACjB,mBAAmB;QAEnB,kBAAkB;QAClB,mBAAmB;QACnB,oBAAoB;QACpB,oBAAoB;QACpB,qBAAqB;QAErB,YAAY;QACZ,qBAAqB;QACrB,mBAAmB;QAEnB,cAAc;QACd,oBAAoB;QACpB,kBAAkB;QAClB,eAAe;QAEf,OAAO;QACP,iBAAiB;QACjB,iBAAiB;QAEjB,qBAAqB;QACrB,QAAQ;KACT,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Metrics module exports.
|
|
3
|
-
*/
|
|
4
|
-
export { type Histogram, type HistogramBucket, type MetricLabels, type CounterMetric, type GaugeMetric, type HistogramMetric, type Metric, DEFAULT_DURATION_BUCKETS, DEFAULT_SIZE_BUCKETS, } from './types.js';
|
|
5
|
-
export { MetricsRegistry, globalRegistry, } from './registry.js';
|
|
6
|
-
export { createCoordinatorMetrics, type CoordinatorMetrics, } from './coordinator-metrics.js';
|
|
7
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/metrics/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,eAAe,EACf,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,wBAAwB,EACxB,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Metrics module exports.
|
|
3
|
-
*/
|
|
4
|
-
export { DEFAULT_DURATION_BUCKETS, DEFAULT_SIZE_BUCKETS, } from './types.js';
|
|
5
|
-
export { MetricsRegistry, globalRegistry, } from './registry.js';
|
|
6
|
-
export { createCoordinatorMetrics, } from './coordinator-metrics.js';
|
|
7
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/metrics/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAQL,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,eAAe,EACf,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,wBAAwB,GAEzB,MAAM,0BAA0B,CAAC"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Metrics registry - collects and formats Prometheus metrics.
|
|
3
|
-
*/
|
|
4
|
-
import { type CounterMetric, type GaugeMetric, type HistogramMetric } from './types.js';
|
|
5
|
-
/**
|
|
6
|
-
* Metrics registry for collecting and exporting metrics.
|
|
7
|
-
*/
|
|
8
|
-
export declare class MetricsRegistry {
|
|
9
|
-
private metrics;
|
|
10
|
-
/**
|
|
11
|
-
* Register a counter metric.
|
|
12
|
-
*/
|
|
13
|
-
registerCounter(name: string, help: string): CounterMetric;
|
|
14
|
-
/**
|
|
15
|
-
* Register a gauge metric.
|
|
16
|
-
*/
|
|
17
|
-
registerGauge(name: string, help: string): GaugeMetric;
|
|
18
|
-
/**
|
|
19
|
-
* Register a histogram metric.
|
|
20
|
-
*/
|
|
21
|
-
registerHistogram(name: string, help: string, buckets?: number[]): HistogramMetric;
|
|
22
|
-
/**
|
|
23
|
-
* Increment a counter.
|
|
24
|
-
*/
|
|
25
|
-
incCounter(metric: CounterMetric, labels?: Record<string, string>, value?: number): void;
|
|
26
|
-
/**
|
|
27
|
-
* Set a gauge value.
|
|
28
|
-
*/
|
|
29
|
-
setGauge(metric: GaugeMetric, value: number, labels?: Record<string, string>): void;
|
|
30
|
-
/**
|
|
31
|
-
* Increment a gauge.
|
|
32
|
-
*/
|
|
33
|
-
incGauge(metric: GaugeMetric, labels?: Record<string, string>, value?: number): void;
|
|
34
|
-
/**
|
|
35
|
-
* Decrement a gauge.
|
|
36
|
-
*/
|
|
37
|
-
decGauge(metric: GaugeMetric, labels?: Record<string, string>, value?: number): void;
|
|
38
|
-
/**
|
|
39
|
-
* Observe a value in a histogram.
|
|
40
|
-
*/
|
|
41
|
-
observeHistogram(metric: HistogramMetric, value: number, labels?: Record<string, string>): void;
|
|
42
|
-
/**
|
|
43
|
-
* Start a timer for a histogram observation.
|
|
44
|
-
*/
|
|
45
|
-
startTimer(metric: HistogramMetric, labels?: Record<string, string>): () => void;
|
|
46
|
-
/**
|
|
47
|
-
* Format all metrics as Prometheus text format.
|
|
48
|
-
*/
|
|
49
|
-
format(): string;
|
|
50
|
-
}
|
|
51
|
-
/** Global metrics registry instance. */
|
|
52
|
-
export declare const globalRegistry: MetricsRegistry;
|
|
53
|
-
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/metrics/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,eAAe,EAErB,MAAM,YAAY,CAAC;AAoBpB;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAA6B;IAE5C;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa;IAW1D;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW;IAWtD;;OAEG;IACH,iBAAiB,CACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,EAA6B,GAC3C,eAAe;IAYlB;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EAAE,KAAK,SAAI,GAAG,IAAI;IAKvF;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,IAAI;IAKvF;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EAAE,KAAK,SAAI,GAAG,IAAI;IAKnF;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EAAE,KAAK,SAAI,GAAG,IAAI;IAKnF;;OAEG;IACH,gBAAgB,CACd,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAClC,IAAI;IAuBP;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,MAAM,IAAI;IAQpF;;OAEG;IACH,MAAM,IAAI,MAAM;CA4BjB;AAED,wCAAwC;AACxC,eAAO,MAAM,cAAc,iBAAwB,CAAC"}
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Metrics registry - collects and formats Prometheus metrics.
|
|
3
|
-
*/
|
|
4
|
-
import { DEFAULT_DURATION_BUCKETS, } from './types.js';
|
|
5
|
-
/**
|
|
6
|
-
* Serialize labels to a string key.
|
|
7
|
-
*/
|
|
8
|
-
function labelsToKey(labels) {
|
|
9
|
-
if (Object.keys(labels).length === 0)
|
|
10
|
-
return '';
|
|
11
|
-
return Object.entries(labels)
|
|
12
|
-
.sort(([a], [b]) => a.localeCompare(b))
|
|
13
|
-
.map(([k, v]) => `${k}="${v}"`)
|
|
14
|
-
.join(',');
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Format labels for Prometheus output.
|
|
18
|
-
*/
|
|
19
|
-
function formatLabels(labelKey) {
|
|
20
|
-
return labelKey ? `{${labelKey}}` : '';
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Metrics registry for collecting and exporting metrics.
|
|
24
|
-
*/
|
|
25
|
-
export class MetricsRegistry {
|
|
26
|
-
metrics = new Map();
|
|
27
|
-
/**
|
|
28
|
-
* Register a counter metric.
|
|
29
|
-
*/
|
|
30
|
-
registerCounter(name, help) {
|
|
31
|
-
const metric = {
|
|
32
|
-
name,
|
|
33
|
-
help,
|
|
34
|
-
type: 'counter',
|
|
35
|
-
values: new Map(),
|
|
36
|
-
};
|
|
37
|
-
this.metrics.set(name, metric);
|
|
38
|
-
return metric;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Register a gauge metric.
|
|
42
|
-
*/
|
|
43
|
-
registerGauge(name, help) {
|
|
44
|
-
const metric = {
|
|
45
|
-
name,
|
|
46
|
-
help,
|
|
47
|
-
type: 'gauge',
|
|
48
|
-
values: new Map(),
|
|
49
|
-
};
|
|
50
|
-
this.metrics.set(name, metric);
|
|
51
|
-
return metric;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Register a histogram metric.
|
|
55
|
-
*/
|
|
56
|
-
registerHistogram(name, help, buckets = DEFAULT_DURATION_BUCKETS) {
|
|
57
|
-
const metric = {
|
|
58
|
-
name,
|
|
59
|
-
help,
|
|
60
|
-
type: 'histogram',
|
|
61
|
-
values: new Map(),
|
|
62
|
-
bucketBoundaries: [...buckets].sort((a, b) => a - b),
|
|
63
|
-
};
|
|
64
|
-
this.metrics.set(name, metric);
|
|
65
|
-
return metric;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Increment a counter.
|
|
69
|
-
*/
|
|
70
|
-
incCounter(metric, labels = {}, value = 1) {
|
|
71
|
-
const key = labelsToKey(labels);
|
|
72
|
-
metric.values.set(key, (metric.values.get(key) || 0) + value);
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Set a gauge value.
|
|
76
|
-
*/
|
|
77
|
-
setGauge(metric, value, labels = {}) {
|
|
78
|
-
const key = labelsToKey(labels);
|
|
79
|
-
metric.values.set(key, value);
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Increment a gauge.
|
|
83
|
-
*/
|
|
84
|
-
incGauge(metric, labels = {}, value = 1) {
|
|
85
|
-
const key = labelsToKey(labels);
|
|
86
|
-
metric.values.set(key, (metric.values.get(key) || 0) + value);
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Decrement a gauge.
|
|
90
|
-
*/
|
|
91
|
-
decGauge(metric, labels = {}, value = 1) {
|
|
92
|
-
const key = labelsToKey(labels);
|
|
93
|
-
metric.values.set(key, (metric.values.get(key) || 0) - value);
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Observe a value in a histogram.
|
|
97
|
-
*/
|
|
98
|
-
observeHistogram(metric, value, labels = {}) {
|
|
99
|
-
const key = labelsToKey(labels);
|
|
100
|
-
let hist = metric.values.get(key);
|
|
101
|
-
if (!hist) {
|
|
102
|
-
hist = {
|
|
103
|
-
buckets: metric.bucketBoundaries.map(le => ({ le, count: 0 })),
|
|
104
|
-
sum: 0,
|
|
105
|
-
count: 0,
|
|
106
|
-
};
|
|
107
|
-
metric.values.set(key, hist);
|
|
108
|
-
}
|
|
109
|
-
hist.sum += value;
|
|
110
|
-
hist.count += 1;
|
|
111
|
-
for (const bucket of hist.buckets) {
|
|
112
|
-
if (value <= bucket.le) {
|
|
113
|
-
bucket.count += 1;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Start a timer for a histogram observation.
|
|
119
|
-
*/
|
|
120
|
-
startTimer(metric, labels = {}) {
|
|
121
|
-
const start = performance.now();
|
|
122
|
-
return () => {
|
|
123
|
-
const duration = (performance.now() - start) / 1000; // Convert to seconds
|
|
124
|
-
this.observeHistogram(metric, duration, labels);
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Format all metrics as Prometheus text format.
|
|
129
|
-
*/
|
|
130
|
-
format() {
|
|
131
|
-
const lines = [];
|
|
132
|
-
for (const metric of this.metrics.values()) {
|
|
133
|
-
lines.push(`# HELP ${metric.name} ${metric.help}`);
|
|
134
|
-
lines.push(`# TYPE ${metric.name} ${metric.type}`);
|
|
135
|
-
if (metric.type === 'counter' || metric.type === 'gauge') {
|
|
136
|
-
for (const [labelKey, value] of metric.values) {
|
|
137
|
-
lines.push(`${metric.name}${formatLabels(labelKey)} ${value}`);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
else if (metric.type === 'histogram') {
|
|
141
|
-
for (const [labelKey, hist] of metric.values) {
|
|
142
|
-
const labelPrefix = labelKey ? `${labelKey},` : '';
|
|
143
|
-
for (const bucket of hist.buckets) {
|
|
144
|
-
lines.push(`${metric.name}_bucket{${labelPrefix}le="${bucket.le}"} ${bucket.count}`);
|
|
145
|
-
}
|
|
146
|
-
lines.push(`${metric.name}_bucket{${labelPrefix}le="+Inf"} ${hist.count}`);
|
|
147
|
-
lines.push(`${metric.name}_sum${formatLabels(labelKey)} ${hist.sum}`);
|
|
148
|
-
lines.push(`${metric.name}_count${formatLabels(labelKey)} ${hist.count}`);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
lines.push('');
|
|
152
|
-
}
|
|
153
|
-
return lines.join('\n');
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
/** Global metrics registry instance. */
|
|
157
|
-
export const globalRegistry = new MetricsRegistry();
|
|
158
|
-
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/metrics/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Metrics types and interfaces.
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Histogram bucket for timing metrics.
|
|
6
|
-
*/
|
|
7
|
-
export interface HistogramBucket {
|
|
8
|
-
le: number;
|
|
9
|
-
count: number;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* A histogram metric with buckets.
|
|
13
|
-
*/
|
|
14
|
-
export interface Histogram {
|
|
15
|
-
buckets: HistogramBucket[];
|
|
16
|
-
sum: number;
|
|
17
|
-
count: number;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Labels for categorizing metrics.
|
|
21
|
-
*/
|
|
22
|
-
export interface MetricLabels {
|
|
23
|
-
[key: string]: string;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Counter metric - monotonically increasing value.
|
|
27
|
-
*/
|
|
28
|
-
export interface CounterMetric {
|
|
29
|
-
name: string;
|
|
30
|
-
help: string;
|
|
31
|
-
type: 'counter';
|
|
32
|
-
values: Map<string, number>;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Gauge metric - value that can go up and down.
|
|
36
|
-
*/
|
|
37
|
-
export interface GaugeMetric {
|
|
38
|
-
name: string;
|
|
39
|
-
help: string;
|
|
40
|
-
type: 'gauge';
|
|
41
|
-
values: Map<string, number>;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Histogram metric - distribution of values.
|
|
45
|
-
*/
|
|
46
|
-
export interface HistogramMetric {
|
|
47
|
-
name: string;
|
|
48
|
-
help: string;
|
|
49
|
-
type: 'histogram';
|
|
50
|
-
values: Map<string, Histogram>;
|
|
51
|
-
bucketBoundaries: number[];
|
|
52
|
-
}
|
|
53
|
-
export type Metric = CounterMetric | GaugeMetric | HistogramMetric;
|
|
54
|
-
/**
|
|
55
|
-
* Default histogram buckets for timing (in seconds).
|
|
56
|
-
*/
|
|
57
|
-
export declare const DEFAULT_DURATION_BUCKETS: number[];
|
|
58
|
-
/**
|
|
59
|
-
* Default histogram buckets for sizes (in bytes/items).
|
|
60
|
-
*/
|
|
61
|
-
export declare const DEFAULT_SIZE_BUCKETS: number[];
|
|
62
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/metrics/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/B,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,MAAM,GAAG,aAAa,GAAG,WAAW,GAAG,eAAe,CAAC;AAEnE;;GAEG;AACH,eAAO,MAAM,wBAAwB,UAEpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,UAEhC,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Metrics types and interfaces.
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Default histogram buckets for timing (in seconds).
|
|
6
|
-
*/
|
|
7
|
-
export const DEFAULT_DURATION_BUCKETS = [
|
|
8
|
-
0.001, 0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10
|
|
9
|
-
];
|
|
10
|
-
/**
|
|
11
|
-
* Default histogram buckets for sizes (in bytes/items).
|
|
12
|
-
*/
|
|
13
|
-
export const DEFAULT_SIZE_BUCKETS = [
|
|
14
|
-
1, 10, 50, 100, 500, 1000, 5000, 10000, 50000, 100000
|
|
15
|
-
];
|
|
16
|
-
//# sourceMappingURL=types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/metrics/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2DH;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;CAC/D,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;CACtD,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Server module exports.
|
|
3
|
-
*/
|
|
4
|
-
export { createCoordinatorServer, type CoordinatorServer, type CoordinatorServerOptions, } from './server.js';
|
|
5
|
-
export { registerRoutes } from './routes.js';
|
|
6
|
-
export { registerWebSocket } from './websocket.js';
|
|
7
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,GAC9B,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/src/server/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,uBAAuB,GAGxB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HTTP routes for sync operations.
|
|
3
|
-
*/
|
|
4
|
-
import type { FastifyInstance } from 'fastify';
|
|
5
|
-
import type { CoordinatorService } from '../service/coordinator-service.js';
|
|
6
|
-
/**
|
|
7
|
-
* Register sync HTTP routes.
|
|
8
|
-
*/
|
|
9
|
-
export declare function registerRoutes(app: FastifyInstance, service: CoordinatorService, basePath: string): void;
|
|
10
|
-
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/server/routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAE7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAI5E;;GAEG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,MAAM,GACf,IAAI,CA+JN"}
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HTTP routes for sync operations.
|
|
3
|
-
*/
|
|
4
|
-
import { siteIdFromBase64, siteIdToBase64, deserializeHLC, serializeHLC } from '@quereus/plugin-sync';
|
|
5
|
-
import { httpLog } from '../common/logger.js';
|
|
6
|
-
/**
|
|
7
|
-
* Register sync HTTP routes.
|
|
8
|
-
*/
|
|
9
|
-
export function registerRoutes(app, service, basePath) {
|
|
10
|
-
// Helper to extract auth context from request
|
|
11
|
-
const getAuthContext = (request) => {
|
|
12
|
-
const authHeader = request.headers.authorization;
|
|
13
|
-
const token = authHeader?.startsWith('Bearer ')
|
|
14
|
-
? authHeader.slice(7)
|
|
15
|
-
: authHeader;
|
|
16
|
-
const siteIdRaw = request.headers['x-site-id'];
|
|
17
|
-
return {
|
|
18
|
-
token,
|
|
19
|
-
siteIdRaw,
|
|
20
|
-
siteId: siteIdRaw ? siteIdFromBase64(siteIdRaw) : undefined,
|
|
21
|
-
request,
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
// Helper for error responses
|
|
25
|
-
const errorResponse = (reply, code, message, status = 400) => {
|
|
26
|
-
return reply.status(status).send({
|
|
27
|
-
ok: false,
|
|
28
|
-
error: { code, message },
|
|
29
|
-
});
|
|
30
|
-
};
|
|
31
|
-
// Authenticate and get client identity
|
|
32
|
-
const authenticate = async (request, reply) => {
|
|
33
|
-
try {
|
|
34
|
-
const context = getAuthContext(request);
|
|
35
|
-
return await service.authenticate(context);
|
|
36
|
-
}
|
|
37
|
-
catch (err) {
|
|
38
|
-
const message = err instanceof Error ? err.message : 'Authentication failed';
|
|
39
|
-
errorResponse(reply, 'AUTH_FAILED', message, 401);
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
// GET /status - Health check and stats
|
|
44
|
-
app.get(`${basePath}/status`, async (_request, reply) => {
|
|
45
|
-
httpLog('GET %s/status', basePath);
|
|
46
|
-
const status = service.getStatus();
|
|
47
|
-
return reply.send({ ok: true, data: status });
|
|
48
|
-
});
|
|
49
|
-
// GET /metrics - Prometheus metrics
|
|
50
|
-
app.get(`${basePath}/metrics`, async (_request, reply) => {
|
|
51
|
-
httpLog('GET %s/metrics', basePath);
|
|
52
|
-
const metrics = service.getMetrics();
|
|
53
|
-
const output = metrics.registry.format();
|
|
54
|
-
return reply
|
|
55
|
-
.header('Content-Type', 'text/plain; version=0.0.4; charset=utf-8')
|
|
56
|
-
.send(output);
|
|
57
|
-
});
|
|
58
|
-
// GET /changes - Get changes since HLC
|
|
59
|
-
app.get(`${basePath}/changes`, async (request, reply) => {
|
|
60
|
-
httpLog('GET %s/changes', basePath);
|
|
61
|
-
const client = await authenticate(request, reply);
|
|
62
|
-
if (!client)
|
|
63
|
-
return;
|
|
64
|
-
try {
|
|
65
|
-
const query = request.query;
|
|
66
|
-
let sinceHLC;
|
|
67
|
-
if (query.sinceHLC) {
|
|
68
|
-
// HLC is passed as base64-encoded serialized form
|
|
69
|
-
const hlcBytes = Buffer.from(query.sinceHLC, 'base64');
|
|
70
|
-
sinceHLC = deserializeHLC(hlcBytes);
|
|
71
|
-
}
|
|
72
|
-
const changes = await service.getChangesSince(client, sinceHLC);
|
|
73
|
-
// Serialize HLCs in response for JSON transport
|
|
74
|
-
const serializedChanges = changes.map(cs => ({
|
|
75
|
-
...cs,
|
|
76
|
-
siteId: siteIdToBase64(cs.siteId),
|
|
77
|
-
hlc: Buffer.from(serializeHLC(cs.hlc)).toString('base64'),
|
|
78
|
-
changes: cs.changes.map(c => ({
|
|
79
|
-
...c,
|
|
80
|
-
hlc: Buffer.from(serializeHLC(c.hlc)).toString('base64'),
|
|
81
|
-
})),
|
|
82
|
-
schemaMigrations: cs.schemaMigrations.map(m => ({
|
|
83
|
-
...m,
|
|
84
|
-
hlc: Buffer.from(serializeHLC(m.hlc)).toString('base64'),
|
|
85
|
-
})),
|
|
86
|
-
}));
|
|
87
|
-
return reply.send({ ok: true, data: { changes: serializedChanges } });
|
|
88
|
-
}
|
|
89
|
-
catch (err) {
|
|
90
|
-
const message = err instanceof Error ? err.message : 'Failed to get changes';
|
|
91
|
-
httpLog('GET /changes error: %s', message);
|
|
92
|
-
return errorResponse(reply, 'GET_CHANGES_FAILED', message, 500);
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
// POST /changes - Apply changes from client
|
|
96
|
-
app.post(`${basePath}/changes`, async (request, reply) => {
|
|
97
|
-
httpLog('POST %s/changes', basePath);
|
|
98
|
-
const client = await authenticate(request, reply);
|
|
99
|
-
if (!client)
|
|
100
|
-
return;
|
|
101
|
-
try {
|
|
102
|
-
const body = request.body;
|
|
103
|
-
if (!body.changes || !Array.isArray(body.changes)) {
|
|
104
|
-
return errorResponse(reply, 'INVALID_BODY', 'Request body must contain changes array');
|
|
105
|
-
}
|
|
106
|
-
// Deserialize HLCs from JSON transport format
|
|
107
|
-
const changes = body.changes.map((cs) => ({
|
|
108
|
-
siteId: siteIdFromBase64(cs.siteId),
|
|
109
|
-
transactionId: cs.transactionId,
|
|
110
|
-
hlc: deserializeHLC(Buffer.from(cs.hlc, 'base64')),
|
|
111
|
-
changes: cs.changes.map(c => ({
|
|
112
|
-
...c,
|
|
113
|
-
hlc: deserializeHLC(Buffer.from(c.hlc, 'base64')),
|
|
114
|
-
})),
|
|
115
|
-
schemaMigrations: (cs.schemaMigrations || []).map(m => ({
|
|
116
|
-
...m,
|
|
117
|
-
hlc: deserializeHLC(Buffer.from(m.hlc, 'base64')),
|
|
118
|
-
})),
|
|
119
|
-
}));
|
|
120
|
-
const result = await service.applyChanges(client, changes);
|
|
121
|
-
return reply.send({ ok: true, data: result });
|
|
122
|
-
}
|
|
123
|
-
catch (err) {
|
|
124
|
-
const message = err instanceof Error ? err.message : 'Failed to apply changes';
|
|
125
|
-
httpLog('POST /changes error: %s', message);
|
|
126
|
-
return errorResponse(reply, 'APPLY_CHANGES_FAILED', message, 500);
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
// GET /snapshot - Stream full snapshot
|
|
130
|
-
app.get(`${basePath}/snapshot`, async (request, reply) => {
|
|
131
|
-
httpLog('GET %s/snapshot', basePath);
|
|
132
|
-
const client = await authenticate(request, reply);
|
|
133
|
-
if (!client)
|
|
134
|
-
return;
|
|
135
|
-
try {
|
|
136
|
-
// Stream snapshot as newline-delimited JSON
|
|
137
|
-
reply.raw.setHeader('Content-Type', 'application/x-ndjson');
|
|
138
|
-
reply.raw.setHeader('Transfer-Encoding', 'chunked');
|
|
139
|
-
for await (const chunk of service.getSnapshotStream(client)) {
|
|
140
|
-
const serialized = JSON.stringify(chunk) + '\n';
|
|
141
|
-
reply.raw.write(serialized);
|
|
142
|
-
}
|
|
143
|
-
reply.raw.end();
|
|
144
|
-
}
|
|
145
|
-
catch (err) {
|
|
146
|
-
const message = err instanceof Error ? err.message : 'Failed to get snapshot';
|
|
147
|
-
httpLog('GET /snapshot error: %s', message);
|
|
148
|
-
// Can't send error response if we've started streaming
|
|
149
|
-
reply.raw.end();
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
//# sourceMappingURL=routes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/server/routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAA4B,MAAM,sBAAsB,CAAC;AAGhI,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,GAAoB,EACpB,OAA2B,EAC3B,QAAgB;IAEhB,8CAA8C;IAC9C,MAAM,cAAc,GAAG,CAAC,OAAuB,EAAe,EAAE;QAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;QACjD,MAAM,KAAK,GAAG,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC;YAC7C,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YACrB,CAAC,CAAC,UAAU,CAAC;QAEf,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAuB,CAAC;QAErE,OAAO;YACL,KAAK;YACL,SAAS;YACT,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;YAC3D,OAAO;SACR,CAAC;IACJ,CAAC,CAAC;IAEF,6BAA6B;IAC7B,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAE,IAAY,EAAE,OAAe,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE;QACzF,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;YAC/B,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;SACzB,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,uCAAuC;IACvC,MAAM,YAAY,GAAG,KAAK,EAAE,OAAuB,EAAE,KAAmB,EAAkC,EAAE;QAC1G,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC;YAC7E,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,uCAAuC;IACvC,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;QACtD,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,oCAAoC;IACpC,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;QACvD,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACzC,OAAO,KAAK;aACT,MAAM,CAAC,cAAc,EAAE,0CAA0C,CAAC;aAClE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,uCAAuC;IACvC,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACtD,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAEpC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,OAAO,CAAC,KAA8B,CAAC;YACrD,IAAI,QAAyB,CAAC;YAE9B,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,kDAAkD;gBAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACvD,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAEhE,gDAAgD;YAChD,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC3C,GAAG,EAAE;gBACL,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC;gBACjC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACzD,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC5B,GAAG,CAAC;oBACJ,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;iBACzD,CAAC,CAAC;gBACH,gBAAgB,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC9C,GAAG,CAAC;oBACJ,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;iBACzD,CAAC,CAAC;aACJ,CAAC,CAAC,CAAC;YAEJ,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC;YAC7E,OAAO,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;YAC3C,OAAO,aAAa,CAAC,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,4CAA4C;IAC5C,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvD,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QAErC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,OAAO,CAAC,IAA8B,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClD,OAAO,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,yCAAyC,CAAC,CAAC;YACzF,CAAC;YAED,8CAA8C;YAC9C,MAAM,OAAO,GAAiB,IAAI,CAAC,OAAqC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACpF,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC,MAAgB,CAAC;gBAC7C,aAAa,EAAE,EAAE,CAAC,aAAuB;gBACzC,GAAG,EAAE,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAa,EAAE,QAAQ,CAAC,CAAC;gBAC5D,OAAO,EAAG,EAAE,CAAC,OAAqC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC3D,GAAG,CAAC;oBACJ,GAAG,EAAE,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAa,EAAE,QAAQ,CAAC,CAAC;iBAC5D,CAAC,CAAC;gBACH,gBAAgB,EAAE,CAAE,EAAE,CAAC,gBAA8C,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACrF,GAAG,CAAC;oBACJ,GAAG,EAAE,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAa,EAAE,QAAQ,CAAC,CAAC;iBAC5D,CAAC,CAAC;aACJ,CAAC,CAAgB,CAAC;YAEnB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC;YAC/E,OAAO,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;YAC5C,OAAO,aAAa,CAAC,KAAK,EAAE,sBAAsB,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACpE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,uCAAuC;IACvC,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvD,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QAErC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,IAAI,CAAC;YACH,4CAA4C;YAC5C,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC;YAC5D,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;YAEpD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;gBAChD,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC9B,CAAC;YAED,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;YAC9E,OAAO,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;YAC5C,uDAAuD;YACvD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Fastify server setup for sync-coordinator.
|
|
3
|
-
*/
|
|
4
|
-
import { type FastifyInstance } from 'fastify';
|
|
5
|
-
import type { CoordinatorConfig } from '../config/types.js';
|
|
6
|
-
import { CoordinatorService } from '../service/coordinator-service.js';
|
|
7
|
-
import type { CoordinatorHooks } from '../service/types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Options for creating a coordinator server.
|
|
10
|
-
*/
|
|
11
|
-
export interface CoordinatorServerOptions {
|
|
12
|
-
/** Full configuration */
|
|
13
|
-
config: CoordinatorConfig;
|
|
14
|
-
/** Custom hooks for validation/auth */
|
|
15
|
-
hooks?: CoordinatorHooks;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Coordinator server instance.
|
|
19
|
-
*/
|
|
20
|
-
export interface CoordinatorServer {
|
|
21
|
-
/** The Fastify instance */
|
|
22
|
-
app: FastifyInstance;
|
|
23
|
-
/** The coordinator service */
|
|
24
|
-
service: CoordinatorService;
|
|
25
|
-
/** Start the server */
|
|
26
|
-
start(): Promise<void>;
|
|
27
|
-
/** Stop the server */
|
|
28
|
-
stop(): Promise<void>;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Create a coordinator server.
|
|
32
|
-
*/
|
|
33
|
-
export declare function createCoordinatorServer(options: CoordinatorServerOptions): Promise<CoordinatorServer>;
|
|
34
|
-
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/server/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAGxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAkC,MAAM,mCAAmC,CAAC;AACvG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAK5D;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,yBAAyB;IACzB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,uCAAuC;IACvC,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,GAAG,EAAE,eAAe,CAAC;IACrB,8BAA8B;IAC9B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,uBAAuB;IACvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,sBAAsB;IACtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAqD5B"}
|