@open-form/resolvers
v0.1.3
Published
Environment-specific resolvers for OpenForm - filesystem, S3, HTTP, etc.
Maintainers
Readme
OpenForm is documents as code. It lets developers and AI agents define, validate, and render business documents using typed, composable schemas. This eliminates template drift, broken mappings, and brittle glue code — while giving AI systems a reliable document layer they can safely read, reason over, and generate against in production workflows.
Package overview
Environment-specific resolvers for OpenForm. Use these to read layer files, templates, and other assets in your OpenForm applications.
- 📂 Filesystem resolver - Read files from the local filesystem (Node.js)
- 🌲 Tree-shakeable - Import only what you need via subpath exports
- ✅ Type-safe - Full TypeScript support
- 🔌 Pluggable - Implements the
Resolverinterface from@open-form/types
Installation
npm install @open-form/resolversUsage
Filesystem resolver
Create a resolver to read files from your filesystem:
import { createFsResolver } from "@open-form/resolvers/fs";
const resolver = createFsResolver({ root: process.cwd() });
// Read a file relative to root
const bytes = await resolver.read("/templates/form.md");With form rendering
Pass a resolver when rendering forms with file-based layers:
import { open } from "@open-form/sdk";
import { pdfRenderer } from "@open-form/renderer-pdf";
import { createFsResolver } from "@open-form/resolvers/fs";
const resolver = createFsResolver({ root: "./templates" });
const result = await form
.fill({
fields: {
/* ... */
},
})
.render({
renderer: pdfRenderer,
resolver,
layer: "pdf",
});Using subpath imports
For better tree-shaking, import directly from subpaths:
// Recommended - direct subpath import
import { createFsResolver } from "@open-form/resolvers/fs";
// Or use umbrella import
import { createFsResolver } from "@open-form/resolvers";Memory resolver for testing
For testing and browser environments, use createMemoryResolver from @open-form/core:
import { createMemoryResolver } from "@open-form/core";
const resolver = createMemoryResolver({
contents: {
"/templates/form.md": "# {{title}}",
"/assets/logo.png": myLogoBytes,
},
});Changelog
View the Changelog for updates.
Related packages
@open-form/sdk- OpenForm framework SDK@open-form/core- Core framework with memory resolver for testing
Contributing
We're open to all community contributions! If you'd like to contribute in any way, please read our contribution guidelines and code of conduct.
License
This project is licensed under the MIT license.
See LICENSE for more information.
