Compare commits

...

13 Commits

Author SHA1 Message Date
49ca240237 3.0.0 2020-09-22 14:26:14 +00:00
c802e8846a BREAKING CHANGE(core): update 2020-09-22 14:26:13 +00:00
1f7be6b8a0 2.0.18 2020-07-08 19:01:56 +00:00
a0cbe170c8 2.0.17 2020-07-08 11:10:20 +00:00
5df46f8b77 fix(core): update 2020-07-08 11:10:20 +00:00
c12e9eaf76 2.0.16 2020-06-27 12:51:34 +00:00
2aa1839c22 fix(core): update 2020-06-27 12:51:34 +00:00
8e4bdb867c 2.0.15 2020-06-27 12:50:45 +00:00
359e18f5dc fix(core): update 2020-06-27 12:50:44 +00:00
751a325c81 2.0.14 2020-03-15 19:11:14 +00:00
93d4bc491f fix(core): update 2020-03-15 19:11:14 +00:00
bdf55a19d9 2.0.13 2020-03-13 11:46:21 +00:00
cd1f68f55e fix(core): update 2020-03-13 11:46:20 +00:00
14 changed files with 9057 additions and 1339 deletions

4
.gitignore vendored
View File

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

View File

@ -24,13 +24,14 @@ mirror:
- docker - docker
- notpriv - notpriv
snyk: audit:
image: registry.gitlab.com/hosttoday/ht-docker-node:snyk image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security stage: security
script: script:
- npmci npm prepare - npmci npm prepare
- npmci command npm install --ignore-scripts - npmci command npm install --ignore-scripts
- npmci command snyk test - npmci command npm config set registry https://registry.npmjs.org
- npmci command npm audit --audit-level=high
tags: tags:
- lossless - lossless
- docker - docker

View File

@ -1,2 +0,0 @@
var tsbundle=function(t){"use strict";const e=async(t,e)=>{const n=document.createElement("meta");n.name=t,n.content=e,document.getElementsByTagName("head")[0].appendChild(n)},n=async(t,e)=>{const n=document.querySelector("link[rel='canonical']")?document.querySelector("link[rel='canonical']"):document.createElement("link");return n.setAttribute("rel",t),n.setAttribute("href",e),document.head.appendChild(n),n},a=async(t,e)=>{const n=document.createElement("meta");return n.setAttribute("property",t),n.content=e,document.getElementsByTagName("head")[0].appendChild(n),n},o=async t=>{const e=[],n={"@context":"https://schema.org","@type":"Corporation",name:t.name,alternateName:t.name.replace(" GmbH",""),url:t.contact.website,logo:t.contact.logoUrl,contactPoint:{"@type":"ContactPoint",telephone:t.contact.phone,contactType:"customer service",areaServed:"DE",availableLanguage:["en","German"]},sameAs:[]};t.contact.facebookUrl&&n.sameAs.push(t.contact.facebookUrl),t.contact.twitterUrl&&n.sameAs.push(t.contact.twitterUrl);const o=document.createElement("script");return o.type="application/ld+json",o.text=JSON.stringify(n),document.querySelector("head").appendChild(o),e.push(o),e.push(await a("og:type","business.business")),e.push(await a("og:title",t.name)),e.push(await a("og:url",t.contact.website)),e.push(await a("og:image",t.contact.logoUrl)),e.push(await a("business:contact_data:street_address",`${t.contact.address.streetName} ${t.contact.address.houseNumber}`)),e.push(await a("business:contact_data:locality",t.contact.address.postalCode)),e.push(await a("business:contact_data:region",t.contact.address.city)),e.push(await a("business:contact_data:postal_code",t.contact.address.postalCode)),e.push(await a("business:contact_data:country_name",t.contact.address.country)),e};return t.WebSetup=class{constructor(t){this.options=t}async setup(){await(async t=>{document.title=t.title,e("description",t.description),e("google","notranslate"),e("revisit-after","1 days"),t.canonicalDomain&&n("canonical",t.canonicalDomain),t.ldCompany&&o(t.ldCompany)})(this.options.metaObject),this.options.googleAnalyticsCode&&await(async t=>{var e,n,a,o,s,c;e=window,n=document,a="script",o="analytics",e.GoogleAnalyticsObject=o,e[o]=e[o]||function(){(e[o].q=e[o].q||[]).push(arguments)},e[o].l=(new Date).getTime(),s=n.createElement(a),c=n.getElementsByTagName(a)[0],s.async=1,s.src="//www.google-analytics.com/analytics.js",s.crossorigin="anonymous",c.parentNode.insertBefore(s,c),window.analytics("create",t,"auto"),window.analytics("send","pageview"),console.log("Loaded Google Analytics. You may view our privacy policy at https://lossless.gmbh")})(this.options.googleAnalyticsCode),this.options.fsCode&&await(async t=>{var e,n,a,o,s,c,i,r;window._fs_debug=!1,window._fs_host="fullstory.com",window._fs_org=t,window._fs_namespace="FS",e=window,n=document,a=window._fs_namespace,o="script",s="user",a in e?e.console&&e.console.log&&e.console.log('FullStory namespace conflict. Please set window["_fs_namespace"].'):((i=e[a]=function(t,e,n){i.q?i.q.push([t,e,n]):i._api(t,e,n)}).q=[],(c=n.createElement(o)).async=1,c.src="https://"+window._fs_host+"/s/fs.js",c.crossorigin="anonymous",(r=n.getElementsByTagName(o)[0]).parentNode.insertBefore(c,r),i.identify=function(t,e,n){i(s,{uid:t},n),e&&i(s,e,n)},i.setUserVars=function(t,e){i(s,t,e)},i.event=function(t,e,n){i("event",{n:t,p:e},n)},i.shutdown=function(){i("rec",!1)},i.restart=function(){i("rec",!0)},i.consent=function(t){i("consent",!arguments.length||t)},i.identifyAccount=function(t,e){c="account",(e=e||{}).acctId=t,i(c,e)},i.clearUserCookie=function(){})})(this.options.fsCode)}},t}({});
//# sourceMappingURL=bundle.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"bundle.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}

