diff --git a/src/ui/js/diff2html-ui-base.ts b/src/ui/js/diff2html-ui-base.ts index 0c7d116..53ae1f3 100644 --- a/src/ui/js/diff2html-ui-base.ts +++ b/src/ui/js/diff2html-ui-base.ts @@ -1,4 +1,5 @@ -import { HighlightJS, ICompiledMode, IHighlightResult, IAutoHighlightResult } from './highlight.js-interface'; +import { HighlightJS } from 'highlight.js/lib/highlight.js'; +import { ICompiledMode, IHighlightResult, IAutoHighlightResult } from 'highlight.js'; import { nodeStream, mergeStreams } from './highlight.js-helpers'; import { html, Diff2HtmlConfig, defaultDiff2HtmlConfig } from '../../diff2html'; diff --git a/src/ui/js/highlight.js-interface.ts b/src/ui/js/highlight.js-interface.ts deleted file mode 100644 index 3657dad..0000000 --- a/src/ui/js/highlight.js-interface.ts +++ /dev/null @@ -1,69 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable @typescript-eslint/ban-types */ -/* eslint-disable @typescript-eslint/interface-name-prefix */ -/* eslint-disable @typescript-eslint/camelcase */ - -export interface HighlightJS { - highlight(name: string, value: string, ignore_illegals?: boolean, continuation?: ICompiledMode): IHighlightResult; - - highlightAuto(value: string, languageSubset?: string[]): IAutoHighlightResult; - - getLanguage(name: string): IMode; -} - -export interface IAutoHighlightResult extends IHighlightResultBase { - second_best?: IAutoHighlightResult; -} - -export interface IHighlightResultBase { - relevance: number; - language: string; - value: string; -} - -export interface IHighlightResult extends IHighlightResultBase { - top: ICompiledMode; -} - -export interface IMode extends IModeBase { - keywords?: any; - contains?: IMode[]; -} - -// Reference: -// https://github.com/isagalaev/highlight.js/blob/master/docs/reference.rst -export interface IModeBase { - className?: string; - aliases?: string[]; - begin?: string | RegExp; - end?: string | RegExp; - case_insensitive?: boolean; - beginKeyword?: string; - endsWithParent?: boolean; - lexems?: string; - illegal?: string; - excludeBegin?: boolean; - excludeEnd?: boolean; - returnBegin?: boolean; - returnEnd?: boolean; - starts?: string; - subLanguage?: string; - subLanguageMode?: string; - relevance?: number; - variants?: IMode[]; -} - -export interface ICompiledMode extends IModeBase { - compiled: boolean; - contains?: ICompiledMode[]; - keywords?: Object; - terminators: RegExp; - terminator_end?: string; -} - -export interface IOptions { - classPrefix?: string; - tabReplace?: string; - useBR?: boolean; - languages?: string[]; -} diff --git a/src/ui/js/highlight.js-slim.ts b/src/ui/js/highlight.js-slim.ts index 2a26e4d..e1461d4 100644 --- a/src/ui/js/highlight.js-slim.ts +++ b/src/ui/js/highlight.js-slim.ts @@ -1,18 +1,8 @@ -import { HighlightJS } from './highlight.js-interface'; - -/* eslint-disable @typescript-eslint/camelcase */ /* eslint-disable @typescript-eslint/no-var-requires */ -/* eslint-disable @typescript-eslint/interface-name-prefix */ -/* eslint-disable @typescript-eslint/ban-types */ -/* eslint-disable @typescript-eslint/no-explicit-any */ - -/* - * Adapted Highlight.js External APIs - * Used to avoid importing all the languages - */ // Require the highlight.js library without languages -const highlightJS = require('highlight.js/lib/highlight.js'); +import highlightJS from 'highlight.js/lib/highlight.js'; + // Separately require languages // highlightJS.registerLanguage('1c', require('highlight.js/lib/languages/1c')); // highlightJS.registerLanguage('abnf', require('highlight.js/lib/languages/abnf')); @@ -200,4 +190,4 @@ highlightJS.registerLanguage('vim', require('highlight.js/lib/languages/vim')); // highlightJS.registerLanguage('xquery', require('highlight.js/lib/languages/xquery')); // highlightJS.registerLanguage('zephir', require('highlight.js/lib/languages/zephir')); -export const hljs: HighlightJS = highlightJS as HighlightJS; +export const hljs = highlightJS; diff --git a/typings/highlight.js.d.ts b/typings/highlight.js.d.ts new file mode 100644 index 0000000..34a3b6a --- /dev/null +++ b/typings/highlight.js.d.ts @@ -0,0 +1,42 @@ +declare module 'highlight.js/lib/highlight.js' { + import hljs from 'highlight.js'; + + export type HighlightJS = typeof hljs; + + export default hljs; + + export const highlight: typeof hljs.highlight; + export const highlightAuto: typeof hljs.highlightAuto; + export const fixMarkup: typeof hljs.fixMarkup; + export const highlightBlock: typeof hljs.highlightBlock; + export const configure: typeof hljs.configure; + export const initHighlighting: typeof hljs.initHighlighting; + export const initHighlightingOnLoad: typeof hljs.initHighlightingOnLoad; + export const registerLanguage: typeof hljs.registerLanguage; + export const listLanguages: typeof hljs.listLanguages; + export const getLanguage: typeof hljs.getLanguage; + export const inherit: typeof hljs.inherit; + export const COMMENT: typeof hljs.COMMENT; + + export const IDENT_RE: typeof hljs.IDENT_RE; + export const UNDERSCORE_IDENT_RE: typeof hljs.UNDERSCORE_IDENT_RE; + export const NUMBER_RE: typeof hljs.NUMBER_RE; + export const C_NUMBER_RE: typeof hljs.C_NUMBER_RE; + export const BINARY_NUMBER_RE: typeof hljs.BINARY_NUMBER_RE; + export const RE_STARTERS_RE: typeof hljs.RE_STARTERS_RE; + + export const BACKSLASH_ESCAPE: typeof hljs.BACKSLASH_ESCAPE; + export const APOS_STRING_MODE: typeof hljs.APOS_STRING_MODE; + export const QUOTE_STRING_MODE: typeof hljs.QUOTE_STRING_MODE; + export const PHRASAL_WORDS_MODE: typeof hljs.PHRASAL_WORDS_MODE; + export const C_LINE_COMMENT_MODE: typeof hljs.C_LINE_COMMENT_MODE; + export const C_BLOCK_COMMENT_MODE: typeof hljs.C_BLOCK_COMMENT_MODE; + export const HASH_COMMENT_MODE: typeof hljs.HASH_COMMENT_MODE; + export const NUMBER_MODE: typeof hljs.NUMBER_MODE; + export const C_NUMBER_MODE: typeof hljs.C_NUMBER_MODE; + export const BINARY_NUMBER_MODE: typeof hljs.BINARY_NUMBER_MODE; + export const CSS_NUMBER_MODE: typeof hljs.CSS_NUMBER_MODE; + export const REGEX_MODE: typeof hljs.REGEX_MODE; + export const TITLE_MODE: typeof hljs.TITLE_MODE; + export const UNDERSCORE_TITLE_MODE: typeof hljs.UNDERSCORE_TITLE_MODE; +}