orbitdb-relay-pinner 0.6.4 → 0.7.1
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 +45 -0
- package/dist/config/libp2p.d.ts +3 -1
- package/dist/config/libp2p.d.ts.map +1 -1
- package/dist/config/libp2p.js +2 -1
- package/dist/config/libp2p.js.map +1 -1
- package/dist/events/handlers.d.ts +1 -1
- package/dist/events/handlers.d.ts.map +1 -1
- package/dist/events/handlers.js +2 -57
- package/dist/events/handlers.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/relay.d.ts.map +1 -1
- package/dist/relay.js +12 -30
- package/dist/relay.js.map +1 -1
- package/dist/services/database.d.ts +1 -0
- package/dist/services/database.d.ts.map +1 -1
- package/dist/services/database.js +28 -1
- package/dist/services/database.js.map +1 -1
- package/dist/services/metrics.d.ts.map +1 -1
- package/dist/services/metrics.js +164 -154
- package/dist/services/metrics.js.map +1 -1
- package/dist/services/orbitdb-replication-service.d.ts +19 -0
- package/dist/services/orbitdb-replication-service.d.ts.map +1 -0
- package/dist/services/orbitdb-replication-service.js +232 -0
- package/dist/services/orbitdb-replication-service.js.map +1 -0
- package/docs/http-api.md +316 -0
- package/docs/libp2p-service.md +151 -0
- package/docs/nym-vpn-ports.md +44 -0
- package/docs/relay-media-pinning.md +104 -0
- package/docs/systemd-deployment.md +234 -0
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -13,6 +13,7 @@ See `AGENTS.md` for an architecture and feature guide (entrypoints, data flow, e
|
|
|
13
13
|
|
|
14
14
|
- Relay media pinning flow: `docs/relay-media-pinning.md`
|
|
15
15
|
- HTTP API (`/health`, `/multiaddrs`, `/pinning/*`, `/ipfs/*`, `/metrics`): `docs/http-api.md`
|
|
16
|
+
- Libp2p service integration guide: `docs/libp2p-service.md`
|
|
16
17
|
|
|
17
18
|
## CLI
|
|
18
19
|
|
|
@@ -34,6 +35,50 @@ Test mode (deterministic peer id via `TEST_PRIVATE_KEY` or `RELAY_PRIV_KEY`):
|
|
|
34
35
|
orbitdb-relay-pinner --test
|
|
35
36
|
```
|
|
36
37
|
|
|
38
|
+
## Library
|
|
39
|
+
|
|
40
|
+
The package still exports `startRelay()` as the compatibility wrapper used by the CLI and the existing tests.
|
|
41
|
+
|
|
42
|
+
For a fuller install + integration walkthrough, see `docs/libp2p-service.md`.
|
|
43
|
+
|
|
44
|
+
It also exports `orbitdbReplicationService()` so the OrbitDB replication + Helia pinning logic can be mounted directly in any libp2p node:
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
import { createLibp2p } from 'libp2p'
|
|
48
|
+
import { LevelDatastore } from 'datastore-level'
|
|
49
|
+
import { LevelBlockstore } from 'blockstore-level'
|
|
50
|
+
import { gossipsub } from '@chainsafe/libp2p-gossipsub'
|
|
51
|
+
import { identify } from '@libp2p/identify'
|
|
52
|
+
import { orbitdbReplicationService } from 'orbitdb-relay-pinner'
|
|
53
|
+
|
|
54
|
+
const datastore = new LevelDatastore('./tmp/ipfs/data')
|
|
55
|
+
const blockstore = new LevelBlockstore('./tmp/ipfs/blocks')
|
|
56
|
+
|
|
57
|
+
await datastore.open()
|
|
58
|
+
await blockstore.open()
|
|
59
|
+
|
|
60
|
+
const libp2p = await createLibp2p({
|
|
61
|
+
datastore,
|
|
62
|
+
services: {
|
|
63
|
+
identify: identify(),
|
|
64
|
+
pubsub: gossipsub(),
|
|
65
|
+
orbitdbReplication: orbitdbReplicationService({
|
|
66
|
+
datastore,
|
|
67
|
+
blockstore,
|
|
68
|
+
orbitdbDirectory: './tmp/orbitdb'
|
|
69
|
+
})
|
|
70
|
+
}
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
await libp2p.services.orbitdbReplication.syncAllOrbitDBRecords('/orbitdb/...')
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Notes:
|
|
77
|
+
|
|
78
|
+
- `orbitdbReplicationService()` expects caller-owned `datastore` and `blockstore`.
|
|
79
|
+
- Stopping the libp2p node stops the replication service, OrbitDB, and its Helia instance.
|
|
80
|
+
- The caller still closes `datastore` and `blockstore` after `libp2p.stop()`.
|
|
81
|
+
|
|
37
82
|
## Supported Access Controllers
|
|
38
83
|
|
|
39
84
|
`orbitdb-relay-pinner` supports the following Access Controller types when opening OrbitDB databases:
|
package/dist/config/libp2p.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { PrivateKey } from '@libp2p/interface';
|
|
2
2
|
import type { Datastore } from 'interface-datastore';
|
|
3
|
-
|
|
3
|
+
type ExtraServiceFactories = Record<string, (components: any) => unknown>;
|
|
4
|
+
export declare const createLibp2pConfig: (privateKey: PrivateKey, datastore: Datastore, extraServices?: ExtraServiceFactories) => any;
|
|
5
|
+
export {};
|
|
4
6
|
//# sourceMappingURL=libp2p.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p.d.ts","sourceRoot":"","sources":["../../src/config/libp2p.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AA2DpD,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"libp2p.d.ts","sourceRoot":"","sources":["../../src/config/libp2p.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AA2DpD,KAAK,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK,OAAO,CAAC,CAAA;AAEzE,eAAO,MAAM,kBAAkB,GAC7B,YAAY,UAAU,EACtB,WAAW,SAAS,EACpB,gBAAe,qBAA0B,KAkFpC,GACN,CAAA"}
|
package/dist/config/libp2p.js
CHANGED
|
@@ -54,7 +54,7 @@ function readRelayListenEnv() {
|
|
|
54
54
|
pubsubTopics,
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
|
-
export const createLibp2pConfig = (privateKey, datastore) => {
|
|
57
|
+
export const createLibp2pConfig = (privateKey, datastore, extraServices = {}) => {
|
|
58
58
|
const e = readRelayListenEnv();
|
|
59
59
|
return {
|
|
60
60
|
privateKey,
|
|
@@ -129,6 +129,7 @@ export const createLibp2pConfig = (privateKey, datastore) => {
|
|
|
129
129
|
}),
|
|
130
130
|
}),
|
|
131
131
|
keychain: keychain(),
|
|
132
|
+
...extraServices,
|
|
132
133
|
},
|
|
133
134
|
connectionGater: {
|
|
134
135
|
denyDialMultiaddr: async () => false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p.js","sourceRoot":"","sources":["../../src/config/libp2p.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"libp2p.js","sourceRoot":"","sources":["../../src/config/libp2p.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function setupEventHandlers(libp2p: any
|
|
1
|
+
export declare function setupEventHandlers(libp2p: any): () => Promise<void>;
|
|
2
2
|
//# sourceMappingURL=handlers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/events/handlers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/events/handlers.ts"],"names":[],"mappings":"AAYA,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,uBAoF7C"}
|
package/dist/events/handlers.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import PQueue from 'p-queue';
|
|
2
1
|
import { WebSocketsSecure } from '@multiformats/multiaddr-matcher';
|
|
3
|
-
import {
|
|
4
|
-
import { log, syncLog } from '../utils/logger.js';
|
|
2
|
+
import { log } from '../utils/logger.js';
|
|
5
3
|
import { loggingConfig } from '../config/logging.js';
|
|
6
4
|
import { isRelayRequireOrbitdbHeadsProtocolEnabled } from '../config/orbitdb-inbound-filter-env.js';
|
|
7
5
|
import { incRelayInboundOrbitdbHeadsReject } from '../services/metrics.js';
|
|
@@ -10,7 +8,7 @@ function remoteHasOrbitdbHeadsProtocol(protocols) {
|
|
|
10
8
|
return false;
|
|
11
9
|
return protocols.some((p) => typeof p === 'string' && p.startsWith('/orbitdb/heads/'));
|
|
12
10
|
}
|
|
13
|
-
export function setupEventHandlers(libp2p
|
|
11
|
+
export function setupEventHandlers(libp2p) {
|
|
14
12
|
const cleanupFunctions = [];
|
|
15
13
|
const certificateIntervals = new Set();
|
|
16
14
|
let isShuttingDown = false;
|
|
@@ -75,42 +73,6 @@ export function setupEventHandlers(libp2p, databaseService) {
|
|
|
75
73
|
};
|
|
76
74
|
libp2p.addEventListener('peer:disconnect', peerDisconnectHandler);
|
|
77
75
|
cleanupFunctions.push(() => libp2p.removeEventListener('peer:disconnect', peerDisconnectHandler));
|
|
78
|
-
const syncQueue = new PQueue({ concurrency: 2 });
|
|
79
|
-
const subscribedOrbitdbTopics = new Set();
|
|
80
|
-
const pubsub = libp2p.services.pubsub;
|
|
81
|
-
const ensureOrbitdbTopicSubscribed = async (topic) => {
|
|
82
|
-
if (!topic?.startsWith('/orbitdb/'))
|
|
83
|
-
return;
|
|
84
|
-
if (subscribedOrbitdbTopics.has(topic))
|
|
85
|
-
return;
|
|
86
|
-
try {
|
|
87
|
-
await pubsub.subscribe(topic);
|
|
88
|
-
subscribedOrbitdbTopics.add(topic);
|
|
89
|
-
await databaseService.prefetchManifestForLogging?.(topic);
|
|
90
|
-
{
|
|
91
|
-
const dbName = databaseService.getCachedDbName?.(topic);
|
|
92
|
-
syncLog('Explicitly subscribed relay pubsub to OrbitDB topic:', inspect(dbName ? { topic, dbName } : { topic }, { depth: null, colors: false, compact: false }));
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
catch (error) {
|
|
96
|
-
syncLog('Failed to subscribe relay pubsub to OrbitDB topic:', topic, error?.message || String(error));
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
const pubsubMessageHandler = (event) => {
|
|
100
|
-
if (isShuttingDown)
|
|
101
|
-
return;
|
|
102
|
-
const msg = event.detail;
|
|
103
|
-
if (typeof msg.topic === 'string' && msg.topic.startsWith('/orbitdb/')) {
|
|
104
|
-
const dbName = databaseService.getCachedDbName?.(msg.topic);
|
|
105
|
-
syncLog('Received pubsub message:', inspect(dbName ? { topic: msg.topic, dbName } : { topic: msg.topic }, { depth: null, colors: false, compact: false }));
|
|
106
|
-
}
|
|
107
|
-
if (msg.topic && msg.topic.startsWith('/orbitdb/')) {
|
|
108
|
-
syncQueue.add(() => ensureOrbitdbTopicSubscribed(msg.topic));
|
|
109
|
-
syncQueue.add(() => databaseService.syncAllOrbitDBRecords(msg.topic));
|
|
110
|
-
}
|
|
111
|
-
};
|
|
112
|
-
libp2p.services.pubsub.addEventListener('message', pubsubMessageHandler);
|
|
113
|
-
cleanupFunctions.push(() => libp2p.services.pubsub.removeEventListener('message', pubsubMessageHandler));
|
|
114
76
|
const connectionOpenHandler = async (event) => {
|
|
115
77
|
const connection = event.detail;
|
|
116
78
|
if (loggingConfig.logLevels.connection)
|
|
@@ -118,26 +80,9 @@ export function setupEventHandlers(libp2p, databaseService) {
|
|
|
118
80
|
};
|
|
119
81
|
libp2p.addEventListener('connection:open', connectionOpenHandler);
|
|
120
82
|
cleanupFunctions.push(() => libp2p.removeEventListener('connection:open', connectionOpenHandler));
|
|
121
|
-
const subscriptionChangeHandler = (event) => {
|
|
122
|
-
if (isShuttingDown)
|
|
123
|
-
return;
|
|
124
|
-
if (event.detail?.subscriptions) {
|
|
125
|
-
for (const subscription of event.detail.subscriptions) {
|
|
126
|
-
if (subscription.topic?.startsWith('/orbitdb/')) {
|
|
127
|
-
syncQueue.add(() => ensureOrbitdbTopicSubscribed(subscription.topic));
|
|
128
|
-
syncQueue.add(() => databaseService.syncAllOrbitDBRecords(subscription.topic));
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
|
-
pubsub.addEventListener('subscription-change', subscriptionChangeHandler);
|
|
134
|
-
cleanupFunctions.push(() => pubsub.removeEventListener('subscription-change', subscriptionChangeHandler));
|
|
135
83
|
return async () => {
|
|
136
84
|
isShuttingDown = true;
|
|
137
85
|
cleanupFunctions.forEach((cleanup) => cleanup());
|
|
138
|
-
syncQueue.pause();
|
|
139
|
-
syncQueue.clear();
|
|
140
|
-
await syncQueue.onIdle();
|
|
141
86
|
for (const interval of certificateIntervals) {
|
|
142
87
|
clearInterval(interval);
|
|
143
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/events/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/events/handlers.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export type { RelayOptions, RelayRuntime } from './relay.js';
|
|
2
2
|
export { startRelay } from './relay.js';
|
|
3
|
+
export type { OrbitdbReplicationServiceApi, OrbitdbReplicationServiceInit } from './services/orbitdb-replication-service.js';
|
|
4
|
+
export { orbitdbReplicationService } from './services/orbitdb-replication-service.js';
|
|
3
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,YAAY,EAAE,4BAA4B,EAAE,6BAA6B,EAAE,MAAM,2CAA2C,CAAA;AAC5H,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAA"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAA"}
|
package/dist/relay.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B,CAAA;AAwDD,wBAAsB,UAAU,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAsE/E"}
|
package/dist/relay.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { createLibp2p } from 'libp2p';
|
|
2
|
-
import { createHelia } from 'helia';
|
|
3
2
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
4
3
|
import { privateKeyFromProtobuf } from '@libp2p/crypto/keys';
|
|
5
4
|
import { join } from 'node:path';
|
|
6
5
|
import { createLibp2pConfig } from './config/libp2p.js';
|
|
7
6
|
import { initializeStorage } from './services/storage.js';
|
|
8
|
-
import { DatabaseService } from './services/database.js';
|
|
9
7
|
import { MetricsServer } from './services/metrics.js';
|
|
8
|
+
import { orbitdbReplicationService } from './services/orbitdb-replication-service.js';
|
|
10
9
|
import { setupEventHandlers } from './events/handlers.js';
|
|
11
10
|
import { loggingConfig } from './config/logging.js';
|
|
12
11
|
import { headsStreamLog, log } from './utils/logger.js';
|
|
@@ -65,15 +64,19 @@ export async function startRelay(opts = {}) {
|
|
|
65
64
|
privateKey = privateKeyFromProtobuf(uint8ArrayFromString(hex, 'hex'));
|
|
66
65
|
}
|
|
67
66
|
}
|
|
68
|
-
const libp2p = await createLibp2p(createLibp2pConfig(privateKey, datastore
|
|
67
|
+
const libp2p = await createLibp2p(createLibp2pConfig(privateKey, datastore, {
|
|
68
|
+
orbitdbReplication: orbitdbReplicationService({
|
|
69
|
+
datastore,
|
|
70
|
+
blockstore,
|
|
71
|
+
orbitdbDirectory: join(storageDir, 'orbitdb'),
|
|
72
|
+
}),
|
|
73
|
+
}));
|
|
69
74
|
attachOrbitdbHeadsStreamLogging(libp2p);
|
|
70
|
-
const
|
|
71
|
-
const
|
|
72
|
-
await databaseService.initialize(ipfs, join(storageDir, 'orbitdb'));
|
|
73
|
-
const cleanupEventHandlers = await setupEventHandlers(libp2p, databaseService);
|
|
75
|
+
const orbitdbReplication = libp2p.services.orbitdbReplication;
|
|
76
|
+
const cleanupEventHandlers = await setupEventHandlers(libp2p);
|
|
74
77
|
const metricsServer = new MetricsServer({
|
|
75
78
|
getLibp2p: () => libp2p,
|
|
76
|
-
pinning:
|
|
79
|
+
pinning: orbitdbReplication.createPinningHttpHandlers(),
|
|
77
80
|
});
|
|
78
81
|
await metricsServer.start();
|
|
79
82
|
metricsServer.attachAutoTlsFromLibp2p(libp2p);
|
|
@@ -83,19 +86,12 @@ export async function startRelay(opts = {}) {
|
|
|
83
86
|
}
|
|
84
87
|
return {
|
|
85
88
|
stop: async () => {
|
|
86
|
-
databaseService.beginShutdown();
|
|
87
89
|
try {
|
|
88
90
|
await cleanupEventHandlers?.();
|
|
89
91
|
}
|
|
90
92
|
catch {
|
|
91
93
|
// ignore
|
|
92
94
|
}
|
|
93
|
-
try {
|
|
94
|
-
await databaseService.stop();
|
|
95
|
-
}
|
|
96
|
-
catch {
|
|
97
|
-
// ignore
|
|
98
|
-
}
|
|
99
95
|
try {
|
|
100
96
|
await metricsServer.stop();
|
|
101
97
|
}
|
|
@@ -103,15 +99,7 @@ export async function startRelay(opts = {}) {
|
|
|
103
99
|
// ignore
|
|
104
100
|
}
|
|
105
101
|
try {
|
|
106
|
-
|
|
107
|
-
// @ts-expect-error helia internal store wrappers
|
|
108
|
-
await ipfs.blockstore?.child?.child?.child?.close?.();
|
|
109
|
-
}
|
|
110
|
-
catch {
|
|
111
|
-
// ignore
|
|
112
|
-
}
|
|
113
|
-
try {
|
|
114
|
-
await ipfs.stop();
|
|
102
|
+
await libp2p.stop();
|
|
115
103
|
}
|
|
116
104
|
catch {
|
|
117
105
|
// ignore
|
|
@@ -128,12 +116,6 @@ export async function startRelay(opts = {}) {
|
|
|
128
116
|
catch {
|
|
129
117
|
// ignore
|
|
130
118
|
}
|
|
131
|
-
try {
|
|
132
|
-
await libp2p.stop();
|
|
133
|
-
}
|
|
134
|
-
catch {
|
|
135
|
-
// ignore
|
|
136
|
-
}
|
|
137
119
|
},
|
|
138
120
|
};
|
|
139
121
|
}
|
package/dist/relay.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay.js","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"relay.js","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,6 +64,7 @@ export declare class DatabaseService {
|
|
|
64
64
|
private waitForDatabaseHeads;
|
|
65
65
|
private preOpenAccessController;
|
|
66
66
|
private openDatabase;
|
|
67
|
+
private installNonFatalDatabaseErrorHandlers;
|
|
67
68
|
private installAccessControllerDebugHooks;
|
|
68
69
|
private inspectIdentityHash;
|
|
69
70
|
private collectIdentityHashesFromLog;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/services/database.ts"],"names":[],"mappings":"AAeA,OAAO,MAAM,MAAM,SAAS,CAAA;AAE5B,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAA8B,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/services/database.ts"],"names":[],"mappings":"AAeA,OAAO,MAAM,MAAM,SAAS,CAAA;AAE5B,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAA8B,MAAM,cAAc,CAAA;AAmBlG,qFAAqF;AACrF,MAAM,MAAM,iBAAiB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AAElE,qBAAa,eAAe;IAC1B,OAAO,EAAE,aAAa,CAAA;IACtB,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACnC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAClC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC9B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC/B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IACxC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;IACvC,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC5B,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC5B,cAAc,EAAE,OAAO,CAAA;IACvB,OAAO,EAAE,GAAG,CAAA;IACZ,IAAI,EAAE,GAAG,CAAA;IACT,0FAA0F;IAC1F,qBAAqB,EAAE,MAAM,CAAA;IAC7B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAChF,8DAA8D;IAC9D,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;;IAoBzC,qFAAqF;IACrF,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAItD,sHAAsH;IAChH,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASlE,yBAAyB,IAAI,mBAAmB;IAgDhD;;OAEG;YACW,uBAAuB;IAgDrC;;;OAGG;YACW,+BAA+B;IA2LvC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,MAAM;IA+B9C,OAAO,CAAC,2BAA2B;IAgGnC,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,6BAA6B;IAmDrC,OAAO,CAAC,sBAAsB;IAkB9B,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,4BAA4B;IAcpC,OAAO,CAAC,oCAAoC;IAe5C,OAAO,CAAC,kCAAkC;YAU5B,2BAA2B;YAkE3B,WAAW;IA6BzB,OAAO,CAAC,0BAA0B;YAuCpB,kBAAkB;IAkChC,OAAO,CAAC,6BAA6B;IAQrC,OAAO,CAAC,iBAAiB;YAWX,YAAY;YAkCZ,uBAAuB;YAqCvB,oBAAoB;YA+BpB,uBAAuB;YA8DvB,YAAY;IAkB1B,OAAO,CAAC,oCAAoC;IA2B5C,OAAO,CAAC,iCAAiC;YAwD3B,mBAAmB;YAsDnB,4BAA4B;YA2B5B,qBAAqB;YA4BrB,4BAA4B;IAkBpC,qBAAqB,CAAC,SAAS,EAAE,MAAM;IAK7C,aAAa;IAIP,IAAI;CAaX"}
|
|
@@ -25,6 +25,7 @@ const DelegatedTodoAccessController = (opts = {}) => DelegatedTodoAccessControll
|
|
|
25
25
|
DelegatedTodoAccessController.type = DelegatedTodoAccessControllerBase.type;
|
|
26
26
|
const DEFERRED_ACL_PREFIX = '/orbitdb-deferred/';
|
|
27
27
|
const ORBITDB_PREFIX = '/orbitdb/';
|
|
28
|
+
const RELAY_ERROR_HANDLER_INSTALLED = Symbol('relayErrorHandlerInstalled');
|
|
28
29
|
export class DatabaseService {
|
|
29
30
|
metrics;
|
|
30
31
|
identityDatabases;
|
|
@@ -856,12 +857,38 @@ export class DatabaseService {
|
|
|
856
857
|
const openPromise = this.orbitdb.open(dbAddress);
|
|
857
858
|
this.openInFlight.set(dbAddress, openPromise);
|
|
858
859
|
try {
|
|
859
|
-
|
|
860
|
+
const db = await openPromise;
|
|
861
|
+
this.installNonFatalDatabaseErrorHandlers(db, dbAddress);
|
|
862
|
+
return db;
|
|
860
863
|
}
|
|
861
864
|
finally {
|
|
862
865
|
this.openInFlight.delete(dbAddress);
|
|
863
866
|
}
|
|
864
867
|
}
|
|
868
|
+
installNonFatalDatabaseErrorHandlers(db, dbAddress) {
|
|
869
|
+
const attach = (emitter, source) => {
|
|
870
|
+
if (!emitter?.on)
|
|
871
|
+
return;
|
|
872
|
+
if (emitter[RELAY_ERROR_HANDLER_INSTALLED])
|
|
873
|
+
return;
|
|
874
|
+
emitter.on('error', (error) => {
|
|
875
|
+
const payload = {
|
|
876
|
+
dbAddress,
|
|
877
|
+
dbName: db?.name || null,
|
|
878
|
+
source,
|
|
879
|
+
error: error?.message || String(error),
|
|
880
|
+
stack: error?.stack || null,
|
|
881
|
+
};
|
|
882
|
+
// eslint-disable-next-line no-console
|
|
883
|
+
console.error('OrbitDB emitted a non-fatal error:', inspect(payload, { depth: null, colors: false, compact: false }));
|
|
884
|
+
});
|
|
885
|
+
emitter[RELAY_ERROR_HANDLER_INSTALLED] = true;
|
|
886
|
+
};
|
|
887
|
+
attach(db?.events, 'db.events');
|
|
888
|
+
if (db?.sync?.events && db.sync.events !== db.events) {
|
|
889
|
+
attach(db.sync.events, 'db.sync.events');
|
|
890
|
+
}
|
|
891
|
+
}
|
|
865
892
|
installAccessControllerDebugHooks(db, dbAddress) {
|
|
866
893
|
if (!loggingConfig.enableSyncLogs)
|
|
867
894
|
return;
|