@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,29 @@
1
+ // Enables Node's on-disk V8 compile cache (issue #120). Caching the compiled bytecode
2
+ // recovers the parse/compile portion of import time (~29% of the post-lazy-load cost) on
3
+ // every run after the first.
4
+ //
5
+ // V8 only caches modules compiled AFTER the cache is enabled — and Node's ESM loader
6
+ // compiles the entire static import graph before any module body runs. So calling this
7
+ // from inside index.ts would never cover the package's own graph; it must be called from
8
+ // a thin bootstrap entry (index-with-compile-cache.ts) BEFORE the real entry is
9
+ // dynamic-imported.
10
+ //
11
+ // Designed to be a quiet optimization, never fatal:
12
+ // - no-op on Node < 22.8 (enableCompileCache doesn't exist there; engines allows >= 22)
13
+ // - cache dir is Node's default (os.tmpdir()/node-compile-cache), overridable with the
14
+ // NODE_COMPILE_CACHE env var; consumers can opt out with NODE_DISABLE_COMPILE_CACHE=1
15
+ // - enableCompileCache itself reports failures via its return value instead of throwing,
16
+ // but we still guard with try/catch in case of exotic runtimes
17
+ // Default import, not a named import: named imports of builtins are validated at link
18
+ // time, so `import { enableCompileCache }` would throw on Node 22.0-22.7.
19
+ import nodeModule from "node:module";
20
+ export function enableNodeCompileCache() {
21
+ try {
22
+ if (typeof nodeModule.enableCompileCache === "function")
23
+ nodeModule.enableCompileCache();
24
+ }
25
+ catch {
26
+ // compile cache is an optimization only — never let it break startup
27
+ }
28
+ }
29
+ //# sourceMappingURL=compile-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile-cache.js","sourceRoot":"","sources":["../../../../src/runtime/browser/compile-cache.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,yFAAyF;AACzF,6BAA6B;AAC7B,EAAE;AACF,qFAAqF;AACrF,uFAAuF;AACvF,yFAAyF;AACzF,gFAAgF;AAChF,oBAAoB;AACpB,EAAE;AACF,oDAAoD;AACpD,wFAAwF;AACxF,uFAAuF;AACvF,wFAAwF;AACxF,yFAAyF;AACzF,iEAAiE;AAEjE,sFAAsF;AACtF,0EAA0E;AAC1E,OAAO,UAAU,MAAM,aAAa,CAAC;AAErC,MAAM,UAAU,sBAAsB;IAClC,IAAI,CAAC;QACD,IAAI,OAAO,UAAU,CAAC,kBAAkB,KAAK,UAAU;YAAE,UAAU,CAAC,kBAAkB,EAAE,CAAC;IAC7F,CAAC;IAAC,MAAM,CAAC;QACL,qEAAqE;IACzE,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { PKC } from "../../pkc/pkc.js";
2
+ export declare function setupKuboHttpRouters(pkc: PKC): Promise<void>;
@@ -1,9 +1,7 @@
1
1
  import retry from "retry";
2
- import { AddressesRewriterProxyServer } from "./addresses-rewriter-proxy-server.js";
3
2
  import Logger from "../../logger.js";
4
3
  import { PKCError } from "../../pkc-error.js";
5
4
  import * as remeda from "remeda";
6
- import tcpPortUsed from "tcp-port-used";
7
5
  function _mergeRouterConfigs(existingConfig, newConfig) {
8
6
  if (!existingConfig?.Routers)
9
7
  return newConfig;
@@ -107,85 +105,21 @@ async function _setHttpRouterOptionsOnKuboNode(kuboClient, routingValue) {
107
105
  }
108
106
  }
109
107
  }
