@rimelight/seo 0.0.4 → 0.0.6

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 (46) hide show
  1. package/dist/index.d.mts +8 -38
  2. package/dist/index.mjs +8 -175
  3. package/dist/integration.d.mts +6 -0
  4. package/dist/integration.mjs +101 -0
  5. package/dist/llms-BVLxzjr-.d.mts +41 -0
  6. package/dist/llms.d.mts +2 -0
  7. package/dist/llms.mjs +75 -0
  8. package/dist/meta.d.mts +42 -0
  9. package/dist/meta.mjs +66 -0
  10. package/dist/og.d.mts +117 -0
  11. package/dist/og.mjs +302 -0
  12. package/dist/robots.d.mts +3 -4
  13. package/dist/routes/llms-full.txt.d.mts +5 -0
  14. package/dist/routes/llms-full.txt.mjs +57 -0
  15. package/dist/routes/llms.txt.d.mts +5 -0
  16. package/dist/routes/llms.txt.mjs +68 -0
  17. package/dist/routes/robots.txt.d.mts +4 -0
  18. package/dist/routes/robots.txt.mjs +46 -0
  19. package/dist/routes/rss.xml.d.mts +4 -0
  20. package/dist/routes/rss.xml.mjs +51 -0
  21. package/dist/routes/sitemap.xml.d.mts +4 -0
  22. package/dist/routes/sitemap.xml.mjs +27 -0
  23. package/dist/rss.d.mts +8 -0
  24. package/dist/rss.mjs +44 -0
  25. package/dist/schema-C8v69blQ.d.mts +28 -0
  26. package/dist/schema.d.mts +2 -0
  27. package/dist/schema.mjs +52 -0
  28. package/dist/sitemap.d.mts +6 -7
  29. package/dist/types.d.mts +354 -2
  30. package/package.json +24 -5
  31. package/src/components/SEOHead.astro +65 -18
  32. package/src/env.d.ts +33 -3
  33. package/src/index.ts +19 -1
  34. package/src/integration.ts +172 -0
  35. package/src/meta.test.ts +25 -1
  36. package/src/meta.ts +32 -2
  37. package/src/og.ts +444 -0
  38. package/src/routes/llms-full.txt.ts +77 -0
  39. package/src/routes/llms.txt.ts +90 -0
  40. package/src/routes/robots.txt.ts +63 -0
  41. package/src/routes/rss.xml.ts +87 -0
  42. package/src/routes/sitemap.xml.ts +43 -0
  43. package/src/rss.test.ts +28 -0
  44. package/src/rss.ts +63 -0
  45. package/src/types.ts +367 -242
  46. package/dist/types-e7gqYZwc.d.mts +0 -305
