@dignetwork/dig-sdk 0.0.1-alpha.17 → 0.0.1-alpha.171

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 (87) hide show
  1. package/dist/DataIntegrityTree/DataIntegrityTree.d.ts +10 -1
  2. package/dist/DataIntegrityTree/DataIntegrityTree.d.ts.map +1 -1
  3. package/dist/DataIntegrityTree/DataIntegrityTree.js +77 -10
  4. package/dist/DigNetwork/ContentServer.d.ts +24 -5
  5. package/dist/DigNetwork/ContentServer.d.ts.map +1 -1
  6. package/dist/DigNetwork/ContentServer.js +237 -27
  7. package/dist/DigNetwork/DigNetwork.d.ts +15 -9
  8. package/dist/DigNetwork/DigNetwork.d.ts.map +1 -1
  9. package/dist/DigNetwork/DigNetwork.js +129 -189
  10. package/dist/DigNetwork/DigPeer.d.ts +8 -3
  11. package/dist/DigNetwork/DigPeer.d.ts.map +1 -1
  12. package/dist/DigNetwork/DigPeer.js +72 -115
  13. package/dist/DigNetwork/IncentiveServer.d.ts.map +1 -1
  14. package/dist/DigNetwork/IncentiveServer.js +6 -5
  15. package/dist/DigNetwork/PropagationServer.d.ts +88 -33
  16. package/dist/DigNetwork/PropagationServer.d.ts.map +1 -1
  17. package/dist/DigNetwork/PropagationServer.js +635 -358
  18. package/dist/blockchain/DataStore.d.ts +25 -7
  19. package/dist/blockchain/DataStore.d.ts.map +1 -1
  20. package/dist/blockchain/DataStore.js +114 -159
  21. package/dist/blockchain/DataStoreSerializer.d.ts +1 -1
  22. package/dist/blockchain/DataStoreSerializer.d.ts.map +1 -1
  23. package/dist/blockchain/FullNodePeer.d.ts +95 -10
  24. package/dist/blockchain/FullNodePeer.d.ts.map +1 -1
  25. package/dist/blockchain/FullNodePeer.js +325 -115
  26. package/dist/blockchain/ServerCoin.d.ts +13 -5
  27. package/dist/blockchain/ServerCoin.d.ts.map +1 -1
  28. package/dist/blockchain/ServerCoin.js +88 -28
  29. package/dist/blockchain/StoreMonitorRegistry.d.ts +85 -0
  30. package/dist/blockchain/StoreMonitorRegistry.d.ts.map +1 -0
  31. package/dist/blockchain/StoreMonitorRegistry.js +238 -0
  32. package/dist/blockchain/Wallet.d.ts +2 -2
  33. package/dist/blockchain/Wallet.d.ts.map +1 -1
  34. package/dist/blockchain/Wallet.js +50 -18
  35. package/dist/blockchain/coins.d.ts +1 -2
  36. package/dist/blockchain/coins.d.ts.map +1 -1
  37. package/dist/blockchain/coins.js +1 -55
  38. package/dist/blockchain/index.d.ts +1 -0
  39. package/dist/blockchain/index.d.ts.map +1 -1
  40. package/dist/blockchain/index.js +1 -0
  41. package/dist/types.d.ts +2 -0
  42. package/dist/types.d.ts.map +1 -1
  43. package/dist/utils/ContentScanner.d.ts +63 -0
  44. package/dist/utils/ContentScanner.d.ts.map +1 -0
  45. package/dist/utils/ContentScanner.js +175 -0
  46. package/dist/utils/DigCache.d.ts +38 -0
  47. package/dist/utils/DigCache.d.ts.map +1 -0
  48. package/dist/utils/DigCache.js +231 -0
  49. package/dist/utils/Environment.d.ts +21 -0
  50. package/dist/utils/Environment.d.ts.map +1 -0
  51. package/dist/utils/Environment.js +93 -0
  52. package/dist/utils/FileCache.d.ts +1 -1
  53. package/dist/utils/FileCache.d.ts.map +1 -1
  54. package/dist/utils/FileCache.js +2 -2
  55. package/dist/utils/FileTransfer.d.ts +47 -0
  56. package/dist/utils/FileTransfer.d.ts.map +1 -0
  57. package/dist/utils/FileTransfer.js +209 -0
  58. package/dist/utils/NconfManager.js +2 -1
  59. package/dist/utils/PeerRanker.d.ts +55 -0
  60. package/dist/utils/PeerRanker.d.ts.map +1 -0
  61. package/dist/utils/PeerRanker.js +186 -0
  62. package/dist/utils/StoreArchiveManager.d.ts +45 -0
  63. package/dist/utils/StoreArchiveManager.d.ts.map +1 -0
  64. package/dist/utils/StoreArchiveManager.js +153 -0
  65. package/dist/utils/config.d.ts +4 -3
  66. package/dist/utils/config.d.ts.map +1 -1
  67. package/dist/utils/config.js +13 -8
  68. package/dist/utils/directoryUtils.d.ts +16 -0
  69. package/dist/utils/directoryUtils.d.ts.map +1 -1
  70. package/dist/utils/directoryUtils.js +66 -0
  71. package/dist/utils/index.d.ts +4 -1
  72. package/dist/utils/index.d.ts.map +1 -1
  73. package/dist/utils/index.js +4 -1
  74. package/dist/utils/merkle.d.ts +2 -0
  75. package/dist/utils/merkle.d.ts.map +1 -0
  76. package/dist/utils/merkle.js +28 -0
  77. package/dist/utils/network.d.ts +2 -1
  78. package/dist/utils/network.d.ts.map +1 -1
  79. package/dist/utils/network.js +40 -15
  80. package/dist/utils/promiseUtils.d.ts +27 -0
  81. package/dist/utils/promiseUtils.d.ts.map +1 -0
  82. package/dist/utils/promiseUtils.js +69 -0
  83. package/dist/utils/ssl.js +2 -2
  84. package/package.json +19 -5
  85. package/dist/utils/deltaUtils.d.ts +0 -2
  86. package/dist/utils/deltaUtils.d.ts.map +0 -1
  87. package/dist/utils/deltaUtils.js +0 -83
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,OAAO,CAAC;AACtB,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,OAAO,CAAC;AACtB,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -17,7 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./config"), exports);
18
18
  __exportStar(require("./connectionUtils"), exports);
