orbitdb-relay-pinner 0.1.4 → 0.1.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 +16 -0
- package/dist/access/delegated-todo-access-controller.d.ts +5 -0
- package/dist/access/delegated-todo-access-controller.d.ts.map +1 -0
- package/dist/access/delegated-todo-access-controller.js +76 -0
- package/dist/access/delegated-todo-access-controller.js.map +1 -0
- package/dist/services/database.d.ts +1 -0
- package/dist/services/database.d.ts.map +1 -1
- package/dist/services/database.js +44 -26
- package/dist/services/database.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,6 +6,10 @@ OrbitDB relay + pinning/sync service used by our apps and tests.
|
|
|
6
6
|
|
|
7
7
|
See `AGENTS.md` for an architecture and feature guide (entrypoints, data flow, env vars, and extension points).
|
|
8
8
|
|
|
9
|
+
## Docs
|
|
10
|
+
|
|
11
|
+
- Relay media pinning flow: `docs/relay-media-pinning.md`
|
|
12
|
+
|
|
9
13
|
## CLI
|
|
10
14
|
|
|
11
15
|
Install:
|
|
@@ -26,6 +30,18 @@ Test mode (deterministic peer id via `TEST_PRIVATE_KEY` or `RELAY_PRIV_KEY`):
|
|
|
26
30
|
orbitdb-relay-pinner --test
|
|
27
31
|
```
|
|
28
32
|
|
|
33
|
+
## Supported Access Controllers
|
|
34
|
+
|
|
35
|
+
`orbitdb-relay-pinner` supports the following Access Controller types when opening OrbitDB databases:
|
|
36
|
+
|
|
37
|
+
- `orbitdb` (built-in OrbitDB access controller)
|
|
38
|
+
- `todo-delegation` (custom delegated todo controller registered by this package)
|
|
39
|
+
|
|
40
|
+
Notes:
|
|
41
|
+
|
|
42
|
+
- Existing databases are opened using the manifest `accessController.type`.
|
|
43
|
+
- Creating a new database without explicitly passing an `AccessController` still defaults to `orbitdb`.
|
|
44
|
+
|
|
29
45
|
## Environment Variables (common)
|
|
30
46
|
|
|
31
47
|
- `RELAY_TCP_PORT`, `RELAY_WS_PORT`, `RELAY_WEBRTC_PORT`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegated-todo-access-controller.d.ts","sourceRoot":"","sources":["../../src/access/delegated-todo-access-controller.ts"],"names":[],"mappings":"AAkBA,QAAA,MAAM,6BAA6B,GAChC,YAAW;IAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,MAC9B,wCAAwC,GAAG,iBAqDjD,CAEF;AAED,eAAe,6BAA6B,CAAA"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { OrbitDBAccessController } from '@orbitdb/core';
|
|
2
|
+
const type = 'todo-delegation';
|
|
3
|
+
function parseDelegationActionKey(key) {
|
|
4
|
+
if (typeof key !== 'string')
|
|
5
|
+
return null;
|
|
6
|
+
const match = /^delegation-action\/([^/]+)\/([^/]+)\/[^/]+$/.exec(key);
|
|
7
|
+
if (!match)
|
|
8
|
+
return null;
|
|
9
|
+
try {
|
|
10
|
+
return {
|
|
11
|
+
taskKey: match[1],
|
|
12
|
+
delegateDid: decodeURIComponent(match[2])
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const DelegatedTodoAccessController = ({ write } = {}) => async ({ orbitdb, identities, address, name }) => {
|
|
20
|
+
const baseFactory = OrbitDBAccessController({ write });
|
|
21
|
+
const baseAccess = await baseFactory({ orbitdb, identities, address, name });
|
|
22
|
+
const canAppend = async (entry) => {
|
|
23
|
+
if (await baseAccess.canAppend(entry)) {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
const payload = entry?.payload;
|
|
27
|
+
if (!payload || payload.op !== 'PUT')
|
|
28
|
+
return false;
|
|
29
|
+
const parsedKey = parseDelegationActionKey(payload.key);
|
|
30
|
+
if (!parsedKey)
|
|
31
|
+
return false;
|
|
32
|
+
const value = payload.value;
|
|
33
|
+
if (!value || value.type !== 'delegation-action')
|
|
34
|
+
return false;
|
|
35
|
+
if (!['set-completed', 'patch-fields'].includes(value.action))
|
|
36
|
+
return false;
|
|
37
|
+
if (value.action === 'set-completed' && typeof value.setCompleted !== 'boolean') {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
if (value.action === 'patch-fields') {
|
|
41
|
+
if (!value.patch || typeof value.patch !== 'object')
|
|
42
|
+
return false;
|
|
43
|
+
const allowedPatchKeys = ['text', 'description'];
|
|
44
|
+
const patchKeys = Object.keys(value.patch);
|
|
45
|
+
if (patchKeys.length === 0)
|
|
46
|
+
return false;
|
|
47
|
+
if (!patchKeys.every((k) => allowedPatchKeys.includes(k)))
|
|
48
|
+
return false;
|
|
49
|
+
if (value.patch.text !== undefined && typeof value.patch.text !== 'string')
|
|
50
|
+
return false;
|
|
51
|
+
if (value.patch.description !== undefined && typeof value.patch.description !== 'string') {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (value.taskKey !== parsedKey.taskKey)
|
|
56
|
+
return false;
|
|
57
|
+
if (value.delegateDid !== parsedKey.delegateDid)
|
|
58
|
+
return false;
|
|
59
|
+
if (value.expiresAt && Date.parse(value.expiresAt) < Date.now())
|
|
60
|
+
return false;
|
|
61
|
+
const writerIdentity = await identities.getIdentity(entry.identity);
|
|
62
|
+
if (!writerIdentity)
|
|
63
|
+
return false;
|
|
64
|
+
if (!(await identities.verifyIdentity(writerIdentity)))
|
|
65
|
+
return false;
|
|
66
|
+
return writerIdentity.id === value.delegateDid;
|
|
67
|
+
};
|
|
68
|
+
return {
|
|
69
|
+
...baseAccess,
|
|
70
|
+
type,
|
|
71
|
+
canAppend
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
DelegatedTodoAccessController.type = type;
|
|
75
|
+
export default DelegatedTodoAccessController;
|
|
76
|
+
//# sourceMappingURL=delegated-todo-access-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegated-todo-access-controller.js","sourceRoot":"","sources":["../../src/access/delegated-todo-access-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ export declare class DatabaseService {
|
|
|
14
14
|
ipfs: any;
|
|
15
15
|
constructor();
|
|
16
16
|
initialize(ipfs: any, directory?: string): Promise<void>;
|
|
17
|
+
private extractImageCidsFromPayload;
|
|
17
18
|
private extractImageCids;
|
|
18
19
|
private pinImageCid;
|
|
19
20
|
private enqueueImageCidsForPinning;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/services/database.ts"],"names":[],"mappings":"AAKA,OAAO,MAAM,MAAM,SAAS,CAAA;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/services/database.ts"],"names":[],"mappings":"AAKA,OAAO,MAAM,MAAM,SAAS,CAAA;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAK5C,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,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;;IAcH,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,MAAM;IAQ9C,OAAO,CAAC,2BAA2B;IAqBnC,OAAO,CAAC,gBAAgB;YAWV,WAAW;IAQzB,OAAO,CAAC,0BAA0B;YA2BpB,kBAAkB;IAkC1B,qBAAqB,CAAC,SAAS,EAAE,MAAM;IA6C7C,aAAa;IAIP,IAAI;CAaX"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createOrbitDB, useIdentityProvider } from '@orbitdb/core';
|
|
1
|
+
import { createOrbitDB, useAccessController, useIdentityProvider } from '@orbitdb/core';
|
|
2
2
|
import OrbitDBIdentityProviderDID from '@orbitdb/identity-provider-did';
|
|
3
3
|
import * as KeyDIDResolver from 'key-did-resolver';
|
|
4
4
|
import { CID } from 'multiformats/cid';
|
|
@@ -7,6 +7,7 @@ import PQueue from 'p-queue';
|
|
|
7
7
|
import { MetricsServer } from './metrics.js';
|
|
8
8
|
import { log, syncLog, logSyncStats } from '../utils/logger.js';
|
|
9
9
|
import { loggingConfig } from '../config/logging.js';
|
|
10
|
+
import DelegatedTodoAccessController from '../access/delegated-todo-access-controller.js';
|
|
10
11
|
export class DatabaseService {
|
|
11
12
|
metrics;
|
|
12
13
|
identityDatabases;
|
|
@@ -33,26 +34,33 @@ export class DatabaseService {
|
|
|
33
34
|
async initialize(ipfs, directory) {
|
|
34
35
|
OrbitDBIdentityProviderDID.setDIDResolver(KeyDIDResolver.getResolver());
|
|
35
36
|
useIdentityProvider(OrbitDBIdentityProviderDID);
|
|
37
|
+
useAccessController(DelegatedTodoAccessController);
|
|
36
38
|
this.ipfs = ipfs;
|
|
37
39
|
this.orbitdb = await createOrbitDB({ ipfs, ...(directory ? { directory } : {}) });
|
|
38
40
|
}
|
|
41
|
+
extractImageCidsFromPayload(payload) {
|
|
42
|
+
const result = new Set();
|
|
43
|
+
const imageCid = payload?.imageCid ?? payload?.imageCID ?? payload?.image?.cid;
|
|
44
|
+
const profilePictureCid = payload?.profilePicture ??
|
|
45
|
+
payload?.profilePictureCid ??
|
|
46
|
+
payload?.profilePictureCID ??
|
|
47
|
+
((payload?._id === 'profilePicture' || payload?._id === 'profilePictureCid' || payload?._id === 'profilePictureCID')
|
|
48
|
+
? payload?.value
|
|
49
|
+
: undefined);
|
|
50
|
+
const mediaIds = Array.isArray(payload?.mediaIds) ? payload.mediaIds : [];
|
|
51
|
+
const mediaId = payload?.mediaId;
|
|
52
|
+
for (const candidate of [imageCid, profilePictureCid, mediaId, ...mediaIds]) {
|
|
53
|
+
if (typeof candidate === 'string' && candidate.length > 0)
|
|
54
|
+
result.add(candidate);
|
|
55
|
+
}
|
|
56
|
+
return Array.from(result);
|
|
57
|
+
}
|
|
39
58
|
extractImageCids(records) {
|
|
40
59
|
const result = new Set();
|
|
41
60
|
for (const record of records) {
|
|
42
|
-
const payload = record?.value;
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
payload?.profilePictureCid ??
|
|
46
|
-
payload?.profilePictureCID ??
|
|
47
|
-
((payload?._id === 'profilePicture' || payload?._id === 'profilePictureCid' || payload?._id === 'profilePictureCID')
|
|
48
|
-
? payload?.value
|
|
49
|
-
: undefined);
|
|
50
|
-
const mediaIds = Array.isArray(payload?.mediaIds) ? payload.mediaIds : [];
|
|
51
|
-
const mediaId = payload?.mediaId;
|
|
52
|
-
for (const candidate of [imageCid, profilePictureCid, mediaId, ...mediaIds]) {
|
|
53
|
-
if (typeof candidate === 'string' && candidate.length > 0)
|
|
54
|
-
result.add(candidate);
|
|
55
|
-
}
|
|
61
|
+
const payload = record?.value ?? record;
|
|
62
|
+
for (const candidate of this.extractImageCidsFromPayload(payload))
|
|
63
|
+
result.add(candidate);
|
|
56
64
|
}
|
|
57
65
|
return Array.from(result);
|
|
58
66
|
}
|
|
@@ -93,10 +101,15 @@ export class DatabaseService {
|
|
|
93
101
|
}
|
|
94
102
|
async waitForUpdateEvent(db, timeoutMs = 5000) {
|
|
95
103
|
if (!db?.events?.on || !db?.events?.off)
|
|
96
|
-
return false;
|
|
104
|
+
return { didReceiveUpdate: false, updates: [] };
|
|
97
105
|
let didUpdate = false;
|
|
98
|
-
const
|
|
106
|
+
const updates = [];
|
|
107
|
+
let lastUpdateAt = 0;
|
|
108
|
+
const onUpdate = (entry) => {
|
|
99
109
|
didUpdate = true;
|
|
110
|
+
lastUpdateAt = Date.now();
|
|
111
|
+
if (entry)
|
|
112
|
+
updates.push(entry);
|
|
100
113
|
};
|
|
101
114
|
db.events.on('update', onUpdate);
|
|
102
115
|
try {
|
|
@@ -104,7 +117,14 @@ export class DatabaseService {
|
|
|
104
117
|
while (!didUpdate && !this.isShuttingDown && Date.now() - startedAt < timeoutMs) {
|
|
105
118
|
await delay(100);
|
|
106
119
|
}
|
|
107
|
-
|
|
120
|
+
// After first update, collect closely-following updates in the same sync burst.
|
|
121
|
+
while (didUpdate &&
|
|
122
|
+
!this.isShuttingDown &&
|
|
123
|
+
Date.now() - startedAt < timeoutMs &&
|
|
124
|
+
Date.now() - lastUpdateAt < 300) {
|
|
125
|
+
await delay(100);
|
|
126
|
+
}
|
|
127
|
+
return { didReceiveUpdate: didUpdate, updates };
|
|
108
128
|
}
|
|
109
129
|
finally {
|
|
110
130
|
db.events.off('update', onUpdate);
|
|
@@ -121,20 +141,18 @@ export class DatabaseService {
|
|
|
121
141
|
db = await this.orbitdb.open(dbAddress);
|
|
122
142
|
syncLog('Opened database:', dbAddress);
|
|
123
143
|
syncLog('Waiting for database update event:', dbAddress);
|
|
124
|
-
const didReceiveUpdate = await this.waitForUpdateEvent(db);
|
|
144
|
+
const { didReceiveUpdate, updates } = await this.waitForUpdateEvent(db);
|
|
125
145
|
if (!didReceiveUpdate) {
|
|
126
146
|
syncLog('No update event received within timeout:', dbAddress);
|
|
127
147
|
}
|
|
128
148
|
else {
|
|
129
|
-
syncLog('Received update event for database:', dbAddress);
|
|
149
|
+
syncLog('Received update event for database:', dbAddress, 'updates:', updates.length);
|
|
130
150
|
}
|
|
131
|
-
const records = await db.all();
|
|
132
|
-
syncLog('Read records from database:', dbAddress, 'count:', records.length);
|
|
133
151
|
if (didReceiveUpdate) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
152
|
+
const updateRecords = updates.map((entry) => ({ value: entry?.payload?.value ?? entry?.value ?? entry }));
|
|
153
|
+
const imageCids = this.extractImageCids(updateRecords);
|
|
154
|
+
syncLog('Extracted media CIDs from updates:', dbAddress, 'count:', imageCids.length);
|
|
155
|
+
this.enqueueImageCidsForPinning(imageCids);
|
|
138
156
|
}
|
|
139
157
|
this.metrics.trackSync('documents', 'success');
|
|
140
158
|
endTimer();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/services/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/services/database.ts"],"names":[],"mappings":"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"}
|