fix(core): update
This commit is contained in:
		| @@ -12,40 +12,36 @@ stages: | ||||
|   - release | ||||
|   - metadata | ||||
|  | ||||
| before_script: | ||||
|   - pnpm install -g pnpm | ||||
|   - pnpm install -g @shipzone/npmci | ||||
|   - npmci npm prepare | ||||
|  | ||||
| # ==================== | ||||
| # security stage | ||||
| # ==================== | ||||
| # ==================== | ||||
| # security stage | ||||
| # ==================== | ||||
| mirror: | ||||
|   stage: security | ||||
|   script: | ||||
|     - npmci git mirror | ||||
|   only: | ||||
|     - tags | ||||
|   tags: | ||||
|     - lossless | ||||
|     - docker | ||||
|     - notpriv | ||||
|  | ||||
| auditProductionDependencies: | ||||
|   image: registry.gitlab.com/hosttoday/ht-docker-node:npmci | ||||
|   stage: security | ||||
|   script: | ||||
|     - npmci npm prepare | ||||
|     - npmci command npm install --production --ignore-scripts | ||||
|     - npmci command npm config set registry https://registry.npmjs.org | ||||
|     - npmci command npm audit --audit-level=high --only=prod --production | ||||
|      - npmci command npm config set registry https://registry.npmjs.org | ||||
|      - npmci command pnpm audit --audit-level=high --prod | ||||
|   tags: | ||||
|     - lossless | ||||
|     - docker | ||||
|   allow_failure: true | ||||
|  | ||||
| auditDevDependencies: | ||||
|   image: registry.gitlab.com/hosttoday/ht-docker-node:npmci | ||||
|   stage: security | ||||
|   script: | ||||
|     - npmci npm prepare | ||||
|     - npmci command npm install --ignore-scripts | ||||
|     - npmci command npm config set registry https://registry.npmjs.org | ||||
|     - npmci command npm audit --audit-level=high --only=dev | ||||
|     - npmci command pnpm audit --audit-level=high --dev | ||||
|   tags: | ||||
|     - lossless | ||||
|     - docker | ||||
|   allow_failure: true | ||||
|  | ||||
| @@ -56,7 +52,6 @@ auditDevDependencies: | ||||
| testStable: | ||||
|   stage: test | ||||
|   script: | ||||
|     - npmci npm prepare | ||||
|     - npmci node install stable | ||||
|     - npmci npm install | ||||
|     - npmci npm test | ||||
| @@ -67,10 +62,9 @@ testStable: | ||||
| testBuild: | ||||
|   stage: test | ||||
|   script: | ||||
|     - npmci npm prepare | ||||
|     - npmci node install stable | ||||
|     - npmci npm install | ||||
|     - npmci command npm run build | ||||
|     - npmci npm build | ||||
|   coverage: /\d+.?\d+?\%\s*coverage/ | ||||
|   tags: | ||||
|     - docker | ||||
| @@ -96,10 +90,9 @@ codequality: | ||||
|   only: | ||||
|     - tags | ||||
|   script: | ||||
|     - npmci command npm install -g tslint typescript | ||||
|     - npmci command npm install -g typescript | ||||
|     - npmci npm prepare | ||||
|     - npmci npm install | ||||
|     - npmci command "tslint -c tslint.json ./ts/**/*.ts" | ||||
|   tags: | ||||
|     - lossless | ||||
|     - docker | ||||
| @@ -119,11 +112,9 @@ trigger: | ||||
| pages: | ||||
|   stage: metadata | ||||
|   script: | ||||
|     - npmci node install lts | ||||
|     - npmci command npm install -g @gitzone/tsdoc | ||||
|     - npmci npm prepare | ||||
|     - npmci node install stable | ||||
|     - npmci npm install | ||||
|     - npmci command tsdoc | ||||
|     - npmci command npm run buildDocs | ||||
|   tags: | ||||
|     - lossless | ||||
|     - docker | ||||
|   | ||||
							
								
								
									
										24
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										24
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
								
							| @@ -2,28 +2,10 @@ | ||||
