.ts
TypeScript
(application/typescript)
// 1st-party
import type { ServiceApiContract } from "@ethicdevs/react-monolith";
// app
import type { LanguageDetectFn } from "../../types";

export interface LinguistFileInfos {
  color: string;
  extensions: string[];
  filenames?: string[];
  group?: string;
  language: string;
  languageDisplayName: string;
  languageId: number;
  mimeType: string;
  type: string;
}

export interface CodeAnalysisServiceAPI extends ServiceApiContract {
  getLinguistFileInfos(
    path: string,
    content?: string
  ): Promise<LinguistFileInfos>;
}

export interface CodeAnalysisServiceDeps {
  languageDetect: LanguageDetectFn;

  // types for NPM package's: language-map
  languagesMap: {
    [languageName: string]: {
      aceMode: string;
      aliases?: string[];
      color?: string;
      codemirrorMode?: string;
      codemirrorMimeType?: string;
      extensions?: string[];
      filenames?: string[];
      group?: string;
      interpreters?: string[];
      languageId: number;
      tmScope: string;
      type: string;
      wrap?: boolean;
    };
  };
}