@jsprismarine/protocol 0.14.0 → 0.14.1-unstable-20260512202428

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 +18 -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,23 @@
1
1
  # @jsprismarine/protocol
2
2
 
3
+ ## 0.14.1-unstable-20260512202428
4
+
5
+ ### Patch Changes
6
+
7
+ - [`cd05900`](https://github.com/JSPrismarine/JSPrismarine/commit/cd05900b01564ff279516a77423f3c1d8baffbfa) Thanks [@filiphsps](https://github.com/filiphsps)! - Drop the redundant per-package `.npmignore` files. Each `package.json` already has a `files` whitelist (`["dist", "CHANGELOG.md", "README.md"]`) that npm treats as the authoritative include list, so the `.npmignore` entries were dead weight — and broad patterns like `node_modules/`, `src/`, and `packages/` risked masking content from `dist/` (e.g. the bundled `dist/node_modules/**` in `@jsprismarine/client`). With the whitelist as the single source of truth, every tarball now contains the full built `dist/`.
8
+
9
+ - [`f962e79`](https://github.com/JSPrismarine/JSPrismarine/commit/f962e79719d55688113e3ab2a8c663d6049a9fab) Thanks [@filiphsps](https://github.com/filiphsps)! - Tidy up doc generation and break a Vite 8 / Rolldown circular load:
10
+ - Teach typedoc about the `@todo` block tag (plus the rest of TSDoc's standard tags) so internal todo comments stop emitting "unknown block tag" warnings.
11
+ - Fix the `@document` path on `Logger` so typedoc can resolve `docs/log-levels.md` from the package directory.
12
+ - Defer `CommandSyntaxException.BUILT_IN_EXCEPTIONS` construction to a lazy getter, and wrap every `BuiltInExceptions` static field in a memoized factory so no `new SimpleCommandExceptionType(...)` / `new DynamicCommandExceptionType(...)` runs during BuiltInExceptions's static-initialization phase. The previous code crashed under Vite 8 (Rolldown) with `default is not a constructor` whenever the `BuiltInExceptions -> SimpleCommandExceptionType -> CommandSyntaxException -> BuiltInExceptions` module load cycle was traversed before the exception type imports were fully resolved.
13
+ - Make `SimpleCommandExceptionType` and `DynamicCommandExceptionType` available as both named and default exports so the existing default-import call sites keep working while the new named-import call sites side-step Rolldown's stricter cyclic live-binding rules.
14
+
15
+ - [`f962e79`](https://github.com/JSPrismarine/JSPrismarine/commit/f962e79719d55688113e3ab2a8c663d6049a9fab) Thanks [@filiphsps](https://github.com/filiphsps)! - Bump Vite to 8.0.12 across the root, every workspace package, and the generator template.
16
+
17
+ - Updated dependencies [[`cd05900`](https://github.com/JSPrismarine/JSPrismarine/commit/cd05900b01564ff279516a77423f3c1d8baffbfa), [`f962e79`](https://github.com/JSPrismarine/JSPrismarine/commit/f962e79719d55688113e3ab2a8c663d6049a9fab), [`f962e79`](https://github.com/JSPrismarine/JSPrismarine/commit/f962e79719d55688113e3ab2a8c663d6049a9fab)]:
18
+ - @jsprismarine/minecraft@0.14.1-unstable-20260512202428
19
+ - @jsprismarine/nbt@0.14.1-unstable-20260512202428
20
+
3
21
  ## 0.14.0
4
22
 
5
23
  ### 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