All files package_json.ts

100% Statements 45/45
93.75% Branches 15/16
100% Functions 14/14
100% Lines 25/25

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 531x                           1x   1x 25x 25x 25x   1x 1x 1x     1x 1x 1x     5x 5x 5x     1x 1x 1x     1x 1x 1x     10x 10x 10x     1x  
import {JSONFile, JSONObject} from './json_file';
 
export interface PackageJSONType extends JSONObject {
  name: string;
  description?: string;
  version?: string;
  main?: string;
  bin?: string;
  repository?: {type?: string; url?: string; directory?: string};
  scripts?: {[key: string]: string};
  devDependencies?: {[key: string]: string};
  dependencies?: {[key: string]: string};
}
 
const defaults = {basename: 'package.json', defaultContent: '{}'};
 
export class PackageJSON extends JSONFile<PackageJSONType> {
  constructor(public props?: ConstructorParameters<typeof JSONFile>[0]) {
    super({...props, ...defaults});
    this.props = {...props, ...defaults};
  }
  get name(): Promise<string> {
    return (async () => {
      return (await this.parsedContent).name;
    })();
  }
  get description(): Promise<string | undefined> {
    return (async () => {
      return (await this.parsedContent).description;
    })();
  }
  get version(): Promise<string | undefined> {
    return (async () => {
      return (await this.parsedContent).version;
    })();
  }
  get main(): Promise<string | undefined> {
    return (async () => {
      return (await this.parsedContent).main;
    })();
  }
  get bin(): Promise<string | undefined> {
    return (async () => {
      return (await this.parsedContent).bin;
    })();
  }
  get dependencies(): Promise<{[k: string]: string}> {
    return (async () => {
      return (await this.parsedContent).dependencies || {};
    })();
  }
}