Typescript library for parsing, traversing, and formatting Prisma schema files. Based on the PEG grammar in the Prisma source (ported from pest to PEG.js), its goal is to parse any valid Prisma schema. Unit tests ensure 100% coverage of the hand-written Typescript code and the rule code generated by PEG.js. (There is a small amount of error reporting and unused feature code in the generated parser that is either unreachable or infeasible to test.)
- Parse and format any valid Prisma schema
- Provide a complete and statically typed abstract syntax tree (AST)
- Support legacy features like type aliases and GraphQL-style required type and list syntax
- Preserve all non-whitespace constructs in the source, including comments
- Preserve the source location of all high-level constructs
- Provide utility functions to traverse and analyze the AST
- Continued parsing of invalid schemas beyond the first syntax error
- Validation of the schema, such as type resolution or database-specific features
- Preservation of whitespace
npm add @loancrate/prisma-schema-parser
import { readFileSync } from "fs";
import { formatAst, parsePrismaSchema } from "@loancrate/prisma-schema-parser";
const ast = parsePrismaSchema(
readFileSync("test-data/schema.prisma", { encoding: "utf8" })
);
// ... manipulate the schema ...
console.log(formatAst(ast));
This library is available under the ISC license.