UNPKG

astro-seo-schema

Version:

Easily insert valid Schema.org JSON-LD in your Astro apps.

44 lines (43 loc) 963 B
function JsonLd(item, space) { return JSON.stringify(item, safeJsonLdReplacer, space); } const ESCAPE_ENTITIES = Object.freeze({ "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&apos;" }); const ESCAPE_REGEX = new RegExp( `[${Object.keys(ESCAPE_ENTITIES).join("")}]`, "g" ); const ESCAPE_REPLACER = (t) => ESCAPE_ENTITIES[t]; const safeJsonLdReplacer = /* @__PURE__ */ (() => { return (_, value) => { switch (typeof value) { case "object": if (value === null) { return void 0; } return value; // JSON.stringify will recursively call replacer. case "number": case "boolean": case "bigint": return value; // These values are not risky. case "string": return value.replace(ESCAPE_REGEX, ESCAPE_REPLACER); default: { isNever(value); return void 0; } } }; })(); function isNever(_) { } export { JsonLd };