@pkcprotocol/pkc-js 0.0.45 → 0.0.46
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/browser/clients/rpc-client/schema.d.ts +2 -2
- package/dist/browser/community/schema.d.ts +18 -18
- package/dist/browser/generated-version.d.ts +1 -1
- package/dist/browser/generated-version.js +1 -1
- package/dist/browser/index-with-compile-cache.d.ts +254 -0
- package/dist/browser/index-with-compile-cache.js +25 -0
- package/dist/browser/index-with-compile-cache.js.map +1 -0
- package/dist/browser/pages/schema.d.ts +5 -5
- package/dist/browser/pkc/pkc.d.ts +3 -4
- package/dist/browser/pkc/pkc.js +16 -19
- package/dist/browser/pkc/pkc.js.map +1 -1
- package/dist/browser/publications/comment/schema.d.ts +2 -2
- package/dist/browser/publications/comment/schema.js +7 -1
- package/dist/browser/publications/comment/schema.js.map +1 -1
- package/dist/browser/rpc/src/index.js +10 -1
- package/dist/browser/rpc/src/index.js.map +1 -1
- package/dist/browser/runtime/browser/compile-cache.d.ts +1 -0
- package/dist/browser/runtime/browser/compile-cache.js +7 -0
- package/dist/browser/runtime/browser/compile-cache.js.map +1 -0
- package/dist/browser/runtime/browser/setup-kubo-http-routers.d.ts +1 -0
- package/dist/browser/runtime/browser/setup-kubo-http-routers.js +4 -0
- package/dist/browser/runtime/browser/setup-kubo-http-routers.js.map +1 -0
- package/dist/browser/runtime/node/compile-cache.d.ts +1 -0
- package/dist/browser/runtime/node/compile-cache.js +29 -0
- package/dist/browser/runtime/node/compile-cache.js.map +1 -0
- package/dist/browser/runtime/node/setup-kubo-http-routers.d.ts +2 -0
- package/dist/browser/runtime/node/{setup-kubo-address-rewriter-and-http-router.js → setup-kubo-http-routers.js} +10 -79
- package/dist/browser/runtime/node/setup-kubo-http-routers.js.map +1 -0
- package/dist/bundled/bundle-manifest.json +1288 -0
- package/dist/bundled/challenges.js +1 -0
- package/dist/bundled/chunks/helia-for-pkc-uRINWDzG.js +281 -0
- package/dist/bundled/chunks/local-community-CCSP8e6_.js +2 -0
- package/dist/bundled/chunks/local-community-iVvgerOY.js +7218 -0
- package/dist/bundled/chunks/node-DMNVMYGv.js +7567 -0
- package/dist/bundled/chunks/rpc-local-community-DG6G0xL6.js +128945 -0
- package/dist/bundled/chunks/schema-Bo3XK8Oe.js +34342 -0
- package/dist/bundled/chunks/util-I3gVOp6w.js +200 -0
- package/dist/bundled/index-with-compile-cache.js +19 -0
- package/dist/bundled/index.js +2 -0
- package/dist/bundled/rpc/src/index.js +1473 -0
- package/dist/node/clients/rpc-client/schema.d.ts +2 -2
- package/dist/node/community/schema.d.ts +18 -18
- package/dist/node/generated-version.d.ts +1 -1
- package/dist/node/generated-version.js +1 -1
- package/dist/node/index-with-compile-cache.d.ts +254 -0
- package/dist/node/index-with-compile-cache.js +25 -0
- package/dist/node/index-with-compile-cache.js.map +1 -0
- package/dist/node/pages/schema.d.ts +5 -5
- package/dist/node/pkc/pkc.d.ts +3 -4
- package/dist/node/pkc/pkc.js +16 -19
- package/dist/node/pkc/pkc.js.map +1 -1
- package/dist/node/publications/comment/schema.d.ts +2 -2
- package/dist/node/publications/comment/schema.js +7 -1
- package/dist/node/publications/comment/schema.js.map +1 -1
- package/dist/node/rpc/src/index.js +10 -1
- package/dist/node/rpc/src/index.js.map +1 -1
- package/dist/node/runtime/browser/compile-cache.d.ts +1 -0
- package/dist/node/runtime/browser/compile-cache.js +7 -0
- package/dist/node/runtime/browser/compile-cache.js.map +1 -0
- package/dist/node/runtime/browser/setup-kubo-http-routers.d.ts +1 -0
- package/dist/node/runtime/browser/setup-kubo-http-routers.js +4 -0
- package/dist/node/runtime/browser/setup-kubo-http-routers.js.map +1 -0
- package/dist/node/runtime/node/compile-cache.d.ts +1 -0
- package/dist/node/runtime/node/compile-cache.js +29 -0
- package/dist/node/runtime/node/compile-cache.js.map +1 -0
- package/dist/node/runtime/node/setup-kubo-http-routers.d.ts +2 -0
- package/dist/node/runtime/node/{setup-kubo-address-rewriter-and-http-router.js → setup-kubo-http-routers.js} +10 -79
- package/dist/node/runtime/node/setup-kubo-http-routers.js.map +1 -0
- package/package.json +18 -9
- package/dist/browser/runtime/browser/setup-kubo-address-rewriter-and-http-router.d.ts +0 -1
- package/dist/browser/runtime/browser/setup-kubo-address-rewriter-and-http-router.js +0 -4
- package/dist/browser/runtime/browser/setup-kubo-address-rewriter-and-http-router.js.map +0 -1
- package/dist/browser/runtime/node/address-rewriter-db.d.ts +0 -31
- package/dist/browser/runtime/node/address-rewriter-db.js +0 -156
- package/dist/browser/runtime/node/address-rewriter-db.js.map +0 -1
- package/dist/browser/runtime/node/addresses-rewriter-proxy-server.d.ts +0 -45
- package/dist/browser/runtime/node/addresses-rewriter-proxy-server.js +0 -493
- package/dist/browser/runtime/node/addresses-rewriter-proxy-server.js.map +0 -1
- package/dist/browser/runtime/node/setup-kubo-address-rewriter-and-http-router.d.ts +0 -4
- package/dist/browser/runtime/node/setup-kubo-address-rewriter-and-http-router.js.map +0 -1
- package/dist/node/runtime/browser/setup-kubo-address-rewriter-and-http-router.d.ts +0 -1
- package/dist/node/runtime/browser/setup-kubo-address-rewriter-and-http-router.js +0 -4
- package/dist/node/runtime/browser/setup-kubo-address-rewriter-and-http-router.js.map +0 -1
- package/dist/node/runtime/node/address-rewriter-db.d.ts +0 -31
- package/dist/node/runtime/node/address-rewriter-db.js +0 -156
- package/dist/node/runtime/node/address-rewriter-db.js.map +0 -1
- package/dist/node/runtime/node/addresses-rewriter-proxy-server.d.ts +0 -45
- package/dist/node/runtime/node/addresses-rewriter-proxy-server.js +0 -493
- package/dist/node/runtime/node/addresses-rewriter-proxy-server.js.map +0 -1
- package/dist/node/runtime/node/setup-kubo-address-rewriter-and-http-router.d.ts +0 -4
- package/dist/node/runtime/node/setup-kubo-address-rewriter-and-http-router.js.map +0 -1
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { et as pubsubTopicToDhtKeyCid, ir as PKCError } from "./schema-Bo3XK8Oe.js";
|
|
2
|
+
//#region dist/node/helia/util.js
|
|
3
|
+
const TOPIC_SUBSCRIBER_WAIT_TIMEOUT_MS = 1e4;
|
|
4
|
+
const MESH_PEER_WAIT_TIMEOUT_MS = 3e3;
|
|
5
|
+
function getHeliaDebugContext(helia) {
|
|
6
|
+
const connections = helia.libp2p.getConnections();
|
|
7
|
+
return {
|
|
8
|
+
heliaPeerId: helia.libp2p.peerId.toString(),
|
|
9
|
+
heliaStatus: helia.libp2p.status,
|
|
10
|
+
connectedPeerCount: connections.length,
|
|
11
|
+
connections: connections.map((c) => ({
|
|
12
|
+
peer: c.remotePeer.toString(),
|
|
13
|
+
multiaddr: String(c.remoteAddr),
|
|
14
|
+
direction: c.direction
|
|
15
|
+
}))
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function waitForTopicSubscriber({ helia, topic, timeoutMs, abortSignal }) {
|
|
19
|
+
const pubsub = helia.libp2p.services.pubsub;
|
|
20
|
+
if (pubsub.getSubscribers(topic).length > 0) return Promise.resolve();
|
|
21
|
+
if (abortSignal?.aborted) return Promise.reject(new PKCError("ERR_PUBSUB_TOPIC_PEER_WAIT_ABORTED", { topic }));
|
|
22
|
+
return new Promise((resolve, reject) => {
|
|
23
|
+
const cleanup = () => {
|
|
24
|
+
pubsub.removeEventListener("subscription-change", onChange);
|
|
25
|
+
clearInterval(safetyPoll);
|
|
26
|
+
clearTimeout(timer);
|
|
27
|
+
abortSignal?.removeEventListener("abort", onAbort);
|
|
28
|
+
};
|
|
29
|
+
const tryResolve = () => {
|
|
30
|
+
if (pubsub.getSubscribers(topic).length > 0) {
|
|
31
|
+
cleanup();
|
|
32
|
+
resolve();
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
};
|
|
37
|
+
const onChange = (e) => {
|
|
38
|
+
if (e.detail.subscriptions.some((s) => s.topic === topic && s.subscribe)) tryResolve();
|
|
39
|
+
};
|
|
40
|
+
const onAbort = () => {
|
|
41
|
+
cleanup();
|
|
42
|
+
reject(new PKCError("ERR_PUBSUB_TOPIC_PEER_WAIT_ABORTED", { topic }));
|
|
43
|
+
};
|
|
44
|
+
const timer = setTimeout(() => {
|
|
45
|
+
cleanup();
|
|
46
|
+
reject(new PKCError("ERR_TIMEOUT_WAITING_FOR_PUBSUB_TOPIC_PEERS", {
|
|
47
|
+
topic,
|
|
48
|
+
timeoutMs
|
|
49
|
+
}));
|
|
50
|
+
}, timeoutMs);
|
|
51
|
+
const safetyPoll = setInterval(tryResolve, 1e3);
|
|
52
|
+
pubsub.addEventListener("subscription-change", onChange);
|
|
53
|
+
abortSignal?.addEventListener("abort", onAbort, { once: true });
|
|
54
|
+
tryResolve();
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function waitForMeshPeer({ helia, topic, timeoutMs, abortSignal }) {
|
|
58
|
+
const pubsub = helia.libp2p.services.pubsub;
|
|
59
|
+
if (pubsub.getMeshPeers(topic).length > 0) return Promise.resolve();
|
|
60
|
+
if (abortSignal?.aborted) return Promise.resolve();
|
|
61
|
+
return new Promise((resolve) => {
|
|
62
|
+
const cleanup = () => {
|
|
63
|
+
pubsub.removeEventListener("gossipsub:graft", onGraft);
|
|
64
|
+
clearTimeout(timer);
|
|
65
|
+
abortSignal?.removeEventListener("abort", onAbort);
|
|
66
|
+
};
|
|
67
|
+
const tryResolve = () => {
|
|
68
|
+
if (pubsub.getMeshPeers(topic).length > 0) {
|
|
69
|
+
cleanup();
|
|
70
|
+
resolve();
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
return false;
|
|
74
|
+
};
|
|
75
|
+
const onGraft = (e) => {
|
|
76
|
+
if (e.detail.topic === topic) tryResolve();
|
|
77
|
+
};
|
|
78
|
+
const onAbort = () => {
|
|
79
|
+
cleanup();
|
|
80
|
+
resolve();
|
|
81
|
+
};
|
|
82
|
+
const timer = setTimeout(() => {
|
|
83
|
+
cleanup();
|
|
84
|
+
resolve();
|
|
85
|
+
}, timeoutMs);
|
|
86
|
+
pubsub.addEventListener("gossipsub:graft", onGraft);
|
|
87
|
+
abortSignal?.addEventListener("abort", onAbort, { once: true });
|
|
88
|
+
tryResolve();
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
async function connectToPubsubPeers({ helia, pubsubTopic, maxPeers, options, log }) {
|
|
92
|
+
const contentCid = pubsubTopicToDhtKeyCid(pubsubTopic);
|
|
93
|
+
const peersWithContent = [];
|
|
94
|
+
const connectedPeersWithContent = [];
|
|
95
|
+
const peerDialToError = {};
|
|
96
|
+
const findProvidersAbort = new AbortController();
|
|
97
|
+
const findProvidersSignal = options?.signal ? AbortSignal.any([options.signal, findProvidersAbort.signal]) : findProvidersAbort.signal;
|
|
98
|
+
const subscriberAppearedPromise = waitForTopicSubscriber({
|
|
99
|
+
helia,
|
|
100
|
+
topic: pubsubTopic,
|
|
101
|
+
timeoutMs: TOPIC_SUBSCRIBER_WAIT_TIMEOUT_MS,
|
|
102
|
+
abortSignal: findProvidersSignal
|
|
103
|
+
});
|
|
104
|
+
subscriberAppearedPromise.then(() => {
|
|
105
|
+
if (!findProvidersAbort.signal.aborted) {
|
|
106
|
+
log.trace("Aborting findProviders iterator - gossipsub subscription-change observed for topic", pubsubTopic);
|
|
107
|
+
findProvidersAbort.abort();
|
|
108
|
+
}
|
|
109
|
+
}, () => {});
|
|
110
|
+
const findProvidersStart = Date.now();
|
|
111
|
+
const inflightDialPromises = [];
|
|
112
|
+
const dialOptions = { ...options };
|
|
113
|
+
try {
|
|
114
|
+
for await (const peer of helia.libp2p.contentRouting.findProviders(contentCid, {
|
|
115
|
+
...options,
|
|
116
|
+
signal: findProvidersSignal
|
|
117
|
+
})) {
|
|
118
|
+
peersWithContent.push(peer);
|
|
119
|
+
const dialPromise = (async () => {
|
|
120
|
+
try {
|
|
121
|
+
if (peer.multiaddrs?.length) await helia.libp2p.peerStore.merge(peer.id, { multiaddrs: peer.multiaddrs });
|
|
122
|
+
const conn = await helia.libp2p.dial(peer.id, dialOptions);
|
|
123
|
+
connectedPeersWithContent.push(conn);
|
|
124
|
+
if (connectedPeersWithContent.length >= maxPeers && !findProvidersAbort.signal.aborted) {
|
|
125
|
+
log.trace("Aborting findProviders after reaching maxPeers", maxPeers);
|
|
126
|
+
findProvidersAbort.abort();
|
|
127
|
+
}
|
|
128
|
+
} catch (e) {
|
|
129
|
+
const err = e;
|
|
130
|
+
peerDialToError[peer.id.toString()] = {
|
|
131
|
+
multiaddrs: peer.multiaddrs.map(String),
|
|
132
|
+
errorName: err.name,
|
|
133
|
+
errorMessage: err.message,
|
|
134
|
+
errorStack: err.stack
|
|
135
|
+
};
|
|
136
|
+
log.trace("Failed to dial IPNS-Over-Pubsub peer", peer.id.toString(), "Due to error", e);
|
|
137
|
+
}
|
|
138
|
+
})();
|
|
139
|
+
inflightDialPromises.push(dialPromise);
|
|
140
|
+
if (connectedPeersWithContent.length >= maxPeers) {
|
|
141
|
+
log.trace("Breaking findProviders loop after reaching maxPeers", maxPeers);
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
log.trace("findProviders for", pubsubTopic, "took", Date.now() - findProvidersStart, "ms");
|
|
146
|
+
} catch (e) {
|
|
147
|
+
if (!findProvidersAbort.signal.aborted) {
|
|
148
|
+
e.details = {
|
|
149
|
+
...e.details,
|
|
150
|
+
contentCid,
|
|
151
|
+
options,
|
|
152
|
+
maxPeersBeforeWeStopLookingForProviders: maxPeers,
|
|
153
|
+
connectedPeersWithContent,
|
|
154
|
+
peersWithContent,
|
|
155
|
+
peerDialToError,
|
|
156
|
+
...getHeliaDebugContext(helia)
|
|
157
|
+
};
|
|
158
|
+
throw e;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
let graftError = null;
|
|
162
|
+
try {
|
|
163
|
+
await subscriberAppearedPromise;
|
|
164
|
+
} catch (graftErr) {
|
|
165
|
+
graftError = graftErr;
|
|
166
|
+
log.trace("gossipsub subscription-change did not arrive within timeout after warmup; resolver may still fall back", graftErr);
|
|
167
|
+
if (inflightDialPromises.length) await Promise.race(inflightDialPromises).catch(() => {});
|
|
168
|
+
}
|
|
169
|
+
log.trace("Connected to", connectedPeersWithContent.length, "peers (snapshot at subscription-change)", "for content", contentCid);
|
|
170
|
+
const pubsub = helia.libp2p.services.pubsub;
|
|
171
|
+
if (!graftError && pubsub.getTopics().includes(pubsubTopic)) {
|
|
172
|
+
const meshWaitStart = Date.now();
|
|
173
|
+
await waitForMeshPeer({
|
|
174
|
+
helia,
|
|
175
|
+
topic: pubsubTopic,
|
|
176
|
+
timeoutMs: MESH_PEER_WAIT_TIMEOUT_MS,
|
|
177
|
+
abortSignal: options?.signal
|
|
178
|
+
});
|
|
179
|
+
const meshPeerCount = pubsub.getMeshPeers(pubsubTopic).length;
|
|
180
|
+
const waitMs = Date.now() - meshWaitStart;
|
|
181
|
+
if (meshPeerCount === 0) log.trace("Timed out waiting for mesh peers for topic", pubsubTopic, "after", waitMs, "ms");
|
|
182
|
+
else log.trace("Mesh peers count after wait", meshPeerCount, "for topic", pubsubTopic, "took", waitMs, "ms");
|
|
183
|
+
}
|
|
184
|
+
if (graftError && options?.signal?.aborted) throw graftError;
|
|
185
|
+
if (connectedPeersWithContent.length === 0 && graftError) {
|
|
186
|
+
const error = new PKCError("ERR_FAILED_TO_DIAL_ANY_PEERS_PROVIDING_CID", {
|
|
187
|
+
contentCid,
|
|
188
|
+
peerDialToError,
|
|
189
|
+
peersWithContent,
|
|
190
|
+
options,
|
|
191
|
+
graftError,
|
|
192
|
+
...getHeliaDebugContext(helia)
|
|
193
|
+
});
|
|
194
|
+
log.error(error);
|
|
195
|
+
throw error;
|
|
196
|
+
}
|
|
197
|
+
return connectedPeersWithContent;
|
|
198
|
+
}
|
|
199
|
+
//#endregion
|
|
200
|
+
export { getHeliaDebugContext as n, connectToPubsubPeers as t };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import nodeModule from "node:module";
|
|
2
|
+
//#region dist/node/runtime/node/compile-cache.js
|
|
3
|
+
function enableNodeCompileCache() {
|
|
4
|
+
try {
|
|
5
|
+
if (typeof nodeModule.enableCompileCache === "function") nodeModule.enableCompileCache();
|
|
6
|
+
} catch {}
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
//#region dist/node/index-with-compile-cache.js
|
|
10
|
+
enableNodeCompileCache();
|
|
11
|
+
const index = await import("./index.js");
|
|
12
|
+
var index_with_compile_cache_default = index.default;
|
|
13
|
+
const setNativeFunctions = index.setNativeFunctions;
|
|
14
|
+
const nativeFunctions = index.nativeFunctions;
|
|
15
|
+
const getShortCid = index.getShortCid;
|
|
16
|
+
const getShortAddress = index.getShortAddress;
|
|
17
|
+
const challenges = index.challenges;
|
|
18
|
+
//#endregion
|
|
19
|
+
export { challenges, index_with_compile_cache_default as default, getShortAddress, getShortCid, nativeFunctions, setNativeFunctions };
|