geo-semantic-layer 2.0.1
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.
- package/CHANGELOG.md +289 -0
- package/LICENSE +21 -0
- package/README.md +394 -0
- package/dist/config-BcP2K8Tq.d.ts +150 -0
- package/dist/event-BG0_yYK4.d.ts +2231 -0
- package/dist/generators/index.d.ts +723 -0
- package/dist/generators/index.js +969 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/geo/index.d.ts +38 -0
- package/dist/geo/index.js +107 -0
- package/dist/geo/index.js.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.js +1000 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas/index.d.ts +97 -0
- package/dist/schemas/index.js +402 -0
- package/dist/schemas/index.js.map +1 -0
- package/package.json +97 -0
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
// src/core/schemas/organization.ts
|
|
4
|
+
var PostalAddressSchema = z.object({
|
|
5
|
+
"@type": z.literal("PostalAddress").default("PostalAddress"),
|
|
6
|
+
streetAddress: z.string().optional(),
|
|
7
|
+
addressLocality: z.string().optional(),
|
|
8
|
+
addressRegion: z.string().optional(),
|
|
9
|
+
postalCode: z.string().optional(),
|
|
10
|
+
addressCountry: z.string().length(2).optional()
|
|
11
|
+
// ISO 3166-1 alpha-2
|
|
12
|
+
});
|
|
13
|
+
var ContactPointSchema = z.object({
|
|
14
|
+
"@type": z.literal("ContactPoint").default("ContactPoint"),
|
|
15
|
+
telephone: z.string().optional(),
|
|
16
|
+
email: z.string().email().optional(),
|
|
17
|
+
contactType: z.enum(["customer service", "technical support", "sales", "billing"]).optional(),
|
|
18
|
+
areaServed: z.string().optional(),
|
|
19
|
+
availableLanguage: z.array(z.string()).optional()
|
|
20
|
+
});
|
|
21
|
+
var OrganizationSchema = z.object({
|
|
22
|
+
"@context": z.literal("https://schema.org").default("https://schema.org"),
|
|
23
|
+
"@type": z.literal("Organization").default("Organization"),
|
|
24
|
+
// Required fields
|
|
25
|
+
name: z.string().min(1, "Organization name is required"),
|
|
26
|
+
url: z.string().url("Must be a valid URL"),
|
|
27
|
+
// Recommended fields
|
|
28
|
+
logo: z.string().url("Logo must be a valid URL").optional(),
|
|
29
|
+
image: z.string().url("Image must be a valid URL").optional(),
|
|
30
|
+
description: z.string().min(10, "Description should be at least 10 characters").optional(),
|
|
31
|
+
/**
|
|
32
|
+
* CRITICAL for GEO: Entity disambiguation
|
|
33
|
+
* Should include at least one social profile or authority ID (Wikidata, Wikipedia, etc.)
|
|
34
|
+
*/
|
|
35
|
+
sameAs: z.array(z.string().url()).min(1, "At least one sameAs URL is required for entity disambiguation").describe("Social profiles, Wikidata ID, Wikipedia URL for entity disambiguation"),
|
|
36
|
+
// Contact information
|
|
37
|
+
email: z.string().email().optional(),
|
|
38
|
+
telephone: z.string().optional(),
|
|
39
|
+
address: PostalAddressSchema.optional(),
|
|
40
|
+
contactPoint: z.union([ContactPointSchema, z.array(ContactPointSchema)]).optional(),
|
|
41
|
+
// Additional information
|
|
42
|
+
alternateName: z.string().optional(),
|
|
43
|
+
foundingDate: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Must be in YYYY-MM-DD format").optional(),
|
|
44
|
+
founder: z.array(z.string()).optional(),
|
|
45
|
+
// Relationships
|
|
46
|
+
parentOrganization: z.string().optional(),
|
|
47
|
+
subOrganization: z.array(z.string()).optional()
|
|
48
|
+
});
|
|
49
|
+
var PersonSchema = z.object({
|
|
50
|
+
"@context": z.literal("https://schema.org").default("https://schema.org"),
|
|
51
|
+
"@type": z.literal("Person").default("Person"),
|
|
52
|
+
// Required fields
|
|
53
|
+
name: z.string().min(1, "Person name is required"),
|
|
54
|
+
url: z.string().url("Must be a valid URL").optional(),
|
|
55
|
+
// Recommended fields
|
|
56
|
+
image: z.string().url("Image must be a valid URL").optional(),
|
|
57
|
+
description: z.string().min(10, "Description should be at least 10 characters").optional(),
|
|
58
|
+
/**
|
|
59
|
+
* CRITICAL for GEO: Entity disambiguation
|
|
60
|
+
* Should include social profiles, Wikidata ID, Wikipedia URL, etc.
|
|
61
|
+
*/
|
|
62
|
+
sameAs: z.array(z.string().url()).min(1, "At least one sameAs URL is required for entity disambiguation").describe("Social profiles, Wikidata ID, Wikipedia URL for entity disambiguation"),
|
|
63
|
+
// Contact information
|
|
64
|
+
email: z.string().email().optional(),
|
|
65
|
+
telephone: z.string().optional(),
|
|
66
|
+
address: PostalAddressSchema.optional(),
|
|
67
|
+
// Professional information
|
|
68
|
+
jobTitle: z.string().optional(),
|
|
69
|
+
worksFor: z.object({
|
|
70
|
+
"@type": z.literal("Organization"),
|
|
71
|
+
name: z.string(),
|
|
72
|
+
url: z.string().url().optional()
|
|
73
|
+
}).optional(),
|
|
74
|
+
// Additional information
|
|
75
|
+
alternateName: z.string().optional(),
|
|
76
|
+
birthDate: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Must be in YYYY-MM-DD format").optional(),
|
|
77
|
+
nationality: z.string().optional(),
|
|
78
|
+
// Relationships
|
|
79
|
+
colleague: z.array(z.string()).optional(),
|
|
80
|
+
alumniOf: z.string().optional()
|
|
81
|
+
});
|
|
82
|
+
var OfferSchema = z.object({
|
|
83
|
+
"@type": z.literal("Offer").default("Offer"),
|
|
84
|
+
price: z.union([z.string(), z.number()]),
|
|
85
|
+
priceCurrency: z.string().length(3),
|
|
86
|
+
// ISO 4217 currency code
|
|
87
|
+
availability: z.string().url().optional().describe("e.g., https://schema.org/InStock"),
|
|
88
|
+
url: z.string().url().optional(),
|
|
89
|
+
priceValidUntil: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional(),
|
|
90
|
+
seller: z.object({
|
|
91
|
+
"@type": z.literal("Organization"),
|
|
92
|
+
name: z.string()
|
|
93
|
+
}).optional()
|
|
94
|
+
});
|
|
95
|
+
var AggregateRatingSchema = z.object({
|
|
96
|
+
"@type": z.literal("AggregateRating").default("AggregateRating"),
|
|
97
|
+
ratingValue: z.union([z.string(), z.number()]),
|
|
98
|
+
reviewCount: z.number().int().positive(),
|
|
99
|
+
bestRating: z.union([z.string(), z.number()]).optional().default(5),
|
|
100
|
+
worstRating: z.union([z.string(), z.number()]).optional().default(1)
|
|
101
|
+
});
|
|
102
|
+
var ReviewSchema = z.object({
|
|
103
|
+
"@type": z.literal("Review").default("Review"),
|
|
104
|
+
author: z.object({
|
|
105
|
+
"@type": z.literal("Person"),
|
|
106
|
+
name: z.string()
|
|
107
|
+
}),
|
|
108
|
+
datePublished: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
|
|
109
|
+
reviewBody: z.string().min(10),
|
|
110
|
+
reviewRating: z.object({
|
|
111
|
+
"@type": z.literal("Rating"),
|
|
112
|
+
ratingValue: z.union([z.string(), z.number()]),
|
|
113
|
+
bestRating: z.union([z.string(), z.number()]).optional().default(5)
|
|
114
|
+
})
|
|
115
|
+
});
|
|
116
|
+
var ProductSchema = z.object({
|
|
117
|
+
"@context": z.literal("https://schema.org").default("https://schema.org"),
|
|
118
|
+
"@type": z.literal("Product").default("Product"),
|
|
119
|
+
// Required fields
|
|
120
|
+
name: z.string().min(1, "Product name is required"),
|
|
121
|
+
// Recommended fields
|
|
122
|
+
image: z.union([z.string().url(), z.array(z.string().url())]).optional(),
|
|
123
|
+
description: z.string().min(10, "Description should be at least 10 characters").optional(),
|
|
124
|
+
// SKU or other identifiers
|
|
125
|
+
sku: z.string().optional(),
|
|
126
|
+
gtin: z.string().optional(),
|
|
127
|
+
gtin8: z.string().optional(),
|
|
128
|
+
gtin12: z.string().optional(),
|
|
129
|
+
gtin13: z.string().optional(),
|
|
130
|
+
gtin14: z.string().optional(),
|
|
131
|
+
mpn: z.string().optional(),
|
|
132
|
+
// Brand
|
|
133
|
+
brand: z.object({
|
|
134
|
+
"@type": z.literal("Brand"),
|
|
135
|
+
name: z.string()
|
|
136
|
+
}).optional(),
|
|
137
|
+
// Offers (pricing)
|
|
138
|
+
offers: z.union([OfferSchema, z.array(OfferSchema)]).optional(),
|
|
139
|
+
// Ratings and Reviews
|
|
140
|
+
aggregateRating: AggregateRatingSchema.optional(),
|
|
141
|
+
review: z.union([ReviewSchema, z.array(ReviewSchema)]).optional(),
|
|
142
|
+
// Additional information
|
|
143
|
+
category: z.string().optional(),
|
|
144
|
+
color: z.union([z.string(), z.array(z.string())]).optional(),
|
|
145
|
+
material: z.string().optional(),
|
|
146
|
+
manufacturer: z.object({
|
|
147
|
+
"@type": z.literal("Organization"),
|
|
148
|
+
name: z.string()
|
|
149
|
+
}).optional()
|
|
150
|
+
});
|
|
151
|
+
var ArticleSchema = z.object({
|
|
152
|
+
"@context": z.literal("https://schema.org").default("https://schema.org"),
|
|
153
|
+
"@type": z.enum(["Article", "NewsArticle", "BlogPosting", "TechArticle"]).default("Article"),
|
|
154
|
+
// Required fields
|
|
155
|
+
headline: z.string().min(1).max(110, "Headline should be less than 110 characters for optimal SEO"),
|
|
156
|
+
image: z.union([z.string().url(), z.array(z.string().url())]),
|
|
157
|
+
// Recommended fields
|
|
158
|
+
author: z.union([
|
|
159
|
+
z.object({
|
|
160
|
+
"@type": z.enum(["Person", "Organization"]),
|
|
161
|
+
name: z.string(),
|
|
162
|
+
url: z.string().url().optional()
|
|
163
|
+
}),
|
|
164
|
+
z.array(
|
|
165
|
+
z.object({
|
|
166
|
+
"@type": z.enum(["Person", "Organization"]),
|
|
167
|
+
name: z.string(),
|
|
168
|
+
url: z.string().url().optional()
|
|
169
|
+
})
|
|
170
|
+
)
|
|
171
|
+
]).describe("Author(s) of the article"),
|
|
172
|
+
datePublished: z.string().regex(/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}Z)?$/, "Must be ISO 8601 format"),
|
|
173
|
+
dateModified: z.string().regex(/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}Z)?$/, "Must be ISO 8601 format").optional(),
|
|
174
|
+
// Publisher (recommended for Google News)
|
|
175
|
+
publisher: z.object({
|
|
176
|
+
"@type": z.literal("Organization"),
|
|
177
|
+
name: z.string(),
|
|
178
|
+
logo: z.object({
|
|
179
|
+
"@type": z.literal("ImageObject"),
|
|
180
|
+
url: z.string().url(),
|
|
181
|
+
width: z.number().optional(),
|
|
182
|
+
height: z.number().optional()
|
|
183
|
+
}).optional()
|
|
184
|
+
}).optional(),
|
|
185
|
+
// Content
|
|
186
|
+
description: z.string().min(10).optional(),
|
|
187
|
+
articleBody: z.string().min(50, "Article body should be at least 50 characters").optional(),
|
|
188
|
+
wordCount: z.number().int().positive().optional(),
|
|
189
|
+
// Additional metadata
|
|
190
|
+
url: z.string().url().optional(),
|
|
191
|
+
mainEntityOfPage: z.string().url().optional(),
|
|
192
|
+
keywords: z.union([z.string(), z.array(z.string())]).optional(),
|
|
193
|
+
articleSection: z.string().optional(),
|
|
194
|
+
inLanguage: z.string().optional()
|
|
195
|
+
});
|
|
196
|
+
var BlogPostingSchema = ArticleSchema.extend({
|
|
197
|
+
"@type": z.literal("BlogPosting").default("BlogPosting")
|
|
198
|
+
});
|
|
199
|
+
var NewsArticleSchema = ArticleSchema.extend({
|
|
200
|
+
"@type": z.literal("NewsArticle").default("NewsArticle"),
|
|
201
|
+
dateline: z.string().optional()
|
|
202
|
+
});
|
|
203
|
+
var QuestionSchema = z.object({
|
|
204
|
+
"@type": z.literal("Question").default("Question"),
|
|
205
|
+
name: z.string().min(1, "Question text is required"),
|
|
206
|
+
acceptedAnswer: z.object({
|
|
207
|
+
"@type": z.literal("Answer").default("Answer"),
|
|
208
|
+
text: z.string().min(1, "Answer text is required")
|
|
209
|
+
})
|
|
210
|
+
});
|
|
211
|
+
var FAQPageSchema = z.object({
|
|
212
|
+
"@context": z.literal("https://schema.org").default("https://schema.org"),
|
|
213
|
+
"@type": z.literal("FAQPage").default("FAQPage"),
|
|
214
|
+
mainEntity: z.array(QuestionSchema).min(1, "At least one question is required for FAQ").describe("Array of questions and answers")
|
|
215
|
+
});
|
|
216
|
+
var ListItemSchema = z.object({
|
|
217
|
+
"@type": z.literal("ListItem").default("ListItem"),
|
|
218
|
+
position: z.number().int().positive(),
|
|
219
|
+
name: z.string().min(1),
|
|
220
|
+
item: z.string().url().optional()
|
|
221
|
+
});
|
|
222
|
+
var BreadcrumbListSchema = z.object({
|
|
223
|
+
"@context": z.literal("https://schema.org").default("https://schema.org"),
|
|
224
|
+
"@type": z.literal("BreadcrumbList").default("BreadcrumbList"),
|
|
225
|
+
itemListElement: z.array(ListItemSchema).min(2, "Breadcrumb list must have at least 2 items").describe("Ordered list of breadcrumb items")
|
|
226
|
+
});
|
|
227
|
+
var WebPageSchema = z.object({
|
|
228
|
+
"@context": z.literal("https://schema.org").default("https://schema.org"),
|
|
229
|
+
"@type": z.literal("WebPage").default("WebPage"),
|
|
230
|
+
name: z.string().min(1),
|
|
231
|
+
description: z.string().min(10).optional(),
|
|
232
|
+
url: z.string().url(),
|
|
233
|
+
// Optional fields
|
|
234
|
+
inLanguage: z.string().optional(),
|
|
235
|
+
isPartOf: z.object({
|
|
236
|
+
"@type": z.literal("WebSite"),
|
|
237
|
+
name: z.string(),
|
|
238
|
+
url: z.string().url()
|
|
239
|
+
}).optional(),
|
|
240
|
+
breadcrumb: z.object({
|
|
241
|
+
"@type": z.literal("BreadcrumbList")
|
|
242
|
+
}).optional(),
|
|
243
|
+
datePublished: z.string().regex(/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}Z)?$/).optional(),
|
|
244
|
+
dateModified: z.string().regex(/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}Z)?$/).optional(),
|
|
245
|
+
author: z.object({
|
|
246
|
+
"@type": z.enum(["Person", "Organization"]),
|
|
247
|
+
name: z.string()
|
|
248
|
+
}).optional()
|
|
249
|
+
});
|
|
250
|
+
var OpenGraphSchema = z.object({
|
|
251
|
+
title: z.string().min(1).max(60, "Title should be less than 60 characters for optimal display"),
|
|
252
|
+
description: z.string().min(1).max(160, "Description should be less than 160 characters"),
|
|
253
|
+
url: z.string().url(),
|
|
254
|
+
type: z.enum(["website", "article", "product", "book", "profile", "music", "video"]).default("website"),
|
|
255
|
+
image: z.string().url(),
|
|
256
|
+
imageAlt: z.string().optional(),
|
|
257
|
+
siteName: z.string().optional(),
|
|
258
|
+
locale: z.string().default("en_US"),
|
|
259
|
+
// Article-specific
|
|
260
|
+
publishedTime: z.string().optional(),
|
|
261
|
+
modifiedTime: z.string().optional(),
|
|
262
|
+
author: z.string().optional(),
|
|
263
|
+
section: z.string().optional(),
|
|
264
|
+
tags: z.array(z.string()).optional(),
|
|
265
|
+
// Product-specific
|
|
266
|
+
price: z.union([z.string(), z.number()]).optional(),
|
|
267
|
+
currency: z.string().length(3).optional()
|
|
268
|
+
});
|
|
269
|
+
var TwitterCardSchema = z.object({
|
|
270
|
+
card: z.enum(["summary", "summary_large_image", "app", "player"]).default("summary_large_image"),
|
|
271
|
+
site: z.string().optional(),
|
|
272
|
+
// @username
|
|
273
|
+
creator: z.string().optional(),
|
|
274
|
+
// @username
|
|
275
|
+
title: z.string().min(1).max(70, "Twitter title should be less than 70 characters"),
|
|
276
|
+
description: z.string().min(1).max(200, "Twitter description should be less than 200 characters"),
|
|
277
|
+
image: z.string().url(),
|
|
278
|
+
imageAlt: z.string().optional()
|
|
279
|
+
});
|
|
280
|
+
var GeoCoordinatesSchema = z.object({
|
|
281
|
+
"@type": z.literal("GeoCoordinates").default("GeoCoordinates"),
|
|
282
|
+
latitude: z.number().min(-90).max(90),
|
|
283
|
+
longitude: z.number().min(-180).max(180)
|
|
284
|
+
});
|
|
285
|
+
var OpeningHoursSchema = z.object({
|
|
286
|
+
"@type": z.literal("OpeningHoursSpecification").default("OpeningHoursSpecification"),
|
|
287
|
+
dayOfWeek: z.union([
|
|
288
|
+
z.enum(["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]),
|
|
289
|
+
z.array(z.enum(["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]))
|
|
290
|
+
]),
|
|
291
|
+
opens: z.string().regex(/^([01]\d|2[0-3]):([0-5]\d)$/, "Must be in HH:MM format"),
|
|
292
|
+
closes: z.string().regex(/^([01]\d|2[0-3]):([0-5]\d)$/, "Must be in HH:MM format")
|
|
293
|
+
});
|
|
294
|
+
var LocalBusinessSchema = z.object({
|
|
295
|
+
"@context": z.literal("https://schema.org").default("https://schema.org"),
|
|
296
|
+
"@type": z.string().default("LocalBusiness"),
|
|
297
|
+
// Can be Restaurant, Store, etc.
|
|
298
|
+
// Required
|
|
299
|
+
name: z.string().min(1, "Business name is required"),
|
|
300
|
+
image: z.union([z.string().url(), z.array(z.string().url())]),
|
|
301
|
+
address: PostalAddressSchema,
|
|
302
|
+
// Recommended
|
|
303
|
+
"@id": z.string().url().optional(),
|
|
304
|
+
url: z.string().url().optional(),
|
|
305
|
+
telephone: z.string().optional(),
|
|
306
|
+
priceRange: z.string().optional(),
|
|
307
|
+
// e.g., "$$"
|
|
308
|
+
// Location
|
|
309
|
+
geo: GeoCoordinatesSchema.optional(),
|
|
310
|
+
// Opening hours
|
|
311
|
+
openingHoursSpecification: z.union([
|
|
312
|
+
OpeningHoursSchema,
|
|
313
|
+
z.array(OpeningHoursSchema)
|
|
314
|
+
]).optional(),
|
|
315
|
+
// Ratings
|
|
316
|
+
aggregateRating: z.object({
|
|
317
|
+
"@type": z.literal("AggregateRating"),
|
|
318
|
+
ratingValue: z.union([z.string(), z.number()]),
|
|
319
|
+
reviewCount: z.number().int().positive()
|
|
320
|
+
}).optional(),
|
|
321
|
+
// Additional info
|
|
322
|
+
description: z.string().min(10).optional(),
|
|
323
|
+
servesCuisine: z.union([z.string(), z.array(z.string())]).optional(),
|
|
324
|
+
// For restaurants
|
|
325
|
+
menu: z.string().url().optional(),
|
|
326
|
+
// For restaurants
|
|
327
|
+
acceptsReservations: z.union([z.boolean(), z.string()]).optional(),
|
|
328
|
+
paymentAccepted: z.string().optional()
|
|
329
|
+
});
|
|
330
|
+
var PlaceSchema = z.object({
|
|
331
|
+
"@type": z.literal("Place").default("Place"),
|
|
332
|
+
name: z.string(),
|
|
333
|
+
address: z.union([
|
|
334
|
+
z.string(),
|
|
335
|
+
z.object({
|
|
336
|
+
"@type": z.literal("PostalAddress"),
|
|
337
|
+
streetAddress: z.string().optional(),
|
|
338
|
+
addressLocality: z.string().optional(),
|
|
339
|
+
addressRegion: z.string().optional(),
|
|
340
|
+
postalCode: z.string().optional(),
|
|
341
|
+
addressCountry: z.string().optional()
|
|
342
|
+
})
|
|
343
|
+
]).optional()
|
|
344
|
+
});
|
|
345
|
+
var EventOfferSchema = z.object({
|
|
346
|
+
"@type": z.literal("Offer").default("Offer"),
|
|
347
|
+
url: z.string().url().optional(),
|
|
348
|
+
price: z.union([z.string(), z.number()]),
|
|
349
|
+
priceCurrency: z.string().length(3),
|
|
350
|
+
availability: z.string().url().optional(),
|
|
351
|
+
validFrom: z.string().optional()
|
|
352
|
+
});
|
|
353
|
+
var EventSchema = z.object({
|
|
354
|
+
"@context": z.literal("https://schema.org").default("https://schema.org"),
|
|
355
|
+
"@type": z.enum(["Event", "MusicEvent", "BusinessEvent", "SportsEvent", "TheaterEvent", "EducationEvent"]).default("Event"),
|
|
356
|
+
// Required
|
|
357
|
+
name: z.string().min(1, "Event name is required"),
|
|
358
|
+
startDate: z.string().regex(/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}[+-]\d{2}:\d{2})?$/, "Must be ISO 8601 format"),
|
|
359
|
+
// Recommended
|
|
360
|
+
endDate: z.string().regex(/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}[+-]\d{2}:\d{2})?$/, "Must be ISO 8601 format").optional(),
|
|
361
|
+
eventStatus: z.enum([
|
|
362
|
+
"https://schema.org/EventScheduled",
|
|
363
|
+
"https://schema.org/EventCancelled",
|
|
364
|
+
"https://schema.org/EventMovedOnline",
|
|
365
|
+
"https://schema.org/EventPostponed",
|
|
366
|
+
"https://schema.org/EventRescheduled"
|
|
367
|
+
]).optional(),
|
|
368
|
+
eventAttendanceMode: z.enum([
|
|
369
|
+
"https://schema.org/OfflineEventAttendanceMode",
|
|
370
|
+
"https://schema.org/OnlineEventAttendanceMode",
|
|
371
|
+
"https://schema.org/MixedEventAttendanceMode"
|
|
372
|
+
]).optional(),
|
|
373
|
+
location: z.union([PlaceSchema, z.string().url()]).optional(),
|
|
374
|
+
// Can be Place or VirtualLocation URL
|
|
375
|
+
image: z.union([z.string().url(), z.array(z.string().url())]).optional(),
|
|
376
|
+
description: z.string().min(10).optional(),
|
|
377
|
+
// Organizer
|
|
378
|
+
organizer: z.object({
|
|
379
|
+
"@type": z.enum(["Organization", "Person"]),
|
|
380
|
+
name: z.string(),
|
|
381
|
+
url: z.string().url().optional()
|
|
382
|
+
}).optional(),
|
|
383
|
+
// Performer
|
|
384
|
+
performer: z.union([
|
|
385
|
+
z.object({
|
|
386
|
+
"@type": z.enum(["Person", "PerformingGroup"]),
|
|
387
|
+
name: z.string()
|
|
388
|
+
}),
|
|
389
|
+
z.array(z.object({
|
|
390
|
+
"@type": z.enum(["Person", "PerformingGroup"]),
|
|
391
|
+
name: z.string()
|
|
392
|
+
}))
|
|
393
|
+
]).optional(),
|
|
394
|
+
// Offers (tickets)
|
|
395
|
+
offers: z.union([EventOfferSchema, z.array(EventOfferSchema)]).optional(),
|
|
396
|
+
// Additional
|
|
397
|
+
url: z.string().url().optional()
|
|
398
|
+
});
|
|
399
|
+
|
|
400
|
+
export { AggregateRatingSchema, ArticleSchema, BlogPostingSchema, BreadcrumbListSchema, ContactPointSchema, EventOfferSchema, EventSchema, FAQPageSchema, GeoCoordinatesSchema, ListItemSchema, LocalBusinessSchema, NewsArticleSchema, OfferSchema, OpenGraphSchema, OpeningHoursSchema, OrganizationSchema, PersonSchema, PlaceSchema, PostalAddressSchema, ProductSchema, QuestionSchema, ReviewSchema, TwitterCardSchema, WebPageSchema };
|
|
401
|
+
//# sourceMappingURL=index.js.map
|
|
402
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/core/schemas/organization.ts","../../src/core/schemas/person.ts","../../src/core/schemas/product.ts","../../src/core/schemas/article.ts","../../src/core/schemas/faq.ts","../../src/core/schemas/breadcrumb.ts","../../src/core/schemas/webpage.ts","../../src/core/schemas/opengraph.ts","../../src/core/schemas/localbusiness.ts","../../src/core/schemas/event.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Zod schema validation for Schema.org Organization type\n * @module schemas/organization\n */\n\nimport { z } from 'zod';\n\n/**\n * Schema.org PostalAddress validation schema\n */\nexport const PostalAddressSchema = z.object({\n '@type': z.literal('PostalAddress').default('PostalAddress'),\n streetAddress: z.string().optional(),\n addressLocality: z.string().optional(),\n addressRegion: z.string().optional(),\n postalCode: z.string().optional(),\n addressCountry: z.string().length(2).optional(), // ISO 3166-1 alpha-2\n});\n\n/**\n * Schema.org ContactPoint validation schema\n */\nexport const ContactPointSchema = z.object({\n '@type': z.literal('ContactPoint').default('ContactPoint'),\n telephone: z.string().optional(),\n email: z.string().email().optional(),\n contactType: z\n .enum(['customer service', 'technical support', 'sales', 'billing'])\n .optional(),\n areaServed: z.string().optional(),\n availableLanguage: z.array(z.string()).optional(),\n});\n\n/**\n * Schema.org Organization validation schema\n *\n * @see https://schema.org/Organization\n * @see https://developers.google.com/search/docs/appearance/structured-data/organization\n */\nexport const OrganizationSchema = z.object({\n '@context': z.literal('https://schema.org').default('https://schema.org'),\n '@type': z.literal('Organization').default('Organization'),\n\n // Required fields\n name: z.string().min(1, 'Organization name is required'),\n url: z.string().url('Must be a valid URL'),\n\n // Recommended fields\n logo: z.string().url('Logo must be a valid URL').optional(),\n image: z.string().url('Image must be a valid URL').optional(),\n description: z.string().min(10, 'Description should be at least 10 characters').optional(),\n\n /**\n * CRITICAL for GEO: Entity disambiguation\n * Should include at least one social profile or authority ID (Wikidata, Wikipedia, etc.)\n */\n sameAs: z\n .array(z.string().url())\n .min(1, 'At least one sameAs URL is required for entity disambiguation')\n .describe('Social profiles, Wikidata ID, Wikipedia URL for entity disambiguation'),\n\n // Contact information\n email: z.string().email().optional(),\n telephone: z.string().optional(),\n address: PostalAddressSchema.optional(),\n contactPoint: z.union([ContactPointSchema, z.array(ContactPointSchema)]).optional(),\n\n // Additional information\n alternateName: z.string().optional(),\n foundingDate: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/, 'Must be in YYYY-MM-DD format').optional(),\n founder: z.array(z.string()).optional(),\n\n // Relationships\n parentOrganization: z.string().optional(),\n subOrganization: z.array(z.string()).optional(),\n});\n\n/**\n * TypeScript type inferred from Zod schema\n */\nexport type Organization = z.infer<typeof OrganizationSchema>;\n\n/**\n * Input type for creating Organization schema (before defaults are applied)\n */\nexport type OrganizationInput = z.input<typeof OrganizationSchema>;\n","/**\n * Zod schema validation for Schema.org Person type\n * @module schemas/person\n */\n\nimport { z } from 'zod';\n\nimport { PostalAddressSchema } from './organization.js';\n\n/**\n * Schema.org Person validation schema\n *\n * @see https://schema.org/Person\n * @see https://developers.google.com/search/docs/appearance/structured-data/person\n */\nexport const PersonSchema = z.object({\n '@context': z.literal('https://schema.org').default('https://schema.org'),\n '@type': z.literal('Person').default('Person'),\n\n // Required fields\n name: z.string().min(1, 'Person name is required'),\n url: z.string().url('Must be a valid URL').optional(),\n\n // Recommended fields\n image: z.string().url('Image must be a valid URL').optional(),\n description: z.string().min(10, 'Description should be at least 10 characters').optional(),\n\n /**\n * CRITICAL for GEO: Entity disambiguation\n * Should include social profiles, Wikidata ID, Wikipedia URL, etc.\n */\n sameAs: z\n .array(z.string().url())\n .min(1, 'At least one sameAs URL is required for entity disambiguation')\n .describe('Social profiles, Wikidata ID, Wikipedia URL for entity disambiguation'),\n\n // Contact information\n email: z.string().email().optional(),\n telephone: z.string().optional(),\n address: PostalAddressSchema.optional(),\n\n // Professional information\n jobTitle: z.string().optional(),\n worksFor: z\n .object({\n '@type': z.literal('Organization'),\n name: z.string(),\n url: z.string().url().optional(),\n })\n .optional(),\n\n // Additional information\n alternateName: z.string().optional(),\n birthDate: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/, 'Must be in YYYY-MM-DD format').optional(),\n nationality: z.string().optional(),\n\n // Relationships\n colleague: z.array(z.string()).optional(),\n alumniOf: z.string().optional(),\n});\n\n/**\n * TypeScript type inferred from Zod schema\n */\nexport type Person = z.infer<typeof PersonSchema>;\n\n/**\n * Input type for creating Person schema (before defaults are applied)\n */\nexport type PersonInput = z.input<typeof PersonSchema>;\n","/**\n * Zod schema validation for Schema.org Product type\n * @module schemas/product\n */\n\nimport { z } from 'zod';\n\n/**\n * Schema.org Offer validation schema\n */\nexport const OfferSchema = z.object({\n '@type': z.literal('Offer').default('Offer'),\n price: z.union([z.string(), z.number()]),\n priceCurrency: z.string().length(3), // ISO 4217 currency code\n availability: z\n .string()\n .url()\n .optional()\n .describe('e.g., https://schema.org/InStock'),\n url: z.string().url().optional(),\n priceValidUntil: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/).optional(),\n seller: z\n .object({\n '@type': z.literal('Organization'),\n name: z.string(),\n })\n .optional(),\n});\n\n/**\n * Schema.org AggregateRating validation schema\n */\nexport const AggregateRatingSchema = z.object({\n '@type': z.literal('AggregateRating').default('AggregateRating'),\n ratingValue: z.union([z.string(), z.number()]),\n reviewCount: z.number().int().positive(),\n bestRating: z.union([z.string(), z.number()]).optional().default(5),\n worstRating: z.union([z.string(), z.number()]).optional().default(1),\n});\n\n/**\n * Schema.org Review validation schema\n */\nexport const ReviewSchema = z.object({\n '@type': z.literal('Review').default('Review'),\n author: z.object({\n '@type': z.literal('Person'),\n name: z.string(),\n }),\n datePublished: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/),\n reviewBody: z.string().min(10),\n reviewRating: z.object({\n '@type': z.literal('Rating'),\n ratingValue: z.union([z.string(), z.number()]),\n bestRating: z.union([z.string(), z.number()]).optional().default(5),\n }),\n});\n\n/**\n * Schema.org Product validation schema\n *\n * @see https://schema.org/Product\n * @see https://developers.google.com/search/docs/appearance/structured-data/product\n */\nexport const ProductSchema = z.object({\n '@context': z.literal('https://schema.org').default('https://schema.org'),\n '@type': z.literal('Product').default('Product'),\n\n // Required fields\n name: z.string().min(1, 'Product name is required'),\n\n // Recommended fields\n image: z.union([z.string().url(), z.array(z.string().url())]).optional(),\n description: z.string().min(10, 'Description should be at least 10 characters').optional(),\n\n // SKU or other identifiers\n sku: z.string().optional(),\n gtin: z.string().optional(),\n gtin8: z.string().optional(),\n gtin12: z.string().optional(),\n gtin13: z.string().optional(),\n gtin14: z.string().optional(),\n mpn: z.string().optional(),\n\n // Brand\n brand: z\n .object({\n '@type': z.literal('Brand'),\n name: z.string(),\n })\n .optional(),\n\n // Offers (pricing)\n offers: z.union([OfferSchema, z.array(OfferSchema)]).optional(),\n\n // Ratings and Reviews\n aggregateRating: AggregateRatingSchema.optional(),\n review: z.union([ReviewSchema, z.array(ReviewSchema)]).optional(),\n\n // Additional information\n category: z.string().optional(),\n color: z.union([z.string(), z.array(z.string())]).optional(),\n material: z.string().optional(),\n manufacturer: z\n .object({\n '@type': z.literal('Organization'),\n name: z.string(),\n })\n .optional(),\n});\n\n/**\n * TypeScript type inferred from Zod schema\n */\nexport type Product = z.infer<typeof ProductSchema>;\n\n/**\n * Input type for creating Product schema (before defaults are applied)\n */\nexport type ProductInput = z.input<typeof ProductSchema>;\n\nexport type Offer = z.infer<typeof OfferSchema>;\nexport type AggregateRating = z.infer<typeof AggregateRatingSchema>;\nexport type Review = z.infer<typeof ReviewSchema>;\n","/**\n * Zod schema validation for Schema.org Article type\n * @module schemas/article\n */\n\nimport { z } from 'zod';\n\n/**\n * Schema.org Article validation schema\n *\n * @see https://schema.org/Article\n * @see https://developers.google.com/search/docs/appearance/structured-data/article\n */\nexport const ArticleSchema = z.object({\n '@context': z.literal('https://schema.org').default('https://schema.org'),\n '@type': z\n .enum(['Article', 'NewsArticle', 'BlogPosting', 'TechArticle'])\n .default('Article'),\n\n // Required fields\n headline: z\n .string()\n .min(1)\n .max(110, 'Headline should be less than 110 characters for optimal SEO'),\n image: z.union([z.string().url(), z.array(z.string().url())]),\n\n // Recommended fields\n author: z\n .union([\n z.object({\n '@type': z.enum(['Person', 'Organization']),\n name: z.string(),\n url: z.string().url().optional(),\n }),\n z.array(\n z.object({\n '@type': z.enum(['Person', 'Organization']),\n name: z.string(),\n url: z.string().url().optional(),\n })\n ),\n ])\n .describe('Author(s) of the article'),\n\n datePublished: z\n .string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}Z)?$/, 'Must be ISO 8601 format'),\n\n dateModified: z\n .string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}Z)?$/, 'Must be ISO 8601 format')\n .optional(),\n\n // Publisher (recommended for Google News)\n publisher: z\n .object({\n '@type': z.literal('Organization'),\n name: z.string(),\n logo: z\n .object({\n '@type': z.literal('ImageObject'),\n url: z.string().url(),\n width: z.number().optional(),\n height: z.number().optional(),\n })\n .optional(),\n })\n .optional(),\n\n // Content\n description: z.string().min(10).optional(),\n articleBody: z.string().min(50, 'Article body should be at least 50 characters').optional(),\n wordCount: z.number().int().positive().optional(),\n\n // Additional metadata\n url: z.string().url().optional(),\n mainEntityOfPage: z.string().url().optional(),\n keywords: z.union([z.string(), z.array(z.string())]).optional(),\n articleSection: z.string().optional(),\n inLanguage: z.string().optional(),\n});\n\n/**\n * Schema.org BlogPosting validation schema (extends Article)\n */\nexport const BlogPostingSchema = ArticleSchema.extend({\n '@type': z.literal('BlogPosting').default('BlogPosting'),\n});\n\n/**\n * Schema.org NewsArticle validation schema (extends Article)\n */\nexport const NewsArticleSchema = ArticleSchema.extend({\n '@type': z.literal('NewsArticle').default('NewsArticle'),\n dateline: z.string().optional(),\n});\n\n/**\n * TypeScript types inferred from Zod schemas\n */\nexport type Article = z.infer<typeof ArticleSchema>;\nexport type ArticleInput = z.input<typeof ArticleSchema>;\nexport type BlogPosting = z.infer<typeof BlogPostingSchema>;\nexport type NewsArticle = z.infer<typeof NewsArticleSchema>;\n","/**\n * Zod schema validation for Schema.org FAQPage type\n * @module schemas/faq\n */\n\nimport { z } from 'zod';\n\n/**\n * Schema.org Question validation schema\n */\nexport const QuestionSchema = z.object({\n '@type': z.literal('Question').default('Question'),\n name: z.string().min(1, 'Question text is required'),\n acceptedAnswer: z.object({\n '@type': z.literal('Answer').default('Answer'),\n text: z.string().min(1, 'Answer text is required'),\n }),\n});\n\n/**\n * Schema.org FAQPage validation schema\n *\n * @see https://schema.org/FAQPage\n * @see https://developers.google.com/search/docs/appearance/structured-data/faqpage\n */\nexport const FAQPageSchema = z.object({\n '@context': z.literal('https://schema.org').default('https://schema.org'),\n '@type': z.literal('FAQPage').default('FAQPage'),\n\n mainEntity: z\n .array(QuestionSchema)\n .min(1, 'At least one question is required for FAQ')\n .describe('Array of questions and answers'),\n});\n\n/**\n * TypeScript types inferred from Zod schemas\n */\nexport type Question = z.infer<typeof QuestionSchema>;\nexport type FAQPage = z.infer<typeof FAQPageSchema>;\nexport type FAQPageInput = z.input<typeof FAQPageSchema>;\n","/**\n * Zod schema validation for Schema.org BreadcrumbList type\n * @module schemas/breadcrumb\n */\n\nimport { z } from 'zod';\n\n/**\n * Schema.org ListItem validation schema\n */\nexport const ListItemSchema = z.object({\n '@type': z.literal('ListItem').default('ListItem'),\n position: z.number().int().positive(),\n name: z.string().min(1),\n item: z.string().url().optional(),\n});\n\n/**\n * Schema.org BreadcrumbList validation schema\n *\n * @see https://schema.org/BreadcrumbList\n * @see https://developers.google.com/search/docs/appearance/structured-data/breadcrumb\n */\nexport const BreadcrumbListSchema = z.object({\n '@context': z.literal('https://schema.org').default('https://schema.org'),\n '@type': z.literal('BreadcrumbList').default('BreadcrumbList'),\n\n itemListElement: z\n .array(ListItemSchema)\n .min(2, 'Breadcrumb list must have at least 2 items')\n .describe('Ordered list of breadcrumb items'),\n});\n\n/**\n * TypeScript types inferred from Zod schemas\n */\nexport type ListItem = z.infer<typeof ListItemSchema>;\nexport type BreadcrumbList = z.infer<typeof BreadcrumbListSchema>;\nexport type BreadcrumbListInput = z.input<typeof BreadcrumbListSchema>;\n","/**\n * Zod schema validation for Schema.org WebPage type\n * @module schemas/webpage\n */\n\nimport { z } from 'zod';\n\n/**\n * Schema.org WebPage validation schema\n *\n * @see https://schema.org/WebPage\n */\nexport const WebPageSchema = z.object({\n '@context': z.literal('https://schema.org').default('https://schema.org'),\n '@type': z.literal('WebPage').default('WebPage'),\n\n name: z.string().min(1),\n description: z.string().min(10).optional(),\n url: z.string().url(),\n\n // Optional fields\n inLanguage: z.string().optional(),\n isPartOf: z\n .object({\n '@type': z.literal('WebSite'),\n name: z.string(),\n url: z.string().url(),\n })\n .optional(),\n breadcrumb: z\n .object({\n '@type': z.literal('BreadcrumbList'),\n })\n .optional(),\n datePublished: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}Z)?$/).optional(),\n dateModified: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}Z)?$/).optional(),\n author: z\n .object({\n '@type': z.enum(['Person', 'Organization']),\n name: z.string(),\n })\n .optional(),\n});\n\n/**\n * TypeScript types inferred from Zod schemas\n */\nexport type WebPage = z.infer<typeof WebPageSchema>;\nexport type WebPageInput = z.input<typeof WebPageSchema>;\n","/**\n * OpenGraph and Twitter Cards metadata generation\n * @module schemas/opengraph\n */\n\nimport { z } from 'zod';\n\n/**\n * OpenGraph meta tag schema\n */\nexport const OpenGraphSchema = z.object({\n title: z.string().min(1).max(60, 'Title should be less than 60 characters for optimal display'),\n description: z.string().min(1).max(160, 'Description should be less than 160 characters'),\n url: z.string().url(),\n type: z.enum(['website', 'article', 'product', 'book', 'profile', 'music', 'video']).default('website'),\n image: z.string().url(),\n imageAlt: z.string().optional(),\n siteName: z.string().optional(),\n locale: z.string().default('en_US'),\n\n // Article-specific\n publishedTime: z.string().optional(),\n modifiedTime: z.string().optional(),\n author: z.string().optional(),\n section: z.string().optional(),\n tags: z.array(z.string()).optional(),\n\n // Product-specific\n price: z.union([z.string(), z.number()]).optional(),\n currency: z.string().length(3).optional(),\n});\n\n/**\n * Twitter Card meta tag schema\n */\nexport const TwitterCardSchema = z.object({\n card: z.enum(['summary', 'summary_large_image', 'app', 'player']).default('summary_large_image'),\n site: z.string().optional(), // @username\n creator: z.string().optional(), // @username\n title: z.string().min(1).max(70, 'Twitter title should be less than 70 characters'),\n description: z.string().min(1).max(200, 'Twitter description should be less than 200 characters'),\n image: z.string().url(),\n imageAlt: z.string().optional(),\n});\n\n/**\n * TypeScript types\n */\nexport type OpenGraph = z.infer<typeof OpenGraphSchema>;\nexport type TwitterCard = z.infer<typeof TwitterCardSchema>;\nexport type OpenGraphInput = z.input<typeof OpenGraphSchema>;\nexport type TwitterCardInput = z.input<typeof TwitterCardSchema>;\n","/**\n * Zod schema validation for Schema.org LocalBusiness type\n * @module schemas/localbusiness\n */\n\nimport { z } from 'zod';\nimport { PostalAddressSchema } from './organization.js';\n\n/**\n * Geographic coordinates schema\n */\nexport const GeoCoordinatesSchema = z.object({\n '@type': z.literal('GeoCoordinates').default('GeoCoordinates'),\n latitude: z.number().min(-90).max(90),\n longitude: z.number().min(-180).max(180),\n});\n\n/**\n * Opening hours specification schema\n */\nexport const OpeningHoursSchema = z.object({\n '@type': z.literal('OpeningHoursSpecification').default('OpeningHoursSpecification'),\n dayOfWeek: z.union([\n z.enum(['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']),\n z.array(z.enum(['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'])),\n ]),\n opens: z.string().regex(/^([01]\\d|2[0-3]):([0-5]\\d)$/, 'Must be in HH:MM format'),\n closes: z.string().regex(/^([01]\\d|2[0-3]):([0-5]\\d)$/, 'Must be in HH:MM format'),\n});\n\n/**\n * Schema.org LocalBusiness validation schema\n *\n * @see https://schema.org/LocalBusiness\n * @see https://developers.google.com/search/docs/appearance/structured-data/local-business\n */\nexport const LocalBusinessSchema = z.object({\n '@context': z.literal('https://schema.org').default('https://schema.org'),\n '@type': z.string().default('LocalBusiness'), // Can be Restaurant, Store, etc.\n\n // Required\n name: z.string().min(1, 'Business name is required'),\n image: z.union([z.string().url(), z.array(z.string().url())]),\n address: PostalAddressSchema,\n\n // Recommended\n '@id': z.string().url().optional(),\n url: z.string().url().optional(),\n telephone: z.string().optional(),\n priceRange: z.string().optional(), // e.g., \"$$\"\n\n // Location\n geo: GeoCoordinatesSchema.optional(),\n\n // Opening hours\n openingHoursSpecification: z.union([\n OpeningHoursSchema,\n z.array(OpeningHoursSchema),\n ]).optional(),\n\n // Ratings\n aggregateRating: z.object({\n '@type': z.literal('AggregateRating'),\n ratingValue: z.union([z.string(), z.number()]),\n reviewCount: z.number().int().positive(),\n }).optional(),\n\n // Additional info\n description: z.string().min(10).optional(),\n servesCuisine: z.union([z.string(), z.array(z.string())]).optional(), // For restaurants\n menu: z.string().url().optional(), // For restaurants\n acceptsReservations: z.union([z.boolean(), z.string()]).optional(),\n paymentAccepted: z.string().optional(),\n});\n\n/**\n * TypeScript types\n */\nexport type LocalBusiness = z.infer<typeof LocalBusinessSchema>;\nexport type LocalBusinessInput = z.input<typeof LocalBusinessSchema>;\nexport type GeoCoordinates = z.infer<typeof GeoCoordinatesSchema>;\nexport type OpeningHours = z.infer<typeof OpeningHoursSchema>;\n","/**\n * Zod schema validation for Schema.org Event type\n * @module schemas/event\n */\n\nimport { z } from 'zod';\n\n/**\n * Schema.org Place (for event location)\n */\nexport const PlaceSchema = z.object({\n '@type': z.literal('Place').default('Place'),\n name: z.string(),\n address: z.union([\n z.string(),\n z.object({\n '@type': z.literal('PostalAddress'),\n streetAddress: z.string().optional(),\n addressLocality: z.string().optional(),\n addressRegion: z.string().optional(),\n postalCode: z.string().optional(),\n addressCountry: z.string().optional(),\n }),\n ]).optional(),\n});\n\n/**\n * Schema.org Offer (for event tickets)\n */\nexport const EventOfferSchema = z.object({\n '@type': z.literal('Offer').default('Offer'),\n url: z.string().url().optional(),\n price: z.union([z.string(), z.number()]),\n priceCurrency: z.string().length(3),\n availability: z.string().url().optional(),\n validFrom: z.string().optional(),\n});\n\n/**\n * Schema.org Event validation schema\n *\n * @see https://schema.org/Event\n * @see https://developers.google.com/search/docs/appearance/structured-data/event\n */\nexport const EventSchema = z.object({\n '@context': z.literal('https://schema.org').default('https://schema.org'),\n '@type': z.enum(['Event', 'MusicEvent', 'BusinessEvent', 'SportsEvent', 'TheaterEvent', 'EducationEvent']).default('Event'),\n\n // Required\n name: z.string().min(1, 'Event name is required'),\n startDate: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}[+-]\\d{2}:\\d{2})?$/, 'Must be ISO 8601 format'),\n\n // Recommended\n endDate: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}[+-]\\d{2}:\\d{2})?$/, 'Must be ISO 8601 format').optional(),\n eventStatus: z.enum([\n 'https://schema.org/EventScheduled',\n 'https://schema.org/EventCancelled',\n 'https://schema.org/EventMovedOnline',\n 'https://schema.org/EventPostponed',\n 'https://schema.org/EventRescheduled',\n ]).optional(),\n eventAttendanceMode: z.enum([\n 'https://schema.org/OfflineEventAttendanceMode',\n 'https://schema.org/OnlineEventAttendanceMode',\n 'https://schema.org/MixedEventAttendanceMode',\n ]).optional(),\n\n location: z.union([PlaceSchema, z.string().url()]).optional(), // Can be Place or VirtualLocation URL\n\n image: z.union([z.string().url(), z.array(z.string().url())]).optional(),\n description: z.string().min(10).optional(),\n\n // Organizer\n organizer: z.object({\n '@type': z.enum(['Organization', 'Person']),\n name: z.string(),\n url: z.string().url().optional(),\n }).optional(),\n\n // Performer\n performer: z.union([\n z.object({\n '@type': z.enum(['Person', 'PerformingGroup']),\n name: z.string(),\n }),\n z.array(z.object({\n '@type': z.enum(['Person', 'PerformingGroup']),\n name: z.string(),\n })),\n ]).optional(),\n\n // Offers (tickets)\n offers: z.union([EventOfferSchema, z.array(EventOfferSchema)]).optional(),\n\n // Additional\n url: z.string().url().optional(),\n});\n\n/**\n * TypeScript types\n */\nexport type Event = z.infer<typeof EventSchema>;\nexport type EventInput = z.input<typeof EventSchema>;\nexport type Place = z.infer<typeof PlaceSchema>;\nexport type EventOffer = z.infer<typeof EventOfferSchema>;\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "geo-semantic-layer",
|
|
3
|
+
"version": "2.0.1",
|
|
4
|
+
"description": "Framework-agnostic TypeScript library for Generative Engine Optimization (GEO) and structured data automation. Pure functions for JSON-LD generation.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"seo",
|
|
7
|
+
"geo",
|
|
8
|
+
"generative-engine-optimization",
|
|
9
|
+
"json-ld",
|
|
10
|
+
"schema.org",
|
|
11
|
+
"structured-data",
|
|
12
|
+
"typescript",
|
|
13
|
+
"framework-agnostic",
|
|
14
|
+
"metadata",
|
|
15
|
+
"semantic-web",
|
|
16
|
+
"knowledge-graph",
|
|
17
|
+
"ai",
|
|
18
|
+
"llm",
|
|
19
|
+
"chatgpt",
|
|
20
|
+
"perplexity",
|
|
21
|
+
"universal",
|
|
22
|
+
"zero-dependencies"
|
|
23
|
+
],
|
|
24
|
+
"homepage": "https://github.com/bdovenbird/semantic-layer#readme",
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://github.com/bdovenbird/semantic-layer.git"
|
|
28
|
+
},
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"author": "Rafael Calderón (BDOvenbird Engineering)",
|
|
31
|
+
"type": "module",
|
|
32
|
+
"exports": {
|
|
33
|
+
".": {
|
|
34
|
+
"import": "./dist/index.js",
|
|
35
|
+
"types": "./dist/index.d.ts"
|
|
36
|
+
},
|
|
37
|
+
"./schemas": {
|
|
38
|
+
"import": "./dist/schemas/index.js",
|
|
39
|
+
"types": "./dist/schemas/index.d.ts"
|
|
40
|
+
},
|
|
41
|
+
"./generators": {
|
|
42
|
+
"import": "./dist/generators/index.js",
|
|
43
|
+
"types": "./dist/generators/index.d.ts"
|
|
44
|
+
},
|
|
45
|
+
"./geo": {
|
|
46
|
+
"import": "./dist/geo/index.js",
|
|
47
|
+
"types": "./dist/geo/index.d.ts"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"main": "./dist/index.js",
|
|
51
|
+
"module": "./dist/index.js",
|
|
52
|
+
"types": "./dist/index.d.ts",
|
|
53
|
+
"files": [
|
|
54
|
+
"dist",
|
|
55
|
+
"README.md",
|
|
56
|
+
"CHANGELOG.md",
|
|
57
|
+
"LICENSE"
|
|
58
|
+
],
|
|
59
|
+
"scripts": {
|
|
60
|
+
"build": "tsup",
|
|
61
|
+
"dev": "tsup --watch",
|
|
62
|
+
"clean": "rm -rf dist *.tsbuildinfo",
|
|
63
|
+
"test": "vitest run",
|
|
64
|
+
"test:watch": "vitest",
|
|
65
|
+
"test:coverage": "vitest run --coverage",
|
|
66
|
+
"typecheck": "tsc --noEmit",
|
|
67
|
+
"lint": "eslint --cache --cache-location ./node_modules/.cache/eslint .",
|
|
68
|
+
"lint:fix": "eslint --cache --cache-location ./node_modules/.cache/eslint . --fix",
|
|
69
|
+
"format": "prettier --write \"**/*.{ts,md,json}\"",
|
|
70
|
+
"format:check": "prettier --check \"**/*.{ts,md,json}\"",
|
|
71
|
+
"prepublishOnly": "npm run build"
|
|
72
|
+
},
|
|
73
|
+
"dependencies": {
|
|
74
|
+
"zod": "^3.22.4"
|
|
75
|
+
},
|
|
76
|
+
"devDependencies": {
|
|
77
|
+
"@types/node": "^20.11.5",
|
|
78
|
+
"@typescript-eslint/eslint-plugin": "^6.19.0",
|
|
79
|
+
"@typescript-eslint/parser": "^6.19.0",
|
|
80
|
+
"@vitest/coverage-v8": "^1.2.1",
|
|
81
|
+
"@vitest/ui": "^1.2.1",
|
|
82
|
+
"eslint": "^8.56.0",
|
|
83
|
+
"eslint-config-prettier": "^9.1.0",
|
|
84
|
+
"eslint-plugin-import": "^2.29.1",
|
|
85
|
+
"prettier": "^3.2.4",
|
|
86
|
+
"tsup": "^8.0.1",
|
|
87
|
+
"typescript": "^5.7.2",
|
|
88
|
+
"vite": "^5.0.12",
|
|
89
|
+
"vitest": "^1.2.1"
|
|
90
|
+
},
|
|
91
|
+
"publishConfig": {
|
|
92
|
+
"access": "public"
|
|
93
|
+
},
|
|
94
|
+
"engines": {
|
|
95
|
+
"node": ">=18.0.0"
|
|
96
|
+
}
|
|
97
|
+
}
|