@growth-labs/seo 0.1.3

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 (158) hide show
  1. package/README.md +80 -0
  2. package/dist/index.d.ts +8 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +162 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/middleware/seo.d.ts +5 -0
  7. package/dist/middleware/seo.d.ts.map +1 -0
  8. package/dist/middleware/seo.js +70 -0
  9. package/dist/middleware/seo.js.map +1 -0
  10. package/dist/options.d.ts +489 -0
  11. package/dist/options.d.ts.map +1 -0
  12. package/dist/options.js +118 -0
  13. package/dist/options.js.map +1 -0
  14. package/dist/routes/llms.d.ts +4 -0
  15. package/dist/routes/llms.d.ts.map +1 -0
  16. package/dist/routes/llms.js +11 -0
  17. package/dist/routes/llms.js.map +1 -0
  18. package/dist/routes/podcast-narration.d.ts +4 -0
  19. package/dist/routes/podcast-narration.d.ts.map +1 -0
  20. package/dist/routes/podcast-narration.js +36 -0
  21. package/dist/routes/podcast-narration.js.map +1 -0
  22. package/dist/routes/podcast.d.ts +4 -0
  23. package/dist/routes/podcast.d.ts.map +1 -0
  24. package/dist/routes/podcast.js +20 -0
  25. package/dist/routes/podcast.js.map +1 -0
  26. package/dist/routes/robots.d.ts +4 -0
  27. package/dist/routes/robots.d.ts.map +1 -0
  28. package/dist/routes/robots.js +11 -0
  29. package/dist/routes/robots.js.map +1 -0
  30. package/dist/routes/rss.d.ts +4 -0
  31. package/dist/routes/rss.d.ts.map +1 -0
  32. package/dist/routes/rss.js +19 -0
  33. package/dist/routes/rss.js.map +1 -0
  34. package/dist/routes/sitemap-articles.d.ts +4 -0
  35. package/dist/routes/sitemap-articles.d.ts.map +1 -0
  36. package/dist/routes/sitemap-articles.js +19 -0
  37. package/dist/routes/sitemap-articles.js.map +1 -0
  38. package/dist/routes/sitemap-index.d.ts +4 -0
  39. package/dist/routes/sitemap-index.d.ts.map +1 -0
  40. package/dist/routes/sitemap-index.js +77 -0
  41. package/dist/routes/sitemap-index.js.map +1 -0
  42. package/dist/routes/sitemap-pages.d.ts +4 -0
  43. package/dist/routes/sitemap-pages.d.ts.map +1 -0
  44. package/dist/routes/sitemap-pages.js +18 -0
  45. package/dist/routes/sitemap-pages.js.map +1 -0
  46. package/dist/routes/sitemap-products.d.ts +4 -0
  47. package/dist/routes/sitemap-products.d.ts.map +1 -0
  48. package/dist/routes/sitemap-products.js +18 -0
  49. package/dist/routes/sitemap-products.js.map +1 -0
  50. package/dist/routes/sitemap-videos.d.ts +4 -0
  51. package/dist/routes/sitemap-videos.d.ts.map +1 -0
  52. package/dist/routes/sitemap-videos.js +18 -0
  53. package/dist/routes/sitemap-videos.js.map +1 -0
  54. package/dist/state.d.ts +7 -0
  55. package/dist/state.d.ts.map +1 -0
  56. package/dist/state.js +18 -0
  57. package/dist/state.js.map +1 -0
  58. package/dist/types.d.ts +103 -0
  59. package/dist/types.d.ts.map +1 -0
  60. package/dist/types.js +2 -0
  61. package/dist/types.js.map +1 -0
  62. package/dist/utils/aeo.d.ts +16 -0
  63. package/dist/utils/aeo.d.ts.map +1 -0
  64. package/dist/utils/aeo.js +38 -0
  65. package/dist/utils/aeo.js.map +1 -0
  66. package/dist/utils/discover.d.ts +18 -0
  67. package/dist/utils/discover.d.ts.map +1 -0
  68. package/dist/utils/discover.js +41 -0
  69. package/dist/utils/discover.js.map +1 -0
  70. package/dist/utils/hreflang.d.ts +3 -0
  71. package/dist/utils/hreflang.d.ts.map +1 -0
  72. package/dist/utils/hreflang.js +20 -0
  73. package/dist/utils/hreflang.js.map +1 -0
  74. package/dist/utils/index.d.ts +12 -0
  75. package/dist/utils/index.d.ts.map +1 -0
  76. package/dist/utils/index.js +12 -0
  77. package/dist/utils/index.js.map +1 -0
  78. package/dist/utils/json-ld/article.d.ts +4 -0
  79. package/dist/utils/json-ld/article.d.ts.map +1 -0
  80. package/dist/utils/json-ld/article.js +66 -0
  81. package/dist/utils/json-ld/article.js.map +1 -0
  82. package/dist/utils/json-ld/audio.d.ts +7 -0
  83. package/dist/utils/json-ld/audio.d.ts.map +1 -0
  84. package/dist/utils/json-ld/audio.js +25 -0
  85. package/dist/utils/json-ld/audio.js.map +1 -0
  86. package/dist/utils/json-ld/breadcrumb.d.ts +7 -0
  87. package/dist/utils/json-ld/breadcrumb.d.ts.map +1 -0
  88. package/dist/utils/json-ld/breadcrumb.js +20 -0
  89. package/dist/utils/json-ld/breadcrumb.js.map +1 -0
  90. package/dist/utils/json-ld/faq.d.ts +6 -0
  91. package/dist/utils/json-ld/faq.d.ts.map +1 -0
  92. package/dist/utils/json-ld/faq.js +15 -0
  93. package/dist/utils/json-ld/faq.js.map +1 -0
  94. package/dist/utils/json-ld/howto.d.ts +7 -0
  95. package/dist/utils/json-ld/howto.d.ts.map +1 -0
  96. package/dist/utils/json-ld/howto.js +19 -0
  97. package/dist/utils/json-ld/howto.js.map +1 -0
  98. package/dist/utils/json-ld/index.d.ts +13 -0
  99. package/dist/utils/json-ld/index.d.ts.map +1 -0
  100. package/dist/utils/json-ld/index.js +12 -0
  101. package/dist/utils/json-ld/index.js.map +1 -0
  102. package/dist/utils/json-ld/item-list.d.ts +5 -0
  103. package/dist/utils/json-ld/item-list.d.ts.map +1 -0
  104. package/dist/utils/json-ld/item-list.js +20 -0
  105. package/dist/utils/json-ld/item-list.js.map +1 -0
  106. package/dist/utils/json-ld/organization.d.ts +4 -0
  107. package/dist/utils/json-ld/organization.d.ts.map +1 -0
  108. package/dist/utils/json-ld/organization.js +36 -0
  109. package/dist/utils/json-ld/organization.js.map +1 -0
  110. package/dist/utils/json-ld/person.d.ts +6 -0
  111. package/dist/utils/json-ld/person.d.ts.map +1 -0
  112. package/dist/utils/json-ld/person.js +23 -0
  113. package/dist/utils/json-ld/person.js.map +1 -0
  114. package/dist/utils/json-ld/product.d.ts +5 -0
  115. package/dist/utils/json-ld/product.d.ts.map +1 -0
  116. package/dist/utils/json-ld/product.js +112 -0
  117. package/dist/utils/json-ld/product.js.map +1 -0
  118. package/dist/utils/json-ld/video.d.ts +3 -0
  119. package/dist/utils/json-ld/video.d.ts.map +1 -0
  120. package/dist/utils/json-ld/video.js +20 -0
  121. package/dist/utils/json-ld/video.js.map +1 -0
  122. package/dist/utils/json-ld/website.d.ts +4 -0
  123. package/dist/utils/json-ld/website.d.ts.map +1 -0
  124. package/dist/utils/json-ld/website.js +22 -0
  125. package/dist/utils/json-ld/website.js.map +1 -0
  126. package/dist/utils/llms.d.ts +7 -0
  127. package/dist/utils/llms.d.ts.map +1 -0
  128. package/dist/utils/llms.js +38 -0
  129. package/dist/utils/llms.js.map +1 -0
  130. package/dist/utils/meta.d.ts +7 -0
  131. package/dist/utils/meta.d.ts.map +1 -0
  132. package/dist/utils/meta.js +122 -0
  133. package/dist/utils/meta.js.map +1 -0
  134. package/dist/utils/podcast.d.ts +8 -0
  135. package/dist/utils/podcast.d.ts.map +1 -0
  136. package/dist/utils/podcast.js +94 -0
  137. package/dist/utils/podcast.js.map +1 -0
  138. package/dist/utils/robots.d.ts +3 -0
  139. package/dist/utils/robots.d.ts.map +1 -0
  140. package/dist/utils/robots.js +28 -0
  141. package/dist/utils/robots.js.map +1 -0
  142. package/dist/utils/rss.d.ts +4 -0
  143. package/dist/utils/rss.d.ts.map +1 -0
  144. package/dist/utils/rss.js +53 -0
  145. package/dist/utils/rss.js.map +1 -0
  146. package/dist/utils/sitemap.d.ts +13 -0
  147. package/dist/utils/sitemap.d.ts.map +1 -0
  148. package/dist/utils/sitemap.js +133 -0
  149. package/dist/utils/sitemap.js.map +1 -0
  150. package/dist/utils/validation.d.ts +18 -0
  151. package/dist/utils/validation.d.ts.map +1 -0
  152. package/dist/utils/validation.js +141 -0
  153. package/dist/utils/validation.js.map +1 -0
  154. package/dist/vite-plugin.d.ts +4 -0
  155. package/dist/vite-plugin.d.ts.map +1 -0
  156. package/dist/vite-plugin.js +22 -0
  157. package/dist/vite-plugin.js.map +1 -0
  158. package/package.json +59 -0
