Compare commits

...

17 Commits

Author SHA1 Message Date
bdf55a19d9 2.0.13 2020-03-13 11:46:21 +00:00
cd1f68f55e fix(core): update 2020-03-13 11:46:20 +00:00
f2bd7145b3 2.0.12 2020-03-08 15:14:25 +00:00
6d9789df45 fix(core): update 2020-03-08 15:14:24 +00:00
0be8a6f60d 2.0.11 2020-03-08 10:54:12 +00:00
a3793572e7 fix(core): update 2020-03-08 10:54:12 +00:00
6ace59d1d1 2.0.10 2020-03-08 10:48:23 +00:00
b6ddf6a87b 2.0.9 2020-03-07 22:01:04 +00:00
b999627ba5 fix(core): update 2020-03-07 22:01:03 +00:00
5e8a91f302 2.0.8 2020-03-07 16:23:12 +00:00
2fc0613fa6 fix(core): update 2020-03-07 16:23:12 +00:00
2283cdb633 2.0.7 2020-03-07 16:08:22 +00:00
c0db06fc18 fix(core): update 2020-03-07 16:08:21 +00:00
4557000629 2.0.6 2020-03-06 15:26:27 +00:00
78997e1e5a fix(core): update 2020-03-06 15:26:26 +00:00
4d5564e8d4 2.0.5 2020-03-06 15:12:24 +00:00
11d89adc4b fix(core): update 2020-03-06 15:12:23 +00:00
6 changed files with 1889 additions and 111 deletions

4
.gitignore vendored
View File

@ -15,8 +15,6 @@ node_modules/
# builds
dist/
dist_web/
dist_serve/
dist_ts_web/
dist_*/
# custom

