Parser for OMG (OpenAPI Markdown Grammar) files
npm install omg-parserParser for OMG (OpenAPI Markdown Grammar) files. Parses .omg.md files into an Abstract Syntax Tree (AST) that can be compiled to OpenAPI 3.1.
``bash`
npm install omg-parser
`typescript
import { parseDocument } from 'omg-parser';
const content = ---
method: GET
path: /users/{id}
---
Returns a user by ID.
\\\omg.response\
{
id: string,
name: string
}
\\;
const doc = parseDocument(content, 'get-user.omg.md');
console.log(doc.frontMatter); // { method: 'GET', path: '/users/{id}' }
console.log(doc.title); // 'Get User'
console.log(doc.blocks); // [{ type: 'omg.response', ... }]
`
`typescript
import { parseDocument, resolveDocument } from 'omg-parser';
const doc = parseDocument(content, 'get-user.omg.md');
const resolved = resolveDocument(doc, { basePath: '/path/to/api' });
// resolved.resolvedBlocks includes blocks from partials
`
`typescript
import { parseDocument, resolveDocument, buildEndpoint } from 'omg-parser';
const doc = parseDocument(content, 'get-user.omg.md');
const resolved = resolveDocument(doc, { basePath: '/path/to/api' });
const endpoint = buildEndpoint(resolved);
console.log(endpoint.method); // 'GET'
console.log(endpoint.path); // '/users/{id}'
console.log(endpoint.responses); // { 200: { schema: ... } }
`
`typescript
import { parseSchema } from 'omg-parser';
const schema = parseSchema('{ id: string, name: string?, age: integer @min(0) }');
console.log(schema.kind); // 'object'
console.log(schema.properties); // { id: ..., name: ..., age: ... }
`
Parses OMG markdown content into a document structure.
Resolves partial references and parses schemas in code blocks.
Builds a parsed endpoint from a resolved document.
Builds multiple endpoints (for variant expansion).
Parses OMG schema syntax into an AST.
Loads an entire API from a directory.
OMG uses a TypeScript-like syntax for schemas:
`Primitives
string, integer, number, decimal, boolean, date, datetime, uuid, any
MIT