@puzzle-ui/seo 0.0.0-stage → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/README.md +755 -2
  2. package/dist/LICENSE +21 -0
  3. package/dist/context/config.cjs +82 -0
  4. package/dist/context/config.cjs.map +1 -0
  5. package/dist/context/config.d.cts +6 -0
  6. package/dist/context/config.d.ts +6 -0
  7. package/dist/context/config.js +80 -0
  8. package/dist/context/config.js.map +1 -0
  9. package/dist/context/index.cjs +6 -0
  10. package/dist/context/index.d.cts +4 -0
  11. package/dist/context/index.d.ts +4 -0
  12. package/dist/context/index.js +3 -0
  13. package/dist/context/types.d.cts +46 -0
  14. package/dist/context/types.d.ts +46 -0
  15. package/dist/core/graph.cjs +464 -0
  16. package/dist/core/graph.cjs.map +1 -0
  17. package/dist/core/graph.d.cts +62 -0
  18. package/dist/core/graph.d.ts +62 -0
  19. package/dist/core/graph.js +456 -0
  20. package/dist/core/graph.js.map +1 -0
  21. package/dist/core/index.cjs +11 -0
  22. package/dist/core/index.d.cts +3 -0
  23. package/dist/core/index.d.ts +3 -0
  24. package/dist/core/index.js +1 -0
  25. package/dist/core/types.d.cts +92 -0
  26. package/dist/core/types.d.ts +92 -0
  27. package/dist/index.cjs +96 -0
  28. package/dist/index.cjs.map +1 -0
  29. package/dist/index.d.cts +48 -0
  30. package/dist/index.d.ts +38 -0
  31. package/dist/index.js +19 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/metadata/index.cjs +4 -0
  34. package/dist/metadata/index.d.cts +3 -0
  35. package/dist/metadata/index.d.ts +3 -0
  36. package/dist/metadata/index.js +1 -0
  37. package/dist/metadata/resolve.cjs +122 -0
  38. package/dist/metadata/resolve.cjs.map +1 -0
  39. package/dist/metadata/resolve.d.cts +4 -0
  40. package/dist/metadata/resolve.d.ts +4 -0
  41. package/dist/metadata/resolve.js +121 -0
  42. package/dist/metadata/resolve.js.map +1 -0
  43. package/dist/metadata/types.d.cts +82 -0
  44. package/dist/metadata/types.d.ts +82 -0
  45. package/dist/next/index.cjs +13 -0
  46. package/dist/next/index.cjs.map +1 -0
  47. package/dist/next/index.d.cts +15 -0
  48. package/dist/next/index.d.ts +14 -0
  49. package/dist/next/index.js +12 -0
  50. package/dist/next/index.js.map +1 -0
  51. package/dist/react/context.cjs +30 -0
  52. package/dist/react/context.cjs.map +1 -0
  53. package/dist/react/context.d.cts +14 -0
  54. package/dist/react/context.d.ts +14 -0
  55. package/dist/react/context.js +27 -0
  56. package/dist/react/context.js.map +1 -0
  57. package/dist/react/index.cjs +48 -0
  58. package/dist/react/index.d.cts +6 -0
  59. package/dist/react/index.d.ts +6 -0
  60. package/dist/react/index.js +5 -0
  61. package/dist/react/metadata.cjs +100 -0
  62. package/dist/react/metadata.cjs.map +1 -0
  63. package/dist/react/metadata.d.cts +18 -0
  64. package/dist/react/metadata.d.ts +18 -0
  65. package/dist/react/metadata.js +99 -0
  66. package/dist/react/metadata.js.map +1 -0
  67. package/dist/react/provider.cjs +42 -0
  68. package/dist/react/provider.cjs.map +1 -0
  69. package/dist/react/provider.d.cts +3 -0
  70. package/dist/react/provider.d.ts +3 -0
  71. package/dist/react/provider.js +42 -0
  72. package/dist/react/provider.js.map +1 -0
  73. package/dist/react/schema-components.cjs +294 -0
  74. package/dist/react/schema-components.cjs.map +1 -0
  75. package/dist/react/schema-components.d.cts +84 -0
  76. package/dist/react/schema-components.d.ts +80 -0
  77. package/dist/react/schema-components.js +254 -0
  78. package/dist/react/schema-components.js.map +1 -0
  79. package/dist/react/types.d.cts +81 -0
  80. package/dist/react/types.d.ts +80 -0
  81. package/dist/react-router/index.cjs +13 -0
  82. package/dist/react-router/index.cjs.map +1 -0
  83. package/dist/react-router/index.d.cts +21 -0
  84. package/dist/react-router/index.d.ts +20 -0
  85. package/dist/react-router/index.js +12 -0
  86. package/dist/react-router/index.js.map +1 -0
  87. package/dist/robots/generate.cjs +88 -0
  88. package/dist/robots/generate.cjs.map +1 -0
  89. package/dist/robots/generate.d.cts +4 -0
  90. package/dist/robots/generate.d.ts +4 -0
  91. package/dist/robots/generate.js +86 -0
  92. package/dist/robots/generate.js.map +1 -0
  93. package/dist/robots/index.cjs +5 -0
  94. package/dist/robots/index.d.cts +3 -0
  95. package/dist/robots/index.d.ts +3 -0
  96. package/dist/robots/index.js +1 -0
  97. package/dist/robots/types.d.cts +27 -0
  98. package/dist/robots/types.d.ts +27 -0
  99. package/dist/schema/create-registry.cjs +12 -0
  100. package/dist/schema/create-registry.cjs.map +1 -0
  101. package/dist/schema/create-registry.d.cts +2 -0
  102. package/dist/schema/create-registry.d.ts +2 -0
  103. package/dist/schema/create-registry.js +12 -0
  104. package/dist/schema/create-registry.js.map +1 -0
  105. package/dist/schema/generated/index.d.cts +2 -0
  106. package/dist/schema/generated/schemaorg.cjs +36386 -0
  107. package/dist/schema/generated/schemaorg.cjs.map +1 -0
  108. package/dist/schema/generated/schemaorg.d.cts +945 -0
  109. package/dist/schema/generated/schemaorg.d.ts +945 -0
  110. package/dist/schema/generated/schemaorg.js +36384 -0
  111. package/dist/schema/generated/schemaorg.js.map +1 -0
  112. package/dist/schema/index.cjs +11 -0
  113. package/dist/schema/index.d.cts +7 -0
  114. package/dist/schema/index.d.ts +6 -0
  115. package/dist/schema/index.js +5 -0
  116. package/dist/schema/registry.cjs +194 -0
  117. package/dist/schema/registry.cjs.map +1 -0
  118. package/dist/schema/registry.d.cts +2 -0
  119. package/dist/schema/registry.d.ts +2 -0
  120. package/dist/schema/registry.js +194 -0
  121. package/dist/schema/registry.js.map +1 -0
  122. package/dist/schema/types.d.cts +79 -0
  123. package/dist/schema/types.d.ts +79 -0
  124. package/dist/schema/validate.cjs +131 -0
  125. package/dist/schema/validate.cjs.map +1 -0
  126. package/dist/schema/validate.d.cts +16 -0
  127. package/dist/schema/validate.d.ts +16 -0
  128. package/dist/schema/validate.js +131 -0
  129. package/dist/schema/validate.js.map +1 -0
  130. package/dist/server/handlers.cjs +96 -0
  131. package/dist/server/handlers.cjs.map +1 -0
  132. package/dist/server/handlers.d.cts +3 -0
  133. package/dist/server/handlers.d.ts +3 -0
  134. package/dist/server/handlers.js +95 -0
  135. package/dist/server/handlers.js.map +1 -0
  136. package/dist/server/index.cjs +6 -0
  137. package/dist/server/index.d.cts +4 -0
  138. package/dist/server/index.d.ts +4 -0
  139. package/dist/server/index.js +3 -0
  140. package/dist/server/routes.cjs +17 -0
  141. package/dist/server/routes.cjs.map +1 -0
  142. package/dist/server/routes.d.cts +2 -0
  143. package/dist/server/routes.d.ts +2 -0
  144. package/dist/server/routes.js +17 -0
  145. package/dist/server/routes.js.map +1 -0
  146. package/dist/server/types.d.cts +61 -0
  147. package/dist/server/types.d.ts +61 -0
  148. package/dist/sitemap/generate.cjs +147 -0
  149. package/dist/sitemap/generate.cjs.map +1 -0
  150. package/dist/sitemap/generate.d.cts +3 -0
  151. package/dist/sitemap/generate.d.ts +3 -0
  152. package/dist/sitemap/generate.js +146 -0
  153. package/dist/sitemap/generate.js.map +1 -0
  154. package/dist/sitemap/index.cjs +11 -0
  155. package/dist/sitemap/index.d.cts +4 -0
  156. package/dist/sitemap/index.d.ts +4 -0
  157. package/dist/sitemap/index.js +3 -0
  158. package/dist/sitemap/types.d.cts +82 -0
  159. package/dist/sitemap/types.d.ts +82 -0
  160. package/dist/sitemap/xml.cjs +215 -0
  161. package/dist/sitemap/xml.cjs.map +1 -0
  162. package/dist/sitemap/xml.d.cts +16 -0
  163. package/dist/sitemap/xml.d.ts +16 -0
  164. package/dist/sitemap/xml.js +210 -0
  165. package/dist/sitemap/xml.js.map +1 -0
  166. package/dist/tanstack/index.cjs +13 -0
  167. package/dist/tanstack/index.cjs.map +1 -0
  168. package/dist/tanstack/index.d.cts +19 -0
  169. package/dist/tanstack/index.d.ts +18 -0
  170. package/dist/tanstack/index.js +12 -0
  171. package/dist/tanstack/index.js.map +1 -0
  172. package/dist/testing/diagnostics.cjs +27 -0
  173. package/dist/testing/diagnostics.cjs.map +1 -0
  174. package/dist/testing/diagnostics.d.cts +3 -0
  175. package/dist/testing/diagnostics.d.ts +3 -0
  176. package/dist/testing/diagnostics.js +27 -0
  177. package/dist/testing/diagnostics.js.map +1 -0
  178. package/dist/testing/fixture.cjs +80 -0
  179. package/dist/testing/fixture.cjs.map +1 -0
  180. package/dist/testing/fixture.d.cts +4 -0
  181. package/dist/testing/fixture.d.ts +4 -0
  182. package/dist/testing/fixture.js +78 -0
  183. package/dist/testing/fixture.js.map +1 -0
  184. package/dist/testing/index.cjs +9 -0
  185. package/dist/testing/index.d.cts +5 -0
  186. package/dist/testing/index.d.ts +5 -0
  187. package/dist/testing/index.js +4 -0
  188. package/dist/testing/inspect.cjs +63 -0
  189. package/dist/testing/inspect.cjs.map +1 -0
  190. package/dist/testing/inspect.d.cts +5 -0
  191. package/dist/testing/inspect.d.ts +5 -0
  192. package/dist/testing/inspect.js +63 -0
  193. package/dist/testing/inspect.js.map +1 -0
  194. package/dist/testing/types.d.cts +40 -0
  195. package/dist/testing/types.d.ts +40 -0
  196. package/dist/urls/index.cjs +8 -0
  197. package/dist/urls/index.d.cts +3 -0
  198. package/dist/urls/index.d.ts +3 -0
  199. package/dist/urls/index.js +1 -0
  200. package/dist/urls/normalize.cjs +65 -0
  201. package/dist/urls/normalize.cjs.map +1 -0
  202. package/dist/urls/normalize.d.cts +14 -0
  203. package/dist/urls/normalize.d.ts +14 -0
  204. package/dist/urls/normalize.js +60 -0
  205. package/dist/urls/normalize.js.map +1 -0
  206. package/dist/urls/types.d.cts +22 -0
  207. package/dist/urls/types.d.ts +22 -0
  208. package/dist/validation/index.cjs +5 -0
  209. package/dist/validation/index.d.cts +3 -0
  210. package/dist/validation/index.d.ts +3 -0
  211. package/dist/validation/index.js +1 -0
  212. package/dist/validation/types.d.cts +75 -0
  213. package/dist/validation/types.d.ts +75 -0
  214. package/dist/validation/validate.cjs +452 -0
  215. package/dist/validation/validate.cjs.map +1 -0
  216. package/dist/validation/validate.d.cts +7 -0
  217. package/dist/validation/validate.d.ts +6 -0
  218. package/dist/validation/validate.js +450 -0
  219. package/dist/validation/validate.js.map +1 -0
  220. package/package.json +203 -4
