UNPKG

612 BPlain TextView Raw
1import * as path from 'path';
2import { loadPackageJson } from './utils';
3import { pascalCase } from 'pascal-case';
4
5export class Component {
6 public tag: string;
7
8 constructor(tag: string) {
9 this.tag = tag;
10 }
11
12 public static tagFromPackage(workingDir: string): string {
13 const { main } = loadPackageJson(workingDir);
14 return path.parse(main).name;
15 }
16
17 public get valid(): boolean {
18 return 0 < this.tag.indexOf('-')
19 && this.tag.indexOf('-') < this.tag.length - 1
20 && this.tag === this.tag.toLowerCase();
21 }
22
23 public get name(): string {
24 return pascalCase(this.tag);
25 }
26}