schemaorg-kit 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +100 -73
- package/dist/index.d.mts +6434 -3065
- package/dist/index.d.ts +6434 -3065
- package/dist/index.js +280 -154
- package/dist/index.mjs +279 -154
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -98,6 +98,7 @@ __export(index_exports, {
|
|
|
98
98
|
RecipeSchema: () => RecipeSchema,
|
|
99
99
|
ReviewSchema: () => ReviewSchema,
|
|
100
100
|
SchemaGraph: () => SchemaGraph,
|
|
101
|
+
SchemaIds: () => SchemaIds,
|
|
101
102
|
SchemaNode: () => SchemaNode,
|
|
102
103
|
SeekToActionSchema: () => SeekToActionSchema,
|
|
103
104
|
ServicePeriodSchema: () => ServicePeriodSchema,
|
|
@@ -213,7 +214,7 @@ function makeFactory(schema2) {
|
|
|
213
214
|
}
|
|
214
215
|
|
|
215
216
|
// src/types/things/Person.ts
|
|
216
|
-
var
|
|
217
|
+
var import_zod7 = require("zod");
|
|
217
218
|
|
|
218
219
|
// src/types/things/Thing.ts
|
|
219
220
|
var import_zod4 = require("zod");
|
|
@@ -225,6 +226,8 @@ var import_zod3 = require("zod");
|
|
|
225
226
|
var import_zod2 = require("zod");
|
|
226
227
|
var PersonOrOrgRef = import_zod2.z.union([
|
|
227
228
|
import_zod2.z.string(),
|
|
229
|
+
// @id-only reference for @graph cross-referencing (e.g. { "@id": "https://example.com/#organization" })
|
|
230
|
+
import_zod2.z.object({ "@id": import_zod2.z.string() }),
|
|
228
231
|
// Accept any Person or Organization object — including full schema outputs via .toObject().
|
|
229
232
|
// .catchall() allows extra fields; name/url are optional to match ThingSchema's base types.
|
|
230
233
|
import_zod2.z.object({ "@type": import_zod2.z.literal("Person") }).catchall(import_zod2.z.unknown()),
|
|
@@ -234,15 +237,24 @@ var PersonOrOrgRef = import_zod2.z.union([
|
|
|
234
237
|
// src/types/shared/ImageObject.ts
|
|
235
238
|
var ImageObjectSchema = import_zod3.z.object({
|
|
236
239
|
"@type": import_zod3.z.literal("ImageObject").default("ImageObject"),
|
|
240
|
+
"@id": import_zod3.z.string().optional(),
|
|
237
241
|
url: import_zod3.z.url(),
|
|
238
242
|
contentUrl: import_zod3.z.url().optional(),
|
|
239
243
|
width: import_zod3.z.union([
|
|
240
244
|
import_zod3.z.number(),
|
|
241
|
-
import_zod3.z.object({
|
|
245
|
+
import_zod3.z.object({
|
|
246
|
+
"@type": import_zod3.z.literal("QuantitativeValue").default("QuantitativeValue"),
|
|
247
|
+
value: import_zod3.z.number(),
|
|
248
|
+
unitCode: import_zod3.z.string().optional()
|
|
249
|
+
})
|
|
242
250
|
]).optional(),
|
|
243
251
|
height: import_zod3.z.union([
|
|
244
252
|
import_zod3.z.number(),
|
|
245
|
-
import_zod3.z.object({
|
|
253
|
+
import_zod3.z.object({
|
|
254
|
+
"@type": import_zod3.z.literal("QuantitativeValue").default("QuantitativeValue"),
|
|
255
|
+
value: import_zod3.z.number(),
|
|
256
|
+
unitCode: import_zod3.z.string().optional()
|
|
257
|
+
})
|
|
246
258
|
]).optional(),
|
|
247
259
|
caption: import_zod3.z.string().optional(),
|
|
248
260
|
description: import_zod3.z.string().optional(),
|
|
@@ -292,62 +304,56 @@ function extendThing(type, shape) {
|
|
|
292
304
|
});
|
|
293
305
|
}
|
|
294
306
|
|
|
295
|
-
// src/types/shared/
|
|
307
|
+
// src/types/shared/PostalAddress.ts
|
|
296
308
|
var import_zod5 = require("zod");
|
|
297
|
-
var
|
|
298
|
-
"@type": import_zod5.z.literal("
|
|
299
|
-
|
|
309
|
+
var PostalAddressSchema = import_zod5.z.object({
|
|
310
|
+
"@type": import_zod5.z.literal("PostalAddress").default("PostalAddress"),
|
|
311
|
+
streetAddress: import_zod5.z.string().optional(),
|
|
312
|
+
addressLocality: import_zod5.z.string().optional(),
|
|
313
|
+
// city
|
|
314
|
+
addressRegion: import_zod5.z.string().optional(),
|
|
315
|
+
// state/province
|
|
316
|
+
postalCode: import_zod5.z.string().optional(),
|
|
317
|
+
addressCountry: import_zod5.z.string().optional(),
|
|
318
|
+
// ISO 3166-1 alpha-2, e.g. "US"
|
|
319
|
+
postOfficeBoxNumber: import_zod5.z.string().optional()
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
// src/types/shared/InteractionCounter.ts
|
|
323
|
+
var import_zod6 = require("zod");
|
|
324
|
+
var InteractionCounterSchema = import_zod6.z.object({
|
|
325
|
+
"@type": import_zod6.z.literal("InteractionCounter").default("InteractionCounter"),
|
|
326
|
+
interactionType: import_zod6.z.string(),
|
|
300
327
|
// full URL, e.g. "https://schema.org/LikeAction"
|
|
301
|
-
userInteractionCount:
|
|
328
|
+
userInteractionCount: import_zod6.z.number().int().nonnegative()
|
|
302
329
|
});
|
|
303
330
|
|
|
304
331
|
// src/types/things/Person.ts
|
|
305
332
|
var PersonSchema = extendThing("Person", {
|
|
306
|
-
givenName:
|
|
307
|
-
familyName:
|
|
308
|
-
email:
|
|
309
|
-
telephone:
|
|
310
|
-
jobTitle:
|
|
311
|
-
worksFor:
|
|
312
|
-
birthDate:
|
|
333
|
+
givenName: import_zod7.z.string().optional(),
|
|
334
|
+
familyName: import_zod7.z.string().optional(),
|
|
335
|
+
email: import_zod7.z.string().email().optional(),
|
|
336
|
+
telephone: import_zod7.z.string().optional(),
|
|
337
|
+
jobTitle: import_zod7.z.string().optional(),
|
|
338
|
+
worksFor: import_zod7.z.lazy(() => import_zod7.z.object({ "@type": import_zod7.z.string(), name: import_zod7.z.string() })).optional(),
|
|
339
|
+
birthDate: import_zod7.z.string().optional(),
|
|
313
340
|
// ISO 8601
|
|
314
|
-
gender:
|
|
315
|
-
nationality:
|
|
316
|
-
interactionStatistic:
|
|
317
|
-
agentInteractionStatistic:
|
|
318
|
-
address:
|
|
319
|
-
"@type": import_zod6.z.literal("PostalAddress"),
|
|
320
|
-
streetAddress: import_zod6.z.string().optional(),
|
|
321
|
-
addressLocality: import_zod6.z.string().optional(),
|
|
322
|
-
addressRegion: import_zod6.z.string().optional(),
|
|
323
|
-
postalCode: import_zod6.z.string().optional(),
|
|
324
|
-
addressCountry: import_zod6.z.string().optional()
|
|
325
|
-
}).optional()
|
|
341
|
+
gender: import_zod7.z.enum(["Male", "Female", "Unknown"]).optional(),
|
|
342
|
+
nationality: import_zod7.z.string().optional(),
|
|
343
|
+
interactionStatistic: import_zod7.z.union([InteractionCounterSchema, import_zod7.z.array(InteractionCounterSchema)]).optional(),
|
|
344
|
+
agentInteractionStatistic: import_zod7.z.union([InteractionCounterSchema, import_zod7.z.array(InteractionCounterSchema)]).optional(),
|
|
345
|
+
address: import_zod7.z.union([import_zod7.z.string(), PostalAddressSchema]).optional()
|
|
326
346
|
});
|
|
327
347
|
var createPerson = makeFactory(PersonSchema);
|
|
328
348
|
|
|
329
349
|
// src/types/things/Organization.ts
|
|
330
350
|
var import_zod15 = require("zod");
|
|
331
351
|
|
|
332
|
-
// src/types/shared/PostalAddress.ts
|
|
333
|
-
var import_zod7 = require("zod");
|
|
334
|
-
var PostalAddressSchema = import_zod7.z.object({
|
|
335
|
-
"@type": import_zod7.z.literal("PostalAddress").default("PostalAddress"),
|
|
336
|
-
streetAddress: import_zod7.z.string().optional(),
|
|
337
|
-
addressLocality: import_zod7.z.string().optional(),
|
|
338
|
-
// city
|
|
339
|
-
addressRegion: import_zod7.z.string().optional(),
|
|
340
|
-
// state/province
|
|
341
|
-
postalCode: import_zod7.z.string().optional(),
|
|
342
|
-
addressCountry: import_zod7.z.string().optional(),
|
|
343
|
-
// ISO 3166-1 alpha-2, e.g. "US"
|
|
344
|
-
postOfficeBoxNumber: import_zod7.z.string().optional()
|
|
345
|
-
});
|
|
346
|
-
|
|
347
352
|
// src/types/shared/ContactPoint.ts
|
|
348
353
|
var import_zod8 = require("zod");
|
|
349
354
|
var ContactPointSchema = import_zod8.z.object({
|
|
350
355
|
"@type": import_zod8.z.literal("ContactPoint").default("ContactPoint"),
|
|
356
|
+
"@id": import_zod8.z.string().optional(),
|
|
351
357
|
telephone: import_zod8.z.string().optional(),
|
|
352
358
|
contactType: import_zod8.z.string().optional(),
|
|
353
359
|
// e.g. "customer support", "sales"
|
|
@@ -548,7 +554,7 @@ var OfferSchema = import_zod12.z.object({
|
|
|
548
554
|
// ISO 8601
|
|
549
555
|
validThrough: import_zod12.z.string().optional(),
|
|
550
556
|
// ISO 8601
|
|
551
|
-
url: import_zod12.z.
|
|
557
|
+
url: import_zod12.z.url().optional(),
|
|
552
558
|
seller: import_zod12.z.object({ "@type": import_zod12.z.string(), name: import_zod12.z.string() }).optional(),
|
|
553
559
|
category: import_zod12.z.string().optional(),
|
|
554
560
|
inventoryLevel: import_zod12.z.object({
|
|
@@ -561,13 +567,8 @@ var OfferSchema = import_zod12.z.object({
|
|
|
561
567
|
UnitPriceSpecificationSchema,
|
|
562
568
|
import_zod12.z.array(UnitPriceSpecificationSchema)
|
|
563
569
|
]).optional(),
|
|
564
|
-
shippingDetails: import_zod12.z.union([
|
|
565
|
-
|
|
566
|
-
import_zod12.z.array(OfferShippingDetailsSchema)
|
|
567
|
-
]).optional(),
|
|
568
|
-
hasMerchantReturnPolicy: import_zod12.z.lazy(
|
|
569
|
-
() => import_zod12.z.object({ "@type": import_zod12.z.string() }).catchall(import_zod12.z.unknown())
|
|
570
|
-
).optional()
|
|
570
|
+
shippingDetails: import_zod12.z.union([OfferShippingDetailsSchema, import_zod12.z.array(OfferShippingDetailsSchema)]).optional(),
|
|
571
|
+
hasMerchantReturnPolicy: import_zod12.z.lazy(() => import_zod12.z.object({ "@type": import_zod12.z.string() }).catchall(import_zod12.z.unknown())).optional()
|
|
571
572
|
});
|
|
572
573
|
var MerchantReturnPolicySchema = import_zod12.z.object({
|
|
573
574
|
"@type": import_zod12.z.literal("MerchantReturnPolicy").default("MerchantReturnPolicy"),
|
|
@@ -582,7 +583,7 @@ var MerchantReturnPolicySchema = import_zod12.z.object({
|
|
|
582
583
|
refundType: import_zod12.z.string().optional(),
|
|
583
584
|
// schema.org enum URL
|
|
584
585
|
// Additional Google Merchant Listing fields
|
|
585
|
-
merchantReturnLink: import_zod12.z.
|
|
586
|
+
merchantReturnLink: import_zod12.z.url().optional(),
|
|
586
587
|
returnShippingFeesAmount: MonetaryAmountSchema.optional(),
|
|
587
588
|
itemCondition: import_zod12.z.union([ItemCondition, import_zod12.z.array(ItemCondition)]).optional(),
|
|
588
589
|
returnLabelSource: import_zod12.z.string().optional(),
|
|
@@ -617,7 +618,7 @@ var AggregateOfferSchema = import_zod12.z.object({
|
|
|
617
618
|
offerCount: import_zod12.z.number().int().nonnegative().optional(),
|
|
618
619
|
offers: import_zod12.z.union([OfferSchema, import_zod12.z.array(OfferSchema)]).optional(),
|
|
619
620
|
availability: ItemAvailability.optional(),
|
|
620
|
-
url: import_zod12.z.
|
|
621
|
+
url: import_zod12.z.url().optional()
|
|
621
622
|
});
|
|
622
623
|
|
|
623
624
|
// src/types/shared/MemberProgram.ts
|
|
@@ -632,14 +633,14 @@ var MemberProgramTierSchema = import_zod13.z.object({
|
|
|
632
633
|
value: import_zod13.z.number().optional(),
|
|
633
634
|
unitText: import_zod13.z.string().optional()
|
|
634
635
|
}).optional(),
|
|
635
|
-
url: import_zod13.z.
|
|
636
|
+
url: import_zod13.z.url().optional()
|
|
636
637
|
});
|
|
637
638
|
var MemberProgramSchema = import_zod13.z.object({
|
|
638
639
|
"@type": import_zod13.z.literal("MemberProgram").default("MemberProgram"),
|
|
639
640
|
name: import_zod13.z.string(),
|
|
640
641
|
description: import_zod13.z.string().optional(),
|
|
641
642
|
hasTiers: import_zod13.z.union([MemberProgramTierSchema, import_zod13.z.array(MemberProgramTierSchema)]).optional(),
|
|
642
|
-
url: import_zod13.z.
|
|
643
|
+
url: import_zod13.z.url().optional()
|
|
643
644
|
});
|
|
644
645
|
|
|
645
646
|
// src/types/shared/ShippingService.ts
|
|
@@ -715,7 +716,7 @@ var NestedOrgRef = import_zod15.z.lazy(
|
|
|
715
716
|
);
|
|
716
717
|
var OrganizationSchema = extendThing("Organization", {
|
|
717
718
|
legalName: import_zod15.z.string().optional(),
|
|
718
|
-
email: import_zod15.z.email().optional(),
|
|
719
|
+
email: import_zod15.z.string().email().optional(),
|
|
719
720
|
telephone: import_zod15.z.string().optional(),
|
|
720
721
|
logo: ImageOrUrl.optional(),
|
|
721
722
|
foundingDate: import_zod15.z.string().optional(),
|
|
@@ -748,20 +749,26 @@ var OrganizationSchema = extendThing("Organization", {
|
|
|
748
749
|
// Hierarchical organization (loose refs to avoid circular type inference):
|
|
749
750
|
subOrganization: NestedOrgRef.optional(),
|
|
750
751
|
parentOrganization: NestedOrgRef.optional(),
|
|
751
|
-
sameAs: import_zod15.z.union([import_zod15.z.
|
|
752
|
+
sameAs: import_zod15.z.union([import_zod15.z.url(), import_zod15.z.array(import_zod15.z.url())]).optional()
|
|
752
753
|
});
|
|
753
754
|
var createOrganization = makeFactory(OrganizationSchema);
|
|
754
755
|
var createNGO = makeFactory(
|
|
755
756
|
OrganizationSchema.extend({ "@type": import_zod15.z.literal("NGO").default("NGO") })
|
|
756
757
|
);
|
|
757
758
|
var createCorporation = makeFactory(
|
|
758
|
-
OrganizationSchema.extend({
|
|
759
|
+
OrganizationSchema.extend({
|
|
760
|
+
"@type": import_zod15.z.literal("Corporation").default("Corporation")
|
|
761
|
+
})
|
|
759
762
|
);
|
|
760
763
|
var createOnlineStore = makeFactory(
|
|
761
|
-
OrganizationSchema.extend({
|
|
764
|
+
OrganizationSchema.extend({
|
|
765
|
+
"@type": import_zod15.z.literal("OnlineStore").default("OnlineStore")
|
|
766
|
+
})
|
|
762
767
|
);
|
|
763
768
|
var createOnlineBusiness = makeFactory(
|
|
764
|
-
OrganizationSchema.extend({
|
|
769
|
+
OrganizationSchema.extend({
|
|
770
|
+
"@type": import_zod15.z.literal("OnlineBusiness").default("OnlineBusiness")
|
|
771
|
+
})
|
|
765
772
|
);
|
|
766
773
|
|
|
767
774
|
// src/types/things/Product.ts
|
|
@@ -794,12 +801,10 @@ var ReviewSchema = import_zod16.z.object({
|
|
|
794
801
|
// ISO 8601 date
|
|
795
802
|
publisher: PersonOrOrgRef.optional(),
|
|
796
803
|
// itemReviewed: any Thing — kept loose to avoid circular imports
|
|
797
|
-
itemReviewed: import_zod16.z.lazy(
|
|
798
|
-
() => import_zod16.z.object({ "@type": import_zod16.z.string() }).passthrough()
|
|
799
|
-
).optional(),
|
|
804
|
+
itemReviewed: import_zod16.z.lazy(() => import_zod16.z.object({ "@type": import_zod16.z.string() }).passthrough()).optional(),
|
|
800
805
|
name: import_zod16.z.string().optional(),
|
|
801
806
|
// Review headline
|
|
802
|
-
url: import_zod16.z.
|
|
807
|
+
url: import_zod16.z.url().optional(),
|
|
803
808
|
/** ISO 8601 DateTime — required for French vacation rental reviews */
|
|
804
809
|
contentReferenceTime: import_zod16.z.string().optional()
|
|
805
810
|
});
|
|
@@ -957,7 +962,7 @@ var ClipSchema = import_zod18.z.object({
|
|
|
957
962
|
// seconds from start
|
|
958
963
|
endOffset: import_zod18.z.number().optional(),
|
|
959
964
|
// seconds from start
|
|
960
|
-
url: import_zod18.z.
|
|
965
|
+
url: import_zod18.z.url().optional()
|
|
961
966
|
// URL pointing to this clip
|
|
962
967
|
});
|
|
963
968
|
var BroadcastEventSchema = import_zod18.z.object({
|
|
@@ -977,15 +982,15 @@ var VideoObjectSchema = import_zod18.z.object({
|
|
|
977
982
|
"@type": import_zod18.z.literal("VideoObject").default("VideoObject"),
|
|
978
983
|
// Required by Google:
|
|
979
984
|
name: import_zod18.z.string(),
|
|
980
|
-
thumbnailUrl: import_zod18.z.union([import_zod18.z.
|
|
985
|
+
thumbnailUrl: import_zod18.z.union([import_zod18.z.url(), import_zod18.z.array(import_zod18.z.url())]),
|
|
981
986
|
uploadDate: import_zod18.z.string(),
|
|
982
987
|
// ISO 8601 date
|
|
983
988
|
// Recommended by Google:
|
|
984
989
|
description: import_zod18.z.string().optional(),
|
|
985
990
|
duration: import_zod18.z.string().optional(),
|
|
986
991
|
// ISO 8601 duration, e.g. "PT1M54S"
|
|
987
|
-
contentUrl: import_zod18.z.
|
|
988
|
-
embedUrl: import_zod18.z.
|
|
992
|
+
contentUrl: import_zod18.z.url().optional(),
|
|
993
|
+
embedUrl: import_zod18.z.url().optional(),
|
|
989
994
|
// Optional:
|
|
990
995
|
expires: import_zod18.z.string().optional(),
|
|
991
996
|
// ISO 8601 — when video is no longer available
|
|
@@ -1022,13 +1027,13 @@ var EventAttendanceMode = import_zod19.z.enum([
|
|
|
1022
1027
|
var PlaceRef = import_zod19.z.union([
|
|
1023
1028
|
import_zod19.z.string(),
|
|
1024
1029
|
import_zod19.z.object({
|
|
1025
|
-
"@type": import_zod19.z.literal("Place"),
|
|
1030
|
+
"@type": import_zod19.z.literal("Place").default("Place"),
|
|
1026
1031
|
name: import_zod19.z.string().optional(),
|
|
1027
1032
|
address: import_zod19.z.union([import_zod19.z.string(), PostalAddressSchema]).optional(),
|
|
1028
1033
|
url: import_zod19.z.url().optional()
|
|
1029
1034
|
}),
|
|
1030
1035
|
import_zod19.z.object({
|
|
1031
|
-
"@type": import_zod19.z.literal("VirtualLocation"),
|
|
1036
|
+
"@type": import_zod19.z.literal("VirtualLocation").default("VirtualLocation"),
|
|
1032
1037
|
url: import_zod19.z.url(),
|
|
1033
1038
|
name: import_zod19.z.string().optional()
|
|
1034
1039
|
}),
|
|
@@ -1057,11 +1062,15 @@ var EventSchema = extendThing("Event", {
|
|
|
1057
1062
|
subEvent: import_zod19.z.lazy(
|
|
1058
1063
|
() => import_zod19.z.array(import_zod19.z.object({ "@type": import_zod19.z.string() }).catchall(import_zod19.z.unknown()))
|
|
1059
1064
|
).optional(),
|
|
1060
|
-
superEvent: import_zod19.z.lazy(
|
|
1061
|
-
() => import_zod19.z.object({ "@type": import_zod19.z.string() }).catchall(import_zod19.z.unknown())
|
|
1062
|
-
).optional(),
|
|
1065
|
+
superEvent: import_zod19.z.lazy(() => import_zod19.z.object({ "@type": import_zod19.z.string() }).catchall(import_zod19.z.unknown())).optional(),
|
|
1063
1066
|
// Additional:
|
|
1064
|
-
inLanguage: import_zod19.z.union([
|
|
1067
|
+
inLanguage: import_zod19.z.union([
|
|
1068
|
+
import_zod19.z.string(),
|
|
1069
|
+
import_zod19.z.object({
|
|
1070
|
+
"@type": import_zod19.z.literal("Language").default("Language"),
|
|
1071
|
+
name: import_zod19.z.string()
|
|
1072
|
+
})
|
|
1073
|
+
]).optional(),
|
|
1065
1074
|
isAccessibleForFree: import_zod19.z.boolean().optional(),
|
|
1066
1075
|
maximumAttendeeCapacity: import_zod19.z.number().int().nonnegative().optional(),
|
|
1067
1076
|
remainingAttendeeCapacity: import_zod19.z.number().int().nonnegative().optional(),
|
|
@@ -1101,11 +1110,13 @@ var PlaceSchema = extendThing("Place", {
|
|
|
1101
1110
|
maximumAttendeeCapacity: import_zod21.z.number().int().nonnegative().optional(),
|
|
1102
1111
|
isAccessibleForFree: import_zod21.z.boolean().optional(),
|
|
1103
1112
|
publicAccess: import_zod21.z.boolean().optional(),
|
|
1104
|
-
amenityFeature: import_zod21.z.array(
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1113
|
+
amenityFeature: import_zod21.z.array(
|
|
1114
|
+
import_zod21.z.object({
|
|
1115
|
+
"@type": import_zod21.z.literal("LocationFeatureSpecification").default("LocationFeatureSpecification"),
|
|
1116
|
+
name: import_zod21.z.string(),
|
|
1117
|
+
value: import_zod21.z.union([import_zod21.z.boolean(), import_zod21.z.string(), import_zod21.z.number()])
|
|
1118
|
+
})
|
|
1119
|
+
).optional(),
|
|
1109
1120
|
containedInPlace: import_zod21.z.lazy(
|
|
1110
1121
|
() => import_zod21.z.object({ "@type": import_zod21.z.string(), name: import_zod21.z.string().optional() }).catchall(import_zod21.z.unknown())
|
|
1111
1122
|
).optional()
|
|
@@ -1132,11 +1143,14 @@ var LocalBusinessSchema = PlaceSchema.extend({
|
|
|
1132
1143
|
import_zod22.z.literal("LodgingBusiness"),
|
|
1133
1144
|
import_zod22.z.literal("GroceryStore"),
|
|
1134
1145
|
import_zod22.z.literal("ShoppingCenter"),
|
|
1135
|
-
import_zod22.z.literal("TravelAgency")
|
|
1146
|
+
import_zod22.z.literal("TravelAgency"),
|
|
1147
|
+
// Google allows @type to be a string or array for multi-typed entities
|
|
1148
|
+
import_zod22.z.string(),
|
|
1149
|
+
import_zod22.z.array(import_zod22.z.string())
|
|
1136
1150
|
]).default("LocalBusiness"),
|
|
1137
1151
|
// Business identity:
|
|
1138
1152
|
legalName: import_zod22.z.string().optional(),
|
|
1139
|
-
email: import_zod22.z.email().optional(),
|
|
1153
|
+
email: import_zod22.z.string().email().optional(),
|
|
1140
1154
|
logo: ImageOrUrl.optional(),
|
|
1141
1155
|
contactPoint: import_zod22.z.union([ContactPointSchema, import_zod22.z.array(ContactPointSchema)]).optional(),
|
|
1142
1156
|
// Ratings & reviews:
|
|
@@ -1168,7 +1182,9 @@ var LocalBusinessSchema = PlaceSchema.extend({
|
|
|
1168
1182
|
});
|
|
1169
1183
|
var createLocalBusiness = makeFactory(LocalBusinessSchema);
|
|
1170
1184
|
var createRestaurant = makeFactory(
|
|
1171
|
-
LocalBusinessSchema.extend({
|
|
1185
|
+
LocalBusinessSchema.extend({
|
|
1186
|
+
"@type": import_zod22.z.literal("Restaurant").default("Restaurant")
|
|
1187
|
+
})
|
|
1172
1188
|
);
|
|
1173
1189
|
var createHotel = makeFactory(
|
|
1174
1190
|
LocalBusinessSchema.extend({ "@type": import_zod22.z.literal("Hotel").default("Hotel") })
|
|
@@ -1193,7 +1209,10 @@ var MovieSchema = extendThing("Movie", {
|
|
|
1193
1209
|
// ISO 3166
|
|
1194
1210
|
inLanguage: import_zod23.z.union([
|
|
1195
1211
|
import_zod23.z.string(),
|
|
1196
|
-
import_zod23.z.object({
|
|
1212
|
+
import_zod23.z.object({
|
|
1213
|
+
"@type": import_zod23.z.literal("Language").default("Language"),
|
|
1214
|
+
name: import_zod23.z.string()
|
|
1215
|
+
})
|
|
1197
1216
|
]).optional(),
|
|
1198
1217
|
aggregateRating: AggregateRatingSchema.optional(),
|
|
1199
1218
|
review: import_zod23.z.union([ReviewSchema, import_zod23.z.array(ReviewSchema)]).optional(),
|
|
@@ -1237,10 +1256,7 @@ var BorrowActionSchema = import_zod24.z.object({
|
|
|
1237
1256
|
"@type": import_zod24.z.literal("BorrowAction").default("BorrowAction"),
|
|
1238
1257
|
/** Library system or library lending this book */
|
|
1239
1258
|
lender: import_zod24.z.object({
|
|
1240
|
-
"@type": import_zod24.z.union([
|
|
1241
|
-
import_zod24.z.literal("LibrarySystem"),
|
|
1242
|
-
import_zod24.z.literal("Library")
|
|
1243
|
-
]),
|
|
1259
|
+
"@type": import_zod24.z.union([import_zod24.z.literal("LibrarySystem"), import_zod24.z.literal("Library")]),
|
|
1244
1260
|
name: import_zod24.z.string(),
|
|
1245
1261
|
url: import_zod24.z.url().optional(),
|
|
1246
1262
|
/** Unique identifier for the library system */
|
|
@@ -1313,9 +1329,7 @@ var BookSchema = import_zod24.z.object({
|
|
|
1313
1329
|
/** BCP 47 language tag */
|
|
1314
1330
|
inLanguage: import_zod24.z.string().optional(),
|
|
1315
1331
|
/** Aggregate rating across editions */
|
|
1316
|
-
aggregateRating: import_zod24.z.lazy(
|
|
1317
|
-
() => import_zod24.z.object({ "@type": import_zod24.z.string() }).catchall(import_zod24.z.unknown())
|
|
1318
|
-
).optional()
|
|
1332
|
+
aggregateRating: import_zod24.z.lazy(() => import_zod24.z.object({ "@type": import_zod24.z.string() }).catchall(import_zod24.z.unknown())).optional()
|
|
1319
1333
|
});
|
|
1320
1334
|
var createBook = makeFactory(BookSchema);
|
|
1321
1335
|
|
|
@@ -1337,18 +1351,23 @@ var CreativeWorkSchema = extendThing("CreativeWork", {
|
|
|
1337
1351
|
inLanguage: import_zod25.z.union([
|
|
1338
1352
|
import_zod25.z.string(),
|
|
1339
1353
|
// BCP 47, e.g. "en-US"
|
|
1340
|
-
import_zod25.z.object({
|
|
1354
|
+
import_zod25.z.object({
|
|
1355
|
+
"@type": import_zod25.z.literal("Language").default("Language"),
|
|
1356
|
+
name: import_zod25.z.string()
|
|
1357
|
+
})
|
|
1341
1358
|
]).optional(),
|
|
1342
1359
|
license: import_zod25.z.url().optional(),
|
|
1343
1360
|
thumbnailUrl: import_zod25.z.url().optional(),
|
|
1344
1361
|
isAccessibleForFree: import_zod25.z.boolean().optional(),
|
|
1345
1362
|
image: import_zod25.z.union([ImageOrUrl, import_zod25.z.array(ImageOrUrl)]).optional(),
|
|
1346
1363
|
// Paywalled content support:
|
|
1347
|
-
hasPart: import_zod25.z.array(
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1364
|
+
hasPart: import_zod25.z.array(
|
|
1365
|
+
import_zod25.z.object({
|
|
1366
|
+
"@type": import_zod25.z.string(),
|
|
1367
|
+
isAccessibleForFree: import_zod25.z.boolean().optional(),
|
|
1368
|
+
cssSelector: import_zod25.z.string().optional()
|
|
1369
|
+
})
|
|
1370
|
+
).optional(),
|
|
1352
1371
|
// For subscription / paywalled content
|
|
1353
1372
|
isPartOf: import_zod25.z.object({
|
|
1354
1373
|
"@type": import_zod25.z.string(),
|
|
@@ -1449,9 +1468,7 @@ var WebSiteSchema = CreativeWorkSchema.extend({
|
|
|
1449
1468
|
// Site-level metadata
|
|
1450
1469
|
copyrightYear: import_zod28.z.number().int().optional(),
|
|
1451
1470
|
// isPartOf — rarely used for WebSite itself but allowed
|
|
1452
|
-
isPartOf: import_zod28.z.lazy(
|
|
1453
|
-
() => import_zod28.z.object({ "@type": import_zod28.z.string() }).catchall(import_zod28.z.unknown())
|
|
1454
|
-
).optional()
|
|
1471
|
+
isPartOf: import_zod28.z.lazy(() => import_zod28.z.object({ "@type": import_zod28.z.string() }).catchall(import_zod28.z.unknown())).optional()
|
|
1455
1472
|
});
|
|
1456
1473
|
var createWebSite = makeFactory(WebSiteSchema);
|
|
1457
1474
|
|
|
@@ -1490,16 +1507,21 @@ var DatasetSchema = CreativeWorkSchema.extend({
|
|
|
1490
1507
|
// ISO 8601 or date range string
|
|
1491
1508
|
spatialCoverage: import_zod29.z.union([
|
|
1492
1509
|
import_zod29.z.string(),
|
|
1493
|
-
import_zod29.z.object({
|
|
1510
|
+
import_zod29.z.object({
|
|
1511
|
+
"@type": import_zod29.z.literal("Place").default("Place"),
|
|
1512
|
+
name: import_zod29.z.string()
|
|
1513
|
+
})
|
|
1494
1514
|
]).optional(),
|
|
1495
|
-
distribution: import_zod29.z.array(
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1515
|
+
distribution: import_zod29.z.array(
|
|
1516
|
+
import_zod29.z.object({
|
|
1517
|
+
"@type": import_zod29.z.literal("DataDownload").default("DataDownload"),
|
|
1518
|
+
encodingFormat: import_zod29.z.string(),
|
|
1519
|
+
// MIME type or format name
|
|
1520
|
+
contentUrl: import_zod29.z.url(),
|
|
1521
|
+
name: import_zod29.z.string().optional(),
|
|
1522
|
+
description: import_zod29.z.string().optional()
|
|
1523
|
+
})
|
|
1524
|
+
).optional(),
|
|
1503
1525
|
includedInDataCatalog: import_zod29.z.object({
|
|
1504
1526
|
"@type": import_zod29.z.literal("DataCatalog").default("DataCatalog"),
|
|
1505
1527
|
name: import_zod29.z.string(),
|
|
@@ -1524,7 +1546,7 @@ var HowToStepSchema = import_zod30.z.object({
|
|
|
1524
1546
|
// Step title (avoid "Step 1" format per Google)
|
|
1525
1547
|
text: import_zod30.z.string(),
|
|
1526
1548
|
// Step description
|
|
1527
|
-
url: import_zod30.z.
|
|
1549
|
+
url: import_zod30.z.url().optional(),
|
|
1528
1550
|
// Anchor link to step
|
|
1529
1551
|
image: ImageOrUrl.optional()
|
|
1530
1552
|
});
|
|
@@ -1645,11 +1667,13 @@ var CourseSchema = CreativeWorkSchema.extend({
|
|
|
1645
1667
|
image: import_zod32.z.union([ImageOrUrl, import_zod32.z.array(ImageOrUrl)]).optional(),
|
|
1646
1668
|
offers: import_zod32.z.union([OfferSchema, import_zod32.z.array(OfferSchema)]).optional(),
|
|
1647
1669
|
inLanguage: import_zod32.z.union([import_zod32.z.string(), import_zod32.z.array(import_zod32.z.string())]).optional(),
|
|
1648
|
-
syllabusSections: import_zod32.z.array(
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1670
|
+
syllabusSections: import_zod32.z.array(
|
|
1671
|
+
import_zod32.z.object({
|
|
1672
|
+
"@type": import_zod32.z.literal("Syllabus").default("Syllabus"),
|
|
1673
|
+
name: import_zod32.z.string(),
|
|
1674
|
+
description: import_zod32.z.string().optional()
|
|
1675
|
+
})
|
|
1676
|
+
).optional()
|
|
1653
1677
|
});
|
|
1654
1678
|
var createCourse = makeFactory(CourseSchema);
|
|
1655
1679
|
|
|
@@ -1751,7 +1775,7 @@ var MathSolverSchema = CreativeWorkSchema.extend({
|
|
|
1751
1775
|
educationalLevel: import_zod34.z.string().optional(),
|
|
1752
1776
|
teaches: import_zod34.z.union([import_zod34.z.string(), import_zod34.z.array(import_zod34.z.string())]).optional(),
|
|
1753
1777
|
/** URL of a page describing usage/terms for the solver — Google required field */
|
|
1754
|
-
usageInfo: import_zod34.z.
|
|
1778
|
+
usageInfo: import_zod34.z.url().optional(),
|
|
1755
1779
|
/** Learning resource type — defaults to "Math Solver" per Google spec */
|
|
1756
1780
|
learningResourceType: import_zod34.z.string().default("Math Solver"),
|
|
1757
1781
|
/** Topics the solver assesses */
|
|
@@ -1768,14 +1792,14 @@ var ClaimSchema = import_zod35.z.object({
|
|
|
1768
1792
|
/** ISO 8601 date the claim was made */
|
|
1769
1793
|
datePublished: import_zod35.z.string().optional(),
|
|
1770
1794
|
/** URL of the first appearance of the claim */
|
|
1771
|
-
firstAppearance: import_zod35.z.
|
|
1795
|
+
firstAppearance: import_zod35.z.url().optional(),
|
|
1772
1796
|
/** URL(s) of other appearances of the claim */
|
|
1773
|
-
appearance: import_zod35.z.union([import_zod35.z.
|
|
1797
|
+
appearance: import_zod35.z.union([import_zod35.z.url(), import_zod35.z.array(import_zod35.z.url())]).optional()
|
|
1774
1798
|
});
|
|
1775
1799
|
var ClaimReviewSchema = import_zod35.z.object({
|
|
1776
1800
|
"@type": import_zod35.z.literal("ClaimReview").default("ClaimReview"),
|
|
1777
1801
|
/** Canonical URL of the fact-check article */
|
|
1778
|
-
url: import_zod35.z.
|
|
1802
|
+
url: import_zod35.z.url(),
|
|
1779
1803
|
/** The text of the claim being evaluated */
|
|
1780
1804
|
claimReviewed: import_zod35.z.string(),
|
|
1781
1805
|
/** The rating given by the fact-checker */
|
|
@@ -1792,7 +1816,7 @@ var ClaimReviewSchema = import_zod35.z.object({
|
|
|
1792
1816
|
/** Name of the rating scale */
|
|
1793
1817
|
name: import_zod35.z.string().optional(),
|
|
1794
1818
|
/** URL of the rating explanation page */
|
|
1795
|
-
image: import_zod35.z.
|
|
1819
|
+
image: import_zod35.z.url().optional()
|
|
1796
1820
|
}),
|
|
1797
1821
|
/** The fact-checking author / organization */
|
|
1798
1822
|
author: import_zod35.z.union([PersonOrOrgRef, import_zod35.z.array(PersonOrOrgRef)]).optional(),
|
|
@@ -1909,7 +1933,7 @@ var AlignmentObjectSchema = import_zod38.z.object({
|
|
|
1909
1933
|
alignmentType: import_zod38.z.string(),
|
|
1910
1934
|
targetName: import_zod38.z.string(),
|
|
1911
1935
|
educationalFramework: import_zod38.z.string().optional(),
|
|
1912
|
-
targetUrl: import_zod38.z.
|
|
1936
|
+
targetUrl: import_zod38.z.url().optional(),
|
|
1913
1937
|
targetDescription: import_zod38.z.string().optional()
|
|
1914
1938
|
});
|
|
1915
1939
|
var AnswerSchema = import_zod38.z.object({
|
|
@@ -1920,16 +1944,18 @@ var AnswerSchema = import_zod38.z.object({
|
|
|
1920
1944
|
dateModified: import_zod38.z.string().optional(),
|
|
1921
1945
|
// ISO 8601
|
|
1922
1946
|
upvoteCount: import_zod38.z.number().int().nonnegative().optional(),
|
|
1923
|
-
url: import_zod38.z.
|
|
1947
|
+
url: import_zod38.z.url().optional(),
|
|
1924
1948
|
author: PersonOrOrgRef.optional(),
|
|
1925
1949
|
image: import_zod38.z.union([ImageOrUrl, import_zod38.z.array(ImageOrUrl)]).optional(),
|
|
1926
1950
|
video: import_zod38.z.union([VideoObjectSchema, import_zod38.z.array(VideoObjectSchema)]).optional(),
|
|
1927
|
-
comment: import_zod38.z.array(
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1951
|
+
comment: import_zod38.z.array(
|
|
1952
|
+
import_zod38.z.object({
|
|
1953
|
+
"@type": import_zod38.z.literal("Comment").default("Comment"),
|
|
1954
|
+
text: import_zod38.z.string(),
|
|
1955
|
+
author: PersonOrOrgRef.optional(),
|
|
1956
|
+
datePublished: import_zod38.z.string().optional()
|
|
1957
|
+
})
|
|
1958
|
+
).optional()
|
|
1933
1959
|
});
|
|
1934
1960
|
var QuestionSchema = import_zod38.z.object({
|
|
1935
1961
|
"@type": import_zod38.z.literal("Question").default("Question"),
|
|
@@ -1946,7 +1972,7 @@ var QuestionSchema = import_zod38.z.object({
|
|
|
1946
1972
|
datePublished: import_zod38.z.string().optional(),
|
|
1947
1973
|
dateModified: import_zod38.z.string().optional(),
|
|
1948
1974
|
// ISO 8601
|
|
1949
|
-
url: import_zod38.z.
|
|
1975
|
+
url: import_zod38.z.url().optional(),
|
|
1950
1976
|
image: import_zod38.z.union([ImageOrUrl, import_zod38.z.array(ImageOrUrl)]).optional(),
|
|
1951
1977
|
video: import_zod38.z.union([VideoObjectSchema, import_zod38.z.array(VideoObjectSchema)]).optional(),
|
|
1952
1978
|
/** Education Q&A question type, e.g. "Flashcard", "Problem Set" */
|
|
@@ -1964,9 +1990,7 @@ var QuizSchema = CreativeWorkSchema.extend({
|
|
|
1964
1990
|
"@type": import_zod38.z.literal("Quiz").default("Quiz"),
|
|
1965
1991
|
name: import_zod38.z.string().optional(),
|
|
1966
1992
|
educationalLevel: import_zod38.z.string().optional(),
|
|
1967
|
-
about: import_zod38.z.lazy(
|
|
1968
|
-
() => import_zod38.z.object({ "@type": import_zod38.z.string() }).catchall(import_zod38.z.unknown())
|
|
1969
|
-
).optional(),
|
|
1993
|
+
about: import_zod38.z.lazy(() => import_zod38.z.object({ "@type": import_zod38.z.string() }).catchall(import_zod38.z.unknown())).optional(),
|
|
1970
1994
|
hasPart: import_zod38.z.array(QuestionSchema).optional(),
|
|
1971
1995
|
educationalAlignment: import_zod38.z.union([AlignmentObjectSchema, import_zod38.z.array(AlignmentObjectSchema)]).optional()
|
|
1972
1996
|
});
|
|
@@ -1988,30 +2012,32 @@ var DiscussionForumPostingSchema = CreativeWorkSchema.extend({
|
|
|
1988
2012
|
// ISO 8601
|
|
1989
2013
|
dateModified: import_zod39.z.string().optional(),
|
|
1990
2014
|
// ISO 8601
|
|
1991
|
-
url: import_zod39.z.
|
|
1992
|
-
comment: import_zod39.z.array(
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2015
|
+
url: import_zod39.z.url().optional(),
|
|
2016
|
+
comment: import_zod39.z.array(
|
|
2017
|
+
import_zod39.z.object({
|
|
2018
|
+
"@type": import_zod39.z.literal("Comment").default("Comment"),
|
|
2019
|
+
text: import_zod39.z.string(),
|
|
2020
|
+
author: PersonOrOrgRef.optional(),
|
|
2021
|
+
datePublished: import_zod39.z.string().optional(),
|
|
2022
|
+
upvoteCount: import_zod39.z.number().int().nonnegative().optional(),
|
|
2023
|
+
downvoteCount: import_zod39.z.number().int().nonnegative().optional(),
|
|
2024
|
+
url: import_zod39.z.url().optional()
|
|
2025
|
+
})
|
|
2026
|
+
).optional(),
|
|
2001
2027
|
commentCount: import_zod39.z.number().int().nonnegative().optional(),
|
|
2002
2028
|
upvoteCount: import_zod39.z.number().int().nonnegative().optional(),
|
|
2003
2029
|
downvoteCount: import_zod39.z.number().int().nonnegative().optional(),
|
|
2004
2030
|
image: ImageOrUrl.optional(),
|
|
2005
2031
|
/** "published", "draft", "deleted" — or a schema.org enum URL */
|
|
2006
2032
|
creativeWorkStatus: import_zod39.z.string().optional(),
|
|
2007
|
-
mainEntityOfPage: import_zod39.z.union([import_zod39.z.
|
|
2033
|
+
mainEntityOfPage: import_zod39.z.union([import_zod39.z.url(), import_zod39.z.object({}).catchall(import_zod39.z.unknown())]).optional(),
|
|
2008
2034
|
// For reposts:
|
|
2009
|
-
sharedContent: import_zod39.z.lazy(
|
|
2010
|
-
() => import_zod39.z.object({ "@type": import_zod39.z.string() }).catchall(import_zod39.z.unknown())
|
|
2011
|
-
).optional(),
|
|
2035
|
+
sharedContent: import_zod39.z.lazy(() => import_zod39.z.object({ "@type": import_zod39.z.string() }).catchall(import_zod39.z.unknown())).optional(),
|
|
2012
2036
|
interactionStatistic: import_zod39.z.union([InteractionCounterSchema, import_zod39.z.array(InteractionCounterSchema)]).optional()
|
|
2013
2037
|
});
|
|
2014
|
-
var createDiscussionForumPosting = makeFactory(
|
|
2038
|
+
var createDiscussionForumPosting = makeFactory(
|
|
2039
|
+
DiscussionForumPostingSchema
|
|
2040
|
+
);
|
|
2015
2041
|
|
|
2016
2042
|
// src/types/intangibles/ItemList.ts
|
|
2017
2043
|
var import_zod40 = require("zod");
|
|
@@ -2021,9 +2047,7 @@ var ListItemSchema = import_zod40.z.object({
|
|
|
2021
2047
|
url: import_zod40.z.url().optional(),
|
|
2022
2048
|
name: import_zod40.z.string().optional(),
|
|
2023
2049
|
// item: the actual entity being listed (loose ref to any schema node)
|
|
2024
|
-
item: import_zod40.z.lazy(
|
|
2025
|
-
() => import_zod40.z.object({ "@type": import_zod40.z.string() }).catchall(import_zod40.z.unknown())
|
|
2026
|
-
).optional()
|
|
2050
|
+
item: import_zod40.z.lazy(() => import_zod40.z.object({ "@type": import_zod40.z.string() }).catchall(import_zod40.z.unknown())).optional()
|
|
2027
2051
|
});
|
|
2028
2052
|
var ItemListSchema = import_zod40.z.object({
|
|
2029
2053
|
"@type": import_zod40.z.literal("ItemList").default("ItemList"),
|
|
@@ -2103,7 +2127,7 @@ var AccommodationSchema = import_zod42.z.object({
|
|
|
2103
2127
|
import_zod42.z.array(LocationFeatureSpecificationSchema)
|
|
2104
2128
|
]).optional(),
|
|
2105
2129
|
petsAllowed: import_zod42.z.union([import_zod42.z.boolean(), import_zod42.z.string()]).optional(),
|
|
2106
|
-
url: import_zod42.z.
|
|
2130
|
+
url: import_zod42.z.url().optional(),
|
|
2107
2131
|
/** "EntirePlace", "PrivateRoom", or "SharedRoom" */
|
|
2108
2132
|
additionalType: import_zod42.z.string().optional()
|
|
2109
2133
|
});
|
|
@@ -2137,11 +2161,14 @@ var VacationRentalSchema = LocalBusinessSchema.extend({
|
|
|
2137
2161
|
ratingValue: import_zod42.z.number().min(0).max(5)
|
|
2138
2162
|
}).optional(),
|
|
2139
2163
|
offers: import_zod42.z.union([OfferSchema, import_zod42.z.array(OfferSchema)]).optional(),
|
|
2140
|
-
leaseLength: import_zod42.z.union([
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2164
|
+
leaseLength: import_zod42.z.union([
|
|
2165
|
+
import_zod42.z.string(),
|
|
2166
|
+
import_zod42.z.object({
|
|
2167
|
+
"@type": import_zod42.z.literal("QuantitativeValue").default("QuantitativeValue"),
|
|
2168
|
+
value: import_zod42.z.number(),
|
|
2169
|
+
unitCode: import_zod42.z.string().optional()
|
|
2170
|
+
})
|
|
2171
|
+
]).optional(),
|
|
2145
2172
|
floorSize: import_zod42.z.object({
|
|
2146
2173
|
"@type": import_zod42.z.literal("QuantitativeValue").default("QuantitativeValue"),
|
|
2147
2174
|
value: import_zod42.z.number(),
|
|
@@ -2263,6 +2290,104 @@ function createGraph(nodes) {
|
|
|
2263
2290
|
return graph;
|
|
2264
2291
|
}
|
|
2265
2292
|
|
|
2293
|
+
// src/core/ids.ts
|
|
2294
|
+
var SchemaIds = class {
|
|
2295
|
+
constructor(origin) {
|
|
2296
|
+
this.origin = origin;
|
|
2297
|
+
}
|
|
2298
|
+
/** @internal Build an ID from origin + fragment */
|
|
2299
|
+
id(fragment) {
|
|
2300
|
+
return `${this.origin}/#${fragment}`;
|
|
2301
|
+
}
|
|
2302
|
+
// ── Well-known entity IDs ───────────────────────────────────────────────
|
|
2303
|
+
// Things
|
|
2304
|
+
organization() {
|
|
2305
|
+
return this.id("organization");
|
|
2306
|
+
}
|
|
2307
|
+
localBusiness() {
|
|
2308
|
+
return this.id("localbusiness");
|
|
2309
|
+
}
|
|
2310
|
+
person() {
|
|
2311
|
+
return this.id("person");
|
|
2312
|
+
}
|
|
2313
|
+
product() {
|
|
2314
|
+
return this.id("product");
|
|
2315
|
+
}
|
|
2316
|
+
event() {
|
|
2317
|
+
return this.id("event");
|
|
2318
|
+
}
|
|
2319
|
+
place() {
|
|
2320
|
+
return this.id("place");
|
|
2321
|
+
}
|
|
2322
|
+
movie() {
|
|
2323
|
+
return this.id("movie");
|
|
2324
|
+
}
|
|
2325
|
+
// Creative works
|
|
2326
|
+
website() {
|
|
2327
|
+
return this.id("website");
|
|
2328
|
+
}
|
|
2329
|
+
webpage() {
|
|
2330
|
+
return this.id("webpage");
|
|
2331
|
+
}
|
|
2332
|
+
article() {
|
|
2333
|
+
return this.id("article");
|
|
2334
|
+
}
|
|
2335
|
+
breadcrumb() {
|
|
2336
|
+
return this.id("breadcrumb");
|
|
2337
|
+
}
|
|
2338
|
+
dataset() {
|
|
2339
|
+
return this.id("dataset");
|
|
2340
|
+
}
|
|
2341
|
+
recipe() {
|
|
2342
|
+
return this.id("recipe");
|
|
2343
|
+
}
|
|
2344
|
+
course() {
|
|
2345
|
+
return this.id("course");
|
|
2346
|
+
}
|
|
2347
|
+
softwareApplication() {
|
|
2348
|
+
return this.id("softwareapplication");
|
|
2349
|
+
}
|
|
2350
|
+
// Intangibles & other
|
|
2351
|
+
faqPage() {
|
|
2352
|
+
return this.id("faqpage");
|
|
2353
|
+
}
|
|
2354
|
+
jobPosting() {
|
|
2355
|
+
return this.id("jobposting");
|
|
2356
|
+
}
|
|
2357
|
+
vacationRental() {
|
|
2358
|
+
return this.id("vacationrental");
|
|
2359
|
+
}
|
|
2360
|
+
profilePage() {
|
|
2361
|
+
return this.id("profilepage");
|
|
2362
|
+
}
|
|
2363
|
+
// ── Custom IDs ──────────────────────────────────────────────────────────
|
|
2364
|
+
/**
|
|
2365
|
+
* Generate an ID with any custom fragment.
|
|
2366
|
+
* @example ids.custom("hero-banner") // "https://example.com/#hero-banner"
|
|
2367
|
+
*/
|
|
2368
|
+
custom(fragment) {
|
|
2369
|
+
return this.id(fragment);
|
|
2370
|
+
}
|
|
2371
|
+
/**
|
|
2372
|
+
* Generate an ID scoped to a specific page path.
|
|
2373
|
+
* @example ids.forPath("/about", "webpage") // "https://example.com/about#webpage"
|
|
2374
|
+
*/
|
|
2375
|
+
forPath(path, fragment) {
|
|
2376
|
+
return `${this.origin}${path}#${fragment}`;
|
|
2377
|
+
}
|
|
2378
|
+
// ── Reference helper ────────────────────────────────────────────────────
|
|
2379
|
+
/**
|
|
2380
|
+
* Returns a `{ "@id": "..." }` reference object for cross-referencing
|
|
2381
|
+
* entities within a @graph. Pass to fields like publisher, organizer, etc.
|
|
2382
|
+
*
|
|
2383
|
+
* @example
|
|
2384
|
+
* createWebSite({ publisher: ids.ref("organization"), ... })
|
|
2385
|
+
*/
|
|
2386
|
+
ref(fragment) {
|
|
2387
|
+
return { "@id": this.id(fragment) };
|
|
2388
|
+
}
|
|
2389
|
+
};
|
|
2390
|
+
|
|
2266
2391
|
// src/helpers/breadcrumb.ts
|
|
2267
2392
|
var import_zod43 = require("zod");
|
|
2268
2393
|
var BreadcrumbListSchema = import_zod43.z.object({
|
|
@@ -2427,6 +2552,7 @@ function createPaywalledWebPage(data, options) {
|
|
|
2427
2552
|
RecipeSchema,
|
|
2428
2553
|
ReviewSchema,
|
|
2429
2554
|
SchemaGraph,
|
|
2555
|
+
SchemaIds,
|
|
2430
2556
|
SchemaNode,
|
|
2431
2557
|
SeekToActionSchema,
|
|
2432
2558
|
ServicePeriodSchema,
|