CEL (Common Expression Language) proto parser and deparser for TypeScript.
This package provides tools for working with CEL (Common Expression Language) Abstract Syntax Trees (ASTs):
- Proto Parser: Parse CEL protobuf definitions to generate TypeScript types
- Deparser: Convert CEL AST back to CEL expression strings
- AST Helpers: Factory functions for constructing CEL AST nodes
npm install cel-proto-parserConvert CEL AST to expression strings:
import { deparse, Expr } from 'cel-proto-parser';
// Simple expression: x > 5
const expr: Expr = {
callExpr: {
function: '_>_',
args: [
{ identExpr: { name: 'x' } },
{ constExpr: { int64Value: 5 } }
]
}
};
console.log(deparse(expr)); // Output: "x > 5"Generate TypeScript types from CEL proto files:
import { CelProtoParser } from 'cel-proto-parser';
const parser = new CelProtoParser('path/to/syntax.proto', {
outDir: './generated',
types: { enabled: true },
enums: { enabled: true },
utils: { astHelpers: { enabled: true } },
deparser: { enabled: true }
});
parser.write();The deparser supports all CEL expression types:
- Constants:
null,true,false, integers, floats, strings, bytes - Identifiers:
request,user, etc. - Field Access:
request.auth.claims - Function Calls:
size(list),str.startsWith("prefix") - Operators:
+,-,*,/,%,==,!=,<,<=,>,>=,&&,||,!,-(unary) - Ternary:
condition ? trueExpr : falseExpr - Index Access:
list[0],map["key"] - Lists:
[1, 2, 3] - Maps:
{"key": value} - Message Construction:
MyMessage{field: value} - Macros:
has(),all(),exists(), etc.
Converts a CEL AST expression to a string.
Options:
spaces: Whether to add spaces around operators (default:true)
Parses CEL proto files and generates TypeScript code.
Constructor options:
outDir: Output directory for generated filestypes.enabled: Generate TypeScript interfacesenums.enabled: Generate TypeScript enumsutils.astHelpers.enabled: Generate AST helper functionsdeparser.enabled: Generate deparser module
MIT