19
19
  __exportStar(require("./credentialsUtils"), exports);
20
- __exportStar(require("./deltaUtils"), exports);
21
20
  __exportStar(require("./directoryUtils"), exports);
22
21
  __exportStar(require("./encryption"), exports);
23
22
  __exportStar(require("./FileCache"), exports);
@@ -27,3 +26,7 @@ __exportStar(require("./network"), exports);
27
26
  __exportStar(require("./spinnerUtils"), exports);
28
27
  __exportStar(require("./ssl"), exports);
29
28
  __exportStar(require("./validationUtils"), exports);
29
+ __exportStar(require("./Environment"), exports);
30
+ __exportStar(require("./promiseUtils"), exports);
31
+ __exportStar(require("./PeerRanker"), exports);
32
+ __exportStar(require("./DigCache"), exports);
@@ -0,0 +1,2 @@
1
+ export declare function merkleIntegrityCheck(treePath: string, tmpDir: string, dataPath: string, roothash: string): Promise<boolean>;
2
+ //# sourceMappingURL=merkle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../../src/utils/merkle.ts"],"names":[],"mappings":"AAIA,wBAAsB,oBAAoB,CACtC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CA6BlB"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.merkleIntegrityCheck = merkleIntegrityCheck;
7
+ const DataIntegrityTree_1 = require("../DataIntegrityTree");
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ async function merkleIntegrityCheck(treePath, tmpDir, dataPath, roothash) {
11
+ const rootHashContent = fs_1.default.readFileSync(treePath, "utf-8");
12
+ const tree = JSON.parse(rootHashContent);
13
+ // Extract expected sha256 from dataPath
14
+ const expectedSha256 = dataPath.replace("data", "").replace(/\//g, "");
15
+ console.log("expectedSha256", expectedSha256);
16
+ // Find the hexKey in the tree based on matching sha256
17
+ const hexKey = Object.keys(tree.files).find((key) => {
18
+ const fileData = tree.files[key]; // Inline type definition
19
+ return fileData.sha256 === expectedSha256;
20
+ });
21
+ if (!hexKey) {
22
+ throw new Error(`No matching file found with sha256: ${expectedSha256}`);
23
+ }
24
+ // Validate the integrity with the foreign tree
25
+ const integrity = await DataIntegrityTree_1.DataIntegrityTree.validateKeyIntegrityWithForeignTree(hexKey, expectedSha256, tree, roothash, path_1.default.join(tmpDir, "data"));
26
+ console.log("Integrity check result:", integrity);
27
+ return integrity;
28
+ }
@@ -1,2 +1,3 @@
1
- export declare const getPublicIpAddress: () => Promise<string | undefined>;
1
+ export declare const getPublicHost: () => Promise<string | undefined>;
2
+ export declare const formatHost: (host: string) => string;
2
3
  //# sourceMappingURL=network.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/utils/network.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CA8BrE,CAAC"}
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/utils/network.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,aAAa,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CA+ChE,CAAC;AAIF,eAAO,MAAM,UAAU,SAAU,MAAM,KAAG,MAUzC,CAAC"}
@@ -3,36 +3,61 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getPublicIpAddress = void 0;
6
+ exports.formatHost = exports.getPublicHost = void 0;
7
7
  const superagent_1 = __importDefault(require("superagent"));
8
8
  const MAX_RETRIES = 5;
9
9
  const RETRY_DELAY = 2000; // in milliseconds
10
- const getPublicIpAddress = async () => {
11
- const publicIp = process.env.PUBLIC_IP;
12
- if (publicIp) {
13
- console.log('Public IP address from env:', publicIp);
14
- return publicIp;
10
+ // Regular expression for validating both IPv4 and IPv6 addresses
11
+ const ipv4Regex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
12
+ const ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4}|:)|(([0-9a-fA-F]{1,7}|:):){1,7}([0-9a-fA-F]{1,4}|:))$/;
13
+ // Regular expression for validating hostnames
14
+ const hostnameRegex = /^(([a-zA-Z0-9](-*[a-zA-Z0-9])*)\.)*[a-zA-Z]{2,}$/;
15
+ // Helper function to validate the IP address or hostname
16
+ const isValidHost = (host) => {
17
+ return ipv4Regex.test(host) || ipv6Regex.test(host) || hostnameRegex.test(host);
18
+ };
19
+ const getPublicHost = async () => {
20
+ const publicHost = process.env.PUBLIC_IP;
21
+ if (publicHost) {
22
+ console.log("Public IP/Hostname from env:", publicHost);
23
+ if (isValidHost(publicHost)) {
24
+ return publicHost;
25
+ }
26
+ console.error("Invalid public IP/Hostname in environment variable");
27
+ return undefined;
15
28
  }
16
29
  let attempt = 0;
17
30
  while (attempt < MAX_RETRIES) {
18
31
  try {
19
- const response = await superagent_1.default.get('https://api.datalayer.storage/user/v1/get_user_ip');
32
+ const response = await superagent_1.default.get("https://api.datalayer.storage/user/v1/get_user_ip");
20
33
  if (response.body && response.body.success) {
21
- console.log('Public IP address:', response.body);
22
- return response.body.ip_address;
23
- }
24
- else {
25
- throw new Error('Failed to retrieve public IP address');
34
+ const ipAddress = response.body.ip_address;
35
+ if (isValidHost(ipAddress)) {
36
+ return ipAddress;
37
+ }
38
+ throw new Error("Invalid IP address or hostname format received");
26
39
  }
40
+ throw new Error("Failed to retrieve public host");
27
41
  }
28
42
  catch (error) {
29
43
  attempt++;
30
- console.error(`Error fetching public IP address (Attempt ${attempt}):`, error.message);
44
+ console.error(`Error fetching public host (Attempt ${attempt}):`, error.message);
31
45
  if (attempt >= MAX_RETRIES) {
32
- throw new Error('Could not retrieve public IP address after several attempts');
46
+ throw new Error("Could not retrieve public host after several attempts");
33
47
  }
34
48
  await new Promise((resolve) => setTimeout(resolve, RETRY_DELAY));
35
49
  }
36
50
  }
37
51
  };