@@ -0,0 +1,489 @@
1
+ import { z } from 'zod';
2
+ import type { ContentProvider } from './types.js';
3
+ export declare const seoOptionsSchema: z.ZodObject<{
4
+ site: z.ZodString;
5
+ organization: z.ZodObject<{
6
+ name: z.ZodString;
7
+ url: z.ZodOptional<z.ZodString>;
8
+ logo: z.ZodString;
9
+ sameAs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ name: string;
12
+ logo: string;
13
+ url?: string | undefined;
14
+ sameAs?: string[] | undefined;
15
+ }, {
16
+ name: string;
17
+ logo: string;
18
+ url?: string | undefined;
19
+ sameAs?: string[] | undefined;
20
+ }>;
21
+ schemaType: z.ZodDefault<z.ZodEnum<["Article", "NewsArticle", "BlogPosting"]>>;
22
+ googleNews: z.ZodDefault<z.ZodBoolean>;
23
+ aeoTwins: z.ZodDefault<z.ZodBoolean>;
24
+ llmsTxt: z.ZodDefault<z.ZodBoolean>;
25
+ rss: z.ZodDefault<z.ZodBoolean>;
26
+ locales: z.ZodOptional<z.ZodArray<z.ZodObject<{
27
+ lang: z.ZodString;
28
+ region: z.ZodOptional<z.ZodString>;
29
+ urlPrefix: z.ZodString;
30
+ domain: z.ZodOptional<z.ZodString>;
31
+ }, "strip", z.ZodTypeAny, {
32
+ lang: string;
33
+ urlPrefix: string;
34
+ region?: string | undefined;
35
+ domain?: string | undefined;
36
+ }, {
37
+ lang: string;
38
+ urlPrefix: string;
39
+ region?: string | undefined;
40
+ domain?: string | undefined;
41
+ }>, "many">>;
42
+ defaultLocale: z.ZodOptional<z.ZodString>;
43
+ podcast: z.ZodOptional<z.ZodObject<{
44
+ enabled: z.ZodDefault<z.ZodBoolean>;
45
+ title: z.ZodString;
46
+ description: z.ZodString;
47
+ author: z.ZodString;
48
+ email: z.ZodString;
49
+ image: z.ZodString;
50
+ category: z.ZodString;
51
+ subcategory: z.ZodOptional<z.ZodString>;
52
+ language: z.ZodDefault<z.ZodString>;
53
+ explicit: z.ZodDefault<z.ZodBoolean>;
54
+ feedPath: z.ZodDefault<z.ZodString>;
55
+ type: z.ZodDefault<z.ZodEnum<["episodic", "serial"]>>;
56
+ copyright: z.ZodOptional<z.ZodString>;
57
+ }, "strip", z.ZodTypeAny, {
58
+ type: "episodic" | "serial";
59
+ enabled: boolean;
60
+ title: string;
61
+ description: string;
62
+ author: string;
63
+ email: string;
64
+ image: string;
65
+ category: string;
66
+ language: string;
67
+ explicit: boolean;
68
+ feedPath: string;
69
+ subcategory?: string | undefined;
70
+ copyright?: string | undefined;
71
+ }, {
72
+ title: string;
73
+ description: string;
74
+ author: string;
75
+ email: string;
76
+ image: string;
77
+ category: string;
78
+ type?: "episodic" | "serial" | undefined;
79
+ enabled?: boolean | undefined;
80
+ subcategory?: string | undefined;
81
+ language?: string | undefined;
82
+ explicit?: boolean | undefined;
83
+ feedPath?: string | undefined;
84
+ copyright?: string | undefined;
85
+ }>>;
86
+ commerce: z.ZodOptional<z.ZodObject<{
87
+ enabled: z.ZodDefault<z.ZodBoolean>;
88
+ returnPolicy: z.ZodOptional<z.ZodObject<{
89
+ applicableCountry: z.ZodString;
90
+ returnPolicyCategory: z.ZodEnum<["MerchantReturnFiniteReturnWindow", "MerchantReturnNotPermitted", "MerchantReturnUnlimitedWindow"]>;
91
+ merchantReturnDays: z.ZodOptional<z.ZodNumber>;
92
+ returnMethod: z.ZodOptional<z.ZodEnum<["ReturnByMail", "ReturnInStore", "ReturnAtKiosk"]>>;
93
+ returnFees: z.ZodOptional<z.ZodEnum<["FreeReturn", "ReturnFeesCustomerResponsibility"]>>;
94
+ }, "strip", z.ZodTypeAny, {
95
+ applicableCountry: string;
96
+ returnPolicyCategory: "MerchantReturnFiniteReturnWindow" | "MerchantReturnNotPermitted" | "MerchantReturnUnlimitedWindow";
97
+ merchantReturnDays?: number | undefined;
98
+ returnMethod?: "ReturnByMail" | "ReturnInStore" | "ReturnAtKiosk" | undefined;
99
+ returnFees?: "FreeReturn" | "ReturnFeesCustomerResponsibility" | undefined;
100
+ }, {
101
+ applicableCountry: string;
102
+ returnPolicyCategory: "MerchantReturnFiniteReturnWindow" | "MerchantReturnNotPermitted" | "MerchantReturnUnlimitedWindow";
103
+ merchantReturnDays?: number | undefined;
104
+ returnMethod?: "ReturnByMail" | "ReturnInStore" | "ReturnAtKiosk" | undefined;
105
+ returnFees?: "FreeReturn" | "ReturnFeesCustomerResponsibility" | undefined;
106
+ }>>;
107
+ currency: z.ZodDefault<z.ZodString>;
108
+ }, "strip", z.ZodTypeAny, {
109
+ enabled: boolean;
110
+ currency: string;
111
+ returnPolicy?: {
112
+ applicableCountry: string;
113
+ returnPolicyCategory: "MerchantReturnFiniteReturnWindow" | "MerchantReturnNotPermitted" | "MerchantReturnUnlimitedWindow";
114
+ merchantReturnDays?: number | undefined;
115
+ returnMethod?: "ReturnByMail" | "ReturnInStore" | "ReturnAtKiosk" | undefined;
116
+ returnFees?: "FreeReturn" | "ReturnFeesCustomerResponsibility" | undefined;
117
+ } | undefined;
118
+ }, {
119
+ enabled?: boolean | undefined;
120
+ returnPolicy?: {
121
+ applicableCountry: string;
122
+ returnPolicyCategory: "MerchantReturnFiniteReturnWindow" | "MerchantReturnNotPermitted" | "MerchantReturnUnlimitedWindow";
123
+ merchantReturnDays?: number | undefined;
124
+ returnMethod?: "ReturnByMail" | "ReturnInStore" | "ReturnAtKiosk" | undefined;
125
+ returnFees?: "FreeReturn" | "ReturnFeesCustomerResponsibility" | undefined;
126
+ } | undefined;
127
+ currency?: string | undefined;
128
+ }>>;
129
+ audioNarration: z.ZodOptional<z.ZodObject<{
130
+ enabled: z.ZodDefault<z.ZodBoolean>;
131
+ speakableSelectors: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
132
+ narratorName: z.ZodOptional<z.ZodString>;
133
+ asPodcastFeed: z.ZodDefault<z.ZodBoolean>;
134
+ podcastFeedPath: z.ZodDefault<z.ZodString>;
135
+ }, "strip", z.ZodTypeAny, {
136
+ enabled: boolean;
137
+ speakableSelectors: string[];
138
+ asPodcastFeed: boolean;
139
+ podcastFeedPath: string;
140
+ narratorName?: string | undefined;
141
+ }, {
142
+ enabled?: boolean | undefined;
143
+ speakableSelectors?: string[] | undefined;
144
+ narratorName?: string | undefined;
145
+ asPodcastFeed?: boolean | undefined;
146
+ podcastFeedPath?: string | undefined;
147
+ }>>;
148
+ trailingSlash: z.ZodDefault<z.ZodEnum<["always", "never", "ignore"]>>;
149
+ contentSignal: z.ZodDefault<z.ZodObject<{
150
+ aiTrain: z.ZodDefault<z.ZodEnum<["yes", "no"]>>;
151
+ search: z.ZodDefault<z.ZodEnum<["yes", "no"]>>;
152
+ aiInput: z.ZodDefault<z.ZodEnum<["yes", "no"]>>;
153
+ }, "strip", z.ZodTypeAny, {
154
+ aiTrain: "yes" | "no";
155
+ search: "yes" | "no";
156
+ aiInput: "yes" | "no";
157
+ }, {
158
+ aiTrain?: "yes" | "no" | undefined;
159
+ search?: "yes" | "no" | undefined;
160
+ aiInput?: "yes" | "no" | undefined;
161
+ }>>;
162
+ validation: z.ZodDefault<z.ZodObject<{
163
+ heroMinWidth: z.ZodDefault<z.ZodNumber>;
164
+ titleMaxLength: z.ZodDefault<z.ZodNumber>;
165
+ descriptionMaxLength: z.ZodDefault<z.ZodNumber>;
166
+ enabled: z.ZodDefault<z.ZodBoolean>;
167
+ }, "strip", z.ZodTypeAny, {
168
+ enabled: boolean;
169
+ heroMinWidth: number;
170
+ titleMaxLength: number;
171
+ descriptionMaxLength: number;
172
+ }, {
173
+ enabled?: boolean | undefined;
174
+ heroMinWidth?: number | undefined;
175
+ titleMaxLength?: number | undefined;
176
+ descriptionMaxLength?: number | undefined;
177
+ }>>;
178
+ robots: z.ZodDefault<z.ZodObject<{
179
+ additionalRules: z.ZodOptional<z.ZodArray<z.ZodObject<{
180
+ userAgent: z.ZodString;
181
+ allow: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
182
+ disallow: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
183
+ }, "strip", z.ZodTypeAny, {
184
+ userAgent: string;
185
+ allow?: string[] | undefined;
186
+ disallow?: string[] | undefined;
187
+ }, {
188
+ userAgent: string;
189
+ allow?: string[] | undefined;
190
+ disallow?: string[] | undefined;
191
+ }>, "many">>;
192
+ }, "strip", z.ZodTypeAny, {
193
+ additionalRules?: {
194
+ userAgent: string;
195
+ allow?: string[] | undefined;
196
+ disallow?: string[] | undefined;
197
+ }[] | undefined;
198
+ }, {
199
+ additionalRules?: {
200
+ userAgent: string;
201
+ allow?: string[] | undefined;
202
+ disallow?: string[] | undefined;
203
+ }[] | undefined;
204
+ }>>;
205
+ defaults: z.ZodDefault<z.ZodObject<{
206
+ titleSuffix: z.ZodOptional<z.ZodString>;
207
+ defaultImage: z.ZodOptional<z.ZodString>;
208
+ twitterSite: z.ZodOptional<z.ZodString>;
209
+ twitterCardType: z.ZodDefault<z.ZodEnum<["summary", "summary_large_image"]>>;
210
+ locale: z.ZodDefault<z.ZodString>;
211
+ }, "strip", z.ZodTypeAny, {
212
+ twitterCardType: "summary" | "summary_large_image";
213
+ locale: string;
214
+ titleSuffix?: string | undefined;
215
+ defaultImage?: string | undefined;
216
+ twitterSite?: string | undefined;
217
+ }, {
218
+ titleSuffix?: string | undefined;
219
+ defaultImage?: string | undefined;
220
+ twitterSite?: string | undefined;
221
+ twitterCardType?: "summary" | "summary_large_image" | undefined;
222
+ locale?: string | undefined;
223
+ }>>;
224
+ contentProvider: z.ZodOptional<z.ZodType<ContentProvider, z.ZodTypeDef, ContentProvider>>;
225
+ llmsContent: z.ZodOptional<z.ZodObject<{
226
+ description: z.ZodString;
227
+ sections: z.ZodArray<z.ZodObject<{
228
+ heading: z.ZodString;
229
+ links: z.ZodArray<z.ZodObject<{
230
+ title: z.ZodString;
231
+ url: z.ZodString;
232
+ description: z.ZodString;
233
+ }, "strip", z.ZodTypeAny, {
234
+ title: string;
235
+ description: string;
236
+ url: string;
237
+ }, {
238
+ title: string;
239
+ description: string;
240
+ url: string;
241
+ }>, "many">;
242
+ }, "strip", z.ZodTypeAny, {
243
+ heading: string;
244
+ links: {
245
+ title: string;
246
+ description: string;
247
+ url: string;
248
+ }[];
249
+ }, {
250
+ heading: string;
251
+ links: {
252
+ title: string;
253
+ description: string;
254
+ url: string;
255
+ }[];
256
+ }>, "many">;
257
+ optionalLinks: z.ZodOptional<z.ZodArray<z.ZodObject<{
258
+ title: z.ZodString;
259
+ url: z.ZodString;
260
+ }, "strip", z.ZodTypeAny, {
261
+ title: string;
262
+ url: string;
263
+ }, {
264
+ title: string;
265
+ url: string;
266
+ }>, "many">>;
267
+ }, "strip", z.ZodTypeAny, {
268
+ description: string;
269
+ sections: {
270
+ heading: string;
271
+ links: {
272
+ title: string;
273
+ description: string;
274
+ url: string;
275
+ }[];
276
+ }[];
277
+ optionalLinks?: {
278
+ title: string;
279
+ url: string;
280
+ }[] | undefined;
281
+ }, {
282
+ description: string;
283
+ sections: {
284
+ heading: string;
285
+ links: {
286
+ title: string;
287
+ description: string;
288
+ url: string;
289
+ }[];
290
+ }[];
291
+ optionalLinks?: {
292
+ title: string;
293
+ url: string;
294
+ }[] | undefined;
295
+ }>>;
296
+ }, "strip", z.ZodTypeAny, {
297
+ validation: {
298
+ enabled: boolean;
299
+ heroMinWidth: number;
300
+ titleMaxLength: number;
301
+ descriptionMaxLength: number;
302
+ };
303
+ site: string;
304
+ organization: {
305
+ name: string;
306
+ logo: string;
307
+ url?: string | undefined;
308
+ sameAs?: string[] | undefined;
309
+ };
310
+ schemaType: "Article" | "NewsArticle" | "BlogPosting";
311
+ googleNews: boolean;
312
+ aeoTwins: boolean;
313
+ llmsTxt: boolean;
314
+ rss: boolean;
315
+ trailingSlash: "never" | "always" | "ignore";
316
+ contentSignal: {
317
+ aiTrain: "yes" | "no";
318
+ search: "yes" | "no";
319
+ aiInput: "yes" | "no";
320
+ };
321
+ robots: {
322
+ additionalRules?: {
323
+ userAgent: string;
324
+ allow?: string[] | undefined;
325
+ disallow?: string[] | undefined;
326
+ }[] | undefined;
327
+ };
328
+ defaults: {
329
+ twitterCardType: "summary" | "summary_large_image";
330
+ locale: string;
331
+ titleSuffix?: string | undefined;
332
+ defaultImage?: string | undefined;
333
+ twitterSite?: string | undefined;
334
+ };
335
+ locales?: {
336
+ lang: string;
337
+ urlPrefix: string;
338
+ region?: string | undefined;
339
+ domain?: string | undefined;
340
+ }[] | undefined;
341
+ defaultLocale?: string | undefined;
342
+ podcast?: {
343
+ type: "episodic" | "serial";
344
+ enabled: boolean;
345
+ title: string;
346
+ description: string;
347
+ author: string;
348
+ email: string;
349
+ image: string;
350
+ category: string;
351
+ language: string;
352
+ explicit: boolean;
353
+ feedPath: string;
354
+ subcategory?: string | undefined;
355
+ copyright?: string | undefined;
356
+ } | undefined;
357
+ commerce?: {
358
+ enabled: boolean;
359
+ currency: string;
360
+ returnPolicy?: {
361
+ applicableCountry: string;
362
+ returnPolicyCategory: "MerchantReturnFiniteReturnWindow" | "MerchantReturnNotPermitted" | "MerchantReturnUnlimitedWindow";
363
+ merchantReturnDays?: number | undefined;
364
+ returnMethod?: "ReturnByMail" | "ReturnInStore" | "ReturnAtKiosk" | undefined;
365
+ returnFees?: "FreeReturn" | "ReturnFeesCustomerResponsibility" | undefined;
366
+ } | undefined;
367
+ } | undefined;
368
+ audioNarration?: {
369
+ enabled: boolean;
370
+ speakableSelectors: string[];
371
+ asPodcastFeed: boolean;
372
+ podcastFeedPath: string;
373
+ narratorName?: string | undefined;
374
+ } | undefined;
375
+ contentProvider?: ContentProvider | undefined;
376
+ llmsContent?: {
377
+ description: string;
378
+ sections: {
379
+ heading: string;
380
+ links: {
381
+ title: string;
382
+ description: string;
383
+ url: string;
384
+ }[];
385
+ }[];
386
+ optionalLinks?: {
387
+ title: string;
388
+ url: string;
389
+ }[] | undefined;
390
+ } | undefined;
391
+ }, {
392
+ site: string;
393
+ organization: {
394
+ name: string;
395
+ logo: string;
396
+ url?: string | undefined;
397
+ sameAs?: string[] | undefined;
398
+ };
399
+ validation?: {
400
+ enabled?: boolean | undefined;
401
+ heroMinWidth?: number | undefined;
402
+ titleMaxLength?: number | undefined;
403
+ descriptionMaxLength?: number | undefined;
404
+ } | undefined;
405
+ schemaType?: "Article" | "NewsArticle" | "BlogPosting" | undefined;
406
+ googleNews?: boolean | undefined;
407
+ aeoTwins?: boolean | undefined;
408
+ llmsTxt?: boolean | undefined;
409
+ rss?: boolean | undefined;
410
+ locales?: {
411
+ lang: string;
412
+ urlPrefix: string;
413
+ region?: string | undefined;
414
+ domain?: string | undefined;
415
+ }[] | undefined;
416
+ defaultLocale?: string | undefined;
417
+ podcast?: {
418
+ title: string;
419
+ description: string;
420
+ author: string;
421
+ email: string;
422
+ image: string;
423
+ category: string;
424
+ type?: "episodic" | "serial" | undefined;
425
+ enabled?: boolean | undefined;
426
+ subcategory?: string | undefined;
427
+ language?: string | undefined;
428
+ explicit?: boolean | undefined;
429
+ feedPath?: string | undefined;
430
+ copyright?: string | undefined;
431
+ } | undefined;
432
+ commerce?: {
433
+ enabled?: boolean | undefined;
434
+ returnPolicy?: {
435
+ applicableCountry: string;
436
+ returnPolicyCategory: "MerchantReturnFiniteReturnWindow" | "MerchantReturnNotPermitted" | "MerchantReturnUnlimitedWindow";
437
+ merchantReturnDays?: number | undefined;
438
+ returnMethod?: "ReturnByMail" | "ReturnInStore" | "ReturnAtKiosk" | undefined;
439
+ returnFees?: "FreeReturn" | "ReturnFeesCustomerResponsibility" | undefined;
440
+ } | undefined;
441
+ currency?: string | undefined;
442
+ } | undefined;
443
+ audioNarration?: {
444
+ enabled?: boolean | undefined;
445
+ speakableSelectors?: string[] | undefined;
446
+ narratorName?: string | undefined;
447
+ asPodcastFeed?: boolean | undefined;
448
+ podcastFeedPath?: string | undefined;
449
+ } | undefined;
450
+ trailingSlash?: "never" | "always" | "ignore" | undefined;
451
+ contentSignal?: {
452
+ aiTrain?: "yes" | "no" | undefined;
453
+ search?: "yes" | "no" | undefined;
454
+ aiInput?: "yes" | "no" | undefined;
455
+ } | undefined;
456
+ robots?: {
457
+ additionalRules?: {
458
+ userAgent: string;
459
+ allow?: string[] | undefined;
460
+ disallow?: string[] | undefined;
461
+ }[] | undefined;
462
+ } | undefined;
463
+ defaults?: {
464
+ titleSuffix?: string | undefined;
465
+ defaultImage?: string | undefined;
466
+ twitterSite?: string | undefined;
467
+ twitterCardType?: "summary" | "summary_large_image" | undefined;
468
+ locale?: string | undefined;
469
+ } | undefined;
470
+ contentProvider?: ContentProvider | undefined;
471
+ llmsContent?: {
472
+ description: string;
473
+ sections: {
474
+ heading: string;
475
+ links: {
476
+ title: string;
477
+ description: string;
478
+ url: string;
479
+ }[];
480
+ }[];
481
+ optionalLinks?: {
482
+ title: string;
483
+ url: string;
484
+ }[] | undefined;
485
+ } | undefined;
486
+ }>;
487
+ export type SeoOptions = z.input<typeof seoOptionsSchema>;
488
+ export type ResolvedSeoOptions = z.output<typeof seoOptionsSchema>;
489
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AA2CjD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmF3B,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AACzD,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gBAAgB,CAAC,CAAA"}
@@ -0,0 +1,118 @@
1
+ import { z } from 'zod';
2
+ const localeSchema = z.object({
3
+ lang: z.string(),
4
+ region: z.string().optional(),
5
+ urlPrefix: z.string(),
6
+ domain: z.string().optional(),
7
+ });
8
+ const podcastSchema = z.object({
9
+ enabled: z.boolean().default(false),
10
+ title: z.string(),
11
+ description: z.string(),
12
+ author: z.string(),
13
+ email: z.string().email(),
14
+ image: z.string().url(),
15
+ category: z.string(),
16
+ subcategory: z.string().optional(),
17
+ language: z.string().default('en'),
18
+ explicit: z.boolean().default(false),
19
+ feedPath: z.string().default('/podcast.xml'),
20
+ type: z.enum(['episodic', 'serial']).default('episodic'),
21
+ copyright: z.string().optional(),
22
+ });
23
+ const commerceSchema = z.object({
24
+ enabled: z.boolean().default(false),
25
+ returnPolicy: z
26
+ .object({
27
+ applicableCountry: z.string(),
28
+ returnPolicyCategory: z.enum([
29
+ 'MerchantReturnFiniteReturnWindow',
30
+ 'MerchantReturnNotPermitted',
31
+ 'MerchantReturnUnlimitedWindow',
32
+ ]),
33
+ merchantReturnDays: z.number().optional(),
34
+ returnMethod: z.enum(['ReturnByMail', 'ReturnInStore', 'ReturnAtKiosk']).optional(),
35
+ returnFees: z.enum(['FreeReturn', 'ReturnFeesCustomerResponsibility']).optional(),
36
+ })
37
+ .optional(),
38
+ currency: z.string().default('USD'),
39
+ });
40
+ export const seoOptionsSchema = z.object({
41
+ site: z.string().url(),
42
+ organization: z.object({
43
+ name: z.string(),
44
+ url: z.string().url().optional(),
45
+ logo: z.string().url(),
46
+ sameAs: z.array(z.string().url()).optional(),
47
+ }),
48
+ schemaType: z.enum(['Article', 'NewsArticle', 'BlogPosting']).default('Article'),
49
+ googleNews: z.boolean().default(false),
50
+ aeoTwins: z.boolean().default(false),
51
+ llmsTxt: z.boolean().default(false),
52
+ rss: z.boolean().default(false),
53
+ locales: z.array(localeSchema).optional(),
54
+ defaultLocale: z.string().optional(),
55
+ podcast: podcastSchema.optional(),
56
+ commerce: commerceSchema.optional(),
57
+ audioNarration: z
58
+ .object({
59
+ enabled: z.boolean().default(false),
60
+ speakableSelectors: z.array(z.string()).default(['.article-headline', '.article-body']),
61
+ narratorName: z.string().optional(),
62
+ asPodcastFeed: z.boolean().default(false),
63
+ podcastFeedPath: z.string().default('/listen.xml'),
64
+ })
65
+ .optional(),
66
+ trailingSlash: z.enum(['always', 'never', 'ignore']).default('never'),
67
+ contentSignal: z
68
+ .object({
69
+ aiTrain: z.enum(['yes', 'no']).default('no'),
70
+ search: z.enum(['yes', 'no']).default('yes'),
71
+ aiInput: z.enum(['yes', 'no']).default('yes'),
72
+ })
73
+ .default({}),
74
+ validation: z
75
+ .object({
76
+ heroMinWidth: z.number().default(1200),
77
+ titleMaxLength: z.number().default(110),
78
+ descriptionMaxLength: z.number().default(160),
79
+ enabled: z.boolean().default(true),
80
+ })
81
+ .default({}),
82
+ robots: z
83
+ .object({
84
+ additionalRules: z
85
+ .array(z.object({
86
+ userAgent: z.string(),
87
+ allow: z.array(z.string()).optional(),
88
+ disallow: z.array(z.string()).optional(),
89
+ }))
90
+ .optional(),
91
+ })
92
+ .default({}),
93
+ defaults: z
94
+ .object({
95
+ titleSuffix: z.string().optional(),
96
+ defaultImage: z.string().url().optional(),
97
+ twitterSite: z.string().optional(),
98
+ twitterCardType: z.enum(['summary', 'summary_large_image']).default('summary_large_image'),
99
+ locale: z.string().default('en_US'),
100
+ })
101
+ .default({}),
102
+ contentProvider: z.custom().optional(),
103
+ llmsContent: z
104
+ .object({
105
+ description: z.string(),
106
+ sections: z.array(z.object({
107
+ heading: z.string(),
108
+ links: z.array(z.object({
109
+ title: z.string(),
110
+ url: z.string(),
111
+ description: z.string(),
112
+ })),
113
+ })),
114
+ optionalLinks: z.array(z.object({ title: z.string(), url: z.string() })).optional(),
115
+ })
116
+ .optional(),
117
+ });
118
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { APIRoute } from 'astro';
2
+ export declare const prerender = false;
3
+ export declare const GET: APIRoute;
4
+ //# sourceMappingURL=llms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llms.d.ts","sourceRoot":"","sources":["../../src/routes/llms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAIrC,eAAO,MAAM,SAAS,QAAQ,CAAA;AAE9B,eAAO,MAAM,GAAG,EAAE,QAOjB,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { getConfig } from '../state.js';
2
+ import { generateLlmsTxt } from '../utils/llms.js';
3
+ export const prerender = false;
4
+ export const GET = async () => {
5
+ const config = getConfig();
6
+ const txt = generateLlmsTxt(config);
7
+ return new Response(txt, {
8
+ headers: { 'Content-Type': 'text/plain; charset=utf-8' },
9
+ });
10
+ };
11
+ //# sourceMappingURL=llms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llms.js","sourceRoot":"","sources":["../../src/routes/llms.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAA;AAE9B,MAAM,CAAC,MAAM,GAAG,GAAa,KAAK,IAAI,EAAE;IACvC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IAEnC,OAAO,IAAI,QAAQ,CAAC,GAAG,EAAE;QACxB,OAAO,EAAE,EAAE,cAAc,EAAE,2BAA2B,EAAE;KACxD,CAAC,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { APIRoute } from 'astro';
2
+ export declare const prerender = false;
3
+ export declare const GET: APIRoute;
4
+ //# sourceMappingURL=podcast-narration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"podcast-narration.d.ts","sourceRoot":"","sources":["../../src/routes/podcast-narration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAKrC,eAAO,MAAM,SAAS,QAAQ,CAAA;AAE9B,eAAO,MAAM,GAAG,EAAE,QAmCjB,CAAA"}