10160
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,42 +1,44 @@
{ {
"name": "@pushrocks/websetup", "name": "@pushrocks/websetup",
"version": "2.0.12", "version": "3.0.0",
"private": false, "private": false,
"description": "setup basic page properties", "description": "setup basic page properties",
"main": "dist/index.js", "main": "dist_ts/index.js",
"typings": "dist/index.d.ts", "typings": "dist_ts/index.d.ts",
"author": "Lossless GmbH", "author": "Lossless GmbH",
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {
"test": "(tstest test/)", "test": "(tstest test/)",
"build": "(tsbuild --web && npm run bundle)", "build": "(tsbuild --web && tsbundle npm)"
"format": "(gitzone format)",
"bundle": "tsbundle --production --from ./ts/index.ts --to ./dist_bundle/bundle.js"
}, },
"keywords": [ "keywords": [
"lossless", "lossless",
"websafe" "websafe"
], ],
"devDependencies": { "devDependencies": {
"@gitzone/tsbuild": "^2.1.17", "@gitzone/tsbuild": "^2.1.22",
"@gitzone/tsbundle": "^1.0.50", "@gitzone/tsbundle": "^1.0.72",
"@gitzone/tstest": "^1.0.28", "@gitzone/tstest": "^1.0.38",
"@pushrocks/tapbundle": "^3.2.0", "@pushrocks/tapbundle": "^3.2.7",
"tslint": "^6.0.0", "tslint": "^6.1.0",
"tslint-config-prettier": "^1.15.0" "tslint-config-prettier": "^1.15.0"
}, },
"dependencies": { "dependencies": {
"@tsclass/tsclass": "^3.0.12" "@tsclass/tsclass": "^3.0.18"
}, },
"files": [ "files": [
"ts/**/*", "ts/**/*",
"ts_web/**/*", "ts_web/**/*",
"dist/**/*", "dist/**/*",
"dist_web/**/*", "dist_*/**/*",
"dist_ts/**/*",
"dist_ts_web/**/*", "dist_ts_web/**/*",
"assets/**/*", "assets/**/*",
"cli.js", "cli.js",
"npmextra.json", "npmextra.json",
"readme.md" "readme.md"
],
"browserslist": [
"last 1 chrome versions"
] ]
} }

View File

