Package Exports
- @vijayhardaha/schema-builder
- @vijayhardaha/schema-builder/package.json
- @vijayhardaha/schema-builder/react
Readme
@vijayhardaha/schema-builder
Reusable Schema.org structured data utilities, types, and React components with full TypeScript support.
Features
- Full TypeScript support with strict mode
- Type-safe Schema.org types using schema-dts
- React components for JSON-LD script tags
- Utility functions for merging and validating schemas
- Comprehensive test coverage
- 100% test coverage
Installation
bun add @vijayhardaha/schema-builderUsage
JavaScript/TypeScript
import { personSchema, webSiteSchema, toGraph } from "@vijayhardaha/schema-builder";
const person = personSchema({ rootUrl: "https://example.com" });
const website = webSiteSchema({ rootUrl: "https://example.com" });
// Use toGraph() to wrap multiple entities
const graph = toGraph(person, website);React
import JsonLd from "@vijayhardaha/schema-builder/react";
import { personSchema, webSiteSchema } from "@vijayhardaha/schema-builder";
export default function MyPage() {
return (
<div>
<h1>My Page</h1>
<JsonLd
data={[personSchema({ rootUrl: "https://example.com" }), webSiteSchema({ rootUrl: "https://example.com" })]}
/>
</div>
);
}API Reference
Schema Functions
| Function | Schema.org Type | Description |
|---|---|---|
personSchema |
Person | Person entity with creator profile |
organizationSchema |
Organization | Organization linked to creator |
webSiteSchema |
WebSite | Website with search action |
webpageSchema |
WebPage | General web page |
aboutPageSchema |
AboutPage | About page |
contactPageSchema |
ContactPage | Contact page |
webApiSchema |
WebAPI | WebAPI with pricing and platform |
softwareAppSchema |
SoftwareApplication | Software application with pricing |
breadcrumbSchema |
BreadcrumbList | Navigation breadcrumb list |
Utilities
| Function | Description |
|---|---|
validateUrl(url) |
Validates HTTP(S) URLs, throws on invalid input |
resolveUrl(root, path) |
Resolves URL with path |
cleanUrl(url, trailingSlash) |
Cleans URL (removes trailing slash, query strings) |
deepMerge(target, overrides) |
Recursively merges two objects |
mergeWithType(target, overrides) |
Merges objects while preserving @type |
toGraph(...entities) |
Wraps entities in @graph structure |
buildId(url, fragment) |
Builds schema ID from URL and fragment |
React Components
| Component | Description |
|---|---|
JsonLd |
Renders JSON-LD script tag with XSS protection |
Changelog
See CHANGELOG.md for all changes.
License
MIT - Copyright (c) Vijay Hardaha
Author
Issues
Report issues at https://github.com/vijayhardaha/npm-packages-monorepo/issues