You're Invited: Meet the Socket team at BSidesSF and RSAC - April 27 - May 1.RSVP
Socket
Sign inDemoInstall
Socket

@rsql/parser

Package Overview
Dependencies
Maintainers
1
Versions
30
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@rsql/parser - npm Package Compare versions

Comparing version

to
0.0.1-next.1

lib/error/InvalidCharacterError.d.ts

6

lib/error/InvalidTokenError.d.ts

@@ -0,10 +1,10 @@

import ParsingError from "./ParsingError";
import { AnyToken } from "../lexer/Token";
declare class InvalidTokenError extends Error {
declare class InvalidTokenError extends ParsingError {
readonly token: AnyToken;
readonly source: string;
static createForUnexpectedToken(token: AnyToken, source: string): InvalidTokenError;
static createForUnclosedParenthesis(token: AnyToken, source: string, parentPosition: number): InvalidTokenError;
static createForEmptyInput(token: AnyToken, source: string): InvalidTokenError;
constructor(message: string, token: AnyToken, source: string);
}
export default InvalidTokenError;
//# sourceMappingURL=InvalidTokenError.d.ts.map

@@ -15,3 +15,7 @@ "use strict";

})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var ParsingError_1 = __importDefault(require("./ParsingError"));
var Token_1 = require("../lexer/Token");

@@ -21,5 +25,4 @@ var InvalidTokenError = /** @class */ (function (_super) {

function InvalidTokenError(message, token, source) {
var _this = _super.call(this, message) || this;
var _this = _super.call(this, message, source) || this;
_this.token = token;
_this.source = source;
Object.setPrototypeOf(_this, InvalidTokenError.prototype);

@@ -31,3 +34,3 @@ return _this;

? "Unexpected end in \"" + source + "\""
: "Unexpected character '" + token.value + "' at position " + (token.position + 1) + " in \"" + source + "\"", token, source);
: "Unexpected " + (token.value.length > 1 ? "string" : "character") + " '" + token.value + "' at position " + (token.position + 1) + " in \"" + source + "\"", token, source);
};

@@ -37,5 +40,7 @@ InvalidTokenError.createForUnclosedParenthesis = function (token, source, parentPosition) {

};
InvalidTokenError.createForEmptyInput = function (token, source) {
return new InvalidTokenError("Unexpected end in \"" + source + "\". Cannot parse empty string.", token, source);
};
return InvalidTokenError;
}(Error));
}(ParsingError_1.default));
exports.default = InvalidTokenError;
//# sourceMappingURL=InvalidTokenError.js.map

@@ -1,4 +0,3 @@

import InvalidTokenError from "./error/InvalidTokenError";
import ParsingError from "./error/ParsingError";
import parse from "./parse";
export { parse, InvalidTokenError };
//# sourceMappingURL=index.d.ts.map
export { parse, ParsingError };

@@ -6,6 +6,5 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
var InvalidTokenError_1 = __importDefault(require("./error/InvalidTokenError"));
exports.InvalidTokenError = InvalidTokenError_1.default;
var ParsingError_1 = __importDefault(require("./error/ParsingError"));
exports.ParsingError = ParsingError_1.default;
var parse_1 = __importDefault(require("./parse"));
exports.parse = parse_1.default;
//# sourceMappingURL=index.js.map
import { AnyToken } from "./Token";
declare function lex(input: string): AnyToken[];
export default lex;
//# sourceMappingURL=lex.d.ts.map

@@ -19,2 +19,1 @@ "use strict";

exports.default = lex;
//# sourceMappingURL=lex.js.map