|   "version": "0.2.0", | ||||
|   "configurations": [ | ||||
|     { | ||||
|       "name": "current file", | ||||
|       "type": "node", | ||||
|       "command": "npm test", | ||||
|       "name": "Run npm test", | ||||
|       "request": "launch", | ||||
|       "args": [ | ||||
|         "${relativeFile}" | ||||
|       ], | ||||
|       "runtimeArgs": ["-r", "@gitzone/tsrun"], | ||||
|       "cwd": "${workspaceRoot}", | ||||
|       "protocol": "inspector", | ||||
|       "internalConsoleOptions": "openOnSessionStart" | ||||
|     }, | ||||
|     { | ||||
|       "name": "test.ts", | ||||
|       "type": "node", | ||||
|       "request": "launch", | ||||
|       "args": [ | ||||
|         "test/test.ts" | ||||
|       ], | ||||
|       "runtimeArgs": ["-r", "@gitzone/tsrun"], | ||||
|       "cwd": "${workspaceRoot}", | ||||
|       "protocol": "inspector", | ||||
|       "internalConsoleOptions": "openOnSessionStart" | ||||
|       "type": "node-terminal" | ||||
|     } | ||||
|   ] | ||||
| } | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|       "githost": "gitlab.com", | ||||
|       "gitscope": "pushrocks", | ||||
|       "gitrepo": "websetup", | ||||
|       "shortDescription": "setup basic page properties", | ||||
|       "description": "setup basic page properties", | ||||
|       "npmPackagename": "@pushrocks/websetup", | ||||
|       "license": "MIT" | ||||
|     } | ||||
|   | ||||
							
								
								
									
										26980
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										26980
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										24
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								package.json
									
									
									
									
									
								
							| @@ -9,24 +9,23 @@ | ||||
