zod-matter
Version:
Typesafe front matter
37 lines (36 loc) • 1.08 kB
JavaScript
// src/index.ts
import matter from "gray-matter";
function parse(input, schema, options) {
return parseFrontMatter(schema, matter(input, options));
}
function read(path, schema, options) {
return parseFrontMatter(schema, matter.read(path, options));
}
var stringify = matter.stringify;
var test = matter.test;
function parseFrontMatter(schema, grayMatterFile) {
const { data, ...dataLessGrayMatterFile } = grayMatterFile;
const zodMatterFile = {
...dataLessGrayMatterFile,
data: schema.parse(data)
};
addNonEnumerableProperty(zodMatterFile, "language", grayMatterFile.language);
addNonEnumerableProperty(zodMatterFile, "matter", grayMatterFile.matter);
addNonEnumerableProperty(zodMatterFile, "orig", grayMatterFile.orig);
addNonEnumerableProperty(zodMatterFile, "stringify", grayMatterFile.stringify);
return zodMatterFile;
}
function addNonEnumerableProperty(object, key, value) {
Object.defineProperty(object, key, {
configurable: true,
enumerable: false,
value,
writable: true
});
}
export {
parse,
read,
stringify,
test
};