File size: 866 Bytes
9332ccf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
/**
 * @license
 * Copyright 2026 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */

import * as path from 'node:path';

/**
 * Gets the file extension from a filename or path, excluding the leading dot.
 * Returns null if no extension is found.
 */
export function getFileExtension(
  filename: string | null | undefined,
): string | null {
  if (!filename) return null;
  const ext = path.extname(filename);
  return ext ? ext.slice(1) : null;
}

/**
 * Checks if a filename corresponds to a package lock or dependency resolution file.
 */
export function isLockFile(filename: string | null | undefined): boolean {
  if (!filename) return false;
  const lower = filename.toLowerCase();
  return (
    lower.endsWith('-lock.json') ||
    lower.endsWith('.lock') ||
    lower.endsWith('.lockb') ||
    lower === 'pnpm-lock.yaml' ||
    lower === 'go.sum'
  );
}