@@ -9,2 +9,1 @@ interface LexerContext {

export { createLexerContext };
//# sourceMappingURL=LexerContext.d.ts.map

@@ -11,2 +11,1 @@ "use strict";

exports.createLexerContext = createLexerContext;
//# sourceMappingURL=LexerContext.js.map

@@ -9,2 +9,1 @@ import Token from "./Token";

export { SeekProcessor, SkipProcessor, ScanProcessor };
//# sourceMappingURL=LexerProcessor.d.ts.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=LexerProcessor.js.map
import { ScanProcessor } from "../LexerProcessor";
declare function createScanSymbol<TSymbol extends string>(symbols: ReadonlyArray<TSymbol>): ScanProcessor<TSymbol>;
export { createScanSymbol };
//# sourceMappingURL=scanSymbol.d.ts.map

@@ -9,2 +9,1 @@ "use strict";

exports.createScanSymbol = createScanSymbol;
//# sourceMappingURL=scanSymbol.js.map

@@ -5,2 +5,1 @@ import { AnyToken } from "../Token";

export default seekAnyToken;
//# sourceMappingURL=seekAnyToken.d.ts.map

@@ -6,3 +6,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
var definitions_1 = require("@rsql/definitions");
var InvalidCharacterError_1 = __importDefault(require("../../error/InvalidCharacterError"));
var seekComparisionOperatorToken_1 = __importDefault(require("./seekComparisionOperatorToken"));

@@ -16,7 +16,7 @@ var seekLogicCanonicalOperatorToken_1 = __importDefault(require("./seekLogicCanonicalOperatorToken"));

var seekAnyToken = function (context) {
// first skip all whitespace chars
skipWhitespace_1.default(context);
if (context.position >= context.length) {
return null;
}
// first skip all whitespace chars
skipWhitespace_1.default(context);
// then decide what to do based on the current char

@@ -59,3 +59,3 @@ var char = context.buffer.charAt(context.position);

if (!token) {
throw definitions_1.InvalidCharacterError.createForUnexpectedCharacter(context.position, context.buffer);
throw InvalidCharacterError_1.default.createForUnexpectedCharacter(context.position, context.buffer);
}

@@ -65,2 +65,1 @@ return token;

exports.default = seekAnyToken;
//# sourceMappingURL=seekAnyToken.js.map

@@ -5,2 +5,1 @@ import { OperatorToken } from "../Token";

export default seekComparisionOperatorToken;
//# sourceMappingURL=seekComparisionOperatorToken.d.ts.map

@@ -10,3 +10,3 @@ "use strict";

if (symbol) {
var token = Token_1.createOperatorToken(definitions_1.mapToCanonicalComparisionOperatorSymbol(symbol), context.position);
var token = Token_1.createOperatorToken(symbol, context.position);
context.position += symbol.length;

@@ -18,2 +18,1 @@ return token;

exports.default = seekComparisionOperatorToken;
//# sourceMappingURL=seekComparisionOperatorToken.js.map

@@ -5,2 +5,1 @@ import { OperatorToken } from "../Token";

export default seekLogicCanonicalOperatorToken;
//# sourceMappingURL=seekLogicCanonicalOperatorToken.d.ts.map

@@ -12,2 +12,1 @@ "use strict";

exports.default = seekLogicCanonicalOperatorToken;
//# sourceMappingURL=seekLogicCanonicalOperatorToken.js.map

@@ -5,2 +5,1 @@ import { SeekProcessor } from "../LexerProcessor";

export default seekLogicVerboseOperatorToken;
//# sourceMappingURL=seekLogicVerboseOperatorToken.d.ts.map

@@ -5,12 +5,8 @@ "use strict";

var Token_1 = require("../Token");
var scanSymbol_1 = require("./scanSymbol");
// we need to add space after symbol to be sure that it doesn't match unquoted token with "and" or "or" prefix
var scanLogicVerboseOperatorSymbol = scanSymbol_1.createScanSymbol(["and ", "or "]);
var scanNonReservedSymbol_1 = require("./scanNonReservedSymbol");
var scanLogicVerboseOperatorSymbol = scanNonReservedSymbol_1.createScanNonReservedSymbol(definitions_1.VerboseLogicOperatorSymbols);
var seekLogicVerboseOperatorToken = function (context) {
var symbol = scanLogicVerboseOperatorSymbol(context);
if (symbol) {
var token = Token_1.createOperatorToken(
// trim symbol from additional space and map to canonical
definitions_1.mapToCanonicalLogicOperatorSymbol(symbol.trim()), context.position);
// we can move position by untrimmed symbol as we don't care about space
var token = Token_1.createOperatorToken(symbol, context.position);
context.position += symbol.length;

@@ -22,2 +18,1 @@ return token;

exports.default = seekLogicVerboseOperatorToken;
//# sourceMappingURL=seekLogicVerboseOperatorToken.js.map

@@ -5,2 +5,1 @@ import { ParenthesisToken } from "../Token";

export default seekParenthesisToken;
//# sourceMappingURL=seekParenthesisToken.d.ts.map

@@ -12,2 +12,1 @@ "use strict";

exports.default = seekParenthesisToken;
//# sourceMappingURL=seekParenthesisToken.js.map

@@ -5,2 +5,1 @@ import { QuotedToken } from "../Token";

export default seekQuotedToken;
//# sourceMappingURL=seekQuotedToken.d.ts.map
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var definitions_1 = require("@rsql/definitions");
var InvalidCharacterError_1 = __importDefault(require("../../error/InvalidCharacterError"));
var Token_1 = require("../Token");

@@ -12,3 +15,3 @@ var seekQuotedToken = function (context) {

if (endPosition === -1) {
throw definitions_1.InvalidCharacterError.createForUnclosedQuote(context.position, context.buffer);
throw InvalidCharacterError_1.default.createForUnclosedQuote(context.position, context.buffer);
}

@@ -31,2 +34,1 @@ // scan back for escape characters

exports.default = seekQuotedToken;
//# sourceMappingURL=seekQuotedToken.js.map

@@ -5,2 +5,1 @@ import { UnquotedToken } from "../Token";

export default seekUnquotedToken;
//# sourceMappingURL=seekUnquotedToken.d.ts.map

@@ -16,2 +16,1 @@ "use strict";

exports.default = seekUnquotedToken;
//# sourceMappingURL=seekUnquotedToken.js.map
import { SkipProcessor } from "../LexerProcessor";
declare const skipWhitespace: SkipProcessor;
export default skipWhitespace;
//# sourceMappingURL=skipWhitespace.d.ts.map

@@ -10,2 +10,1 @@ "use strict";

exports.default = skipWhitespace;
//# sourceMappingURL=skipWhitespace.js.map

@@ -1,2 +0,2 @@

import { CanonicalComparisionOperatorSymbol, CanonicalLogicOperatorSymbol, ParenthesisSymbol } from "@rsql/definitions";
import { ComparisionOperatorSymbol, LogicOperatorSymbol, ParenthesisSymbol } from "@rsql/definitions";
declare const TokenType: {

@@ -17,3 +17,3 @@ readonly UNQUOTED: "UNQUOTED";

declare type ParenthesisToken = Token<typeof TokenType.PARENTHESIS, ParenthesisSymbol>;
declare type OperatorToken = Token<typeof TokenType.OPERATOR, CanonicalComparisionOperatorSymbol | CanonicalLogicOperatorSymbol>;
declare type OperatorToken = Token<typeof TokenType.OPERATOR, ComparisionOperatorSymbol | LogicOperatorSymbol>;
declare type EndToken = Token<typeof TokenType.END, "END">;

@@ -23,3 +23,3 @@ declare function createUnquotedToken(value: string, position: number): UnquotedToken;

declare function createParenthesisToken(value: ParenthesisSymbol, position: number): ParenthesisToken;
declare function createOperatorToken(value: CanonicalComparisionOperatorSymbol | CanonicalLogicOperatorSymbol, position: number): OperatorToken;
declare function createOperatorToken(value: ComparisionOperatorSymbol | LogicOperatorSymbol, position: number): OperatorToken;
declare function createEndToken(position: number): EndToken;

@@ -35,7 +35,6 @@ declare type AnyToken = UnquotedToken | QuotedToken | ParenthesisToken | OperatorToken | EndToken;

declare function isComparisionOperatorToken(candidate: object): candidate is OperatorToken;
declare function isLogicOrOperatorToken(candidate: object): candidate is OperatorToken;
declare function isLogicAndOperatorToken(candidate: object): candidate is OperatorToken;
declare function isOrOperatorToken(candidate: object): candidate is OperatorToken;
declare function isAndOperatorToken(candidate: object): candidate is OperatorToken;
declare function isEndToken(candidate: object): candidate is EndToken;
export default Token;
export { createUnquotedToken, createQuotedToken, createParenthesisToken, createOperatorToken, createEndToken, isToken, isUnquotedToken, isQuotedToken, isParenthesisToken, isOpenParenthesisToken, isCloseParenthesisToken, isOperatorToken, isComparisionOperatorToken, isLogicOrOperatorToken, isLogicAndOperatorToken, isEndToken, AnyToken, UnquotedToken, QuotedToken, ParenthesisToken, OperatorToken, EndToken, };
//# sourceMappingURL=Token.d.ts.map
export { createUnquotedToken, createQuotedToken, createParenthesisToken, createOperatorToken, createEndToken, isToken, isUnquotedToken, isQuotedToken, isParenthesisToken, isOpenParenthesisToken, isCloseParenthesisToken, isOperatorToken, isComparisionOperatorToken, isOrOperatorToken, isAndOperatorToken, isEndToken, AnyToken, UnquotedToken, QuotedToken, ParenthesisToken, OperatorToken, EndToken, };

@@ -94,10 +94,10 @@ "use strict";

exports.isComparisionOperatorToken = isComparisionOperatorToken;
function isLogicOrOperatorToken(candidate) {
return isOperatorToken(candidate) && candidate.value === ",";
function isOrOperatorToken(candidate) {
return isOperatorToken(candidate) && definitions_1.isOrOperatorSymbol(candidate.value);
}
exports.isLogicOrOperatorToken = isLogicOrOperatorToken;
function isLogicAndOperatorToken(candidate) {
return isOperatorToken(candidate) && candidate.value === ";";
exports.isOrOperatorToken = isOrOperatorToken;
function isAndOperatorToken(candidate) {
return isOperatorToken(candidate) && definitions_1.isAndOperatorSymbol(candidate.value);
}
exports.isLogicAndOperatorToken = isLogicAndOperatorToken;
exports.isAndOperatorToken = isAndOperatorToken;
function isEndToken(candidate) {

@@ -107,2 +107,1 @@ return isToken(candidate) && candidate.type === TokenType.END;

exports.isEndToken = isEndToken;
//# sourceMappingURL=Token.js.map
import { ExpressionNode } from "@rsql/ast";
declare function parse(input: string): ExpressionNode;
declare function parse(rsql: string): ExpressionNode;
export default parse;
//# sourceMappingURL=parse.d.ts.map

@@ -7,2 +7,3 @@ "use strict";

var ast_1 = require("@rsql/ast");
var definitions_1 = require("@rsql/definitions");
var InvalidTokenError_1 = __importDefault(require("./error/InvalidTokenError"));

@@ -28,4 +29,4 @@ var lex_1 = __importDefault(require("./lexer/lex"));

/* 4 */ Token_1.isComparisionOperatorToken,
/* 5 */ Token_1.isLogicOrOperatorToken,
/* 6 */ Token_1.isLogicAndOperatorToken,
/* 5 */ Token_1.isOrOperatorToken,
/* 6 */ Token_1.isAndOperatorToken,
/* 7 */ Token_1.isEndToken,

@@ -139,4 +140,10 @@ ];

}
function parse(input) {
var tokens = lex_1.default(input);
function parse(rsql) {
if (typeof rsql !== "string") {
throw new definitions_1.InvalidArgumentError("The argument passed to the \"parse\" function should be a string, but " + (rsql === null ? "null" : typeof rsql) + " passed.");
}
var tokens = lex_1.default(rsql);
if (tokens.length === 1 && tokens[0].type === "END") {
throw InvalidTokenError_1.default.createForEmptyInput(tokens[0], rsql);
}
var context = ParserContext_1.createParserContext(tokens);

@@ -148,3 +155,3 @@ while (context.position < context.tokens.length) {

if (!operation) {
throw InvalidTokenError_1.default.createForUnexpectedToken(getMostMeaningfulInvalidToken(context), input);
throw InvalidTokenError_1.default.createForUnexpectedToken(getMostMeaningfulInvalidToken(context), rsql);
}

@@ -159,14 +166,13 @@ switch (operation.type) {

case ParserOperation_1.OperationType.REDUCE:
context = handleReduce(context, operation, input);
context = handleReduce(context, operation, rsql);
break;
case ParserOperation_1.OperationType.POP:
context = handlePop(context, operation, input);
context = handlePop(context, operation, rsql);
break;
case ParserOperation_1.OperationType.ACCEPT:
return handleAccept(context, input);
return handleAccept(context, rsql);
}
}
throw InvalidTokenError_1.default.createForUnexpectedToken(getMostMeaningfulInvalidToken(context), input);
throw InvalidTokenError_1.default.createForUnexpectedToken(getMostMeaningfulInvalidToken(context), rsql);
}
exports.default = parse;
//# sourceMappingURL=parse.js.map

@@ -16,2 +16,1 @@ import { Node } from "@rsql/ast";

export { getParserContextState, getParserContextToken, getParserContextHead, createParserContext };
//# sourceMappingURL=ParserContext.d.ts.map

@@ -25,2 +25,1 @@ "use strict";

exports.createParserContext = createParserContext;
//# sourceMappingURL=ParserContext.js.map

@@ -43,2 +43,1 @@ declare const OperationType: {

export { OperationType, ShiftOperation, ReduceOperation, PushOperation, PopOperation, AcceptOperation, GoToOperation, NoOperation, TokenOperation, NodeOperation, shift, reduce, push, pop, accept, goto, noop, };
//# sourceMappingURL=ParserOperation.d.ts.map

@@ -55,2 +55,1 @@ "use strict";

exports.noop = noop;
//# sourceMappingURL=ParserOperation.js.map

@@ -14,2 +14,1 @@ import { Node } from "@rsql/ast";

export { ParserProduction, selectorProduction, singleValueProduction, multiValueProduction, comparisionExpressionProduction, logicalExpressionProduction, groupExpressionProduction, };
//# sourceMappingURL=ParserProduction.d.ts.map

@@ -40,3 +40,3 @@ "use strict";

consumed: 3,
produced: ast_1.createComparisionExpressionNode(selector, operator.value, value),
produced: ast_1.createComparisionNode(selector, operator.value, value, true),
};

@@ -51,3 +51,3 @@ };

consumed: 3,
produced: ast_1.createLogicExpressionNode(left, operator.value, right),
produced: ast_1.createLogicNode(left, operator.value, right, true),
};

@@ -64,2 +64,1 @@ };

exports.groupExpressionProduction = groupExpressionProduction;
//# sourceMappingURL=ParserProduction.js.map

@@ -7,3 +7,3 @@ {

"author": "Piotr Oleś <piotrek.oles@gmail.com>",
"version": "0.0.1-next.0",
"version": "0.0.1-next.1",
"sideEffects": false,

@@ -25,4 +25,4 @@ "main": "lib/index.js",

"dependencies": {
"@rsql/ast": "0.0.1-next.0",
"@rsql/definitions": "0.0.1-next.0"
"@rsql/ast": "0.0.1-next.1",
"@rsql/definitions": "0.0.1-next.1"
},

@@ -37,3 +37,3 @@ "jest": {

},
"gitHead": "745c92751314987ad98b85b7062ba2475c5c403c"
"gitHead": "bd96ff0ebd8826bd80799027f6755612a206512b"
}