@@ -0,0 +1,92 @@
1
+ export type Brand<T, Name extends string> = T & {
2
+ readonly __brand: Name;
3
+ };
4
+ export type SeoUrl = Brand<string, "SeoUrl">;
5
+ export type SeoNodeId = Brand<string, "SeoNodeId">;
6
+ export type SeoLocale = Brand<string, "SeoLocale">;
7
+ export type JsonPrimitive = string | number | boolean | null;
8
+ export type JsonValue = JsonPrimitive | JsonValue[] | {
9
+ [key: string]: JsonValue;
10
+ };
11
+ export type JsonObject = {
12
+ [key: string]: JsonValue;
13
+ };
14
+ export type SeoNodeType = string | string[];
15
+ export interface SeoNode {
16
+ "@id"?: SeoNodeId | string;
17
+ "@type": SeoNodeType;
18
+ "@context"?: string | Record<string, JsonValue>;
19
+ [key: string]: unknown;
20
+ }
21
+ export interface SeoGraph {
22
+ "@context"?: string | Record<string, JsonValue>;
23
+ "@graph": SeoNode[];
24
+ }
25
+ export interface SeoGraphOptions {
26
+ baseUrl?: string;
27
+ locale?: SeoLocale | string;
28
+ context?: string | Record<string, JsonValue>;
29
+ rootIds?: string[];
30
+ }
31
+ export interface SeoNodeReference {
32
+ "@id": SeoNodeId | string;
33
+ }
34
+ export interface SeoMetadata {
35
+ title?: string;
36
+ description?: string;
37
+ canonical?: SeoUrl | string;
38
+ robots?: string;
39
+ }
40
+ export type SeoValidationSeverity = "error" | "warning" | "info";
41
+ export interface SeoValidationIssue {
42
+ code: string;
43
+ message: string;
44
+ severity: SeoValidationSeverity;
45
+ path?: string;
46
+ nodeId?: string;
47
+ property?: string;
48
+ }
49
+ export interface SeoValidationResult {
50
+ valid: boolean;
51
+ issues: SeoValidationIssue[];
52
+ }
53
+ export interface SeoSerializationOptions {
54
+ pretty?: boolean;
55
+ safe?: boolean;
56
+ scriptSafe?: boolean;
57
+ }
58
+ export interface SeoSerializationResult {
59
+ value: string;
60
+ errors: SeoValidationIssue[];
61
+ }
62
+ export interface SeoReference {
63
+ id: SeoNodeId | string;
64
+ }
65
+ export interface SeoGraphRoot {
66
+ id: SeoNodeId | string;
67
+ primary?: boolean;
68
+ }
69
+ export type SeoGraphConflictStrategy = "deterministic" | "first" | "last" | "error";
70
+ export interface SeoNodeOptions extends SeoGraphOptions {
71
+ id?: string;
72
+ type?: string;
73
+ }
74
+ export interface SeoGraphBuilderOptions extends SeoGraphOptions {
75
+ conflictStrategy?: SeoGraphConflictStrategy;
76
+ strictReferences?: boolean;
77
+ }
78
+ export interface SeoGraphBuilder {
79
+ add(node: SeoNode): this;
80
+ addMany(nodes: readonly SeoNode[]): this;
81
+ build(): SeoGraph;
82
+ getIssues(): readonly SeoValidationIssue[];
83
+ }
84
+ export interface SeoGraphValidationOptions {
85
+ baseUrl?: string;
86
+ strictReferences?: boolean;
87
+ allowedExternalReferences?: boolean;
88
+ }
89
+ export interface SeoGraphSerializationOptions extends SeoSerializationOptions {
90
+ includeContext?: boolean;
91
+ validate?: boolean;
92
+ }
package/dist/index.cjs ADDED
@@ -0,0 +1,96 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_normalize = require("./urls/normalize.cjs");
3
+ const require_context = require("./react/context.cjs");
4
+ const require_graph = require("./core/graph.cjs");
5
+ const require_validate = require("./validation/validate.cjs");
6
+ const require_schema_components = require("./react/schema-components.cjs");
7
+ const require_provider = require("./react/provider.cjs");
8
+ const require_metadata = require("./react/metadata.cjs");
9
+ const require_inspect = require("./testing/inspect.cjs");
10
+ const require_diagnostics = require("./testing/diagnostics.cjs");
11
+ const require_fixture = require("./testing/fixture.cjs");
12
+ const require_xml = require("./sitemap/xml.cjs");
13
+ const require_generate = require("./sitemap/generate.cjs");
14
+ const require_generate$1 = require("./robots/generate.cjs");
15
+ // src/index.ts
16
+ const SchemaReference = require_schema_components.SchemaReference;
17
+ const SeoMetadata = require_metadata.SeoMetadata;
18
+ exports.LDAggregateRating = require_schema_components.LDAggregateRating;
19
+ exports.LDArticle = require_schema_components.LDArticle;
20
+ exports.LDBlogPosting = require_schema_components.LDBlogPosting;
21
+ exports.LDBreadcrumbList = require_schema_components.LDBreadcrumbList;
22
+ exports.LDBreadcrumbs = require_schema_components.LDBreadcrumbs;
23
+ exports.LDCollectionPage = require_schema_components.LDCollectionPage;
24
+ exports.LDContactPoint = require_schema_components.LDContactPoint;
25
+ exports.LDCourse = require_schema_components.LDCourse;
26
+ exports.LDEvent = require_schema_components.LDEvent;
27
+ exports.LDFAQPage = require_schema_components.LDFAQPage;
28
+ exports.LDFaqPage = require_schema_components.LDFaqPage;
29
+ exports.LDHowTo = require_schema_components.LDHowTo;
30
+ exports.LDImageObject = require_schema_components.LDImageObject;
31
+ exports.LDItemList = require_schema_components.LDItemList;
32
+ exports.LDJobPosting = require_schema_components.LDJobPosting;
33
+ exports.LDLocalBusiness = require_schema_components.LDLocalBusiness;
34
+ exports.LDOffer = require_schema_components.LDOffer;
35
+ exports.LDOrganization = require_schema_components.LDOrganization;
36
+ exports.LDPerson = require_schema_components.LDPerson;
37
+ exports.LDPlace = require_schema_components.LDPlace;
38
+ exports.LDPostalAddress = require_schema_components.LDPostalAddress;
39
+ exports.LDProduct = require_schema_components.LDProduct;
40
+ exports.LDProfilePage = require_schema_components.LDProfilePage;
41
+ exports.LDRecipe = require_schema_components.LDRecipe;
42
+ exports.LDReview = require_schema_components.LDReview;
43
+ exports.LDSearchAction = require_schema_components.LDSearchAction;
44
+ exports.LDService = require_schema_components.LDService;
45
+ exports.LDSoftwareApplication = require_schema_components.LDSoftwareApplication;
46
+ exports.LDVideoObject = require_schema_components.LDVideoObject;
47
+ exports.LDWebPage = require_schema_components.LDWebPage;
48
+ exports.LDWebSite = require_schema_components.LDWebSite;
49
+ exports.LDWebsite = require_schema_components.LDWebsite;
50
+ exports.Schema = require_schema_components.Schema;
51
+ exports.SchemaGraph = require_schema_components.SchemaGraph;
52
+ exports.SchemaReference = SchemaReference;
53
+ exports.SchemaScript = require_schema_components.SchemaScript;
54
+ exports.SeoHead = require_metadata.SeoHead;
55
+ exports.SeoJsonLd = require_schema_components.SeoJsonLd;
56
+ exports.SeoMetadata = SeoMetadata;
57
+ exports.SeoProvider = require_provider.SeoProvider;
58
+ exports.assertSeoTest = require_fixture.assertSeoTest;
59
+ exports.buildSeoGraph = require_graph.buildSeoGraph;
60
+ exports.createSeoGraphBuilder = require_graph.createSeoGraphBuilder;
61
+ exports.createSeoNode = require_graph.createSeoNode;
62
+ exports.createSeoTestFixture = require_fixture.createSeoTestFixture;
63
+ exports.createSitemapXml = require_xml.createSitemapXml;
64
+ exports.escapeXml = require_xml.escapeXml;
65
+ exports.formatSeoDiagnostics = require_diagnostics.formatSeoDiagnostics;
66
+ exports.formatSitemapDate = require_xml.formatSitemapDate;
67
+ exports.generateRobotsTxt = require_generate$1.generateRobotsTxt;
68
+ exports.generateSitemap = require_generate.generateSitemap;
69
+ exports.inspectSeoGraph = require_inspect.inspectSeoGraph;
70
+ exports.isSameSeoOrigin = require_normalize.isSameSeoOrigin;
71
+ exports.isValidSeoUrl = require_normalize.isValidSeoUrl;
72
+ exports.mergeSeoNodes = require_graph.mergeSeoNodes;
73
+ exports.normalizeSeoId = require_graph.normalizeSeoId;
74
+ exports.normalizeSeoOrigin = require_normalize.normalizeSeoOrigin;
75
+ exports.normalizeSeoPath = require_normalize.normalizeSeoPath;
76
+ exports.normalizeSeoUrl = require_normalize.normalizeSeoUrl;
77
+ exports.resolveSeoReferences = require_graph.resolveSeoReferences;
78
+ exports.resolveSeoUrls = require_normalize.resolveSeoUrls;
79
+ exports.runSeoTest = require_fixture.runSeoTest;
80
+ exports.serializeRobotsTxt = require_generate$1.serializeRobotsTxt;
81
+ exports.serializeSeoGraph = require_graph.serializeSeoGraph;
82
+ exports.serializeSitemap = require_generate.serializeSitemap;
83
+ exports.serializeSitemapEntry = require_xml.serializeSitemapEntry;
84
+ exports.sitemapByteLength = require_xml.sitemapByteLength;
85
+ exports.stringifySeoGraph = require_graph.stringifySeoGraph;
86
+ exports.useSeo = require_schema_components.useSeo;
87
+ exports.useSeoConfig = require_context.useSeoConfig;
88
+ exports.useSeoMetadata = require_context.useSeoMetadata;
89
+ exports.validateRobotsOptions = require_generate$1.validateRobotsOptions;
90
+ exports.validateSeo = require_validate.validateSeo;
91
+ exports.validateSeoGraph = require_graph.validateSeoGraph;
92
+ exports.validateSeoMetadata = require_validate.validateSeoMetadata;
93
+ exports.validateSeoNode = require_validate.validateSeoNode;
94
+ exports.validateSitemapEntries = require_xml.validateSitemapEntries;
95
+
96
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["SchemaReferenceComponent","SeoMetadataComponent"],"sources":["../src/index.ts"],"sourcesContent":["import {\n SchemaReference as SchemaReferenceComponent,\n SeoMetadata as SeoMetadataComponent,\n} from \"./react\";\n\nimport type { SeoMetadata as SeoMetadataData } from \"./core\";\n\nimport type { SchemaReference as SchemaReferenceData } from \"./schema\";\n\nexport const SchemaReference = SchemaReferenceComponent;\nexport type SchemaReference = SchemaReferenceData;\n\nexport const SeoMetadata = SeoMetadataComponent;\nexport type SeoMetadata = SeoMetadataData;\n\nexport type { SeoValidationIssue } from \"./core\";\nexport type { SeoValidationIssue as SeoValidationReportIssue } from \"./validation\";\n\nexport * from \"./core\";\n\nexport type * from \"./context\";\nexport type * from \"./schema\";\nexport type * from \"./metadata\";\n\nexport * from \"./validation\";\nexport * from \"./react\";\n\nexport type * from \"./server\";\nexport type * from \"./sitemap\";\nexport type * from \"./robots\";\nexport type * from \"./urls\";\nexport * from \"./testing\";\n\nexport * from \"./sitemap\";\nexport * from \"./robots\";\nexport * from \"./urls\";\n"],"mappings":";;;;;;;;;;;;;;;AASA,MAAa,kBAAkBA,0BAAAA;AAG/B,MAAa,cAAcC,iBAAAA"}
@@ -0,0 +1,48 @@
1
+ import { Brand, JsonObject, JsonPrimitive, JsonValue, SeoGraph, SeoGraphBuilder, SeoGraphBuilderOptions, SeoGraphConflictStrategy, SeoGraphOptions, SeoGraphRoot, SeoGraphSerializationOptions, SeoGraphValidationOptions, SeoLocale, SeoMetadata as SeoMetadata$1, SeoNode, SeoNodeId, SeoNodeOptions, SeoNodeReference, SeoNodeType, SeoReference, SeoSerializationOptions, SeoSerializationResult, SeoUrl, SeoValidationIssue, SeoValidationResult, SeoValidationSeverity } from "./core/types.cjs";
2
+ import { SeoConfig, SeoConfigContext, SeoConfigOverride, SeoDefaultMetadata, SeoResolvedConfig, SeoSiteIdentity, SeoTitleConfig, SeoTrailingSlash } from "./context/types.cjs";
3
+ import { ResolvedSeoMetadata, SeoAlternateLanguage, SeoCanonicalMetadata, SeoDescriptionMetadata, SeoHreflangMetadata, SeoOpenGraphMetadata, SeoPageMetadata, SeoRobotsMetadata, SeoSocialImage, SeoTitleMetadata, SeoTwitterMetadata } from "./metadata/types.cjs";
4
+ import { SchemaDefinition, SchemaDefinitionCollection, SchemaDefinitionSource, SchemaEnumerationValue, SchemaExtension, SchemaPropertyDefinition, SchemaPropertyType, SchemaReference as SchemaReference$1, SchemaRegistry, SchemaRegistryConflict, SchemaRegistryOptions, SchemaRegistryProvider, SchemaValidationOptions } from "./schema/types.cjs";
5
+ import { SCHEMAORG_SOURCE_HASH, SCHEMAORG_VERSION, generatedSchemaDefinitions } from "./schema/generated/schemaorg.cjs";
6
+ import { SeoCustomValidator, SeoRichResultProfile, SeoValidationContext, SeoValidationInput, SeoValidationIssue as SeoValidationIssue$1, SeoValidationMode, SeoValidationOptions, SeoValidationReport, SeoValidationSource, SeoValidationSummary } from "./validation/types.cjs";
7
+ import { SchemaComponentProps, SchemaComponentType, SchemaGraphProps, SchemaProperties, SchemaProps, SchemaReferenceProps, SchemaValue, SeoContextValue, SeoHeadProps, SeoJsonLdProps, SeoMetadataProps, SeoProviderProps, SeoSchemaValidationError } from "./react/types.cjs";
8
+ import { useSeoConfig, useSeoMetadata } from "./react/context.cjs";
9
+ import { SeoProvider } from "./react/provider.cjs";
10
+ import { SeoHead, SeoMetadata as SeoMetadata$2 } from "./react/metadata.cjs";
11
+ import { buildSeoGraph, createSeoGraphBuilder, createSeoNode, mergeSeoNodes, normalizeSeoId, resolveSeoReferences, serializeSeoGraph, stringifySeoGraph, validateSeoGraph } from "./core/graph.cjs";
12
+ import "./react/index.cjs";
13
+ import { createSchemaRegistry } from "./schema/registry.cjs";
14
+ import { createDefaultSchemaRegistry } from "./schema/create-registry.cjs";
15
+ import { validateSchemaNode } from "./schema/validate.cjs";
16
+ import "./core/index.cjs";
17
+ import { LDAggregateRating, LDArticle, LDBlogPosting, LDBreadcrumbList, LDBreadcrumbs, LDCollectionPage, LDContactPoint, LDCourse, LDEvent, LDFAQPage, LDFaqPage, LDHowTo, LDImageObject, LDItemList, LDJobPosting, LDLocalBusiness, LDOffer, LDOrganization, LDPerson, LDPlace, LDPostalAddress, LDProduct, LDProfilePage, LDRecipe, LDReview, LDSearchAction, LDService, LDSoftwareApplication, LDVideoObject, LDWebPage, LDWebSite, LDWebsite, Schema, SchemaGraph, SchemaReference as SchemaReference$2, SchemaScript, SeoJsonLd, useSeo } from "./react/schema-components.cjs";
18
+ import "./schema/index.cjs";
19
+ import { validateSeo, validateSeoMetadata, validateSeoNode } from "./validation/validate.cjs";
20
+ import "./validation/index.cjs";
21
+ import { isSameSeoOrigin, isValidSeoUrl, normalizeSeoOrigin, normalizeSeoPath, normalizeSeoUrl, resolveSeoUrls } from "./urls/normalize.cjs";
22
+ import { normalizeSeoConfig, resolveSeoUrl } from "./context/config.cjs";
23
+ import "./context/index.cjs";
24
+ import { resolveSeoMetadata, resolveSeoRobots } from "./metadata/resolve.cjs";
25
+ import "./metadata/index.cjs";
26
+ import { RobotsDirective, RobotsOptions, RobotsPolicy, RobotsResult, RobotsRule, RobotsValidationIssue } from "./robots/types.cjs";
27
+ import { SitemapAlternate, SitemapCollection, SitemapEntry, SitemapFile, SitemapGenerationOptions, SitemapImage, SitemapOptions, SitemapResult, SitemapValidationIssue, SitemapVideo } from "./sitemap/types.cjs";
28
+ import { SeoHttpHandler, SeoRequestContext, SeoRobotsHandlerOptions, SeoRouteHandlers, SeoRouteOptions, SeoServerAdapter, SeoServerResult, SeoSitemapHandlerOptions, SeoTextHandler, SeoTextHandlerOptions, SeoTextResponse } from "./server/types.cjs";
29
+ import { createRobotsHandler, createSitemapHandler } from "./server/handlers.cjs";
30
+ import { createSeoRouteHandlers } from "./server/routes.cjs";
31
+ import "./server/index.cjs";
32
+ import { createSitemapXml, escapeXml, formatSitemapDate, serializeSitemapEntry, sitemapByteLength, validateSitemapEntries } from "./sitemap/xml.cjs";
33
+ import { generateSitemap, serializeSitemap } from "./sitemap/generate.cjs";
34
+ import "./sitemap/index.cjs";
35
+ import { generateRobotsTxt, serializeRobotsTxt, validateRobotsOptions } from "./robots/generate.cjs";
36
+ import "./robots/index.cjs";
37
+ import { SeoOriginOptions, SeoUrlOptions, SeoUrlResult, SeoUrlValidationIssue } from "./urls/types.cjs";
38
+ import "./urls/index.cjs";
39
+ import { SeoDiagnosticFormatOptions, SeoGraphInspection, SeoGraphNodeInspection, SeoTestFixture, SeoTestOptions, SeoTestResult } from "./testing/types.cjs";
40
+ import { inspectSeoGraph } from "./testing/inspect.cjs";
41
+ import { formatSeoDiagnostics } from "./testing/diagnostics.cjs";
42
+ import { assertSeoTest, createSeoTestFixture, runSeoTest } from "./testing/fixture.cjs";
43
+ import "./testing/index.cjs";
44
+ export declare const SchemaReference: typeof SchemaReference$2;
45
+ export type SchemaReference = SchemaReference$1;
46
+ export declare const SeoMetadata: typeof SeoMetadata$2;
47
+ export type SeoMetadata = SeoMetadata$1;
48
+ export { type Brand, type JsonObject, type JsonPrimitive, type JsonValue, LDAggregateRating, LDArticle, LDBlogPosting, LDBreadcrumbList, LDBreadcrumbs, LDCollectionPage, LDContactPoint, LDCourse, LDEvent, LDFAQPage, LDFaqPage, LDHowTo, LDImageObject, LDItemList, LDJobPosting, LDLocalBusiness, LDOffer, LDOrganization, LDPerson, LDPlace, LDPostalAddress, LDProduct, LDProfilePage, LDRecipe, LDReview, LDSearchAction, LDService, LDSoftwareApplication, LDVideoObject, LDWebPage, LDWebSite, LDWebsite, type ResolvedSeoMetadata, type RobotsDirective, type RobotsOptions, type RobotsPolicy, type RobotsResult, type RobotsRule, type RobotsValidationIssue, type SCHEMAORG_SOURCE_HASH, type SCHEMAORG_VERSION, Schema, type SchemaComponentProps, type SchemaComponentType, type SchemaDefinition, type SchemaDefinitionCollection, type SchemaDefinitionSource, type SchemaEnumerationValue, type SchemaExtension, SchemaGraph, type SchemaGraphProps, type SchemaProperties, type SchemaPropertyDefinition, type SchemaPropertyType, type SchemaProps, type SchemaReferenceProps, type SchemaRegistry, type SchemaRegistryConflict, type SchemaRegistryOptions, type SchemaRegistryProvider, SchemaScript, type SchemaValidationOptions, type SchemaValue, type SeoAlternateLanguage, type SeoCanonicalMetadata, type SeoConfig, type SeoConfigContext, type SeoConfigOverride, type SeoContextValue, type SeoCustomValidator, type SeoDefaultMetadata, type SeoDescriptionMetadata, type SeoDiagnosticFormatOptions, type SeoGraph, type SeoGraphBuilder, type SeoGraphBuilderOptions, type SeoGraphConflictStrategy, type SeoGraphInspection, type SeoGraphNodeInspection, type SeoGraphOptions, type SeoGraphRoot, type SeoGraphSerializationOptions, type SeoGraphValidationOptions, SeoHead, type SeoHeadProps, type SeoHreflangMetadata, type SeoHttpHandler, SeoJsonLd, type SeoJsonLdProps, type SeoLocale, type SeoMetadataProps, type SeoNode, type SeoNodeId, type SeoNodeOptions, type SeoNodeReference, type SeoNodeType, type SeoOpenGraphMetadata, type SeoOriginOptions, type SeoPageMetadata, SeoProvider, type SeoProviderProps, type SeoReference, type SeoRequestContext, type SeoResolvedConfig, type SeoRichResultProfile, type SeoRobotsHandlerOptions, type SeoRobotsMetadata, type SeoRouteHandlers, type SeoRouteOptions, type SeoSchemaValidationError, type SeoSerializationOptions, type SeoSerializationResult, type SeoServerAdapter, type SeoServerResult, type SeoSiteIdentity, type SeoSitemapHandlerOptions, type SeoSocialImage, type SeoTestFixture, type SeoTestOptions, type SeoTestResult, type SeoTextHandler, type SeoTextHandlerOptions, type SeoTextResponse, type SeoTitleConfig, type SeoTitleMetadata, type SeoTrailingSlash, type SeoTwitterMetadata, type SeoUrl, type SeoUrlOptions, type SeoUrlResult, type SeoUrlValidationIssue, type SeoValidationContext, type SeoValidationInput, type SeoValidationIssue, type SeoValidationMode, type SeoValidationOptions, type SeoValidationReport, type SeoValidationIssue$1 as SeoValidationReportIssue, type SeoValidationResult, type SeoValidationSeverity, type SeoValidationSource, type SeoValidationSummary, type SitemapAlternate, type SitemapCollection, type SitemapEntry, type SitemapFile, type SitemapGenerationOptions, type SitemapImage, type SitemapOptions, type SitemapResult, type SitemapValidationIssue, type SitemapVideo, assertSeoTest, buildSeoGraph, type createDefaultSchemaRegistry, type createRobotsHandler, type createSchemaRegistry, createSeoGraphBuilder, createSeoNode, type createSeoRouteHandlers, createSeoTestFixture, type createSitemapHandler, createSitemapXml, escapeXml, formatSeoDiagnostics, formatSitemapDate, generateRobotsTxt, generateSitemap, type generatedSchemaDefinitions, inspectSeoGraph, isSameSeoOrigin, isValidSeoUrl, mergeSeoNodes, type normalizeSeoConfig, normalizeSeoId, normalizeSeoOrigin, normalizeSeoPath, normalizeSeoUrl, type resolveSeoMetadata, resolveSeoReferences, type resolveSeoRobots, type resolveSeoUrl, resolveSeoUrls, runSeoTest, serializeRobotsTxt, serializeSeoGraph, serializeSitemap, serializeSitemapEntry, sitemapByteLength, stringifySeoGraph, useSeo, useSeoConfig, useSeoMetadata, validateRobotsOptions, type validateSchemaNode, validateSeo, validateSeoGraph, validateSeoMetadata, validateSeoNode, validateSitemapEntries };
@@ -0,0 +1,38 @@
1
+ import "./react/index.js";
2
+ import { SeoConfig, SeoConfigContext, SeoConfigOverride, SeoDefaultMetadata, SeoResolvedConfig, SeoSiteIdentity, SeoTitleConfig, SeoTrailingSlash } from "./context/types.js";
3
+ import { isSameSeoOrigin, isValidSeoUrl, normalizeSeoOrigin, normalizeSeoPath, normalizeSeoUrl, resolveSeoUrls } from "./urls/normalize.js";
4
+ import { normalizeSeoConfig, resolveSeoUrl } from "./context/config.js";
5
+ import { buildSeoGraph, createSeoGraphBuilder, createSeoNode, mergeSeoNodes, normalizeSeoId, resolveSeoReferences, serializeSeoGraph, stringifySeoGraph, validateSeoGraph } from "./core/graph.js";
6
+ import { ResolvedSeoMetadata, SeoAlternateLanguage, SeoCanonicalMetadata, SeoDescriptionMetadata, SeoHreflangMetadata, SeoOpenGraphMetadata, SeoPageMetadata, SeoRobotsMetadata, SeoSocialImage, SeoTitleMetadata, SeoTwitterMetadata } from "./metadata/types.js";
7
+ import { Brand, JsonObject, JsonPrimitive, JsonValue, SeoGraph, SeoGraphBuilder, SeoGraphBuilderOptions, SeoGraphConflictStrategy, SeoGraphOptions, SeoGraphRoot, SeoGraphSerializationOptions, SeoGraphValidationOptions, SeoLocale, SeoMetadata as SeoMetadata$1, SeoNode, SeoNodeId, SeoNodeOptions, SeoNodeReference, SeoNodeType, SeoReference, SeoSerializationOptions, SeoSerializationResult, SeoUrl, SeoValidationIssue, SeoValidationResult, SeoValidationSeverity } from "./core/types.js";
8
+ import { SCHEMAORG_SOURCE_HASH, SCHEMAORG_VERSION, generatedSchemaDefinitions } from "./schema/generated/schemaorg.js";
9
+ import { SchemaDefinition, SchemaDefinitionCollection, SchemaDefinitionSource, SchemaEnumerationValue, SchemaExtension, SchemaPropertyDefinition, SchemaPropertyType, SchemaReference as SchemaReference$1, SchemaRegistry, SchemaRegistryConflict, SchemaRegistryOptions, SchemaRegistryProvider, SchemaValidationOptions } from "./schema/types.js";
10
+ import { SchemaComponentProps, SchemaComponentType, SchemaGraphProps, SchemaProperties, SchemaProps, SchemaReferenceProps, SchemaValue, SeoContextValue, SeoHeadProps, SeoJsonLdProps, SeoMetadataProps, SeoProviderProps, SeoSchemaValidationError } from "./react/types.js";
11
+ import { useSeoConfig, useSeoMetadata } from "./react/context.js";
12
+ import { SeoProvider } from "./react/provider.js";
13
+ import { SeoHead, SeoMetadata as SeoMetadata$2 } from "./react/metadata.js";
14
+ import { createSchemaRegistry } from "./schema/registry.js";
15
+ import { createDefaultSchemaRegistry } from "./schema/create-registry.js";
16
+ import { validateSchemaNode } from "./schema/validate.js";
17
+ import { LDAggregateRating, LDArticle, LDBlogPosting, LDBreadcrumbList, LDBreadcrumbs, LDCollectionPage, LDContactPoint, LDCourse, LDEvent, LDFAQPage, LDFaqPage, LDHowTo, LDImageObject, LDItemList, LDJobPosting, LDLocalBusiness, LDOffer, LDOrganization, LDPerson, LDPlace, LDPostalAddress, LDProduct, LDProfilePage, LDRecipe, LDReview, LDSearchAction, LDService, LDSoftwareApplication, LDVideoObject, LDWebPage, LDWebSite, LDWebsite, Schema, SchemaGraph, SchemaReference as SchemaReference$2, SchemaScript, SeoJsonLd, useSeo } from "./react/schema-components.js";
18
+ import { SeoCustomValidator, SeoRichResultProfile, SeoValidationContext, SeoValidationInput, SeoValidationIssue as SeoValidationIssue$1, SeoValidationMode, SeoValidationOptions, SeoValidationReport, SeoValidationSource, SeoValidationSummary } from "./validation/types.js";
19
+ import { validateSeo, validateSeoMetadata, validateSeoNode } from "./validation/validate.js";
20
+ import { resolveSeoMetadata, resolveSeoRobots } from "./metadata/resolve.js";
21
+ import { RobotsDirective, RobotsOptions, RobotsPolicy, RobotsResult, RobotsRule, RobotsValidationIssue } from "./robots/types.js";
22
+ import { SitemapAlternate, SitemapCollection, SitemapEntry, SitemapFile, SitemapGenerationOptions, SitemapImage, SitemapOptions, SitemapResult, SitemapValidationIssue, SitemapVideo } from "./sitemap/types.js";
23
+ import { SeoHttpHandler, SeoRequestContext, SeoRobotsHandlerOptions, SeoRouteHandlers, SeoRouteOptions, SeoServerAdapter, SeoServerResult, SeoSitemapHandlerOptions, SeoTextHandler, SeoTextHandlerOptions, SeoTextResponse } from "./server/types.js";
24
+ import { createRobotsHandler, createSitemapHandler } from "./server/handlers.js";
25
+ import { createSeoRouteHandlers } from "./server/routes.js";
26
+ import { createSitemapXml, escapeXml, formatSitemapDate, serializeSitemapEntry, sitemapByteLength, validateSitemapEntries } from "./sitemap/xml.js";
27
+ import { generateSitemap, serializeSitemap } from "./sitemap/generate.js";
28
+ import { generateRobotsTxt, serializeRobotsTxt, validateRobotsOptions } from "./robots/generate.js";
29
+ import { SeoOriginOptions, SeoUrlOptions, SeoUrlResult, SeoUrlValidationIssue } from "./urls/types.js";
30
+ import { SeoDiagnosticFormatOptions, SeoGraphInspection, SeoGraphNodeInspection, SeoTestFixture, SeoTestOptions, SeoTestResult } from "./testing/types.js";
31
+ import { inspectSeoGraph } from "./testing/inspect.js";
32
+ import { formatSeoDiagnostics } from "./testing/diagnostics.js";
33
+ import { assertSeoTest, createSeoTestFixture, runSeoTest } from "./testing/fixture.js";
34
+ export declare const SchemaReference: typeof SchemaReference$2;
35
+ export type SchemaReference = SchemaReference$1;
36
+ export declare const SeoMetadata: typeof SeoMetadata$2;
37
+ export type SeoMetadata = SeoMetadata$1;
38
+ export { type Brand, type JsonObject, type JsonPrimitive, type JsonValue, LDAggregateRating, LDArticle, LDBlogPosting, LDBreadcrumbList, LDBreadcrumbs, LDCollectionPage, LDContactPoint, LDCourse, LDEvent, LDFAQPage, LDFaqPage, LDHowTo, LDImageObject, LDItemList, LDJobPosting, LDLocalBusiness, LDOffer, LDOrganization, LDPerson, LDPlace, LDPostalAddress, LDProduct, LDProfilePage, LDRecipe, LDReview, LDSearchAction, LDService, LDSoftwareApplication, LDVideoObject, LDWebPage, LDWebSite, LDWebsite, type ResolvedSeoMetadata, type RobotsDirective, type RobotsOptions, type RobotsPolicy, type RobotsResult, type RobotsRule, type RobotsValidationIssue, type SCHEMAORG_SOURCE_HASH, type SCHEMAORG_VERSION, Schema, type SchemaComponentProps, type SchemaComponentType, type SchemaDefinition, type SchemaDefinitionCollection, type SchemaDefinitionSource, type SchemaEnumerationValue, type SchemaExtension, SchemaGraph, type SchemaGraphProps, type SchemaProperties, type SchemaPropertyDefinition, type SchemaPropertyType, type SchemaProps, type SchemaReferenceProps, type SchemaRegistry, type SchemaRegistryConflict, type SchemaRegistryOptions, type SchemaRegistryProvider, SchemaScript, type SchemaValidationOptions, type SchemaValue, type SeoAlternateLanguage, type SeoCanonicalMetadata, type SeoConfig, type SeoConfigContext, type SeoConfigOverride, type SeoContextValue, type SeoCustomValidator, type SeoDefaultMetadata, type SeoDescriptionMetadata, type SeoDiagnosticFormatOptions, type SeoGraph, type SeoGraphBuilder, type SeoGraphBuilderOptions, type SeoGraphConflictStrategy, type SeoGraphInspection, type SeoGraphNodeInspection, type SeoGraphOptions, type SeoGraphRoot, type SeoGraphSerializationOptions, type SeoGraphValidationOptions, SeoHead, type SeoHeadProps, type SeoHreflangMetadata, type SeoHttpHandler, SeoJsonLd, type SeoJsonLdProps, type SeoLocale, type SeoMetadataProps, type SeoNode, type SeoNodeId, type SeoNodeOptions, type SeoNodeReference, type SeoNodeType, type SeoOpenGraphMetadata, type SeoOriginOptions, type SeoPageMetadata, SeoProvider, type SeoProviderProps, type SeoReference, type SeoRequestContext, type SeoResolvedConfig, type SeoRichResultProfile, type SeoRobotsHandlerOptions, type SeoRobotsMetadata, type SeoRouteHandlers, type SeoRouteOptions, type SeoSchemaValidationError, type SeoSerializationOptions, type SeoSerializationResult, type SeoServerAdapter, type SeoServerResult, type SeoSiteIdentity, type SeoSitemapHandlerOptions, type SeoSocialImage, type SeoTestFixture, type SeoTestOptions, type SeoTestResult, type SeoTextHandler, type SeoTextHandlerOptions, type SeoTextResponse, type SeoTitleConfig, type SeoTitleMetadata, type SeoTrailingSlash, type SeoTwitterMetadata, type SeoUrl, type SeoUrlOptions, type SeoUrlResult, type SeoUrlValidationIssue, type SeoValidationContext, type SeoValidationInput, type SeoValidationIssue, type SeoValidationMode, type SeoValidationOptions, type SeoValidationReport, type SeoValidationIssue$1 as SeoValidationReportIssue, type SeoValidationResult, type SeoValidationSeverity, type SeoValidationSource, type SeoValidationSummary, type SitemapAlternate, type SitemapCollection, type SitemapEntry, type SitemapFile, type SitemapGenerationOptions, type SitemapImage, type SitemapOptions, type SitemapResult, type SitemapValidationIssue, type SitemapVideo, assertSeoTest, buildSeoGraph, type createDefaultSchemaRegistry, type createRobotsHandler, type createSchemaRegistry, createSeoGraphBuilder, createSeoNode, type createSeoRouteHandlers, createSeoTestFixture, type createSitemapHandler, createSitemapXml, escapeXml, formatSeoDiagnostics, formatSitemapDate, generateRobotsTxt, generateSitemap, type generatedSchemaDefinitions, inspectSeoGraph, isSameSeoOrigin, isValidSeoUrl, mergeSeoNodes, type normalizeSeoConfig, normalizeSeoId, normalizeSeoOrigin, normalizeSeoPath, normalizeSeoUrl, type resolveSeoMetadata, resolveSeoReferences, type resolveSeoRobots, type resolveSeoUrl, resolveSeoUrls, runSeoTest, serializeRobotsTxt, serializeSeoGraph, serializeSitemap, serializeSitemapEntry, sitemapByteLength, stringifySeoGraph, useSeo, useSeoConfig, useSeoMetadata, validateRobotsOptions, type validateSchemaNode, validateSeo, validateSeoGraph, validateSeoMetadata, validateSeoNode, validateSitemapEntries };
package/dist/index.js ADDED
@@ -0,0 +1,19 @@
1
+ import { isSameSeoOrigin, isValidSeoUrl, normalizeSeoOrigin, normalizeSeoPath, normalizeSeoUrl, resolveSeoUrls } from "./urls/normalize.js";
2
+ import { useSeoConfig, useSeoMetadata } from "./react/context.js";
3
+ import { buildSeoGraph, createSeoGraphBuilder, createSeoNode, mergeSeoNodes, normalizeSeoId, resolveSeoReferences, serializeSeoGraph, stringifySeoGraph, validateSeoGraph } from "./core/graph.js";
4
+ import { validateSeo, validateSeoMetadata, validateSeoNode } from "./validation/validate.js";
5
+ import { LDAggregateRating, LDArticle, LDBlogPosting, LDBreadcrumbList, LDBreadcrumbs, LDCollectionPage, LDContactPoint, LDCourse, LDEvent, LDFAQPage, LDFaqPage, LDHowTo, LDImageObject, LDItemList, LDJobPosting, LDLocalBusiness, LDOffer, LDOrganization, LDPerson, LDPlace, LDPostalAddress, LDProduct, LDProfilePage, LDRecipe, LDReview, LDSearchAction, LDService, LDSoftwareApplication, LDVideoObject, LDWebPage, LDWebSite, LDWebsite, Schema, SchemaGraph, SchemaReference as SchemaReference$1, SchemaScript, SeoJsonLd, useSeo } from "./react/schema-components.js";
6
+ import { SeoProvider } from "./react/provider.js";
7
+ import { SeoHead, SeoMetadata as SeoMetadata$1 } from "./react/metadata.js";
8
+ import { inspectSeoGraph } from "./testing/inspect.js";
9
+ import { formatSeoDiagnostics } from "./testing/diagnostics.js";
10
+ import { assertSeoTest, createSeoTestFixture, runSeoTest } from "./testing/fixture.js";
11
+ import { createSitemapXml, escapeXml, formatSitemapDate, serializeSitemapEntry, sitemapByteLength, validateSitemapEntries } from "./sitemap/xml.js";
12
+ import { generateSitemap, serializeSitemap } from "./sitemap/generate.js";
13
+ import { generateRobotsTxt, serializeRobotsTxt, validateRobotsOptions } from "./robots/generate.js";
14
+ // src/index.ts
15
+ const SchemaReference = SchemaReference$1;
16
+ const SeoMetadata = SeoMetadata$1;
17
+ export { LDAggregateRating, LDArticle, LDBlogPosting, LDBreadcrumbList, LDBreadcrumbs, LDCollectionPage, LDContactPoint, LDCourse, LDEvent, LDFAQPage, LDFaqPage, LDHowTo, LDImageObject, LDItemList, LDJobPosting, LDLocalBusiness, LDOffer, LDOrganization, LDPerson, LDPlace, LDPostalAddress, LDProduct, LDProfilePage, LDRecipe, LDReview, LDSearchAction, LDService, LDSoftwareApplication, LDVideoObject, LDWebPage, LDWebSite, LDWebsite, Schema, SchemaGraph, SchemaReference, SchemaScript, SeoHead, SeoJsonLd, SeoMetadata, SeoProvider, assertSeoTest, buildSeoGraph, createSeoGraphBuilder, createSeoNode, createSeoTestFixture, createSitemapXml, escapeXml, formatSeoDiagnostics, formatSitemapDate, generateRobotsTxt, generateSitemap, inspectSeoGraph, isSameSeoOrigin, isValidSeoUrl, mergeSeoNodes, normalizeSeoId, normalizeSeoOrigin, normalizeSeoPath, normalizeSeoUrl, resolveSeoReferences, resolveSeoUrls, runSeoTest, serializeRobotsTxt, serializeSeoGraph, serializeSitemap, serializeSitemapEntry, sitemapByteLength, stringifySeoGraph, useSeo, useSeoConfig, useSeoMetadata, validateRobotsOptions, validateSeo, validateSeoGraph, validateSeoMetadata, validateSeoNode, validateSitemapEntries };
18
+
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["SchemaReferenceComponent","SeoMetadataComponent"],"sources":["../src/index.ts"],"sourcesContent":["import {\n SchemaReference as SchemaReferenceComponent,\n SeoMetadata as SeoMetadataComponent,\n} from \"./react\";\n\nimport type { SeoMetadata as SeoMetadataData } from \"./core\";\n\nimport type { SchemaReference as SchemaReferenceData } from \"./schema\";\n\nexport const SchemaReference = SchemaReferenceComponent;\nexport type SchemaReference = SchemaReferenceData;\n\nexport const SeoMetadata = SeoMetadataComponent;\nexport type SeoMetadata = SeoMetadataData;\n\nexport type { SeoValidationIssue } from \"./core\";\nexport type { SeoValidationIssue as SeoValidationReportIssue } from \"./validation\";\n\nexport * from \"./core\";\n\nexport type * from \"./context\";\nexport type * from \"./schema\";\nexport type * from \"./metadata\";\n\nexport * from \"./validation\";\nexport * from \"./react\";\n\nexport type * from \"./server\";\nexport type * from \"./sitemap\";\nexport type * from \"./robots\";\nexport type * from \"./urls\";\nexport * from \"./testing\";\n\nexport * from \"./sitemap\";\nexport * from \"./robots\";\nexport * from \"./urls\";\n"],"mappings":";;;;;;;;;;;;;;AASA,MAAa,kBAAkBA;AAG/B,MAAa,cAAcC"}
@@ -0,0 +1,4 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_resolve = require("./resolve.cjs");
3
+ exports.resolveSeoMetadata = require_resolve.resolveSeoMetadata;
4
+ exports.resolveSeoRobots = require_resolve.resolveSeoRobots;
@@ -0,0 +1,3 @@
1
+ import { ResolvedSeoMetadata, SeoAlternateLanguage, SeoCanonicalMetadata, SeoDescriptionMetadata, SeoHreflangMetadata, SeoOpenGraphMetadata, SeoPageMetadata, SeoRobotsMetadata, SeoSocialImage, SeoTitleMetadata, SeoTwitterMetadata } from "./types.cjs";
2
+ import { resolveSeoMetadata, resolveSeoRobots } from "./resolve.cjs";
3
+ export { type ResolvedSeoMetadata, type SeoAlternateLanguage, type SeoCanonicalMetadata, type SeoDescriptionMetadata, type SeoHreflangMetadata, type SeoOpenGraphMetadata, type SeoPageMetadata, type SeoRobotsMetadata, type SeoSocialImage, type SeoTitleMetadata, type SeoTwitterMetadata, resolveSeoMetadata, resolveSeoRobots };
@@ -0,0 +1,3 @@
1
+ import { ResolvedSeoMetadata, SeoAlternateLanguage, SeoCanonicalMetadata, SeoDescriptionMetadata, SeoHreflangMetadata, SeoOpenGraphMetadata, SeoPageMetadata, SeoRobotsMetadata, SeoSocialImage, SeoTitleMetadata, SeoTwitterMetadata } from "./types.js";
2
+ import { resolveSeoMetadata, resolveSeoRobots } from "./resolve.js";
3
+ export { type ResolvedSeoMetadata, type SeoAlternateLanguage, type SeoCanonicalMetadata, type SeoDescriptionMetadata, type SeoHreflangMetadata, type SeoOpenGraphMetadata, type SeoPageMetadata, type SeoRobotsMetadata, type SeoSocialImage, type SeoTitleMetadata, type SeoTwitterMetadata, resolveSeoMetadata, resolveSeoRobots };
@@ -0,0 +1 @@
1
+ export { resolveSeoMetadata, resolveSeoRobots } from "./resolve.js";
@@ -0,0 +1,122 @@
1
+ const require_config = require("../context/config.cjs");
2
+ // src/metadata/resolve.ts
3
+ const normalizeLocale = (locale) => {
4
+ try {
5
+ const normalized = Intl.getCanonicalLocales(locale)[0];
6
+ if (!normalized) throw new Error();
7
+ return normalized;
8
+ } catch {
9
+ throw new Error(`Invalid SEO page locale: "${locale}".`);
10
+ }
11
+ };
12
+ const isSupportedLocale = (locale, config) => config.supportedLocales.includes(locale) || config.supportedLocales.includes(locale.split("-")[0]);
13
+ const resolvePageLocale = (locale, config) => {
14
+ const resolved = normalizeLocale(locale ?? config.defaultLocale);
15
+ if (!isSupportedLocale(resolved, config)) throw new Error(`Unsupported SEO page locale "${resolved}". Supported locales: ${config.supportedLocales.join(", ")}.`);
16
+ return resolved;
17
+ };
18
+ const resolveSafeUrl = (value, config) => {
19
+ const resolved = require_config.resolveSeoUrl(value, config);
20
+ const url = new URL(resolved);
21
+ if (url.username || url.password) throw new Error(`SEO URLs must not contain credentials: "${value}".`);
22
+ return resolved;
23
+ };
24
+ const resolveTitle = (pageTitle, config) => {
25
+ const fallback = config.metadata?.title ?? config.defaults?.title ?? config.title?.default ?? config.identity?.name ?? "";
26
+ const title = pageTitle ?? fallback;
27
+ if (!title) return "";
28
+ if (!pageTitle || !config.title?.template) return title;
29
+ return config.title.template.replace("%s", pageTitle);
30
+ };
31
+ const resolveDescription = (pageDescription, config) => pageDescription ?? config.metadata?.description ?? config.defaults?.description ?? config.identity?.description;
32
+ const resolveSocialImage = (image, config) => {
33
+ if (image.width !== void 0 && (!Number.isInteger(image.width) || image.width <= 0)) throw new Error("SEO social image width must be a positive integer.");
34
+ if (image.height !== void 0 && (!Number.isInteger(image.height) || image.height <= 0)) throw new Error("SEO social image height must be a positive integer.");
35
+ return {
36
+ ...image,
37
+ url: resolveSafeUrl(image.url, config)
38
+ };
39
+ };
40
+ const resolveAlternates = (alternates, config) => {
41
+ if (!alternates?.length) return;
42
+ const seenLocales = /* @__PURE__ */ new Set();
43
+ return alternates.map((alternate) => {
44
+ const locale = alternate.locale === "x-default" ? "x-default" : normalizeLocale(alternate.locale);
45
+ if (locale !== "x-default" && !isSupportedLocale(locale, config)) throw new Error(`Unsupported hreflang locale "${locale}". Supported locales: ${config.supportedLocales.join(", ")}.`);
46
+ if (seenLocales.has(locale)) throw new Error(`Duplicate hreflang locale "${locale}".`);
47
+ seenLocales.add(locale);
48
+ return {
49
+ locale,
50
+ url: resolveSafeUrl(alternate.url, config)
51
+ };
52
+ });
53
+ };
54
+ const resolveSeoMetadata = (metadata = {}, config) => {
55
+ const locale = resolvePageLocale(metadata.locale, config);
56
+ const title = resolveTitle(metadata.title, config);
57
+ const description = resolveDescription(metadata.description, config);
58
+ const canonicalValue = metadata.canonical ?? config.metadata?.canonical ?? config.defaults?.canonical;
59
+ const canonical = canonicalValue ? resolveSafeUrl(canonicalValue, config) : void 0;
60
+ const alternates = resolveAlternates(metadata.alternates?.alternates, config);
61
+ const openGraphImages = metadata.openGraph?.images?.map((image) => resolveSocialImage(image, config));
62
+ const openGraph = {
63
+ ...metadata.openGraph,
64
+ title: metadata.openGraph?.title ?? title,
65
+ description: metadata.openGraph?.description ?? description,
66
+ type: metadata.openGraph?.type ?? "website",
67
+ url: metadata.openGraph?.url ? resolveSafeUrl(metadata.openGraph.url, config) : canonical ?? resolveSafeUrl(config.siteUrl, config),
68
+ siteName: metadata.openGraph?.siteName ?? config.identity?.name,
69
+ locale: metadata.openGraph?.locale ?? locale.replace("-", "_"),
70
+ images: openGraphImages
71
+ };
72
+ const twitterImages = metadata.twitter?.images ? metadata.twitter.images.map((image) => resolveSafeUrl(image, config)) : openGraphImages?.map((image) => image.url);
73
+ const twitter = {
74
+ ...metadata.twitter,
75
+ card: metadata.twitter?.card ?? "summary_large_image",
76
+ title: metadata.twitter?.title ?? title,
77
+ description: metadata.twitter?.description ?? description,
78
+ images: twitterImages,
79
+ imageAlt: metadata.twitter?.imageAlt ?? openGraphImages?.[0]?.alt
80
+ };
81
+ return {
82
+ ...metadata,
83
+ title,
84
+ description,
85
+ canonical,
86
+ locale,
87
+ alternates: alternates ? { alternates } : void 0,
88
+ openGraph,
89
+ twitter
90
+ };
91
+ };
92
+ const validatePreviewValue = (name, value) => {
93
+ if (!Number.isInteger(value) || value < -1) throw new Error(`SEO robots ${name} must be an integer greater than or equal to -1.`);
94
+ };
95
+ const resolveRobotsDirectives = (robots) => {
96
+ const directives = [robots.index === false ? "noindex" : "index", robots.follow === false ? "nofollow" : "follow"];
97
+ if (robots.noarchive) directives.push("noarchive");
98
+ if (robots.nosnippet) directives.push("nosnippet");
99
+ if (robots.maxSnippet !== void 0) {
100
+ validatePreviewValue("maxSnippet", robots.maxSnippet);
101
+ directives.push(`max-snippet:${robots.maxSnippet}`);
102
+ }
103
+ if (robots.maxImagePreview !== void 0 && ![
104
+ "none",
105
+ "standard",
106
+ "large"
107
+ ].includes(robots.maxImagePreview)) throw new Error(`Invalid SEO robots maxImagePreview: "${robots.maxImagePreview}".`);
108
+ if (robots.maxImagePreview) directives.push(`max-image-preview:${robots.maxImagePreview}`);
109
+ if (robots.maxVideoPreview !== void 0) {
110
+ validatePreviewValue("maxVideoPreview", robots.maxVideoPreview);
111
+ directives.push(`max-video-preview:${robots.maxVideoPreview}`);
112
+ }
113
+ return directives.join(", ");
114
+ };
115
+ const resolveSeoRobots = (metadata, config) => {
116
+ if (metadata.robots) return resolveRobotsDirectives(metadata.robots);
117
+ return config.metadata?.robots ?? config.defaults?.robots;
118
+ };
119
+ exports.resolveSeoMetadata = resolveSeoMetadata;
120
+ exports.resolveSeoRobots = resolveSeoRobots;
121
+
122
+ //# sourceMappingURL=resolve.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.cjs","names":["resolveSeoUrl"],"sources":["../../src/metadata/resolve.ts"],"sourcesContent":["import type { SeoLocale, SeoUrl } from \"../core/types\";\n\nimport { resolveSeoUrl } from \"../context/config\";\n\nimport type { SeoResolvedConfig } from \"../context/types\";\n\nimport type {\n ResolvedSeoMetadata,\n SeoAlternateLanguage,\n SeoPageMetadata,\n SeoRobotsMetadata,\n SeoSocialImage,\n} from \"./types\";\n\n// ---------------------------------------------------------------------------\n// Locale\n// ---------------------------------------------------------------------------\n\nconst normalizeLocale = (locale: string): SeoLocale => {\n try {\n const normalized = Intl.getCanonicalLocales(locale)[0];\n\n if (!normalized) {\n throw new Error();\n }\n\n return normalized as SeoLocale;\n } catch {\n throw new Error(`Invalid SEO page locale: \"${locale}\".`);\n }\n};\n\n// A regional variant (nl-NL) is supported when its base language (nl) is.\nconst isSupportedLocale = (\n locale: SeoLocale,\n config: SeoResolvedConfig,\n): boolean =>\n config.supportedLocales.includes(locale) ||\n config.supportedLocales.includes(locale.split(\"-\")[0] as SeoLocale);\n\nconst resolvePageLocale = (\n locale: string | undefined,\n config: SeoResolvedConfig,\n): SeoLocale => {\n const resolved = normalizeLocale(locale ?? config.defaultLocale);\n\n if (!isSupportedLocale(resolved, config)) {\n throw new Error(\n `Unsupported SEO page locale \"${resolved}\". ` +\n `Supported locales: ${config.supportedLocales.join(\", \")}.`,\n );\n }\n\n return resolved;\n};\n\n// ---------------------------------------------------------------------------\n// URL\n// ---------------------------------------------------------------------------\n\nconst resolveSafeUrl = (value: string, config: SeoResolvedConfig): SeoUrl => {\n const resolved = resolveSeoUrl(value, config);\n\n const url = new URL(resolved);\n\n if (url.username || url.password) {\n throw new Error(`SEO URLs must not contain credentials: \"${value}\".`);\n }\n\n return resolved;\n};\n\n// ---------------------------------------------------------------------------\n// Title\n// ---------------------------------------------------------------------------\n\nconst resolveTitle = (\n pageTitle: string | undefined,\n config: SeoResolvedConfig,\n): string => {\n const fallback =\n config.metadata?.title ??\n config.defaults?.title ??\n config.title?.default ??\n config.identity?.name ??\n \"\";\n\n const title = pageTitle ?? fallback;\n\n if (!title) {\n return \"\";\n }\n\n if (!pageTitle || !config.title?.template) {\n return title;\n }\n\n return config.title.template.replace(\"%s\", pageTitle);\n};\n\n// ---------------------------------------------------------------------------\n// Description\n// ---------------------------------------------------------------------------\n\nconst resolveDescription = (\n pageDescription: string | undefined,\n config: SeoResolvedConfig,\n): string | undefined =>\n pageDescription ??\n config.metadata?.description ??\n config.defaults?.description ??\n config.identity?.description;\n\n// ---------------------------------------------------------------------------\n// Social images\n// ---------------------------------------------------------------------------\n\nconst resolveSocialImage = (\n image: SeoSocialImage,\n config: SeoResolvedConfig,\n): SeoSocialImage => {\n if (\n image.width !== undefined &&\n (!Number.isInteger(image.width) || image.width <= 0)\n ) {\n throw new Error(\"SEO social image width must be a positive integer.\");\n }\n\n if (\n image.height !== undefined &&\n (!Number.isInteger(image.height) || image.height <= 0)\n ) {\n throw new Error(\"SEO social image height must be a positive integer.\");\n }\n\n return {\n ...image,\n url: resolveSafeUrl(image.url, config),\n };\n};\n\n// ---------------------------------------------------------------------------\n// Hreflang\n// ---------------------------------------------------------------------------\n\nconst resolveAlternates = (\n alternates: SeoAlternateLanguage[] | undefined,\n config: SeoResolvedConfig,\n): SeoAlternateLanguage[] | undefined => {\n if (!alternates?.length) {\n return undefined;\n }\n\n const seenLocales = new Set<string>();\n\n return alternates.map((alternate) => {\n const locale =\n alternate.locale === \"x-default\"\n ? \"x-default\"\n : normalizeLocale(alternate.locale);\n\n if (\n locale !== \"x-default\" &&\n !isSupportedLocale(locale as SeoLocale, config)\n ) {\n throw new Error(\n `Unsupported hreflang locale \"${locale}\". ` +\n `Supported locales: ${config.supportedLocales.join(\", \")}.`,\n );\n }\n\n if (seenLocales.has(locale)) {\n throw new Error(`Duplicate hreflang locale \"${locale}\".`);\n }\n\n seenLocales.add(locale);\n\n return {\n locale,\n url: resolveSafeUrl(alternate.url, config),\n };\n });\n};\n\n// ---------------------------------------------------------------------------\n// Metadata\n// ---------------------------------------------------------------------------\n\nexport const resolveSeoMetadata = (\n metadata: SeoPageMetadata = {},\n config: SeoResolvedConfig,\n): ResolvedSeoMetadata => {\n const locale = resolvePageLocale(metadata.locale, config);\n\n const title = resolveTitle(metadata.title, config);\n\n const description = resolveDescription(metadata.description, config);\n\n const canonicalValue =\n metadata.canonical ??\n config.metadata?.canonical ??\n config.defaults?.canonical;\n\n const canonical = canonicalValue\n ? resolveSafeUrl(canonicalValue, config)\n : undefined;\n\n const alternates = resolveAlternates(metadata.alternates?.alternates, config);\n\n const openGraphImages = metadata.openGraph?.images?.map((image) =>\n resolveSocialImage(image, config),\n );\n\n const openGraph = {\n ...metadata.openGraph,\n\n title: metadata.openGraph?.title ?? title,\n\n description: metadata.openGraph?.description ?? description,\n\n type: metadata.openGraph?.type ?? \"website\",\n\n // og:url is required by Open Graph; fall back to the site root when no page URL is known.\n url: metadata.openGraph?.url\n ? resolveSafeUrl(metadata.openGraph.url, config)\n : (canonical ?? resolveSafeUrl(config.siteUrl, config)),\n\n siteName: metadata.openGraph?.siteName ?? config.identity?.name,\n\n locale: metadata.openGraph?.locale ?? locale.replace(\"-\", \"_\"),\n\n images: openGraphImages,\n };\n\n const twitterImages = metadata.twitter?.images\n ? metadata.twitter.images.map((image) => resolveSafeUrl(image, config))\n : openGraphImages?.map((image) => image.url);\n\n const twitter = {\n ...metadata.twitter,\n\n card: metadata.twitter?.card ?? (\"summary_large_image\" as const),\n\n title: metadata.twitter?.title ?? title,\n\n description: metadata.twitter?.description ?? description,\n\n images: twitterImages,\n\n imageAlt: metadata.twitter?.imageAlt ?? openGraphImages?.[0]?.alt,\n };\n\n return {\n ...metadata,\n\n title,\n description,\n canonical,\n locale,\n\n alternates: alternates ? { alternates } : undefined,\n\n openGraph,\n twitter,\n };\n};\n\n// ---------------------------------------------------------------------------\n// Robots\n// ---------------------------------------------------------------------------\n\nconst validatePreviewValue = (name: string, value: number): void => {\n if (!Number.isInteger(value) || value < -1) {\n throw new Error(\n `SEO robots ${name} must be an integer greater than or equal to -1.`,\n );\n }\n};\n\nconst resolveRobotsDirectives = (robots: SeoRobotsMetadata): string => {\n const directives = [\n robots.index === false ? \"noindex\" : \"index\",\n robots.follow === false ? \"nofollow\" : \"follow\",\n ];\n\n if (robots.noarchive) {\n directives.push(\"noarchive\");\n }\n\n if (robots.nosnippet) {\n directives.push(\"nosnippet\");\n }\n\n if (robots.maxSnippet !== undefined) {\n validatePreviewValue(\"maxSnippet\", robots.maxSnippet);\n\n directives.push(`max-snippet:${robots.maxSnippet}`);\n }\n\n if (\n robots.maxImagePreview !== undefined &&\n ![\"none\", \"standard\", \"large\"].includes(robots.maxImagePreview)\n ) {\n throw new Error(\n `Invalid SEO robots maxImagePreview: \"${robots.maxImagePreview}\".`,\n );\n }\n\n if (robots.maxImagePreview) {\n directives.push(`max-image-preview:${robots.maxImagePreview}`);\n }\n\n if (robots.maxVideoPreview !== undefined) {\n validatePreviewValue(\"maxVideoPreview\", robots.maxVideoPreview);\n\n directives.push(`max-video-preview:${robots.maxVideoPreview}`);\n }\n\n return directives.join(\", \");\n};\n\nexport const resolveSeoRobots = (\n metadata: SeoPageMetadata,\n config: SeoResolvedConfig,\n): string | undefined => {\n if (metadata.robots) {\n return resolveRobotsDirectives(metadata.robots);\n }\n\n return config.metadata?.robots ?? config.defaults?.robots;\n};\n"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { SeoResolvedConfig } from "../context/types.cjs";
2
+ import { ResolvedSeoMetadata, SeoPageMetadata } from "./types.cjs";
3
+ export declare const resolveSeoMetadata: (metadata: SeoPageMetadata | undefined, config: SeoResolvedConfig) => ResolvedSeoMetadata;
4
+ export declare const resolveSeoRobots: (metadata: SeoPageMetadata, config: SeoResolvedConfig) => string | undefined;
@@ -0,0 +1,4 @@
1
+ import { SeoResolvedConfig } from "../context/types.js";
2
+ import { ResolvedSeoMetadata, SeoPageMetadata } from "./types.js";
3
+ export declare const resolveSeoMetadata: (metadata: SeoPageMetadata | undefined, config: SeoResolvedConfig) => ResolvedSeoMetadata;
4
+ export declare const resolveSeoRobots: (metadata: SeoPageMetadata, config: SeoResolvedConfig) => string | undefined;