@jsprismarine/protocol 0.14.0 → 0.14.1-unstable-20260512195405

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 (50) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/NetworkBinaryStream.cjs.cjs +65 -61
  3. package/dist/NetworkBinaryStream.es.js +58 -53
  4. package/dist/NetworkPacket.cjs.cjs +67 -66
  5. package/dist/NetworkPacket.es.js +62 -62
  6. package/dist/NetworkStructure.cjs.cjs +26 -20
  7. package/dist/NetworkStructure.es.js +21 -16
  8. package/dist/PacketIdentifier.cjs.cjs +35 -31
  9. package/dist/PacketIdentifier.es.js +33 -27
  10. package/dist/_virtual/_rolldown/runtime.cjs.cjs +34 -0
  11. package/dist/_virtual/_rolldown/runtime.es.js +13 -0
  12. package/dist/index.cjs.cjs +51 -52
  13. package/dist/index.es.js +23 -24
  14. package/dist/structure/ActorLink.cjs.cjs +43 -35
  15. package/dist/structure/ActorLink.es.js +38 -31
  16. package/dist/structure/BlockPos.cjs.cjs +34 -31
  17. package/dist/structure/BlockPos.es.js +29 -27
  18. package/dist/structure/ChunkPos.cjs.cjs +28 -26
  19. package/dist/structure/ChunkPos.es.js +26 -22
  20. package/dist/structure/DataItem.cjs.cjs +93 -87
  21. package/dist/structure/DataItem.es.js +90 -83
  22. package/dist/structure/Experiments.cjs.cjs +30 -29
  23. package/dist/structure/Experiments.es.js +25 -25
  24. package/dist/structure/ItemData.cjs.cjs +35 -29
  25. package/dist/structure/ItemData.es.js +30 -25
  26. package/dist/structure/ItemInstanceUserData.cjs.cjs +56 -59
  27. package/dist/structure/ItemInstanceUserData.es.js +50 -55
  28. package/dist/structure/LevelSettings.cjs.cjs +193 -175
  29. package/dist/structure/LevelSettings.es.js +187 -171
  30. package/dist/structure/NetworkItemStackDescriptor.cjs.cjs +56 -49
  31. package/dist/structure/NetworkItemStackDescriptor.es.js +51 -45
  32. package/dist/structure/PropertySyncData.cjs.cjs +38 -33
  33. package/dist/structure/PropertySyncData.es.js +33 -29
  34. package/dist/structure/SerializedAbilitiesData.cjs.cjs +39 -41
  35. package/dist/structure/SerializedAbilitiesData.es.js +34 -37
  36. package/dist/structure/SerializedAbilityLayer.cjs.cjs +43 -35
  37. package/dist/structure/SerializedAbilityLayer.es.js +38 -31
  38. package/dist/structure/SpawnSettings.cjs.cjs +33 -27
  39. package/dist/structure/SpawnSettings.es.js +28 -23
  40. package/dist/structure/SyncedPlayerMovementSettings.cjs.cjs +35 -29
  41. package/dist/structure/SyncedPlayerMovementSettings.es.js +30 -25
  42. package/dist/structure/UUID.cjs.cjs +27 -26
  43. package/dist/structure/UUID.es.js +22 -22
  44. package/dist/structure/Vec2.cjs.cjs +44 -36
  45. package/dist/structure/Vec2.es.js +39 -32
  46. package/dist/structure/Vec3.cjs.cjs +45 -38
  47. package/dist/structure/Vec3.es.js +40 -34
  48. package/dist/structure/index.cjs.cjs +65 -41
  49. package/dist/structure/index.es.js +42 -18
  50. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @jsprismarine/protocol
2
2
 
3
+ ## 0.14.1-unstable-20260512195405
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies []:
8
+ - @jsprismarine/minecraft@0.14.1-unstable-20260512195405
9
+ - @jsprismarine/nbt@0.14.1-unstable-20260512195405
10
+
3
11
  ## 0.14.0
4
12
 
5
13
  ### Minor Changes
@@ -1,62 +1,66 @@
1
- 'use strict';
2
-
3
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
4
-
5
- const BinaryStream = require('@jsprismarine/jsbinaryutils');
6
-
7
- const _interopDefault = e => e && e.__esModule ? e : { default: e };
8
-
9
- const BinaryStream__default = /*#__PURE__*/_interopDefault(BinaryStream);
10
-
11
- class NetworkBinaryStream extends BinaryStream__default.default {
12
- /**
13
- * Reads a string from the stream.
14
- * {@link https://mojang.github.io/bedrock-protocol-docs/html/string.html | Not documented in the protocol docs}
15
- * @returns The read string.
16
- */
17
- readString() {
18
- return this.readLengthPrefixed().toString("utf-8");
19
- }
20
- /**
21
- * Writes a string to the stream.
22
- * @param str - The string to write.
23
- */
24
- writeString(str) {
25
- this.writeLengthPrefixed(Buffer.from(str, "utf-8"));
26
- }
27
- /**
28
- * Reads a length-prefixed ASCII string from the stream.
29
- * {@link https://mojang.github.io/bedrock-protocol-docs/html/string.html | Not documented in the protocol docs}
30
- * @returns The read string.
31
- */
32
- readLELengthASCIIString() {
33
- return this.read(this.readUnsignedIntLE()).toString("ascii");
34
- }
35
- /**
36
- * Writes a length-prefixed ASCII string to the stream.
37
- * @param str - The string to write.
38
- */
39
- writeLELengthASCIIString(str) {
40
- const buf = Buffer.from(str, "ascii");
41
- this.writeUnsignedIntLE(buf.byteLength);
42
- this.write(buf);
43
- }
44
- /**
45
- * Reads a length-prefixed buffer from the stream.
46
- * @returns The length-prefixed buffer.
47
- */
48
- readLengthPrefixed() {
49
- return this.read(this.readUnsignedVarInt());
50
- }
51
- /**
52
- * Writes a length-prefixed buffer to the stream.
53
- * @param buf - The buffer to append.
54
- */
55
- writeLengthPrefixed(buf) {
56
- this.writeUnsignedVarInt(buf.byteLength);
57
- this.write(buf);
58
- }
59
- }
60
-
1
+ "use strict";
2
+ Object.defineProperties(exports, {
3
+ __esModule: { value: true },
4
+ [Symbol.toStringTag]: { value: "Module" }
5
+ });
6
+ const require_runtime = require("./_virtual/_rolldown/runtime.cjs.cjs");
7
+ let _jsprismarine_jsbinaryutils = require("@jsprismarine/jsbinaryutils");
8
+ _jsprismarine_jsbinaryutils = require_runtime.__toESM(_jsprismarine_jsbinaryutils, 1);
9
+ //#region src/NetworkBinaryStream.ts
10
+ /**
11
+ * Represents an extended version of the BinaryStream class that includes
12
+ * minecraft-specific serialization methods.
13
+ */
14
+ var NetworkBinaryStream = class extends _jsprismarine_jsbinaryutils.default {
15
+ /**
16
+ * Reads a string from the stream.
17
+ * {@link https://mojang.github.io/bedrock-protocol-docs/html/string.html | Not documented in the protocol docs}
18
+ * @returns The read string.
19
+ */
20
+ readString() {
21
+ return this.readLengthPrefixed().toString("utf-8");
22
+ }
23
+ /**
24
+ * Writes a string to the stream.
25
+ * @param str - The string to write.
26
+ */
27
+ writeString(str) {
28
+ this.writeLengthPrefixed(Buffer.from(str, "utf-8"));
29
+ }
30
+ /**
31
+ * Reads a length-prefixed ASCII string from the stream.
32
+ * {@link https://mojang.github.io/bedrock-protocol-docs/html/string.html | Not documented in the protocol docs}
33
+ * @returns The read string.
34
+ */
35
+ readLELengthASCIIString() {
36
+ return this.read(this.readUnsignedIntLE()).toString("ascii");
37
+ }
38
+ /**
39
+ * Writes a length-prefixed ASCII string to the stream.
40
+ * @param str - The string to write.
41
+ */
42
+ writeLELengthASCIIString(str) {
43
+ const buf = Buffer.from(str, "ascii");
44
+ this.writeUnsignedIntLE(buf.byteLength);
45
+ this.write(buf);
46
+ }
47
+ /**
48
+ * Reads a length-prefixed buffer from the stream.
49
+ * @returns The length-prefixed buffer.
50
+ */
51
+ readLengthPrefixed() {
52
+ return this.read(this.readUnsignedVarInt());
53
+ }
54
+ /**
55
+ * Writes a length-prefixed buffer to the stream.
56
+ * @param buf - The buffer to append.
57
+ */
58
+ writeLengthPrefixed(buf) {
59
+ this.writeUnsignedVarInt(buf.byteLength);
60
+ this.write(buf);
61
+ }
62
+ };
63
+ //#endregion
61
64
  exports.default = NetworkBinaryStream;