38
- exports.getPublicIpAddress = getPublicIpAddress;
52
+ exports.getPublicHost = getPublicHost;
53
+ // Helper function to wrap IPv6 addresses in brackets
54
+ const formatHost = (host) => {
55
+ const ipv6Pattern = /^[a-fA-F0-9:]+$/; // Simple regex to match raw IPv6 addresses (without brackets)
56
+ const hasBrackets = /^\[.*\]$/; // Regex to check if the address already has brackets
57
+ // If it's an IPv6 address without brackets, add them
58
+ if (ipv6Pattern.test(host) && !hasBrackets.test(host)) {
59
+ return `[${host}]`;
60
+ }
61
+ return host; // Return the host as is (IPv4, hostname, or already bracketed IPv6)
62
+ };
63
+ exports.formatHost = formatHost;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Processes items in sequential batches with a concurrency limit.
3
+ * Adds a cooldown between batches.
4
+ * @param {number} limit - The maximum number of concurrent executions per batch.
5
+ * @param {Array<T>} items - The array of items to process.
6
+ * @param {(item: T) => Promise<R>} iteratorFn - The async function to apply to each item.
7
+ * @param {number} cooldownMs - The cooldown duration between batches in milliseconds.
8
+ * @returns {Promise<Array<R>>} - A promise that resolves when all items have been processed.
9
+ */
10
+ export declare function asyncPool<T, R>(limit: number, items: T[], iteratorFn: (item: T) => Promise<R>, cooldownMs?: number): Promise<R[]>;
11
+ /**
12
+ * Helper function to add a timeout to a promise.
13
+ * @param promise The original promise.
14
+ * @param ms Timeout in milliseconds.
15
+ * @param timeoutMessage The error message when the timeout is reached.
16
+ * @returns Promise that resolves before the timeout or rejects with an error.
17
+ */
18
+ export declare const withTimeout: <T>(promise: Promise<T>, ms: number, timeoutMessage: string) => Promise<T>;
19
+ /**
20
+ * Wraps a promise to execute a callback every 30 seconds while the promise is pending.
21
+ *
22
+ * @param {Promise<T>} promise - The promise to wrap.
23
+ * @param {() => void} callback - The callback function to call every 30 seconds.
24
+ * @returns {Promise<T>} - A new promise that resolves or rejects with the original promise's result.
25
+ */
26
+ export declare const withIntervalCallback: <T>(promise: Promise<T>, callback: () => void) => Promise<T>;
27
+ //# sourceMappingURL=promiseUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promiseUtils.d.ts","sourceRoot":"","sources":["../../src/utils/promiseUtils.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,CAAC,EAClC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,CAAC,EAAE,EACV,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EACnC,UAAU,GAAE,MAAY,GACvB,OAAO,CAAC,CAAC,EAAE,CAAC,CAkBd;AACC;;;;;;EAMC;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,WAClB,OAAO,CAAC,CAAC,CAAC,MACf,MAAM,kBACM,MAAM,KACrB,OAAO,CAAC,CAAC,CAOX,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,WAC3B,OAAO,CAAC,CAAC,CAAC,YACT,MAAM,IAAI,KACnB,OAAO,CAAC,CAAC,CAoBX,CAAC"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withIntervalCallback = exports.withTimeout = void 0;
4
+ exports.asyncPool = asyncPool;
5
+ /**
6
+ * Processes items in sequential batches with a concurrency limit.
7
+ * Adds a cooldown between batches.
8
+ * @param {number} limit - The maximum number of concurrent executions per batch.
9
+ * @param {Array<T>} items - The array of items to process.
10
+ * @param {(item: T) => Promise<R>} iteratorFn - The async function to apply to each item.
11
+ * @param {number} cooldownMs - The cooldown duration between batches in milliseconds.
12
+ * @returns {Promise<Array<R>>} - A promise that resolves when all items have been processed.
13
+ */
14
+ async function asyncPool(limit, items, iteratorFn, cooldownMs = 500 // Default cooldown of 500ms
15
+ ) {
16
+ const ret = [];
17
+ for (let i = 0; i < items.length; i += limit) {
18
+ const batchItems = items.slice(i, i + limit);
19
+ const batchPromises = batchItems.map((item) => iteratorFn(item));
20
+ // Wait for the current batch to complete before starting the next one
21
+ const batchResults = await Promise.all(batchPromises);
22
+ ret.push(...batchResults);
23
+ // Add a cooldown between batches, except after the last batch
24
+ if (i + limit < items.length) {
25
+ await new Promise((resolve) => setTimeout(resolve, cooldownMs));
26
+ }
27
+ }
28
+ return ret;
29
+ }
30
+ /**
31
+ * Helper function to add a timeout to a promise.
32
+ * @param promise The original promise.
33
+ * @param ms Timeout in milliseconds.
34
+ * @param timeoutMessage The error message when the timeout is reached.
35
+ * @returns Promise that resolves before the timeout or rejects with an error.
36
+ */
37
+ const withTimeout = (promise, ms, timeoutMessage) => {
38
+ return Promise.race([
39
+ promise,
40
+ new Promise((_, reject) => setTimeout(() => reject(new Error(timeoutMessage)), ms)),
41
+ ]);
42
+ };
43
+ exports.withTimeout = withTimeout;
44
+ /**
45
+ * Wraps a promise to execute a callback every 30 seconds while the promise is pending.
46
+ *
47
+ * @param {Promise<T>} promise - The promise to wrap.
48
+ * @param {() => void} callback - The callback function to call every 30 seconds.
49
+ * @returns {Promise<T>} - A new promise that resolves or rejects with the original promise's result.
50
+ */
51
+ const withIntervalCallback = (promise, callback) => {
52
+ const intervalTime = 30000; // 30 seconds in milliseconds
53
+ let intervalId;
54
+ // Start the interval that calls the callback every 30 seconds
55
+ intervalId = setInterval(() => {
56
+ callback();
57
+ }, intervalTime);
58
+ // Return a new promise that clears the interval when the original promise settles
59
+ return promise
60
+ .then((result) => {
61
+ clearInterval(intervalId);
62
+ return result;
63
+ })
64
+ .catch((error) => {
65
+ clearInterval(intervalId);
66
+ throw error;
67
+ });
68
+ };
69
+ exports.withIntervalCallback = withIntervalCallback;
package/dist/utils/ssl.js CHANGED
@@ -26,7 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.getOrCreateSSLCerts = void 0;
27
27
  const fs = __importStar(require("fs"));
