1 | import * as semver from 'semver';
|
2 | import { IAngularApi } from './angular-api.util';
|
3 |
|
4 | export 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 |
|
58 | export default AngularVersionUtil.getInstance();
|