62
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV0d29ya0JpbmFyeVN0cmVhbS5janMuY2pzIiwic291cmNlcyI6WyIuLi9zcmMvTmV0d29ya0JpbmFyeVN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmluYXJ5U3RyZWFtIGZyb20gJ0Bqc3ByaXNtYXJpbmUvanNiaW5hcnl1dGlscyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBleHRlbmRlZCB2ZXJzaW9uIG9mIHRoZSBCaW5hcnlTdHJlYW0gY2xhc3MgdGhhdCBpbmNsdWRlc1xuICogbWluZWNyYWZ0LXNwZWNpZmljIHNlcmlhbGl6YXRpb24gbWV0aG9kcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV0d29ya0JpbmFyeVN0cmVhbSBleHRlbmRzIEJpbmFyeVN0cmVhbSB7XG4gICAgLyoqXG4gICAgICogUmVhZHMgYSBzdHJpbmcgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIHtAbGluayBodHRwczovL21vamFuZy5naXRodWIuaW8vYmVkcm9jay1wcm90b2NvbC1kb2NzL2h0bWwvc3RyaW5nLmh0bWwgfCBOb3QgZG9jdW1lbnRlZCBpbiB0aGUgcHJvdG9jb2wgZG9jc31cbiAgICAgKiBAcmV0dXJucyBUaGUgcmVhZCBzdHJpbmcuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZExlbmd0aFByZWZpeGVkKCkudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGVzIGEgc3RyaW5nIHRvIHRoZSBzdHJlYW0uXG4gICAgICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gd3JpdGUuXG4gICAgICovXG4gICAgcHVibGljIHdyaXRlU3RyaW5nKHN0cjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMud3JpdGVMZW5ndGhQcmVmaXhlZChCdWZmZXIuZnJvbShzdHIsICd1dGYtOCcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkcyBhIGxlbmd0aC1wcmVmaXhlZCBBU0NJSSBzdHJpbmcgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIHtAbGluayBodHRwczovL21vamFuZy5naXRodWIuaW8vYmVkcm9jay1wcm90b2NvbC1kb2NzL2h0bWwvc3RyaW5nLmh0bWwgfCBOb3QgZG9jdW1lbnRlZCBpbiB0aGUgcHJvdG9jb2wgZG9jc31cbiAgICAgKiBAcmV0dXJucyBUaGUgcmVhZCBzdHJpbmcuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRMRUxlbmd0aEFTQ0lJU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWQodGhpcy5yZWFkVW5zaWduZWRJbnRMRSgpKS50b1N0cmluZygnYXNjaWknKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZXMgYSBsZW5ndGgtcHJlZml4ZWQgQVNDSUkgc3RyaW5nIHRvIHRoZSBzdHJlYW0uXG4gICAgICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gd3JpdGUuXG4gICAgICovXG4gICAgcHVibGljIHdyaXRlTEVMZW5ndGhBU0NJSVN0cmluZyhzdHI6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBidWYgPSBCdWZmZXIuZnJvbShzdHIsICdhc2NpaScpO1xuICAgICAgICB0aGlzLndyaXRlVW5zaWduZWRJbnRMRShidWYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIHRoaXMud3JpdGUoYnVmKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkcyBhIGxlbmd0aC1wcmVmaXhlZCBidWZmZXIgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm5zIFRoZSBsZW5ndGgtcHJlZml4ZWQgYnVmZmVyLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkTGVuZ3RoUHJlZml4ZWQoKTogQnVmZmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZCh0aGlzLnJlYWRVbnNpZ25lZFZhckludCgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZXMgYSBsZW5ndGgtcHJlZml4ZWQgYnVmZmVyIHRvIHRoZSBzdHJlYW0uXG4gICAgICogQHBhcmFtIGJ1ZiAtIFRoZSBidWZmZXIgdG8gYXBwZW5kLlxuICAgICAqL1xuICAgIHB1YmxpYyB3cml0ZUxlbmd0aFByZWZpeGVkKGJ1ZjogQnVmZmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMud3JpdGVVbnNpZ25lZFZhckludChidWYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIHRoaXMud3JpdGUoYnVmKTtcbiAgICB9XG59XG4iXSwibmFtZXMiOlsiQmluYXJ5U3RyZWFtIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBTUEsTUFBcUIsNEJBQTRCQSw2QkFBQSxDQUFhO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTW5ELFVBQUEsR0FBcUI7QUFDeEIsSUFBQSxPQUFPLElBQUEsQ0FBSyxrQkFBQSxFQUFtQixDQUFFLFFBQUEsQ0FBUyxPQUFPLENBQUE7QUFBQSxFQUNyRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNTyxZQUFZLEdBQUEsRUFBbUI7QUFDbEMsSUFBQSxJQUFBLENBQUssbUJBQUEsQ0FBb0IsTUFBQSxDQUFPLElBQUEsQ0FBSyxHQUFBLEVBQUssT0FBTyxDQUFDLENBQUE7QUFBQSxFQUN0RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9PLHVCQUFBLEdBQWtDO0FBQ3JDLElBQUEsT0FBTyxLQUFLLElBQUEsQ0FBSyxJQUFBLENBQUssbUJBQW1CLENBQUEsQ0FBRSxTQUFTLE9BQU8sQ0FBQTtBQUFBLEVBQy9EO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1PLHlCQUF5QixHQUFBLEVBQW1CO0FBQy9DLElBQUEsTUFBTSxHQUFBLEdBQU0sTUFBQSxDQUFPLElBQUEsQ0FBSyxHQUFBLEVBQUssT0FBTyxDQUFBO0FBQ3BDLElBQUEsSUFBQSxDQUFLLGtCQUFBLENBQW1CLElBQUksVUFBVSxDQUFBO0FBQ3RDLElBQUEsSUFBQSxDQUFLLE1BQU0sR0FBRyxDQUFBO0FBQUEsRUFDbEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTU8sa0JBQUEsR0FBNkI7QUFDaEMsSUFBQSxPQUFPLElBQUEsQ0FBSyxJQUFBLENBQUssSUFBQSxDQUFLLGtCQUFBLEVBQW9CLENBQUE7QUFBQSxFQUM5QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNTyxvQkFBb0IsR0FBQSxFQUFtQjtBQUMxQyxJQUFBLElBQUEsQ0FBSyxtQkFBQSxDQUFvQixJQUFJLFVBQVUsQ0FBQTtBQUN2QyxJQUFBLElBQUEsQ0FBSyxNQUFNLEdBQUcsQ0FBQTtBQUFBLEVBQ2xCO0FBQ0o7Ozs7In0=
65
+
66
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV0d29ya0JpbmFyeVN0cmVhbS5janMuY2pzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9OZXR3b3JrQmluYXJ5U3RyZWFtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaW5hcnlTdHJlYW0gZnJvbSAnQGpzcHJpc21hcmluZS9qc2JpbmFyeXV0aWxzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGV4dGVuZGVkIHZlcnNpb24gb2YgdGhlIEJpbmFyeVN0cmVhbSBjbGFzcyB0aGF0IGluY2x1ZGVzXG4gKiBtaW5lY3JhZnQtc3BlY2lmaWMgc2VyaWFsaXphdGlvbiBtZXRob2RzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXR3b3JrQmluYXJ5U3RyZWFtIGV4dGVuZHMgQmluYXJ5U3RyZWFtIHtcbiAgICAvKipcbiAgICAgKiBSZWFkcyBhIHN0cmluZyBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICoge0BsaW5rIGh0dHBzOi8vbW9qYW5nLmdpdGh1Yi5pby9iZWRyb2NrLXByb3RvY29sLWRvY3MvaHRtbC9zdHJpbmcuaHRtbCB8IE5vdCBkb2N1bWVudGVkIGluIHRoZSBwcm90b2NvbCBkb2NzfVxuICAgICAqIEByZXR1cm5zIFRoZSByZWFkIHN0cmluZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZFN0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkTGVuZ3RoUHJlZml4ZWQoKS50b1N0cmluZygndXRmLTgnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZXMgYSBzdHJpbmcgdG8gdGhlIHN0cmVhbS5cbiAgICAgKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byB3cml0ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgd3JpdGVTdHJpbmcoc3RyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53cml0ZUxlbmd0aFByZWZpeGVkKEJ1ZmZlci5mcm9tKHN0ciwgJ3V0Zi04JykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlYWRzIGEgbGVuZ3RoLXByZWZpeGVkIEFTQ0lJIHN0cmluZyBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICoge0BsaW5rIGh0dHBzOi8vbW9qYW5nLmdpdGh1Yi5pby9iZWRyb2NrLXByb3RvY29sLWRvY3MvaHRtbC9zdHJpbmcuaHRtbCB8IE5vdCBkb2N1bWVudGVkIGluIHRoZSBwcm90b2NvbCBkb2NzfVxuICAgICAqIEByZXR1cm5zIFRoZSByZWFkIHN0cmluZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZExFTGVuZ3RoQVNDSUlTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZCh0aGlzLnJlYWRVbnNpZ25lZEludExFKCkpLnRvU3RyaW5nKCdhc2NpaScpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdyaXRlcyBhIGxlbmd0aC1wcmVmaXhlZCBBU0NJSSBzdHJpbmcgdG8gdGhlIHN0cmVhbS5cbiAgICAgKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byB3cml0ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgd3JpdGVMRUxlbmd0aEFTQ0lJU3RyaW5nKHN0cjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5mcm9tKHN0ciwgJ2FzY2lpJyk7XG4gICAgICAgIHRoaXMud3JpdGVVbnNpZ25lZEludExFKGJ1Zi5ieXRlTGVuZ3RoKTtcbiAgICAgICAgdGhpcy53cml0ZShidWYpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlYWRzIGEgbGVuZ3RoLXByZWZpeGVkIGJ1ZmZlciBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybnMgVGhlIGxlbmd0aC1wcmVmaXhlZCBidWZmZXIuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRMZW5ndGhQcmVmaXhlZCgpOiBCdWZmZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkKHRoaXMucmVhZFVuc2lnbmVkVmFySW50KCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdyaXRlcyBhIGxlbmd0aC1wcmVmaXhlZCBidWZmZXIgdG8gdGhlIHN0cmVhbS5cbiAgICAgKiBAcGFyYW0gYnVmIC0gVGhlIGJ1ZmZlciB0byBhcHBlbmQuXG4gICAgICovXG4gICAgcHVibGljIHdyaXRlTGVuZ3RoUHJlZml4ZWQoYnVmOiBCdWZmZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53cml0ZVVuc2lnbmVkVmFySW50KGJ1Zi5ieXRlTGVuZ3RoKTtcbiAgICAgICAgdGhpcy53cml0ZShidWYpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQU1BLElBQXFCLHNCQUFyQixjQUFpRCw0QkFBQSxRQUFhOzs7Ozs7Q0FNMUQsYUFBNEI7RUFDeEIsT0FBTyxLQUFLLG9CQUFvQixDQUFDLFNBQVMsUUFBUTs7Ozs7O0NBT3RELFlBQW1CLEtBQW1CO0VBQ2xDLEtBQUssb0JBQW9CLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQzs7Ozs7OztDQVF2RCwwQkFBeUM7RUFDckMsT0FBTyxLQUFLLEtBQUssS0FBSyxtQkFBbUIsQ0FBQyxDQUFDLFNBQVMsUUFBUTs7Ozs7O0NBT2hFLHlCQUFnQyxLQUFtQjtFQUMvQyxNQUFNLE1BQU0sT0FBTyxLQUFLLEtBQUssUUFBUTtFQUNyQyxLQUFLLG1CQUFtQixJQUFJLFdBQVc7RUFDdkMsS0FBSyxNQUFNLElBQUk7Ozs7OztDQU9uQixxQkFBb0M7RUFDaEMsT0FBTyxLQUFLLEtBQUssS0FBSyxvQkFBb0IsQ0FBQzs7Ozs7O0NBTy9DLG9CQUEyQixLQUFtQjtFQUMxQyxLQUFLLG9CQUFvQixJQUFJLFdBQVc7RUFDeEMsS0FBSyxNQUFNLElBQUkifQ==
@@ -1,54 +1,59 @@
1
- import BinaryStream from '@jsprismarine/jsbinaryutils';
2
-
3
- class NetworkBinaryStream extends BinaryStream {
4
- /**
5
- * Reads a string from the stream.
6
- * {@link https://mojang.github.io/bedrock-protocol-docs/html/string.html | Not documented in the protocol docs}
7
- * @returns The read string.
8
- */
9
- readString() {
10
- return this.readLengthPrefixed().toString("utf-8");
11
- }
12
- /**
13
- * Writes a string to the stream.
14
- * @param str - The string to write.
15
- */
16
- writeString(str) {
17
- this.writeLengthPrefixed(Buffer.from(str, "utf-8"));
18
- }
19
- /**
20
- * Reads a length-prefixed ASCII string from the stream.
21
- * {@link https://mojang.github.io/bedrock-protocol-docs/html/string.html | Not documented in the protocol docs}
22
- * @returns The read string.
23
- */
24
- readLELengthASCIIString() {
25
- return this.read(this.readUnsignedIntLE()).toString("ascii");
26
- }
27
- /**
28
- * Writes a length-prefixed ASCII string to the stream.
29
- * @param str - The string to write.
30
- */
31
- writeLELengthASCIIString(str) {
32
- const buf = Buffer.from(str, "ascii");
33
- this.writeUnsignedIntLE(buf.byteLength);
34
- this.write(buf);
35
- }
36
- /**
37
- * Reads a length-prefixed buffer from the stream.
38
- * @returns The length-prefixed buffer.
39
- */
40
- readLengthPrefixed() {
41
- return this.read(this.readUnsignedVarInt());
42
- }
43
- /**
44
- * Writes a length-prefixed buffer to the stream.
45
- * @param buf - The buffer to append.
46
- */
47
- writeLengthPrefixed(buf) {
48
- this.writeUnsignedVarInt(buf.byteLength);
49
- this.write(buf);
50
- }
51
- }
52
-
1
+ import BinaryStream from "@jsprismarine/jsbinaryutils";
2
+ //#region src/NetworkBinaryStream.ts
3
+ /**
4
+ * Represents an extended version of the BinaryStream class that includes
5
+ * minecraft-specific serialization methods.
6
+ */
7
+ var NetworkBinaryStream = class extends BinaryStream {
8
+ /**
9
+ * Reads a string from the stream.
10
+ * {@link https://mojang.github.io/bedrock-protocol-docs/html/string.html | Not documented in the protocol docs}
11
+ * @returns The read string.
12
+ */
13
+ readString() {
14
+ return this.readLengthPrefixed().toString("utf-8");
15
+ }
16
+ /**
17
+ * Writes a string to the stream.
18
+ * @param str - The string to write.
19
+ */
20
+ writeString(str) {
21
+ this.writeLengthPrefixed(Buffer.from(str, "utf-8"));
22
+ }
23
+ /**
24
+ * Reads a length-prefixed ASCII string from the stream.
25
+ * {@link https://mojang.github.io/bedrock-protocol-docs/html/string.html | Not documented in the protocol docs}
26
+ * @returns The read string.
27
+ */
28
+ readLELengthASCIIString() {
29
+ return this.read(this.readUnsignedIntLE()).toString("ascii");
30
+ }
31
+ /**
32
+ * Writes a length-prefixed ASCII string to the stream.
33
+ * @param str - The string to write.
34
+ */
35
+ writeLELengthASCIIString(str) {
36
+ const buf = Buffer.from(str, "ascii");
37
+ this.writeUnsignedIntLE(buf.byteLength);
38
+ this.write(buf);
39
+ }
40
+ /**
41
+ * Reads a length-prefixed buffer from the stream.
42
+ * @returns The length-prefixed buffer.
43
+ */
44
+ readLengthPrefixed() {
45
+ return this.read(this.readUnsignedVarInt());
46
+ }
47
+ /**
48
+ * Writes a length-prefixed buffer to the stream.
49
+ * @param buf - The buffer to append.
50
+ */
51
+ writeLengthPrefixed(buf) {
52
+ this.writeUnsignedVarInt(buf.byteLength);
53
+ this.write(buf);
54
+ }
55
+ };
56
+ //#endregion
53
57
  export { NetworkBinaryStream as default };