28
28
  const path = __importStar(require("path"));
29
- const chia_server_coin_1 = require("chia-server-coin");
29
+ const datalayer_driver_1 = require("@dignetwork/datalayer-driver");
30
30
  const config_1 = require("./config");
31
31
  const getOrCreateSSLCerts = () => {
32
32
  const sslDir = path.join(config_1.USER_DIR_PATH, "ssl");
@@ -38,7 +38,7 @@ const getOrCreateSSLCerts = () => {
38
38
  }
39
39
  // Check if the certificate and key exist, if not, generate them
40
40
  if (!fs.existsSync(certPath) || !fs.existsSync(keyPath)) {
41
- new chia_server_coin_1.Tls(certPath, keyPath);
41
+ new datalayer_driver_1.Tls(certPath, keyPath);
42
42
  console.log("Client certificate and key generated successfully.");
43
43
  }
44
44
  // Return the paths to the cert and key files
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dignetwork/dig-sdk",
3
- "version": "0.0.1-alpha.17",
3
+ "version": "0.0.1-alpha.171",
4
4
  "description": "",
5
5
  "type": "commonjs",
6
6
  "main": "./dist/index.js",
@@ -25,15 +25,20 @@
25
25
  "LICENSE"
26
26
  ],
27
27
  "dependencies": {
28
+ "@dignetwork/datalayer-driver": "^0.1.29",
29
+ "@dignetwork/dig-sdk": "^0.0.1-alpha.158",
30
+ "archiver": "^7.0.1",
31
+ "axios": "^1.7.7",
28
32
  "bip39": "^3.1.0",
33
+ "bottleneck": "^2.19.5",
29
34
  "chia-bls": "^1.0.2",
30
35
  "chia-config-loader": "^1.0.1",
31
36
  "chia-root-resolver": "^1.0.0",
32
- "chia-server-coin": "^0.0.5",
33
37
  "chia-wallet": "^1.0.18",
34
38
  "cli-progress": "^3.12.0",
39
+ "colorette": "^2.0.20",
35
40
  "crypto-js": "^4.2.0",
36
- "datalayer-driver": "^0.1.21",
41
+ "figures": "^6.1.0",
37
42
  "fs-extra": "^11.2.0",
38
43
  "ignore": "^5.3.2",
39
44
  "inquirer": "^10.1.8",
@@ -41,10 +46,16 @@
41
46
  "merkletreejs": "^0.4.0",
42
47
  "nanospinner": "^1.1.0",
43
48
  "nconf": "^0.12.1",
44
- "p-limit": "^6.1.0",
45
- "superagent": "^10.0.0"
49
+ "node-cache": "^5.1.2",
50
+ "node-stun": "^0.1.2",
51
+ "progress-stream": "^2.0.0",
52
+ "proper-lockfile": "^4.1.2",
53
+ "redis": "^4.7.0",
54
+ "superagent": "^10.0.0",
55
+ "unzipper": "^0.12.3"
46
56
  },
