← Files Biological Sequence & Alignment ViewerARCHIVED FILE

src/file-kind.ts

1.15 KB · Sep 30, 2026 · 23:01 UTC

↓ Download file

import {
  biologicalFileBasename,
  stripBiologicalCompressionSuffix,
} from "./compressed-file-name";
import {
  MSA_FILE_ENTRYPOINT_EXTENSIONS,
  MSA_GENERIC_FASTA_ENTRYPOINT_EXTENSIONS,
} from "./msa/file-kind";
import { SEQUENCE_FILE_ENTRYPOINT_EXTENSIONS } from "./sequence/file-kind";

export const BIOLOGICAL_SEQUENCE_FILE_ENTRYPOINT_EXTENSIONS = [
  ...new Set([
    ...SEQUENCE_FILE_ENTRYPOINT_EXTENSIONS,
    ...MSA_FILE_ENTRYPOINT_EXTENSIONS,
    ...MSA_GENERIC_FASTA_ENTRYPOINT_EXTENSIONS,
  ]),
] as const;

export const BIOLOGICAL_SEQUENCE_FILE_ENTRYPOINTS = [
  {
    extensions: BIOLOGICAL_SEQUENCE_FILE_ENTRYPOINT_EXTENSIONS,
    priority: 100,
  },
] as const;

export function isSupportedBiologicalSequenceFileName(
  fileName: string,
): boolean {
  const normalizedFileName = stripBiologicalCompressionSuffix(
    biologicalFileBasename(fileName.trim().toLowerCase()),
  );
  const lastDot = normalizedFileName.lastIndexOf(".");
  const extension =
    lastDot >= 0 ? normalizedFileName.slice(lastDot + 1) : normalizedFileName;
  return BIOLOGICAL_SEQUENCE_FILE_ENTRYPOINT_EXTENSIONS.some(
    (supportedExtension) => supportedExtension === extension,
  );
}

SHA-256: 7bb4abb9681dfdd76d5cfae7d9d4681bc6b56a099a64c48e02dc7a490e9af681