UNPKG

next-schema-buddy

Version:

A simple and lightweight Schema.org implementation for Next.js applications. Easily add structured data to your Next.js pages with type-safe components.

1 lines 6.78 kB
{"version":3,"sources":["../src/components/schema/SchemaMarkup/SchemaMarkup.tsx","../src/lib/schema-registry/registry.ts","../src/components/schema/WebsiteSchema/WebsiteSchema.tsx","../src/components/schema/ProductSchema/ProductSchema.tsx","../src/components/schema/OrganizationSchema/OrganizationSchema.tsx","../src/components/schema/LocalBusinessSchema/LocalBusinessSchema.tsx","../src/components/schema/ArticleSchema/ArticleSchema.tsx"],"sourcesContent":["import Script from \"next/script\";\nimport {\n getRegisteredSchemas,\n getRegistryConfig,\n} from \"../../../lib/schema-registry\";\n\nexport const SchemaMarkup = () => {\n const schemas = getRegisteredSchemas();\n const options = getRegistryConfig();\n\n if (!schemas) {\n return null;\n }\n\n return (\n <Script\n id=\"schema-markup\"\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{\n __html: JSON.stringify(schemas, null, options.indentation),\n }}\n />\n );\n};\n","import { cache } from \"react\";\n\nexport interface SchemaRegistryOptions {\n indentation?: number;\n}\n\ninterface SchemaRegistryStoreOptions {\n initialSchemas?: Record<string, any>[];\n initialConfig?: SchemaRegistryOptions;\n}\n\nclass SchemaRegistryStore {\n private static instance: SchemaRegistryStore | null = null;\n private readonly schemas: Record<string, any>[];\n private config: SchemaRegistryOptions;\n\n private constructor(options?: SchemaRegistryStoreOptions) {\n this.schemas = options?.initialSchemas ?? [];\n this.config = options?.initialConfig ?? {};\n }\n\n static getInstance(\n options?: SchemaRegistryStoreOptions\n ): SchemaRegistryStore {\n if (!SchemaRegistryStore.instance) {\n SchemaRegistryStore.instance = new SchemaRegistryStore(options);\n }\n return SchemaRegistryStore.instance;\n }\n\n addSchema(schema: Record<string, any>): void {\n this.schemas.push({\n \"@context\": \"https://schema.org\",\n ...schema,\n });\n }\n\n setConfig(config: SchemaRegistryOptions): void {\n this.config = config;\n }\n\n getSchemas() {\n if (this.schemas.length === 0) return null;\n\n return {\n \"@context\": \"https://schema.org\",\n \"@graph\": this.schemas.map((schema) => {\n const { \"@context\": _context, ...schemaData } = schema;\n return schemaData;\n }),\n };\n }\n\n getConfig(): SchemaRegistryOptions {\n return this.config;\n }\n\n reset(): void {\n this.schemas.length = 0;\n this.config = {};\n }\n}\n\nconst registry = SchemaRegistryStore.getInstance();\n\nexport const registerSchema = cache((schema: Record<string, any>) => {\n registry.addSchema(schema);\n});\n\nexport const configureRegistry = cache((config: SchemaRegistryOptions) => {\n registry.setConfig(config);\n});\n\nexport const getRegisteredSchemas = cache(() => registry.getSchemas());\n\nexport const getRegistryConfig = cache(() => registry.getConfig());\n\nexport const resetRegistry = () => registry.reset();\n","import { WebsiteSchemaProps } from \"./types\";\nimport { registerSchema } from \"../../../lib/schema-registry\";\n\nexport const WebsiteSchema = ({ data }: WebsiteSchemaProps) => {\n registerSchema({\n \"@type\": \"WebSite\",\n ...data,\n });\n\n return null;\n};\n","import { ProductSchemaProps } from \"./types\";\nimport { registerSchema } from \"../../../lib/schema-registry\";\n\nexport const ProductSchema = ({ data }: ProductSchemaProps) => {\n registerSchema({\n \"@type\": \"Product\",\n ...data,\n });\n\n return null;\n};\n","import { registerSchema } from \"../../../lib/schema-registry\";\nimport { OrganizationSchemaProps } from \"./types\";\n\nexport const OrganizationSchema = ({ data }: OrganizationSchemaProps) => {\n registerSchema({\n \"@type\": \"Organization\",\n ...data,\n });\n\n return null;\n};\n","import { LocalBusinessSchemaProps } from \"./types\";\nimport { registerSchema } from \"../../../lib/schema-registry\";\n\nexport const LocalBusinessSchema = ({ data }: LocalBusinessSchemaProps) => {\n registerSchema({\n \"@type\": data[\"@type\"] || \"LocalBusiness\",\n ...data,\n });\n\n return null;\n};\n","import { registerSchema } from \"../../../lib/schema-registry\";\nimport { ArticleSchemaProps } from \"./types\";\n\nexport const ArticleSchema = ({ data }: ArticleSchemaProps) => {\n registerSchema({\n \"@type\": data[\"@type\"] || \"Article\",\n ...data,\n });\n\n return null;\n};\n"],"mappings":"2fAAA,OAAOA,MAAY,cCAnB,OAAS,SAAAC,MAAa,QAWtB,IAAMC,EAAN,MAAMA,CAAoB,CAKhB,YAAYC,EAAsC,CAhB5D,IAAAC,EAAAC,EAiBI,KAAK,SAAUD,EAAAD,GAAA,YAAAA,EAAS,iBAAT,KAAAC,EAA2B,CAAC,EAC3C,KAAK,QAASC,EAAAF,GAAA,YAAAA,EAAS,gBAAT,KAAAE,EAA0B,CAAC,CAC3C,CAEA,OAAO,YACLF,EACqB,CACrB,OAAKD,EAAoB,WACvBA,EAAoB,SAAW,IAAIA,EAAoBC,CAAO,GAEzDD,EAAoB,QAC7B,CAEA,UAAUI,EAAmC,CAC3C,KAAK,QAAQ,KAAKC,EAAA,CAChB,WAAY,sBACTD,EACJ,CACH,CAEA,UAAUE,EAAqC,CAC7C,KAAK,OAASA,CAChB,CAEA,YAAa,CACX,OAAI,KAAK,QAAQ,SAAW,EAAU,KAE/B,CACL,WAAY,qBACZ,SAAU,KAAK,QAAQ,IAAKF,GAAW,CACrC,IAAgDF,EAAAE,EAAxC,YAAYG,CA/C5B,EA+CwDL,EAChD,OADiCM,EAAeN,EAAf,CAAzB,YAEV,CAAC,CACH,CACF,CAEA,WAAmC,CACjC,OAAO,KAAK,MACd,CAEA,OAAc,CACZ,KAAK,QAAQ,OAAS,EACtB,KAAK,OAAS,CAAC,CACjB,CACF,EAlDMF,EACW,SAAuC,KADxD,IAAMS,EAANT,EAoDMU,EAAWD,EAAoB,YAAY,EAEpCE,EAAiBC,EAAOR,GAAgC,CACnEM,EAAS,UAAUN,CAAM,CAC3B,CAAC,EAEYS,EAAoBD,EAAON,GAAkC,CACxEI,EAAS,UAAUJ,CAAM,CAC3B,CAAC,EAEYQ,EAAuBF,EAAM,IAAMF,EAAS,WAAW,CAAC,EAExDK,EAAoBH,EAAM,IAAMF,EAAS,UAAU,CAAC,ED5D7D,cAAAM,MAAA,oBATG,IAAMC,EAAe,IAAM,CAChC,IAAMC,EAAUC,EAAqB,EAC/BC,EAAUC,EAAkB,EAElC,OAAKH,EAKHF,EAACM,EAAA,CACC,GAAG,gBACH,KAAK,sBACL,wBAAyB,CACvB,OAAQ,KAAK,UAAUJ,EAAS,KAAME,EAAQ,WAAW,CAC3D,EACF,EAVO,IAYX,EEpBO,IAAMG,EAAgB,CAAC,CAAE,KAAAC,CAAK,KACnCC,EAAeC,EAAA,CACb,QAAS,WACNF,EACJ,EAEM,MCNF,IAAMG,EAAgB,CAAC,CAAE,KAAAC,CAAK,KACnCC,EAAeC,EAAA,CACb,QAAS,WACNF,EACJ,EAEM,MCNF,IAAMG,EAAqB,CAAC,CAAE,KAAAC,CAAK,KACxCC,EAAeC,EAAA,CACb,QAAS,gBACNF,EACJ,EAEM,MCNF,IAAMG,EAAsB,CAAC,CAAE,KAAAC,CAAK,KACzCC,EAAeC,EAAA,CACb,QAASF,EAAK,OAAO,GAAK,iBACvBA,EACJ,EAEM,MCNF,IAAMG,EAAgB,CAAC,CAAE,KAAAC,CAAK,KACnCC,EAAeC,EAAA,CACb,QAASF,EAAK,OAAO,GAAK,WACvBA,EACJ,EAEM","names":["Script","cache","_SchemaRegistryStore","options","_a","_b","schema","__spreadValues","config","_context","__objRest","SchemaRegistryStore","registry","registerSchema","cache","configureRegistry","getRegisteredSchemas","getRegistryConfig","jsx","SchemaMarkup","schemas","getRegisteredSchemas","options","getRegistryConfig","Script","WebsiteSchema","data","registerSchema","__spreadValues","ProductSchema","data","registerSchema","__spreadValues","OrganizationSchema","data","registerSchema","__spreadValues","LocalBusinessSchema","data","registerSchema","__spreadValues","ArticleSchema","data","registerSchema","__spreadValues"]}