|   "license": "MIT", | ||||
|   "scripts": { | ||||
|     "test": "(tstest test/)", | ||||
|     "build": "(tsbuild --web && tsbundle npm)" | ||||
|     "build": "(tsbuild --web --allowimplicitany && tsbundle npm)", | ||||
|     "buildDocs": "tsdoc" | ||||
|   }, | ||||
|   "keywords": [ | ||||
|     "lossless", | ||||
|     "websafe" | ||||
|   ], | ||||
|   "devDependencies": { | ||||
|     "@gitzone/tsbuild": "^2.1.28", | ||||
|     "@gitzone/tsbundle": "^1.0.88", | ||||
|     "@gitzone/tstest": "^1.0.60", | ||||
|     "@pushrocks/tapbundle": "^3.2.15", | ||||
|     "tslint": "^6.1.3", | ||||
|     "tslint-config-prettier": "^1.15.0" | ||||
|     "@gitzone/tsbuild": "^2.1.65", | ||||
|     "@gitzone/tsbundle": "^2.0.7", | ||||
|     "@gitzone/tstest": "^1.0.74", | ||||
|     "@pushrocks/tapbundle": "^5.0.4" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "@pushrocks/smartdelay": "^2.0.13", | ||||
|     "@pushrocks/smartpromise": "^3.1.6", | ||||
|     "@tsclass/tsclass": "^3.0.37" | ||||
|     "@pushrocks/smartdelay": "^3.0.1", | ||||
|     "@pushrocks/smartpromise": "^4.0.2", | ||||
|     "@tsclass/tsclass": "^4.0.40" | ||||
|   }, | ||||
|   "files": [ | ||||
|     "ts/**/*", | ||||
| @@ -42,5 +41,6 @@ | ||||
|   ], | ||||
|   "browserslist": [ | ||||
|     "last 1 chrome versions" | ||||
|   ] | ||||
| } | ||||
|   ], | ||||
|   "type": "module" | ||||
| } | ||||
							
								
								
									
										4481
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										4481
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -21,7 +21,6 @@ Code Style | [](htt | ||||
| PackagePhobia (total standalone install weight) | [](https://lossless.cloud) | ||||
| PackagePhobia (package size on registry) | [](https://lossless.cloud) | ||||
| BundlePhobia (total size when bundled) | [](https://lossless.cloud) | ||||
| Platform support | [](https://lossless.cloud) [](https://lossless.cloud) | ||||
|  | ||||
| ## Usage | ||||
|  | ||||
| @@ -33,7 +32,6 @@ We are always happy for code contributions. If you are not the code contributing | ||||
|  | ||||
| For further information read the linked docs at the top of this readme. | ||||
|  | ||||
| > MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh) | ||||
| ## Legal | ||||
| > MIT licensed | **©** [Task Venture Capital GmbH](https://task.vc) | ||||
| | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy) | ||||
|  | ||||
| [](https://maintainedby.lossless.com) | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| import { expect, tap, webhelpers } from '@pushrocks/tapbundle'; | ||||
| webhelpers.enable(); | ||||
|  | ||||
| import * as websetup from '../ts/index'; | ||||
| import * as websetup from '../ts/index.js'; | ||||
|  | ||||
| tap.test('first test', async () => { | ||||
|   const websetupInstance = new websetup.WebSetup({ | ||||
| @@ -12,7 +12,7 @@ tap.test('first test', async () => { | ||||
|     }, | ||||
|   }); | ||||
|   await websetupInstance.readyPromise; | ||||
|   expect(document.title).to.equal('mytitle'); | ||||
|   expect(document.title).toEqual('mytitle'); | ||||
| }); | ||||
|  | ||||
| tap.start(); | ||||
|   | ||||
							
								
								
									
										8
									
								
								ts/00_commitinfo_data.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								ts/00_commitinfo_data.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| /** | ||||
|  * autocreated commitinfo by @pushrocks/commitinfo | ||||
|  */ | ||||
| export const commitinfo = { | ||||
|   name: '@pushrocks/websetup', | ||||
|   version: '3.0.17', | ||||
|   description: 'setup basic page properties' | ||||
| } | ||||
							
								
								
									
										10
									
								
								ts/index.ts
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								ts/index.ts
									
									
									
									
									
								
							| @@ -1,5 +1,5 @@ | ||||
| export * from './websetup.classes.websetup'; | ||||
| export * from './websetup.classes.tag.metatag'; | ||||
| export * from './websetup.classes.tag.opengraphtag'; | ||||
| export * from './websetup.classes.tag.jsonldtag'; | ||||
| export * from './websetup.classes.title'; | ||||
| export * from './websetup.classes.websetup.js'; | ||||
| export * from './websetup.classes.tag.metatag.js'; | ||||
| export * from './websetup.classes.tag.opengraphtag.js'; | ||||
| export * from './websetup.classes.tag.jsonldtag.js'; | ||||
| export * from './websetup.classes.title.js'; | ||||
|   | ||||
| @@ -1,11 +1,10 @@ | ||||
| import * as plugins from '../websetup.plugins'; | ||||
|  | ||||
| import * as plugins from '../websetup.plugins.js'; | ||||
| export interface IMetaObject { | ||||
|   title: string; | ||||
|   description?: string; | ||||
|   canonicalDomain?: string; | ||||
|   ldCompany?: plugins.tsclass.business.ICompany; | ||||
|   ldProduct?: any; | ||||
|   ldProduct?: plugins.tsclass.saas.IProduct; | ||||
|  | ||||
|   // handles | ||||
|   twitterHandle?: string; | ||||
|   | ||||
| @@ -1,10 +1,11 @@ | ||||
| import * as plugins from './websetup.plugins'; | ||||
| import * as interfaces from './interfaces'; | ||||
| import * as plugins from './websetup.plugins.js'; | ||||
| import * as interfaces from './interfaces/index.js'; | ||||
|  | ||||
| import { Tag } from './websetup.classes.tag'; | ||||
| import { Tag } from './websetup.classes.tag.js'; | ||||
|  | ||||
| export class JsonLdTag extends Tag { | ||||
|   public static createCompanyLd(companyDataArg: plugins.tsclass.business.ICompany) { | ||||
|   public static createCompanyJsonLd(companyDataArg: plugins.tsclass.business.ICompany) { | ||||
|     // STATIC | ||||
|     // lets care about linked data | ||||
|     const companyLd = { | ||||
|       '@context': 'https://schema.org', | ||||
| @@ -64,7 +65,37 @@ export class JsonLdTag extends Tag { | ||||
|     const ldTag = new JsonLdTag(newsArticleLd); | ||||
|     return ldTag; | ||||
|   } | ||||
|   public static createProductJsonLd( | ||||
|     productArg: plugins.tsclass.saas.IProduct, | ||||
|     publisherArg: plugins.tsclass.business.ICompany | ||||
|   ) { | ||||
|     const productLd = { | ||||
|       '@context': 'https://schema.org', | ||||
|       '@type': 'SoftwareApplication', | ||||
|       name: productArg.name, | ||||
|       description: productArg.description, | ||||
|       operatingSystem: productArg.os, | ||||
|       applicationCategory: productArg.category, | ||||
|       offers: { | ||||
|         '@type': 'Offer', | ||||
|         name: 'User-based Plan', | ||||
|         priceSpecification: { | ||||
|           '@type': 'PropertyValueSpecification', | ||||
|           valueName: 'Number of Users', | ||||
|           valueRequired: true, | ||||
|           price: '4.99', | ||||
|           priceCurrency: 'EUR', | ||||
|         }, | ||||
|       }, | ||||
|       publisher: this.createCompanyJsonLd(publisherArg).elementRef.textContent, | ||||
|       screenshot: 'https://www.social.io/screenshot.png', | ||||
|       url: 'https://www.social.io/', | ||||
|     }; | ||||
|     const ldTag = new JsonLdTag(productLd); | ||||
|     return ldTag; | ||||
|   } | ||||
|  | ||||
|   // INSTANCE | ||||
|   constructor(ldObjectArg: any) { | ||||
|     super(); | ||||
|     const jsonLdElement = document.createElement('script'); | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| import { Tag } from './websetup.classes.tag'; | ||||
| import { Tag } from './websetup.classes.tag.js'; | ||||
|  | ||||
| export class LinkTag extends Tag { | ||||
|   constructor(relArg: string, hrefArg: string) { | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| import { Tag } from './websetup.classes.tag'; | ||||
| import { Tag } from './websetup.classes.tag.js'; | ||||
|  | ||||
| export class MetaTag extends Tag { | ||||
|   constructor(metaNameArg: string, contentArg: string) { | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| import * as plugins from './websetup.plugins'; | ||||
| import { Tag } from './websetup.classes.tag'; | ||||
| import * as plugins from './websetup.plugins.js'; | ||||
| import { Tag } from './websetup.classes.tag.js'; | ||||
|  | ||||
| export class OpengraphTag extends Tag { | ||||
|   public static createNewsArticleOgTags(newsArticleArg: plugins.tsclass.content.IArticle) { | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| import * as plugins from './websetup.plugins'; | ||||
| import * as plugins from './websetup.plugins.js'; | ||||
|  | ||||
| export class Tag { | ||||
|   public elementRef: Element; | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| import { Tag } from './websetup.classes.tag'; | ||||
| import { JsonLdTag } from './websetup.classes.tag.jsonldtag'; | ||||
| import { OpengraphTag } from './websetup.classes.tag.opengraphtag'; | ||||
| import { TagManager } from './websetup.classes.tagmanager'; | ||||
| import * as plugins from './websetup.plugins'; | ||||
| import { Tag } from './websetup.classes.tag.js'; | ||||
| import { JsonLdTag } from './websetup.classes.tag.jsonldtag.js'; | ||||
| import { OpengraphTag } from './websetup.classes.tag.opengraphtag.js'; | ||||
| import { TagManager } from './websetup.classes.tagmanager.js'; | ||||
| import * as plugins from './websetup.plugins.js'; | ||||
|  | ||||
| export type TBaseLevelType = 'global' | 'base' | 'subpage'; | ||||
|  | ||||
| @@ -45,7 +45,7 @@ export class TagLevel { | ||||
|   } | ||||
|  | ||||
|   public async addCompanyInfo(companyDataArg: plugins.tsclass.business.ICompany) { | ||||
|     this.addTag(JsonLdTag.createCompanyLd(companyDataArg)); | ||||
|     this.addTag(JsonLdTag.createCompanyJsonLd(companyDataArg)); | ||||
|  | ||||
|     // lets care about open graph | ||||
|     this.addTag(new OpengraphTag('og:type', 'business.business')); | ||||
| @@ -80,6 +80,10 @@ export class TagLevel { | ||||
|     this.addTag(OpengraphTag.createNewsArticleOgTags(articleArg)); | ||||
|   } | ||||
|  | ||||
|   public addProductInfo(productArg: plugins.tsclass.saas.IProduct, companyArg: plugins.tsclass.business.ICompany) { | ||||
|     this.addTag(JsonLdTag.createProductJsonLd(productArg, companyArg)); | ||||
|   } | ||||
|  | ||||
|   public async enable() { | ||||
|     if (this.title) { | ||||
|       document.title = this.title; | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| import { TagLevel } from './websetup.classes.taglevel'; | ||||
| import * as plugins from './websetup.plugins'; | ||||
| import * as interfaces from './interfaces'; | ||||
| import { MetaTag } from './websetup.classes.tag.metatag'; | ||||
| import { JsonLdTag } from './websetup.classes.tag.jsonldtag'; | ||||
| import { OpengraphTag } from './websetup.classes.tag.opengraphtag'; | ||||
| import { TagLevel } from './websetup.classes.taglevel.js'; | ||||
| import * as plugins from './websetup.plugins.js'; | ||||
| import * as interfaces from './interfaces/index.js'; | ||||
| import { MetaTag } from './websetup.classes.tag.metatag.js'; | ||||
| import { JsonLdTag } from './websetup.classes.tag.jsonldtag.js'; | ||||
| import { OpengraphTag } from './websetup.classes.tag.opengraphtag.js'; | ||||
|  | ||||
| export class TagManager { | ||||
|   public globalLevel: TagLevel = new TagLevel(this, 'global'); | ||||
| @@ -33,9 +33,17 @@ export class TagManager { | ||||
|       this.baseLevel.addTag(new MetaTag('canonical', metaObjectArg.canonicalDomain)); | ||||
|     } | ||||
|  | ||||
|     if (metaObjectArg.ldCompany) { | ||||
|       this.baseLevel.addCompanyInfo(metaObjectArg.ldCompany); | ||||
|  | ||||
|     // json ld | ||||
|     switch (true) { | ||||
|       case metaObjectArg.ldCompany && !metaObjectArg.ldProduct: | ||||
|         this.baseLevel.addCompanyInfo(metaObjectArg.ldCompany); | ||||
|         break; | ||||
|       case !!metaObjectArg.ldProduct: | ||||
|         this.baseLevel.addProductInfo(metaObjectArg.ldProduct, metaObjectArg.ldCompany); | ||||
|         break; | ||||
|     } | ||||
|  | ||||
|     await this.globalLevel.enable(); | ||||
|     this.activeLevel = this.baseLevel; | ||||
|     await this.activeLevel.enable(); | ||||
|   | ||||
| @@ -1,9 +1,7 @@ | ||||
| import * as plugins from './websetup.plugins'; | ||||
| import * as plugins from './websetup.plugins.js'; | ||||
|  | ||||
| /** | ||||
|  * a title proxy class | ||||
|  * --> to be used in the future when flashing titles is supported | ||||
|  */ | ||||
| export class Title { | ||||
|  | ||||
| } | ||||
| export class Title {} | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| import * as plugins from './websetup.plugins'; | ||||
| import * as interfaces from './interfaces'; | ||||
| import { TagManager } from './websetup.classes.tagmanager'; | ||||
| import { TagLevel } from './websetup.classes.taglevel'; | ||||
| import * as plugins from './websetup.plugins.js'; | ||||
| import * as interfaces from './interfaces/index.js'; | ||||
| import { TagManager } from './websetup.classes.tagmanager.js'; | ||||
| import { TagLevel } from './websetup.classes.taglevel.js'; | ||||
|  | ||||
| export interface IWebSetupConstructorOptions { | ||||
|   metaObject: interfaces.IMetaObject; | ||||
| @@ -14,7 +14,7 @@ export interface IWebSetupConstructorOptions { | ||||
| export class WebSetup { | ||||
|   public tagManager: TagManager = new TagManager(); | ||||
|   public options: IWebSetupConstructorOptions; | ||||
|    | ||||
|  | ||||
|   // private deferreds | ||||
|   private readyDeferred = plugins.smartpromise.defer(); | ||||
|   private readyForSmartssrDeferred = plugins.smartpromise.defer(); | ||||
| @@ -69,7 +69,9 @@ export class WebSetup { | ||||
|    */ | ||||
|   public informReadyForSmartssr() { | ||||
|     if (!this.options.smartssrWaitForReadySignal) { | ||||
|       console.error(`You have not indicated that you inform smartssr by a dedicated signal! Please consider doing so!`); | ||||
|       console.error( | ||||
|         `You have not indicated that you inform smartssr by a dedicated signal! Please consider doing so!` | ||||
|       ); | ||||
|     } | ||||
|     this.readyForSmartssrDeferred.resolve(); | ||||
|   } | ||||
|   | ||||
							
								
								
									
										10
									
								
								tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								tsconfig.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| { | ||||
|   "compilerOptions": { | ||||
|     "experimentalDecorators": true, | ||||
|     "useDefineForClassFields": false, | ||||
|     "target": "ES2022", | ||||
|     "module": "ES2022", | ||||
|     "moduleResolution": "nodenext", | ||||
|     "esModuleInterop": true | ||||
|   } | ||||
| } | ||||
							
								
								
									
										17
									
								
								tslint.json
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								tslint.json
									
									
									
									
									
								
							| @@ -1,17 +0,0 @@ | ||||
| { | ||||
|   "extends": ["tslint:latest", "tslint-config-prettier"], | ||||
|   "rules": { | ||||
|     "semicolon": [true, "always"], | ||||
|     "no-console": false, | ||||
|     "ordered-imports": false, | ||||
|     "object-literal-sort-keys": false, | ||||
|     "member-ordering": { | ||||
|       "options":{ | ||||
|         "order": [ | ||||
|           "static-method" | ||||
|         ] | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "defaultSeverity": "warning" | ||||
| } | ||||
		Reference in New Issue
	
	Block a user