UNPKG

@aptpod/iscp-ts

Version:

iSCP 2.0 client library for TypeScript

47 lines 2.92 kB
"use strict"; var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; }; var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var _MessageDecoder_restArray, _MessageDecoder_onMessage; Object.defineProperty(exports, "__esModule", { value: true }); exports.MessageDecoder = void 0; const uint8array_1 = require("../../utils/uint8array"); const MESSAGE_LENGTH_BYTE_LENGTH = 4; class MessageDecoder { constructor(config) { _MessageDecoder_restArray.set(this, void 0); _MessageDecoder_onMessage.set(this, void 0); __classPrivateFieldSet(this, _MessageDecoder_restArray, new Uint8Array(), "f"); __classPrivateFieldSet(this, _MessageDecoder_onMessage, config.onMessage, "f"); } appendData(data) { const combinedArray = (0, uint8array_1.concat)(__classPrivateFieldGet(this, _MessageDecoder_restArray, "f"), data); const view = new DataView(combinedArray.buffer, combinedArray.byteOffset, combinedArray.byteLength); let byteOffset = 0; for (;;) { if (combinedArray.byteLength - byteOffset < MESSAGE_LENGTH_BYTE_LENGTH) { break; } const messageByteLength = view.getUint32(byteOffset, false); const messageByteOffset = byteOffset + MESSAGE_LENGTH_BYTE_LENGTH; if (combinedArray.byteLength - messageByteOffset < messageByteLength) { break; } const message = combinedArray.slice(messageByteOffset, messageByteOffset + messageByteLength); byteOffset = messageByteOffset + messageByteLength; __classPrivateFieldGet(this, _MessageDecoder_onMessage, "f").call(this, message); } __classPrivateFieldSet(this, _MessageDecoder_restArray, combinedArray.slice(byteOffset), "f"); } } exports.MessageDecoder = MessageDecoder; _MessageDecoder_restArray = new WeakMap(), _MessageDecoder_onMessage = new WeakMap(); //# sourceMappingURL=index.js.map