54
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV0d29ya0JpbmFyeVN0cmVhbS5lcy5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL05ldHdvcmtCaW5hcnlTdHJlYW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpbmFyeVN0cmVhbSBmcm9tICdAanNwcmlzbWFyaW5lL2pzYmluYXJ5dXRpbHMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gZXh0ZW5kZWQgdmVyc2lvbiBvZiB0aGUgQmluYXJ5U3RyZWFtIGNsYXNzIHRoYXQgaW5jbHVkZXNcbiAqIG1pbmVjcmFmdC1zcGVjaWZpYyBzZXJpYWxpemF0aW9uIG1ldGhvZHMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ldHdvcmtCaW5hcnlTdHJlYW0gZXh0ZW5kcyBCaW5hcnlTdHJlYW0ge1xuICAgIC8qKlxuICAgICAqIFJlYWRzIGEgc3RyaW5nIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiB7QGxpbmsgaHR0cHM6Ly9tb2phbmcuZ2l0aHViLmlvL2JlZHJvY2stcHJvdG9jb2wtZG9jcy9odG1sL3N0cmluZy5odG1sIHwgTm90IGRvY3VtZW50ZWQgaW4gdGhlIHByb3RvY29sIGRvY3N9XG4gICAgICogQHJldHVybnMgVGhlIHJlYWQgc3RyaW5nLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRMZW5ndGhQcmVmaXhlZCgpLnRvU3RyaW5nKCd1dGYtOCcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdyaXRlcyBhIHN0cmluZyB0byB0aGUgc3RyZWFtLlxuICAgICAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHdyaXRlLlxuICAgICAqL1xuICAgIHB1YmxpYyB3cml0ZVN0cmluZyhzdHI6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLndyaXRlTGVuZ3RoUHJlZml4ZWQoQnVmZmVyLmZyb20oc3RyLCAndXRmLTgnKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZHMgYSBsZW5ndGgtcHJlZml4ZWQgQVNDSUkgc3RyaW5nIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiB7QGxpbmsgaHR0cHM6Ly9tb2phbmcuZ2l0aHViLmlvL2JlZHJvY2stcHJvdG9jb2wtZG9jcy9odG1sL3N0cmluZy5odG1sIHwgTm90IGRvY3VtZW50ZWQgaW4gdGhlIHByb3RvY29sIGRvY3N9XG4gICAgICogQHJldHVybnMgVGhlIHJlYWQgc3RyaW5nLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkTEVMZW5ndGhBU0NJSVN0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkKHRoaXMucmVhZFVuc2lnbmVkSW50TEUoKSkudG9TdHJpbmcoJ2FzY2lpJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGVzIGEgbGVuZ3RoLXByZWZpeGVkIEFTQ0lJIHN0cmluZyB0byB0aGUgc3RyZWFtLlxuICAgICAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHdyaXRlLlxuICAgICAqL1xuICAgIHB1YmxpYyB3cml0ZUxFTGVuZ3RoQVNDSUlTdHJpbmcoc3RyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYnVmID0gQnVmZmVyLmZyb20oc3RyLCAnYXNjaWknKTtcbiAgICAgICAgdGhpcy53cml0ZVVuc2lnbmVkSW50TEUoYnVmLmJ5dGVMZW5ndGgpO1xuICAgICAgICB0aGlzLndyaXRlKGJ1Zik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZHMgYSBsZW5ndGgtcHJlZml4ZWQgYnVmZmVyIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJucyBUaGUgbGVuZ3RoLXByZWZpeGVkIGJ1ZmZlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZExlbmd0aFByZWZpeGVkKCk6IEJ1ZmZlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWQodGhpcy5yZWFkVW5zaWduZWRWYXJJbnQoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGVzIGEgbGVuZ3RoLXByZWZpeGVkIGJ1ZmZlciB0byB0aGUgc3RyZWFtLlxuICAgICAqIEBwYXJhbSBidWYgLSBUaGUgYnVmZmVyIHRvIGFwcGVuZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgd3JpdGVMZW5ndGhQcmVmaXhlZChidWY6IEJ1ZmZlcik6IHZvaWQge1xuICAgICAgICB0aGlzLndyaXRlVW5zaWduZWRWYXJJbnQoYnVmLmJ5dGVMZW5ndGgpO1xuICAgICAgICB0aGlzLndyaXRlKGJ1Zik7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBTUEsTUFBcUIsNEJBQTRCLFlBQUEsQ0FBYTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1uRCxVQUFBLEdBQXFCO0FBQ3hCLElBQUEsT0FBTyxJQUFBLENBQUssa0JBQUEsRUFBbUIsQ0FBRSxRQUFBLENBQVMsT0FBTyxDQUFBO0FBQUEsRUFDckQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTU8sWUFBWSxHQUFBLEVBQW1CO0FBQ2xDLElBQUEsSUFBQSxDQUFLLG1CQUFBLENBQW9CLE1BQUEsQ0FBTyxJQUFBLENBQUssR0FBQSxFQUFLLE9BQU8sQ0FBQyxDQUFBO0FBQUEsRUFDdEQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyx1QkFBQSxHQUFrQztBQUNyQyxJQUFBLE9BQU8sS0FBSyxJQUFBLENBQUssSUFBQSxDQUFLLG1CQUFtQixDQUFBLENBQUUsU0FBUyxPQUFPLENBQUE7QUFBQSxFQUMvRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNTyx5QkFBeUIsR0FBQSxFQUFtQjtBQUMvQyxJQUFBLE1BQU0sR0FBQSxHQUFNLE1BQUEsQ0FBTyxJQUFBLENBQUssR0FBQSxFQUFLLE9BQU8sQ0FBQTtBQUNwQyxJQUFBLElBQUEsQ0FBSyxrQkFBQSxDQUFtQixJQUFJLFVBQVUsQ0FBQTtBQUN0QyxJQUFBLElBQUEsQ0FBSyxNQUFNLEdBQUcsQ0FBQTtBQUFBLEVBQ2xCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1PLGtCQUFBLEdBQTZCO0FBQ2hDLElBQUEsT0FBTyxJQUFBLENBQUssSUFBQSxDQUFLLElBQUEsQ0FBSyxrQkFBQSxFQUFvQixDQUFBO0FBQUEsRUFDOUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTU8sb0JBQW9CLEdBQUEsRUFBbUI7QUFDMUMsSUFBQSxJQUFBLENBQUssbUJBQUEsQ0FBb0IsSUFBSSxVQUFVLENBQUE7QUFDdkMsSUFBQSxJQUFBLENBQUssTUFBTSxHQUFHLENBQUE7QUFBQSxFQUNsQjtBQUNKOzs7OyJ9
58
+
59
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV0d29ya0JpbmFyeVN0cmVhbS5lcy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi9zcmMvTmV0d29ya0JpbmFyeVN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmluYXJ5U3RyZWFtIGZyb20gJ0Bqc3ByaXNtYXJpbmUvanNiaW5hcnl1dGlscyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBleHRlbmRlZCB2ZXJzaW9uIG9mIHRoZSBCaW5hcnlTdHJlYW0gY2xhc3MgdGhhdCBpbmNsdWRlc1xuICogbWluZWNyYWZ0LXNwZWNpZmljIHNlcmlhbGl6YXRpb24gbWV0aG9kcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV0d29ya0JpbmFyeVN0cmVhbSBleHRlbmRzIEJpbmFyeVN0cmVhbSB7XG4gICAgLyoqXG4gICAgICogUmVhZHMgYSBzdHJpbmcgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIHtAbGluayBodHRwczovL21vamFuZy5naXRodWIuaW8vYmVkcm9jay1wcm90b2NvbC1kb2NzL2h0bWwvc3RyaW5nLmh0bWwgfCBOb3QgZG9jdW1lbnRlZCBpbiB0aGUgcHJvdG9jb2wgZG9jc31cbiAgICAgKiBAcmV0dXJucyBUaGUgcmVhZCBzdHJpbmcuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZExlbmd0aFByZWZpeGVkKCkudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGVzIGEgc3RyaW5nIHRvIHRoZSBzdHJlYW0uXG4gICAgICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gd3JpdGUuXG4gICAgICovXG4gICAgcHVibGljIHdyaXRlU3RyaW5nKHN0cjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMud3JpdGVMZW5ndGhQcmVmaXhlZChCdWZmZXIuZnJvbShzdHIsICd1dGYtOCcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkcyBhIGxlbmd0aC1wcmVmaXhlZCBBU0NJSSBzdHJpbmcgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIHtAbGluayBodHRwczovL21vamFuZy5naXRodWIuaW8vYmVkcm9jay1wcm90b2NvbC1kb2NzL2h0bWwvc3RyaW5nLmh0bWwgfCBOb3QgZG9jdW1lbnRlZCBpbiB0aGUgcHJvdG9jb2wgZG9jc31cbiAgICAgKiBAcmV0dXJucyBUaGUgcmVhZCBzdHJpbmcuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRMRUxlbmd0aEFTQ0lJU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWQodGhpcy5yZWFkVW5zaWduZWRJbnRMRSgpKS50b1N0cmluZygnYXNjaWknKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZXMgYSBsZW5ndGgtcHJlZml4ZWQgQVNDSUkgc3RyaW5nIHRvIHRoZSBzdHJlYW0uXG4gICAgICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gd3JpdGUuXG4gICAgICovXG4gICAgcHVibGljIHdyaXRlTEVMZW5ndGhBU0NJSVN0cmluZyhzdHI6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBidWYgPSBCdWZmZXIuZnJvbShzdHIsICdhc2NpaScpO1xuICAgICAgICB0aGlzLndyaXRlVW5zaWduZWRJbnRMRShidWYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIHRoaXMud3JpdGUoYnVmKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkcyBhIGxlbmd0aC1wcmVmaXhlZCBidWZmZXIgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm5zIFRoZSBsZW5ndGgtcHJlZml4ZWQgYnVmZmVyLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkTGVuZ3RoUHJlZml4ZWQoKTogQnVmZmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZCh0aGlzLnJlYWRVbnNpZ25lZFZhckludCgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZXMgYSBsZW5ndGgtcHJlZml4ZWQgYnVmZmVyIHRvIHRoZSBzdHJlYW0uXG4gICAgICogQHBhcmFtIGJ1ZiAtIFRoZSBidWZmZXIgdG8gYXBwZW5kLlxuICAgICAqL1xuICAgIHB1YmxpYyB3cml0ZUxlbmd0aFByZWZpeGVkKGJ1ZjogQnVmZmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMud3JpdGVVbnNpZ25lZFZhckludChidWYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIHRoaXMud3JpdGUoYnVmKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQU1BLElBQXFCLHNCQUFyQixjQUFpRCxhQUFhOzs7Ozs7Q0FNMUQsYUFBNEI7RUFDeEIsT0FBTyxLQUFLLG9CQUFvQixDQUFDLFNBQVMsUUFBUTs7Ozs7O0NBT3RELFlBQW1CLEtBQW1CO0VBQ2xDLEtBQUssb0JBQW9CLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQzs7Ozs7OztDQVF2RCwwQkFBeUM7RUFDckMsT0FBTyxLQUFLLEtBQUssS0FBSyxtQkFBbUIsQ0FBQyxDQUFDLFNBQVMsUUFBUTs7Ozs7O0NBT2hFLHlCQUFnQyxLQUFtQjtFQUMvQyxNQUFNLE1BQU0sT0FBTyxLQUFLLEtBQUssUUFBUTtFQUNyQyxLQUFLLG1CQUFtQixJQUFJLFdBQVc7RUFDdkMsS0FBSyxNQUFNLElBQUk7Ozs7OztDQU9uQixxQkFBb0M7RUFDaEMsT0FBTyxLQUFLLEtBQUssS0FBSyxvQkFBb0IsQ0FBQzs7Ozs7O0NBTy9DLG9CQUEyQixLQUFtQjtFQUMxQyxLQUFLLG9CQUFvQixJQUFJLFdBQVc7RUFDeEMsS0FBSyxNQUFNLElBQUkifQ==
@@ -1,67 +1,68 @@
1
- 'use strict';
2
-
3
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
4
-
5
- class NetworkPacket {
6
- /**
7
- * Constructs a new network packet.
8
- * @param packetData - The packet data to include in the network packet.
9
- */
10
- constructor(packetData = null) {
11
- this.packetData = packetData;
12
- }
13
- // The actual packet id is represented by the first 10 bits of the packet ID.
14
- static PID_MASK = 1023;
15
- static SUB_CLIENT_MASK = 3;
16
- // Next 2 bits are the sender sub client ID.
17
- static SENDER_SUB_CLIENT_SHIFT = 10;
18
- // Next 2 bits are the target sub client ID.
19
- static TARGET_SUB_CLIENT_SHIFT = 12;
20
- senderSubClientId = 0;
21
- targetSubClientId = 0;
22
- /**
23
- * Serializes the network packet into a binary stream.
24
- * @param stream - The binary stream to serialize into.
25
- * @returns The serialized network packet as a Buffer.
26
- */
27
- serialize(stream) {
28
- if (this.packetData === null) {
29
- throw new Error(`Cannot serialize packet without data, PID: ${this.id.toString(16)}`);
30
- }
31
- stream.writeUnsignedVarInt(
32
- this.id | this.senderSubClientId << NetworkPacket.SENDER_SUB_CLIENT_SHIFT | this.targetSubClientId << NetworkPacket.TARGET_SUB_CLIENT_SHIFT
33
- );
34
- this.serializePayload(stream, this.packetData);
35
- return stream.getBuffer();
36
- }
37
- /**
38
- * Deserializes the network packet from a binary stream.
39
- * @param stream - The binary stream to deserialize from.
40
- */
41
- deserialize(stream) {
42
- const header = stream.readUnsignedVarInt();
43
- const pid = header & NetworkPacket.PID_MASK;
44
- if (pid !== this.id) {
45
- throw new Error(`NetworkPacket ID mismatch: expected ${this.id}, got ${pid}`);
46
- }
47
- this.senderSubClientId = header >> NetworkPacket.SENDER_SUB_CLIENT_SHIFT & NetworkPacket.SUB_CLIENT_MASK;
48
- this.targetSubClientId = header >> NetworkPacket.TARGET_SUB_CLIENT_SHIFT & NetworkPacket.SUB_CLIENT_MASK;
49
- try {
50
- this.packetData = this.deserializePayload(stream);
51
- } catch (e) {
52
- throw new Error(`Error deserializing packet payload: ${e}`);
53
- }
54
- return this.packetData;
55
- }
56
- /**
57
- * Gets the packet data.
58
- * Probably will be removed in the future.
59
- * @returns The packet data.
60
- */
61
- getPacketData() {
62
- return this.packetData;
63
- }
64
- }
65
-
1
+ "use strict";
2
+ Object.defineProperties(exports, {
3
+ __esModule: { value: true },
4
+ [Symbol.toStringTag]: { value: "Module" }
5
+ });
6
+ //#region src/NetworkPacket.ts
7
+ /**
8
+ * Represents the network packet (aka DataPacket).
9
+ * This is just a serialization layer to include the packet header
10
+ * and to reduce redundancy in the packet classes.
11
+ * {@link https://mojang.github.io/bedrock-protocol-docs/html/packetHeader.html}
12
+ */
13
+ var NetworkPacket = class NetworkPacket {
14
+ packetData;
15
+ static PID_MASK = 1023;
16
+ static SUB_CLIENT_MASK = 3;
17
+ static SENDER_SUB_CLIENT_SHIFT = 10;
18
+ static TARGET_SUB_CLIENT_SHIFT = 12;
19
+ senderSubClientId = 0;
20
+ targetSubClientId = 0;
21
+ /**
22
+ * Constructs a new network packet.
23
+ * @param packetData - The packet data to include in the network packet.
24
+ */
25
+ constructor(packetData = null) {
26
+ this.packetData = packetData;
27
+ }
28
+ /**
29
+ * Serializes the network packet into a binary stream.
30
+ * @param stream - The binary stream to serialize into.
31
+ * @returns The serialized network packet as a Buffer.
32
+ */
33
+ serialize(stream) {
34
+ if (this.packetData === null) throw new Error(`Cannot serialize packet without data, PID: ${this.id.toString(16)}`);
35
+ stream.writeUnsignedVarInt(this.id | this.senderSubClientId << NetworkPacket.SENDER_SUB_CLIENT_SHIFT | this.targetSubClientId << NetworkPacket.TARGET_SUB_CLIENT_SHIFT);
36
+ this.serializePayload(stream, this.packetData);
37
+ return stream.getBuffer();
38
+ }
39
+ /**
40
+ * Deserializes the network packet from a binary stream.
41
+ * @param stream - The binary stream to deserialize from.
42
+ */
43
+ deserialize(stream) {
44
+ const header = stream.readUnsignedVarInt();
45
+ const pid = header & NetworkPacket.PID_MASK;
46
+ if (pid !== this.id) throw new Error(`NetworkPacket ID mismatch: expected ${this.id}, got ${pid}`);
47
+ this.senderSubClientId = header >> NetworkPacket.SENDER_SUB_CLIENT_SHIFT & NetworkPacket.SUB_CLIENT_MASK;
48
+ this.targetSubClientId = header >> NetworkPacket.TARGET_SUB_CLIENT_SHIFT & NetworkPacket.SUB_CLIENT_MASK;
49
+ try {
50
+ this.packetData = this.deserializePayload(stream);
51
+ } catch (e) {
52
+ throw new Error(`Error deserializing packet payload: ${e}`);
53
+ }
54
+ return this.packetData;
55
+ }
56
+ /**
57
+ * Gets the packet data.
58
+ * Probably will be removed in the future.
59
+ * @returns The packet data.
60
+ */
61
+ getPacketData() {
62
+ return this.packetData;
63
+ }
64
+ };
65
+ //#endregion
66
66
  exports.default = NetworkPacket;
