11import { getLanguage , setLanguage } from '../shared/dom-util' ;
22import { rest , tokenize } from '../shared/symbols' ;
33import { htmlEncode } from '../shared/util' ;
4- import { HookState } from './hook-state' ;
5- import { Hooks } from './hooks' ;
4+ import { Hooks } from './classes/hooks' ;
65import { LinkedList } from './linked-list' ;
76import { Registry } from './registry' ;
87import { Token } from './classes/token' ;
98import type { KnownPlugins } from '../known-plugins' ;
109import type { Grammar , GrammarToken , GrammarTokens , RegExpLike } from '../types' ;
11- import type { HookEnvMap } from './hooks' ;
10+ import type { HookEnv } from './classes /hooks' ;
1211import type { LinkedListHeadNode , LinkedListMiddleNode , LinkedListTailNode } from './linked-list' ;
1312import type { TokenStream } from './classes/token' ;
1413
@@ -36,18 +35,16 @@ export class Prism {
3635 highlightAll ( options : HighlightAllOptions = { } ) {
3736 const { root, async, callback } = options ;
3837
39- const env : HookEnvMap [ 'before-highlightall' ] | HookEnvMap [ 'before-all-elements-highlight' ] =
38+ const env : HookEnv =
4039 {
4140 callback,
4241 root : root ?? document ,
4342 selector :
4443 'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code' ,
45- state : new HookState ( ) ,
4644 } ;
4745
4846 this . hooks . run ( 'before-highlightall' , env ) ;
4947
50- assertEnv < 'before-all-elements-highlight' > ( env ) ;
5148 env . elements = [ ...env . root . querySelectorAll ( env . selector ) ] ;
5249
5350 this . hooks . run ( 'before-all-elements-highlight' , env ) ;
@@ -93,16 +90,14 @@ export class Prism {
9390
9491 const code = element . textContent as string ;
9592
96- const env : HookEnvMap [ 'before-sanity-check' ] = {
93+ const env : HookEnv = {
9794 element,
9895 language,
9996 grammar,
10097 code,
101- state : new HookState ( ) ,
10298 } ;
10399
104100 const insertHighlightedCode = ( highlightedCode : string ) => {
105- assertEnv < 'before-insert' > ( env ) ;
106101 env . highlightedCode = highlightedCode ;
107102 this . hooks . run ( 'before-insert' , env ) ;
108103
@@ -168,7 +163,7 @@ export class Prism {
168163 const languageId = this . components . resolveAlias ( language ) ;
169164 const grammar = options ?. grammar ?? this . components . getLanguage ( languageId ) ;
170165
171- const env : HookEnvMap [ 'before-tokenize' ] | HookEnvMap [ 'after-tokenize' ] = {
166+ const env : HookEnv = {
172167 code : text ,
173168 grammar,
174169 language,
@@ -178,7 +173,6 @@ export class Prism {
178173 throw new Error ( 'The language "' + env . language + '" has no grammar.' ) ;
179174 }
180175
181- assertEnv < 'after-tokenize' > ( env ) ;
182176 env . tokens = this . tokenize ( env . code , env . grammar ) ;
183177 this . hooks . run ( 'after-tokenize' , env ) ;
184178
@@ -437,10 +431,6 @@ export interface HighlightOptions {
437431 grammar ?: Grammar ;
438432}
439433
440- function assertEnv < T extends keyof HookEnvMap > ( env : unknown ) : asserts env is HookEnvMap [ T ] {
441- /* noop */
442- }
443-
444434function matchPattern ( pattern : RegExp , pos : number , text : string , lookbehind : boolean ) {
445435 pattern . lastIndex = pos ;
446436 const match = pattern . exec ( text ) ;
@@ -475,7 +465,7 @@ function stringify (o: string | Token | TokenStream, language: string, hooks: Ho
475465 return s ;
476466 }
477467
478- const env : HookEnvMap [ 'wrap' ] = {
468+ const env : HookEnv = {
479469 type : o . type ,
480470 content : stringify ( o . content , language , hooks ) ,
481471 tag : 'span' ,
0 commit comments