@rhyster/wow-casc-dbc 2.5.0 → 2.5.1

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/index.cjs CHANGED
@@ -485,19 +485,22 @@ class BLTEReader {
485
485
  offset += ivLength;
486
486
  const encryptType = buffer.readUInt8(offset);
487
487
  offset += 1;
488
- assert__default(encryptType === ENC_TYPE_SALSA20, `[BLTE]: Invalid encrypt type: ${encryptType.toString(16).padStart(2, "0")}`);
488
+ assert__default(encryptType === ENC_TYPE_SALSA20, `[BLTE]: Invalid encrypt type: ${encryptType.toString(16).padStart(2, "0")} at block ${index.toString()}`);
489
489
  const keyName = [...keyNameBE.matchAll(/.{2}/g)].map((v) => v[0]).reverse().join("").toLowerCase();
490
490
  const key = this.keys.get(keyName);
491
491
  if (!key) {
492
492
  if (allowMissingKey) {
493
493
  return keyName;
494
494
  }
495
- throw new Error(`[BLTE]: Missing key: ${keyName}`);
495
+ throw new Error(`[BLTE]: Missing key: ${keyName} at block ${index.toString()}`);
496
496
  }
497
497
  const iv = new Uint8Array(8);
498
498
  for (let i = 0; i < 8; i += 1) {
499
- const byte = ivBuffer.byteLength > i ? ivBuffer.readUInt8(i) : void 0;
500
- iv[i] = byte ? byte ^ index >> 8 * i & 255 : 0;
499
+ if (i < ivLength) {
500
+ iv[i] = ivBuffer.readUInt8(i) ^ index >>> 8 * i & 255;
501
+ } else {
502
+ iv[i] = 0;
503
+ }
501
504
  }
502
505
  const handler = new Salsa20(key, iv);
503
506
  const decrypted = handler.process(buffer.subarray(offset));
@@ -507,13 +510,13 @@ class BLTEReader {
507
510
  return this.processBlock(Buffer.from(decrypted.buffer), index, false);
508
511
  }
509
512
  case 70:
510
- throw new Error("[BLTE]: Frame (Recursive) block not supported");
513
+ throw new Error(`[BLTE]: Frame (Recursive) block not supported at block ${index.toString()}`);
511
514
  case 78:
512
515
  return buffer.subarray(1);
513
516
  case 90:
514
517
  return zlib__default.inflateSync(buffer.subarray(1));
515
518
  default:
516
- throw new Error(`[BLTE]: Invalid block flag: ${flag.toString(16).padStart(2, "0")}`);
519
+ throw new Error(`[BLTE]: Invalid block flag: ${flag.toString(16).padStart(2, "0")} at block ${index.toString()}`);
517
520
  }
518
521
  }
