| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | "use strict";Object.defineProperty(exports, "__esModule", {  value: true});exports.parseString = parseString;// string literal characters cannot contain control codesvar CONTROL_CODES = [0, // null7, // bell8, // backspace9, // horizontal10, // line feed11, // vertical tab12, // form feed13, // carriage return26, // Control-Z27, // escape127 // delete]; // escaped sequences can either be a two character hex value, or one of the// following single character codesfunction decodeControlCharacter(char) {  switch (char) {    case "t":      return 0x09;    case "n":      return 0x0a;    case "r":      return 0x0d;    case '"':      return 0x22;    case "′":      return 0x27;    case "\\":      return 0x5c;  }  return -1;}var ESCAPE_CHAR = 92; // backslashvar QUOTE_CHAR = 34; // backslash// parse string as per the spec:// https://webassembly.github.io/spec/core/multipage/text/values.html#text-stringfunction parseString(value) {  var byteArray = [];  var index = 0;  while (index < value.length) {    var charCode = value.charCodeAt(index);    if (CONTROL_CODES.indexOf(charCode) !== -1) {      throw new Error("ASCII control characters are not permitted within string literals");    }    if (charCode === QUOTE_CHAR) {      throw new Error("quotes are not permitted within string literals");    }    if (charCode === ESCAPE_CHAR) {      var firstChar = value.substr(index + 1, 1);      var decodedControlChar = decodeControlCharacter(firstChar);      if (decodedControlChar !== -1) {        // single character escaped values, e.g. \r        byteArray.push(decodedControlChar);        index += 2;      } else {        // hex escaped values, e.g. \2a        var hexValue = value.substr(index + 1, 2);        if (!/^[0-9A-F]{2}$/i.test(hexValue)) {          throw new Error("invalid character encoding");        }        byteArray.push(parseInt(hexValue, 16));        index += 3;      }    } else {      // ASCII encoded values      byteArray.push(charCode);      index++;    }  }  return byteArray;}
 |