110
- async function _getStartedProxyUrl(pkc, httpRouterUrl) {
108
+ export async function setupKuboHttpRouters(pkc) {
111
109
  if (pkc.destroyed)
112
- return undefined;
113
- const mappingKeyName = `httprouter_proxy_${httpRouterUrl}`;
114
- try {
115
- const urlOfProxyOfHttpRouter = await pkc._storage.getItem(mappingKeyName);
116
- if (pkc.destroyed)
117
- return undefined;
118
- if (urlOfProxyOfHttpRouter) {
119
- const proxyHttpUrl = new URL(urlOfProxyOfHttpRouter);
120
- if (await tcpPortUsed.check(Number(proxyHttpUrl.port), "127.0.0.1"))
121
- return urlOfProxyOfHttpRouter;
122
- if (pkc.destroyed)
123
- return undefined;
124
- await pkc._storage.removeItem(mappingKeyName);
125
- }
126
- return undefined;
127
- }
128
- catch (error) {
129
- if (pkc.destroyed && error instanceof Error && error.message.includes("database connection is not open")) {
130
- return undefined;
131
- }
132
- throw error;
133
- }
134
- }
135
- export async function setupKuboAddressesRewriterAndHttpRouters(pkc) {
136
- if (pkc.destroyed) {
137
- return {
138
- destroy: async () => { }
139
- };
140
- }
110
+ return;
141
111
  if (!Array.isArray(pkc.kuboRpcClientsOptions) || pkc.kuboRpcClientsOptions.length <= 0)
142
112
  throw Error("need ipfs http client to be defined");
143
113
  if (!Array.isArray(pkc.httpRoutersOptions) || pkc.httpRoutersOptions.length <= 0)
144
114
  throw Error("Need http router options to defined");
145
- const log = Logger("pkc-js:node:setupKuboAddressesRewriterAndHttpRouters");
146
- // Set up http proxies first to rewrite addresses
147
- const httpRouterProxyUrls = [];
148
- const proxyServers = [];
149
- let addressesRewriterStartPort = 19575; // use port 19575 as first port, looks like IPRTR (IPFS ROUTER)
150
- for (const httpRouter of pkc.httpRoutersOptions) {
151
- if (pkc.destroyed)
152
- break;
153
- const startedProxyUrl = await _getStartedProxyUrl(pkc, httpRouter);
154
- if (startedProxyUrl) {
155
- httpRouterProxyUrls.push(startedProxyUrl);
156
- continue;
157
- }
158
- // launch the proxy server
159
- let port = addressesRewriterStartPort;
160
- const hostname = "127.0.0.1";
161
- while (await tcpPortUsed.check(port, hostname))
162
- // keep increasing port till we find an empty port
163
- port++;
164
- const addressesRewriterProxyServer = new AddressesRewriterProxyServer({
165
- kuboClients: Object.values(pkc.clients.kuboRpcClients).map((kubo) => kubo._client),
166
- port,
167
- hostname,
168
- proxyTargetUrl: httpRouter,
169
- pkc
170
- });
171
- await addressesRewriterProxyServer.listen();
172
- if (pkc.destroyed) {
173
- await addressesRewriterProxyServer.destroy();
174
- break;
175
- }
176
- proxyServers.push(addressesRewriterProxyServer);
177
- // save the proxy urls to use them later
178
- const httpRouterProxyUrl = `http://${hostname}:${port}`;
179
- httpRouterProxyUrls.push(httpRouterProxyUrl);
180
- }
181
- httpRouterProxyUrls.sort(); // make sure it's always the same order
182
- // Set up http routers to use proxies
115
+ const httpRouterUrls = [...pkc.httpRoutersOptions].sort(); // make sure it's always the same order
116
+ // Set up http routers directly on the kubo nodes
183
117
  const kuboClients = pkc.clients.kuboRpcClients;
184
118
  const httpRoutersConfig = {
185
119
  HttpRoutersParallel: { Type: "parallel", Parameters: { Routers: [] } },
186
120
  HttpRouterNotSupported: { Type: "http", Parameters: { Endpoint: "http://kubohttprouternotsupported" } }
187
121
  };
188
- for (const [i, httpRouterUrl] of httpRouterProxyUrls.entries()) {
122
+ for (const [i, httpRouterUrl] of httpRouterUrls.entries()) {
189
123
  const RouterName = `HttpRouter${i + 1}`;
190
124
  httpRoutersConfig[RouterName] = {
191
125
  Type: "http",
@@ -215,6 +149,10 @@ export async function setupKuboAddressesRewriterAndHttpRouters(pkc) {
215
149
  const settingOptionRetryOption = retry.operation({ forever: true, factor: 2 });
216
150
  const setHttpRouterOnAllNodes = new Promise((resolve) => {
217
151
  settingOptionRetryOption.attempt(async (curAttempt) => {
152
+ if (pkc.destroyed) {
153
+ resolve(1);
154
+ return;
155
+ }
218
156
  for (const kuboClient of Object.values(kuboClients)) {
219
157
  try {
220
158
  await _setHttpRouterOptionsOnKuboNode(kuboClient, routingValue);
@@ -229,12 +167,5 @@ export async function setupKuboAddressesRewriterAndHttpRouters(pkc) {
229
167
  });
230
168
  await setHttpRouterOnAllNodes;
231
169
  settingOptionRetryOption.stop();
232
- return {
233
- destroy: async () => {
234
- for (const proxyServer of proxyServers) {
235
- await proxyServer.destroy();
236
- }
237
- }
238
- };
239
170
  }
240
- //# sourceMappingURL=setup-kubo-address-rewriter-and-http-router.js.map
171
+ //# sourceMappingURL=setup-kubo-http-routers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-kubo-http-routers.js","sourceRoot":"","sources":["../../../../src/runtime/browser/setup-kubo-http-routers.ts"],"names":[],"mappings":"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"}