< Summary - Envilder Core (TypeScript)

Information
Class: src/envilder/core/infrastructure/package/PackageVersionReader.ts
Assembly: Default
File(s): src/envilder/core/infrastructure/package/PackageVersionReader.ts
Tag: 151_24479375065
Line coverage
92%
Covered lines: 12
Uncovered lines: 1
Coverable lines: 13
Total lines: 32
Line coverage: 92.3%
Branch coverage
80%
Covered branches: 8
Total branches: 10
Branch coverage: 80%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

File(s)

src/envilder/core/infrastructure/package/PackageVersionReader.ts

#LineLine coverage
 1import { promises as fs } from 'node:fs';
 2
 3export class PackageVersionReader {
 4  async getVersion(packageJsonPath: string): Promise<string> {
 85    try {
 86      await fs.access(packageJsonPath);
 77      const content = await fs.readFile(packageJsonPath, 'utf8');
 78      const pkg: { version?: unknown } = JSON.parse(content);
 9
 710      if (typeof pkg.version !== 'string') {
 111        throw new Error('Version field not found in package.json');
 12      }
 13
 514      return pkg.version;
 15    } catch (_err) {
 316      if (this.isEnoentError(_err)) {
 117        throw new Error('package.json not found');
 18      }
 19
 220      throw new Error(
 21        `Failed to read or parse package.json: ${_err instanceof Error ? _err.message : String(_err)}`,
 22      );
 23    }
 24  }
 25
 26  private isEnoentError(err: unknown): boolean {
 327    if (!(err instanceof Error)) {
 028      return false;
 29    }
 330    return 'code' in err && (err as { code?: string }).code === 'ENOENT';
 31  }
 32}

Methods/Properties

(anonymous_0)
(anonymous_1)