@pkcprotocol/pkc-js 0.0.93 → 0.0.94
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/base-client-manager.d.ts +1 -0
- package/dist/browser/clients/base-client-manager.js +7 -1
- package/dist/browser/clients/base-client-manager.js.map +1 -1
- package/dist/browser/clients/rpc-client/pkc-rpc-client.d.ts +1 -0
- package/dist/browser/clients/rpc-client/pkc-rpc-client.js +27 -1
- package/dist/browser/clients/rpc-client/pkc-rpc-client.js.map +1 -1
- package/dist/browser/community/community-client-manager.d.ts +16 -0
- package/dist/browser/community/community-client-manager.js +307 -31
- package/dist/browser/community/community-client-manager.js.map +1 -1
- package/dist/browser/community/remote-community.js +7 -0
- package/dist/browser/community/remote-community.js.map +1 -1
- package/dist/browser/generated-version.d.ts +1 -1
- package/dist/browser/generated-version.js +1 -1
- package/dist/browser/helia/helia-for-pkc.js +56 -1
- package/dist/browser/helia/helia-for-pkc.js.map +1 -1
- package/dist/browser/helia/types.d.ts +16 -0
- package/dist/browser/helia/util.d.ts +1 -0
- package/dist/browser/helia/util.js +21 -1
- package/dist/browser/helia/util.js.map +1 -1
- package/dist/browser/rpc/src/index.d.ts +2 -0
- package/dist/browser/rpc/src/index.js +52 -19
- package/dist/browser/rpc/src/index.js.map +1 -1
- package/dist/browser/test/test-util.d.ts +353 -5
- package/dist/browser/test/test-util.js +88 -5
- package/dist/browser/test/test-util.js.map +1 -1
- package/dist/browser/util.d.ts +7 -0
- package/dist/browser/util.js +21 -11
- package/dist/browser/util.js.map +1 -1
- package/dist/bundled/bundle-manifest.json +25 -25
- package/dist/bundled/chunks/{helia-for-pkc-C8tOPlIj.js → helia-for-pkc-Bj-Zb4JN.js} +70 -33
- package/dist/bundled/chunks/{local-community-DYEWq5rq.js → local-community-BrMLMEmt.js} +1 -1
- package/dist/bundled/chunks/{local-community-DgbMuVAA.js → local-community-Ce7303vY.js} +30 -30
- package/dist/bundled/chunks/{node-BrLiC0qX.js → node-C37nDOa8.js} +21 -6
- package/dist/bundled/chunks/{rpc-local-community-DOSee621.js → rpc-local-community-Dr_-Lb8I.js} +151 -18
- package/dist/bundled/chunks/{schema-HH2zeH-j.js → schema-5-rYJ-bC.js} +29 -12
- package/dist/bundled/chunks/{util-DSIDv1Cb.js → util-_-fNQNIV.js} +11 -3
- package/dist/bundled/index.js +1 -1
- package/dist/bundled/rpc/src/index.js +43 -22
- package/dist/node/clients/base-client-manager.d.ts +1 -0
- package/dist/node/clients/base-client-manager.js +7 -1
- package/dist/node/clients/base-client-manager.js.map +1 -1
- package/dist/node/clients/rpc-client/pkc-rpc-client.d.ts +1 -0
- package/dist/node/clients/rpc-client/pkc-rpc-client.js +27 -1
- package/dist/node/clients/rpc-client/pkc-rpc-client.js.map +1 -1
- package/dist/node/community/community-client-manager.d.ts +16 -0
- package/dist/node/community/community-client-manager.js +307 -31
- package/dist/node/community/community-client-manager.js.map +1 -1
- package/dist/node/community/remote-community.js +7 -0
- package/dist/node/community/remote-community.js.map +1 -1
- package/dist/node/generated-version.d.ts +1 -1
- package/dist/node/generated-version.js +1 -1
- package/dist/node/helia/helia-for-pkc.js +56 -1
- package/dist/node/helia/helia-for-pkc.js.map +1 -1
- package/dist/node/helia/types.d.ts +16 -0
- package/dist/node/helia/util.d.ts +1 -0
- package/dist/node/helia/util.js +21 -1
- package/dist/node/helia/util.js.map +1 -1
- package/dist/node/rpc/src/index.d.ts +2 -0
- package/dist/node/rpc/src/index.js +52 -19
- package/dist/node/rpc/src/index.js.map +1 -1
- package/dist/node/test/test-util.d.ts +353 -5
- package/dist/node/test/test-util.js +88 -5
- package/dist/node/test/test-util.js.map +1 -1
- package/dist/node/util.d.ts +7 -0
- package/dist/node/util.js +21 -11
- package/dist/node/util.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-2rV9d50f.js";
|
|
2
|
-
import {
|
|
3
|
-
import { a as fetchBlockWithStalledSessionFailover, c as selectBitswapSessionSeedPeers, i as directFetchIpnsRecordFromProviders, n as cacheIpnsRecordInPubsubLocalStore, o as getHeliaDebugContext, r as connectToPubsubPeers, s as readFreshCachedIpnsRecordFromPubsubLocalStore } from "./util-
|
|
2
|
+
import { B as ipnsNameToIpnsOverPubsubTopic, R as hideClassPrivateProps, Sr as PKCError, wr as logger_default, x as binaryKeyToPubsubTopic } from "./schema-5-rYJ-bC.js";
|
|
3
|
+
import { a as fetchBlockWithStalledSessionFailover, c as selectBitswapSessionSeedPeers, i as directFetchIpnsRecordFromProviders, n as cacheIpnsRecordInPubsubLocalStore, o as getHeliaDebugContext, r as connectToPubsubPeers, s as readFreshCachedIpnsRecordFromPubsubLocalStore } from "./util-_-fNQNIV.js";
|
|
4
4
|
import { t as map } from "./src-Cpx2Sts8.js";
|
|
5
5
|
import { t as parallelBatch } from "./src-DKntVmyX.js";
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
7
7
|
import fsp, { rename, writeFile } from "node:fs/promises";
|
|
8
|
-
import
|
|
9
|
-
import path
|
|
8
|
+
import Path, { basename, dirname, join } from "node:path";
|
|
9
|
+
import path from "path";
|
|
10
10
|
import { CID } from "multiformats/cid";
|
|
11
11
|
import { peerIdFromString } from "@libp2p/peer-id";
|
|
12
12
|
import * as Digest from "multiformats/hashes/digest";
|
|
@@ -149,7 +149,7 @@ var require_path = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
149
149
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
150
150
|
exports.convertPosixPathToPattern = exports.convertWindowsPathToPattern = exports.convertPathToPattern = exports.escapePosixPath = exports.escapeWindowsPath = exports.escape = exports.removeLeadingDotSegment = exports.makeAbsolute = exports.unixify = void 0;
|
|
151
151
|
const os$1 = __require("os");
|
|
152
|
-
const path$
|
|
152
|
+
const path$9 = __require("path");
|
|
153
153
|
const IS_WINDOWS_PLATFORM = os$1.platform() === "win32";
|
|
154
154
|
const LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2;
|
|
155
155
|
/**
|
|
@@ -178,7 +178,7 @@ var require_path = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
178
178
|
}
|
|
179
179
|
exports.unixify = unixify;
|
|
180
180
|
function makeAbsolute(cwd, filepath) {
|
|
181
|
-
return path$
|
|
181
|
+
return path$9.resolve(cwd, filepath);
|
|
182
182
|
}
|
|
183
183
|
exports.makeAbsolute = makeAbsolute;
|
|
184
184
|
function removeLeadingDotSegment(entry) {
|
|
@@ -1430,7 +1430,7 @@ var require_braces = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
1430
1430
|
//#endregion
|
|
1431
1431
|
//#region node_modules/picomatch/lib/constants.js
|
|
1432
1432
|
var require_constants$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
1433
|
-
const path$
|
|
1433
|
+
const path$8 = __require("path");
|
|
1434
1434
|
const WIN_SLASH = "\\\\/";
|
|
1435
1435
|
const WIN_NO_SLASH = `[^${WIN_SLASH}]`;
|
|
1436
1436
|
const DEFAULT_MAX_EXTGLOB_RECURSION = 0;
|
|
@@ -1555,7 +1555,7 @@ var require_constants$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
1555
1555
|
CHAR_UNDERSCORE: 95,
|
|
1556
1556
|
CHAR_VERTICAL_LINE: 124,
|
|
1557
1557
|
CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279,
|
|
1558
|
-
SEP: path$
|
|
1558
|
+
SEP: path$8.sep,
|
|
1559
1559
|
/**
|
|
1560
1560
|
* Create EXTGLOB_CHARS
|
|
1561
1561
|
*/
|
|
@@ -1599,7 +1599,7 @@ var require_constants$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
1599
1599
|
//#endregion
|
|
1600
1600
|
//#region node_modules/picomatch/lib/utils.js
|
|
1601
1601
|
var require_utils$2 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
1602
|
-
const path$
|
|
1602
|
+
const path$7 = __require("path");
|
|
1603
1603
|
const win32 = process.platform === "win32";
|
|
1604
1604
|
const { REGEX_BACKSLASH, REGEX_REMOVE_BACKSLASH, REGEX_SPECIAL_CHARS, REGEX_SPECIAL_CHARS_GLOBAL } = require_constants$1();
|
|
1605
1605
|
exports.isObject = (val) => val !== null && typeof val === "object" && !Array.isArray(val);
|
|
@@ -1619,7 +1619,7 @@ var require_utils$2 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
1619
1619
|
};
|
|
1620
1620
|
exports.isWindows = (options) => {
|
|
1621
1621
|
if (options && typeof options.windows === "boolean") return options.windows;
|
|
1622
|
-
return win32 === true || path$
|
|
1622
|
+
return win32 === true || path$7.sep === "\\";
|
|
1623
1623
|
};
|
|
1624
1624
|
exports.escapeLast = (input, char, lastIdx) => {
|
|
1625
1625
|
const idx = input.lastIndexOf(char, lastIdx);
|
|
@@ -2989,7 +2989,7 @@ var require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
2989
2989
|
//#endregion
|
|
2990
2990
|
//#region node_modules/picomatch/lib/picomatch.js
|
|
2991
2991
|
var require_picomatch$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
2992
|
-
const path$
|
|
2992
|
+
const path$6 = __require("path");
|
|
2993
2993
|
const scan = require_scan();
|
|
2994
2994
|
const parse = require_parse();
|
|
2995
2995
|
const utils = require_utils$2();
|
|
@@ -3128,7 +3128,7 @@ var require_picomatch$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
3128
3128
|
* @api public
|
|
3129
3129
|
*/
|
|
3130
3130
|
picomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {
|
|
3131
|
-
return (glob instanceof RegExp ? glob : picomatch.makeRe(glob, options)).test(path$
|
|
3131
|
+
return (glob instanceof RegExp ? glob : picomatch.makeRe(glob, options)).test(path$6.basename(input));
|
|
3132
3132
|
};
|
|
3133
3133
|
/**
|
|
3134
3134
|
* Returns true if **any** of the given glob `patterns` match the specified `string`.
|
|
@@ -3683,7 +3683,7 @@ var require_micromatch = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
3683
3683
|
var require_pattern = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
3684
3684
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3685
3685
|
exports.isAbsolute = exports.partitionAbsoluteAndRelative = exports.removeDuplicateSlashes = exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0;
|
|
3686
|
-
const path$
|
|
3686
|
+
const path$5 = __require("path");
|
|
3687
3687
|
const globParent = require_glob_parent();
|
|
3688
3688
|
const micromatch = require_micromatch();
|
|
3689
3689
|
const GLOBSTAR = "**";
|
|
@@ -3791,7 +3791,7 @@ var require_pattern = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
3791
3791
|
}
|
|
3792
3792
|
exports.endsWithSlashGlobStar = endsWithSlashGlobStar;
|
|
3793
3793
|
function isAffectDepthOfReadingPattern(pattern) {
|
|
3794
|
-
const basename = path$
|
|
3794
|
+
const basename = path$5.basename(pattern);
|
|
3795
3795
|
return endsWithSlashGlobStar(pattern) || isStaticPattern(basename);
|
|
3796
3796
|
}
|
|
3797
3797
|
exports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern;
|
|
@@ -3865,7 +3865,7 @@ var require_pattern = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
3865
3865
|
}
|
|
3866
3866
|
exports.partitionAbsoluteAndRelative = partitionAbsoluteAndRelative;
|
|
3867
3867
|
function isAbsolute(pattern) {
|
|
3868
|
-
return path$
|
|
3868
|
+
return path$5.isAbsolute(pattern);
|
|
3869
3869
|
}
|
|
3870
3870
|
exports.isAbsolute = isAbsolute;
|
|
3871
3871
|
}));
|
|
@@ -4493,7 +4493,7 @@ var require_fs = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
4493
4493
|
//#region node_modules/@nodelib/fs.scandir/out/settings.js
|
|
4494
4494
|
var require_settings$2 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
4495
4495
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4496
|
-
const path$
|
|
4496
|
+
const path$4 = __require("path");
|
|
4497
4497
|
const fsStat = require_out$3();
|
|
4498
4498
|
const fs = require_fs();
|
|
4499
4499
|
var Settings = class {
|
|
@@ -4501,7 +4501,7 @@ var require_settings$2 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
4501
4501
|
this._options = _options;
|
|
4502
4502
|
this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false);
|
|
4503
4503
|
this.fs = fs.createFileSystemAdapter(this._options.fs);
|
|
4504
|
-
this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path$
|
|
4504
|
+
this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path$4.sep);
|
|
4505
4505
|
this.stats = this._getValue(this._options.stats, false);
|
|
4506
4506
|
this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);
|
|
4507
4507
|
this.fsStatSettings = new fsStat.Settings({
|
|
@@ -5095,7 +5095,7 @@ var require_sync$2 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
5095
5095
|
//#region node_modules/@nodelib/fs.walk/out/settings.js
|
|
5096
5096
|
var require_settings$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
5097
5097
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5098
|
-
const path$
|
|
5098
|
+
const path$3 = __require("path");
|
|
5099
5099
|
const fsScandir = require_out$2();
|
|
5100
5100
|
var Settings = class {
|
|
5101
5101
|
constructor(_options = {}) {
|
|
@@ -5105,7 +5105,7 @@ var require_settings$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
5105
5105
|
this.deepFilter = this._getValue(this._options.deepFilter, null);
|
|
5106
5106
|
this.entryFilter = this._getValue(this._options.entryFilter, null);
|
|
5107
5107
|
this.errorFilter = this._getValue(this._options.errorFilter, null);
|
|
5108
|
-
this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path$
|
|
5108
|
+
this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path$3.sep);
|
|
5109
5109
|
this.fsScandirSettings = new fsScandir.Settings({
|
|
5110
5110
|
followSymbolicLinks: this._options.followSymbolicLinks,
|
|
5111
5111
|
fs: this._options.fs,
|
|
@@ -5157,7 +5157,7 @@ var require_out$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
5157
5157
|
//#region node_modules/fast-glob/out/readers/reader.js
|
|
5158
5158
|
var require_reader = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
5159
5159
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5160
|
-
const path$
|
|
5160
|
+
const path$2 = __require("path");
|
|
5161
5161
|
const fsStat = require_out$3();
|
|
5162
5162
|
const utils = require_utils$1();
|
|
5163
5163
|
var Reader = class {
|
|
@@ -5170,7 +5170,7 @@ var require_reader = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
5170
5170
|
});
|
|
5171
5171
|
}
|
|
5172
5172
|
_getFullEntryPath(filepath) {
|
|
5173
|
-
return path$
|
|
5173
|
+
return path$2.resolve(this._settings.cwd, filepath);
|
|
5174
5174
|
}
|
|
5175
5175
|
_makeEntry(stats, pattern) {
|
|
5176
5176
|
const entry = {
|
|
@@ -5505,7 +5505,7 @@ var require_entry = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
5505
5505
|
//#region node_modules/fast-glob/out/providers/provider.js
|
|
5506
5506
|
var require_provider = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
5507
5507
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5508
|
-
const path$
|
|
5508
|
+
const path$1 = __require("path");
|
|
5509
5509
|
const deep_1 = require_deep();
|
|
5510
5510
|
const entry_1 = require_entry$1();
|
|
5511
5511
|
const error_1 = require_error();
|
|
@@ -5519,7 +5519,7 @@ var require_provider = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
5519
5519
|
this.entryTransformer = new entry_2.default(this._settings);
|
|
5520
5520
|
}
|
|
5521
5521
|
_getRootDirectory(task) {
|
|
5522
|
-
return path$
|
|
5522
|
+
return path$1.resolve(this._settings.cwd, task.base);
|
|
5523
5523
|
}
|
|
5524
5524
|
_getReaderOptions(task) {
|
|
5525
5525
|
const basePath = task.base === "." ? "" : task.base;
|
|
@@ -5850,7 +5850,7 @@ var import_out = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((export
|
|
|
5850
5850
|
* Async iterable filename pattern matcher
|
|
5851
5851
|
*/
|
|
5852
5852
|
async function* glob(dir, pattern, options = {}) {
|
|
5853
|
-
const absoluteDir =
|
|
5853
|
+
const absoluteDir = Path.resolve(dir);
|
|
5854
5854
|
const stats = await fsp.stat(absoluteDir);
|
|
5855
5855
|
for await (const entry of import_out.default.stream(pattern, {
|
|
5856
5856
|
...options,
|
|
@@ -6020,7 +6020,7 @@ var NextToLast = class {
|
|
|
6020
6020
|
};
|
|
6021
6021
|
}
|
|
6022
6022
|
decode(str) {
|
|
6023
|
-
let fileName =
|
|
6023
|
+
let fileName = Path.basename(str);
|
|
6024
6024
|
if (fileName.endsWith(this.extension)) fileName = fileName.substring(0, fileName.length - this.extension.length);
|
|
6025
6025
|
return CID.decode(this.base.decoder.decode(fileName));
|
|
6026
6026
|
}
|
|
@@ -6046,7 +6046,7 @@ var NextToLast = class {
|
|
|
6046
6046
|
async function writeFile$1(file, contents, options) {
|
|
6047
6047
|
try {
|
|
6048
6048
|
options?.signal?.throwIfAborted();
|
|
6049
|
-
await raceSignal(fsp.mkdir(
|
|
6049
|
+
await raceSignal(fsp.mkdir(Path.dirname(file), { recursive: true }), options?.signal);
|
|
6050
6050
|
const writer = new Writer(file);
|
|
6051
6051
|
options?.signal?.throwIfAborted();
|
|
6052
6052
|
await writer.write(contents);
|
|
@@ -6071,7 +6071,7 @@ var FsBlockstore = class {
|
|
|
6071
6071
|
deleteManyConcurrency;
|
|
6072
6072
|
shardingStrategy;
|
|
6073
6073
|
constructor(location, init = {}) {
|
|
6074
|
-
this.path =
|
|
6074
|
+
this.path = Path.resolve(location);
|
|
6075
6075
|
this.createIfMissing = init.createIfMissing ?? true;
|
|
6076
6076
|
this.errorIfExists = init.errorIfExists ?? false;
|
|
6077
6077
|
this.deleteManyConcurrency = init.deleteManyConcurrency ?? 50;
|
|
@@ -6097,7 +6097,7 @@ var FsBlockstore = class {
|
|
|
6097
6097
|
async put(key, val, options) {
|
|
6098
6098
|
const { dir, file } = this.shardingStrategy.encode(key);
|
|
6099
6099
|
try {
|
|
6100
|
-
await writeFile$1(
|
|
6100
|
+
await writeFile$1(Path.join(this.path, dir, file), val, options);
|
|
6101
6101
|
return key;
|
|
6102
6102
|
} catch (err) {
|
|
6103
6103
|
throw new PutFailedError(String(err));
|
|
@@ -6116,7 +6116,7 @@ var FsBlockstore = class {
|
|
|
6116
6116
|
let handle;
|
|
6117
6117
|
try {
|
|
6118
6118
|
options?.signal?.throwIfAborted();
|
|
6119
|
-
handle = await raceSignal(fsp.open(
|
|
6119
|
+
handle = await raceSignal(fsp.open(Path.join(this.path, dir, file)), options?.signal);
|
|
6120
6120
|
yield* handle.createReadStream();
|
|
6121
6121
|
} catch (err) {
|
|
6122
6122
|
if (handle != null) await raceSignal(handle.close(), options?.signal);
|
|
@@ -6137,7 +6137,7 @@ var FsBlockstore = class {
|
|
|
6137
6137
|
const { dir, file } = this.shardingStrategy.encode(key);
|
|
6138
6138
|
try {
|
|
6139
6139
|
options?.signal?.throwIfAborted();
|
|
6140
|
-
await raceSignal(fsp.unlink(
|
|
6140
|
+
await raceSignal(fsp.unlink(Path.join(this.path, dir, file)), options?.signal);
|
|
6141
6141
|
} catch (err) {
|
|
6142
6142
|
if (err.code === "ENOENT") return;
|
|
6143
6143
|
throw new DeleteFailedError(String(err));
|
|
@@ -6155,14 +6155,14 @@ var FsBlockstore = class {
|
|
|
6155
6155
|
const { dir, file } = this.shardingStrategy.encode(key);
|
|
6156
6156
|
try {
|
|
6157
6157
|
options?.signal?.throwIfAborted();
|
|
6158
|
-
await raceSignal(fsp.access(
|
|
6158
|
+
await raceSignal(fsp.access(Path.join(this.path, dir, file)), options?.signal);
|
|
6159
6159
|
} catch (err) {
|
|
6160
6160
|
return false;
|
|
6161
6161
|
}
|
|
6162
6162
|
return true;
|
|
6163
6163
|
}
|
|
6164
6164
|
async *getAll(options) {
|
|
6165
|
-
const pattern = `**/*${this.shardingStrategy.extension}`.split(
|
|
6165
|
+
const pattern = `**/*${this.shardingStrategy.extension}`.split(Path.sep).join("/");
|
|
6166
6166
|
const files = glob(this.path, pattern, { absolute: true });
|
|
6167
6167
|
for await (const file of files) try {
|
|
6168
6168
|
options?.signal?.throwIfAborted();
|
|
@@ -6214,7 +6214,7 @@ async function createBlockstoreForLibp2pJsClient({ dataPath, key }) {
|
|
|
6214
6214
|
defaultMaxBytes: DEFAULT_IN_MEMORY_BLOCKSTORE_MAX_BYTES,
|
|
6215
6215
|
close: async () => {}
|
|
6216
6216
|
};
|
|
6217
|
-
const store = new FsBlockstore(path
|
|
6217
|
+
const store = new FsBlockstore(path.join(dataPath, "blockstore", key));
|
|
6218
6218
|
await store.open();
|
|
6219
6219
|
return {
|
|
6220
6220
|
blockstore: store,
|
|
@@ -6628,6 +6628,29 @@ async function createLibp2pJsClientOrUseExistingOne(pkcOptions) {
|
|
|
6628
6628
|
const ipnsPubsubLocalStore = ipnsPubsubRouter.localStore;
|
|
6629
6629
|
const ipnsPubsubRouterSubscriptions = ipnsPubsubRouter.subscriptions;
|
|
6630
6630
|
const ipnsRecordNetworkValidatedAtMs = /* @__PURE__ */ new Map();
|
|
6631
|
+
const ipnsRecordArrivalListeners = /* @__PURE__ */ new Map();
|
|
6632
|
+
const originalLocalStorePut = ipnsPubsubLocalStore.put.bind(ipnsPubsubLocalStore);
|
|
6633
|
+
ipnsPubsubLocalStore.put = async (routingKey, marshalledRecord, options) => {
|
|
6634
|
+
await originalLocalStorePut(routingKey, marshalledRecord, options);
|
|
6635
|
+
const pubsubTopic = binaryKeyToPubsubTopic(routingKey);
|
|
6636
|
+
const listeners = ipnsRecordArrivalListeners.get(pubsubTopic);
|
|
6637
|
+
if (!listeners || listeners.size === 0) return;
|
|
6638
|
+
let record;
|
|
6639
|
+
try {
|
|
6640
|
+
record = unmarshalIPNSRecord(marshalledRecord);
|
|
6641
|
+
} catch (e) {
|
|
6642
|
+
log.error("Failed to unmarshal a cached IPNS record for the arrival listeners of topic", pubsubTopic, e);
|
|
6643
|
+
return;
|
|
6644
|
+
}
|
|
6645
|
+
for (const listener of [...listeners]) try {
|
|
6646
|
+
listener({
|
|
6647
|
+
pubsubTopic,
|
|
6648
|
+
record
|
|
6649
|
+
});
|
|
6650
|
+
} catch (e) {
|
|
6651
|
+
log.error("An IPNS record arrival listener threw for topic", pubsubTopic, e);
|
|
6652
|
+
}
|
|
6653
|
+
};
|
|
6631
6654
|
const WARMUP_MAX_PEERS = 4;
|
|
6632
6655
|
const warmupPromisesByTopic = /* @__PURE__ */ new Map();
|
|
6633
6656
|
const warmupForTopic = (topic, options) => {
|
|
@@ -6876,6 +6899,19 @@ async function createLibp2pJsClientOrUseExistingOne(pkcOptions) {
|
|
|
6876
6899
|
async add(entry, options) {
|
|
6877
6900
|
throw Error("Helia 'add' is not supported at the moment in pkc-js API");
|
|
6878
6901
|
},
|
|
6902
|
+
ipnsRecordArrivals: {
|
|
6903
|
+
subscribe: ({ pubsubTopic, listener }) => {
|
|
6904
|
+
const listeners = ipnsRecordArrivalListeners.get(pubsubTopic) ?? /* @__PURE__ */ new Set();
|
|
6905
|
+
listeners.add(listener);
|
|
6906
|
+
ipnsRecordArrivalListeners.set(pubsubTopic, listeners);
|
|
6907
|
+
},
|
|
6908
|
+
unsubscribe: ({ pubsubTopic, listener }) => {
|
|
6909
|
+
const listeners = ipnsRecordArrivalListeners.get(pubsubTopic);
|
|
6910
|
+
if (!listeners) return;
|
|
6911
|
+
listeners.delete(listener);
|
|
6912
|
+
if (listeners.size === 0) ipnsRecordArrivalListeners.delete(pubsubTopic);
|
|
6913
|
+
}
|
|
6914
|
+
},
|
|
6879
6915
|
async stop(options) {
|
|
6880
6916
|
const clientFromMap = libp2pJsClients[pkcOptions.key];
|
|
6881
6917
|
if (!clientFromMap) return;
|
|
@@ -6883,6 +6919,7 @@ async function createLibp2pJsClientOrUseExistingOne(pkcOptions) {
|
|
|
6883
6919
|
clientFromMap.countOfUsesOfInstance--;
|
|
6884
6920
|
if (clientFromMap.countOfUsesOfInstance === 0) {
|
|
6885
6921
|
delete libp2pJsClients[pkcOptions.key];
|
|
6922
|
+
ipnsRecordArrivalListeners.clear();
|
|
6886
6923
|
for (const router of ipnsNameResolver.routers) {
|
|
6887
6924
|
const lifecycle = router;
|
|
6888
6925
|
if (typeof lifecycle.stop === "function") try {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as createNewLocalCommunityDb, r as updateInstancePropsWithStartedCommunityOrDb, t as LocalCommunity } from "./local-community-
|
|
1
|
+
import { n as createNewLocalCommunityDb, r as updateInstancePropsWithStartedCommunityOrDb, t as LocalCommunity } from "./local-community-Ce7303vY.js";
|
|
2
2
|
export { LocalCommunity, createNewLocalCommunityDb, updateInstancePropsWithStartedCommunityOrDb };
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-2rV9d50f.js";
|
|
2
|
-
import {
|
|
3
|
-
import { $t as getPublicKeyFromPrivateKey, A as deriveDbPosts, At as verifyCommentIpfs, Bt as getAuthorNameFromWire, C as BackupAbortError, Cn as parseDecryptedChallengeAnswerWithPKCErrorIfItFails, Dt as verifyChallengeRequest, E as calculateInlineRepliesBudget, En as parseJsonWithPKCErrorIfFails, F as importSignerIntoKuboNode, Ft as verifyCommunityEdit, G as REPLY_REPLIES_SORT_TYPES, Gt as getCommunityPublicKeyFromWire, It as verifyVote, Jt as encode, K as TIMEFRAMES_TO_SECONDS, Lt as buildRuntimeAuthor, M as getDefaultCommunityDbConfig, Mt as verifyCommentPubsubMessage, Nt as verifyCommentUpdate, O as deleteOldCommunityInWindows, P as getThumbnailPropsOfLink, Pt as verifyCommunity, Qt as getPKCAddressFromPublicKeySync, R as moveCommunityDbToDeletedDirectory, Rt as cleanWireAuthor, S as encryptEd25519AesGcmPublicKeyBuffer, St as signCommunity, T as calculateExpectedSignatureSize, Tt as verifyChallengeAnswer, U as POSTS_SORT_TYPES, W as POST_REPLIES_SORT_TYPES, Wt as getCommunityNameFromWire, Xt as getIpfsKeyFromPrivateKey, Z as iterateOverPageCidsToFindAllCids, Zt as getPKCAddressFromPublicKey, _t as signComment, a as loadChallengeFileFromCommunityChallengeSettings, ar as t$11, b as decryptEd25519AesGcmPublicKeyBuffer, bt as signCommentUpdate, c as LRUCache, d as KeyvBetterSqlite3, dn as parseCommunityEditOptionsSchemaWithPKCErrorIfItFails, dr as STORAGE_KEYS, en as createSchemaRowParser, er as crosspostChainDepthUpTo, fr as require_lodash_merge, ft as cleanUpBeforePublishing, g as SignerWithPublicKeyAddress, gt as signChallengeVerification, i as getCommunityChallengeFromCommunityChallengeSettings, ir as r$2, j as deriveDbReplies, jt as verifyCommentModeration, k as deriveCommentIpfsFromCommentTableRow, kt as verifyCommentEdit, lr as t$10, lt as pLimit, mt as signChallengeMessage, nr as t$9, o as pkcJsChallenges, or as n$6, pn as parseCommunityIpfsSchemaPassthroughWithPKCErrorIfItFails, qt as decode, r as getChallengeVerification, rr as t$12, s as TrackedInstanceRegistry, sr as n$5, t as RpcLocalCommunity, tr as effectiveMaxCrosspostDepth, u as MAX_FILE_SIZE_BYTES_FOR_COMMUNITY_IPFS, ur as stringify, vt as signCommentEdit, w as backupCommunityDb, xt as signCommentUpdateForChallengeVerification, z as resolveDbPostsCidRefs } from "./rpc-local-community-
|
|
2
|
+
import { A as doesDomainAddressHaveCapitalLetter, B as ipnsNameToIpnsOverPubsubTopic, Bn as CommentEditPubsubMessagePublicationSchema, Bt as require_sha256, C as calculateStringSizeSameAsIpfsAddCidV0, Cn as CommentIpfsSchema, Cr as messages, Ct as writeKuboFilesWithTimeout, Dt as findUpdatingCommunity, E as contentContainsMarkdownVideos, F as getErrorCodeFromMessage, Hn as CommentEditReservedFields, I as getIpnsRecordInLocalKuboNode, It as trackUpdatingCommunity, J as isLinkOfImage, Jn as AuthorReservedFields, K as isLinkOfAnimatedImage, Lr as ZodError, Lt as untrackStartedCommunity, N as genToArray, Nn as CommentUpdateTableRowSchema, Nt as syncCommunityRegistryEntry, P as getEquivalentCommunityAddresses, Pn as CommentsTableRowSchema, Pt as trackStartedCommunity, Qt as CommentModerationsTableRowSchema, R as hideClassPrivateProps, S as calculateIpfsCidV0, Sr as PKCError, T as contentContainsMarkdownImages, Tt as findStartedCommunity, Vn as CommentEditPubsubMessagePublicationWithFlexibleAuthorSchema, Wn as CommentEditsTableRowSchema, Wt as CommunityEditPublicationPubsubReservedFields, X as isLinkOfVideo, Xt as CommentModerationReservedFields, Y as isLinkOfMedia, Yt as CommentModerationPubsubMessagePublicationSchema, Z as isLinkValid, _n as VotePubsubMessagePublicationSchema, a as ChallengeRequestMessageSchema, ar as t$6, b as areEquivalentCommunityAddresses, bn as VoteTablesRowSchema, cn as CommunitySignedPropertyNames, d as DecryptedChallengeRequestSchema, et as isStringDomain, gr as require_retry, ht as retryKuboIpfsAddAndProvide, ir as t$7, jn as CommentUpdateSchema, k as derivePublicationFromChallengeRequest, lr as r$1, lt as removeNullUndefinedValues, mr as t$3, nr as t$8, or as e, ot as removeBlocksFromKuboNode, pr as t$5, pt as retryKuboBlockPutPinAndProvidePubsubTopic, q as isLinkOfAudio, r as ChallengeMessageSchema, rr as n$3, s as ChallengeVerificationMessageSchema, sn as CommunityIpfsSchema, sr as e$1, st as removeMfsFilesSafely, t as ChallengeAnswerMessageSchema, tr as n$4, tt as pubsubTopicToDhtKey, u as DecryptedChallengeRequestPublicationSchema, ur as t$4, vn as VotePubsubReservedFields, vt as sleepUntilTimeoutOrAbort, w as contentContainsMarkdownAudio, wn as CommentPubsubMessageReservedFields, wr as logger_default, wt as findCommunityInRegistry, xt as timestamp, y as version_default, yt as statMfsPathSafely, zt as untrackUpdatingCommunity } from "./schema-5-rYJ-bC.js";
|
|
3
|
+
import { $t as getPublicKeyFromPrivateKey, A as deriveDbPosts, At as verifyCommentIpfs, Bt as getAuthorNameFromWire, C as BackupAbortError, Cn as parseDecryptedChallengeAnswerWithPKCErrorIfItFails, Dt as verifyChallengeRequest, E as calculateInlineRepliesBudget, En as parseJsonWithPKCErrorIfFails, F as importSignerIntoKuboNode, Ft as verifyCommunityEdit, G as REPLY_REPLIES_SORT_TYPES, Gt as getCommunityPublicKeyFromWire, It as verifyVote, Jt as encode, K as TIMEFRAMES_TO_SECONDS, Lt as buildRuntimeAuthor, M as getDefaultCommunityDbConfig, Mt as verifyCommentPubsubMessage, Nt as verifyCommentUpdate, O as deleteOldCommunityInWindows, P as getThumbnailPropsOfLink, Pt as verifyCommunity, Qt as getPKCAddressFromPublicKeySync, R as moveCommunityDbToDeletedDirectory, Rt as cleanWireAuthor, S as encryptEd25519AesGcmPublicKeyBuffer, St as signCommunity, T as calculateExpectedSignatureSize, Tt as verifyChallengeAnswer, U as POSTS_SORT_TYPES, W as POST_REPLIES_SORT_TYPES, Wt as getCommunityNameFromWire, Xt as getIpfsKeyFromPrivateKey, Z as iterateOverPageCidsToFindAllCids, Zt as getPKCAddressFromPublicKey, _t as signComment, a as loadChallengeFileFromCommunityChallengeSettings, ar as t$11, b as decryptEd25519AesGcmPublicKeyBuffer, bt as signCommentUpdate, c as LRUCache, d as KeyvBetterSqlite3, dn as parseCommunityEditOptionsSchemaWithPKCErrorIfItFails, dr as STORAGE_KEYS, en as createSchemaRowParser, er as crosspostChainDepthUpTo, fr as require_lodash_merge, ft as cleanUpBeforePublishing, g as SignerWithPublicKeyAddress, gt as signChallengeVerification, i as getCommunityChallengeFromCommunityChallengeSettings, ir as r$2, j as deriveDbReplies, jt as verifyCommentModeration, k as deriveCommentIpfsFromCommentTableRow, kt as verifyCommentEdit, lr as t$10, lt as pLimit, mt as signChallengeMessage, nr as t$9, o as pkcJsChallenges, or as n$6, pn as parseCommunityIpfsSchemaPassthroughWithPKCErrorIfItFails, qt as decode, r as getChallengeVerification, rr as t$12, s as TrackedInstanceRegistry, sr as n$5, t as RpcLocalCommunity, tr as effectiveMaxCrosspostDepth, u as MAX_FILE_SIZE_BYTES_FOR_COMMUNITY_IPFS, ur as stringify, vt as signCommentEdit, w as backupCommunityDb, xt as signCommentUpdateForChallengeVerification, z as resolveDbPostsCidRefs } from "./rpc-local-community-Dr_-Lb8I.js";
|
|
4
4
|
import { randomFillSync, randomUUID } from "node:crypto";
|
|
5
5
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
6
|
-
import
|
|
6
|
+
import Path from "node:path";
|
|
7
7
|
import os from "os";
|
|
8
8
|
import { existsSync, promises } from "node:fs";
|
|
9
|
-
import path
|
|
9
|
+
import path from "path";
|
|
10
10
|
import assert from "assert";
|
|
11
11
|
import fs from "fs";
|
|
12
12
|
import Database from "better-sqlite3";
|
|
@@ -1868,15 +1868,15 @@ async function throwIfChallengeSettingsAreInvalid({ challengeSettings, pkc, comm
|
|
|
1868
1868
|
const processStartedCommunities = new TrackedInstanceRegistry();
|
|
1869
1869
|
function normalizeRegistryDataPath(dataPath) {
|
|
1870
1870
|
if (dataPath === void 0) return void 0;
|
|
1871
|
-
const resolved = path
|
|
1871
|
+
const resolved = path.resolve(dataPath);
|
|
1872
1872
|
let existing = resolved;
|
|
1873
1873
|
let tail = "";
|
|
1874
1874
|
while (true) try {
|
|
1875
|
-
return path
|
|
1875
|
+
return path.join(fs.realpathSync.native(existing), tail);
|
|
1876
1876
|
} catch {
|
|
1877
|
-
const parent = path
|
|
1877
|
+
const parent = path.dirname(existing);
|
|
1878
1878
|
if (parent === existing) return resolved;
|
|
1879
|
-
tail = path
|
|
1879
|
+
tail = path.join(path.basename(existing), tail);
|
|
1880
1880
|
existing = parent;
|
|
1881
1881
|
}
|
|
1882
1882
|
}
|
|
@@ -3632,9 +3632,9 @@ var DbHandler = class {
|
|
|
3632
3632
|
if (needToMigrate) {
|
|
3633
3633
|
if (dbExistsAlready && currentDbVersion > 0) {
|
|
3634
3634
|
this.destoryConnection();
|
|
3635
|
-
backupDbPath = path
|
|
3636
|
-
log(`Copying db ${path
|
|
3637
|
-
if (!fs.existsSync(path
|
|
3635
|
+
backupDbPath = path.join(path.dirname(dbPath), ".backup_before_migration", `${path.basename(dbPath)}.${currentDbVersion}.${timestamp()}`);
|
|
3636
|
+
log(`Copying db ${path.basename(dbPath)} to ${backupDbPath} before migration`);
|
|
3637
|
+
if (!fs.existsSync(path.dirname(backupDbPath))) await fs.promises.mkdir(path.dirname(backupDbPath), { recursive: true });
|
|
3638
3638
|
const sourceDb = new Database(dbPath, { fileMustExist: true });
|
|
3639
3639
|
await sourceDb.backup(backupDbPath);
|
|
3640
3640
|
sourceDb.close();
|
|
@@ -5452,10 +5452,10 @@ var DbHandler = class {
|
|
|
5452
5452
|
if (this._db || this._keyv) await this.destoryConnection();
|
|
5453
5453
|
this._transactionDepth = 0;
|
|
5454
5454
|
const dataPath = this._community._pkc.dataPath;
|
|
5455
|
-
const oldPathString = path
|
|
5456
|
-
const newPathString = path
|
|
5457
|
-
await fs.promises.mkdir(path
|
|
5458
|
-
await fs.promises.mkdir(path
|
|
5455
|
+
const oldPathString = path.join(dataPath, "communities", oldDbName);
|
|
5456
|
+
const newPathString = path.join(dataPath, "communities", newDbName);
|
|
5457
|
+
await fs.promises.mkdir(path.dirname(oldPathString), { recursive: true });
|
|
5458
|
+
await fs.promises.mkdir(path.dirname(newPathString), { recursive: true });
|
|
5459
5459
|
try {
|
|
5460
5460
|
if (!fs.existsSync(oldPathString)) log(`Old DB file ${oldPathString} does not exist. Cannot backup/rename.`);
|
|
5461
5461
|
else {
|
|
@@ -5477,8 +5477,8 @@ var DbHandler = class {
|
|
|
5477
5477
|
}
|
|
5478
5478
|
async lockCommunityStart(communityAddress = this._community.address) {
|
|
5479
5479
|
const log = logger_default("pkc-js:local-community:db-handler:lock:start");
|
|
5480
|
-
const lockfilePath = path
|
|
5481
|
-
const communityDbPath = path
|
|
5480
|
+
const lockfilePath = path.join(this._community._pkc.dataPath, "communities", `${communityAddress}.start.lock`);
|
|
5481
|
+
const communityDbPath = path.join(this._community._pkc.dataPath, "communities", communityAddress);
|
|
5482
5482
|
try {
|
|
5483
5483
|
await import_src.default.lock(communityDbPath, {
|
|
5484
5484
|
lockfilePath,
|
|
@@ -5499,8 +5499,8 @@ var DbHandler = class {
|
|
|
5499
5499
|
async unlockCommunityStart(communityAddress = this._community.address) {
|
|
5500
5500
|
const log = logger_default("pkc-js:local-community:db-handler:unlock:start");
|
|
5501
5501
|
log.trace(`Attempting to unlock the start of community (${communityAddress})`);
|
|
5502
|
-
const lockfilePath = path
|
|
5503
|
-
const communityDbPath = path
|
|
5502
|
+
const lockfilePath = path.join(this._community._pkc.dataPath, "communities", `${communityAddress}.start.lock`);
|
|
5503
|
+
const communityDbPath = path.join(this._community._pkc.dataPath, "communities", communityAddress);
|
|
5504
5504
|
if (!fs.existsSync(lockfilePath) || !fs.existsSync(communityDbPath)) return;
|
|
5505
5505
|
try {
|
|
5506
5506
|
await import_src.default.unlock(communityDbPath, { lockfilePath });
|
|
@@ -5511,8 +5511,8 @@ var DbHandler = class {
|
|
|
5511
5511
|
}
|
|
5512
5512
|
}
|
|
5513
5513
|
async isCommunityStartLocked(communityAddress = this._community.address) {
|
|
5514
|
-
const lockfilePath = path
|
|
5515
|
-
const communityDbPath = path
|
|
5514
|
+
const lockfilePath = path.join(this._community._pkc.dataPath, "communities", `${communityAddress}.start.lock`);
|
|
5515
|
+
const communityDbPath = path.join(this._community._pkc.dataPath, "communities", communityAddress);
|
|
5516
5516
|
return await import_src.default.check(communityDbPath, {
|
|
5517
5517
|
lockfilePath,
|
|
5518
5518
|
realpath: false,
|
|
@@ -5521,8 +5521,8 @@ var DbHandler = class {
|
|
|
5521
5521
|
}
|
|
5522
5522
|
async lockCommunityState() {
|
|
5523
5523
|
const log = logger_default("pkc-js:local-community:db-handler:lock:lockCommunityState");
|
|
5524
|
-
const lockfilePath = path
|
|
5525
|
-
const communityDbPath = path
|
|
5524
|
+
const lockfilePath = path.join(this._community._pkc.dataPath, "communities", `${this._community.address}.state.lock`);
|
|
5525
|
+
const communityDbPath = path.join(this._community._pkc.dataPath, "communities", this._community.address);
|
|
5526
5526
|
try {
|
|
5527
5527
|
await import_src.default.lock(communityDbPath, {
|
|
5528
5528
|
lockfilePath,
|
|
@@ -5539,8 +5539,8 @@ var DbHandler = class {
|
|
|
5539
5539
|
}
|
|
5540
5540
|
async unlockCommunityState() {
|
|
5541
5541
|
const log = logger_default("pkc-js:local-community:db-handler:lock:unlockCommunityState");
|
|
5542
|
-
const lockfilePath = path
|
|
5543
|
-
const communityDbPath = path
|
|
5542
|
+
const lockfilePath = path.join(this._community._pkc.dataPath, "communities", `${this._community.address}.state.lock`);
|
|
5543
|
+
const communityDbPath = path.join(this._community._pkc.dataPath, "communities", this._community.address);
|
|
5544
5544
|
if (!fs.existsSync(lockfilePath)) return;
|
|
5545
5545
|
try {
|
|
5546
5546
|
await import_src.default.unlock(communityDbPath, { lockfilePath });
|
|
@@ -5550,7 +5550,7 @@ var DbHandler = class {
|
|
|
5550
5550
|
}
|
|
5551
5551
|
}
|
|
5552
5552
|
communityDbExists() {
|
|
5553
|
-
const communityDbPath = path
|
|
5553
|
+
const communityDbPath = path.join(this._community._pkc.dataPath, "communities", this._community.address);
|
|
5554
5554
|
return fs.existsSync(communityDbPath);
|
|
5555
5555
|
}
|
|
5556
5556
|
markCommentsAsPublishedToPostUpdates(commentCids) {
|
|
@@ -7288,11 +7288,11 @@ async function edit(community, newCommunityOptions) {
|
|
|
7288
7288
|
const EXPORTS_KEY = STORAGE_KEYS[STORAGE_KEYS.EXPORTS];
|
|
7289
7289
|
function defaultExportPathFor(community, exportId) {
|
|
7290
7290
|
if (typeof community._pkc.dataPath !== "string") throw new PKCError("ERR_DATA_PATH_IS_NOT_DEFINED", { communityAddress: community.address });
|
|
7291
|
-
return
|
|
7291
|
+
return Path.join(community._pkc.dataPath, "exports", `${exportId}.sqlite`);
|
|
7292
7292
|
}
|
|
7293
7293
|
function sourceDbPathFor(community) {
|
|
7294
7294
|
if (typeof community._pkc.dataPath !== "string") throw new PKCError("ERR_DATA_PATH_IS_NOT_DEFINED", { communityAddress: community.address });
|
|
7295
|
-
return
|
|
7295
|
+
return Path.join(community._pkc.dataPath, "communities", community.address);
|
|
7296
7296
|
}
|
|
7297
7297
|
async function persistExports(community) {
|
|
7298
7298
|
if (!community._dbHandler) return;
|
|
@@ -7368,9 +7368,9 @@ async function runExportTask(community, exportId, opts) {
|
|
|
7368
7368
|
async function exportCommunityEmbedded(community, options = {}) {
|
|
7369
7369
|
if (options.signal?.aborted) throw options.signal.reason ?? new DOMException("The operation was aborted.", "AbortError");
|
|
7370
7370
|
const exportId = v4();
|
|
7371
|
-
const destPath = options.exportPath ?
|
|
7371
|
+
const destPath = options.exportPath ? Path.resolve(options.exportPath) : defaultExportPathFor(community, exportId);
|
|
7372
7372
|
const includePrivateKey = options.includePrivateKey === true;
|
|
7373
|
-
if (
|
|
7373
|
+
if (Path.resolve(destPath) === Path.resolve(sourceDbPathFor(community))) throw new PKCError("ERR_EXPORT_PATH_TARGETS_LIVE_DB", {
|
|
7374
7374
|
communityAddress: community.address,
|
|
7375
7375
|
exportPath: destPath
|
|
7376
7376
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-2rV9d50f.js";
|
|
2
|
-
import {
|
|
3
|
-
import { $ as RepliesPages, $n as RpcUnsubscribeParamSchema, An as parseSetNewSettingsPKCWsServerSchemaWithPKCErrorIfItFails, At as verifyCommentIpfs, B as setNativeFunctions$1, Bn as RpcEditCommunityParamSchema, Cn as parseDecryptedChallengeAnswerWithPKCErrorIfItFails, Ct as signCommunityEdit, D as createKuboRpcClient, Dn as parsePKCUserOptionsSchemaWithPKCErrorIfItFails, En as parseJsonWithPKCErrorIfFails, Et as verifyChallengeMessage, Fn as RpcCancelExportParamSchema, Ft as verifyCommunityEdit, Gn as RpcFetchCidParamSchema, Gt as getCommunityPublicKeyFromWire, H as CommentClientsManager, Hn as RpcExportCommunityModLogsResultSchema, Ht as buildRuntimeCommunityFields, I as listCommunitiesSync, In as RpcCidParamSchema, It as verifyVote, Jn as RpcPublishChallengeAnswersParamSchema, Kn as RpcFetchCidResultSchema, Kt as normalizeCommunityInputFromCommunity, L as monitorCommunitiesDirectory, Ln as RpcCommentRepliesPageParamSchema, Lt as buildRuntimeAuthor, Mn as parseVotePubsubMessagePublicationSchemaWithPKCErrorIfItFails, Mt as verifyCommentPubsubMessage, N as getDefaultDataPath, Nn as RpcAnchorPublishPreparationResultSchema, Nt as verifyCommentUpdate, On as parseRpcCommentEventWithPKCErrorIfItFails, Ot as verifyChallengeVerification, Pn as RpcAuthorNameParamSchema, Q as parseRawPages, Qn as RpcSuccessResultSchema, Qt as getPKCAddressFromPublicKeySync, Rn as RpcCommunityIdentifierParamSchema, Rt as cleanWireAuthor, Sn as parseCreateVoteOptionsSchemaWithPKCErrorIfItFails, Tn as parseDecryptedChallengeWithPKCErrorIfItFails, Un as RpcExportCommunityParamSchema, Ut as getCommunityAddressFromRecord, V as tryToDeleteCommunitiesThatFailedToBeDeletedBefore, Vn as RpcExportCommunityModLogsParamSchema, Vt as normalizeCreatePublicationAuthor, Wn as RpcExportCommunityResultSchema, Wt as getCommunityNameFromWire, X as findCommentInPageInstanceRecursively, Xn as RpcResolveAuthorNameResultSchema, Y as extractCommunityRuntimeFieldsFromParsedPages, Yn as RpcPublishedAnchorRecordResultSchema, Yt as getBufferedPKCAddressFromPublicKey, Zn as RpcSubscriptionIdResultSchema, _ as createSigner, _n as parseCreateCommunityEditPublicationOptionsSchemaWithPKCErrorIfItFails, _t as signComment, an as parseCommentIpfsSchemaWithPKCErrorIfItFails, ar as t$3, at as PublicationClientsManager, bn as parseCreateRemoteCommunityFunctionArgumentSchemaWithPKCErrorIfItFails, c as LRUCache, cn as parseCommentPubsubMessagePublicationWithPKCErrorIfItFails, cr as t$2, d as KeyvBetterSqlite3, dt as require_lib$1, et as applyNameResolvedCacheToCrosspost, f as decodeRpcChallengeAnswerPubsubMsg, fn as parseCommunityEditPubsubMessagePublicationSchemaWithPKCErrorIfItFails, ft as cleanUpBeforePublishing, gn as parseCreateCommentOptionsSchemaWithPKCErrorIfItFails, h as decodeRpcChallengeVerificationPubsubMsg, hn as parseCreateCommentModerationOptionsSchemaWithPKCErrorIfItFails, ht as signChallengeRequest, in as parseCommentEditPubsubMessagePublicationSchemaWithPKCErrorIfItFails, it as stripNameResolvedFromCrosspost, jt as verifyCommentModeration, kn as parseRpcCommentUpdateEventWithPKCErrorIfItFails, kt as verifyCommentEdit, l as RemoteCommunity, ln as parseCommunityAddressWithPKCErrorIfItFails, lr as t$5, m as decodeRpcChallengeRequestPubsubMsg, mn as parseCreateCommentEditOptionsSchemaWithPKCErrorIfItFails, mr as require_undici, n as RpcRemoteCommunity, nr as t$4, nt as collectCrosspostAuthorsToResolve, o as pkcJsChallenges, or as n$3, ot as PKCClientsManager, p as decodeRpcChallengePubsubMsg, pr as nativeFunctions$2, pt as signChallengeAnswer, qn as RpcPublishAnchorRecordParamSchema, qt as decode, s as TrackedInstanceRegistry, sn as parseCommentModerationPubsubMessagePublicationSchemaWithPKCErrorIfItFails, st as InflightFetchManager, t as RpcLocalCommunity, tn as parseCidStringSchemaWithPKCErrorIfItFails, tt as cloneCrosspostForRuntime, ut as PKCTypedEmitter, v as createAnchorIpnsRecord$1, vt as signCommentEdit, wn as parseDecryptedChallengeVerification, wt as signVote, x as encryptEd25519AesGcm, xn as parseCreateRpcCommunityFunctionArgumentSchemaWithPKCErrorIfItFails, y as decryptEd25519AesGcm, yt as signCommentModeration, zn as RpcCommunityPageParamSchema, zt as getAuthorNameFromRuntime } from "./rpc-local-community-
|
|
4
|
-
import { o as getHeliaDebugContext } from "./util-
|
|
2
|
+
import { A as doesDomainAddressHaveCapitalLetter, At as listUpdatingCommunities, B as ipnsNameToIpnsOverPubsubTopic, Br as stringifyPrimitive, Bt as require_sha256, Cn as CommentIpfsSchema, Cr as messages, D as createAbortError, Dr as setErrorMap, Dt as findUpdatingCommunity, Et as findUpdatingComment, Ft as trackUpdatingComment, H as isIpfsCid, Ht as pTimeout, O as deepMergeRuntimeFields, On as CommentUpdateForChallengeVerificationSchema, Ot as listStartedCommunities, R as hideClassPrivateProps, Rr as joinValues, Rt as untrackUpdatingComment, Sr as PKCError, St as waitForUpdateInCommunityInstanceWithErrorAndTimeout, Tt as findStartedCommunity, V as isAbortError, Vt as TimeoutError, W as isIpns, _r as FailedToFetchCommentIpfsFromGatewaysError, _t as shortifyCid, a as ChallengeRequestMessageSchema, ar as t$1, at as rejectWhenCommunityStopsOrAborts, b as areEquivalentCommunityAddresses, bt as throwIfAbortSignalAborted, dt as replaceXWithY, et as isStringDomain, ft as resolveWhenPredicateIsTrue, gr as require_retry, gt as shortifyAddress, it as rejectWhenAbortSignalFires, jn as CommentUpdateSchema, jt as refreshTrackedCommentAliases, kt as listUpdatingComments, lr as r, mt as retryKuboIpfsAdd, nn as CommunityAnchorSchema, or as e, pn as PubsubTopicSchema, r as ChallengeMessageSchema, rr as n$1, s as ChallengeVerificationMessageSchema, sn as CommunityIpfsSchema, sr as e$1, t as ChallengeAnswerMessageSchema, tr as n$2, ut as removeUndefinedValuesRecursively, vt as sleepUntilTimeoutOrAbort, wr as logger_default, xt as timestamp, y as version_default, zr as parsedType } from "./schema-5-rYJ-bC.js";
|
|
3
|
+
import { $ as RepliesPages, $n as RpcUnsubscribeParamSchema, An as parseSetNewSettingsPKCWsServerSchemaWithPKCErrorIfItFails, At as verifyCommentIpfs, B as setNativeFunctions$1, Bn as RpcEditCommunityParamSchema, Cn as parseDecryptedChallengeAnswerWithPKCErrorIfItFails, Ct as signCommunityEdit, D as createKuboRpcClient, Dn as parsePKCUserOptionsSchemaWithPKCErrorIfItFails, En as parseJsonWithPKCErrorIfFails, Et as verifyChallengeMessage, Fn as RpcCancelExportParamSchema, Ft as verifyCommunityEdit, Gn as RpcFetchCidParamSchema, Gt as getCommunityPublicKeyFromWire, H as CommentClientsManager, Hn as RpcExportCommunityModLogsResultSchema, Ht as buildRuntimeCommunityFields, I as listCommunitiesSync, In as RpcCidParamSchema, It as verifyVote, Jn as RpcPublishChallengeAnswersParamSchema, Kn as RpcFetchCidResultSchema, Kt as normalizeCommunityInputFromCommunity, L as monitorCommunitiesDirectory, Ln as RpcCommentRepliesPageParamSchema, Lt as buildRuntimeAuthor, Mn as parseVotePubsubMessagePublicationSchemaWithPKCErrorIfItFails, Mt as verifyCommentPubsubMessage, N as getDefaultDataPath, Nn as RpcAnchorPublishPreparationResultSchema, Nt as verifyCommentUpdate, On as parseRpcCommentEventWithPKCErrorIfItFails, Ot as verifyChallengeVerification, Pn as RpcAuthorNameParamSchema, Q as parseRawPages, Qn as RpcSuccessResultSchema, Qt as getPKCAddressFromPublicKeySync, Rn as RpcCommunityIdentifierParamSchema, Rt as cleanWireAuthor, Sn as parseCreateVoteOptionsSchemaWithPKCErrorIfItFails, Tn as parseDecryptedChallengeWithPKCErrorIfItFails, Un as RpcExportCommunityParamSchema, Ut as getCommunityAddressFromRecord, V as tryToDeleteCommunitiesThatFailedToBeDeletedBefore, Vn as RpcExportCommunityModLogsParamSchema, Vt as normalizeCreatePublicationAuthor, Wn as RpcExportCommunityResultSchema, Wt as getCommunityNameFromWire, X as findCommentInPageInstanceRecursively, Xn as RpcResolveAuthorNameResultSchema, Y as extractCommunityRuntimeFieldsFromParsedPages, Yn as RpcPublishedAnchorRecordResultSchema, Yt as getBufferedPKCAddressFromPublicKey, Zn as RpcSubscriptionIdResultSchema, _ as createSigner, _n as parseCreateCommunityEditPublicationOptionsSchemaWithPKCErrorIfItFails, _t as signComment, an as parseCommentIpfsSchemaWithPKCErrorIfItFails, ar as t$3, at as PublicationClientsManager, bn as parseCreateRemoteCommunityFunctionArgumentSchemaWithPKCErrorIfItFails, c as LRUCache, cn as parseCommentPubsubMessagePublicationWithPKCErrorIfItFails, cr as t$2, d as KeyvBetterSqlite3, dt as require_lib$1, et as applyNameResolvedCacheToCrosspost, f as decodeRpcChallengeAnswerPubsubMsg, fn as parseCommunityEditPubsubMessagePublicationSchemaWithPKCErrorIfItFails, ft as cleanUpBeforePublishing, gn as parseCreateCommentOptionsSchemaWithPKCErrorIfItFails, h as decodeRpcChallengeVerificationPubsubMsg, hn as parseCreateCommentModerationOptionsSchemaWithPKCErrorIfItFails, ht as signChallengeRequest, in as parseCommentEditPubsubMessagePublicationSchemaWithPKCErrorIfItFails, it as stripNameResolvedFromCrosspost, jt as verifyCommentModeration, kn as parseRpcCommentUpdateEventWithPKCErrorIfItFails, kt as verifyCommentEdit, l as RemoteCommunity, ln as parseCommunityAddressWithPKCErrorIfItFails, lr as t$5, m as decodeRpcChallengeRequestPubsubMsg, mn as parseCreateCommentEditOptionsSchemaWithPKCErrorIfItFails, mr as require_undici, n as RpcRemoteCommunity, nr as t$4, nt as collectCrosspostAuthorsToResolve, o as pkcJsChallenges, or as n$3, ot as PKCClientsManager, p as decodeRpcChallengePubsubMsg, pr as nativeFunctions$2, pt as signChallengeAnswer, qn as RpcPublishAnchorRecordParamSchema, qt as decode, s as TrackedInstanceRegistry, sn as parseCommentModerationPubsubMessagePublicationSchemaWithPKCErrorIfItFails, st as InflightFetchManager, t as RpcLocalCommunity, tn as parseCidStringSchemaWithPKCErrorIfItFails, tt as cloneCrosspostForRuntime, ut as PKCTypedEmitter, v as createAnchorIpnsRecord$1, vt as signCommentEdit, wn as parseDecryptedChallengeVerification, wt as signVote, x as encryptEd25519AesGcm, xn as parseCreateRpcCommunityFunctionArgumentSchemaWithPKCErrorIfItFails, y as decryptEd25519AesGcm, yt as signCommentModeration, zn as RpcCommunityPageParamSchema, zt as getAuthorNameFromRuntime } from "./rpc-local-community-Dr_-Lb8I.js";
|
|
4
|
+
import { o as getHeliaDebugContext } from "./util-_-fNQNIV.js";
|
|
5
5
|
import path from "path";
|
|
6
6
|
import assert from "assert";
|
|
7
7
|
import fs from "fs";
|
|
@@ -2221,6 +2221,8 @@ const parseRpcExportCommunityModLogsResult = (result) => RpcExportCommunityModLo
|
|
|
2221
2221
|
//#endregion
|
|
2222
2222
|
//#region dist/node/clients/rpc-client/pkc-rpc-client.js
|
|
2223
2223
|
const log = logger_default("pkc-js:PKCRpcClient");
|
|
2224
|
+
const WEBSOCKET_READY_STATE_CLOSED = 3;
|
|
2225
|
+
const DESTROY_SOCKET_CLOSE_TIMEOUT_MS = 5e3;
|
|
2224
2226
|
const scheduleMacrotask = setTimeout.bind(globalThis);
|
|
2225
2227
|
var PKCRpcClient = class extends import_lib.TypedEmitter {
|
|
2226
2228
|
constructor(rpcServerUrl) {
|
|
@@ -2293,7 +2295,7 @@ var PKCRpcClient = class extends import_lib.TypedEmitter {
|
|
|
2293
2295
|
this.emit("error", error);
|
|
2294
2296
|
});
|
|
2295
2297
|
this._webSocketClient.on("close", () => {
|
|
2296
|
-
log.error("connection with web socket has been closed", this._websocketServerUrl);
|
|
2298
|
+
if (!this._destroyRequested) log.error("connection with web socket has been closed", this._websocketServerUrl);
|
|
2297
2299
|
this._openConnectionPromise = void 0;
|
|
2298
2300
|
this.setState("stopped");
|
|
2299
2301
|
});
|
|
@@ -2363,7 +2365,10 @@ var PKCRpcClient = class extends import_lib.TypedEmitter {
|
|
|
2363
2365
|
try {
|
|
2364
2366
|
if (this._webSocketClient instanceof Client) {
|
|
2365
2367
|
this._webSocketClient.setAutoReconnect(false);
|
|
2368
|
+
const socketClosed = this._waitForSocketClose();
|
|
2366
2369
|
this._webSocketClient.close();
|
|
2370
|
+
await socketClosed;
|
|
2371
|
+
log("Closed websocket connection to", this._websocketServerUrl);
|
|
2367
2372
|
}
|
|
2368
2373
|
} catch (e) {
|
|
2369
2374
|
log.error("Failed to close websocket", e);
|
|
@@ -2371,6 +2376,16 @@ var PKCRpcClient = class extends import_lib.TypedEmitter {
|
|
|
2371
2376
|
this._openConnectionPromise = void 0;
|
|
2372
2377
|
this.setState("stopped");
|
|
2373
2378
|
}
|
|
2379
|
+
async _waitForSocketClose() {
|
|
2380
|
+
const socket = this._webSocketClient.socket;
|
|
2381
|
+
if (!socket || socket.readyState === WEBSOCKET_READY_STATE_CLOSED) return;
|
|
2382
|
+
const closed = new Promise((resolve) => socket.addEventListener("close", () => resolve(), { once: true }));
|
|
2383
|
+
try {
|
|
2384
|
+
await pTimeout(closed, { milliseconds: DESTROY_SOCKET_CLOSE_TIMEOUT_MS });
|
|
2385
|
+
} catch {
|
|
2386
|
+
log.error("Websocket did not close within", DESTROY_SOCKET_CLOSE_TIMEOUT_MS, "ms of destroy()", this._websocketServerUrl);
|
|
2387
|
+
}
|
|
2388
|
+
}
|
|
2374
2389
|
toJSON() {}
|
|
2375
2390
|
getSubscription(subscriptionId) {
|
|
2376
2391
|
if (!this._subscriptionEvents[subscriptionId]) throw Error(`No subscription to RPC with id (${subscriptionId})`);
|
|
@@ -7010,7 +7025,7 @@ var PKC$1 = class extends PKCTypedEmitter {
|
|
|
7010
7025
|
this.clients.libp2pJsClients = {};
|
|
7011
7026
|
if (!this.libp2pJsClientsOptions) return;
|
|
7012
7027
|
if (!this.httpRoutersOptions) throw Error("httpRoutersOptions is required for libp2pJsClient");
|
|
7013
|
-
const { createLibp2pJsClientOrUseExistingOne } = await import("./helia-for-pkc-
|
|
7028
|
+
const { createLibp2pJsClientOrUseExistingOne } = await import("./helia-for-pkc-Bj-Zb4JN.js");
|
|
7014
7029
|
for (const clientOptions of this.libp2pJsClientsOptions) {
|
|
7015
7030
|
const heliaNode = await createLibp2pJsClientOrUseExistingOne({
|
|
7016
7031
|
...clientOptions,
|
|
@@ -7289,7 +7304,7 @@ var PKC$1 = class extends PKCTypedEmitter {
|
|
|
7289
7304
|
const log = logger_default("pkc-js:pkc:createLocalCommunity");
|
|
7290
7305
|
log.trace("Received community options to create a local community instance:", options);
|
|
7291
7306
|
if (!this._canCreateNewLocalCommunity()) throw new PKCError("ERR_CAN_NOT_CREATE_A_LOCAL_COMMUNITY", { pkcOptions: this._userPKCOptions });
|
|
7292
|
-
const { LocalCommunity, createNewLocalCommunityDb, updateInstancePropsWithStartedCommunityOrDb } = await import("./local-community-
|
|
7307
|
+
const { LocalCommunity, createNewLocalCommunityDb, updateInstancePropsWithStartedCommunityOrDb } = await import("./local-community-BrMLMEmt.js");
|
|
7293
7308
|
const isLocalCommunity = (await listCommunitiesSync(this)).includes(options.address);
|
|
7294
7309
|
const community = new LocalCommunity(this);
|
|
7295
7310
|
if (isLocalCommunity) {
|