@pkcprotocol/pkc-js 0.0.49 → 0.0.51

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 (59) hide show
  1. package/dist/browser/generated-version.d.ts +1 -1
  2. package/dist/browser/generated-version.js +1 -1
  3. package/dist/browser/pkc/pkc.d.ts +2 -1
  4. package/dist/browser/pkc/pkc.js +17 -10
  5. package/dist/browser/pkc/pkc.js.map +1 -1
  6. package/dist/browser/runtime/browser/setup-kubo-address-rewriter-and-http-router.d.ts +1 -0
  7. package/dist/browser/runtime/browser/setup-kubo-address-rewriter-and-http-router.js +4 -0
  8. package/dist/browser/runtime/browser/setup-kubo-address-rewriter-and-http-router.js.map +1 -0
  9. package/dist/browser/runtime/node/address-rewriter-db.d.ts +32 -0
  10. package/dist/browser/runtime/node/address-rewriter-db.js +156 -0
  11. package/dist/browser/runtime/node/address-rewriter-db.js.map +1 -0
  12. package/dist/browser/runtime/node/addresses-rewriter-proxy-server.d.ts +46 -0
  13. package/dist/browser/runtime/node/addresses-rewriter-proxy-server.js +512 -0
  14. package/dist/browser/runtime/node/addresses-rewriter-proxy-server.js.map +1 -0
  15. package/dist/browser/runtime/node/community/local-community/cleanup.js +21 -0
  16. package/dist/browser/runtime/node/community/local-community/cleanup.js.map +1 -1
  17. package/dist/browser/runtime/node/setup-kubo-address-rewriter-and-http-router.d.ts +4 -0
  18. package/dist/browser/runtime/node/{setup-kubo-http-routers.js → setup-kubo-address-rewriter-and-http-router.js} +96 -18
  19. package/dist/browser/runtime/node/setup-kubo-address-rewriter-and-http-router.js.map +1 -0
  20. package/dist/bundled/bundle-manifest.json +43 -26
  21. package/dist/bundled/chunks/{helia-for-pkc-BZ6rZnW_.js → helia-for-pkc-CUP6OHZK.js} +2 -2
  22. package/dist/bundled/chunks/{local-community-CPvHllf9.js → local-community-CvqLy6Ae.js} +1 -1
  23. package/dist/bundled/chunks/{local-community-CbMGlscJ.js → local-community-V8zNa5f6.js} +11 -2
  24. package/dist/bundled/chunks/{node-eJCx_6gz.js → node-Cb3oyWdO.js} +2854 -283
  25. package/dist/bundled/chunks/{rpc-local-community-CTDbXkkP.js → rpc-local-community-DpGUOcjz.js} +1 -1
  26. package/dist/bundled/chunks/{schema-D0I45iuK.js → schema-8LB1qzJT.js} +1 -1
  27. package/dist/bundled/chunks/{util-C0EAYvmS.js → util-f6LWGHSl.js} +1 -1
  28. package/dist/bundled/index.js +1 -1
  29. package/dist/bundled/rpc/src/index.js +4 -4
  30. package/dist/node/generated-version.d.ts +1 -1
  31. package/dist/node/generated-version.js +1 -1
  32. package/dist/node/pkc/pkc.d.ts +2 -1
  33. package/dist/node/pkc/pkc.js +17 -10
  34. package/dist/node/pkc/pkc.js.map +1 -1
  35. package/dist/node/runtime/browser/setup-kubo-address-rewriter-and-http-router.d.ts +1 -0
  36. package/dist/node/runtime/browser/setup-kubo-address-rewriter-and-http-router.js +4 -0
  37. package/dist/node/runtime/browser/setup-kubo-address-rewriter-and-http-router.js.map +1 -0
  38. package/dist/node/runtime/node/address-rewriter-db.d.ts +32 -0
  39. package/dist/node/runtime/node/address-rewriter-db.js +156 -0
  40. package/dist/node/runtime/node/address-rewriter-db.js.map +1 -0
  41. package/dist/node/runtime/node/addresses-rewriter-proxy-server.d.ts +46 -0
  42. package/dist/node/runtime/node/addresses-rewriter-proxy-server.js +512 -0
  43. package/dist/node/runtime/node/addresses-rewriter-proxy-server.js.map +1 -0
  44. package/dist/node/runtime/node/community/local-community/cleanup.js +21 -0
  45. package/dist/node/runtime/node/community/local-community/cleanup.js.map +1 -1
  46. package/dist/node/runtime/node/setup-kubo-address-rewriter-and-http-router.d.ts +4 -0
  47. package/dist/node/runtime/node/{setup-kubo-http-routers.js → setup-kubo-address-rewriter-and-http-router.js} +96 -18
  48. package/dist/node/runtime/node/setup-kubo-address-rewriter-and-http-router.js.map +1 -0
  49. package/package.json +2 -2
  50. package/dist/browser/runtime/browser/setup-kubo-http-routers.d.ts +0 -1
  51. package/dist/browser/runtime/browser/setup-kubo-http-routers.js +0 -4
  52. package/dist/browser/runtime/browser/setup-kubo-http-routers.js.map +0 -1
  53. package/dist/browser/runtime/node/setup-kubo-http-routers.d.ts +0 -2
  54. package/dist/browser/runtime/node/setup-kubo-http-routers.js.map +0 -1
  55. package/dist/node/runtime/browser/setup-kubo-http-routers.d.ts +0 -1
  56. package/dist/node/runtime/browser/setup-kubo-http-routers.js +0 -4
  57. package/dist/node/runtime/browser/setup-kubo-http-routers.js.map +0 -1
  58. package/dist/node/runtime/node/setup-kubo-http-routers.d.ts +0 -2
  59. package/dist/node/runtime/node/setup-kubo-http-routers.js.map +0 -1