@@ -0,0 +1,27 @@
1
+ import { buildSitemapUrls, buildSitemapXml } from "../sitemap.mjs";
2
+ import * as siteConfigMod from "virtual:rimelight-seo/site-config";
3
+ import seoOptions from "virtual:rimelight-seo/options";
4
+ import * as seoConfig from "virtual:rimelight-seo/config";
5
+ //#region src/routes/sitemap.xml.ts
6
+ const GET = async ({ site, url }) => {
7
+ const sitemapOpts = typeof seoOptions?.sitemap === "object" ? seoOptions.sitemap : {};
8
+ const siteUrl = site ? site.toString() : siteConfigMod.siteConfig?.url || url.origin;
9
+ let entries = [];
10
+ if (typeof sitemapOpts.entries === "function") entries = await sitemapOpts.entries();
11
+ else if (typeof seoConfig.seoEntries === "function") entries = await seoConfig.seoEntries();
12
+ const locales = sitemapOpts.locales || seoConfig.SEO_LOCALES || (siteUrl ? {
13
+ site: siteUrl.replace(/\/$/, ""),
14
+ locales: { en: "en-US" },
15
+ defaultLocale: "en",
16
+ trailingSlash: "never"
17
+ } : void 0);
18
+ let urls = sitemapOpts.urls || [];
19
+ if (urls.length === 0 && entries.length > 0 && locales) urls = buildSitemapUrls(entries, locales);
20
+ const xml = buildSitemapXml(urls);
21
+ return new Response(xml, { headers: {
22
+ "Content-Type": "application/xml; charset=utf-8",
23
+ "Cache-Control": "public, max-age=3600, stale-while-revalidate=86400"
24
+ } });
25
+ };
26
+ //#endregion
27
+ export { GET };
package/dist/rss.d.mts ADDED
@@ -0,0 +1,8 @@
1
+ import { RssFeedOptions } from "./types.mjs";
2
+ //#region src/rss.d.ts
3
+ export declare function escapeXml(str: string): string;
4
+ /**
5
+ * Builds standard RSS 2.0 feed XML document with Atom namespace link.
6
+ */
7
+ export declare function buildRssXml(options: RssFeedOptions): string;
8
+ //#endregion
package/dist/rss.mjs ADDED
@@ -0,0 +1,44 @@
1
+ //#region src/rss.ts
2
+ function escapeXml(str) {
3
+ return str.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;");
4
+ }
5
+ /**
6
+ * Builds standard RSS 2.0 feed XML document with Atom namespace link.
7
+ */
8
+ function buildRssXml(options) {
9
+ const siteUrl = (options.site || "").replace(/\/$/, "");
10
+ const feedUrl = options.feedUrl || `${siteUrl}/rss.xml`;
11
+ const language = options.language || "en-US";
12
+ const lastBuildDate = (/* @__PURE__ */ new Date()).toUTCString();
13
+ const itemXmls = (options.items || []).map((item) => {
14
+ const itemLink = item.link.startsWith("http://") || item.link.startsWith("https://") ? item.link : `${siteUrl}${item.link.startsWith("/") ? "" : "/"}${item.link}`;
15
+ const pubDate = new Date(item.pubDate).toUTCString();
16
+ const guid = item.guid || itemLink;
17
+ const lines = [
18
+ " <item>",
19
+ ` <title>${escapeXml(item.title)}</title>`,
20
+ ` <link>${escapeXml(itemLink)}</link>`,
21
+ ` <guid isPermaLink="${guid.startsWith("http") ? "true" : "false"}">${escapeXml(guid)}</guid>`,
22
+ ` <pubDate>${pubDate}</pubDate>`
23
+ ];
24
+ if (item.description) lines.push(` <description>${escapeXml(item.description)}</description>`);
25
+ if (item.author) lines.push(` <author>${escapeXml(item.author)}</author>`);
26
+ if (item.content) lines.push(` <content:encoded><![CDATA[${item.content}]]></content:encoded>`);
27
+ lines.push(" </item>");
28
+ return lines.join("\n");
29
+ });
30
+ return `<?xml version="1.0" encoding="UTF-8"?>
31
+ <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
32
+ <channel>
33
+ <title>${escapeXml(options.title || "")}</title>
34
+ <description>${escapeXml(options.description || "")}</description>
35
+ <link>${escapeXml(siteUrl)}</link>
36
+ <language>${escapeXml(language)}</language>
37
+ <lastBuildDate>${lastBuildDate}</lastBuildDate>
38
+ <atom:link href="${escapeXml(feedUrl)}" rel="self" type="application/rss+xml"/>
39
+ ${itemXmls.join("\n")}
40
+ </channel>
41
+ </rss>`;
42
+ }
43
+ //#endregion
44
+ export { buildRssXml, escapeXml };
@@ -0,0 +1,28 @@
1
+ //#region src/schema.d.ts
2
+ interface ArticleSchemaOptions {
3
+ type?: "TechArticle" | "Article" | "BlogPosting";
4
+ title: string;
5
+ description?: string;
6
+ url: string;
7
+ datePublished?: string | Date;
8
+ dateModified?: string | Date;
9
+ authorName?: string;
10
+ authorUrl?: string;
11
+ image?: string;
12
+ publisherName?: string;
13
+ publisherLogo?: string;
14
+ }
15
+ interface BreadcrumbItem {
16
+ name: string;
17
+ url: string;
18
+ }
19
+ /**
20
+ * Builds Schema.org Article / TechArticle / BlogPosting JSON-LD.
21
+ */
22
+ declare function buildArticleSchema(options: ArticleSchemaOptions): Record<string, any>;
23
+ /**
24
+ * Builds Schema.org BreadcrumbList JSON-LD.
25
+ */
26
+ declare function buildBreadcrumbSchema(items: BreadcrumbItem[]): Record<string, any>;
27
+ //#endregion
28
+ export { buildBreadcrumbSchema as i, BreadcrumbItem as n, buildArticleSchema as r, ArticleSchemaOptions as t };
@@ -0,0 +1,2 @@
1
+ import { i as buildBreadcrumbSchema, n as BreadcrumbItem, r as buildArticleSchema, t as ArticleSchemaOptions } from "./schema-C8v69blQ.mjs";
2
+ export { ArticleSchemaOptions, BreadcrumbItem, buildArticleSchema, buildBreadcrumbSchema };
@@ -0,0 +1,52 @@
1
+ //#region src/schema.ts
2
+ /**
3
+ * Builds Schema.org Article / TechArticle / BlogPosting JSON-LD.
4
+ */
5
+ function buildArticleSchema(options) {
6
+ const { type = "TechArticle", title, description, url, datePublished, dateModified, authorName, authorUrl, image, publisherName = "Rimelight Entertainment", publisherLogo } = options;
7
+ const schema = {
8
+ "@context": "https://schema.org",
9
+ "@type": type,
10
+ "headline": title,
11
+ "mainEntityOfPage": {
12
+ "@type": "WebPage",
13
+ "@id": url
14
+ }
15
+ };
16
+ if (description) schema["description"] = description;
17
+ if (image) schema["image"] = image;
18
+ if (datePublished) schema["datePublished"] = datePublished instanceof Date ? datePublished.toISOString() : datePublished;
19
+ if (dateModified) schema["dateModified"] = dateModified instanceof Date ? dateModified.toISOString() : dateModified;
20
+ else if (datePublished) schema["dateModified"] = schema["datePublished"];
21
+ if (authorName) schema["author"] = {
22
+ "@type": "Person",
23
+ "name": authorName,
24
+ ...authorUrl ? { url: authorUrl } : {}
25
+ };
26
+ if (publisherName) schema["publisher"] = {
27
+ "@type": "Organization",
28
+ "name": publisherName,
29
+ ...publisherLogo ? { logo: {
30
+ "@type": "ImageObject",
31
+ "url": publisherLogo
32
+ } } : {}
33
+ };
34
+ return schema;
35
+ }
36
+ /**
37
+ * Builds Schema.org BreadcrumbList JSON-LD.
38
+ */
39
+ function buildBreadcrumbSchema(items) {
40
+ return {
41
+ "@context": "https://schema.org",
42
+ "@type": "BreadcrumbList",
43
+ "itemListElement": items.map((item, index) => ({
44
+ "@type": "ListItem",
45
+ "position": index + 1,
46
+ "name": item.name,
47
+ "item": item.url
48
+ }))
49
+ };
50
+ }
51
+ //#endregion
52
+ export { buildArticleSchema, buildBreadcrumbSchema };
@@ -1,20 +1,19 @@
1
- import { r as LocaleConfig, s as SeoEntry, u as SitemapUrl } from "./types-e7gqYZwc.mjs";
1
+ import { LocaleConfig, SeoEntry, SitemapUrl } from "./types.mjs";
2
2
  //#region src/sitemap.d.ts
