configuration/constants/schema.constants.ts
configuration/constants/schema.constants.ts is a file in Bane's Lab Site. 96 lines of code and 18 definitions.
import {
ABOUT_DESCRIPTION,
DATA_CATALOG_DESCRIPTION,
DATA_CATALOG_NAME,
HOME_DESCRIPTION,
SITE_NAME,
} from "#configuration/strings/page.strings";
import { ABOUT_PAGE, HOME_PAGE } from "#core/ids/page.ids";
import { AUTHOR_GITHUB, AUTHOR_PROFILE, SITE_URL, pagePath } from "#core/assets/link.assets";
import {
AUTHOR_HANDLE,
COMPANY_CITY,
COMPANY_COUNTRY,
COMPANY_EMAIL,
COMPANY_FOUNDED,
COMPANY_NAME,
COMPANY_NUMBER,
COMPANY_OWNER,
COMPANY_POSTAL_CODE,
COMPANY_STAFF,
COMPANY_STREET,
} from "#configuration/strings/company.strings";
import { BADGE_LOGO } from "#core/assets/image.assets";
import type { SchemaEntity } from "#types/schema.types";
export const SCHEMA_CONTEXT = "https://schema.org";
export const SCHEMA_LANGUAGE = "en";
export const ORGANIZATION_ID = `${SITE_URL}/#organization`;
export const PERSON_ID = `${SITE_URL}/#person`;
export const WEBSITE_ID = `${SITE_URL}/#website`;
const NUMBER_SEPARATOR = ".";
const ENTERPRISE_NUMBER = COMPANY_NUMBER.split(NUMBER_SEPARATOR).join("");
const VAT_ID = COMPANY_COUNTRY + ENTERPRISE_NUMBER;
const ENTERPRISE_SCHEME = "0208:";
export const ORGANIZATION: SchemaEntity = {
"@id": ORGANIZATION_ID,
"@type": "Organization",
address: {
"@type": "PostalAddress",
addressCountry: COMPANY_COUNTRY,
addressLocality: COMPANY_CITY,
postalCode: COMPANY_POSTAL_CODE,
streetAddress: COMPANY_STREET,
},
contactPoint: { "@type": "ContactPoint", email: COMPANY_EMAIL, url: SITE_URL + pagePath(HOME_PAGE) },
description: HOME_DESCRIPTION,
email: COMPANY_EMAIL,
founder: { "@id": PERSON_ID },
foundingDate: COMPANY_FOUNDED,
iso6523Code: ENTERPRISE_SCHEME + ENTERPRISE_NUMBER,
legalName: COMPANY_OWNER,
logo: SITE_URL + BADGE_LOGO,
name: COMPANY_NAME,
numberOfEmployees: { "@type": "QuantitativeValue", value: COMPANY_STAFF },
sameAs: [AUTHOR_GITHUB, AUTHOR_PROFILE],
taxID: VAT_ID,
url: SITE_URL + pagePath(HOME_PAGE),
vatID: VAT_ID,
};
export const AUTHOR: SchemaEntity = {
"@id": PERSON_ID,
"@type": "Person",
name: COMPANY_OWNER,
url: SITE_URL + pagePath(ABOUT_PAGE),
};
export const PERSON: SchemaEntity = {
"@id": PERSON_ID,
"@type": "Person",
alternateName: AUTHOR_HANDLE,
description: ABOUT_DESCRIPTION,
email: COMPANY_EMAIL,
name: COMPANY_OWNER,
sameAs: [AUTHOR_PROFILE, AUTHOR_GITHUB],
url: SITE_URL + pagePath(ABOUT_PAGE),
worksFor: { "@id": ORGANIZATION_ID },
};
export const DATA_CATALOG_ID = `${SITE_URL}/#catalog`;
export const DATASET_FRAGMENT = "#dataset";
export const DATASET_TYPE = "Dataset";
export const PROFILE_PAGE_TYPE = "ProfilePage";
export const DATA_CATALOG: SchemaEntity = {
"@id": DATA_CATALOG_ID,
"@type": "DataCatalog",
description: DATA_CATALOG_DESCRIPTION,
name: DATA_CATALOG_NAME,
publisher: { "@id": ORGANIZATION_ID },
url: SITE_URL + pagePath(HOME_PAGE),
};
export const WEBSITE: SchemaEntity = {
"@id": WEBSITE_ID,
"@type": "WebSite",
description: HOME_DESCRIPTION,
inLanguage: SCHEMA_LANGUAGE,
name: SITE_NAME,
publisher: { "@id": ORGANIZATION_ID },
url: SITE_URL + pagePath(HOME_PAGE),
};