@@ -1,7 +1,9 @@
1
1
  import retry from "retry";
2
+ import { AddressesRewriterProxyServer } from "./addresses-rewriter-proxy-server.js";
2
3
  import Logger from "../../logger.js";
3
4
  import { PKCError } from "../../pkc-error.js";
4
5
  import * as remeda from "remeda";
6
+ import tcpPortUsed from "tcp-port-used";
5
7
  function _mergeRouterConfigs(existingConfig, newConfig) {
6
8
  if (!existingConfig?.Routers)
7
9
  return newConfig;
@@ -83,11 +85,12 @@ async function _setHttpRouterOptionsOnKuboNode(kuboClient, routingValue) {
83
85
  }
84
86
  log.trace("Succeeded in setting config key", routingKey, "on node", kuboClient._clientOptions.url, "to be", mergedRoutingValue);
85
87
  await _setProvideDhtSweepEnabledOnKuboNode(kuboClient, false);
86
- const endpointsBefore = Object.values(routingConfigBeforeChanging?.["Routers"] || {}).map(
87
- //@ts-expect-error
88
- (router) => router["Parameters"]["Endpoint"]);
89
- //@ts-expect-error
90
- const endpointsAfter = Object.values(mergedRoutingValue.Routers).map((router) => router["Parameters"]["Endpoint"]);
88
+ const endpointsBefore = Object.values(routingConfigBeforeChanging?.Routers || {})
89
+ .map((router) => router.Parameters?.Endpoint)
90
+ .filter((endpoint) => endpoint !== undefined);
91
+ const endpointsAfter = Object.values(mergedRoutingValue.Routers)
92
+ .map((router) => router.Parameters?.Endpoint)
93
+ .filter((endpoint) => endpoint !== undefined);
91
94
  if (!remeda.isDeepEqual(endpointsBefore.sort(), endpointsAfter.sort())) {
92
95
  log("Config on kubo node has been changed. PKC-js will send shutdown command to node", kuboClient._clientOptions.url, "Clients of pkc-js should restart ipfs node");
93
96
  const shutdownUrl = `${kuboClient._clientOptions.url}/shutdown`;
@@ -105,21 +108,91 @@ async function _setHttpRouterOptionsOnKuboNode(kuboClient, routingValue) {
105
108
  }
106
109
  }
107
110
  }
