diff --git a/packages/explorer/src/core/content/repositories/generated.mts b/packages/explorer/src/core/content/repositories/generated.mts index 99e54b29..1e6b2f6c 100644 --- a/packages/explorer/src/core/content/repositories/generated.mts +++ b/packages/explorer/src/core/content/repositories/generated.mts @@ -56,7 +56,8 @@ const getWebPageDocuments = async (): Promise => { documents: new Array() .concat(generated.allPages) .concat(generated.allArticles) - .concat(generated.allPeople), + .concat(generated.allPeople) + .concat(generated.allPlaces), people: generated.allPeople, }); diff --git a/packages/explorer/src/core/content/types/_schemas.mts b/packages/explorer/src/core/content/types/_schemas.mts index 5f23729e..3b7b7671 100644 --- a/packages/explorer/src/core/content/types/_schemas.mts +++ b/packages/explorer/src/core/content/types/_schemas.mts @@ -85,6 +85,16 @@ const itemListSchema = thingSchema.extend({ ), }); +// Schema: https://schema.org/PostalAddress +export const postalAddressSchema = thingSchema.extend({ + addressCountry: z.string(), + addressLocality: z.string().optional(), + addressRegion: z.string().optional(), + postOfficeBoxNumber: z.string().optional(), + postalCode: z.string().optional(), + streetAddress: z.string().optional(), +}); + // Schema: https://schema.org/Person export const personSchema = thingSchema.extend({ additionalName: z.string().optional(), @@ -95,6 +105,15 @@ export const personSchema = thingSchema.extend({ telephone: z.string().optional(), }); +// Schema: https://schema.org/Place +export const placeSchema = thingSchema.extend({ + address: postalAddressSchema.optional(), + latitude: z.string().or(z.number()).optional(), + longitude: z.string().or(z.number()).optional(), + keywords: z.array(z.string()).optional(), + telephone: z.string().optional(), +}); + // Schema: https://schema.org/CreativeWork const creativeWorkSchema = thingSchema.extend({ url: z.string(), @@ -189,6 +208,7 @@ export const pageSchema = galactiksSchema.merge(webPageSchema); export type MetadataHeaders = z.infer; export type ItemList = z.infer; export type Person = z.infer; +export type Place = z.infer; export type Organization = z.infer; export type Article = z.infer; export type Page = z.infer; diff --git a/packages/explorer/src/core/content/types/index.mts b/packages/explorer/src/core/content/types/index.mts index 69c77bbf..cae8089f 100644 --- a/packages/explorer/src/core/content/types/index.mts +++ b/packages/explorer/src/core/content/types/index.mts @@ -3,6 +3,7 @@ import type { Article as ContentlayerArticle, Page as ContentlayerPage, Person as ContentlayerPerson, + Place as ContentlayerPlace, } from '@galactiks/contentlayer'; import type { MetadataHeaders, Page } from './_schemas.mjs'; @@ -16,6 +17,7 @@ export type { DocumentTypes as ContentlayerDocumentTypes, DataExports as ContentlayerDataExports, Person as ContentlayerPerson, + Place as ContentlayerPlace, Website as ContentlayerWebsite, WebPageElement as ContentlayerWebPageElement, } from '@galactiks/contentlayer'; @@ -25,4 +27,5 @@ export type ContentlayerWebPageDocument = | ContentlayerArticle | ContentlayerPage | ContentlayerPerson + | ContentlayerPlace | ContentlayerTagPage;