@loancrate/prisma-schema-parser
TypeScript icon, indicating that this package has built-in type declarations

2.0.0 • Public • Published

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.

Dependents (8)

Package Sidebar

Install

npm i @loancrate/prisma-schema-parser

Weekly Downloads

15,879

Version

2.0.0

License

ISC

Unpacked Size

214 kB

Total Files

35

Last publish

Collaborators

  • trevorr
  • scb
  • andrew-loancrate