
Product
Introducing Tier 1 Reachability: Precision CVE Triage for Enterprise Teams
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.
Inhalt is a TypeScript/JavaScript library for local content management. It's mean to be used with static generators and other tools that involve turning assets in your local directories—Markdown, JSON, YAML, and others—into HTML, tables of content, search indices, and all the other things that make blogs, documentation hubs, and other complex sites work.
Inhalt is in its very early phases—as in, still basically a weekend project. Don't use it just yet but if you have requests for what you'd want to see in a library like this, please do feel free to file an issue!
Static site generation has recently gotten very interesting in the JavaScript space with the rise of blazing-fast build tools like Vite and swc and powerful, developer-friendly frameworks like Docusaurus, Next.js, Gatsby, Nuxt, Astro, and Remix.
One thing these frameworks have in common is that they require you to do your own content management. If you want to build a blog or a documentation site, you need to supply your own logic to fetch files, choose the right data from those files, convert files in formats like Markdown to HTML, and so on.
Some of these frameworks do have good content management libraries, such as nuxt-content
for Nuxt, but I look out into this space and see a lot of redundant effort. What if we could just have one really good library that developers could use directly inside of these frameworks or as the basis for framwork-specific libraries?
Some more specific things I want to enable you to do far more easily than you can now:
Here's an example for a Next.js project:
import { document, files } from "inhalt";
// pages/docs/index.js
export async function getStaticProps() {
// Fetch all Markdown files in the supplied glob
// (not parsed, just the raw files)
const docs = await files("docs/**/*.{md,mdx}");
return {
props: {
docs
}
}
}
// The rendered docs TOC
export default Docs(props) {
return (
<>
<h1>Docs landing page</h1>
<ul>
{props.docs.map(doc => (
<li key={doc.slug}>
<Link href={doc.path}>
{doc.title}
</Link>
</li>
))}
</ul>
</>
);
}
// pages/docs/[slug].js
export async function getStaticProps(ctx) {
const { slug } = ctx.params;
// Fetch a single doc (already converted to HTML)
const doc = document(slug);
return {
props: {
doc
}
}
}
export async function getStaticPaths() {
// Fetch all Markdown files in the supplied glob
// (not parsed, just the raw files)
const docs = await files("docs/**/*.{md,mdx}");
return docs.map(doc => {
params: {
slug: doc.slug
}
})
}
export default Doc(props) {
const doc = props.doc;
return (
<div dangerouslySetInnerHtml={{ __html: doc.html }}></div>
);
}
Docs are very much a work in progress but you can check out the Typedoc.
FAQs
Content management system
We found that inhalt demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.
Research
/Security News
Ongoing npm supply chain attack spreads to DuckDB: multiple packages compromised with the same wallet-drainer malware.
Security News
The MCP Steering Committee has launched the official MCP Registry in preview, a central hub for discovering and publishing MCP servers.