3
3
  /**
4
4
  * Build fully-resolved sitemap URLs from entries and locale config
5
5
  */
6
- declare function buildSitemapUrls(entries: SeoEntry[], config: LocaleConfig): SitemapUrl[];
6
+ export declare function buildSitemapUrls(entries: SeoEntry[], config: LocaleConfig): SitemapUrl[];
7
7
  /**
8
8
  * Build sitemap XML from resolved URLs
9
9
  */
10
- declare function buildSitemapXml(urls: SitemapUrl[]): string;
10
+ export declare function buildSitemapXml(urls: SitemapUrl[]): string;
11
11
  /**
12
12
  * Build sitemap index XML from sitemap URLs
13
13
  */
14
- declare function buildSitemapIndexXml(sitemapUrls: string[]): string;
14
+ export declare function buildSitemapIndexXml(sitemapUrls: string[]): string;
15
15
  /**
16
16
  * Chunk sitemap URLs into multiple sitemaps (max 50k URLs per sitemap)
17
17
  */
18
- declare function chunkSitemapUrls(urls: SitemapUrl[], limit?: number): SitemapUrl[][];
19
- //#endregion
20
- export { buildSitemapIndexXml, buildSitemapUrls, buildSitemapXml, chunkSitemapUrls };
18
+ export declare function chunkSitemapUrls(urls: SitemapUrl[], limit?: number): SitemapUrl[][];
19
+ //#endregion
package/dist/types.d.mts CHANGED
@@ -1,2 +1,354 @@
1
- import { _ as ArticleSchemaOptions, a as RSSFeed, c as SiteConfig, d as UserAgentRule, f as LlmsFullTxtOptions, i as OGImage, l as SitemapAlternate, m as LlmsTxtOptions, n as HeadProps, o as RobotsOptions, p as LlmsPage, r as LocaleConfig, s as SeoEntry, t as ChangeFreq, u as SitemapUrl, v as BreadcrumbItem } from "./types-e7gqYZwc.mjs";
2
- export { type ArticleSchemaOptions, type BreadcrumbItem, ChangeFreq, HeadProps, type LlmsFullTxtOptions, type LlmsPage, type LlmsTxtOptions, LocaleConfig, OGImage, RSSFeed, RobotsOptions, SeoEntry, SiteConfig, SitemapAlternate, SitemapUrl, UserAgentRule };
1
+ import { n as BreadcrumbItem, t as ArticleSchemaOptions } from "./schema-C8v69blQ.mjs";
2
+ import { n as LlmsPage, r as LlmsTxtOptions$1, t as LlmsFullTxtOptions$1 } from "./llms-BVLxzjr-.mjs";
3
+ //#region src/types.d.ts
4
+ /**
5
+ * Change frequency for sitemap entries
6
+ */
7
+ export type ChangeFreq = "always" | "hourly" | "daily" | "weekly" | "monthly" | "yearly" | "never";
8
+ /**
9
+ * SEO entry — a single page to include in sitemaps
10
+ */
11
+ export interface SeoEntry {
12
+ /**
13
+ * Locale-less path, e.g. "/company/blog/hello". Leading slash required.
14
+ */
15
+ path: string;
16
+ lastmod?: Date;
17
+ changefreq?: ChangeFreq;
18
+ priority?: number;
19
+ /**
20
+ * Restrict to a subset of locales; defaults to all configured locales.
21
+ */
22
+ locales?: readonly string[];
23
+ }
24
+ /**
25
+ * Locale configuration for SEO builders
26
+ */
27
+ export interface LocaleConfig {
28
+ /**
29
+ * Absolute origin, e.g. "https://rimelight.com"
30
+ */
31
+ site: string;
32
+ /**
33
+ * Map of locale segment -> hreflang, e.g. { en: "en-US", pt: "pt-BR" }
34
+ */
35
+ locales: Record<string, string>;
36
+ defaultLocale: string;
37
+ /**
38
+ * Emit the default locale without a prefix. Default: false.
39
+ */
40
+ prefixDefaultLocale?: boolean;
41
+ trailingSlash?: "always" | "never";
42
+ }
43
+ /**
44
+ * Fully resolved sitemap URL with alternates
45
+ */
46
+ export interface SitemapUrl {
47
+ loc: string;
48
+ lastmod?: string;
49
+ changefreq?: ChangeFreq;
50
+ priority?: number;
51
+ alternates?: SitemapAlternate[];
52
+ }
53
+ /**
54
+ * Language alternate for a sitemap URL
55
+ */
56
+ export interface SitemapAlternate {
57
+ hreflang: string;
58
+ href: string;
59
+ }
60
+ /**
61
+ * Options for robots.txt generation
62
+ */
63
+ export interface RobotsOptions {
64
+ /**
65
+ * The sitemap URL to reference
66
+ */
67
+ sitemapUrl: string;
68
+ /**
69
+ * Paths to disallow for all user agents
70
+ */
71
+ disallow?: string[];
72
+ /**
73
+ * Paths to allow for all user agents
74
+ */
75
+ allow?: string[];
76
+ /**
77
+ * User-agent specific rules
78
+ */
79
+ userAgentRules?: UserAgentRule[];
80
+ }
81
+ /**
82
+ * User-agent specific robots.txt rule
83
+ */
84
+ export interface UserAgentRule {
85
+ userAgent: string;
86
+ disallow?: string[];
87
+ allow?: string[];
88
+ }
89
+ export interface OpenGraphMeta {
90
+ type?: string;
91
+ locale?: string;
92
+ url?: string;
93
+ title?: string;
94
+ description?: string;
95
+ images?: OGImage[] | OGImage;
96
+ siteName?: string;
97
+ [key: string]: unknown;
98
+ }
99
+ export interface TwitterMeta {
100
+ card?: "summary" | "summary_large_image" | "player" | "app";
101
+ site?: string;
102
+ creator?: string;
103
+ title?: string;
104
+ description?: string;
105
+ images?: OGImage[] | OGImage | string;
106
+ [key: string]: unknown;
107
+ }
108
+ /**
109
+ * Site identity and SEO defaults shared across all Rimelight Astro sites. The UI-specific overrides
110
+ * (component themes, shortcuts, etc.) live in UIConfig (packages/ui) and are passed directly to the
111
+ * ui() integration.
112
+ */
113
+ export interface SiteConfig {
114
+ id: string;
115
+ name: string;
116
+ description: string;
117
+ url: string;
118
+ ogImage: string;
119
+ author: string;
120
+ email: string;
121
+ branding: {
122
+ logo: {
123
+ alt: string;
124
+ };
125
+ favicon: {
126
+ svg: string;
127
+ };
128
+ colors: {
129
+ themeColor: string;
130
+ backgroundColor: string;
131
+ };
132
+ };
133
+ seo: {
134
+ titleTemplate: string;
135
+ ogImageFallback: string;
136
+ maxDescriptionLength: number;
137
+ authorHandle?: string;
138
+ };
139
+ openGraph?: OpenGraphMeta;
140
+ twitter?: TwitterMeta;
141
+ }
142
+ /**
143
+ * Open Graph image with alt text
144
+ */
145
+ export interface OGImage {
146
+ /**
147
+ * Image URL (relative or absolute)
148
+ */
149
+ src: string;
150
+ /**
151
+ * Alt text for the image
152
+ */
153
+ alt: string;
154
+ }
155
+ /**
156
+ * RSS feed link configuration
157
+ */
158
+ export interface RSSFeed {
159
+ /**
160
+ * RSS feed URL
161
+ */
162
+ href: string;
163
+ /**
164
+ * Feed title (defaults to "RSS")
165
+ */
166
+ title?: string;
167
+ }
168
+ /**
169
+ * Props for the RLAHead Astro component. Defined here so consumers can construct head props without
170
+ * importing @rimelight/ui.
171
+ */
172
+ export interface HeadProps {
173
+ /**
174
+ * Page title
175
+ */
176
+ title?: string;
177
+ /**
178
+ * Page description
179
+ */
180
+ description?: string;
181
+ /**
182
+ * Open Graph image with alt text
183
+ */
184
+ ogImage?: OGImage;
185
+ /**
186
+ * Open Graph type (e.g., "website", "article")
187
+ */
188
+ ogType?: string;
189
+ /**
190
+ * Open Graph locale (defaults to "en_US")
191
+ */
192
+ ogLocale?: string;
193
+ /**
194
+ * Whether to prevent indexing
195
+ */
196
+ noindex?: boolean;
197
+ /**
198
+ * Whether this is a 404 page
199
+ */
200
+ is404?: boolean;
201
+ /**
202
+ * Robots metadata (overrides noindex/is404 logic if provided)
203
+ */
204
+ robots?: string;
205
+ /**
206
+ * Canonical URL
207
+ */
208
+ canonical?: string;
209
+ /**
210
+ * Language alternates for i18n
211
+ */
212
+ languageAlternates?: Array<{
213
+ hreflang: string;
214
+ href: string;
215
+ }>;
216
+ /**
217
+ * Custom favicon SVG or image path (overrides config.branding.favicon.svg)
218
+ */
219
+ favicon?: string;
220
+ /**
221
+ * Site configuration for defaults
222
+ */
223
+ config?: SiteConfig;
224
+ /**
225
+ * Whether to enable View Transitions (ClientRouter)
226
+ */
227
+ transitions?: boolean;
228
+ /**
229
+ * Meta charset
230
+ */
231
+ charset?: string;
232
+ /**
233
+ * Meta viewport
234
+ */
235
+ viewport?: string;
236
+ /**
237
+ * RSS feed configuration
238
+ */
239
+ rssFeed?: RSSFeed;
240
+ /**
241
+ * Article or BlogPosting JSON-LD configuration
242
+ */
243
+ articleSchema?: ArticleSchemaOptions;
244
+ /**
245
+ * Breadcrumb list for JSON-LD structured data
246
+ */
247
+ breadcrumbs?: BreadcrumbItem[];
248
+ /**
249
+ * URL for this page's raw Markdown alternate twin
250
+ */
251
+ markdownUrl?: string;
252
+ /**
253
+ * Version alternates for multi-version documentation
254
+ */
255
+ versionAlternates?: Array<{
256
+ version: string;
257
+ href: string;
258
+ }>;
259
+ /**
260
+ * Whether the title should bypass site title template
261
+ */
262
+ absolute?: boolean;
263
+ /**
264
+ * Twitter card type
265
+ */
266
+ twitterCard?: "summary" | "summary_large_image" | "player" | "app";
267
+ /**
268
+ * Open Graph metadata overrides
269
+ */
270
+ openGraph?: OpenGraphMeta;
271
+ /**
272
+ * Twitter metadata overrides
273
+ */
274
+ twitter?: TwitterMeta;
275
+ }
276
+ export interface RssItem {
277
+ title: string;
278
+ link: string;
279
+ pubDate: Date | string | number;
280
+ description?: string;
281
+ content?: string;
282
+ guid?: string;
283
+ author?: string;
284
+ }
285
+ export interface RssFeedOptions {
286
+ title: string;
287
+ description: string;
288
+ site: string;
289
+ feedUrl?: string;
290
+ language?: string;
291
+ items: RssItem[];
292
+ }
293
+ export interface RssOptions extends Partial<RssFeedOptions> {
294
+ /**
295
+ * Custom RSS route pattern (default: "/rss.xml")
296
+ */
297
+ path?: string;
298
+ /**
299
+ * Custom items loader
300
+ */
301
+ items?: RssItem[];
302
+ }
303
+ export interface SitemapOptions {
304
+ /**
305
+ * Sitemap route pattern (default: "/sitemap.xml")
306
+ */
307
+ path?: string;
308
+ urls?: SitemapUrl[];
309
+ entries?: () => Promise<SeoEntry[]> | SeoEntry[];
310
+ locales?: LocaleConfig;
311
+ [key: string]: unknown;
312
+ }
313
+ export interface RobotsRouteOptions extends Partial<RobotsOptions> {
314
+ /**
315
+ * Route pattern (default: "/robots.txt")
316
+ */
317
+ path?: string;
318
+ }
319
+ export interface LlmsRouteOptions extends Partial<LlmsTxtOptions> {
320
+ /**
321
+ * Route pattern (default: "/llms.txt")
322
+ */
323
+ path?: string;
324
+ }
325
+ export interface LlmsFullRouteOptions extends Partial<LlmsFullTxtOptions> {
326
+ /**
327
+ * Route pattern (default: "/llms-full.txt")
328
+ */
329
+ path?: string;
330
+ }
331
+ export interface RimelightSeoOptions {
332
+ /**
333
+ * Sitemap configuration or false to disable automatic /sitemap.xml (default: true)
334
+ */
335
+ sitemap?: boolean | SitemapOptions;
336
+ /**
337
+ * Robots.txt configuration or false to disable automatic /robots.txt (default: true)
338
+ */
339
+ robots?: boolean | RobotsRouteOptions;
340
+ /**
341
+ * RSS feed configuration or false to disable automatic /rss.xml (default: true)
342
+ */
343
+ rss?: boolean | RssOptions;
344
+ /**
345
+ * LLMs.txt configuration or false to disable automatic /llms.txt (default: true)
346
+ */
347
+ llms?: boolean | LlmsRouteOptions;
348
+ /**
349
+ * LLMs-full.txt configuration or false to disable automatic /llms-full.txt (default: true)
350
+ */
351
+ llmsFull?: boolean | LlmsFullRouteOptions;
352
+ }
353
+ //#endregion
354
+ export type { ArticleSchemaOptions, BreadcrumbItem, LlmsFullTxtOptions$1 as LlmsFullTxtOptions, LlmsPage, LlmsTxtOptions$1 as LlmsTxtOptions };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rimelight/seo",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "private": false,
5
5
  "description": "Rimelight Entertainment's SEO Package",