47
57
  "devDependencies": {
58
+ "@types/archiver": "^6.0.2",
48
59
  "@types/chai": "^4.3.17",
49
60
  "@types/cli-progress": "^3.11.6",
50
61
  "@types/crypto-js": "^4.2.2",
@@ -54,7 +65,10 @@
54
65
  "@types/mocha": "^10.0.7",
55
66
  "@types/nconf": "^0.10.7",
56
67
  "@types/node": "^22.1.0",
68
+ "@types/progress-stream": "^2.0.5",
69
+ "@types/proper-lockfile": "^4.1.4",
57
70
  "@types/superagent": "^8.1.8",
71
+ "@types/unzipper": "^0.10.10",
58
72
  "chai": "^5.1.1",
59
73
  "copyfiles": "^2.4.1",
60
74
  "mocha": "^10.7.0",
@@ -1,2 +0,0 @@
1
- export declare const getDeltaFiles: (storeId: string, generationIndex: number | undefined, directoryPath: string) => Promise<string[]>;
2
- //# sourceMappingURL=deltaUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deltaUtils.d.ts","sourceRoot":"","sources":["../../src/utils/deltaUtils.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,aAAa,YACf,MAAM,mBACE,MAAM,6BACR,MAAM,KACpB,OAAO,CAAC,MAAM,EAAE,CAwElB,CAAC"}
@@ -1,83 +0,0 @@
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.getDeltaFiles = void 0;
27
- const fs = __importStar(require("fs"));
28
- const path = __importStar(require("path"));
29
- const hashUtils_1 = require("./hashUtils");
30
- const getDeltaFiles = async (storeId, generationIndex = 0, directoryPath) => {
31
- if (isNaN(generationIndex)) {
32
- generationIndex = 0;
33
- }
34
- // Load manifest file
35
- const manifestFilePath = path.join(directoryPath, storeId, "manifest.dat");
36
- if (!fs.existsSync(manifestFilePath)) {
37
- console.error("Manifest file not found", manifestFilePath);
38
- return [];
39
- }
40
- const manifestHashes = fs
41
- .readFileSync(manifestFilePath, "utf-8")
42
- .split("\n")
43
- .filter(Boolean);
44
- console.log("");
45
- console.log(`Uploading delta from generation ${generationIndex}`);
46
- const filesInvolved = [];
47
- // Include the height.dat file at the top of the directory
48
- const heightDatFilePath = path.join(directoryPath, storeId, "height.json");
49
- if (fs.existsSync(heightDatFilePath)) {
50
- filesInvolved.push(heightDatFilePath);
51
- }
52
- // Collect files starting from generationIndex + 1
53
- for (let i = generationIndex; i < manifestHashes.length; i++) {
54
- const rootHash = manifestHashes[i];
55
- const datFilePath = path.join(directoryPath, storeId, `${rootHash}.dat`);
56
- if (!fs.existsSync(datFilePath)) {
57
- console.error(`Data file for root hash ${rootHash} not found`);
58
- return [];
59
- }
60
- const datFileContent = JSON.parse(fs.readFileSync(datFilePath, "utf-8"));
61
- if (datFileContent.root !== rootHash) {
62
- console.error(`Root hash in data file does not match: ${datFileContent.root} !== ${rootHash}`);
63
- return [];
64
- }
65
- // Add the .dat file itself to the list of files involved
66
- filesInvolved.push(datFilePath);
67
- // Collect all files involved, ensuring correct paths
68
- for (const file of Object.keys(datFileContent.files)) {
69
- const filePath = (0, hashUtils_1.getFilePathFromSha256)(datFileContent.files[file].sha256, path.join(directoryPath, storeId, "data"));
70
- filesInvolved.push(filePath);
71
- }
72
- }
73
- if (process.env.DIG_DEBUG === "1") {
74
- console.log("Files involved in the delta:");
75
- console.table(filesInvolved);
76
- }
77
- // list the manifest file last, this actually
78
- // helps with upload because by overriding the manifest file last,
79
- // the store can still be considered valid even when the upload is interrupted
80
- filesInvolved.push(manifestFilePath);
81
- return filesInvolved;
82
- };
83
- exports.getDeltaFiles = getDeltaFiles;