| /** | |
| * @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' | |
| ); | |
| } | |