1888
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{
"name": "@pushrocks/websetup",
"version": "2.0.4",
"version": "2.0.13",
"private": false,
"description": "setup basic page properties",
"main": "dist/index.js",
@ -9,8 +9,9 @@
"license": "MIT",
"scripts": {
"test": "(tstest test/)",
"build": "(tsbuild --web)",
"format": "(gitzone format)"
"build": "(tsbuild --web && npm run bundle)",
"format": "(gitzone format)",
"bundle": "tsbundle --production --from ./ts/index.ts --to ./dist_bundle/bundle.js"
},
"keywords": [
"lossless",
@ -18,12 +19,15 @@
],
"devDependencies": {
"@gitzone/tsbuild": "^2.1.17",
"@gitzone/tsbundle": "^1.0.50",
"@gitzone/tstest": "^1.0.28",
"@pushrocks/tapbundle": "^3.2.0",
"tslint": "^6.0.0",
"tslint-config-prettier": "^1.15.0"
},
"dependencies": {},
"dependencies": {
"@tsclass/tsclass": "^3.0.12"
},
"files": [
"ts/**/*",
"ts_web/**/*",

View File

@ -1,29 +1,105 @@
import * as plugins from '../websetup.plugins';
export interface IMetaObject {
title: string;
description: string;
canonicalDomain?: string;
ldCompany?: plugins.tsclass.business.ICompany;
ldProduct?: any;
}
export const setupMetaInformation = async (metaObjectArg: IMetaObject) => {
document.title = metaObjectArg.title;
addMetaTag('description', metaObjectArg.description);
addMetaTag('google', 'notranslate');
addMetaTag('revisited-after', '1 days');
addMetaTag('revisit-after', '1 days');
metaObjectArg.canonicalDomain ? addLinkTag('canonical', metaObjectArg.canonicalDomain) : null;
if (metaObjectArg.ldCompany) {
addCompanyInfo(metaObjectArg.ldCompany);
}
};
const addMetaTag = async (linkNameArg: string, contentArg: string) => {
const addMetaTag = async (metaNameArg: string, contentArg: string) => {
const metaElement = document.createElement('meta');
metaElement.name = linkNameArg;
metaElement.name = metaNameArg;
metaElement.content = contentArg;
document.getElementsByTagName('head')[0].appendChild(metaElement);
};
const addLinkTag = async (relArg, hrefArg) => {
const addLinkTag = async (relArg, hrefArg): Promise<Element> => {
const link = !!document.querySelector("link[rel='canonical']")
? document.querySelector("link[rel='canonical']")
: document.createElement('link');
link.setAttribute('rel', relArg);
link.setAttribute('href', hrefArg);
document.head.appendChild(link);
return link;
};
const addOpenGraphProperty = async (
propertyNameArg: string,
contentArg: string
): Promise<Element> => {
const openGraphElement = document.createElement('meta');
openGraphElement.setAttribute('property', propertyNameArg);
openGraphElement.content = contentArg;
document.getElementsByTagName('head')[0].appendChild(openGraphElement);
return openGraphElement;
};
const addCompanyInfo = async (
companyDataArg: plugins.tsclass.business.ICompany
): Promise<Element[]> => {
const returnElementArray: Element[] = [];
// lets care about linked data
const companyLd = {
'@context': 'https://schema.org',
'@type': 'Corporation',
name: companyDataArg.name,
alternateName: companyDataArg.name.replace(' GmbH', ''),
url: companyDataArg.contact.website,
logo: companyDataArg.contact.logoUrl,
contactPoint: {
'@type': 'ContactPoint',
telephone: companyDataArg.contact.phone,
contactType: 'customer service',
areaServed: 'DE',
availableLanguage: ['en', 'German']
},
sameAs: []
};
if (companyDataArg.contact.facebookUrl) {
companyLd.sameAs.push(companyDataArg.contact.facebookUrl);
}
if (companyDataArg.contact.twitterUrl) {
companyLd.sameAs.push(companyDataArg.contact.twitterUrl);
}
const jsonLdElement = document.createElement('script');
jsonLdElement.type = 'application/ld+json';
jsonLdElement.text = JSON.stringify(companyLd);
document.querySelector('head').appendChild(jsonLdElement);
returnElementArray.push(jsonLdElement);
// lets care about open graph
returnElementArray.push(await addOpenGraphProperty('og:type', 'business.business'));
returnElementArray.push(await addOpenGraphProperty('og:title', companyDataArg.name));
returnElementArray.push(await addOpenGraphProperty('og:url', companyDataArg.contact.website));
returnElementArray.push(await addOpenGraphProperty('og:image', companyDataArg.contact.logoUrl));
returnElementArray.push(
await addOpenGraphProperty(
'business:contact_data:street_address',
`${companyDataArg.contact.address.streetName} ${companyDataArg.contact.address.houseNumber}`
)
);
returnElementArray.push(await addOpenGraphProperty('business:contact_data:locality', companyDataArg.contact.address.postalCode));
returnElementArray.push(await addOpenGraphProperty('business:contact_data:region', companyDataArg.contact.address.city));
returnElementArray.push(await addOpenGraphProperty('business:contact_data:postal_code', companyDataArg.contact.address.postalCode));
returnElementArray.push(await addOpenGraphProperty('business:contact_data:country_name', companyDataArg.contact.address.country));
return returnElementArray;
};

View File

@ -1,7 +1,10 @@
declare global {
// tslint:disable-next-line: interface-name
interface Window {
_fs_debug: boolean;
_fs_host: any;
_fs_org: string;
_fs_namespace: string;
}
}
export const setupFullStory = async (fsCodeArg: string) => {
@ -13,7 +16,7 @@ export const setupFullStory = async (fsCodeArg: string) => {
window['_fs_org'] = fsCodeArg;
// tslint:disable-next-line: no-string-literal
window['_fs_namespace'] = 'FS';
(function(m, n, e, t, l, o, g, y) {
((m, n, e, t, l, o, g, y) => {
if (e in m) {
if (m.console && m.console.log) {
m.console.log('FullStory namespace conflict. Please set window["_fs_namespace"].');

View File

@ -1,2 +1,5 @@
const removeme = {};
export { removeme };
import * as tsclass from '@tsclass/tsclass';
export {
tsclass
};