From 609aa648b27f9a246850ea95151cb1ca5600b31e Mon Sep 17 00:00:00 2001 From: Alexander Rose <alex.rose@rcsb.org> Date: Tue, 5 Sep 2017 11:28:59 -0700 Subject: [PATCH] added dist files --- dist/molio.esm.js | 641 ++++++++++++++++++++++++++++++++++++++++++++++ dist/molio.js | 1 + 2 files changed, 642 insertions(+) create mode 100644 dist/molio.esm.js create mode 100644 dist/molio.js diff --git a/dist/molio.esm.js b/dist/molio.esm.js new file mode 100644 index 000000000..572b8877b --- /dev/null +++ b/dist/molio.esm.js @@ -0,0 +1,641 @@ +/* + * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info. + * + * from https://github.com/dsehnal/CIFTools.js + * @author David Sehnal <david.sehnal@gmail.com> + */ +/** + * Efficient integer and float parsers. + * + * For the purposes of parsing numbers from the mmCIF data representations, + * up to 4 times faster than JS parseInt/parseFloat. + */ + +function parseInt(str, start, end) { + var ret = 0, neg = 1; + if (str.charCodeAt(start) === 45 /* - */) { + neg = -1; + start++; + } + for (; start < end; start++) { + var c = str.charCodeAt(start) - 48; + if (c > 9 || c < 0) + { return (neg * ret) | 0; } + else + { ret = (10 * ret + c) | 0; } + } + return neg * ret; +} +function parseScientific(main, str, start, end) { + // handle + in '1e+1' separately. + if (str.charCodeAt(start) === 43 /* + */) + { start++; } + return main * Math.pow(10.0, parseInt(str, start, end)); +} + +function parseFloat(str, start, end) { + var neg = 1.0, ret = 0.0, point = 0.0, div = 1.0; + if (str.charCodeAt(start) === 45) { + neg = -1.0; + ++start; + } + while (start < end) { + var c = str.charCodeAt(start) - 48; + if (c >= 0 && c < 10) { + ret = ret * 10 + c; + ++start; + } + else if (c === -2) { + ++start; + while (start < end) { + c = str.charCodeAt(start) - 48; + if (c >= 0 && c < 10) { + point = 10.0 * point + c; + div = 10.0 * div; + ++start; + } + else if (c === 53 || c === 21) { + return parseScientific(neg * (ret + point / div), str, start + 1, end); + } + else { + return neg * (ret + point / div); + } + } + return neg * (ret + point / div); + } + else if (c === 53 || c === 21) { + return parseScientific(neg * ret, str, start + 1, end); + } + else + { break; } + } + return neg * ret; +} + +/** + * Eat everything until a newline occurs. + */ +function eatLine(state) { + while (state.position < state.length) { + switch (state.data.charCodeAt(state.position)) { + case 10:// \n + state.currentTokenEnd = state.position; + ++state.position; + ++state.currentLineNumber; + return; + case 13:// \r + state.currentTokenEnd = state.position; + ++state.position; + ++state.currentLineNumber; + if (state.data.charCodeAt(state.position) === 10) { + ++state.position; + } + return; + default: + ++state.position; + } + } + state.currentTokenEnd = state.position; +} +/** + * Eat everything until a whitespace/newline occurs. + */ +function eatValue(state) { + while (state.position < state.length) { + switch (state.data.charCodeAt(state.position)) { + case 9: // \t + case 10: // \n + case 13: // \r + case 32:// ' ' + state.currentTokenEnd = state.position; + return; + default: + ++state.position; + break; + } + } + state.currentTokenEnd = state.position; +} +/** + * Skips all the whitespace - space, tab, newline, CR + * Handles incrementing line count. + */ +function skipWhitespace(state) { + var prev = 10; + while (state.position < state.length) { + var c = state.data.charCodeAt(state.position); + switch (c) { + case 9: // '\t' + case 32:// ' ' + prev = c; + ++state.position; + break; + case 10:// \n + // handle \r\n + if (prev !== 13) { + ++state.currentLineNumber; + } + prev = c; + ++state.position; + break; + case 13:// \r + prev = c; + ++state.position; + ++state.currentLineNumber; + break; + default: + return prev; + } + } + return prev; +} + +var Tokens; +(function (Tokens) { + function resize(tokens) { + // scale the size using golden ratio, because why not. + var newBuffer = new Int32Array((1.61 * tokens.indices.length) | 0); + newBuffer.set(tokens.indices); + tokens.indices = newBuffer; + tokens.indicesLenMinus2 = (newBuffer.length - 2) | 0; + } + function add(tokens, start, end) { + if (tokens.count > tokens.indicesLenMinus2) { + resize(tokens); + } + tokens.indices[tokens.count++] = start; + tokens.indices[tokens.count++] = end; + } + Tokens.add = add; + function addUnchecked(tokens, start, end) { + tokens.indices[tokens.count++] = start; + tokens.indices[tokens.count++] = end; + } + Tokens.addUnchecked = addUnchecked; + function create(size) { + return { + indicesLenMinus2: (size - 2) | 0, + count: 0, + indices: new Int32Array(size) + }; + } + Tokens.create = create; +})(Tokens || (Tokens = {})); + +/** + * Represents a column that is not present. + */ +var _UndefinedColumn = function _UndefinedColumn() { + this.isDefined = false; +}; +_UndefinedColumn.prototype.getString = function getString (row) { return null; }; + +_UndefinedColumn.prototype.getInteger = function getInteger (row) { return 0; }; +_UndefinedColumn.prototype.getFloat = function getFloat (row) { return 0.0; }; +_UndefinedColumn.prototype.getValuePresence = function getValuePresence (row) { return 1 /* NotSpecified */; }; +_UndefinedColumn.prototype.areValuesEqual = function areValuesEqual (rowA, rowB) { return true; }; +_UndefinedColumn.prototype.stringEquals = function stringEquals (row, value) { return value === null; }; +var UndefinedColumn = new _UndefinedColumn(); + +/* + * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info. + * + * from https://github.com/dsehnal/CIFTools.js + * @author David Sehnal <david.sehnal@gmail.com> + */ +var ShortStringPool; +(function (ShortStringPool) { + function create() { return Object.create(null); } + ShortStringPool.create = create; + function get(pool, str) { + if (str.length > 6) + { return str; } + var value = pool[str]; + if (value !== void 0) + { return value; } + pool[str] = str; + return str; + } + ShortStringPool.get = get; +})(ShortStringPool || (ShortStringPool = {})); + +/** + * Represents a single column. + */ +var TextColumn = function TextColumn(table, data, name, index) { + this.data = data; + this.name = name; + this.index = index; + this.stringPool = ShortStringPool.create(); + this.isDefined = true; + this.indices = table.indices; + this.columnCount = table.columnCount; +}; +/** + * Returns the string value at given row. + */ +TextColumn.prototype.getString = function getString (row) { + var i = (row * this.columnCount + this.index) * 2; + return ShortStringPool.get(this.stringPool, this.data.substring(this.indices[i], this.indices[i + 1])); +}; +/** + * Returns the integer value at given row. + */ +TextColumn.prototype.getInteger = function getInteger (row) { + var i = (row * this.columnCount + this.index) * 2; + return parseInt(this.data, this.indices[i], this.indices[i + 1]); +}; +/** + * Returns the float value at given row. + */ +TextColumn.prototype.getFloat = function getFloat (row) { + var i = (row * this.columnCount + this.index) * 2; + return parseFloat(this.data, this.indices[i], this.indices[i + 1]); +}; +/** + * Returns true if the token has the specified string value. + */ +TextColumn.prototype.stringEquals = function stringEquals (row, value) { + var this$1 = this; + + var aIndex = (row * this.columnCount + this.index) * 2, s = this.indices[aIndex], len = value.length; + if (len !== this.indices[aIndex + 1] - s) + { return false; } + for (var i = 0; i < len; i++) { + if (this$1.data.charCodeAt(i + s) !== value.charCodeAt(i)) + { return false; } + } + return true; +}; +/** + * Determines if values at the given rows are equal. + */ +TextColumn.prototype.areValuesEqual = function areValuesEqual (rowA, rowB) { + var this$1 = this; + + var aIndex = (rowA * this.columnCount + this.index) * 2; + var bIndex = (rowB * this.columnCount + this.index) * 2; + var aS = this.indices[aIndex]; + var bS = this.indices[bIndex]; + var len = this.indices[aIndex + 1] - aS; + if (len !== this.indices[bIndex + 1] - bS) + { return false; } + for (var i = 0; i < len; i++) { + if (this$1.data.charCodeAt(i + aS) !== this$1.data.charCodeAt(i + bS)) { + return false; + } + } + return true; +}; +TextColumn.prototype.getValuePresence = function getValuePresence (row) { + var index = 2 * (row * this.columnCount + this.index); + if (this.indices[index] === this.indices[index + 1]) { + return 1 /* NotSpecified */; + } + return 0 /* Present */; +}; +var CifColumn = (function (TextColumn) { + function CifColumn () { + TextColumn.apply(this, arguments); + } + + if ( TextColumn ) CifColumn.__proto__ = TextColumn; + CifColumn.prototype = Object.create( TextColumn && TextColumn.prototype ); + CifColumn.prototype.constructor = CifColumn; + + CifColumn.prototype.getString = function getString (row) { + var ret = TextColumn.prototype.getString.call(this, row); + if (ret === '.' || ret === '?') + { return null; } + return ret; + }; + /** + * Returns true if the value is not defined (. or ? token). + */ + CifColumn.prototype.getValuePresence = function getValuePresence (row) { + var index = 2 * (row * this.columnCount + this.index); + var s = this.indices[index]; + if (this.indices[index + 1] - s !== 1) + { return 0 /* Present */; } + var v = this.data.charCodeAt(s); + if (v === 46 /* . */) + { return 1 /* NotSpecified */; } + if (v === 63 /* ? */) + { return 2 /* Unknown */; } + return 0 /* Present */; + }; + + return CifColumn; +}(TextColumn)); + +/** + * Represents a table backed by a string. + */ +var TextTable = function TextTable(data, name, columns, tokens) { + this.name = name; + this.indices = tokens.indices; + this.data = data; + this.columnCount = columns.length; + this.rowCount = (tokens.count / 2 / columns.length) | 0; + this.initColumns(columns); +}; + +var prototypeAccessors = { columnNames: {} }; + +prototypeAccessors.columnNames.get = function () { + return this.columnNameList; +}; +/** + * Get a column object that makes accessing data easier. + */ +TextTable.prototype.getColumn = function getColumn (name) { + var i = this.columnIndices.get(name); + if (i !== void 0) + { return new TextColumn(this, this.data, name, i); } + return UndefinedColumn; +}; +TextTable.prototype.initColumns = function initColumns (columns) { + var this$1 = this; + + this.columnIndices = new Map(); + this.columnNameList = []; + for (var i = 0; i < columns.length; i++) { + this$1.columnIndices.set(columns[i], i); + this$1.columnNameList.push(columns[i]); + } +}; + +Object.defineProperties( TextTable.prototype, prototypeAccessors ); +var CifTable = (function (TextTable) { + function CifTable () { + TextTable.apply(this, arguments); + } + + if ( TextTable ) CifTable.__proto__ = TextTable; + CifTable.prototype = Object.create( TextTable && TextTable.prototype ); + CifTable.prototype.constructor = CifTable; + + CifTable.prototype.getColumn = function getColumn (name) { + var i = this.columnIndices.get(name); + if (i !== void 0) + { return new CifColumn(this, this.data, name, i); } + return UndefinedColumn; + }; + CifTable.prototype.initColumns = function initColumns (columns) { + var this$1 = this; + + this.columnIndices = new Map(); + this.columnNameList = []; + for (var i = 0; i < columns.length; i++) { + var colName = columns[i].substr(this$1.name.length + 1); + this$1.columnIndices.set(colName, i); + this$1.columnNameList.push(colName); + } + }; + + return CifTable; +}(TextTable)); + +/* + * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info. + * + * from https://github.com/dsehnal/CIFTools.js + * @author David Sehnal <david.sehnal@gmail.com> + */ +var ParserResult; +(function (ParserResult) { + function error(message, line) { + if ( line === void 0 ) line = -1; + + return new ParserError(message, line); + } + ParserResult.error = error; + function success(result, warnings) { + if ( warnings === void 0 ) warnings = []; + + return new ParserSuccess(result, warnings); + } + ParserResult.success = success; +})(ParserResult || (ParserResult = {})); +var ParserError = function ParserError(message, line) { + this.message = message; + this.line = line; + this.isError = true; +}; +ParserError.prototype.toString = function toString () { + if (this.line >= 0) { + return ("[Line " + (this.line) + "] " + (this.message)); + } + return this.message; +}; +var ParserSuccess = function ParserSuccess(result, warnings) { + this.result = result; + this.warnings = warnings; + this.isError = false; +}; + +/* + * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info. + * + * @author Alexander Rose <alexander.rose@weirdbyte.de> + */ +var GroFile = function GroFile(data) { + this.blocks = []; + this.data = data; +}; +var GroBlock = function GroBlock(data) { + this.data = data; + this.tableMap = new Map(); + this.tableList = []; +}; + +GroBlock.prototype.getTable = function getTable (name) { + return this.tableMap.get(name); +}; +/** + * Adds a table. + */ +GroBlock.prototype.addTable = function addTable (table) { + this.tableList[this.tableList.length] = table; + this.tableMap.set(table.name, table); +}; +function createTokenizer(data) { + return { + data: data, + position: 0, + length: data.length, + currentLineNumber: 1, + currentTokenStart: 0, + currentTokenEnd: 0, + numberOfAtoms: 0, + hasVelocities: false, + numberOfDecimalPlaces: 3 + }; +} +/** + * title string (free format string, optional time in ps after 't=') + */ +function handleTitleString(state, tokens) { + eatLine(state); + // console.log('title', state.data.substring(state.currentTokenStart, state.currentTokenEnd)) + var start = state.currentTokenStart; + var end = state.currentTokenEnd; + var valueStart = state.currentTokenStart; + var valueEnd = start; + while (valueEnd < end && !isTime(state.data, valueEnd)) + { ++valueEnd; } + if (isTime(state.data, valueEnd)) { + var timeStart = valueEnd + 2; + while (valueEnd > start && isSpaceOrComma(state.data, valueEnd - 1)) + { --valueEnd; } + Tokens.add(tokens, valueStart, valueEnd); // title + while (timeStart < end && state.data.charCodeAt(timeStart) === 32) + { ++timeStart; } + while (valueEnd > timeStart && state.data.charCodeAt(valueEnd - 1) === 32) + { --valueEnd; } + Tokens.add(tokens, timeStart, end); // time + } + else { + Tokens.add(tokens, valueStart, valueEnd); // title + Tokens.add(tokens, valueEnd, valueEnd); // empty token for time + } +} +function isSpaceOrComma(data, position) { + var c = data.charCodeAt(position); + return c === 32 || c === 44; +} +function isTime(data, position) { + // T/t + var c = data.charCodeAt(position); + if (c !== 84 && c !== 116) + { return false; } + // = + if (data.charCodeAt(position + 1) !== 61) + { return false; } + return true; +} +// function isDot(state: TokenizerState): boolean { +// // . +// if (state.data.charCodeAt(state.currentTokenStart) !== 46) return false; +// return true; +// } +// function numberOfDecimalPlaces (state: TokenizerState) { +// // var ndec = firstLines[ 2 ].length - firstLines[ 2 ].lastIndexOf('.') - 1 +// const start = state.currentTokenStart +// const end = state.currentTokenEnd +// for (let i = end; start < i; --i) { +// // . +// if (state.data.charCodeAt(i) === 46) return end - start - i +// } +// throw new Error('Could not determine number of decimal places') +// } +/** + * number of atoms (free format integer) + */ +function handleNumberOfAtoms(state, tokens) { + skipWhitespace(state); + state.currentTokenStart = state.position; + eatValue(state); + state.numberOfAtoms = parseInt(state.data, state.currentTokenStart, state.currentTokenEnd); + Tokens.add(tokens, state.currentTokenStart, state.currentTokenEnd); + eatLine(state); +} +// function checkForVelocities (state: GroState) { +// } +/** + * This format is fixed, ie. all columns are in a fixed position. + * Optionally (for now only yet with trjconv) you can write gro files + * with any number of decimal places, the format will then be n+5 + * positions with n decimal places (n+1 for velocities) in stead + * of 8 with 3 (with 4 for velocities). Upon reading, the precision + * will be inferred from the distance between the decimal points + * (which will be n+5). Columns contain the following information + * (from left to right): + * residue number (5 positions, integer) + * residue name (5 characters) + * atom name (5 characters) + * atom number (5 positions, integer) + * position (in nm, x y z in 3 columns, each 8 positions with 3 decimal places) + * velocity (in nm/ps (or km/s), x y z in 3 columns, each 8 positions with 4 decimal places) + */ +function handleAtoms(state, block) { + var name = 'atoms'; + var columns = ['residueNumber', 'residueName', 'atomName', 'atomNumber', 'x', 'y', 'z']; + if (state.hasVelocities) { + columns.push('vx', 'vy', 'vz'); + } + var fieldSizes = [5, 5, 5, 5, 8, 8, 8, 8, 8, 8]; + var columnCount = columns.length; + var tokens = Tokens.create(state.numberOfAtoms * 2 * columnCount); + var start; + var end; + var valueStart; + var valueEnd = state.position; + for (var i = 0; i < state.numberOfAtoms; ++i) { + state.currentTokenStart = state.position; + end = state.currentTokenStart; + for (var j = 0; j < columnCount; ++j) { + start = end; + end = start + fieldSizes[j]; + // trim + valueStart = start; + valueEnd = end; + while (valueStart < valueEnd && state.data.charCodeAt(valueStart) === 32) + { ++valueStart; } + while (valueEnd > valueStart && state.data.charCodeAt(valueEnd - 1) === 32) + { --valueEnd; } + Tokens.addUnchecked(tokens, valueStart, valueEnd); + } + state.position = valueEnd; + eatLine(state); + } + block.addTable(new TextTable(state.data, name, columns, tokens)); +} +/** + * box vectors (free format, space separated reals), values: + * v1(x) v2(y) v3(z) v1(y) v1(z) v2(x) v2(z) v3(x) v3(y), + * the last 6 values may be omitted (they will be set to zero). + * Gromacs only supports boxes with v1(y)=v1(z)=v2(z)=0. + */ +function handleBoxVectors(state, tokens) { + // just read the first three values, ignore any remaining + for (var i = 0; i < 3; ++i) { + skipWhitespace(state); + state.currentTokenStart = state.position; + eatValue(state); + Tokens.add(tokens, state.currentTokenStart, state.currentTokenEnd); + } +} +/** + * Creates an error result. + */ +// function error(line: number, message: string) { +// return ParserResult.error<GroFile>(message, line); +// } +/** + * Creates a data result. + */ +function result(data) { + return ParserResult.success(data); +} +function parseInternal(data) { + var state = createTokenizer(data); + var file = new GroFile(data); + var block = new GroBlock(data); + file.blocks.push(block); + var headerColumns = ['title', 'timeInPs', 'numberOfAtoms', 'boxX', 'boxY', 'boxZ']; + var headerTokens = Tokens.create(2 * headerColumns.length); + var header = new TextTable(state.data, 'header', headerColumns, headerTokens); + block.addTable(header); + handleTitleString(state, headerTokens); + handleNumberOfAtoms(state, headerTokens); + handleAtoms(state, block); + handleBoxVectors(state, headerTokens); + return result(file); +} +function parse(data) { + return parseInternal(data); +} + +export { parse as groReader }; +//# sourceMappingURL=molio.esm.js.map diff --git a/dist/molio.js b/dist/molio.js new file mode 100644 index 000000000..0f83341da --- /dev/null +++ b/dist/molio.js @@ -0,0 +1 @@ +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n(t.MOLIO={})}(this,function(t){"use strict";function n(t,n,e){var i=0,r=1;for(45===t.charCodeAt(n)&&(r=-1,n++);n<e;n++){var o=t.charCodeAt(n)-48;if(o>9||o<0)return r*i|0;i=10*i+o|0}return r*i}function e(t,e,i,r){return 43===e.charCodeAt(i)&&i++,t*Math.pow(10,n(e,i,r))}function i(t,n,i){var r=1,o=0,s=0,u=1;for(45===t.charCodeAt(n)&&(r=-1,++n);n<i;){var a=t.charCodeAt(n)-48;if(!(a>=0&&a<10)){if(-2===a){for(++n;n<i;){if(!((a=t.charCodeAt(n)-48)>=0&&a<10))return 53===a||21===a?e(r*(o+s/u),t,n+1,i):r*(o+s/u);s=10*s+a,u*=10,++n}return r*(o+s/u)}if(53===a||21===a)return e(r*o,t,n+1,i);break}o=10*o+a,++n}return r*o}function r(t){for(;t.position<t.length;)switch(t.data.charCodeAt(t.position)){case 10:return t.currentTokenEnd=t.position,++t.position,void++t.currentLineNumber;case 13:return t.currentTokenEnd=t.position,++t.position,++t.currentLineNumber,void(10===t.data.charCodeAt(t.position)&&++t.position);default:++t.position}t.currentTokenEnd=t.position}function o(t){for(;t.position<t.length;)switch(t.data.charCodeAt(t.position)){case 9:case 10:case 13:case 32:return void(t.currentTokenEnd=t.position);default:++t.position}t.currentTokenEnd=t.position}function s(t){for(var n=10;t.position<t.length;){var e=t.data.charCodeAt(t.position);switch(e){case 9:case 32:n=e,++t.position;break;case 10:13!==n&&++t.currentLineNumber,n=e,++t.position;break;case 13:n=e,++t.position,++t.currentLineNumber;break;default:return n}}return n}function u(t){return{data:t,position:0,length:t.length,currentLineNumber:1,currentTokenStart:0,currentTokenEnd:0,numberOfAtoms:0,hasVelocities:!1,numberOfDecimalPlaces:3}}function a(t,n){r(t);for(var e=t.currentTokenStart,i=t.currentTokenEnd,o=t.currentTokenStart,s=e;s<i&&!d(t.data,s);)++s;if(d(t.data,s)){for(var u=s+2;s>e&&c(t.data,s-1);)--s;for(v.add(n,o,s);u<i&&32===t.data.charCodeAt(u);)++u;for(;s>u&&32===t.data.charCodeAt(s-1);)--s;v.add(n,u,i)}else v.add(n,o,s),v.add(n,s,s)}function c(t,n){var e=t.charCodeAt(n);return 32===e||44===e}function d(t,n){var e=t.charCodeAt(n);return(84===e||116===e)&&61===t.charCodeAt(n+1)}function h(t,e){s(t),t.currentTokenStart=t.position,o(t),t.numberOfAtoms=n(t.data,t.currentTokenStart,t.currentTokenEnd),v.add(e,t.currentTokenStart,t.currentTokenEnd),r(t)}function f(t,n){var e=["residueNumber","residueName","atomName","atomNumber","x","y","z"];t.hasVelocities&&e.push("vx","vy","vz");for(var i,o,s,u=[5,5,5,5,8,8,8,8,8,8],a=e.length,c=v.create(2*t.numberOfAtoms*a),d=t.position,h=0;h<t.numberOfAtoms;++h){t.currentTokenStart=t.position,o=t.currentTokenStart;for(var f=0;f<a;++f){for(s=i=o,d=o=i+u[f];s<d&&32===t.data.charCodeAt(s);)++s;for(;d>s&&32===t.data.charCodeAt(d-1);)--d;v.addUnchecked(c,s,d)}t.position=d,r(t)}n.addTable(new k(t.data,"atoms",e,c))}function p(t,n){for(var e=0;e<3;++e)s(t),t.currentTokenStart=t.position,o(t),v.add(n,t.currentTokenStart,t.currentTokenEnd)}function l(t){return w.success(t)}function m(t){var n=u(t),e=new E(t),i=new N(t);e.blocks.push(i);var r=["title","timeInPs","numberOfAtoms","boxX","boxY","boxZ"],o=v.create(2*r.length),s=new k(n.data,"header",r,o);return i.addTable(s),a(n,o),h(n,o),f(n,i),p(n,o),l(e)}var v;!function(t){function n(t){var n=new Int32Array(1.61*t.indices.length|0);n.set(t.indices),t.indices=n,t.indicesLenMinus2=n.length-2|0}t.add=function(t,e,i){t.count>t.indicesLenMinus2&&n(t),t.indices[t.count++]=e,t.indices[t.count++]=i},t.addUnchecked=function(t,n,e){t.indices[t.count++]=n,t.indices[t.count++]=e},t.create=function(t){return{indicesLenMinus2:t-2|0,count:0,indices:new Int32Array(t)}}}(v||(v={}));var g=function(){this.isDefined=!1};g.prototype.getString=function(t){return null},g.prototype.getInteger=function(t){return 0},g.prototype.getFloat=function(t){return 0},g.prototype.getValuePresence=function(t){return 1},g.prototype.areValuesEqual=function(t,n){return!0},g.prototype.stringEquals=function(t,n){return null===n};var b,y=new g;!function(t){t.create=function(){return Object.create(null)},t.get=function(t,n){if(n.length>6)return n;var e=t[n];return void 0!==e?e:(t[n]=n,n)}}(b||(b={}));var C=function(t,n,e,i){this.data=n,this.name=e,this.index=i,this.stringPool=b.create(),this.isDefined=!0,this.indices=t.indices,this.columnCount=t.columnCount};C.prototype.getString=function(t){var n=2*(t*this.columnCount+this.index);return b.get(this.stringPool,this.data.substring(this.indices[n],this.indices[n+1]))},C.prototype.getInteger=function(t){var e=2*(t*this.columnCount+this.index);return n(this.data,this.indices[e],this.indices[e+1])},C.prototype.getFloat=function(t){var n=2*(t*this.columnCount+this.index);return i(this.data,this.indices[n],this.indices[n+1])},C.prototype.stringEquals=function(t,n){var e=this,i=2*(t*this.columnCount+this.index),r=this.indices[i],o=n.length;if(o!==this.indices[i+1]-r)return!1;for(var s=0;s<o;s++)if(e.data.charCodeAt(s+r)!==n.charCodeAt(s))return!1;return!0},C.prototype.areValuesEqual=function(t,n){var e=this,i=2*(t*this.columnCount+this.index),r=2*(n*this.columnCount+this.index),o=this.indices[i],s=this.indices[r],u=this.indices[i+1]-o;if(u!==this.indices[r+1]-s)return!1;for(var a=0;a<u;a++)if(e.data.charCodeAt(a+o)!==e.data.charCodeAt(a+s))return!1;return!0},C.prototype.getValuePresence=function(t){var n=2*(t*this.columnCount+this.index);return this.indices[n]===this.indices[n+1]?1:0};var A=function(t){function n(){t.apply(this,arguments)}return t&&(n.__proto__=t),n.prototype=Object.create(t&&t.prototype),n.prototype.constructor=n,n.prototype.getString=function(n){var e=t.prototype.getString.call(this,n);return"."===e||"?"===e?null:e},n.prototype.getValuePresence=function(t){var n=2*(t*this.columnCount+this.index),e=this.indices[n];if(this.indices[n+1]-e!=1)return 0;var i=this.data.charCodeAt(e);return 46===i?1:63===i?2:0},n}(C),k=function(t,n,e,i){this.name=n,this.indices=i.indices,this.data=t,this.columnCount=e.length,this.rowCount=i.count/2/e.length|0,this.initColumns(e)},T={columnNames:{}};T.columnNames.get=function(){return this.columnNameList},k.prototype.getColumn=function(t){var n=this.columnIndices.get(t);return void 0!==n?new C(this,this.data,t,n):y},k.prototype.initColumns=function(t){var n=this;this.columnIndices=new Map,this.columnNameList=[];for(var e=0;e<t.length;e++)n.columnIndices.set(t[e],e),n.columnNameList.push(t[e])},Object.defineProperties(k.prototype,T);var w;!function(t){function n(){t.apply(this,arguments)}t&&(n.__proto__=t),n.prototype=Object.create(t&&t.prototype),n.prototype.constructor=n,n.prototype.getColumn=function(t){var n=this.columnIndices.get(t);return void 0!==n?new A(this,this.data,t,n):y},n.prototype.initColumns=function(t){var n=this;this.columnIndices=new Map,this.columnNameList=[];for(var e=0;e<t.length;e++){var i=t[e].substr(n.name.length+1);n.columnIndices.set(i,e),n.columnNameList.push(i)}}}(k);!function(t){t.error=function(t,n){return void 0===n&&(n=-1),new L(t,n)},t.success=function(t,n){return void 0===n&&(n=[]),new x(t,n)}}(w||(w={}));var L=function(t,n){this.message=t,this.line=n,this.isError=!0};L.prototype.toString=function(){return this.line>=0?"[Line "+this.line+"] "+this.message:this.message};var x=function(t,n){this.result=t,this.warnings=n,this.isError=!1},E=function(t){this.blocks=[],this.data=t},N=function(t){this.data=t,this.tableMap=new Map,this.tableList=[]};N.prototype.getTable=function(t){return this.tableMap.get(t)},N.prototype.addTable=function(t){this.tableList[this.tableList.length]=t,this.tableMap.set(t.name,t)},t.groReader=function(t){return m(t)},Object.defineProperty(t,"__esModule",{value:!0})}); -- GitLab