519
522
  processBytes(allowMissingKey = false, size = Infinity) {
@@ -1674,9 +1677,12 @@ class CASCClient {
1674
1677
  const reader = new BLTEReader(blte, eKey, this.keys);
1675
1678
  if (!allowMissingKey) {
1676
1679
  reader.processBytes(allowMissingKey);
1680
+ const hash = crypto__default.createHash("md5").update(reader.buffer).digest("hex");
1681
+ assert__default(hash === cKey, `Invalid hash: expected ${cKey}, got ${hash}`);
1677
1682
  return {
1678
1683
  type: "full",
1679
- buffer: reader.buffer
1684
+ buffer: reader.buffer,
1685
+ blocks: void 0
1680
1686
  };
1681
1687
  }
1682
1688
  const blocks = reader.processBytes(allowMissingKey);
@@ -1685,7 +1691,8 @@ class CASCClient {
1685
1691
  assert__default(hash === cKey, `Invalid hash: expected ${cKey}, got ${hash}`);
1686
1692
  return {
1687
1693
  type: "full",
1688
- buffer: reader.buffer
1694
+ buffer: reader.buffer,
1695
+ blocks: void 0
1689
1696
  };
1690
1697
  }
1691
1698
  return {
package/dist/index.d.cts CHANGED
@@ -68,6 +68,7 @@ interface ClientPreloadData {
68
68
  interface FileFetchResultFull {
69
69
  type: 'full';
70
70
  buffer: Buffer;
71
+ blocks: undefined;
71
72
  }
72
73
  interface FileFetchResultPartial {
73
74
  type: 'partial';
package/dist/index.d.mts CHANGED
@@ -68,6 +68,7 @@ interface ClientPreloadData {
68
68
  interface FileFetchResultFull {
69
69
  type: 'full';
70
70
  buffer: Buffer;
71
+ blocks: undefined;
71
72
  }
72
73
  interface FileFetchResultPartial {
73
74
  type: 'partial';
package/dist/index.d.ts CHANGED
@@ -68,6 +68,7 @@ interface ClientPreloadData {
68
68
  interface FileFetchResultFull {
69
69
  type: 'full';
70
70
  buffer: Buffer;
71
+ blocks: undefined;
71
72
  }
72
73
  interface FileFetchResultPartial {
73
74
  type: 'partial';
package/dist/index.mjs CHANGED
@@ -473,19 +473,22 @@ class BLTEReader {
473
473
  offset += ivLength;
474
474
  const encryptType = buffer.readUInt8(offset);
475
475
  offset += 1;
476
- assert(encryptType === ENC_TYPE_SALSA20, `[BLTE]: Invalid encrypt type: ${encryptType.toString(16).padStart(2, "0")}`);
476
+ assert(encryptType === ENC_TYPE_SALSA20, `[BLTE]: Invalid encrypt type: ${encryptType.toString(16).padStart(2, "0")} at block ${index.toString()}`);
477
477
  const keyName = [...keyNameBE.matchAll(/.{2}/g)].map((v) => v[0]).reverse().join("").toLowerCase();
478
478
  const key = this.keys.get(keyName);
479
479
  if (!key) {
480
480
  if (allowMissingKey) {
481
481
  return keyName;
482
482
  }
483
- throw new Error(`[BLTE]: Missing key: ${keyName}`);
483
+ throw new Error(`[BLTE]: Missing key: ${keyName} at block ${index.toString()}`);
484
484
  }
485
485
  const iv = new Uint8Array(8);
486
486
  for (let i = 0; i < 8; i += 1) {
487
- const byte = ivBuffer.byteLength > i ? ivBuffer.readUInt8(i) : void 0;
488
- iv[i] = byte ? byte ^ index >> 8 * i & 255 : 0;
487
+ if (i < ivLength) {
488
+ iv[i] = ivBuffer.readUInt8(i) ^ index >>> 8 * i & 255;
489
+ } else {
490
+ iv[i] = 0;
491
+ }
489
492
  }
490
493
  const handler = new Salsa20(key, iv);
491
494
  const decrypted = handler.process(buffer.subarray(offset));
@@ -495,13 +498,13 @@ class BLTEReader {
495
498
  return this.processBlock(Buffer.from(decrypted.buffer), index, false);
496
499
  }
497
500
  case 70:
498
- throw new Error("[BLTE]: Frame (Recursive) block not supported");
501
+ throw new Error(`[BLTE]: Frame (Recursive) block not supported at block ${index.toString()}`);
499
502
  case 78:
500
503
  return buffer.subarray(1);
501
504
  case 90:
502
505
  return zlib.inflateSync(buffer.subarray(1));
503
506
  default:
504
- throw new Error(`[BLTE]: Invalid block flag: ${flag.toString(16).padStart(2, "0")}`);
507
+ throw new Error(`[BLTE]: Invalid block flag: ${flag.toString(16).padStart(2, "0")} at block ${index.toString()}`);
505
508
  }
506
509
  }
507
510
  processBytes(allowMissingKey = false, size = Infinity) {
@@ -1662,9 +1665,12 @@ class CASCClient {
1662
1665
  const reader = new BLTEReader(blte, eKey, this.keys);
1663
1666
  if (!allowMissingKey) {
1664
1667
  reader.processBytes(allowMissingKey);
1668
+ const hash = crypto.createHash("md5").update(reader.buffer).digest("hex");
1669
+ assert(hash === cKey, `Invalid hash: expected ${cKey}, got ${hash}`);
1665
1670
  return {
1666
1671
  type: "full",
1667
- buffer: reader.buffer
1672
+ buffer: reader.buffer,
1673
+ blocks: void 0
1668
1674
  };
1669
1675
  }
1670
1676
  const blocks = reader.processBytes(allowMissingKey);
@@ -1673,7 +1679,8 @@ class CASCClient {
1673
1679
  assert(hash === cKey, `Invalid hash: expected ${cKey}, got ${hash}`);
1674
1680
  return {
1675
1681
  type: "full",
1676
- buffer: reader.buffer
1682
+ buffer: reader.buffer,
1683
+ blocks: void 0
1677
1684
  };
1678
1685
  }
1679
1686
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rhyster/wow-casc-dbc",
3
- "version": "2.5.0",
3
+ "version": "2.5.1",
4
4
  "description": "Fetch World of Warcraft data files from CASC and parse DBC/DB2 files.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -40,15 +40,15 @@
40
40
  "@types/async": "^3.2.24",
41
41
  "@types/cli-progress": "^3.11.5",
42
42
  "@types/jest": "^29.5.12",
43
- "@types/node": "^20.13.0",
44
- "@typescript-eslint/eslint-plugin": "^7.11.0",
45
- "@typescript-eslint/parser": "^7.11.0",
43
+ "@types/node": "^20.14.2",
44
+ "@typescript-eslint/eslint-plugin": "^7.12.0",
45
+ "@typescript-eslint/parser": "^7.12.0",
46
46
  "eslint": "^8.57.0",
47
47
  "eslint-config-airbnb-base": "^15.0.0",
48
48
  "eslint-config-airbnb-typescript": "^18.0.0",
49
49
  "jest": "^29.7.0",
50
50
  "ts-jest": "^29.1.4",
51
- "tsx": "^4.11.0",
51
+ "tsx": "^4.11.2",
52
52
  "typescript": "^5.4.5",
53
53
  "unbuild": "^2.0.0"
54
54
  },
@@ -56,5 +56,5 @@
56
56
  "async": "^3.2.5",
57
57
  "cli-progress": "^3.12.0"
58
58
  },
59
- "packageManager": "pnpm@9.1.4+sha512.9df9cf27c91715646c7d675d1c9c8e41f6fce88246f1318c1aa6a1ed1aeb3c4f032fcdf4ba63cc69c4fe6d634279176b5358727d8f2cc1e65b65f43ce2f8bfb0"
59
+ "packageManager": "pnpm@9.2.0+sha512.98a80fd11c2e7096747762304106432b3ddc67dcf54b5a8c01c93f68a2cd5e05e6821849522a06fb76284d41a2660d5e334f2ee3bbf29183bf2e739b1dafa771"
60
60
  }