67
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV0d29ya1BhY2tldC5janMuY2pzIiwic291cmNlcyI6WyIuLi9zcmMvTmV0d29ya1BhY2tldC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBOZXR3b3JrQmluYXJ5U3RyZWFtIGZyb20gJy4vTmV0d29ya0JpbmFyeVN0cmVhbSc7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgbmV0d29yayBwYWNrZXQgKGFrYSBEYXRhUGFja2V0KS5cbiAqIFRoaXMgaXMganVzdCBhIHNlcmlhbGl6YXRpb24gbGF5ZXIgdG8gaW5jbHVkZSB0aGUgcGFja2V0IGhlYWRlclxuICogYW5kIHRvIHJlZHVjZSByZWR1bmRhbmN5IGluIHRoZSBwYWNrZXQgY2xhc3Nlcy5cbiAqIHtAbGluayBodHRwczovL21vamFuZy5naXRodWIuaW8vYmVkcm9jay1wcm90b2NvbC1kb2NzL2h0bWwvcGFja2V0SGVhZGVyLmh0bWx9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGFic3RyYWN0IGNsYXNzIE5ldHdvcmtQYWNrZXQ8VD4ge1xuICAgIGFic3RyYWN0IGdldCBpZCgpOiBudW1iZXI7XG5cbiAgICAvLyBUaGUgYWN0dWFsIHBhY2tldCBpZCBpcyByZXByZXNlbnRlZCBieSB0aGUgZmlyc3QgMTAgYml0cyBvZiB0aGUgcGFja2V0IElELlxuICAgIHByaXZhdGUgc3RhdGljIFBJRF9NQVNLID0gMHgzZmY7XG4gICAgcHJpdmF0ZSBzdGF0aWMgU1VCX0NMSUVOVF9NQVNLID0gMHgwMztcblxuICAgIC8vIE5leHQgMiBiaXRzIGFyZSB0aGUgc2VuZGVyIHN1YiBjbGllbnQgSUQuXG4gICAgcHJpdmF0ZSBzdGF0aWMgU0VOREVSX1NVQl9DTElFTlRfU0hJRlQgPSAxMDtcbiAgICAvLyBOZXh0IDIgYml0cyBhcmUgdGhlIHRhcmdldCBzdWIgY2xpZW50IElELlxuICAgIHByaXZhdGUgc3RhdGljIFRBUkdFVF9TVUJfQ0xJRU5UX1NISUZUID0gMTI7XG5cbiAgICBwdWJsaWMgc2VuZGVyU3ViQ2xpZW50SWQgPSAwO1xuICAgIHB1YmxpYyB0YXJnZXRTdWJDbGllbnRJZCA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IG5ldHdvcmsgcGFja2V0LlxuICAgICAqIEBwYXJhbSBwYWNrZXREYXRhIC0gVGhlIHBhY2tldCBkYXRhIHRvIGluY2x1ZGUgaW4gdGhlIG5ldHdvcmsgcGFja2V0LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhY2tldERhdGE6IFQgfCBudWxsID0gbnVsbCkge31cblxuICAgIC8qKlxuICAgICAqIFNlcmlhbGl6ZXMgdGhlIHBheWxvYWQgb2YgdGhlIG5ldHdvcmsgcGFja2V0IGludG8gYSBiaW5hcnkgc3RyZWFtLlxuICAgICAqIEBwYXJhbSBzdHJlYW0gLSBUaGUgYmluYXJ5IHN0cmVhbSB0byBzZXJpYWxpemUgaW50by5cbiAgICAgKiBAcGFyYW0gcGFja2V0RGF0YSAtIFRoZSBwYWNrZXQgZGF0YSB0byBzZXJpYWxpemUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHNlcmlhbGl6ZVBheWxvYWQoc3RyZWFtOiBOZXR3b3JrQmluYXJ5U3RyZWFtLCBwYWNrZXREYXRhOiBUKTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIFNlcmlhbGl6ZXMgdGhlIG5ldHdvcmsgcGFja2V0IGludG8gYSBiaW5hcnkgc3RyZWFtLlxuICAgICAqIEBwYXJhbSBzdHJlYW0gLSBUaGUgYmluYXJ5IHN0cmVhbSB0byBzZXJpYWxpemUgaW50by5cbiAgICAgKiBAcmV0dXJucyBUaGUgc2VyaWFsaXplZCBuZXR3b3JrIHBhY2tldCBhcyBhIEJ1ZmZlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2VyaWFsaXplKHN0cmVhbTogTmV0d29ya0JpbmFyeVN0cmVhbSk6IEJ1ZmZlciB7XG4gICAgICAgIGlmICh0aGlzLnBhY2tldERhdGEgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHNlcmlhbGl6ZSBwYWNrZXQgd2l0aG91dCBkYXRhLCBQSUQ6ICR7dGhpcy5pZC50b1N0cmluZygxNil9YCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RyZWFtLndyaXRlVW5zaWduZWRWYXJJbnQoXG4gICAgICAgICAgICB0aGlzLmlkIHxcbiAgICAgICAgICAgICAgICAodGhpcy5zZW5kZXJTdWJDbGllbnRJZCA8PCBOZXR3b3JrUGFja2V0LlNFTkRFUl9TVUJfQ0xJRU5UX1NISUZUKSB8XG4gICAgICAgICAgICAgICAgKHRoaXMudGFyZ2V0U3ViQ2xpZW50SWQgPDwgTmV0d29ya1BhY2tldC5UQVJHRVRfU1VCX0NMSUVOVF9TSElGVClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVQYXlsb2FkKHN0cmVhbSwgdGhpcy5wYWNrZXREYXRhKTtcbiAgICAgICAgcmV0dXJuIHN0cmVhbS5nZXRCdWZmZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXNlcmlhbGl6ZXMgdGhlIHBheWxvYWQgb2YgdGhlIG5ldHdvcmsgcGFja2V0IGZyb20gYSBiaW5hcnkgc3RyZWFtLlxuICAgICAqIEBwYXJhbSBzdHJlYW0gLSBUaGUgYmluYXJ5IHN0cmVhbSB0byBkZXNlcmlhbGl6ZSBmcm9tLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBkZXNlcmlhbGl6ZVBheWxvYWQoc3RyZWFtOiBOZXR3b3JrQmluYXJ5U3RyZWFtKTogVDtcblxuICAgIC8qKlxuICAgICAqIERlc2VyaWFsaXplcyB0aGUgbmV0d29yayBwYWNrZXQgZnJvbSBhIGJpbmFyeSBzdHJlYW0uXG4gICAgICogQHBhcmFtIHN0cmVhbSAtIFRoZSBiaW5hcnkgc3RyZWFtIHRvIGRlc2VyaWFsaXplIGZyb20uXG4gICAgICovXG4gICAgcHVibGljIGRlc2VyaWFsaXplKHN0cmVhbTogTmV0d29ya0JpbmFyeVN0cmVhbSk6IFQge1xuICAgICAgICBjb25zdCBoZWFkZXIgPSBzdHJlYW0ucmVhZFVuc2lnbmVkVmFySW50KCk7XG4gICAgICAgIGNvbnN0IHBpZCA9IGhlYWRlciAmIE5ldHdvcmtQYWNrZXQuUElEX01BU0s7XG4gICAgICAgIGlmIChwaWQgIT09IHRoaXMuaWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTmV0d29ya1BhY2tldCBJRCBtaXNtYXRjaDogZXhwZWN0ZWQgJHt0aGlzLmlkfSwgZ290ICR7cGlkfWApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VuZGVyU3ViQ2xpZW50SWQgPSAoaGVhZGVyID4+IE5ldHdvcmtQYWNrZXQuU0VOREVSX1NVQl9DTElFTlRfU0hJRlQpICYgTmV0d29ya1BhY2tldC5TVUJfQ0xJRU5UX01BU0s7XG4gICAgICAgIHRoaXMudGFyZ2V0U3ViQ2xpZW50SWQgPSAoaGVhZGVyID4+IE5ldHdvcmtQYWNrZXQuVEFSR0VUX1NVQl9DTElFTlRfU0hJRlQpICYgTmV0d29ya1BhY2tldC5TVUJfQ0xJRU5UX01BU0s7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLnBhY2tldERhdGEgPSB0aGlzLmRlc2VyaWFsaXplUGF5bG9hZChzdHJlYW0pO1xuICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGRlc2VyaWFsaXppbmcgcGFja2V0IHBheWxvYWQ6ICR7ZX1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5wYWNrZXREYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHBhY2tldCBkYXRhLlxuICAgICAqIFByb2JhYmx5IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLlxuICAgICAqIEByZXR1cm5zIFRoZSBwYWNrZXQgZGF0YS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UGFja2V0RGF0YSgpOiBUIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhY2tldERhdGE7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFw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
67
+
68
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV0d29ya1BhY2tldC5janMuY2pzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9OZXR3b3JrUGFja2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIE5ldHdvcmtCaW5hcnlTdHJlYW0gZnJvbSAnLi9OZXR3b3JrQmluYXJ5U3RyZWFtJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBuZXR3b3JrIHBhY2tldCAoYWthIERhdGFQYWNrZXQpLlxuICogVGhpcyBpcyBqdXN0IGEgc2VyaWFsaXphdGlvbiBsYXllciB0byBpbmNsdWRlIHRoZSBwYWNrZXQgaGVhZGVyXG4gKiBhbmQgdG8gcmVkdWNlIHJlZHVuZGFuY3kgaW4gdGhlIHBhY2tldCBjbGFzc2VzLlxuICoge0BsaW5rIGh0dHBzOi8vbW9qYW5nLmdpdGh1Yi5pby9iZWRyb2NrLXByb3RvY29sLWRvY3MvaHRtbC9wYWNrZXRIZWFkZXIuaHRtbH1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgYWJzdHJhY3QgY2xhc3MgTmV0d29ya1BhY2tldDxUPiB7XG4gICAgYWJzdHJhY3QgZ2V0IGlkKCk6IG51bWJlcjtcblxuICAgIC8vIFRoZSBhY3R1YWwgcGFja2V0IGlkIGlzIHJlcHJlc2VudGVkIGJ5IHRoZSBmaXJzdCAxMCBiaXRzIG9mIHRoZSBwYWNrZXQgSUQuXG4gICAgcHJpdmF0ZSBzdGF0aWMgUElEX01BU0sgPSAweDNmZjtcbiAgICBwcml2YXRlIHN0YXRpYyBTVUJfQ0xJRU5UX01BU0sgPSAweDAzO1xuXG4gICAgLy8gTmV4dCAyIGJpdHMgYXJlIHRoZSBzZW5kZXIgc3ViIGNsaWVudCBJRC5cbiAgICBwcml2YXRlIHN0YXRpYyBTRU5ERVJfU1VCX0NMSUVOVF9TSElGVCA9IDEwO1xuICAgIC8vIE5leHQgMiBiaXRzIGFyZSB0aGUgdGFyZ2V0IHN1YiBjbGllbnQgSUQuXG4gICAgcHJpdmF0ZSBzdGF0aWMgVEFSR0VUX1NVQl9DTElFTlRfU0hJRlQgPSAxMjtcblxuICAgIHB1YmxpYyBzZW5kZXJTdWJDbGllbnRJZCA9IDA7XG4gICAgcHVibGljIHRhcmdldFN1YkNsaWVudElkID0gMDtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgbmV0d29yayBwYWNrZXQuXG4gICAgICogQHBhcmFtIHBhY2tldERhdGEgLSBUaGUgcGFja2V0IGRhdGEgdG8gaW5jbHVkZSBpbiB0aGUgbmV0d29yayBwYWNrZXQuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFja2V0RGF0YTogVCB8IG51bGwgPSBudWxsKSB7fVxuXG4gICAgLyoqXG4gICAgICogU2VyaWFsaXplcyB0aGUgcGF5bG9hZCBvZiB0aGUgbmV0d29yayBwYWNrZXQgaW50byBhIGJpbmFyeSBzdHJlYW0uXG4gICAgICogQHBhcmFtIHN0cmVhbSAtIFRoZSBiaW5hcnkgc3RyZWFtIHRvIHNlcmlhbGl6ZSBpbnRvLlxuICAgICAqIEBwYXJhbSBwYWNrZXREYXRhIC0gVGhlIHBhY2tldCBkYXRhIHRvIHNlcmlhbGl6ZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2VyaWFsaXplUGF5bG9hZChzdHJlYW06IE5ldHdvcmtCaW5hcnlTdHJlYW0sIHBhY2tldERhdGE6IFQpOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogU2VyaWFsaXplcyB0aGUgbmV0d29yayBwYWNrZXQgaW50byBhIGJpbmFyeSBzdHJlYW0uXG4gICAgICogQHBhcmFtIHN0cmVhbSAtIFRoZSBiaW5hcnkgc3RyZWFtIHRvIHNlcmlhbGl6ZSBpbnRvLlxuICAgICAqIEByZXR1cm5zIFRoZSBzZXJpYWxpemVkIG5ldHdvcmsgcGFja2V0IGFzIGEgQnVmZmVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXJpYWxpemUoc3RyZWFtOiBOZXR3b3JrQmluYXJ5U3RyZWFtKTogQnVmZmVyIHtcbiAgICAgICAgaWYgKHRoaXMucGFja2V0RGF0YSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc2VyaWFsaXplIHBhY2tldCB3aXRob3V0IGRhdGEsIFBJRDogJHt0aGlzLmlkLnRvU3RyaW5nKDE2KX1gKTtcbiAgICAgICAgfVxuICAgICAgICBzdHJlYW0ud3JpdGVVbnNpZ25lZFZhckludChcbiAgICAgICAgICAgIHRoaXMuaWQgfFxuICAgICAgICAgICAgICAgICh0aGlzLnNlbmRlclN1YkNsaWVudElkIDw8IE5ldHdvcmtQYWNrZXQuU0VOREVSX1NVQl9DTElFTlRfU0hJRlQpIHxcbiAgICAgICAgICAgICAgICAodGhpcy50YXJnZXRTdWJDbGllbnRJZCA8PCBOZXR3b3JrUGFja2V0LlRBUkdFVF9TVUJfQ0xJRU5UX1NISUZUKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNlcmlhbGl6ZVBheWxvYWQoc3RyZWFtLCB0aGlzLnBhY2tldERhdGEpO1xuICAgICAgICByZXR1cm4gc3RyZWFtLmdldEJ1ZmZlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc2VyaWFsaXplcyB0aGUgcGF5bG9hZCBvZiB0aGUgbmV0d29yayBwYWNrZXQgZnJvbSBhIGJpbmFyeSBzdHJlYW0uXG4gICAgICogQHBhcmFtIHN0cmVhbSAtIFRoZSBiaW5hcnkgc3RyZWFtIHRvIGRlc2VyaWFsaXplIGZyb20uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGRlc2VyaWFsaXplUGF5bG9hZChzdHJlYW06IE5ldHdvcmtCaW5hcnlTdHJlYW0pOiBUO1xuXG4gICAgLyoqXG4gICAgICogRGVzZXJpYWxpemVzIHRoZSBuZXR3b3JrIHBhY2tldCBmcm9tIGEgYmluYXJ5IHN0cmVhbS5cbiAgICAgKiBAcGFyYW0gc3RyZWFtIC0gVGhlIGJpbmFyeSBzdHJlYW0gdG8gZGVzZXJpYWxpemUgZnJvbS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVzZXJpYWxpemUoc3RyZWFtOiBOZXR3b3JrQmluYXJ5U3RyZWFtKTogVCB7XG4gICAgICAgIGNvbnN0IGhlYWRlciA9IHN0cmVhbS5yZWFkVW5zaWduZWRWYXJJbnQoKTtcbiAgICAgICAgY29uc3QgcGlkID0gaGVhZGVyICYgTmV0d29ya1BhY2tldC5QSURfTUFTSztcbiAgICAgICAgaWYgKHBpZCAhPT0gdGhpcy5pZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOZXR3b3JrUGFja2V0IElEIG1pc21hdGNoOiBleHBlY3RlZCAke3RoaXMuaWR9LCBnb3QgJHtwaWR9YCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZW5kZXJTdWJDbGllbnRJZCA9IChoZWFkZXIgPj4gTmV0d29ya1BhY2tldC5TRU5ERVJfU1VCX0NMSUVOVF9TSElGVCkgJiBOZXR3b3JrUGFja2V0LlNVQl9DTElFTlRfTUFTSztcbiAgICAgICAgdGhpcy50YXJnZXRTdWJDbGllbnRJZCA9IChoZWFkZXIgPj4gTmV0d29ya1BhY2tldC5UQVJHRVRfU1VCX0NMSUVOVF9TSElGVCkgJiBOZXR3b3JrUGFja2V0LlNVQl9DTElFTlRfTUFTSztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMucGFja2V0RGF0YSA9IHRoaXMuZGVzZXJpYWxpemVQYXlsb2FkKHN0cmVhbSk7XG4gICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgZGVzZXJpYWxpemluZyBwYWNrZXQgcGF5bG9hZDogJHtlfWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBhY2tldERhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcGFja2V0IGRhdGEuXG4gICAgICogUHJvYmFibHkgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuXG4gICAgICogQHJldHVybnMgVGhlIHBhY2tldCBkYXRhLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQYWNrZXREYXRhKCk6IFQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFja2V0RGF0YTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQVFBLElBQThCLGdCQUE5QixNQUE4QixjQUFpQjtDQW1CaEI7Q0FmM0IsT0FBZSxXQUFXO0NBQzFCLE9BQWUsa0JBQWtCO0NBR2pDLE9BQWUsMEJBQTBCO0NBRXpDLE9BQWUsMEJBQTBCO0NBRXpDLG9CQUEyQjtDQUMzQixvQkFBMkI7Ozs7O0NBTTNCLFlBQW1CLGFBQStCLE1BQU07RUFBN0IsS0FBQSxhQUFBOzs7Ozs7O0NBYzNCLFVBQWlCLFFBQXFDO0VBQ2xELElBQUksS0FBSyxlQUFlLE1BQ3BCLE1BQU0sSUFBSSxNQUFNLDhDQUE4QyxLQUFLLEdBQUcsU0FBUyxHQUFHLEdBQUc7RUFFekYsT0FBTyxvQkFDSCxLQUFLLEtBQ0EsS0FBSyxxQkFBcUIsY0FBYywwQkFDeEMsS0FBSyxxQkFBcUIsY0FBYyx3QkFDaEQ7RUFDRCxLQUFLLGlCQUFpQixRQUFRLEtBQUssV0FBVztFQUM5QyxPQUFPLE9BQU8sV0FBVzs7Ozs7O0NBYTdCLFlBQW1CLFFBQWdDO0VBQy9DLE1BQU0sU0FBUyxPQUFPLG9CQUFvQjtFQUMxQyxNQUFNLE1BQU0sU0FBUyxjQUFjO0VBQ25DLElBQUksUUFBUSxLQUFLLElBQ2IsTUFBTSxJQUFJLE1BQU0sdUNBQXVDLEtBQUssR0FBRyxRQUFRLE1BQU07RUFFakYsS0FBSyxvQkFBcUIsVUFBVSxjQUFjLDBCQUEyQixjQUFjO0VBQzNGLEtBQUssb0JBQXFCLFVBQVUsY0FBYywwQkFBMkIsY0FBYztFQUMzRixJQUFJO0dBQ0EsS0FBSyxhQUFhLEtBQUssbUJBQW1CLE9BQU87V0FDNUMsR0FBWTtHQUNqQixNQUFNLElBQUksTUFBTSx1Q0FBdUMsSUFBSTs7RUFFL0QsT0FBTyxLQUFLOzs7Ozs7O0NBUWhCLGdCQUFpQztFQUM3QixPQUFPLEtBQUsifQ==
@@ -1,63 +1,63 @@
1
- class NetworkPacket {
2
- /**
3
- * Constructs a new network packet.
4
- * @param packetData - The packet data to include in the network packet.
5
- */
6
- constructor(packetData = null) {
7
- this.packetData = packetData;
8
- }
9
- // The actual packet id is represented by the first 10 bits of the packet ID.
10
- static PID_MASK = 1023;
11
- static SUB_CLIENT_MASK = 3;
12
- // Next 2 bits are the sender sub client ID.
13
- static SENDER_SUB_CLIENT_SHIFT = 10;
14
- // Next 2 bits are the target sub client ID.
15
- static TARGET_SUB_CLIENT_SHIFT = 12;
16
- senderSubClientId = 0;
17
- targetSubClientId = 0;
18
- /**
19
- * Serializes the network packet into a binary stream.
20
- * @param stream - The binary stream to serialize into.
21
- * @returns The serialized network packet as a Buffer.
22
- */
23
- serialize(stream) {
24
- if (this.packetData === null) {
25
- throw new Error(`Cannot serialize packet without data, PID: ${this.id.toString(16)}`);
26
- }
27
- stream.writeUnsignedVarInt(
28
- this.id | this.senderSubClientId << NetworkPacket.SENDER_SUB_CLIENT_SHIFT | this.targetSubClientId << NetworkPacket.TARGET_SUB_CLIENT_SHIFT
29
- );
30
- this.serializePayload(stream, this.packetData);
31
- return stream.getBuffer();
32
- }
33
- /**
34
- * Deserializes the network packet from a binary stream.
35
- * @param stream - The binary stream to deserialize from.
36
- */
37
- deserialize(stream) {
38
- const header = stream.readUnsignedVarInt();
39
- const pid = header & NetworkPacket.PID_MASK;
40
- if (pid !== this.id) {
41
- throw new Error(`NetworkPacket ID mismatch: expected ${this.id}, got ${pid}`);
42
- }
43
- this.senderSubClientId = header >> NetworkPacket.SENDER_SUB_CLIENT_SHIFT & NetworkPacket.SUB_CLIENT_MASK;
44
- this.targetSubClientId = header >> NetworkPacket.TARGET_SUB_CLIENT_SHIFT & NetworkPacket.SUB_CLIENT_MASK;
45
- try {
46
- this.packetData = this.deserializePayload(stream);
47
- } catch (e) {
48
- throw new Error(`Error deserializing packet payload: ${e}`);
49
- }
50
- return this.packetData;
51
- }
52
- /**
53
- * Gets the packet data.
54
- * Probably will be removed in the future.
55
- * @returns The packet data.
56
- */
57
- getPacketData() {
58
- return this.packetData;
59
- }
60
- }
61
-
1
+ //#region src/NetworkPacket.ts
2
+ /**
3
+ * Represents the network packet (aka DataPacket).
4
+ * This is just a serialization layer to include the packet header
5
+ * and to reduce redundancy in the packet classes.
6
+ * {@link https://mojang.github.io/bedrock-protocol-docs/html/packetHeader.html}
7
+ */
8
+ var NetworkPacket = class NetworkPacket {
9
+ packetData;
10
+ static PID_MASK = 1023;
11
+ static SUB_CLIENT_MASK = 3;
12
+ static SENDER_SUB_CLIENT_SHIFT = 10;
13
+ static TARGET_SUB_CLIENT_SHIFT = 12;
14
+ senderSubClientId = 0;
15
+ targetSubClientId = 0;
16
+ /**
17
+ * Constructs a new network packet.
18
+ * @param packetData - The packet data to include in the network packet.
19
+ */
20
+ constructor(packetData = null) {
21
+ this.packetData = packetData;
22
+ }
23
+ /**
24
+ * Serializes the network packet into a binary stream.
25
+ * @param stream - The binary stream to serialize into.
26
+ * @returns The serialized network packet as a Buffer.
27
+ */
28
+ serialize(stream) {
29
+ if (this.packetData === null) throw new Error(`Cannot serialize packet without data, PID: ${this.id.toString(16)}`);
30
+ stream.writeUnsignedVarInt(this.id | this.senderSubClientId << NetworkPacket.SENDER_SUB_CLIENT_SHIFT | this.targetSubClientId << NetworkPacket.TARGET_SUB_CLIENT_SHIFT);
31
+ this.serializePayload(stream, this.packetData);
32
+ return stream.getBuffer();
33
+ }
34
+ /**
35
+ * Deserializes the network packet from a binary stream.
36
+ * @param stream - The binary stream to deserialize from.
37
+ */
38
+ deserialize(stream) {
39
+ const header = stream.readUnsignedVarInt();
40
+ const pid = header & NetworkPacket.PID_MASK;
41
+ if (pid !== this.id) throw new Error(`NetworkPacket ID mismatch: expected ${this.id}, got ${pid}`);
42
+ this.senderSubClientId = header >> NetworkPacket.SENDER_SUB_CLIENT_SHIFT & NetworkPacket.SUB_CLIENT_MASK;
43
+ this.targetSubClientId = header >> NetworkPacket.TARGET_SUB_CLIENT_SHIFT & NetworkPacket.SUB_CLIENT_MASK;
44
+ try {
45
+ this.packetData = this.deserializePayload(stream);
46
+ } catch (e) {
47
+ throw new Error(`Error deserializing packet payload: ${e}`);
48
+ }
49
+ return this.packetData;
50
+ }
51
+ /**
52
+ * Gets the packet data.
53
+ * Probably will be removed in the future.
54
+ * @returns The packet data.
55
+ */
56
+ getPacketData() {
57
+ return this.packetData;
58
+ }
59
+ };
60
+ //#endregion
62
61
  export { NetworkPacket as default };