6
6
  "homepage": "https://rimelight.com/docs",
@@ -37,22 +37,41 @@
37
37
  "types": "./dist/robots.d.mts",
38
38
  "import": "./dist/robots.mjs"
39
39
  },
40
+ "./integration": {
41
+ "types": "./dist/integration.d.mts",
42
+ "import": "./dist/integration.mjs"
43
+ },
44
+ "./rss": {
45
+ "types": "./dist/rss.d.mts",
46
+ "import": "./dist/rss.mjs"
47
+ },
48
+ "./og": {
49
+ "types": "./dist/og.d.mts",
50
+ "import": "./dist/og.mjs"
51
+ },
40
52
  "./components/*": "./src/components/*",
53
+ "./routes/*": "./src/routes/*",
41
54
  "./*": "./src/*"
42
55
  },
43
56
  "publishConfig": {
44
57
  "access": "public"
45
58
  },
46
59
  "devDependencies": {
47
- "@rimelight/config": "0.0.5",
48
- "astro": "7.3.1",
60
+ "@rimelight/config": "0.0.8",
61
+ "astro": "7.3.2",
49
62
  "typescript": "6.0.3"
50
63
  },
51
64
  "peerDependencies": {
52
- "astro": ">=7.0.0"
65
+ "astro": ">=7.0.0",
66
+ "takumi-js": ">=2.0.0"
67
+ },
68
+ "peerDependenciesMeta": {
69
+ "takumi-js": {
70
+ "optional": true
71
+ }
53
72
  },
54
73
  "engines": {
55
- "node": ">=26.7.0"
74
+ "node": ">=26.8.2"
56
75
  },
57
76
  "scripts": {
58
77
  "build": "vp pack",