@ -8,16 +8,24 @@ setup basic page properties
* [docs (typedoc)](https://pushrocks.gitlab.io/websetup/) * [docs (typedoc)](https://pushrocks.gitlab.io/websetup/)
## Status for master ## Status for master
[![pipeline status](https://gitlab.com/pushrocks/websetup/badges/master/pipeline.svg)](https://gitlab.com/pushrocks/websetup/commits/master)
[![coverage report](https://gitlab.com/pushrocks/websetup/badges/master/coverage.svg)](https://gitlab.com/pushrocks/websetup/commits/master) Status Category | Status Badge
[![npm downloads per month](https://img.shields.io/npm/dm/@pushrocks/websetup.svg)](https://www.npmjs.com/package/@pushrocks/websetup) -- | --
[![Known Vulnerabilities](https://snyk.io/test/npm/@pushrocks/websetup/badge.svg)](https://snyk.io/test/npm/@pushrocks/websetup) GitLab Pipelines | [![pipeline status](https://gitlab.com/pushrocks/websetup/badges/master/pipeline.svg)](https://lossless.cloud)
[![TypeScript](https://img.shields.io/badge/TypeScript->=%203.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/) GitLab Pipline Test Coverage | [![coverage report](https://gitlab.com/pushrocks/websetup/badges/master/coverage.svg)](https://lossless.cloud)
[![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/) npm | [![npm downloads per month](https://badgen.net/npm/dy/@pushrocks/websetup)](https://lossless.cloud)
[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-prettier-ff69b4.svg)](https://prettier.io/) Snyk | [![Known Vulnerabilities](https://badgen.net/snyk/pushrocks/websetup)](https://lossless.cloud)
TypeScript Support | [![TypeScript](https://badgen.net/badge/TypeScript/>=%203.x/blue?icon=typescript)](https://lossless.cloud)
node Support | [![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)
Code Style | [![Code Style](https://badgen.net/badge/style/prettier/purple)](https://lossless.cloud)
PackagePhobia (total standalone install weight) | [![PackagePhobia](https://badgen.net/packagephobia/install/@pushrocks/websetup)](https://lossless.cloud)
PackagePhobia (package size on registry) | [![PackagePhobia](https://badgen.net/packagephobia/publish/@pushrocks/websetup)](https://lossless.cloud)
BundlePhobia (total size when bundled) | [![BundlePhobia](https://badgen.net/bundlephobia/minzip/@pushrocks/websetup)](https://lossless.cloud)
Platform support | [![Supports Windows 10](https://badgen.net/badge/supports%20Windows%2010/yes/green?icon=windows)](https://lossless.cloud) [![Supports Mac OS X](https://badgen.net/badge/supports%20Mac%20OS%20X/yes/green?icon=apple)](https://lossless.cloud)
## Usage ## Usage
Use TypeScript for best in class intellisense.
## Contribution ## Contribution

16
test/test.browser.ts Normal file
View File

@ -0,0 +1,16 @@
import { expect, tap } from '@pushrocks/tapbundle';
import * as websetup from '../ts/index';
tap.test('first test', async () => {
const websetupInstance = new websetup.WebSetup({
metaObject: {
description: 'A awesome description',
title: 'mytitle',
canonicalDomain: 'lossless.com'
}
});
await websetupInstance.setup();
expect(document.title).to.equal('mytitle');
});
tap.start();

View File

@ -1,8 +0,0 @@
import { expect, tap } from '@pushrocks/tapbundle';
import * as websetup from '../ts/index';
tap.test('first test', async () => {
console.log('Waiting for proper puppeteer support here');
});
tap.start();

View File

@ -1,12 +1,7 @@
import * as plugins from './websetup.plugins'; import * as plugins from './websetup.plugins';
import { setupGoogleAnalytics } from './tools/ganalytics';
import { setupFullStory } from './tools/fullstory';
import { IMetaObject, setupMetaInformation } from './meta'; import { IMetaObject, setupMetaInformation } from './meta';
export interface IWebSetupConstructorOptions { export interface IWebSetupConstructorOptions {
googleAnalyticsCode?: string;
fsCode?: string;
metaObject: IMetaObject; metaObject: IMetaObject;
} }
@ -21,13 +16,5 @@ export class WebSetup {
public async setup() { public async setup() {
await setupMetaInformation(this.options.metaObject); await setupMetaInformation(this.options.metaObject);
if (this.options.googleAnalyticsCode) {
await setupGoogleAnalytics(this.options.googleAnalyticsCode);
}
if (this.options.fsCode) {
await setupFullStory(this.options.fsCode);
}
} }
} }

View File

@ -66,9 +66,9 @@ const addCompanyInfo = async (
telephone: companyDataArg.contact.phone, telephone: companyDataArg.contact.phone,
contactType: 'customer service', contactType: 'customer service',
areaServed: 'DE', areaServed: 'DE',
availableLanguage: ['en', 'German'] availableLanguage: ['en', 'German'],
}, },
sameAs: [] sameAs: [],
}; };
if (companyDataArg.contact.facebookUrl) { if (companyDataArg.contact.facebookUrl) {
@ -96,10 +96,27 @@ const addCompanyInfo = async (
`${companyDataArg.contact.address.streetName} ${companyDataArg.contact.address.houseNumber}` `${companyDataArg.contact.address.streetName} ${companyDataArg.contact.address.houseNumber}`
) )
); );
returnElementArray.push(await addOpenGraphProperty('business:contact_data:locality', companyDataArg.contact.address.postalCode)); returnElementArray.push(
returnElementArray.push(await addOpenGraphProperty('business:contact_data:region', companyDataArg.contact.address.city)); await addOpenGraphProperty(
returnElementArray.push(await addOpenGraphProperty('business:contact_data:postal_code', companyDataArg.contact.address.postalCode)); 'business:contact_data:locality',
returnElementArray.push(await addOpenGraphProperty('business:contact_data:country_name', companyDataArg.contact.address.country)); 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; return returnElementArray;
}; };

View File

@ -1,70 +0,0 @@
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) => {
// tslint:disable-next-line: no-string-literal
window['_fs_debug'] = false;
// tslint:disable-next-line: no-string-literal
window['_fs_host'] = 'fullstory.com';
// tslint:disable-next-line: no-string-literal
window['_fs_org'] = fsCodeArg;
// tslint:disable-next-line: no-string-literal
window['_fs_namespace'] = 'FS';
((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"].');
}
return;
}
// tslint:disable-next-line: only-arrow-functions
g = m[e] = function(a, b, s) {
g.q ? g.q.push([a, b, s]) : g._api(a, b, s);
};
g.q = [];
o = n.createElement(t);
o.async = 1;
o.src = 'https://' + window._fs_host + '/s/fs.js';
o.crossorigin = 'anonymous';
y = n.getElementsByTagName(t)[0];
y.parentNode.insertBefore(o, y);
// tslint:disable-next-line: only-arrow-functions
g.identify = function(i, v, s) {
g(l, { uid: i }, s);
if (v) g(l, v, s);
};
g.setUserVars = function(v, s) {
g(l, v, s);
};
g.event = function(i, v, s) {
g('event', { n: i, p: v }, s);
};
// tslint:disable-next-line: only-arrow-functions
g.shutdown = function() {
g('rec', !1);
};
g.restart = function() {
g('rec', !0);
};
// tslint:disable-next-line: only-arrow-functions
g.consent = function(a) {
g('consent', !arguments.length || a);
};
// tslint:disable-next-line: only-arrow-functions
g.identifyAccount = function(i, v) {
o = 'account';
v = v || {};
v.acctId = i;
g(o, v);
};
// tslint:disable-next-line: only-arrow-functions
g.clearUserCookie = function() {};
// tslint:disable-next-line: no-string-literal
})(window, document, window['_fs_namespace'], 'script', 'user');
};

View File

@ -1,32 +0,0 @@
declare global {
// tslint:disable-next-line: interface-name
interface Window {
analytics: any;
}
}
export const setupGoogleAnalytics = async (gaCode: string) => {
// tslint:disable-next-line: only-arrow-functions
(function(i, s, o, g, r, a, m) {
// tslint:disable-next-line: no-string-literal
i['GoogleAnalyticsObject'] = r;
// tslint:disable-next-line: ban-comma-operator
(i[r] =
i[r] ||
// tslint:disable-next-line: only-arrow-functions
function() {
(i[r].q = i[r].q || []).push(arguments);
}),
(i[r].l = new Date().getTime());
// tslint:disable-next-line: ban-comma-operator
(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
a.async = 1;
a.src = g;
a.crossorigin = 'anonymous';
m.parentNode.insertBefore(a, m);
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'analytics');
window.analytics('create', gaCode, 'auto');
window.analytics('send', 'pageview');
console.log('Loaded Google Analytics. You may view our privacy policy at https://lossless.gmbh');
};

View File

@ -1,5 +1,3 @@
import * as tsclass from '@tsclass/tsclass'; import * as tsclass from '@tsclass/tsclass';
export { export { tsclass };
tsclass
};