@dignetwork/dig-sdk 0.0.1-alpha.173 → 0.0.1-alpha.176
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/DigNetwork/ContentServer.d.ts.map +1 -1
- package/dist/DigNetwork/ContentServer.js +3 -2
- package/dist/DigNetwork/PropagationServer.d.ts.map +1 -1
- package/dist/DigNetwork/PropagationServer.js +3 -2
- package/dist/blockchain/DataStore.js +2 -2
- package/dist/blockchain/FullNodePeer.d.ts.map +1 -1
- package/dist/blockchain/FullNodePeer.js +5 -5
- package/dist/blockchain/ServerCoin.d.ts.map +1 -1
- package/dist/blockchain/ServerCoin.js +2 -1
- package/dist/utils/PeerRanker.js +2 -2
- package/dist/utils/Udi.d.ts +23 -0
- package/dist/utils/Udi.d.ts.map +1 -0
- package/dist/utils/Udi.js +130 -0
- package/package.json +5 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentServer.d.ts","sourceRoot":"","sources":["../../src/DigNetwork/ContentServer.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"ContentServer.d.ts","sourceRoot":"","sources":["../../src/DigNetwork/ContentServer.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAOlC,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAS;IAChC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAS;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAQ;gBAExB,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAYjC,MAAM,CACjB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC;IAeL,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAS3D,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAcxD;;;;OAIG;IACU,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC;IA6B5B,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC;IAQ9B,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC;IAM9B,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAqB7C,OAAO,CAClB,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAA;KAAE,CAAC;IAqBvD,SAAS,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QACjE,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC;KACpC,CAAC;IAmBF;;;;;;OAMG;IACU,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BrD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;YAmDrD,IAAI;YA0EJ,SAAS;YAMT,gBAAgB;YAiChB,KAAK;YA+GL,eAAe;CA4G9B"}
|
|
@@ -8,8 +8,9 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
8
8
|
const http_1 = __importDefault(require("http"));
|
|
9
9
|
const url_1 = require("url");
|
|
10
10
|
const utils_1 = require("../utils");
|
|
11
|
-
const
|
|
12
|
-
const
|
|
11
|
+
const node_cache_1 = __importDefault(require("node-cache"));
|
|
12
|
+
const hasRootHashCache = new node_cache_1.default({ stdTTL: 86400 });
|
|
13
|
+
const wellKnownCache = new node_cache_1.default({ stdTTL: 86400 });
|
|
13
14
|
class ContentServer {
|
|
14
15
|
constructor(ipAddress, storeId) {
|
|
15
16
|
this.ipAddress = ipAddress;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PropagationServer.d.ts","sourceRoot":"","sources":["../../src/DigNetwork/PropagationServer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"PropagationServer.d.ts","sourceRoot":"","sources":["../../src/DigNetwork/PropagationServer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAuBrC,qBAAa,iBAAiB;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,GAAG,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAE7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAQ;IACpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;gBAErC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAY9C;;OAEG;IACG,gBAAgB;IAOtB;;OAEG;IACH,gBAAgB;IAQhB;;;OAGG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BpD;;;;OAIG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuDjD;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM;IAyB3D;;;;;;OAMG;IACU,gBAAgB,CAC3B,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,CAAC;IAgE7D;;OAEG;IACG,kBAAkB,CAAC,QAAQ,EAAE,MAAM;IAyDzC;;OAEG;IACG,YAAY,CAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC;IA2BlD;;;OAGG;IACG,UAAU,CACd,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,UAAU,GAAE,OAAe;IAsH7B;;OAEG;IACG,mBAAmB;IAkCzB;;OAEG;WACU,WAAW,CACtB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM;IA0DnB;;;OAGG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmFlD;;OAEG;IACG,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IA4B7C;;;OAGG;IACG,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM;IA4GjB;;OAEG;WACU,aAAa,CACxB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM;CA2FpB"}
|
|
@@ -47,9 +47,10 @@ const credentialsUtils_1 = require("../utils/credentialsUtils");
|
|
|
47
47
|
const config_1 = require("../utils/config");
|
|
48
48
|
const blockchain_1 = require("../blockchain");
|
|
49
49
|
const utils_1 = require("../utils");
|
|
50
|
+
const node_cache_1 = __importDefault(require("node-cache"));
|
|
50
51
|
// Initialize cache with a TTL of 1 week (604800 seconds)
|
|
51
|
-
const storeExistsCache = new
|
|
52
|
-
const pingUpdatecache = new
|
|
52
|
+
const storeExistsCache = new node_cache_1.default({ stdTTL: 86400 });
|
|
53
|
+
const pingUpdatecache = new node_cache_1.default({ stdTTL: 86400 });
|
|
53
54
|
// Helper function to trim long filenames with ellipsis and ensure consistent padding
|
|
54
55
|
function formatFilename(filename, maxLength = 30) {
|
|
55
56
|
if (!filename) {
|
|
@@ -20,9 +20,9 @@ const FileCache_1 = require("../utils/FileCache");
|
|
|
20
20
|
const DataStoreSerializer_1 = require("./DataStoreSerializer");
|
|
21
21
|
const config_2 = require("../utils/config");
|
|
22
22
|
const StoreMonitorRegistry_1 = require("./StoreMonitorRegistry");
|
|
23
|
-
const
|
|
23
|
+
const node_cache_1 = __importDefault(require("node-cache"));
|
|
24
24
|
// Initialize the cache with a TTL of 180 seconds (3 minutes)
|
|
25
|
-
const rootHistoryCache = new
|
|
25
|
+
const rootHistoryCache = new node_cache_1.default({ stdTTL: 180 });
|
|
26
26
|
const stat = (0, util_1.promisify)(fs_1.default.stat);
|
|
27
27
|
const readdir = (0, util_1.promisify)(fs_1.default.readdir);
|
|
28
28
|
class DataStore {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FullNodePeer.d.ts","sourceRoot":"","sources":["../../src/blockchain/FullNodePeer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAO,MAAM,8BAA8B,CAAC;AAgCzD;;GAEG;AACH,qBAAa,YAAY;IAqCH,OAAO,CAAC,IAAI;IAnChC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA6B;IAGpD,OAAO,CAAC,MAAM,CAAC,aAAa,CAEzB;IAGH,OAAO,CAAC,MAAM,CAAC,cAAc,
|
|
1
|
+
{"version":3,"file":"FullNodePeer.d.ts","sourceRoot":"","sources":["../../src/blockchain/FullNodePeer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAO,MAAM,8BAA8B,CAAC;AAgCzD;;GAEG;AACH,qBAAa,YAAY;IAqCH,OAAO,CAAC,IAAI;IAnChC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA6B;IAGpD,OAAO,CAAC,MAAM,CAAC,aAAa,CAEzB;IAGH,OAAO,CAAC,MAAM,CAAC,cAAc,CAAoC;IAGjE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAkC;IAG5D,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAgB;IAG/C,OAAO,CAAC,MAAM,CAAC,SAAS,CAAoC;IAG5D,OAAO,CAAC,MAAM,CAAC,WAAW,CAAoD;IAG9E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAGpB;IAGH,OAAO,CAAC,MAAM,CAAC,YAAY,CAAsC;IAGjE,OAAO,CAAC,MAAM,CAAC,eAAe,CAAa;IAG3C,OAAO;IAEP;;;OAGG;WACW,WAAW,IAAI,YAAY;IAOzC;;OAEG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAaxC;;;;OAIG;WACiB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5C;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAuB9B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAM/B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IASjC;;;;OAIG;mBACkB,eAAe;IAoGpC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAS3B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAYpC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA4BnC;;;OAGG;mBACkB,UAAU;IAK/B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAIzB;;;OAGG;YACW,WAAW;IAuEzB,OAAO,CAAC,eAAe;IAqDvB;;;OAGG;WACW,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAmB3D;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAS5B;;;;OAIG;WACiB,mBAAmB,CACrC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC;CAwBpB"}
|
|
@@ -13,7 +13,7 @@ const net_1 = __importDefault(require("net"));
|
|
|
13
13
|
const nanospinner_1 = require("nanospinner");
|
|
14
14
|
const config_1 = require("../utils/config");
|
|
15
15
|
const Environment_1 = require("../utils/Environment");
|
|
16
|
-
const
|
|
16
|
+
const node_cache_1 = __importDefault(require("node-cache"));
|
|
17
17
|
const bottleneck_1 = __importDefault(require("bottleneck"));
|
|
18
18
|
const FULLNODE_PORT = 8444;
|
|
19
19
|
const LOCALHOST = "127.0.0.1";
|
|
@@ -433,11 +433,11 @@ exports.FullNodePeer = FullNodePeer;
|
|
|
433
433
|
// Singleton instance
|
|
434
434
|
FullNodePeer.instance = null;
|
|
435
435
|
// Cooldown cache to exclude faulty peers temporarily
|
|
436
|
-
FullNodePeer.cooldownCache = new
|
|
436
|
+
FullNodePeer.cooldownCache = new node_cache_1.default({
|
|
437
437
|
stdTTL: COOLDOWN_DURATION / 1000,
|
|
438
438
|
});
|
|
439
439
|
// Failed DNS hosts cooldown cache
|
|
440
|
-
FullNodePeer.failedDNSCache = new
|
|
440
|
+
FullNodePeer.failedDNSCache = new node_cache_1.default({ stdTTL: 86400 });
|
|
441
441
|
// Peer reliability weights
|
|
442
442
|
FullNodePeer.peerWeights = new Map();
|
|
443
443
|
// List of prioritized peers
|
|
@@ -445,9 +445,9 @@ FullNodePeer.prioritizedPeers = [];
|
|
|
445
445
|
// Map to store PeerInfo
|
|
446
446
|
FullNodePeer.peerInfos = new Map();
|
|
447
447
|
// Cache for fetched peer IPs
|
|
448
|
-
FullNodePeer.peerIPCache = new
|
|
448
|
+
FullNodePeer.peerIPCache = new node_cache_1.default({ stdTTL: CACHE_DURATION / 1000 });
|
|
449
449
|
// Cache for DNS_HOST resolved IPs with a TTL of 3 days (259200 seconds)
|
|
450
|
-
FullNodePeer.dnsCache = new
|
|
450
|
+
FullNodePeer.dnsCache = new node_cache_1.default({
|
|
451
451
|
stdTTL: 259200,
|
|
452
452
|
checkperiod: 3600,
|
|
453
453
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerCoin.d.ts","sourceRoot":"","sources":["../../src/blockchain/ServerCoin.ts"],"names":[],"mappings":"AACA,OAAO,EAML,UAAU,IAAI,gBAAgB,EAE/B,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"ServerCoin.d.ts","sourceRoot":"","sources":["../../src/blockchain/ServerCoin.ts"],"names":[],"mappings":"AACA,OAAO,EAML,UAAU,IAAI,gBAAgB,EAE/B,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAWrD,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,gBAAuB,iBAAiB,eAEtC;gBAEU,OAAO,EAAE,MAAM;IAKd,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA4D3E,kBAAkB,CAC7B,UAAU,EAAE,gBAAgB,EAC5B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAsBH,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAoDjD,oBAAoB;IAerB,gBAAgB,CAC3B,KAAK,EAAE,MAAM,EACb,SAAS,GAAE,MAAM,EAAO,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;IAoDP,mBAAmB,CAC9B,SAAS,GAAE,MAAM,EAAO,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;IAMP,kBAAkB,CAC7B,UAAU,GAAE,MAAU,EACtB,SAAS,GAAE,MAAM,EAAO,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;IAMP,wBAAwB,CACnC,KAAK,EAAE,MAAM,EACb,UAAU,GAAE,MAAU,EACtB,SAAS,GAAE,MAAM,EAAO,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;WAeN,eAAe,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAKpD,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiFrD,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WA+B1C,uBAAuB;YAkE7B,sBAAsB;IAWvB,uBAAuB,CAClC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC;WAuBL,sBAAsB,CAAC,mBAAmB,EAAE,IAAI,GAAG;QAC/D,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf;CA2BF"}
|
|
@@ -11,9 +11,10 @@ const Wallet_1 = require("./Wallet");
|
|
|
11
11
|
const NconfManager_1 = require("../utils/NconfManager");
|
|
12
12
|
const DataStore_1 = require("./DataStore");
|
|
13
13
|
const utils_1 = require("../utils");
|
|
14
|
+
const node_cache_1 = __importDefault(require("node-cache"));
|
|
14
15
|
const serverCoinCollateral = 300000000;
|
|
15
16
|
// Initialize the cache with a TTL of 300 seconds (5 minutes)
|
|
16
|
-
const serverCoinPeersCache = new
|
|
17
|
+
const serverCoinPeersCache = new node_cache_1.default({ stdTTL: 300 });
|
|
17
18
|
class ServerCoin {
|
|
18
19
|
constructor(storeId) {
|
|
19
20
|
this.storeId = storeId;
|
package/dist/utils/PeerRanker.js
CHANGED
|
@@ -7,11 +7,11 @@ exports.PeerRanker = void 0;
|
|
|
7
7
|
const axios_1 = __importDefault(require("axios"));
|
|
8
8
|
const fs_1 = __importDefault(require("fs"));
|
|
9
9
|
const https_1 = __importDefault(require("https"));
|
|
10
|
-
const DigCache_1 = require("./DigCache");
|
|
11
10
|
const ssl_1 = require("./ssl");
|
|
12
11
|
const promiseUtils_1 = require("./promiseUtils");
|
|
12
|
+
const node_cache_1 = __importDefault(require("node-cache"));
|
|
13
13
|
// Cache with TTL of 1 day (86400 seconds)
|
|
14
|
-
const peerCache = new
|
|
14
|
+
const peerCache = new node_cache_1.default({ stdTTL: 86400 });
|
|
15
15
|
/**
|
|
16
16
|
* Utility class to rank peers based on latency and upload bandwidth using HTTPS with mTLS.
|
|
17
17
|
*/
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
declare class Udi {
|
|
2
|
+
readonly chainName: string;
|
|
3
|
+
readonly storeId: Buffer;
|
|
4
|
+
readonly rootHash: Buffer | null;
|
|
5
|
+
readonly resourceKey: string | null;
|
|
6
|
+
static readonly nid: string;
|
|
7
|
+
static readonly namespace: string;
|
|
8
|
+
constructor(chainName: string, storeId: string | Buffer, rootHash?: string | Buffer | null, resourceKey?: string | null);
|
|
9
|
+
static convertToBuffer(input: string | Buffer): Buffer;
|
|
10
|
+
static isHex(input: string): boolean;
|
|
11
|
+
static isBase32(input: string): boolean;
|
|
12
|
+
withRootHash(rootHash: string | Buffer | null): Udi;
|
|
13
|
+
withResourceKey(resourceKey: string | null): Udi;
|
|
14
|
+
static fromUrn(urn: string): Udi;
|
|
15
|
+
toUrn(encoding?: 'hex' | 'base32'): string;
|
|
16
|
+
bufferToString(buffer: Buffer, encoding: 'hex' | 'base32'): string;
|
|
17
|
+
equals(other: Udi): boolean;
|
|
18
|
+
toString(): string;
|
|
19
|
+
clone(): Udi;
|
|
20
|
+
hashCode(): string;
|
|
21
|
+
}
|
|
22
|
+
export { Udi };
|
|
23
|
+
//# sourceMappingURL=Udi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Udi.d.ts","sourceRoot":"","sources":["../../src/utils/Udi.ts"],"names":[],"mappings":"AAWA,cAAM,GAAG;IACL,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAS;IACpC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAoB;gBAGjD,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,QAAQ,GAAE,MAAM,GAAG,MAAM,GAAG,IAAW,EACvC,WAAW,GAAE,MAAM,GAAG,IAAW;IAWrC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAgBtD,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIpC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIvC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,GAAG;IAInD,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,GAAG;IAIhD,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IA4BhC,KAAK,CAAC,QAAQ,GAAE,KAAK,GAAG,QAAgB,GAAG,MAAM;IAgBjD,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM;IAMlE,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAS3B,QAAQ,IAAI,MAAM;IAIlB,KAAK,IAAI,GAAG;IAIZ,QAAQ,IAAI,MAAM;CAKrB;AAED,OAAO,EAAE,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.Udi = void 0;
|
|
27
|
+
const urns = __importStar(require("urns"));
|
|
28
|
+
const crypto_1 = require("crypto");
|
|
29
|
+
const hi_base32_1 = require("hi-base32");
|
|
30
|
+
//
|
|
31
|
+
// This class encapsulates the concept of a Universal Data Identifier (UDI) which is a
|
|
32
|
+
// standardized way to identify resources across the distributed DIG mesh network.
|
|
33
|
+
// The UDI is formatted as follows:
|
|
34
|
+
// urn:dig:chainName:storeId:rootHash/resourceKey
|
|
35
|
+
// The UDI can be used to uniquely identify resources across the DIG network.
|
|
36
|
+
//
|
|
37
|
+
class Udi {
|
|
38
|
+
constructor(chainName, storeId, rootHash = null, resourceKey = null) {
|
|
39
|
+
if (!storeId) {
|
|
40
|
+
throw new Error("storeId cannot be empty");
|
|
41
|
+
}
|
|
42
|
+
this.chainName = chainName || "chia";
|
|
43
|
+
this.storeId = Udi.convertToBuffer(storeId);
|
|
44
|
+
this.rootHash = rootHash ? Udi.convertToBuffer(rootHash) : null;
|
|
45
|
+
this.resourceKey = resourceKey;
|
|
46
|
+
}
|
|
47
|
+
static convertToBuffer(input) {
|
|
48
|
+
if (Buffer.isBuffer(input)) {
|
|
49
|
+
return input;
|
|
50
|
+
}
|
|
51
|
+
if (Udi.isHex(input)) {
|
|
52
|
+
return Buffer.from(input, 'hex');
|
|
53
|
+
}
|
|
54
|
+
if (Udi.isBase32(input)) {
|
|
55
|
+
return Buffer.from((0, hi_base32_1.decode)(input, false)); // Decode as UTF-8
|
|
56
|
+
}
|
|
57
|
+
throw new Error("Invalid input encoding. Must be 32-byte hex or Base32 string.");
|
|
58
|
+
}
|
|
59
|
+
static isHex(input) {
|
|
60
|
+
return /^[a-fA-F0-9]{64}$/.test(input);
|
|
61
|
+
}
|
|
62
|
+
static isBase32(input) {
|
|
63
|
+
return /^[a-z2-7]{52}$/.test(input.toLowerCase());
|
|
64
|
+
}
|
|
65
|
+
withRootHash(rootHash) {
|
|
66
|
+
return new Udi(this.chainName, this.storeId, rootHash, this.resourceKey);
|
|
67
|
+
}
|
|
68
|
+
withResourceKey(resourceKey) {
|
|
69
|
+
return new Udi(this.chainName, this.storeId, this.rootHash, resourceKey);
|
|
70
|
+
}
|
|
71
|
+
static fromUrn(urn) {
|
|
72
|
+
const parsedUrn = urns.parseURN(urn);
|
|
73
|
+
if (parsedUrn.nid.toLowerCase() !== Udi.nid) {
|
|
74
|
+
throw new Error(`Invalid nid: ${parsedUrn.nid}`);
|
|
75
|
+
}
|
|
76
|
+
const parts = parsedUrn.nss.split(':');
|
|
77
|
+
if (parts.length < 2) {
|
|
78
|
+
throw new Error(`Invalid UDI format: ${parsedUrn.nss}`);
|
|
79
|
+
}
|
|
80
|
+
const chainName = parts[0];
|
|
81
|
+
const storeId = parts[1].split('/')[0];
|
|
82
|
+
let rootHash = null;
|
|
83
|
+
if (parts.length > 2) {
|
|
84
|
+
rootHash = parts[2].split('/')[0];
|
|
85
|
+
}
|
|
86
|
+
const pathParts = parsedUrn.nss.split('/');
|
|
87
|
+
let resourceKey = null;
|
|
88
|
+
if (pathParts.length > 1) {
|
|
89
|
+
resourceKey = pathParts.slice(1).join('/');
|
|
90
|
+
}
|
|
91
|
+
return new Udi(chainName, storeId, rootHash, resourceKey);
|
|
92
|
+
}
|
|
93
|
+
toUrn(encoding = 'hex') {
|
|
94
|
+
const storeIdStr = this.bufferToString(this.storeId, encoding);
|
|
95
|
+
let urn = `${Udi.namespace}:${this.chainName}:${storeIdStr}`;
|
|
96
|
+
if (this.rootHash) {
|
|
97
|
+
const rootHashStr = this.bufferToString(this.rootHash, encoding);
|
|
98
|
+
urn += `:${rootHashStr}`;
|
|
99
|
+
}
|
|
100
|
+
if (this.resourceKey) {
|
|
101
|
+
urn += `/${this.resourceKey}`;
|
|
102
|
+
}
|
|
103
|
+
return urn;
|
|
104
|
+
}
|
|
105
|
+
bufferToString(buffer, encoding) {
|
|
106
|
+
return encoding === 'hex'
|
|
107
|
+
? buffer.toString('hex')
|
|
108
|
+
: (0, hi_base32_1.encode)(buffer).toLowerCase().replace(/=+$/, '');
|
|
109
|
+
}
|
|
110
|
+
equals(other) {
|
|
111
|
+
return (this.storeId.equals(other.storeId) &&
|
|
112
|
+
this.chainName === other.chainName &&
|
|
113
|
+
(this.rootHash && other.rootHash ? this.rootHash.equals(other.rootHash) : this.rootHash === other.rootHash) &&
|
|
114
|
+
this.resourceKey === other.resourceKey);
|
|
115
|
+
}
|
|
116
|
+
toString() {
|
|
117
|
+
return this.toUrn();
|
|
118
|
+
}
|
|
119
|
+
clone() {
|
|
120
|
+
return new Udi(this.chainName, this.storeId, this.rootHash, this.resourceKey);
|
|
121
|
+
}
|
|
122
|
+
hashCode() {
|
|
123
|
+
const hash = (0, crypto_1.createHash)('sha256');
|
|
124
|
+
hash.update(this.toUrn());
|
|
125
|
+
return hash.digest('hex');
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
exports.Udi = Udi;
|
|
129
|
+
Udi.nid = "dig";
|
|
130
|
+
Udi.namespace = `urn:${Udi.nid}`;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dignetwork/dig-sdk",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.176",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"crypto-js": "^4.2.0",
|
|
42
42
|
"figures": "^6.1.0",
|
|
43
43
|
"fs-extra": "^11.2.0",
|
|
44
|
+
"hi-base32": "^0.5.1",
|
|
44
45
|
"ignore": "^5.3.2",
|
|
45
46
|
"inquirer": "^10.2.2",
|
|
46
47
|
"lodash": "^4.17.21",
|
|
@@ -53,7 +54,9 @@
|
|
|
53
54
|
"proper-lockfile": "^4.1.2",
|
|
54
55
|
"superagent": "^10.1.0",
|
|
55
56
|
"redis": "^4.7.0",
|
|
56
|
-
"
|
|
57
|
+
"superagent": "^10.0.0",
|
|
58
|
+
"unzipper": "^0.12.3",
|
|
59
|
+
"urns": "^0.6.0"
|
|
57
60
|
},
|
|
58
61
|
"devDependencies": {
|
|
59
62
|
"@types/archiver": "^6.0.2",
|