UNPKG

1.67 kBPlain TextView Raw
1import * as semver from 'semver';
2import { IAngularApi } from './angular-api.util';
3
4export class AngularVersionUtil {
5 private static readonly CorePackage = '@angular/core';
6
7 private static instance: AngularVersionUtil;
8 private constructor() {}
9 public static getInstance() {
10 if (!AngularVersionUtil.instance) {
11 AngularVersionUtil.instance = new AngularVersionUtil();
12 }
13 return AngularVersionUtil.instance;
14 }
15
16 public cleanVersion(version: string): string {
17 return version
18 .replace('~', '')
19 .replace('^', '')
20 .replace('=', '')
21 .replace('<', '')
22 .replace('>', '');
23 }
24
25 public getAngularVersionOfProject(packageData): string {
26 let _result = '';
27
28 if (packageData.dependencies) {
29 let angularCore = packageData.dependencies[AngularVersionUtil.CorePackage];
30 if (angularCore) {
31 _result = this.cleanVersion(angularCore);
32 }
33 }
34
35 return _result;
36 }
37
38 private isAngularVersionArchived(version: string): boolean {
39 let result;
40
41 try {
42 result = semver.compare(version, '2.4.10') <= 0;
43 } catch (e) {}
44
45 return result;
46 }
47
48 public prefixOfficialDoc(version: string): string {
49 return this.isAngularVersionArchived(version) ? 'v2.' : '';
50 }
51
52 public getApiLink(api: IAngularApi, angularVersion: string): string {
53 let angularDocPrefix = this.prefixOfficialDoc(angularVersion);
54 return `https://${angularDocPrefix}angular.io/${api.path}`;
55 }
56}
57
58export default AngularVersionUtil.getInstance();