63
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV0d29ya1BhY2tldC5lcy5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL05ldHdvcmtQYWNrZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgTmV0d29ya0JpbmFyeVN0cmVhbSBmcm9tICcuL05ldHdvcmtCaW5hcnlTdHJlYW0nO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIG5ldHdvcmsgcGFja2V0IChha2EgRGF0YVBhY2tldCkuXG4gKiBUaGlzIGlzIGp1c3QgYSBzZXJpYWxpemF0aW9uIGxheWVyIHRvIGluY2x1ZGUgdGhlIHBhY2tldCBoZWFkZXJcbiAqIGFuZCB0byByZWR1Y2UgcmVkdW5kYW5jeSBpbiB0aGUgcGFja2V0IGNsYXNzZXMuXG4gKiB7QGxpbmsgaHR0cHM6Ly9tb2phbmcuZ2l0aHViLmlvL2JlZHJvY2stcHJvdG9jb2wtZG9jcy9odG1sL3BhY2tldEhlYWRlci5odG1sfVxuICovXG5leHBvcnQgZGVmYXVsdCBhYnN0cmFjdCBjbGFzcyBOZXR3b3JrUGFja2V0PFQ+IHtcbiAgICBhYnN0cmFjdCBnZXQgaWQoKTogbnVtYmVyO1xuXG4gICAgLy8gVGhlIGFjdHVhbCBwYWNrZXQgaWQgaXMgcmVwcmVzZW50ZWQgYnkgdGhlIGZpcnN0IDEwIGJpdHMgb2YgdGhlIHBhY2tldCBJRC5cbiAgICBwcml2YXRlIHN0YXRpYyBQSURfTUFTSyA9IDB4M2ZmO1xuICAgIHByaXZhdGUgc3RhdGljIFNVQl9DTElFTlRfTUFTSyA9IDB4MDM7XG5cbiAgICAvLyBOZXh0IDIgYml0cyBhcmUgdGhlIHNlbmRlciBzdWIgY2xpZW50IElELlxuICAgIHByaXZhdGUgc3RhdGljIFNFTkRFUl9TVUJfQ0xJRU5UX1NISUZUID0gMTA7XG4gICAgLy8gTmV4dCAyIGJpdHMgYXJlIHRoZSB0YXJnZXQgc3ViIGNsaWVudCBJRC5cbiAgICBwcml2YXRlIHN0YXRpYyBUQVJHRVRfU1VCX0NMSUVOVF9TSElGVCA9IDEyO1xuXG4gICAgcHVibGljIHNlbmRlclN1YkNsaWVudElkID0gMDtcbiAgICBwdWJsaWMgdGFyZ2V0U3ViQ2xpZW50SWQgPSAwO1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBuZXR3b3JrIHBhY2tldC5cbiAgICAgKiBAcGFyYW0gcGFja2V0RGF0YSAtIFRoZSBwYWNrZXQgZGF0YSB0byBpbmNsdWRlIGluIHRoZSBuZXR3b3JrIHBhY2tldC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBwYWNrZXREYXRhOiBUIHwgbnVsbCA9IG51bGwpIHt9XG5cbiAgICAvKipcbiAgICAgKiBTZXJpYWxpemVzIHRoZSBwYXlsb2FkIG9mIHRoZSBuZXR3b3JrIHBhY2tldCBpbnRvIGEgYmluYXJ5IHN0cmVhbS5cbiAgICAgKiBAcGFyYW0gc3RyZWFtIC0gVGhlIGJpbmFyeSBzdHJlYW0gdG8gc2VyaWFsaXplIGludG8uXG4gICAgICogQHBhcmFtIHBhY2tldERhdGEgLSBUaGUgcGFja2V0IGRhdGEgdG8gc2VyaWFsaXplLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBzZXJpYWxpemVQYXlsb2FkKHN0cmVhbTogTmV0d29ya0JpbmFyeVN0cmVhbSwgcGFja2V0RGF0YTogVCk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBTZXJpYWxpemVzIHRoZSBuZXR3b3JrIHBhY2tldCBpbnRvIGEgYmluYXJ5IHN0cmVhbS5cbiAgICAgKiBAcGFyYW0gc3RyZWFtIC0gVGhlIGJpbmFyeSBzdHJlYW0gdG8gc2VyaWFsaXplIGludG8uXG4gICAgICogQHJldHVybnMgVGhlIHNlcmlhbGl6ZWQgbmV0d29yayBwYWNrZXQgYXMgYSBCdWZmZXIuXG4gICAgICovXG4gICAgcHVibGljIHNlcmlhbGl6ZShzdHJlYW06IE5ldHdvcmtCaW5hcnlTdHJlYW0pOiBCdWZmZXIge1xuICAgICAgICBpZiAodGhpcy5wYWNrZXREYXRhID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZXJpYWxpemUgcGFja2V0IHdpdGhvdXQgZGF0YSwgUElEOiAke3RoaXMuaWQudG9TdHJpbmcoMTYpfWApO1xuICAgICAgICB9XG4gICAgICAgIHN0cmVhbS53cml0ZVVuc2lnbmVkVmFySW50KFxuICAgICAgICAgICAgdGhpcy5pZCB8XG4gICAgICAgICAgICAgICAgKHRoaXMuc2VuZGVyU3ViQ2xpZW50SWQgPDwgTmV0d29ya1BhY2tldC5TRU5ERVJfU1VCX0NMSUVOVF9TSElGVCkgfFxuICAgICAgICAgICAgICAgICh0aGlzLnRhcmdldFN1YkNsaWVudElkIDw8IE5ldHdvcmtQYWNrZXQuVEFSR0VUX1NVQl9DTElFTlRfU0hJRlQpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplUGF5bG9hZChzdHJlYW0sIHRoaXMucGFja2V0RGF0YSk7XG4gICAgICAgIHJldHVybiBzdHJlYW0uZ2V0QnVmZmVyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVzZXJpYWxpemVzIHRoZSBwYXlsb2FkIG9mIHRoZSBuZXR3b3JrIHBhY2tldCBmcm9tIGEgYmluYXJ5IHN0cmVhbS5cbiAgICAgKiBAcGFyYW0gc3RyZWFtIC0gVGhlIGJpbmFyeSBzdHJlYW0gdG8gZGVzZXJpYWxpemUgZnJvbS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZGVzZXJpYWxpemVQYXlsb2FkKHN0cmVhbTogTmV0d29ya0JpbmFyeVN0cmVhbSk6IFQ7XG5cbiAgICAvKipcbiAgICAgKiBEZXNlcmlhbGl6ZXMgdGhlIG5ldHdvcmsgcGFja2V0IGZyb20gYSBiaW5hcnkgc3RyZWFtLlxuICAgICAqIEBwYXJhbSBzdHJlYW0gLSBUaGUgYmluYXJ5IHN0cmVhbSB0byBkZXNlcmlhbGl6ZSBmcm9tLlxuICAgICAqL1xuICAgIHB1YmxpYyBkZXNlcmlhbGl6ZShzdHJlYW06IE5ldHdvcmtCaW5hcnlTdHJlYW0pOiBUIHtcbiAgICAgICAgY29uc3QgaGVhZGVyID0gc3RyZWFtLnJlYWRVbnNpZ25lZFZhckludCgpO1xuICAgICAgICBjb25zdCBwaWQgPSBoZWFkZXIgJiBOZXR3b3JrUGFja2V0LlBJRF9NQVNLO1xuICAgICAgICBpZiAocGlkICE9PSB0aGlzLmlkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5ldHdvcmtQYWNrZXQgSUQgbWlzbWF0Y2g6IGV4cGVjdGVkICR7dGhpcy5pZH0sIGdvdCAke3BpZH1gKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbmRlclN1YkNsaWVudElkID0gKGhlYWRlciA+PiBOZXR3b3JrUGFja2V0LlNFTkRFUl9TVUJfQ0xJRU5UX1NISUZUKSAmIE5ldHdvcmtQYWNrZXQuU1VCX0NMSUVOVF9NQVNLO1xuICAgICAgICB0aGlzLnRhcmdldFN1YkNsaWVudElkID0gKGhlYWRlciA+PiBOZXR3b3JrUGFja2V0LlRBUkdFVF9TVUJfQ0xJRU5UX1NISUZUKSAmIE5ldHdvcmtQYWNrZXQuU1VCX0NMSUVOVF9NQVNLO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5wYWNrZXREYXRhID0gdGhpcy5kZXNlcmlhbGl6ZVBheWxvYWQoc3RyZWFtKTtcbiAgICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBkZXNlcmlhbGl6aW5nIHBhY2tldCBwYXlsb2FkOiAke2V9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucGFja2V0RGF0YTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBwYWNrZXQgZGF0YS5cbiAgICAgKiBQcm9iYWJseSB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS5cbiAgICAgKiBAcmV0dXJucyBUaGUgcGFja2V0IGRhdGEuXG4gICAgICovXG4gICAgcHVibGljIGdldFBhY2tldERhdGEoKTogVCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5wYWNrZXREYXRhO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBp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
62
+
63
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV0d29ya1BhY2tldC5lcy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi9zcmMvTmV0d29ya1BhY2tldC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBOZXR3b3JrQmluYXJ5U3RyZWFtIGZyb20gJy4vTmV0d29ya0JpbmFyeVN0cmVhbSc7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgbmV0d29yayBwYWNrZXQgKGFrYSBEYXRhUGFja2V0KS5cbiAqIFRoaXMgaXMganVzdCBhIHNlcmlhbGl6YXRpb24gbGF5ZXIgdG8gaW5jbHVkZSB0aGUgcGFja2V0IGhlYWRlclxuICogYW5kIHRvIHJlZHVjZSByZWR1bmRhbmN5IGluIHRoZSBwYWNrZXQgY2xhc3Nlcy5cbiAqIHtAbGluayBodHRwczovL21vamFuZy5naXRodWIuaW8vYmVkcm9jay1wcm90b2NvbC1kb2NzL2h0bWwvcGFja2V0SGVhZGVyLmh0bWx9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGFic3RyYWN0IGNsYXNzIE5ldHdvcmtQYWNrZXQ8VD4ge1xuICAgIGFic3RyYWN0IGdldCBpZCgpOiBudW1iZXI7XG5cbiAgICAvLyBUaGUgYWN0dWFsIHBhY2tldCBpZCBpcyByZXByZXNlbnRlZCBieSB0aGUgZmlyc3QgMTAgYml0cyBvZiB0aGUgcGFja2V0IElELlxuICAgIHByaXZhdGUgc3RhdGljIFBJRF9NQVNLID0gMHgzZmY7XG4gICAgcHJpdmF0ZSBzdGF0aWMgU1VCX0NMSUVOVF9NQVNLID0gMHgwMztcblxuICAgIC8vIE5leHQgMiBiaXRzIGFyZSB0aGUgc2VuZGVyIHN1YiBjbGllbnQgSUQuXG4gICAgcHJpdmF0ZSBzdGF0aWMgU0VOREVSX1NVQl9DTElFTlRfU0hJRlQgPSAxMDtcbiAgICAvLyBOZXh0IDIgYml0cyBhcmUgdGhlIHRhcmdldCBzdWIgY2xpZW50IElELlxuICAgIHByaXZhdGUgc3RhdGljIFRBUkdFVF9TVUJfQ0xJRU5UX1NISUZUID0gMTI7XG5cbiAgICBwdWJsaWMgc2VuZGVyU3ViQ2xpZW50SWQgPSAwO1xuICAgIHB1YmxpYyB0YXJnZXRTdWJDbGllbnRJZCA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IG5ldHdvcmsgcGFja2V0LlxuICAgICAqIEBwYXJhbSBwYWNrZXREYXRhIC0gVGhlIHBhY2tldCBkYXRhIHRvIGluY2x1ZGUgaW4gdGhlIG5ldHdvcmsgcGFja2V0LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhY2tldERhdGE6IFQgfCBudWxsID0gbnVsbCkge31cblxuICAgIC8qKlxuICAgICAqIFNlcmlhbGl6ZXMgdGhlIHBheWxvYWQgb2YgdGhlIG5ldHdvcmsgcGFja2V0IGludG8gYSBiaW5hcnkgc3RyZWFtLlxuICAgICAqIEBwYXJhbSBzdHJlYW0gLSBUaGUgYmluYXJ5IHN0cmVhbSB0byBzZXJpYWxpemUgaW50by5cbiAgICAgKiBAcGFyYW0gcGFja2V0RGF0YSAtIFRoZSBwYWNrZXQgZGF0YSB0byBzZXJpYWxpemUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHNlcmlhbGl6ZVBheWxvYWQoc3RyZWFtOiBOZXR3b3JrQmluYXJ5U3RyZWFtLCBwYWNrZXREYXRhOiBUKTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIFNlcmlhbGl6ZXMgdGhlIG5ldHdvcmsgcGFja2V0IGludG8gYSBiaW5hcnkgc3RyZWFtLlxuICAgICAqIEBwYXJhbSBzdHJlYW0gLSBUaGUgYmluYXJ5IHN0cmVhbSB0byBzZXJpYWxpemUgaW50by5cbiAgICAgKiBAcmV0dXJucyBUaGUgc2VyaWFsaXplZCBuZXR3b3JrIHBhY2tldCBhcyBhIEJ1ZmZlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2VyaWFsaXplKHN0cmVhbTogTmV0d29ya0JpbmFyeVN0cmVhbSk6IEJ1ZmZlciB7XG4gICAgICAgIGlmICh0aGlzLnBhY2tldERhdGEgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHNlcmlhbGl6ZSBwYWNrZXQgd2l0aG91dCBkYXRhLCBQSUQ6ICR7dGhpcy5pZC50b1N0cmluZygxNil9YCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RyZWFtLndyaXRlVW5zaWduZWRWYXJJbnQoXG4gICAgICAgICAgICB0aGlzLmlkIHxcbiAgICAgICAgICAgICAgICAodGhpcy5zZW5kZXJTdWJDbGllbnRJZCA8PCBOZXR3b3JrUGFja2V0LlNFTkRFUl9TVUJfQ0xJRU5UX1NISUZUKSB8XG4gICAgICAgICAgICAgICAgKHRoaXMudGFyZ2V0U3ViQ2xpZW50SWQgPDwgTmV0d29ya1BhY2tldC5UQVJHRVRfU1VCX0NMSUVOVF9TSElGVClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVQYXlsb2FkKHN0cmVhbSwgdGhpcy5wYWNrZXREYXRhKTtcbiAgICAgICAgcmV0dXJuIHN0cmVhbS5nZXRCdWZmZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXNlcmlhbGl6ZXMgdGhlIHBheWxvYWQgb2YgdGhlIG5ldHdvcmsgcGFja2V0IGZyb20gYSBiaW5hcnkgc3RyZWFtLlxuICAgICAqIEBwYXJhbSBzdHJlYW0gLSBUaGUgYmluYXJ5IHN0cmVhbSB0byBkZXNlcmlhbGl6ZSBmcm9tLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBkZXNlcmlhbGl6ZVBheWxvYWQoc3RyZWFtOiBOZXR3b3JrQmluYXJ5U3RyZWFtKTogVDtcblxuICAgIC8qKlxuICAgICAqIERlc2VyaWFsaXplcyB0aGUgbmV0d29yayBwYWNrZXQgZnJvbSBhIGJpbmFyeSBzdHJlYW0uXG4gICAgICogQHBhcmFtIHN0cmVhbSAtIFRoZSBiaW5hcnkgc3RyZWFtIHRvIGRlc2VyaWFsaXplIGZyb20uXG4gICAgICovXG4gICAgcHVibGljIGRlc2VyaWFsaXplKHN0cmVhbTogTmV0d29ya0JpbmFyeVN0cmVhbSk6IFQge1xuICAgICAgICBjb25zdCBoZWFkZXIgPSBzdHJlYW0ucmVhZFVuc2lnbmVkVmFySW50KCk7XG4gICAgICAgIGNvbnN0IHBpZCA9IGhlYWRlciAmIE5ldHdvcmtQYWNrZXQuUElEX01BU0s7XG4gICAgICAgIGlmIChwaWQgIT09IHRoaXMuaWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTmV0d29ya1BhY2tldCBJRCBtaXNtYXRjaDogZXhwZWN0ZWQgJHt0aGlzLmlkfSwgZ290ICR7cGlkfWApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VuZGVyU3ViQ2xpZW50SWQgPSAoaGVhZGVyID4+IE5ldHdvcmtQYWNrZXQuU0VOREVSX1NVQl9DTElFTlRfU0hJRlQpICYgTmV0d29ya1BhY2tldC5TVUJfQ0xJRU5UX01BU0s7XG4gICAgICAgIHRoaXMudGFyZ2V0U3ViQ2xpZW50SWQgPSAoaGVhZGVyID4+IE5ldHdvcmtQYWNrZXQuVEFSR0VUX1NVQl9DTElFTlRfU0hJRlQpICYgTmV0d29ya1BhY2tldC5TVUJfQ0xJRU5UX01BU0s7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLnBhY2tldERhdGEgPSB0aGlzLmRlc2VyaWFsaXplUGF5bG9hZChzdHJlYW0pO1xuICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGRlc2VyaWFsaXppbmcgcGFja2V0IHBheWxvYWQ6ICR7ZX1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5wYWNrZXREYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHBhY2tldCBkYXRhLlxuICAgICAqIFByb2JhYmx5IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLlxuICAgICAqIEByZXR1cm5zIFRoZSBwYWNrZXQgZGF0YS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UGFja2V0RGF0YSgpOiBUIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhY2tldERhdGE7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBUUEsSUFBOEIsZ0JBQTlCLE1BQThCLGNBQWlCO0NBbUJoQjtDQWYzQixPQUFlLFdBQVc7Q0FDMUIsT0FBZSxrQkFBa0I7Q0FHakMsT0FBZSwwQkFBMEI7Q0FFekMsT0FBZSwwQkFBMEI7Q0FFekMsb0JBQTJCO0NBQzNCLG9CQUEyQjs7Ozs7Q0FNM0IsWUFBbUIsYUFBK0IsTUFBTTtFQUE3QixLQUFBLGFBQUE7Ozs7Ozs7Q0FjM0IsVUFBaUIsUUFBcUM7RUFDbEQsSUFBSSxLQUFLLGVBQWUsTUFDcEIsTUFBTSxJQUFJLE1BQU0sOENBQThDLEtBQUssR0FBRyxTQUFTLEdBQUcsR0FBRztFQUV6RixPQUFPLG9CQUNILEtBQUssS0FDQSxLQUFLLHFCQUFxQixjQUFjLDBCQUN4QyxLQUFLLHFCQUFxQixjQUFjLHdCQUNoRDtFQUNELEtBQUssaUJBQWlCLFFBQVEsS0FBSyxXQUFXO0VBQzlDLE9BQU8sT0FBTyxXQUFXOzs7Ozs7Q0FhN0IsWUFBbUIsUUFBZ0M7RUFDL0MsTUFBTSxTQUFTLE9BQU8sb0JBQW9CO0VBQzFDLE1BQU0sTUFBTSxTQUFTLGNBQWM7RUFDbkMsSUFBSSxRQUFRLEtBQUssSUFDYixNQUFNLElBQUksTUFBTSx1Q0FBdUMsS0FBSyxHQUFHLFFBQVEsTUFBTTtFQUVqRixLQUFLLG9CQUFxQixVQUFVLGNBQWMsMEJBQTJCLGNBQWM7RUFDM0YsS0FBSyxvQkFBcUIsVUFBVSxjQUFjLDBCQUEyQixjQUFjO0VBQzNGLElBQUk7R0FDQSxLQUFLLGFBQWEsS0FBSyxtQkFBbUIsT0FBTztXQUM1QyxHQUFZO0dBQ2pCLE1BQU0sSUFBSSxNQUFNLHVDQUF1QyxJQUFJOztFQUUvRCxPQUFPLEtBQUs7Ozs7Ozs7Q0FRaEIsZ0JBQWlDO0VBQzdCLE9BQU8sS0FBSyJ9