schemaorg-validate 0.3.0

Parse and validate Schema.org structured data (JSON-LD, Microdata, RDFa) against the official vocabulary and Google Rich Results profiles.
Documentation
# @schemaorg-rs/wasm

[![npm](https://img.shields.io/npm/v/@schemaorg-rs/wasm.svg)](https://www.npmjs.com/package/@schemaorg-rs/wasm)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](../LICENSE)

Schema.org structured data parser and validator powered by Rust/WebAssembly.

## Installation

```bash
npm install @schemaorg-rs/wasm
```

## Quick Start

```javascript
import { extract, validateHtml, schemaVersion } from '@schemaorg-rs/wasm';

const html = `<script type="application/ld+json">{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Widget",
  "offers": { "@type": "Offer", "price": "29.99", "priceCurrency": "EUR" }
}</script>`;

// Full validation pipeline
const result = await validateHtml(html, 'google');
console.log(result.profile.eligibility); // "Eligible" | "WarningsOnly" | ...

// Extract only (no validation)
const extracted = await extract(html);
console.log(extracted.nodes[0].types); // ["Product"]

// Check Schema.org version
const version = await schemaVersion();
console.log(version); // "30.0"
```

## API

### `extract(html: string): Promise<ExtractResult>`

Extracts all structured data (JSON-LD, Microdata, RDFa Lite) from HTML.

### `validateHtml(html: string, profile?: string): Promise<ValidateResult>`

Full pipeline: extract, validate against Schema.org vocabulary, evaluate
against a Rich Results profile.

**Profiles:** `"google"` (default), `"baseline"`

### `schemaVersion(): Promise<string>`

Returns the Schema.org vocabulary version compiled into this build.

### `init(target?: 'web' | 'nodejs'): Promise<void>`

Explicitly initialize the WASM module. Called automatically on first use.
Call explicitly for eager loading in performance-critical paths.

## Types

Full TypeScript definitions are included. See `index.d.ts` for the complete
type surface including `SchemaNode`, `ValidationDiagnostic`, `ProfileResult`,
and `Eligibility`.

## Environment Support

- **Browser:** ESM import, auto-initializes WASM
- **Node.js:** ESM import, auto-detects runtime

## Size

The WASM binary is optimized for size (`opt-level = 'z'`, LTO, `wasm-opt -Oz`)
and stays under 500KB.

## Related

- [schemaorg-rs]https://github.com/mitrovicsinisaa/schemaorg-rs -- Rust library
- [schemaorg-validate]https://crates.io/crates/schemaorg-validate -- CLI tool

## License

MIT