@pkcprotocol/pkc-js 0.0.44 → 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.
Files changed (148) hide show
  1. package/README.md +41 -0
  2. package/dist/browser/clients/rpc-client/pkc-rpc-client.d.ts +2 -1
  3. package/dist/browser/clients/rpc-client/pkc-rpc-client.js +5 -1
  4. package/dist/browser/clients/rpc-client/pkc-rpc-client.js.map +1 -1
  5. package/dist/browser/clients/rpc-client/rpc-schema-util.d.ts +96 -0
  6. package/dist/browser/clients/rpc-client/rpc-schema-util.js +4 -1
  7. package/dist/browser/clients/rpc-client/rpc-schema-util.js.map +1 -1
  8. package/dist/browser/clients/rpc-client/schema.d.ts +89 -2
  9. package/dist/browser/clients/rpc-client/schema.js +10 -1
  10. package/dist/browser/clients/rpc-client/schema.js.map +1 -1
  11. package/dist/browser/clients/rpc-client/types.d.ts +3 -1
  12. package/dist/browser/community/remote-community.d.ts +5 -1
  13. package/dist/browser/community/remote-community.js +6 -0
  14. package/dist/browser/community/remote-community.js.map +1 -1
  15. package/dist/browser/community/rpc-local-community.d.ts +5 -1
  16. package/dist/browser/community/rpc-local-community.js +3 -0
  17. package/dist/browser/community/rpc-local-community.js.map +1 -1
  18. package/dist/browser/community/schema.d.ts +28 -18
  19. package/dist/browser/community/schema.js +8 -0
  20. package/dist/browser/community/schema.js.map +1 -1
  21. package/dist/browser/community/types.d.ts +2 -1
  22. package/dist/browser/generated-version.d.ts +1 -1
  23. package/dist/browser/generated-version.js +1 -1
  24. package/dist/browser/index-with-compile-cache.d.ts +254 -0
  25. package/dist/browser/index-with-compile-cache.js +25 -0
  26. package/dist/browser/index-with-compile-cache.js.map +1 -0
  27. package/dist/browser/pages/schema.d.ts +5 -5
  28. package/dist/browser/pkc/pkc.d.ts +3 -4
  29. package/dist/browser/pkc/pkc.js +16 -19
  30. package/dist/browser/pkc/pkc.js.map +1 -1
  31. package/dist/browser/publications/comment/schema.d.ts +2 -2
  32. package/dist/browser/publications/comment/schema.js +7 -1
  33. package/dist/browser/publications/comment/schema.js.map +1 -1
  34. package/dist/browser/rpc/src/index.d.ts +2 -1
  35. package/dist/browser/rpc/src/index.js +30 -2
  36. package/dist/browser/rpc/src/index.js.map +1 -1
  37. package/dist/browser/runtime/browser/compile-cache.d.ts +1 -0
  38. package/dist/browser/runtime/browser/compile-cache.js +7 -0
  39. package/dist/browser/runtime/browser/compile-cache.js.map +1 -0
  40. package/dist/browser/runtime/browser/setup-kubo-http-routers.d.ts +1 -0
  41. package/dist/browser/runtime/browser/setup-kubo-http-routers.js +4 -0
  42. package/dist/browser/runtime/browser/setup-kubo-http-routers.js.map +1 -0
  43. package/dist/browser/runtime/node/community/db-handler.d.ts +4 -2
  44. package/dist/browser/runtime/node/community/db-handler.js +30 -1
  45. package/dist/browser/runtime/node/community/db-handler.js.map +1 -1
  46. package/dist/browser/runtime/node/community/db-row-parser.d.ts +2 -0
  47. package/dist/browser/runtime/node/community/db-row-parser.js +6 -0
  48. package/dist/browser/runtime/node/community/db-row-parser.js.map +1 -1
  49. package/dist/browser/runtime/node/community/local-community.d.ts +5 -1
  50. package/dist/browser/runtime/node/community/local-community.js +12 -0
  51. package/dist/browser/runtime/node/community/local-community.js.map +1 -1
  52. package/dist/browser/runtime/node/compile-cache.d.ts +1 -0
  53. package/dist/browser/runtime/node/compile-cache.js +29 -0
  54. package/dist/browser/runtime/node/compile-cache.js.map +1 -0
  55. package/dist/browser/runtime/node/setup-kubo-http-routers.d.ts +2 -0
  56. package/dist/browser/runtime/node/{setup-kubo-address-rewriter-and-http-router.js → setup-kubo-http-routers.js} +10 -79
  57. package/dist/browser/runtime/node/setup-kubo-http-routers.js.map +1 -0
  58. package/dist/bundled/bundle-manifest.json +1288 -0
  59. package/dist/bundled/challenges.js +1 -0
  60. package/dist/bundled/chunks/helia-for-pkc-uRINWDzG.js +281 -0
  61. package/dist/bundled/chunks/local-community-CCSP8e6_.js +2 -0
  62. package/dist/bundled/chunks/local-community-iVvgerOY.js +7218 -0
  63. package/dist/bundled/chunks/node-DMNVMYGv.js +7567 -0
  64. package/dist/bundled/chunks/rpc-local-community-DG6G0xL6.js +128945 -0
  65. package/dist/bundled/chunks/schema-Bo3XK8Oe.js +34342 -0
  66. package/dist/bundled/chunks/util-I3gVOp6w.js +200 -0
  67. package/dist/bundled/index-with-compile-cache.js +19 -0
  68. package/dist/bundled/index.js +2 -0
  69. package/dist/bundled/rpc/src/index.js +1473 -0
  70. package/dist/node/clients/rpc-client/pkc-rpc-client.d.ts +2 -1
  71. package/dist/node/clients/rpc-client/pkc-rpc-client.js +5 -1
  72. package/dist/node/clients/rpc-client/pkc-rpc-client.js.map +1 -1
  73. package/dist/node/clients/rpc-client/rpc-schema-util.d.ts +96 -0
  74. package/dist/node/clients/rpc-client/rpc-schema-util.js +4 -1
  75. package/dist/node/clients/rpc-client/rpc-schema-util.js.map +1 -1
  76. package/dist/node/clients/rpc-client/schema.d.ts +89 -2
  77. package/dist/node/clients/rpc-client/schema.js +10 -1
  78. package/dist/node/clients/rpc-client/schema.js.map +1 -1
  79. package/dist/node/clients/rpc-client/types.d.ts +3 -1
  80. package/dist/node/community/remote-community.d.ts +5 -1
  81. package/dist/node/community/remote-community.js +6 -0
  82. package/dist/node/community/remote-community.js.map +1 -1
  83. package/dist/node/community/rpc-local-community.d.ts +5 -1
  84. package/dist/node/community/rpc-local-community.js +3 -0
  85. package/dist/node/community/rpc-local-community.js.map +1 -1
  86. package/dist/node/community/schema.d.ts +28 -18
  87. package/dist/node/community/schema.js +8 -0
  88. package/dist/node/community/schema.js.map +1 -1
  89. package/dist/node/community/types.d.ts +2 -1
  90. package/dist/node/generated-version.d.ts +1 -1
  91. package/dist/node/generated-version.js +1 -1
  92. package/dist/node/index-with-compile-cache.d.ts +254 -0
  93. package/dist/node/index-with-compile-cache.js +25 -0
  94. package/dist/node/index-with-compile-cache.js.map +1 -0
  95. package/dist/node/pages/schema.d.ts +5 -5
  96. package/dist/node/pkc/pkc.d.ts +3 -4
  97. package/dist/node/pkc/pkc.js +16 -19
  98. package/dist/node/pkc/pkc.js.map +1 -1
  99. package/dist/node/publications/comment/schema.d.ts +2 -2
  100. package/dist/node/publications/comment/schema.js +7 -1
  101. package/dist/node/publications/comment/schema.js.map +1 -1
  102. package/dist/node/rpc/src/index.d.ts +2 -1
  103. package/dist/node/rpc/src/index.js +30 -2
  104. package/dist/node/rpc/src/index.js.map +1 -1
  105. package/dist/node/runtime/browser/compile-cache.d.ts +1 -0
  106. package/dist/node/runtime/browser/compile-cache.js +7 -0
  107. package/dist/node/runtime/browser/compile-cache.js.map +1 -0
  108. package/dist/node/runtime/browser/setup-kubo-http-routers.d.ts +1 -0
  109. package/dist/node/runtime/browser/setup-kubo-http-routers.js +4 -0
  110. package/dist/node/runtime/browser/setup-kubo-http-routers.js.map +1 -0
  111. package/dist/node/runtime/node/community/db-handler.d.ts +4 -2
  112. package/dist/node/runtime/node/community/db-handler.js +30 -1
  113. package/dist/node/runtime/node/community/db-handler.js.map +1 -1
  114. package/dist/node/runtime/node/community/db-row-parser.d.ts +2 -0
  115. package/dist/node/runtime/node/community/db-row-parser.js +6 -0
  116. package/dist/node/runtime/node/community/db-row-parser.js.map +1 -1
  117. package/dist/node/runtime/node/community/local-community.d.ts +5 -1
  118. package/dist/node/runtime/node/community/local-community.js +12 -0
  119. package/dist/node/runtime/node/community/local-community.js.map +1 -1
  120. package/dist/node/runtime/node/compile-cache.d.ts +1 -0
  121. package/dist/node/runtime/node/compile-cache.js +29 -0
  122. package/dist/node/runtime/node/compile-cache.js.map +1 -0
  123. package/dist/node/runtime/node/setup-kubo-http-routers.d.ts +2 -0
  124. package/dist/node/runtime/node/{setup-kubo-address-rewriter-and-http-router.js → setup-kubo-http-routers.js} +10 -79
  125. package/dist/node/runtime/node/setup-kubo-http-routers.js.map +1 -0
  126. package/package.json +18 -9
  127. package/dist/browser/runtime/browser/setup-kubo-address-rewriter-and-http-router.d.ts +0 -1
  128. package/dist/browser/runtime/browser/setup-kubo-address-rewriter-and-http-router.js +0 -4
  129. package/dist/browser/runtime/browser/setup-kubo-address-rewriter-and-http-router.js.map +0 -1
  130. package/dist/browser/runtime/node/address-rewriter-db.d.ts +0 -31
  131. package/dist/browser/runtime/node/address-rewriter-db.js +0 -156
  132. package/dist/browser/runtime/node/address-rewriter-db.js.map +0 -1
  133. package/dist/browser/runtime/node/addresses-rewriter-proxy-server.d.ts +0 -45
  134. package/dist/browser/runtime/node/addresses-rewriter-proxy-server.js +0 -493
  135. package/dist/browser/runtime/node/addresses-rewriter-proxy-server.js.map +0 -1
  136. package/dist/browser/runtime/node/setup-kubo-address-rewriter-and-http-router.d.ts +0 -4
  137. package/dist/browser/runtime/node/setup-kubo-address-rewriter-and-http-router.js.map +0 -1
  138. package/dist/node/runtime/browser/setup-kubo-address-rewriter-and-http-router.d.ts +0 -1
  139. package/dist/node/runtime/browser/setup-kubo-address-rewriter-and-http-router.js +0 -4
  140. package/dist/node/runtime/browser/setup-kubo-address-rewriter-and-http-router.js.map +0 -1
  141. package/dist/node/runtime/node/address-rewriter-db.d.ts +0 -31
  142. package/dist/node/runtime/node/address-rewriter-db.js +0 -156
  143. package/dist/node/runtime/node/address-rewriter-db.js.map +0 -1
  144. package/dist/node/runtime/node/addresses-rewriter-proxy-server.d.ts +0 -45
  145. package/dist/node/runtime/node/addresses-rewriter-proxy-server.js +0 -493
  146. package/dist/node/runtime/node/addresses-rewriter-proxy-server.js.map +0 -1
  147. package/dist/node/runtime/node/setup-kubo-address-rewriter-and-http-router.d.ts +0 -4
  148. package/dist/node/runtime/node/setup-kubo-address-rewriter-and-http-router.js.map +0 -1
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,281 @@
1
+ import { L as hideClassPrivateProps, R as ipnsNameToIpnsOverPubsubTopic, ir as PKCError, or as logger_default } from "./schema-Bo3XK8Oe.js";
2
+ import { n as getHeliaDebugContext, t as connectToPubsubPeers } from "./util-I3gVOp6w.js";
3
+ import { CID } from "multiformats/cid";
4
+ import { peerIdFromString } from "@libp2p/peer-id";
5
+ import { multihashToIPNSRoutingKey, unmarshalIPNSRecord } from "ipns";
6
+ import { ipnsValidator } from "ipns/validator";
7
+ import { MemoryBlockstore } from "blockstore-core";
8
+ import { EventEmitter as EventEmitter$1 } from "events";
9
+ import { createHelia, libp2pDefaults } from "helia";
10
+ import { ipns } from "@helia/ipns";
11
+ import { gossipsub } from "@libp2p/gossipsub";
12
+ import { identify } from "@libp2p/identify";
13
+ import { bitswap } from "@helia/block-brokers";
14
+ import { delegatedRoutingV1HttpApiClient } from "@helia/delegated-routing-v1-http-api-client";
15
+ import { unixfs } from "@helia/unixfs";
16
+ import { fetch } from "@libp2p/fetch";
17
+ import { pubsub } from "@helia/ipns/routing";
18
+ //#region dist/node/runtime/node/libp2p-extra-transports.js
19
+ const extraLibp2pTransports = [];
20
+ //#endregion
21
+ //#region dist/node/helia/libp2pjsClient.js
22
+ var Libp2pJsClient = class {
23
+ constructor(libp2pJsClientOptions) {
24
+ this._helia = libp2pJsClientOptions.helia;
25
+ this._heliaUnixfs = libp2pJsClientOptions.heliaUnixfs;
26
+ this._heliaIpnsRouter = libp2pJsClientOptions.heliaIpnsRouter;
27
+ this.heliaWithKuboRpcClientFunctions = libp2pJsClientOptions.heliaWithKuboRpcClientFunctions;
28
+ this._libp2pJsClientsOptions = libp2pJsClientOptions.libp2pJsClientsOptions;
29
+ this._mergedHeliaOptions = libp2pJsClientOptions.mergedHeliaOptions;
30
+ this.key = libp2pJsClientOptions.key;
31
+ this.countOfUsesOfInstance = libp2pJsClientOptions.countOfUsesOfInstance;
32
+ hideClassPrivateProps(this);
33
+ }
34
+ };
35
+ //#endregion
36
+ //#region dist/node/helia/helia-for-pkc.js
37
+ const log = logger_default("pkc-js:libp2p-js");
38
+ const libp2pJsClients = {};
39
+ const creatingLibp2pJsClients = {};
40
+ function getDelegatedRoutingFields(routers) {
41
+ const routersObj = {};
42
+ for (let i = 0; i < routers.length; i++) {
43
+ const factory = delegatedRoutingV1HttpApiClient({ url: routers[i] });
44
+ routersObj["delegatedRouting" + i] = (components) => {
45
+ const client = factory(components);
46
+ client.getIPNS = client.getPeers = client.putIPNS = void 0;
47
+ return client;
48
+ };
49
+ }
50
+ return routersObj;
51
+ }
52
+ async function createLibp2pJsClientOrUseExistingOne(pkcOptions) {
53
+ if (!pkcOptions.httpRoutersOptions?.length) throw Error("You need to have pkc.httpRouterOptions to set up helia");
54
+ const existingClient = libp2pJsClients[pkcOptions.key];
55
+ if (existingClient) {
56
+ existingClient.countOfUsesOfInstance++;
57
+ return existingClient;
58
+ }
59
+ const creatingClientPromise = creatingLibp2pJsClients[pkcOptions.key];
60
+ if (creatingClientPromise) {
61
+ const client = await creatingClientPromise;
62
+ client.countOfUsesOfInstance++;
63
+ return client;
64
+ }
65
+ creatingLibp2pJsClients[pkcOptions.key] = (async () => {
66
+ const mergedHeliaInit = {
67
+ libp2p: {
68
+ addresses: { listen: [] },
69
+ peerDiscovery: void 0,
70
+ transports: [...libp2pDefaults().transports ?? [], ...extraLibp2pTransports],
71
+ connectionMonitor: { abortConnectionOnPingFailure: false },
72
+ ...pkcOptions.libp2pOptions,
73
+ services: {
74
+ identify: identify(),
75
+ pubsub: gossipsub(),
76
+ fetch: fetch(),
77
+ ...getDelegatedRoutingFields(pkcOptions.httpRoutersOptions),
78
+ ...pkcOptions.libp2pOptions?.services
79
+ }
80
+ },
81
+ blockstore: new MemoryBlockstore(),
82
+ blockBrokers: [bitswap()],
83
+ start: false,
84
+ ...pkcOptions.heliaOptions
85
+ };
86
+ const helia = await createHelia(mergedHeliaInit);
87
+ helia.routing.routers = helia.routing.routers.filter((r) => r.constructor.name !== "HTTPGatewayRouter");
88
+ log("Initialized libp2pjs helia with key", pkcOptions.key, "peer id", helia.libp2p.peerId.toString());
89
+ const pubsubEventHandler = new EventEmitter$1();
90
+ helia.libp2p.services.pubsub.addEventListener("message", (evt) => {
91
+ log.trace(`Event from helia libp2p pubsub: on pubsub topic (string, e.g. community address) ${evt.detail.topic}`);
92
+ const msgFormatted = {
93
+ data: evt.detail.data,
94
+ topic: evt.detail.topic,
95
+ type: evt.detail.type
96
+ };
97
+ pubsubEventHandler.emit(evt.detail.topic, msgFormatted);
98
+ });
99
+ const heliaFs = unixfs(helia);
100
+ const ipnsNameResolver = ipns(helia, { routers: [pubsub(helia)] });
101
+ ipnsNameResolver.routers = ipnsNameResolver.routers.filter((r) => r?.constructor?.name !== "LocalStoreRouting");
102
+ const WARMUP_MAX_PEERS = 4;
103
+ const warmupPromisesByTopic = /* @__PURE__ */ new Map();
104
+ const warmupForTopic = (topic, options) => {
105
+ if (helia.libp2p.services.pubsub.getSubscribers(topic).length > 0) return Promise.resolve();
106
+ const existing = warmupPromisesByTopic.get(topic);
107
+ if (existing) return existing;
108
+ const p = connectToPubsubPeers({
109
+ helia,
110
+ pubsubTopic: topic,
111
+ maxPeers: WARMUP_MAX_PEERS,
112
+ options,
113
+ log: logger_default("pkc-js:helia:pubsub:warmup")
114
+ }).then(() => void 0).finally(() => {
115
+ warmupPromisesByTopic.delete(topic);
116
+ });
117
+ warmupPromisesByTopic.set(topic, p);
118
+ return p;
119
+ };
120
+ const throwIfHeliaIsStoppingOrStopped = () => {
121
+ if (helia.libp2p.status === "stopped" || helia.libp2p.status === "stopping") throw new PKCError("ERR_HELIAS_STOPPING_OR_STOPPED", {
122
+ heliaKey: pkcOptions.key,
123
+ helia,
124
+ ...getHeliaDebugContext(helia)
125
+ });
126
+ };
127
+ const heliaWithKuboRpcClientShape = {
128
+ name: { resolve: (ipnsName, options) => {
129
+ throwIfHeliaIsStoppingOrStopped();
130
+ async function* generator() {
131
+ const currentName = typeof ipnsName === "string" ? ipnsName : ipnsName.toString();
132
+ const ipnsNameAsPeerId = peerIdFromString(currentName);
133
+ log.trace("Resolving ipns name", currentName, "with options", options);
134
+ const ipnsPubsubTopic = ipnsNameToIpnsOverPubsubTopic(ipnsNameAsPeerId.toString());
135
+ let warmupOutcome = { attempted: false };
136
+ if (helia.libp2p.services.pubsub.getSubscribers(ipnsPubsubTopic).length === 0) {
137
+ const warmupStart = Date.now();
138
+ try {
139
+ await warmupForTopic(ipnsPubsubTopic, options);
140
+ warmupOutcome = {
141
+ attempted: true,
142
+ durationMs: Date.now() - warmupStart,
143
+ subscribersAfterWarmup: helia.libp2p.services.pubsub.getSubscribers(ipnsPubsubTopic).length
144
+ };
145
+ } catch (warmupErr) {
146
+ warmupOutcome = {
147
+ attempted: true,
148
+ durationMs: Date.now() - warmupStart,
149
+ error: warmupErr
150
+ };
151
+ log.error("Pre-resolve peer warmup failed for", ipnsPubsubTopic, warmupErr);
152
+ }
153
+ }
154
+ const routingKey = multihashToIPNSRoutingKey(ipnsNameAsPeerId.toMultihash());
155
+ let recordBytes;
156
+ const routerErrors = [];
157
+ for (const router of ipnsNameResolver.routers) try {
158
+ const got = await router.get(routingKey, {
159
+ ...options,
160
+ validate: false
161
+ });
162
+ if (got) {
163
+ recordBytes = got;
164
+ break;
165
+ }
166
+ } catch (err) {
167
+ routerErrors.push(err);
168
+ }
169
+ if (!recordBytes) throw new PKCError("ERR_RESOLVED_IPNS_P2P_TO_UNDEFINED", {
170
+ ipnsName,
171
+ currentName,
172
+ ipnsPubsubTopic,
173
+ ipnsResolveOptions: options,
174
+ warmupOutcome,
175
+ routerErrors,
176
+ subscribersAtResolveTime: helia.libp2p.services.pubsub.getSubscribers(ipnsPubsubTopic).length,
177
+ httpRouters: pkcOptions.httpRoutersOptions,
178
+ ...getHeliaDebugContext(helia)
179
+ });
180
+ await ipnsValidator(routingKey, recordBytes);
181
+ yield unmarshalIPNSRecord(recordBytes).value;
182
+ }
183
+ return generator();
184
+ } },
185
+ cat(ipfsPath, options) {
186
+ throwIfHeliaIsStoppingOrStopped();
187
+ if (ipfsPath.includes("/")) {
188
+ const rootCid = ipfsPath.split("/")[0];
189
+ const path = ipfsPath.split("/").slice(1).join("/");
190
+ return heliaFs.cat(CID.parse(rootCid), {
191
+ ...options,
192
+ path
193
+ });
194
+ } else return heliaFs.cat(CID.parse(ipfsPath), options);
195
+ },
196
+ pubsub: {
197
+ ls: async () => helia.libp2p.services.pubsub.getTopics(),
198
+ peers: async (topic, options) => helia.libp2p.services.pubsub.getSubscribers(topic),
199
+ publish: async (topic, data, options) => {
200
+ throwIfHeliaIsStoppingOrStopped();
201
+ const wasAlreadySubscribed = helia.libp2p.services.pubsub.getTopics().includes(topic);
202
+ if (!wasAlreadySubscribed) helia.libp2p.services.pubsub.subscribe(topic);
203
+ try {
204
+ await warmupForTopic(topic, options);
205
+ log("Published new data to pubsub topic (string, e.g. community address)", topic, "Direct gossipsub recipients (libp2p peer IDs, NOT signer/community addresses):", (await helia.libp2p.services.pubsub.publish(topic, data)).recipients.map((p) => p.toString()));
206
+ } finally {
207
+ if (!wasAlreadySubscribed) helia.libp2p.services.pubsub.unsubscribe(topic);
208
+ }
209
+ },
210
+ subscribe: async (topic, handler, options) => {
211
+ throwIfHeliaIsStoppingOrStopped();
212
+ pubsubEventHandler.on(topic, handler);
213
+ const warmupPromise = warmupForTopic(topic, options);
214
+ helia.libp2p.services.pubsub.subscribe(topic);
215
+ await warmupPromise;
216
+ },
217
+ unsubscribe: async (topic, handler, options) => {
218
+ throwIfHeliaIsStoppingOrStopped();
219
+ pubsubEventHandler.removeListener(topic, handler);
220
+ if (pubsubEventHandler.listenerCount(topic) === 0) helia.libp2p.services.pubsub.unsubscribe(topic);
221
+ }
222
+ },
223
+ async add(entry, options) {
224
+ throw Error("Helia 'add' is not supported at the moment in pkc-js API");
225
+ },
226
+ async stop(options) {
227
+ const clientFromMap = libp2pJsClients[pkcOptions.key];
228
+ if (!clientFromMap) return;
229
+ if (clientFromMap.countOfUsesOfInstance <= 0) return;
230
+ clientFromMap.countOfUsesOfInstance--;
231
+ if (clientFromMap.countOfUsesOfInstance === 0) {
232
+ delete libp2pJsClients[pkcOptions.key];
233
+ for (const router of ipnsNameResolver.routers) {
234
+ const lifecycle = router;
235
+ if (typeof lifecycle.stop === "function") try {
236
+ await lifecycle.stop();
237
+ } catch (e) {
238
+ log.error("Error stopping IPNS router", router?.constructor?.name, e);
239
+ }
240
+ }
241
+ for (const topic of helia.libp2p.services.pubsub.getTopics()) helia.libp2p.services.pubsub.unsubscribe(topic);
242
+ try {
243
+ await helia.stop();
244
+ } catch (e) {
245
+ log.error("Error stopping helia", e);
246
+ }
247
+ log("Helia/libp2p-js stopped with key", pkcOptions.key, "and peer id", helia.libp2p.peerId.toString());
248
+ }
249
+ }
250
+ };
251
+ const originalSubscribe = helia.libp2p.services.pubsub.subscribe.bind(helia.libp2p.services.pubsub);
252
+ helia.libp2p.services.pubsub.subscribe = (topic) => {
253
+ throwIfHeliaIsStoppingOrStopped();
254
+ warmupForTopic(topic).catch((err) => log.error("warmup failed for topic", topic, err));
255
+ originalSubscribe(topic);
256
+ };
257
+ const client = new Libp2pJsClient({
258
+ helia,
259
+ heliaWithKuboRpcClientFunctions: heliaWithKuboRpcClientShape,
260
+ heliaUnixfs: heliaFs,
261
+ heliaIpnsRouter: ipnsNameResolver,
262
+ mergedHeliaOptions: mergedHeliaInit,
263
+ countOfUsesOfInstance: 1,
264
+ libp2pJsClientsOptions: pkcOptions,
265
+ key: pkcOptions.key
266
+ });
267
+ await helia.start();
268
+ log("Helia/libp2p-js started with key", pkcOptions.key, "and peer id", helia.libp2p.peerId.toString());
269
+ libp2pJsClients[pkcOptions.key] = client;
270
+ return client;
271
+ })();
272
+ const createdClientPromise = creatingLibp2pJsClients[pkcOptions.key];
273
+ if (!createdClientPromise) throw new Error("Missing creation promise after initialization");
274
+ try {
275
+ return await createdClientPromise;
276
+ } finally {
277
+ delete creatingLibp2pJsClients[pkcOptions.key];
278
+ }
279
+ }
280
+ //#endregion
281
+ export { createLibp2pJsClientOrUseExistingOne };
@@ -0,0 +1,2 @@
1
+ import { n as createNewLocalCommunityDb, r as updateInstancePropsWithStartedCommunityOrDb, t as LocalCommunity } from "./local-community-iVvgerOY.js";
2
+ export { LocalCommunity, createNewLocalCommunityDb, updateInstancePropsWithStartedCommunityOrDb };