108
- export async function setupKuboHttpRouters(pkc) {
111
+ async function _getStartedProxyUrl(pkc, httpRouterUrl) {
109
112
  if (pkc.destroyed)
110
- return;
113
+ return undefined;
114
+ const mappingKeyName = `httprouter_proxy_${httpRouterUrl}`;
115
+ try {
116
+ const urlOfProxyOfHttpRouter = await pkc._storage.getItem(mappingKeyName);
117
+ if (pkc.destroyed)
118
+ return undefined;
119
+ if (urlOfProxyOfHttpRouter) {
120
+ const proxyHttpUrl = new URL(urlOfProxyOfHttpRouter);
121
+ if (await tcpPortUsed.check(Number(proxyHttpUrl.port), "127.0.0.1"))
122
+ return urlOfProxyOfHttpRouter;
123
+ if (pkc.destroyed)
124
+ return undefined;
125
+ await pkc._storage.removeItem(mappingKeyName);
126
+ }
127
+ return undefined;
128
+ }
129
+ catch (error) {
130
+ if (pkc.destroyed && error instanceof Error && error.message.includes("database connection is not open")) {
131
+ return undefined;
132
+ }
133
+ throw error;
134
+ }
135
+ }
136
+ export async function setupKuboAddressesRewriterAndHttpRouters(pkc) {
137
+ if (pkc.destroyed) {
138
+ return {
139
+ destroy: async () => { }
140
+ };
141
+ }
111
142
  if (!Array.isArray(pkc.kuboRpcClientsOptions) || pkc.kuboRpcClientsOptions.length <= 0)
112
143
  throw Error("need ipfs http client to be defined");
113
144
  if (!Array.isArray(pkc.httpRoutersOptions) || pkc.httpRoutersOptions.length <= 0)
114
145
  throw Error("Need http router options to defined");
115
- const httpRouterUrls = [...pkc.httpRoutersOptions].sort(); // make sure it's always the same order
116
- // Set up http routers directly on the kubo nodes
146
+ const log = Logger("pkc-js:node:setupKuboAddressesRewriterAndHttpRouters");
147
+ // Set up http proxies first to rewrite addresses
148
+ const httpRouterProxyUrls = [];
149
+ const proxyServers = [];
150
+ let addressesRewriterStartPort = 19575; // use port 19575 as first port, looks like IPRTR (IPFS ROUTER)
151
+ for (const httpRouter of pkc.httpRoutersOptions) {
152
+ if (pkc.destroyed)
153
+ break;
154
+ const startedProxyUrl = await _getStartedProxyUrl(pkc, httpRouter);
155
+ if (startedProxyUrl) {
156
+ // Intentionally not tracked in proxyServers: this proxy was started by a previous PKC
157
+ // instance in the same process and persisted via storage. We have no server handle to it
158
+ // and must not destroy() it on teardown, since another instance may still rely on it. It
159
+ // is bounded (one proxy per httpRouter, reusing the same stored URL) and lives until the
160
+ // process exits, so this is reuse by design, not a leak.
161
+ httpRouterProxyUrls.push(startedProxyUrl);
162
+ continue;
163
+ }
164
+ // launch the proxy server
165
+ let port = addressesRewriterStartPort;
166
+ const hostname = "127.0.0.1";
167
+ while (await tcpPortUsed.check(port, hostname))
168
+ // keep increasing port till we find an empty port
169
+ port++;
170
+ const addressesRewriterProxyServer = new AddressesRewriterProxyServer({
171
+ kuboClients: Object.values(pkc.clients.kuboRpcClients).map((kubo) => kubo._client),
172
+ port,
173
+ hostname,
174
+ proxyTargetUrl: httpRouter,
175
+ pkc
176
+ });
177
+ await addressesRewriterProxyServer.listen();
178
+ if (pkc.destroyed) {
179
+ await addressesRewriterProxyServer.destroy();
180
+ break;
181
+ }
182
+ proxyServers.push(addressesRewriterProxyServer);
183
+ // save the proxy urls to use them later
184
+ const httpRouterProxyUrl = `http://${hostname}:${port}`;
185
+ httpRouterProxyUrls.push(httpRouterProxyUrl);
186
+ }
187
+ httpRouterProxyUrls.sort(); // make sure it's always the same order
188
+ // Set up http routers to use proxies
117
189
  const kuboClients = pkc.clients.kuboRpcClients;
190
+ const parallelRouters = [];
118
191
  const httpRoutersConfig = {
119
- HttpRoutersParallel: { Type: "parallel", Parameters: { Routers: [] } },
192
+ HttpRoutersParallel: { Type: "parallel", Parameters: { Routers: parallelRouters } },
120
193
  HttpRouterNotSupported: { Type: "http", Parameters: { Endpoint: "http://kubohttprouternotsupported" } }
121
194
  };
122
- for (const [i, httpRouterUrl] of httpRouterUrls.entries()) {
195
+ for (const [i, httpRouterUrl] of httpRouterProxyUrls.entries()) {
123
196
  const RouterName = `HttpRouter${i + 1}`;
124
197
  httpRoutersConfig[RouterName] = {
125
198
  Type: "http",
@@ -127,7 +200,7 @@ export async function setupKuboHttpRouters(pkc) {
127
200
  Endpoint: httpRouterUrl
128
201
  }
129
202
  };
130
- httpRoutersConfig.HttpRoutersParallel.Parameters.Routers[i] = {
203
+ parallelRouters[i] = {
131
204
  RouterName: RouterName,
132
205
  IgnoreErrors: true,
133
206
  Timeout: "10s"
@@ -146,13 +219,11 @@ export async function setupKuboHttpRouters(pkc) {
146
219
  Methods: httpRoutersMethodsConfig,
147
220
  Routers: httpRoutersConfig
148
221
  };
149
- const settingOptionRetryOption = retry.operation({ forever: true, factor: 2 });
222
+ // Cap the backoff: with forever:true and no maxTimeout the exponential delay grows unbounded
223
+ // (hours between attempts after enough failures), which would stall router setup indefinitely.
224
+ const settingOptionRetryOption = retry.operation({ forever: true, factor: 2, maxTimeout: 60 * 1000 });
150
225
  const setHttpRouterOnAllNodes = new Promise((resolve) => {
151
226
  settingOptionRetryOption.attempt(async (curAttempt) => {
152
- if (pkc.destroyed) {
153
- resolve(1);
154
- return;
155
- }
156
227
  for (const kuboClient of Object.values(kuboClients)) {
157
228
  try {
158
229
  await _setHttpRouterOptionsOnKuboNode(kuboClient, routingValue);
@@ -167,5 +238,12 @@ export async function setupKuboHttpRouters(pkc) {
167
238
  });
168
239
  await setHttpRouterOnAllNodes;
169
240
  settingOptionRetryOption.stop();
241
+ return {
242
+ destroy: async () => {
243
+ for (const proxyServer of proxyServers) {
244
+ await proxyServer.destroy();
245
+ }
246
+ }
247
+ };
170
248
  }
171
- //# sourceMappingURL=setup-kubo-http-routers.js.map
249
+ //# sourceMappingURL=setup-kubo-address-rewriter-and-http-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-kubo-address-rewriter-and-http-router.js","sourceRoot":"","sources":["../../../../src/runtime/browser/setup-kubo-address-rewriter-and-http-router.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@
14
14
  "node:module"
15
15
  ],
16
16
  "dynamicImports": [
17
- "chunks/node-eJCx_6gz.js"
17
+ "chunks/node-Cb3oyWdO.js"
18
18
  ],
19
19
  "inputs": [
20
20
  "dist/node/runtime/node/compile-cache.js",
@@ -24,7 +24,7 @@
24
24
  "index.js": {
25
25
  "isEntry": true,
26
26
  "imports": [
27
- "chunks/node-eJCx_6gz.js"
27
+ "chunks/node-Cb3oyWdO.js"
28
28
  ],
29
29
  "dynamicImports": [],
30
30
  "inputs": []
@@ -32,10 +32,10 @@
32
32
  "rpc/src/index.js": {
33
33
  "isEntry": true,
34
34
  "imports": [
35
- "chunks/schema-D0I45iuK.js",
36
- "chunks/rpc-local-community-CTDbXkkP.js",
37
- "chunks/node-eJCx_6gz.js",
38
- "chunks/local-community-CbMGlscJ.js",
35
+ "chunks/schema-8LB1qzJT.js",
36
+ "chunks/rpc-local-community-DpGUOcjz.js",
37
+ "chunks/node-Cb3oyWdO.js",
38
+ "chunks/local-community-V8zNa5f6.js",
39
39
  "node:url",
40
40
  "path",
41
41
  "assert",
@@ -54,11 +54,11 @@
54
54
  "dist/node/rpc/src/index.js"
55
55
  ]
56
56
  },
57
- "chunks/helia-for-pkc-BZ6rZnW_.js": {
57
+ "chunks/helia-for-pkc-CUP6OHZK.js": {
58
58
  "isEntry": false,
59
59
  "imports": [
60
- "chunks/schema-D0I45iuK.js",
61
- "chunks/util-C0EAYvmS.js",
60
+ "chunks/schema-8LB1qzJT.js",
61
+ "chunks/util-f6LWGHSl.js",
62
62
  "multiformats/cid",
63
63
  "@libp2p/interface",
64
64
  "@libp2p/peer-id",
@@ -83,19 +83,19 @@
83
83
  "dist/node/helia/helia-for-pkc.js"
84
84
  ]
85
85
  },
86
- "chunks/local-community-CPvHllf9.js": {
86
+ "chunks/local-community-CvqLy6Ae.js": {
87
87
  "isEntry": false,
88
88
  "imports": [
89
- "chunks/local-community-CbMGlscJ.js"
89
+ "chunks/local-community-V8zNa5f6.js"
90
90
  ],
91
91
  "dynamicImports": [],
92
92
  "inputs": []
93
93
  },
94
- "chunks/local-community-CbMGlscJ.js": {
94
+ "chunks/local-community-V8zNa5f6.js": {
95
95
  "isEntry": false,
96
96
  "imports": [
97
- "chunks/schema-D0I45iuK.js",
98
- "chunks/rpc-local-community-CTDbXkkP.js",
97
+ "chunks/schema-8LB1qzJT.js",
98
+ "chunks/rpc-local-community-DpGUOcjz.js",
99
99
  "node:crypto",
100
100
  "node:url",
101
101
  "node:path",
@@ -142,23 +142,27 @@
142
142
  "dist/node/runtime/node/community/local-community.js"
143
143
  ]
144
144
  },
145
- "chunks/node-eJCx_6gz.js": {
145
+ "chunks/node-Cb3oyWdO.js": {
146
146
  "isEntry": false,
147
147
  "imports": [
148
- "chunks/schema-D0I45iuK.js",
149
- "chunks/rpc-local-community-CTDbXkkP.js",
150
- "chunks/util-C0EAYvmS.js",
148
+ "chunks/schema-8LB1qzJT.js",
149
+ "chunks/rpc-local-community-DpGUOcjz.js",
150
+ "chunks/util-f6LWGHSl.js",
151
+ "node:http",
152
+ "node:fs/promises",
153
+ "node:path",
151
154
  "path",
152
155
  "assert",
153
156
  "fs",
157
+ "node:https",
154
158
  "better-sqlite3",
155
159
  "typestub-ipfs-only-hash",
156
160
  "events",
157
161
  "rpc-websockets"
158
162
  ],
159
163
  "dynamicImports": [
160
- "chunks/helia-for-pkc-BZ6rZnW_.js",
161
- "chunks/local-community-CbMGlscJ.js"
164
+ "chunks/helia-for-pkc-CUP6OHZK.js",
165
+ "chunks/local-community-V8zNa5f6.js"
162
166
  ],
163
167
  "inputs": [
164
168
  "node_modules/zod/v4/locales/en.js",
@@ -191,7 +195,20 @@
191
195
  "dist/node/runtime/node/sqlite-lru-cache.js",
192
196
  "dist/node/runtime/node/lru-storage.js",
193
197
  "dist/node/publications/comment-moderation/comment-moderation.js",
194
- "dist/node/runtime/node/setup-kubo-http-routers.js",
198
+ "dist/node/runtime/node/address-rewriter-db.js",
199
+ "dist/node/runtime/node/addresses-rewriter-proxy-server.js",
200
+ "node_modules/deep-is/index.js",
201
+ "node_modules/is2/node_modules/ip-regex/index.js",
202
+ "node_modules/is2/package.json",
203
+ "node_modules/is-url/index.js",
204
+ "node_modules/is2/index.js",
205
+ "node_modules/tcp-port-used/node_modules/ms/index.js",
206
+ "node_modules/tcp-port-used/node_modules/debug/src/common.js",
207
+ "node_modules/tcp-port-used/node_modules/debug/src/browser.js",
208
+ "node_modules/tcp-port-used/node_modules/debug/src/node.js",
209
+ "node_modules/tcp-port-used/node_modules/debug/src/index.js",
210
+ "node_modules/tcp-port-used/index.js",
211
+ "dist/node/runtime/node/setup-kubo-address-rewriter-and-http-router.js",
195
212
  "dist/node/publications/community-edit/community-edit.js",
196
213
  "dist/node/pkc/pkc.js",
197
214
  "dist/node/runtime/browser/native-functions.js",
@@ -199,10 +216,10 @@
199
216
  "dist/node/index.js"
200
217
  ]
201
218
  },
202
- "chunks/rpc-local-community-CTDbXkkP.js": {
219
+ "chunks/rpc-local-community-DpGUOcjz.js": {
203
220
  "isEntry": false,
204
221
  "imports": [
205
- "chunks/schema-D0I45iuK.js",
222
+ "chunks/schema-8LB1qzJT.js",
206
223
  "node:crypto",
207
224
  "node:url",
208
225
  "node:dns",
@@ -734,7 +751,7 @@
734
751
  "dist/node/community/rpc-local-community.js"
735
752
  ]
736
753
  },
737
- "chunks/schema-D0I45iuK.js": {
754
+ "chunks/schema-8LB1qzJT.js": {
738
755
  "isEntry": false,
739
756
  "imports": [
740
757
  "node:module",
@@ -1278,10 +1295,10 @@
1278
1295
  "dist/node/pubsub-messages/schema.js"
1279
1296
  ]
1280
1297
  },
1281
- "chunks/util-C0EAYvmS.js": {
1298
+ "chunks/util-f6LWGHSl.js": {
1282
1299
  "isEntry": false,
1283
1300
  "imports": [
1284
- "chunks/schema-D0I45iuK.js"
1301
+ "chunks/schema-8LB1qzJT.js"
1285
1302
  ],
1286
1303
  "dynamicImports": [],
1287
1304
  "inputs": [
@@ -1,5 +1,5 @@
1
- import { L as hideClassPrivateProps, R as ipnsNameToIpnsOverPubsubTopic, cr as logger_default, or as PKCError } from "./schema-D0I45iuK.js";
2
- import { n as getHeliaDebugContext, t as connectToPubsubPeers } from "./util-C0EAYvmS.js";
1
+ import { L as hideClassPrivateProps, R as ipnsNameToIpnsOverPubsubTopic, cr as logger_default, or as PKCError } from "./schema-8LB1qzJT.js";
2
+ import { n as getHeliaDebugContext, t as connectToPubsubPeers } from "./util-f6LWGHSl.js";
3
3
  import { CID } from "multiformats/cid";
4
4
  import { NotFoundError } from "@libp2p/interface";
5
5
  import { peerIdFromString } from "@libp2p/peer-id";
@@ -1,2 +1,2 @@
1
- import { n as createNewLocalCommunityDb, r as updateInstancePropsWithStartedCommunityOrDb, t as LocalCommunity } from "./local-community-CbMGlscJ.js";
1
+ import { n as createNewLocalCommunityDb, r as updateInstancePropsWithStartedCommunityOrDb, t as LocalCommunity } from "./local-community-V8zNa5f6.js";
2
2
  export { LocalCommunity, createNewLocalCommunityDb, updateInstancePropsWithStartedCommunityOrDb };
@@ -1,5 +1,5 @@
1
- import { $ as pubsubTopicToDhtKey, At as trackStartedCommunity, Bt as CommunityEditPublicationPubsubReservedFields, C as contentContainsMarkdownAudio, Ct as findUpdatingCommunity, Dr as __require, En as CommentUpdateSchema, F as getIpnsRecordInLocalKuboNode, Fn as CommentEditPubsubMessagePublicationSchema, Ft as untrackUpdatingCommunity, G as isLinkOfAudio, Gt as CommentModerationPubsubMessagePublicationSchema, In as CommentEditPubsubMessagePublicationWithFlexibleAuthorSchema, It as require_sha256, J as isLinkOfVideo, Jt as CommentModerationsTableRowSchema, K as isLinkOfImage, Kt as CommentModerationReservedFields, L as hideClassPrivateProps, Ln as CommentEditReservedFields, M as genToArray, Mt as trackUpdatingCommunity, N as getEquivalentCommunityAddresses, Nt as untrackStartedCommunity, O as derivePublicationFromChallengeRequest, On as CommentUpdateTableRowSchema, Or as __toESM, P as getErrorCodeFromMessage, Q as isStringDomain, R as ipnsNameToIpnsOverPubsubTopic, S as calculateStringSizeSameAsIpfsAddCidV0, T as contentContainsMarkdownVideos, Tr as __commonJSMin, Un as AuthorReservedFields, W as isLinkOfAnimatedImage, Xn as require_commonjs, Y as isLinkValid, Zn as require_retry, _t as timestamp, a as ChallengeRequestMessageSchema, at as removeNullUndefinedValues, b as areEquivalentCommunityAddresses, bt as findCommunityInRegistry, cr as logger_default, d as DecryptedChallengeRequestSchema, dt as retryKuboIpfsAddAndProvide, fn as VotePubsubMessagePublicationSchema, hn as VoteTablesRowSchema, ht as statMfsPathSafely, k as doesDomainAddressHaveCapitalLetter, kn as CommentsTableRowSchema, kt as syncCommunityRegistryEntry, lt as retryKuboBlockPutPinAndProvidePubsubTopic, mt as sleepUntilTimeoutOrAbort, nn as CommunityIpfsSchema, nt as removeBlocksFromKuboNode, or as PKCError, pn as VotePubsubReservedFields, q as isLinkOfMedia, r as ChallengeMessageSchema, rn as CommunitySignedPropertyNames, rt as removeMfsFilesSafely, s as ChallengeVerificationMessageSchema, sr as messages, t as ChallengeAnswerMessageSchema, u as DecryptedChallengeRequestPublicationSchema, vn as CommentIpfsSchema, w as contentContainsMarkdownImages, x as calculateIpfsCidV0, xr as ZodError, xt as findStartedCommunity, y as version_default, yn as CommentPubsubMessageReservedFields, yt as writeKuboFilesWithTimeout, zn as CommentEditsTableRowSchema } from "./schema-D0I45iuK.js";
2
- import { A as getDefaultCommunityDbConfig, At as cleanWireAuthor, Bt as encode, C as calculateExpectedSignatureSize, Ct as verifyCommentModeration, D as deriveCommentIpfsFromCommentTableRow, Dt as verifyCommunityEdit, E as deleteOldCommunityInWindows, Et as verifyCommunity, Gn as require_lodash_merge, Gt as getPublicKeyFromPrivateKey, H as POST_REPLIES_SORT_TYPES, Ht as getIpfsKeyFromPrivateKey, I as moveCommunityDbToDeletedDirectory, It as getCommunityNameFromWire, Kt as createSchemaRowParser, L as resolveDbPostsCidRefs, Lt as getCommunityPublicKeyFromWire, M as getThumbnailPropsOfLink, Mt as getAuthorNameFromWire, N as importSignerIntoKuboNode, O as deriveDbPosts, Ot as verifyVote, S as backupCommunityDb, St as verifyCommentIpfs, Tt as verifyCommentUpdate, U as REPLY_REPLIES_SORT_TYPES, Un as stringify, Ut as getPKCAddressFromPublicKey, V as POSTS_SORT_TYPES, W as TIMEFRAMES_TO_SECONDS, Wn as STORAGE_KEYS, Wt as getPKCAddressFromPublicKeySync, Y as iterateOverPageCidsToFindAllCids, _t as verifyChallengeAnswer, a as pkcJsChallenges, an as parseCommunityIpfsSchemaPassthroughWithPKCErrorIfItFails, b as encryptEd25519AesGcmPublicKeyBuffer, ct as signChallengeVerification, ft as signCommentUpdate, h as SignerWithPublicKeyAddress, hn as parseDecryptedChallengeAnswerWithPKCErrorIfItFails, i as getCommunityChallengeFromCommunityChallengeSettings, it as cleanUpBeforePublishing, k as deriveDbReplies, kt as buildRuntimeAuthor, l as MAX_FILE_SIZE_BYTES_FOR_COMMUNITY_IPFS, lt as signComment, mt as signCommunity, o as TrackedInstanceRegistry, ot as signChallengeMessage, pt as signCommentUpdateForChallengeVerification, r as getChallengeVerification, rn as parseCommunityEditOptionsSchemaWithPKCErrorIfItFails, s as LRUCache, t as RpcLocalCommunity, tt as pLimit, u as KeyvBetterSqlite3, ut as signCommentEdit, v as decryptEd25519AesGcmPublicKeyBuffer, vn as parseJsonWithPKCErrorIfFails, w as calculateInlineRepliesBudget, wt as verifyCommentPubsubMessage, x as BackupAbortError, xt as verifyCommentEdit, yt as verifyChallengeRequest, zt as decode } from "./rpc-local-community-CTDbXkkP.js";
1
+ import { $ as pubsubTopicToDhtKey, At as trackStartedCommunity, Bt as CommunityEditPublicationPubsubReservedFields, C as contentContainsMarkdownAudio, Ct as findUpdatingCommunity, Dr as __require, En as CommentUpdateSchema, F as getIpnsRecordInLocalKuboNode, Fn as CommentEditPubsubMessagePublicationSchema, Ft as untrackUpdatingCommunity, G as isLinkOfAudio, Gt as CommentModerationPubsubMessagePublicationSchema, In as CommentEditPubsubMessagePublicationWithFlexibleAuthorSchema, It as require_sha256, J as isLinkOfVideo, Jt as CommentModerationsTableRowSchema, K as isLinkOfImage, Kt as CommentModerationReservedFields, L as hideClassPrivateProps, Ln as CommentEditReservedFields, M as genToArray, Mt as trackUpdatingCommunity, N as getEquivalentCommunityAddresses, Nt as untrackStartedCommunity, O as derivePublicationFromChallengeRequest, On as CommentUpdateTableRowSchema, Or as __toESM, P as getErrorCodeFromMessage, Q as isStringDomain, R as ipnsNameToIpnsOverPubsubTopic, Rt as pTimeout, S as calculateStringSizeSameAsIpfsAddCidV0, T as contentContainsMarkdownVideos, Tr as __commonJSMin, Un as AuthorReservedFields, W as isLinkOfAnimatedImage, Xn as require_commonjs, Y as isLinkValid, Zn as require_retry, _t as timestamp, a as ChallengeRequestMessageSchema, at as removeNullUndefinedValues, b as areEquivalentCommunityAddresses, bt as findCommunityInRegistry, cr as logger_default, d as DecryptedChallengeRequestSchema, dt as retryKuboIpfsAddAndProvide, fn as VotePubsubMessagePublicationSchema, hn as VoteTablesRowSchema, ht as statMfsPathSafely, k as doesDomainAddressHaveCapitalLetter, kn as CommentsTableRowSchema, kt as syncCommunityRegistryEntry, lt as retryKuboBlockPutPinAndProvidePubsubTopic, mt as sleepUntilTimeoutOrAbort, nn as CommunityIpfsSchema, nt as removeBlocksFromKuboNode, or as PKCError, pn as VotePubsubReservedFields, q as isLinkOfMedia, r as ChallengeMessageSchema, rn as CommunitySignedPropertyNames, rt as removeMfsFilesSafely, s as ChallengeVerificationMessageSchema, sr as messages, t as ChallengeAnswerMessageSchema, u as DecryptedChallengeRequestPublicationSchema, vn as CommentIpfsSchema, w as contentContainsMarkdownImages, x as calculateIpfsCidV0, xr as ZodError, xt as findStartedCommunity, y as version_default, yn as CommentPubsubMessageReservedFields, yt as writeKuboFilesWithTimeout, zn as CommentEditsTableRowSchema } from "./schema-8LB1qzJT.js";
2
+ import { A as getDefaultCommunityDbConfig, At as cleanWireAuthor, Bt as encode, C as calculateExpectedSignatureSize, Ct as verifyCommentModeration, D as deriveCommentIpfsFromCommentTableRow, Dt as verifyCommunityEdit, E as deleteOldCommunityInWindows, Et as verifyCommunity, Gn as require_lodash_merge, Gt as getPublicKeyFromPrivateKey, H as POST_REPLIES_SORT_TYPES, Ht as getIpfsKeyFromPrivateKey, I as moveCommunityDbToDeletedDirectory, It as getCommunityNameFromWire, Kt as createSchemaRowParser, L as resolveDbPostsCidRefs, Lt as getCommunityPublicKeyFromWire, M as getThumbnailPropsOfLink, Mt as getAuthorNameFromWire, N as importSignerIntoKuboNode, O as deriveDbPosts, Ot as verifyVote, S as backupCommunityDb, St as verifyCommentIpfs, Tt as verifyCommentUpdate, U as REPLY_REPLIES_SORT_TYPES, Un as stringify, Ut as getPKCAddressFromPublicKey, V as POSTS_SORT_TYPES, W as TIMEFRAMES_TO_SECONDS, Wn as STORAGE_KEYS, Wt as getPKCAddressFromPublicKeySync, Y as iterateOverPageCidsToFindAllCids, _t as verifyChallengeAnswer, a as pkcJsChallenges, an as parseCommunityIpfsSchemaPassthroughWithPKCErrorIfItFails, b as encryptEd25519AesGcmPublicKeyBuffer, ct as signChallengeVerification, ft as signCommentUpdate, h as SignerWithPublicKeyAddress, hn as parseDecryptedChallengeAnswerWithPKCErrorIfItFails, i as getCommunityChallengeFromCommunityChallengeSettings, it as cleanUpBeforePublishing, k as deriveDbReplies, kt as buildRuntimeAuthor, l as MAX_FILE_SIZE_BYTES_FOR_COMMUNITY_IPFS, lt as signComment, mt as signCommunity, o as TrackedInstanceRegistry, ot as signChallengeMessage, pt as signCommentUpdateForChallengeVerification, r as getChallengeVerification, rn as parseCommunityEditOptionsSchemaWithPKCErrorIfItFails, s as LRUCache, t as RpcLocalCommunity, tt as pLimit, u as KeyvBetterSqlite3, ut as signCommentEdit, v as decryptEd25519AesGcmPublicKeyBuffer, vn as parseJsonWithPKCErrorIfFails, w as calculateInlineRepliesBudget, wt as verifyCommentPubsubMessage, x as BackupAbortError, xt as verifyCommentEdit, yt as verifyChallengeRequest, zt as decode } from "./rpc-local-community-DpGUOcjz.js";
3
3
  import { randomFillSync, randomUUID } from "node:crypto";
4
4
  import { fileURLToPath, pathToFileURL } from "node:url";
5
5
  import path from "node:path";
@@ -277,6 +277,15 @@ async function cleanUpIpfsRepoRarely(community, force = false) {
277
277
  if (Math.random() < 1e-5 || force) {
278
278
  let gcCids = 0;
279
279
  const kuboRpc = community._clientsManager.getDefaultKuboRpcClient();
280
+ try {
281
+ await pTimeout(kuboRpc._client.files.flush("/"), {
282
+ milliseconds: 15e3,
283
+ message: "Timed out flushing MFS root before repo.gc"
284
+ });
285
+ } catch (e) {
286
+ log.error("Skipping repo.gc: failed to flush MFS root beforehand (ipfs/kubo#10842 safeguard)", e);
287
+ return;
288
+ }
280
289
  try {
281
290
  for await (const res of kuboRpc._client.repo.gc({ quiet: true })) if (res.cid) gcCids++;
282
291
  else log.error("Failed to GC ipfs repo due to error", res.err);