{"version":3,"sources":["../src/index.ts","../src/builders.ts","../src/validation.ts"],"sourcesContent":["// @power-seo/schema — Main Entry Point (framework-agnostic)\n// ----------------------------------------------------------------------------\n\n// Types\nexport type {\n  JsonLdBase,\n  ThingBase,\n  ImageObject,\n  PersonSchema,\n  OrganizationSchema,\n  ContactPoint,\n  PostalAddress,\n  ArticleSchema,\n  ProductSchema,\n  OfferSchema,\n  AggregateRatingSchema,\n  ReviewSchema,\n  RatingSchema,\n  FAQPageSchema,\n  FAQQuestionSchema,\n  BreadcrumbListSchema,\n  BreadcrumbItem,\n  LocalBusinessSchema,\n  OpeningHours,\n  GeoCoordinates,\n  EventSchema,\n  RecipeSchema,\n  NutritionInfo,\n  HowToSchema,\n  HowToStep,\n  HowToSupply,\n  HowToTool,\n  MonetaryAmount,\n  VideoObjectSchema,\n  CourseSchema,\n  CourseInstance,\n  JobPostingSchema,\n  SoftwareAppSchema,\n  WebSiteSchema,\n  SearchActionSchema,\n  ItemListSchema,\n  ListItem,\n  ServiceSchema,\n  BrandSchema,\n  SiteNavigationElementSchema,\n  SchemaObject,\n  WithContext,\n  SchemaGraph,\n} from './types.js';\n\n// Builder Functions\nexport {\n  article,\n  blogPosting,\n  newsArticle,\n  product,\n  faqPage,\n  breadcrumbList,\n  localBusiness,\n  organization,\n  person,\n  event,\n  recipe,\n  howTo,\n  videoObject,\n  course,\n  jobPosting,\n  softwareApp,\n  webSite,\n  itemList,\n  review,\n  service,\n  brand,\n  siteNavigationElement,\n  imageObject,\n  schemaGraph,\n  toJsonLdString,\n} from './builders.js';\n\n// Validation\nexport { validateSchema } from './validation.js';\nexport type { ValidationIssue, SchemaValidationResult } from './validation.js';\n","// @power-seo/schema — JSON-LD Builder Functions\n// ----------------------------------------------------------------------------\n\nimport { serializeJsonLd } from '@power-seo/core';\nimport type {\n  WithContext,\n  ArticleSchema,\n  ProductSchema,\n  FAQPageSchema,\n  FAQQuestionSchema,\n  BreadcrumbListSchema,\n  LocalBusinessSchema,\n  OrganizationSchema,\n  PersonSchema,\n  EventSchema,\n  RecipeSchema,\n  HowToSchema,\n  VideoObjectSchema,\n  CourseSchema,\n  JobPostingSchema,\n  SoftwareAppSchema,\n  WebSiteSchema,\n  ItemListSchema,\n  ReviewSchema,\n  ServiceSchema,\n  BrandSchema,\n  SiteNavigationElementSchema,\n  ImageObject,\n  SchemaGraph,\n  SchemaObject,\n} from './types.js';\n\nconst CONTEXT = 'https://schema.org' as const;\n\n/** Add @context to a schema object */\nfunction withContext<T extends { '@type': string }>(\n  schema: T,\n): WithContext<T & { '@type': string }> {\n  return { '@context': CONTEXT, ...schema };\n}\n\n/** Recursively strip `undefined` values from an object or array */\nfunction cleanValue(value: unknown): unknown {\n  if (Array.isArray(value)) {\n    return value.map((item) => cleanValue(item));\n  }\n  if (value !== null && typeof value === 'object') {\n    const result: Record<string, unknown> = {};\n    for (const [key, val] of Object.entries(value as Record<string, unknown>)) {\n      if (val !== undefined) {\n        result[key] = cleanValue(val);\n      }\n    }\n    return result;\n  }\n  return value;\n}\n\n/** Remove undefined values from an object (deep) */\nfunction clean<T extends Record<string, unknown>>(obj: T): T {\n  return cleanValue(obj) as T;\n}\n\n// --- Builder Functions ---\n\nexport function article(\n  props: Omit<ArticleSchema, '@type'> & { type?: ArticleSchema['@type'] },\n): WithContext<ArticleSchema> {\n  const { type = 'Article', ...rest } = props;\n  return withContext(clean({ '@type': type, ...rest }) as ArticleSchema);\n}\n\nexport function blogPosting(props: Omit<ArticleSchema, '@type'>): WithContext<ArticleSchema> {\n  return article({ ...props, type: 'BlogPosting' });\n}\n\nexport function newsArticle(props: Omit<ArticleSchema, '@type'>): WithContext<ArticleSchema> {\n  return article({ ...props, type: 'NewsArticle' });\n}\n\nexport function product(props: Omit<ProductSchema, '@type'>): WithContext<ProductSchema> {\n  return withContext(clean({ '@type': 'Product', ...props }) as ProductSchema);\n}\n\nexport function faqPage(\n  questions: Array<{ question: string; answer: string }>,\n): WithContext<FAQPageSchema> {\n  const mainEntity: FAQQuestionSchema[] = questions.map((q) => ({\n    '@type': 'Question' as const,\n    name: q.question,\n    acceptedAnswer: {\n      '@type': 'Answer' as const,\n      text: q.answer,\n    },\n  }));\n\n  return withContext({ '@type': 'FAQPage' as const, mainEntity });\n}\n\nexport function breadcrumbList(\n  items: Array<{ name: string; url?: string }>,\n): WithContext<BreadcrumbListSchema> {\n  return withContext({\n    '@type': 'BreadcrumbList' as const,\n    itemListElement: items.map((item, index) =>\n      clean({\n        '@type': 'ListItem' as const,\n        position: index + 1,\n        name: item.name,\n        item: item.url,\n      }),\n    ),\n  });\n}\n\nexport function localBusiness(\n  props: Omit<LocalBusinessSchema, '@type'> & { type?: string },\n): WithContext<LocalBusinessSchema> {\n  const { type = 'LocalBusiness', ...rest } = props;\n  return withContext(clean({ '@type': type, ...rest }) as LocalBusinessSchema);\n}\n\nexport function organization(\n  props: Omit<OrganizationSchema, '@type'>,\n): WithContext<OrganizationSchema> {\n  return withContext(clean({ '@type': 'Organization', ...props }) as OrganizationSchema);\n}\n\nexport function person(props: Omit<PersonSchema, '@type'>): WithContext<PersonSchema> {\n  return withContext(clean({ '@type': 'Person', ...props }) as PersonSchema);\n}\n\nexport function event(\n  props: Omit<EventSchema, '@type'> & { type?: EventSchema['@type'] },\n): WithContext<EventSchema> {\n  const { type = 'Event', ...rest } = props;\n  return withContext(clean({ '@type': type, ...rest }) as EventSchema);\n}\n\nexport function recipe(props: Omit<RecipeSchema, '@type'>): WithContext<RecipeSchema> {\n  return withContext(clean({ '@type': 'Recipe', ...props }) as RecipeSchema);\n}\n\nexport function howTo(props: Omit<HowToSchema, '@type'>): WithContext<HowToSchema> {\n  return withContext(clean({ '@type': 'HowTo', ...props }) as HowToSchema);\n}\n\nexport function videoObject(\n  props: Omit<VideoObjectSchema, '@type'>,\n): WithContext<VideoObjectSchema> {\n  return withContext(clean({ '@type': 'VideoObject', ...props }) as VideoObjectSchema);\n}\n\nexport function course(props: Omit<CourseSchema, '@type'>): WithContext<CourseSchema> {\n  return withContext(clean({ '@type': 'Course', ...props }) as CourseSchema);\n}\n\nexport function jobPosting(props: Omit<JobPostingSchema, '@type'>): WithContext<JobPostingSchema> {\n  return withContext(clean({ '@type': 'JobPosting', ...props }) as JobPostingSchema);\n}\n\nexport function softwareApp(\n  props: Omit<SoftwareAppSchema, '@type'> & { type?: SoftwareAppSchema['@type'] },\n): WithContext<SoftwareAppSchema> {\n  const { type = 'SoftwareApplication', ...rest } = props;\n  return withContext(clean({ '@type': type, ...rest }) as SoftwareAppSchema);\n}\n\nexport function webSite(props: Omit<WebSiteSchema, '@type'>): WithContext<WebSiteSchema> {\n  return withContext(clean({ '@type': 'WebSite', ...props }) as WebSiteSchema);\n}\n\nexport function itemList(props: Omit<ItemListSchema, '@type'>): WithContext<ItemListSchema> {\n  return withContext(clean({ '@type': 'ItemList', ...props }) as ItemListSchema);\n}\n\nexport function review(props: Omit<ReviewSchema, '@type'>): WithContext<ReviewSchema> {\n  return withContext(clean({ '@type': 'Review', ...props }) as ReviewSchema);\n}\n\nexport function service(props: Omit<ServiceSchema, '@type'>): WithContext<ServiceSchema> {\n  return withContext(clean({ '@type': 'Service', ...props }) as ServiceSchema);\n}\n\nexport function brand(props: Omit<BrandSchema, '@type'>): WithContext<BrandSchema> {\n  return withContext(clean({ '@type': 'Brand', ...props }) as BrandSchema);\n}\n\nexport function siteNavigationElement(\n  props: Omit<SiteNavigationElementSchema, '@type'>,\n): WithContext<SiteNavigationElementSchema> {\n  return withContext(\n    clean({ '@type': 'SiteNavigationElement', ...props }) as SiteNavigationElementSchema,\n  );\n}\n\nexport function imageObject(props: Omit<ImageObject, '@type'>): WithContext<ImageObject> {\n  return withContext(clean({ '@type': 'ImageObject', ...props }) as ImageObject);\n}\n\n// --- Schema Graph Builder ---\n\n/**\n * Build a connected schema graph with multiple types.\n *\n * @example\n * ```ts\n * const graph = schemaGraph([\n *   { '@type': 'WebSite', name: 'My Site', url: 'https://example.com' },\n *   { '@type': 'Organization', name: 'My Org', url: 'https://example.com' },\n * ]);\n * ```\n */\nexport function schemaGraph(schemas: SchemaObject[]): SchemaGraph {\n  return {\n    '@context': CONTEXT,\n    '@graph': schemas,\n  };\n}\n\n/**\n * Serialize a schema object to a JSON-LD string safe for use with\n * `dangerouslySetInnerHTML` inside a `<script>` tag.\n *\n * HTML special characters (`<`, `>`, `&`) are escaped to their Unicode\n * escape sequences so that a string value like `\"</script>\"` cannot\n * prematurely close the script tag (XSS vector). The line-separator\n * (U+2028) and paragraph-separator (U+2029) code points are also escaped,\n * since they are valid inside JSON strings but are invalid raw in a script\n * context and can break parsers that treat the content as JavaScript.\n */\nexport function toJsonLdString(\n  schema: WithContext<SchemaObject> | SchemaGraph,\n  pretty = false,\n): string {\n  return serializeJsonLd(schema, pretty)\n    .replace(/\\u2028/g, '\\\\u2028')\n    .replace(/\\u2029/g, '\\\\u2029');\n}\n","// @power-seo/schema — Google Rich Results Validation\n// ----------------------------------------------------------------------------\n\nimport type { SchemaObject } from './types.js';\n\nexport interface ValidationIssue {\n  severity: 'error' | 'warning';\n  field: string;\n  message: string;\n}\n\nexport interface SchemaValidationResult {\n  valid: boolean;\n  issues: ValidationIssue[];\n}\n\n/**\n * Validate one or more schema objects against Google Rich Results requirements.\n * When an array is passed, each object is validated and all issues are merged.\n */\nexport function validateSchema(schema: SchemaObject | SchemaObject[]): SchemaValidationResult {\n  if (Array.isArray(schema)) {\n    const allIssues: ValidationIssue[] = [];\n    for (const s of schema) {\n      const result = validateSchema(s);\n      allIssues.push(...result.issues);\n    }\n    return {\n      valid: allIssues.filter((i) => i.severity === 'error').length === 0,\n      issues: allIssues,\n    };\n  }\n\n  const issues: ValidationIssue[] = [];\n\n  const obj = schema as unknown as Record<string, unknown>;\n\n  switch (schema['@type']) {\n    case 'Article':\n    case 'BlogPosting':\n    case 'NewsArticle':\n    case 'TechArticle':\n      validateArticle(obj, issues);\n      break;\n    case 'Product':\n      validateProduct(obj, issues);\n      break;\n    case 'FAQPage':\n      validateFAQPage(obj, issues);\n      break;\n    case 'BreadcrumbList':\n      validateBreadcrumbList(obj, issues);\n      break;\n    case 'Event':\n    case 'MusicEvent':\n    case 'BusinessEvent':\n    case 'EducationEvent':\n      validateEvent(obj, issues);\n      break;\n    case 'Recipe':\n      validateRecipe(obj, issues);\n      break;\n    case 'VideoObject':\n      validateVideoObject(obj, issues);\n      break;\n    case 'JobPosting':\n      validateJobPosting(obj, issues);\n      break;\n    case 'LocalBusiness':\n    case 'Restaurant':\n    case 'Store':\n      validateLocalBusiness(obj, issues);\n      break;\n    case 'Course':\n      validateCourse(obj, issues);\n      break;\n  }\n\n  return {\n    valid: issues.filter((i) => i.severity === 'error').length === 0,\n    issues,\n  };\n}\n\nfunction requireField(obj: Record<string, unknown>, field: string, issues: ValidationIssue[]) {\n  if (obj[field] === undefined || obj[field] === null || obj[field] === '') {\n    issues.push({\n      severity: 'error',\n      field,\n      message: `Required field \"${field}\" is missing.`,\n    });\n  }\n}\n\nfunction recommendField(obj: Record<string, unknown>, field: string, issues: ValidationIssue[]) {\n  if (obj[field] === undefined || obj[field] === null || obj[field] === '') {\n    issues.push({\n      severity: 'warning',\n      field,\n      message: `Recommended field \"${field}\" is missing.`,\n    });\n  }\n}\n\nfunction validateArticle(schema: Record<string, unknown>, issues: ValidationIssue[]) {\n  requireField(schema, 'headline', issues);\n  requireField(schema, 'author', issues);\n  requireField(schema, 'datePublished', issues);\n  recommendField(schema, 'image', issues);\n  recommendField(schema, 'dateModified', issues);\n  recommendField(schema, 'publisher', issues);\n  recommendField(schema, 'mainEntityOfPage', issues);\n\n  if (typeof schema.headline === 'string' && schema.headline.length > 110) {\n    issues.push({\n      severity: 'warning',\n      field: 'headline',\n      message: 'Headline should be under 110 characters for Google Rich Results.',\n    });\n  }\n}\n\nfunction validateProduct(schema: Record<string, unknown>, issues: ValidationIssue[]) {\n  requireField(schema, 'name', issues);\n  recommendField(schema, 'image', issues);\n  recommendField(schema, 'description', issues);\n  recommendField(schema, 'offers', issues);\n  recommendField(schema, 'aggregateRating', issues);\n  recommendField(schema, 'brand', issues);\n  recommendField(schema, 'sku', issues);\n}\n\nfunction validateFAQPage(schema: Record<string, unknown>, issues: ValidationIssue[]) {\n  const mainEntity = schema.mainEntity as Array<Record<string, unknown>> | undefined;\n  if (!mainEntity || !Array.isArray(mainEntity) || mainEntity.length === 0) {\n    issues.push({\n      severity: 'error',\n      field: 'mainEntity',\n      message: 'FAQPage requires at least one Question in mainEntity.',\n    });\n    return;\n  }\n\n  for (let i = 0; i < mainEntity.length; i++) {\n    const q = mainEntity[i]!;\n    if (!q.name) {\n      issues.push({\n        severity: 'error',\n        field: `mainEntity[${i}].name`,\n        message: `Question ${i + 1} is missing \"name\" (the question text).`,\n      });\n    }\n    const answer = q.acceptedAnswer as Record<string, unknown> | undefined;\n    if (!answer?.text) {\n      issues.push({\n        severity: 'error',\n        field: `mainEntity[${i}].acceptedAnswer.text`,\n        message: `Question ${i + 1} is missing an answer text.`,\n      });\n    }\n  }\n}\n\nfunction validateBreadcrumbList(schema: Record<string, unknown>, issues: ValidationIssue[]) {\n  const items = schema.itemListElement as Array<Record<string, unknown>> | undefined;\n  if (!items || !Array.isArray(items) || items.length === 0) {\n    issues.push({\n      severity: 'error',\n      field: 'itemListElement',\n      message: 'BreadcrumbList requires at least one ListItem.',\n    });\n  }\n}\n\nfunction validateEvent(schema: Record<string, unknown>, issues: ValidationIssue[]) {\n  requireField(schema, 'name', issues);\n  requireField(schema, 'startDate', issues);\n  requireField(schema, 'location', issues);\n  recommendField(schema, 'description', issues);\n  recommendField(schema, 'image', issues);\n  recommendField(schema, 'offers', issues);\n  recommendField(schema, 'organizer', issues);\n}\n\nfunction validateRecipe(schema: Record<string, unknown>, issues: ValidationIssue[]) {\n  requireField(schema, 'name', issues);\n  requireField(schema, 'image', issues);\n  requireField(schema, 'recipeIngredient', issues);\n  requireField(schema, 'recipeInstructions', issues);\n  recommendField(schema, 'author', issues);\n  recommendField(schema, 'datePublished', issues);\n  recommendField(schema, 'description', issues);\n  recommendField(schema, 'prepTime', issues);\n  recommendField(schema, 'totalTime', issues);\n}\n\nfunction validateVideoObject(schema: Record<string, unknown>, issues: ValidationIssue[]) {\n  requireField(schema, 'name', issues);\n  requireField(schema, 'description', issues);\n  requireField(schema, 'thumbnailUrl', issues);\n  requireField(schema, 'uploadDate', issues);\n  recommendField(schema, 'contentUrl', issues);\n  recommendField(schema, 'duration', issues);\n}\n\nfunction validateJobPosting(schema: Record<string, unknown>, issues: ValidationIssue[]) {\n  requireField(schema, 'title', issues);\n  requireField(schema, 'description', issues);\n  requireField(schema, 'datePosted', issues);\n  requireField(schema, 'hiringOrganization', issues);\n  recommendField(schema, 'validThrough', issues);\n  recommendField(schema, 'employmentType', issues);\n  recommendField(schema, 'baseSalary', issues);\n}\n\nfunction validateLocalBusiness(schema: Record<string, unknown>, issues: ValidationIssue[]) {\n  requireField(schema, 'name', issues);\n  requireField(schema, 'address', issues);\n  recommendField(schema, 'telephone', issues);\n  recommendField(schema, 'openingHoursSpecification', issues);\n  recommendField(schema, 'image', issues);\n  recommendField(schema, 'url', issues);\n  recommendField(schema, 'geo', issues);\n}\n\nfunction validateCourse(schema: Record<string, unknown>, issues: ValidationIssue[]) {\n  requireField(schema, 'name', issues);\n  requireField(schema, 'description', issues);\n  recommendField(schema, 'provider', issues);\n  recommendField(schema, 'offers', issues);\n}\n"],"mappings":"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","names":[]}