@loancrate/prisma-schema-parser
v3.0.0
Published
Prisma Schema Parser
Downloads
48,207
Readme
Prisma Schema Parser and Formatter
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.)
Goals
- 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
Non-goals
- 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
Installation
npm add @loancrate/prisma-schema-parser
Usage
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));
License
This library is available under the ISC license.