{"version":3,"sources":["jsdelivr-header.js","/npm/slip@1.0.2/src/slip.js"],"names":[],"mappings":"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","file":"/npm/slip@1.0.2/src/slip.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.19.2.\n * Original file: /npm/slip@1.0.2/src/slip.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*\n * slip.js: A plain JavaScript SLIP implementation that works in both the browser and Node.js\n *\n * Copyright 2014, Colin Clark\n * Licensed under the MIT and GPL 3 licenses.\n */\n\n/*global exports, define*/\n(function (root, factory) {\n    \"use strict\";\n\n    if (typeof exports === \"object\") {\n        // We're in a CommonJS-style loader.\n        root.slip = exports;\n        factory(exports);\n    } else if (typeof define === \"function\" && define.amd) {\n        // We're in an AMD-style loader.\n        define([\"exports\"], function (exports) {\n            root.slip = exports;\n            return (root.slip, factory(exports));\n        });\n    } else {\n        // Plain old browser.\n        root.slip = {};\n        factory(root.slip);\n    }\n}(this, function (exports) {\n\n    \"use strict\";\n\n    var slip = exports;\n\n    slip.END = 192;\n    slip.ESC = 219;\n    slip.ESC_END = 220;\n    slip.ESC_ESC = 221;\n\n    slip.byteArray = function (data, offset, length) {\n        return data instanceof ArrayBuffer ? new Uint8Array(data, offset, length) : data;\n    };\n\n    slip.expandByteArray = function (arr) {\n        var expanded = new Uint8Array(arr.length * 2);\n        expanded.set(arr);\n\n        return expanded;\n    };\n\n    slip.sliceByteArray = function (arr, start, end) {\n        var sliced = arr.buffer.slice ? arr.buffer.slice(start, end) : arr.subarray(start, end);\n        return new Uint8Array(sliced);\n    };\n\n    /**\n     * SLIP encodes a byte array.\n     *\n     * @param {Array-like} data a Uint8Array, Node.js Buffer, ArrayBuffer, or [] containing raw bytes\n     * @param {Object} options encoder options\n     * @return {Uint8Array} the encoded copy of the data\n     */\n    slip.encode = function (data, o) {\n        o = o || {};\n        o.bufferPadding = o.bufferPadding || 4; // Will be rounded to the nearest 4 bytes.\n        data = slip.byteArray(data, o.offset, o.byteLength);\n\n        var bufLen = (data.length + o.bufferPadding + 3) & ~0x03,\n            encoded = new Uint8Array(bufLen),\n            j = 1;\n\n        encoded[0] = slip.END;\n\n        for (var i = 0; i < data.length; i++) {\n            // We always need enough space for two value bytes plus a trailing END.\n            if (j > encoded.length - 3) {\n                encoded = slip.expandByteArray(encoded);\n            }\n\n            var val = data[i];\n            if (val === slip.END) {\n                encoded[j++] = slip.ESC;\n                val = slip.ESC_END;\n            } else if (val === slip.ESC) {\n                encoded[j++] = slip.ESC;\n                val = slip.ESC_ESC;\n            }\n\n            encoded[j++] = val;\n        }\n\n        encoded[j] = slip.END;\n        return slip.sliceByteArray(encoded, 0, j + 1);\n    };\n\n    /**\n     * Creates a new SLIP Decoder.\n     * @constructor\n     *\n     * @param {Function} onMessage a callback function that will be invoked when a message has been fully decoded\n     * @param {Number} maxBufferSize the maximum size of a incoming message; larger messages will throw an error\n     */\n    slip.Decoder = function (o) {\n        o = typeof o !== \"function\" ? o || {} : {\n            onMessage: o\n        };\n\n        this.maxMessageSize = o.maxMessageSize || 10485760; // Defaults to 10 MB.\n        this.bufferSize = o.bufferSize || 1024; // Message buffer defaults to 1 KB.\n        this.msgBuffer = new Uint8Array(this.bufferSize);\n        this.msgBufferIdx = 0;\n        this.onMessage = o.onMessage;\n        this.onError = o.onError;\n        this.escape = false;\n    };\n\n    var p = slip.Decoder.prototype;\n\n    /**\n     * Decodes a SLIP data packet.\n     * The onMessage callback will be invoked when a complete message has been decoded.\n     *\n     * @param {Array-like} data an incoming stream of bytes\n     */\n    p.decode = function (data) {\n        data = slip.byteArray(data);\n\n        var msg;\n        for (var i = 0; i < data.length; i++) {\n            var val = data[i];\n\n            if (this.escape) {\n                if (val === slip.ESC_ESC) {\n                    val = slip.ESC;\n                } else if (val === slip.ESC_END) {\n                    val = slip.END;\n                }\n            } else {\n                if (val === slip.ESC) {\n                    this.escape = true;\n                    continue;\n                }\n\n                if (val === slip.END) {\n                    msg = this.handleEnd();\n                    continue;\n                }\n            }\n\n            var more = this.addByte(val);\n            if (!more) {\n                this.handleMessageMaxError();\n            }\n        }\n\n        return msg;\n    };\n\n    p.handleMessageMaxError = function () {\n        if (this.onError) {\n            this.onError(this.msgBuffer.subarray(0),\n                \"The message is too large; the maximum message size is \" +\n                this.maxMessageSize / 1024 + \"KB. Use a larger maxMessageSize if necessary.\");\n        }\n\n        // Reset everything and carry on.\n        this.msgBufferIdx = 0;\n        this.escape = false;\n    };\n\n    // Unsupported, non-API method.\n    p.addByte = function (val) {\n        if (this.msgBufferIdx > this.msgBuffer.length - 1) {\n            this.msgBuffer = slip.expandByteArray(this.msgBuffer);\n        }\n\n        this.msgBuffer[this.msgBufferIdx++] = val;\n        this.escape = false;\n\n        return this.msgBuffer.length < this.maxMessageSize;\n    };\n\n    // Unsupported, non-API method.\n    p.handleEnd = function () {\n        if (this.msgBufferIdx === 0) {\n            return; // Toss opening END byte and carry on.\n        }\n\n        var msg = slip.sliceByteArray(this.msgBuffer, 0, this.msgBufferIdx);\n        if (this.onMessage) {\n            this.onMessage(msg);\n        }\n\n        // Clear our pointer into the message buffer.\n        this.msgBufferIdx = 0;\n\n        return msg;\n    };\n\n    return slip;\n}));\n"]}