Team Ai
Datasetpublic

Brunobkr/llama.cpp_AlgMor24_github

ΩFFFΣLLIa • llama.cpp • AlgMor24 ██████╗ ███████╗███████╗███████╗██╗ ██╗ ██╗ █████╗ ██╔═══██╗██╔════╝██╔════╝██╔════╝██║ ██║ ██║██╔══██╗ ██║ ██║█████╗ █████╗ █████╗ ██║ ██║ ██║███████║ ██║ ██║██╔══╝ ██╔══╝ ██╔══╝ ██║ ██║ ██║██╔══██║ ╚██████╔╝██║ ██║ ███████╗███████╗███████╗██║██║ ██║ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝╚══════╝╚═╝╚═╝ ╚═╝ High-Performance LLM / VLM Inference & Autonomous Agentic Ecosystem… See the full description on the dataset page: https://huggingface.co/datasets/Brunobkr/llama.cpp_AlgMor24_github.

sourceHugging Faceupdated 2mo agoView on Hugging Face
0likes3.1kdownloads
parser.js683 linesDownload Raw Back to impl
1(function (factory) {2    if (typeof module === "object" && typeof module.exports === "object") {3        var v = factory(require, exports);4        if (v !== undefined) module.exports = v;5    }6    else if (typeof define === "function" && define.amd) {7        define(["require", "exports", "./scanner"], factory);8    }9})(function (require, exports) {10    /*---------------------------------------------------------------------------------------------11     *  Copyright (c) Microsoft Corporation. All rights reserved.12     *  Licensed under the MIT License. See License.txt in the project root for license information.13     *--------------------------------------------------------------------------------------------*/14    'use strict';15    Object.defineProperty(exports, "__esModule", { value: true });16    exports.getNodeType = exports.stripComments = exports.visit = exports.findNodeAtOffset = exports.contains = exports.getNodeValue = exports.getNodePath = exports.findNodeAtLocation = exports.parseTree = exports.parse = exports.getLocation = void 0;17    const scanner_1 = require("./scanner");18    var ParseOptions;19    (function (ParseOptions) {20        ParseOptions.DEFAULT = {21            allowTrailingComma: false22        };23    })(ParseOptions || (ParseOptions = {}));24    /**25     * For a given offset, evaluate the location in the JSON document. Each segment in the location path is either a property name or an array index.26     */27    function getLocation(text, position) {28        const segments = []; // strings or numbers29        const earlyReturnException = new Object();30        let previousNode = undefined;31        const previousNodeInst = {32            value: {},33            offset: 0,34            length: 0,35            type: 'object',36            parent: undefined37        };38        let isAtPropertyKey = false;39        function setPreviousNode(value, offset, length, type) {40            previousNodeInst.value = value;41            previousNodeInst.offset = offset;42            previousNodeInst.length = length;43            previousNodeInst.type = type;44            previousNodeInst.colonOffset = undefined;45            previousNode = previousNodeInst;46        }47        try {48            visit(text, {49                onObjectBegin: (offset, length) => {50                    if (position <= offset) {51                        throw earlyReturnException;52                    }53                    previousNode = undefined;54                    isAtPropertyKey = position > offset;55                    segments.push(''); // push a placeholder (will be replaced)56                },57                onObjectProperty: (name, offset, length) => {58                    if (position < offset) {59                        throw earlyReturnException;60                    }61                    setPreviousNode(name, offset, length, 'property');62                    segments[segments.length - 1] = name;63                    if (position <= offset + length) {64                        throw earlyReturnException;65                    }66                },67                onObjectEnd: (offset, length) => {68                    if (position <= offset) {69                        throw earlyReturnException;70                    }71                    previousNode = undefined;72                    segments.pop();73                },74                onArrayBegin: (offset, length) => {75                    if (position <= offset) {76                        throw earlyReturnException;77                    }78                    previousNode = undefined;79                    segments.push(0);80                },81                onArrayEnd: (offset, length) => {82                    if (position <= offset) {83                        throw earlyReturnException;84                    }85                    previousNode = undefined;86                    segments.pop();87                },88                onLiteralValue: (value, offset, length) => {89                    if (position < offset) {90                        throw earlyReturnException;91                    }92                    setPreviousNode(value, offset, length, getNodeType(value));93                    if (position <= offset + length) {94                        throw earlyReturnException;95                    }96                },97                onSeparator: (sep, offset, length) => {98                    if (position <= offset) {99                        throw earlyReturnException;100                    }101                    if (sep === ':' && previousNode && previousNode.type === 'property') {102                        previousNode.colonOffset = offset;103                        isAtPropertyKey = false;104                        previousNode = undefined;105                    }106                    else if (sep === ',') {107                        const last = segments[segments.length - 1];108                        if (typeof last === 'number') {109                            segments[segments.length - 1] = last + 1;110                        }111                        else {112                            isAtPropertyKey = true;113                            segments[segments.length - 1] = '';114                        }115                        previousNode = undefined;116                    }117                }118            });119        }120        catch (e) {121            if (e !== earlyReturnException) {122                throw e;123            }124        }125        return {126            path: segments,127            previousNode,128            isAtPropertyKey,129            matches: (pattern) => {130                let k = 0;131                for (let i = 0; k < pattern.length && i < segments.length; i++) {132                    if (pattern[k] === segments[i] || pattern[k] === '*') {133                        k++;134                    }135                    else if (pattern[k] !== '**') {136                        return false;137                    }138                }139                return k === pattern.length;140            }141        };142    }143    exports.getLocation = getLocation;144    /**145     * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.146     * Therefore always check the errors list to find out if the input was valid.147     */148    function parse(text, errors = [], options = ParseOptions.DEFAULT) {149        let currentProperty = null;150        let currentParent = [];151        const previousParents = [];152        function onValue(value) {153            if (Array.isArray(currentParent)) {154                currentParent.push(value);155            }156            else if (currentProperty !== null) {157                currentParent[currentProperty] = value;158            }159        }160        const visitor = {161            onObjectBegin: () => {162                const object = {};163                onValue(object);164                previousParents.push(currentParent);165                currentParent = object;166                currentProperty = null;167            },168            onObjectProperty: (name) => {169                currentProperty = name;170            },171            onObjectEnd: () => {172                currentParent = previousParents.pop();173            },174            onArrayBegin: () => {175                const array = [];176                onValue(array);177                previousParents.push(currentParent);178                currentParent = array;179                currentProperty = null;180            },181            onArrayEnd: () => {182                currentParent = previousParents.pop();183            },184            onLiteralValue: onValue,185            onError: (error, offset, length) => {186                errors.push({ error, offset, length });187            }188        };189        visit(text, visitor, options);190        return currentParent[0];191    }192    exports.parse = parse;193    /**194     * Parses the given text and returns a tree representation the JSON content. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.195     */196    function parseTree(text, errors = [], options = ParseOptions.DEFAULT) {197        let currentParent = { type: 'array', offset: -1, length: -1, children: [], parent: undefined }; // artificial root198        function ensurePropertyComplete(endOffset) {199            if (currentParent.type === 'property') {200                currentParent.length = endOffset - currentParent.offset;201                currentParent = currentParent.parent;202            }203        }204        function onValue(valueNode) {205            currentParent.children.push(valueNode);206            return valueNode;207        }208        const visitor = {209            onObjectBegin: (offset) => {210                currentParent = onValue({ type: 'object', offset, length: -1, parent: currentParent, children: [] });211            },212            onObjectProperty: (name, offset, length) => {213                currentParent = onValue({ type: 'property', offset, length: -1, parent: currentParent, children: [] });214                currentParent.children.push({ type: 'string', value: name, offset, length, parent: currentParent });215            },216            onObjectEnd: (offset, length) => {217                ensurePropertyComplete(offset + length); // in case of a missing value for a property: make sure property is complete218                currentParent.length = offset + length - currentParent.offset;219                currentParent = currentParent.parent;220                ensurePropertyComplete(offset + length);221            },222            onArrayBegin: (offset, length) => {223                currentParent = onValue({ type: 'array', offset, length: -1, parent: currentParent, children: [] });224            },225            onArrayEnd: (offset, length) => {226                currentParent.length = offset + length - currentParent.offset;227                currentParent = currentParent.parent;228                ensurePropertyComplete(offset + length);229            },230            onLiteralValue: (value, offset, length) => {231                onValue({ type: getNodeType(value), offset, length, parent: currentParent, value });232                ensurePropertyComplete(offset + length);233            },234            onSeparator: (sep, offset, length) => {235                if (currentParent.type === 'property') {236                    if (sep === ':') {237                        currentParent.colonOffset = offset;238                    }239                    else if (sep === ',') {240                        ensurePropertyComplete(offset);241                    }242                }243            },244            onError: (error, offset, length) => {245                errors.push({ error, offset, length });246            }247        };248        visit(text, visitor, options);249        const result = currentParent.children[0];250        if (result) {251            delete result.parent;252        }253        return result;254    }255    exports.parseTree = parseTree;256    /**257     * Finds the node at the given path in a JSON DOM.258     */259    function findNodeAtLocation(root, path) {260        if (!root) {261            return undefined;262        }263        let node = root;264        for (let segment of path) {265            if (typeof segment === 'string') {266                if (node.type !== 'object' || !Array.isArray(node.children)) {267                    return undefined;268                }269                let found = false;270                for (const propertyNode of node.children) {271                    if (Array.isArray(propertyNode.children) && propertyNode.children[0].value === segment && propertyNode.children.length === 2) {272                        node = propertyNode.children[1];273                        found = true;274                        break;275                    }276                }277                if (!found) {278                    return undefined;279                }280            }281            else {282                const index = segment;283                if (node.type !== 'array' || index < 0 || !Array.isArray(node.children) || index >= node.children.length) {284                    return undefined;285                }286                node = node.children[index];287            }288        }289        return node;290    }291    exports.findNodeAtLocation = findNodeAtLocation;292    /**293     * Gets the JSON path of the given JSON DOM node294     */295    function getNodePath(node) {296        if (!node.parent || !node.parent.children) {297            return [];298        }299        const path = getNodePath(node.parent);300        if (node.parent.type === 'property') {301            const key = node.parent.children[0].value;302            path.push(key);303        }304        else if (node.parent.type === 'array') {305            const index = node.parent.children.indexOf(node);306            if (index !== -1) {307                path.push(index);308            }309        }310        return path;311    }312    exports.getNodePath = getNodePath;313    /**314     * Evaluates the JavaScript object of the given JSON DOM node315     */316    function getNodeValue(node) {317        switch (node.type) {318            case 'array':319                return node.children.map(getNodeValue);320            case 'object':321                const obj = Object.create(null);322                for (let prop of node.children) {323                    const valueNode = prop.children[1];324                    if (valueNode) {325                        obj[prop.children[0].value] = getNodeValue(valueNode);326                    }327                }328                return obj;329            case 'null':330            case 'string':331            case 'number':332            case 'boolean':333                return node.value;334            default:335                return undefined;336        }337    }338    exports.getNodeValue = getNodeValue;339    function contains(node, offset, includeRightBound = false) {340        return (offset >= node.offset && offset < (node.offset + node.length)) || includeRightBound && (offset === (node.offset + node.length));341    }342    exports.contains = contains;343    /**344     * Finds the most inner node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.345     */346    function findNodeAtOffset(node, offset, includeRightBound = false) {347        if (contains(node, offset, includeRightBound)) {348            const children = node.children;349            if (Array.isArray(children)) {350                for (let i = 0; i < children.length && children[i].offset <= offset; i++) {351                    const item = findNodeAtOffset(children[i], offset, includeRightBound);352                    if (item) {353                        return item;354                    }355                }356            }357            return node;358        }359        return undefined;360    }361    exports.findNodeAtOffset = findNodeAtOffset;362    /**363     * Parses the given text and invokes the visitor functions for each object, array and literal reached.364     */365    function visit(text, visitor, options = ParseOptions.DEFAULT) {366        const _scanner = (0, scanner_1.createScanner)(text, false);367        // Important: Only pass copies of this to visitor functions to prevent accidental modification, and368        // to not affect visitor functions which stored a reference to a previous JSONPath369        const _jsonPath = [];370        // Depth of onXXXBegin() callbacks suppressed. onXXXEnd() decrements this if it isn't 0 already.371        // Callbacks are only called when this value is 0.372        let suppressedCallbacks = 0;373        function toNoArgVisit(visitFunction) {374            return visitFunction ? () => suppressedCallbacks === 0 && visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;375        }376        function toOneArgVisit(visitFunction) {377            return visitFunction ? (arg) => suppressedCallbacks === 0 && visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;378        }379        function toOneArgVisitWithPath(visitFunction) {380            return visitFunction ? (arg) => suppressedCallbacks === 0 && visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice()) : () => true;381        }382        function toBeginVisit(visitFunction) {383            return visitFunction ?384                () => {385                    if (suppressedCallbacks > 0) {386                        suppressedCallbacks++;387                    }388                    else {389                        let cbReturn = visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice());390                        if (cbReturn === false) {391                            suppressedCallbacks = 1;392                        }393                    }394                }395                : () => true;396        }397        function toEndVisit(visitFunction) {398            return visitFunction ?399                () => {400                    if (suppressedCallbacks > 0) {401                        suppressedCallbacks--;402                    }403                    if (suppressedCallbacks === 0) {404                        visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter());405                    }406                }407                : () => true;408        }409        const onObjectBegin = toBeginVisit(visitor.onObjectBegin), onObjectProperty = toOneArgVisitWithPath(visitor.onObjectProperty), onObjectEnd = toEndVisit(visitor.onObjectEnd), onArrayBegin = toBeginVisit(visitor.onArrayBegin), onArrayEnd = toEndVisit(visitor.onArrayEnd), onLiteralValue = toOneArgVisitWithPath(visitor.onLiteralValue), onSeparator = toOneArgVisit(visitor.onSeparator), onComment = toNoArgVisit(visitor.onComment), onError = toOneArgVisit(visitor.onError);410        const disallowComments = options && options.disallowComments;411        const allowTrailingComma = options && options.allowTrailingComma;412        function scanNext() {413            while (true) {414                const token = _scanner.scan();415                switch (_scanner.getTokenError()) {416                    case 4 /* ScanError.InvalidUnicode */:417                        handleError(14 /* ParseErrorCode.InvalidUnicode */);418                        break;419                    case 5 /* ScanError.InvalidEscapeCharacter */:420                        handleError(15 /* ParseErrorCode.InvalidEscapeCharacter */);421                        break;422                    case 3 /* ScanError.UnexpectedEndOfNumber */:423                        handleError(13 /* ParseErrorCode.UnexpectedEndOfNumber */);424                        break;425                    case 1 /* ScanError.UnexpectedEndOfComment */:426                        if (!disallowComments) {427                            handleError(11 /* ParseErrorCode.UnexpectedEndOfComment */);428                        }429                        break;430                    case 2 /* ScanError.UnexpectedEndOfString */:431                        handleError(12 /* ParseErrorCode.UnexpectedEndOfString */);432                        break;433                    case 6 /* ScanError.InvalidCharacter */:434                        handleError(16 /* ParseErrorCode.InvalidCharacter */);435                        break;436                }437                switch (token) {438                    case 12 /* SyntaxKind.LineCommentTrivia */:439                    case 13 /* SyntaxKind.BlockCommentTrivia */:440                        if (disallowComments) {441                            handleError(10 /* ParseErrorCode.InvalidCommentToken */);442                        }443                        else {444                            onComment();445                        }446                        break;447                    case 16 /* SyntaxKind.Unknown */:448                        handleError(1 /* ParseErrorCode.InvalidSymbol */);449                        break;450                    case 15 /* SyntaxKind.Trivia */:451                    case 14 /* SyntaxKind.LineBreakTrivia */:452                        break;453                    default:454                        return token;455                }456            }457        }458        function handleError(error, skipUntilAfter = [], skipUntil = []) {459            onError(error);460            if (skipUntilAfter.length + skipUntil.length > 0) {461                let token = _scanner.getToken();462                while (token !== 17 /* SyntaxKind.EOF */) {463                    if (skipUntilAfter.indexOf(token) !== -1) {464                        scanNext();465                        break;466                    }467                    else if (skipUntil.indexOf(token) !== -1) {468                        break;469                    }470                    token = scanNext();471                }472            }473        }474        function parseString(isValue) {475            const value = _scanner.getTokenValue();476            if (isValue) {477                onLiteralValue(value);478            }479            else {480                onObjectProperty(value);481                // add property name afterwards482                _jsonPath.push(value);483            }484            scanNext();485            return true;486        }487        function parseLiteral() {488            switch (_scanner.getToken()) {489                case 11 /* SyntaxKind.NumericLiteral */:490                    const tokenValue = _scanner.getTokenValue();491                    let value = Number(tokenValue);492                    if (isNaN(value)) {493                        handleError(2 /* ParseErrorCode.InvalidNumberFormat */);494                        value = 0;495                    }496                    onLiteralValue(value);497                    break;498                case 7 /* SyntaxKind.NullKeyword */:499                    onLiteralValue(null);500                    break;501                case 8 /* SyntaxKind.TrueKeyword */:502                    onLiteralValue(true);503                    break;504                case 9 /* SyntaxKind.FalseKeyword */:505                    onLiteralValue(false);506                    break;507                default:508                    return false;509            }510            scanNext();511            return true;512        }513        function parseProperty() {514            if (_scanner.getToken() !== 10 /* SyntaxKind.StringLiteral */) {515                handleError(3 /* ParseErrorCode.PropertyNameExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);516                return false;517            }518            parseString(false);519            if (_scanner.getToken() === 6 /* SyntaxKind.ColonToken */) {520                onSeparator(':');521                scanNext(); // consume colon522                if (!parseValue()) {523                    handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);524                }525            }526            else {527                handleError(5 /* ParseErrorCode.ColonExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);528            }529            _jsonPath.pop(); // remove processed property name530            return true;531        }532        function parseObject() {533            onObjectBegin();534            scanNext(); // consume open brace535            let needsComma = false;536            while (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {537                if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {538                    if (!needsComma) {539                        handleError(4 /* ParseErrorCode.ValueExpected */, [], []);540                    }541                    onSeparator(',');542                    scanNext(); // consume comma543                    if (_scanner.getToken() === 2 /* SyntaxKind.CloseBraceToken */ && allowTrailingComma) {544                        break;545                    }546                }547                else if (needsComma) {548                    handleError(6 /* ParseErrorCode.CommaExpected */, [], []);549                }550                if (!parseProperty()) {551                    handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);552                }553                needsComma = true;554            }555            onObjectEnd();556            if (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */) {557                handleError(7 /* ParseErrorCode.CloseBraceExpected */, [2 /* SyntaxKind.CloseBraceToken */], []);558            }559            else {560                scanNext(); // consume close brace561            }562            return true;563        }564        function parseArray() {565            onArrayBegin();566            scanNext(); // consume open bracket567            let isFirstElement = true;568            let needsComma = false;569            while (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {570                if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {571                    if (!needsComma) {572                        handleError(4 /* ParseErrorCode.ValueExpected */, [], []);573                    }574                    onSeparator(',');575                    scanNext(); // consume comma576                    if (_scanner.getToken() === 4 /* SyntaxKind.CloseBracketToken */ && allowTrailingComma) {577                        break;578                    }579                }580                else if (needsComma) {581                    handleError(6 /* ParseErrorCode.CommaExpected */, [], []);582                }583                if (isFirstElement) {584                    _jsonPath.push(0);585                    isFirstElement = false;586                }587                else {588                    _jsonPath[_jsonPath.length - 1]++;589                }590                if (!parseValue()) {591                    handleError(4 /* ParseErrorCode.ValueExpected */, [], [4 /* SyntaxKind.CloseBracketToken */, 5 /* SyntaxKind.CommaToken */]);592                }593                needsComma = true;594            }595            onArrayEnd();596            if (!isFirstElement) {597                _jsonPath.pop(); // remove array index598            }599            if (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */) {600                handleError(8 /* ParseErrorCode.CloseBracketExpected */, [4 /* SyntaxKind.CloseBracketToken */], []);601            }602            else {603                scanNext(); // consume close bracket604            }605            return true;606        }607        function parseValue() {608            switch (_scanner.getToken()) {609                case 3 /* SyntaxKind.OpenBracketToken */:610                    return parseArray();611                case 1 /* SyntaxKind.OpenBraceToken */:612                    return parseObject();613                case 10 /* SyntaxKind.StringLiteral */:614                    return parseString(true);615                default:616                    return parseLiteral();617            }618        }619        scanNext();620        if (_scanner.getToken() === 17 /* SyntaxKind.EOF */) {621            if (options.allowEmptyContent) {622                return true;623            }624            handleError(4 /* ParseErrorCode.ValueExpected */, [], []);625            return false;626        }627        if (!parseValue()) {628            handleError(4 /* ParseErrorCode.ValueExpected */, [], []);629            return false;630        }631        if (_scanner.getToken() !== 17 /* SyntaxKind.EOF */) {632            handleError(9 /* ParseErrorCode.EndOfFileExpected */, [], []);633        }634        return true;635    }636    exports.visit = visit;637    /**638     * Takes JSON with JavaScript-style comments and remove639     * them. Optionally replaces every none-newline character640     * of comments with a replaceCharacter641     */642    function stripComments(text, replaceCh) {643        let _scanner = (0, scanner_1.createScanner)(text), parts = [], kind, offset = 0, pos;644        do {645            pos = _scanner.getPosition();646            kind = _scanner.scan();647            switch (kind) {648                case 12 /* SyntaxKind.LineCommentTrivia */:649                case 13 /* SyntaxKind.BlockCommentTrivia */:650                case 17 /* SyntaxKind.EOF */:651                    if (offset !== pos) {652                        parts.push(text.substring(offset, pos));653                    }654                    if (replaceCh !== undefined) {655                        parts.push(_scanner.getTokenValue().replace(/[^\r\n]/g, replaceCh));656                    }657                    offset = _scanner.getPosition();658                    break;659            }660        } while (kind !== 17 /* SyntaxKind.EOF */);661        return parts.join('');662    }663    exports.stripComments = stripComments;664    function getNodeType(value) {665        switch (typeof value) {666            case 'boolean': return 'boolean';667            case 'number': return 'number';668            case 'string': return 'string';669            case 'object': {670                if (!value) {671                    return 'null';672                }673                else if (Array.isArray(value)) {674                    return 'array';675                }676                return 'object';677            }678            default: return 'null';679        }680    }681    exports.getNodeType = getNodeType;682});683 
Brunobkr/llama.cpp_AlgMor24_github · Team Ai