expre-parser
Advanced tools
Comparing version 0.1.9 to 0.1.10
@@ -1,2 +0,1 @@ | ||
/// <reference types="sqlite-parser" /> | ||
import * as sqliteParser from "sqlite-parser"; | ||
@@ -3,0 +2,0 @@ import { Compiler } from "./compiler"; |
@@ -1,2 +0,2 @@ | ||
/// <reference types="sqlite-parser" /> | ||
import * as sqliteParser from "sqlite-parser"; | ||
import { BaseNode as SPBaseNode } from "sqlite-parser"; | ||
@@ -6,3 +6,4 @@ import { BaseNode } from "./ast-model"; | ||
export * from './compiler'; | ||
export declare function parse(expression: string): BaseNode; | ||
export declare function sqlite_parse(expression: string | number): sqliteParser.BaseNode; | ||
export declare function parse(expression: string | number): BaseNode; | ||
export declare function convertNode(ast: SPBaseNode): BaseNode; |
@@ -11,9 +11,17 @@ "use strict"; | ||
__export(require("./compiler")); | ||
function parse(expression) { | ||
function sqlite_parse(expression) { | ||
// sqliteParser works in expressions with "select" string at begining | ||
let ast = sqliteParser('select ' + expression); | ||
var astStatement = ast.statement[0].result[0]; | ||
let node = convertNode(astStatement); | ||
return node; | ||
try { | ||
return sqliteParser('select ' + expression).statement[0].result[0]; | ||
; | ||
} | ||
catch (err) { | ||
throw new Error('La expresion ' + expression + ' no es válida'); // sintaxis inválida para sqlite-parser | ||
} | ||
} | ||
exports.sqlite_parse = sqlite_parse; | ||
function parse(expression) { | ||
let ast = sqlite_parse(expression); | ||
return convertNode(ast); | ||
} | ||
exports.parse = parse; | ||
@@ -20,0 +28,0 @@ function convertNode(ast) { |
@@ -23,3 +23,3 @@ "use strict"; | ||
it("parse one number", async function () { | ||
let obtained = ExpresionParser.parse("43"); | ||
let obtained = ExpresionParser.parse(43); | ||
let expectedParsed = new EPModel.LiteralNode({ type: 'literal', value: "43", variant: 'decimal' }); | ||
@@ -101,2 +101,30 @@ // es llamado `jsonObj` en lugar de `LiteralObj` u `objLiteral` para no confundir el `literal` de objetos JS con nuestro LiteralNode de AST | ||
}); | ||
describe("protesta la librería sqlite_parse con SQL inválidos, por ej: delete, drop, etc", function () { | ||
it("cualquier cosa", async function () { | ||
['&', 'pe#p', 'delete', '@', 'FROM', '!', '==', '%', 'drop', 'if ('].forEach(invalExp => { | ||
try { | ||
ExpresionParser.sqlite_parse(invalExp); | ||
throw new Error('Tenía que dar error, porque la expresion "' + invalExp + '" es sintaxis inválida'); | ||
} | ||
catch (err) { | ||
discrepances.showAndThrow(err.message, 'La expresion ' + invalExp + ' no es válida'); | ||
} | ||
}); | ||
}); | ||
}); | ||
describe("protesta convertNode() porque el usario escribio SQL válido para sqlite-parser que no consideramos válido, por ej: ?, etc ", function () { | ||
it("cualquier cosa", async function () { | ||
['?'].forEach(invalExp => { | ||
let ast; | ||
try { | ||
ast = ExpresionParser.sqlite_parse(invalExp); | ||
ExpresionParser.convertNode(ast); | ||
throw new Error('Tenía que dar error porque la expresion "' + invalExp + '" es no la queremos'); | ||
} | ||
catch (err) { | ||
discrepances.showAndThrow(err.message, 'ast.type not consider: ' + ast.type); | ||
} | ||
}); | ||
}); | ||
}); | ||
describe("wrapped", function () { | ||
@@ -103,0 +131,0 @@ var compilerOptions = { |
{ | ||
"name": "expre-parser", | ||
"description": "expression parser", | ||
"version": "0.1.9", | ||
"version": "0.1.10", | ||
"author": "Codenautas <codenautas@googlegroups.com>", | ||
@@ -6,0 +6,0 @@ "license": "MIT", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
50624
652