UNPKG

irctokens

Version:
88 lines 5.58 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 _StatefulDecoder_encoding, _StatefulDecoder_fallback, _StatefulDecoder_buffer, _StatefulEncoder_encoder, _StatefulEncoder_buffer, _StatefulEncoder_bufferedLines; Object.defineProperty(exports, "__esModule", { value: true }); exports.StatefulEncoder = exports.StatefulDecoder = void 0; const line_1 = require("./line"); class StatefulDecoder { constructor(encoding = 'utf8', fallback = 'latin1') { _StatefulDecoder_encoding.set(this, void 0); _StatefulDecoder_fallback.set(this, void 0); _StatefulDecoder_buffer.set(this, new Uint8Array()); __classPrivateFieldSet(this, _StatefulDecoder_encoding, encoding, "f"); __classPrivateFieldSet(this, _StatefulDecoder_fallback, fallback, "f"); this.clear(); } clear() { __classPrivateFieldSet(this, _StatefulDecoder_buffer, new Uint8Array(), "f"); } pending() { return __classPrivateFieldGet(this, _StatefulDecoder_buffer, "f"); } push(data) { if (!data.length) return; const newBuffer = new Uint8Array(__classPrivateFieldGet(this, _StatefulDecoder_buffer, "f").length + data.length); newBuffer.set(__classPrivateFieldGet(this, _StatefulDecoder_buffer, "f")); newBuffer.set(data, __classPrivateFieldGet(this, _StatefulDecoder_buffer, "f").length); __classPrivateFieldSet(this, _StatefulDecoder_buffer, newBuffer, "f"); const lineBuffers = []; while (__classPrivateFieldGet(this, _StatefulDecoder_buffer, "f").includes('\n'.charCodeAt(0))) { const lfIdx = __classPrivateFieldGet(this, _StatefulDecoder_buffer, "f").indexOf('\n'.charCodeAt(0)); const crIdx = __classPrivateFieldGet(this, _StatefulDecoder_buffer, "f").indexOf('\r'.charCodeAt(0)); lineBuffers.push(__classPrivateFieldGet(this, _StatefulDecoder_buffer, "f").slice(0, crIdx < lfIdx ? crIdx : lfIdx)); __classPrivateFieldSet(this, _StatefulDecoder_buffer, __classPrivateFieldGet(this, _StatefulDecoder_buffer, "f").slice(lfIdx + 1), "f"); } const lines = []; for (const line of lineBuffers) { lines.push(line_1.tokenise(line, __classPrivateFieldGet(this, _StatefulDecoder_encoding, "f"), __classPrivateFieldGet(this, _StatefulDecoder_fallback, "f"))); } return lines; } } exports.StatefulDecoder = StatefulDecoder; _StatefulDecoder_encoding = new WeakMap(), _StatefulDecoder_fallback = new WeakMap(), _StatefulDecoder_buffer = new WeakMap(); class StatefulEncoder { constructor() { // #encoding: TextEncodingLabel // TODO only supports utf8 at the moment because of TextEncoder _StatefulEncoder_encoder.set(this, new TextEncoder()); _StatefulEncoder_buffer.set(this, new Uint8Array()); _StatefulEncoder_bufferedLines.set(this, []); this.clear(); } clear() { __classPrivateFieldSet(this, _StatefulEncoder_buffer, new Uint8Array(), "f"); __classPrivateFieldSet(this, _StatefulEncoder_bufferedLines, [], "f"); } pending() { return __classPrivateFieldGet(this, _StatefulEncoder_buffer, "f"); } push(line) { const lineBuffer = __classPrivateFieldGet(this, _StatefulEncoder_encoder, "f").encode(`${line.format()}\r\n`); const newBuffer = new Uint8Array(__classPrivateFieldGet(this, _StatefulEncoder_buffer, "f").length + lineBuffer.length); newBuffer.set(__classPrivateFieldGet(this, _StatefulEncoder_buffer, "f")); newBuffer.set(lineBuffer, __classPrivateFieldGet(this, _StatefulEncoder_buffer, "f").length); __classPrivateFieldSet(this, _StatefulEncoder_buffer, newBuffer, "f"); __classPrivateFieldGet(this, _StatefulEncoder_bufferedLines, "f").push(line); } pop(byteCount) { const sent = __classPrivateFieldGet(this, _StatefulEncoder_buffer, "f").slice(0, byteCount).reduce((acc, curr) => { return acc + (curr === '\n'.charCodeAt(0) ? 1 : 0); }, 0); __classPrivateFieldSet(this, _StatefulEncoder_buffer, __classPrivateFieldGet(this, _StatefulEncoder_buffer, "f").slice(byteCount), "f"); return new Array(sent).fill(null).map(_ => __classPrivateFieldGet(this, _StatefulEncoder_bufferedLines, "f").shift()); } } exports.StatefulEncoder = StatefulEncoder; _StatefulEncoder_encoder = new WeakMap(), _StatefulEncoder_buffer = new WeakMap(), _StatefulEncoder_bufferedLines = new WeakMap(); //# sourceMappingURL=stateful.js.map