@diplodoc/transform 4.48.4 → 4.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.d.ts CHANGED
@@ -1,9 +1,10 @@
1
- import type { OptionsType, OutputType, RootCollectorOptions } from './typings';
2
- declare type TransformFunction = {
3
- (originInput: string, options?: OptionsType): OutputType;
4
- collect: (input: string, options: RootCollectorOptions<any>) => string;
1
+ import type Token from 'markdown-it/lib/token';
2
+ import type { OptionsType, OutputType } from './typings';
3
+ declare type TokensOptionsType = OptionsType & {
4
+ tokens: true;
5
5
  };
6
- declare const transform: TransformFunction;
6
+ declare function transform(originInput: string, options: TokensOptionsType): Token[];
7
+ declare function transform(originInput: string, options?: OptionsType): OutputType;
7
8
  export = transform;
8
9
  declare namespace transform {
9
10
  type Options = OptionsType;
package/lib/index.js CHANGED
@@ -22,35 +22,19 @@ function emitResult(html, env) {
22
22
  logs: log_1.log.get(),
23
23
  };
24
24
  }
25
- // eslint-disable-next-line consistent-return
26
- const transform = (originInput, options = {}) => {
25
+ function transform(originInput, options = {}) {
27
26
  const input = applyLiquid(originInput, options);
28
27
  const { parse, compile, env } = (0, md_1.default)(options);
29
28
  try {
30
- return emitResult(compile(parse(input)), env);
29
+ const tokens = parse(input);
30
+ if (options.tokens === true) {
31
+ return tokens;
32
+ }
33
+ return emitResult(compile(tokens), env);
31
34
  }
32
35
  catch (error) {
33
36
  handleError(error, options.path);
34
37
  }
35
- };
36
- transform.collect = (input,
37
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
- { mdItInitOptions, pluginCollectOptions, parserPluginsOverride }) => {
39
- var _a;
40
- const maybeLiquidedInput = applyLiquid(input, mdItInitOptions);
41
- const { parse } = (0, md_1.default)(Object.assign(Object.assign({}, mdItInitOptions), { plugins: parserPluginsOverride !== null && parserPluginsOverride !== void 0 ? parserPluginsOverride : mdItInitOptions.plugins }));
42
- const plugins = (_a = mdItInitOptions.plugins) !== null && _a !== void 0 ? _a : [];
43
- try {
44
- const tokenStream = parse(maybeLiquidedInput);
45
- return plugins.reduce((collected, plugin) => {
46
- var _a;
47
- const collectOutput = (_a = plugin.collect) === null || _a === void 0 ? void 0 : _a.call(plugin, collected, Object.assign(Object.assign({}, pluginCollectOptions), { tokenStream }));
48
- return collectOutput !== null && collectOutput !== void 0 ? collectOutput : collected;
49
- }, maybeLiquidedInput);
50
- }
51
- catch (error) {
52
- handleError(error, mdItInitOptions.path);
53
- }
54
- };
38
+ }
55
39
  module.exports = transform;
56
40
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/transform/index.ts"],"names":[],"mappings":";;;;AAEA,iCAA2B;AAE3B,+BAA0B;AAC1B,sDAAsC;AACtC,8CAAkC;AAElC,SAAS,WAAW,CAAC,KAAa,EAAE,OAAoB;IACpD,MAAM,EACF,IAAI,GAAG,EAAE,EACT,IAAI,EACJ,gBAAgB,GAAG,KAAK,EACxB,aAAa,GAAG,KAAK,EACrB,UAAU,GAAG,KAAK,GACrB,GAAG,OAAO,CAAC;IAEZ,OAAO,aAAa,IAAI,UAAU;QAC9B,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAA,gBAAc,EAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAC,gBAAgB,EAAC,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,IAAa;IAC9C,SAAG,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC,OAAO,IAAA,YAAI,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE9D,MAAM,KAAK,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,GAAY;IAC1C,OAAO;QACH,MAAM,kCAAM,GAAG,KAAE,IAAI,GAAC;QACtB,IAAI,EAAE,SAAG,CAAC,GAAG,EAAE;KAClB,CAAC;AACN,CAAC;AAQD,6CAA6C;AAC7C,MAAM,SAAS,GAAsB,CAAC,WAAmB,EAAE,UAAuB,EAAE,EAAE,EAAE;IACpF,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,EAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAC,GAAG,IAAA,YAAc,EAAC,OAAO,CAAC,CAAC;IAEtD,IAAI;QACA,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;KACjD;IAAC,OAAO,KAAK,EAAE;QACZ,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;KACpC;AACL,CAAC,CAAC;AAEF,SAAS,CAAC,OAAO,GAAG,CAChB,KAAa;AACb,8DAA8D;AAC9D,EAAC,eAAe,EAAE,oBAAoB,EAAE,qBAAqB,EAA4B,EAC3F,EAAE;;IACA,MAAM,kBAAkB,GAAG,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IAC/D,MAAM,EAAC,KAAK,EAAC,GAAG,IAAA,YAAc,kCACvB,eAAe,KAClB,OAAO,EAAE,qBAAqB,aAArB,qBAAqB,cAArB,qBAAqB,GAAI,eAAe,CAAC,OAAO,IAC3D,CAAC;IAEH,MAAM,OAAO,GAAG,MAAA,eAAe,CAAC,OAAO,mCAAI,EAAE,CAAC;IAE9C,IAAI;QACA,MAAM,WAAW,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAE9C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;;YACxC,MAAM,aAAa,GAAG,MAAA,MAAM,CAAC,OAAO,uDAAG,SAAS,kCACzC,oBAAoB,KACvB,WAAW,IACb,CAAC;YAEH,OAAO,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,SAAS,CAAC;QACtC,CAAC,EAAE,kBAAkB,CAAC,CAAC;KAC1B;IAAC,OAAO,KAAK,EAAE;QACZ,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;KAC5C;AACL,CAAC,CAAC;AAEF,iBAAS,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/transform/index.ts"],"names":[],"mappings":";;;;AAGA,iCAA2B;AAE3B,+BAA0B;AAC1B,sDAAsC;AACtC,8CAAkC;AAElC,SAAS,WAAW,CAAC,KAAa,EAAE,OAAoB;IACpD,MAAM,EACF,IAAI,GAAG,EAAE,EACT,IAAI,EACJ,gBAAgB,GAAG,KAAK,EACxB,aAAa,GAAG,KAAK,EACrB,UAAU,GAAG,KAAK,GACrB,GAAG,OAAO,CAAC;IAEZ,OAAO,aAAa,IAAI,UAAU;QAC9B,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAA,gBAAc,EAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAC,gBAAgB,EAAC,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,IAAa;IAC9C,SAAG,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC,OAAO,IAAA,YAAI,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE9D,MAAM,KAAK,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,GAAY;IAC1C,OAAO;QACH,MAAM,kCAAM,GAAG,KAAE,IAAI,GAAC;QACtB,IAAI,EAAE,SAAG,CAAC,GAAG,EAAE;KAClB,CAAC;AACN,CAAC;AAMD,SAAS,SAAS,CAAC,WAAmB,EAAE,UAAuB,EAAE;IAC7D,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,EAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAC,GAAG,IAAA,YAAc,EAAC,OAAO,CAAC,CAAC;IAEtD,IAAI;QACA,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE;YACzB,OAAO,MAAM,CAAC;SACjB;QAED,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;KAC3C;IAAC,OAAO,KAAK,EAAE;QACZ,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;KACpC;AACL,CAAC;AAED,iBAAS,SAAS,CAAC"}
package/lib/md.js CHANGED
@@ -22,6 +22,7 @@ const highlight_1 = __importDefault(require("./highlight"));
22
22
  const title_1 = __importDefault(require("./title"));
23
23
  const headings_1 = __importDefault(require("./headings"));
24
24
  const sanitize_1 = __importDefault(require("./sanitize"));
25
+ const ol_attr_conversion_1 = require("./plugins/ol-attr-conversion");
25
26
  function initMarkdownIt(options) {
26
27
  const { allowHTML = false, linkify = false, breaks = true, highlightLangs = {}, disableRules = [], } = options;
27
28
  const highlight = (0, highlight_1.default)(highlightLangs);
@@ -70,6 +71,7 @@ function initPlugins(md, options, pluginOptions) {
70
71
  const { linkify = false, linkifyTlds, leftDelimiter = '{', rightDelimiter = '}', plugins = plugins_1.default, } = options;
71
72
  // Need for ids of headers
72
73
  md.use(markdown_it_attrs_1.default, { leftDelimiter, rightDelimiter });
74
+ md.use(ol_attr_conversion_1.olAttrConversion);
73
75
  plugins.forEach((plugin) => md.use(plugin, pluginOptions));
74
76
  if (linkify && linkifyTlds) {
75
77
  md.linkify.tlds(linkifyTlds, true);
package/lib/md.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"md.js","sourceRoot":"","sources":["../src/transform/md.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"md.js","sourceRoot":"","sources":["../src/transform/md.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { MarkdownItPluginCb } from '../typings';
2
+ export declare const olAttrConversion: MarkdownItPluginCb;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.olAttrConversion = void 0;
4
+ const cssWhitelist = {
5
+ '--hier-list-start': true,
6
+ };
7
+ const olAttrConversion = (md) => {
8
+ md.core.ruler.after('block', 'olAttrs', (state) => {
9
+ var _a;
10
+ state.tokens.forEach((token) => {
11
+ const maybeStart = token.attrGet('start');
12
+ if (token.type === 'ordered_list_open' && maybeStart) {
13
+ token.attrSet('style', `--hier-list-start: ${Number(maybeStart) - 1};`);
14
+ }
15
+ });
16
+ (_a = state.env).additionalOptionsCssWhiteList || (_a.additionalOptionsCssWhiteList = {});
17
+ Object.assign(state.env.additionalOptionsCssWhiteList, cssWhitelist);
18
+ });
19
+ };
20
+ exports.olAttrConversion = olAttrConversion;
21
+ //# sourceMappingURL=ol-attr-conversion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ol-attr-conversion.js","sourceRoot":"","sources":["../../src/transform/plugins/ol-attr-conversion.ts"],"names":[],"mappings":";;;AAEA,MAAM,YAAY,GAAG;IACjB,mBAAmB,EAAE,IAAI;CAC5B,CAAC;AAEK,MAAM,gBAAgB,GAAuB,CAAC,EAAE,EAAE,EAAE;IACvD,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;;QAC9C,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAE1C,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,IAAI,UAAU,EAAE;gBAClD,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,sBAAsB,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aAC3E;QACL,CAAC,CAAC,CAAC;QAEH,MAAA,KAAK,CAAC,GAAG,EAAC,6BAA6B,QAA7B,6BAA6B,GAAK,EAAE,EAAC;QAE/C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAdW,QAAA,gBAAgB,oBAc3B"}
package/lib/typings.d.ts CHANGED
@@ -23,6 +23,7 @@ export declare type Heading = {
23
23
  items?: Heading[];
24
24
  };
25
25
  export interface OptionsType {
26
+ tokens?: boolean;
26
27
  vars?: Record<string, string>;
27
28
  path?: string;
28
29
  extractTitle?: boolean;
@@ -89,11 +90,6 @@ export declare type IntrinsicCollectOptions = {
89
90
  export declare type ExtendedPluginWithCollect<PluginRegularOptions extends {} = {}, PluginCollectOptions = {}> = MarkdownItPluginCb<PluginRegularOptions> & {
90
91
  collect?: (input: string, options: PluginCollectOptions & IntrinsicCollectOptions) => string | void;
91
92
  };
92
- export declare type RootCollectorOptions<PluginCollectOptions> = {
93
- mdItInitOptions: OptionsType;
94
- pluginCollectOptions: PluginCollectOptions;
95
- parserPluginsOverride?: ExtendedPluginWithCollect<any, any>[];
96
- };
97
93
  export declare type MarkdownItPreprocessorCb<T extends unknown = {}> = {
98
94
  (input: string, opts: T & Partial<MarkdownItPluginOpts>, md?: MarkdownIt): string;
99
95
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diplodoc/transform",
3
- "version": "4.48.4",
3
+ "version": "4.50.0",
4
4
  "description": "A simple transformer of text in YFM (Yandex Flavored Markdown) to HTML",
5
5
  "keywords": [
6
6
  "markdown",
@@ -2,6 +2,7 @@
2
2
 
3
3
  @import 'private';
4
4
  @import 'brand';
5
+ @import 'lists';
5
6
 
6
7
  @mixin removeMarginForEdgeChildren {
7
8
  & > *:first-child {
@@ -303,24 +304,6 @@
303
304
  margin-bottom: 0;
304
305
  }
305
306
 
306
- ol > li {
307
- &::marker {
308
- content: counter(list-item) '. ';
309
- }
310
-
311
- & > ol > li::marker {
312
- content: counters(list-item, '.') '. ';
313
- }
314
- }
315
-
316
- &.yfm_no-list-reset ol,
317
- ol.yfm_no-list-reset {
318
- // No direct ancestor (>) combinator to preserve legacy behavior
319
- & > li::marker {
320
- content: unset;
321
- }
322
- }
323
-
324
307
  li {
325
308
  word-wrap: break-word;
326
309
  }
@@ -0,0 +1,71 @@
1
+ @use 'sass:list';
2
+ @use 'sass:string';
3
+
4
+ @function get-counter-ident($depth) {
5
+ $ident: hier-list-item;
6
+
7
+ @for $i from 0 to $depth {
8
+ $ident: sub-#{$ident};
9
+ }
10
+
11
+ @return $ident;
12
+ }
13
+
14
+ @function get-selector($depth) {
15
+ $selector: ol;
16
+
17
+ @for $i from 0 to $depth {
18
+ $selector: '#{$selector} > li > ol';
19
+ }
20
+
21
+ @return $selector;
22
+ }
23
+
24
+ @function get-marker-content($idents) {
25
+ $length: list.length($idents);
26
+ $content: '';
27
+
28
+ @for $i from 1 through $length {
29
+ @if $i > 1 {
30
+ $content: '#{$content} "."';
31
+ }
32
+
33
+ $content: '#{$content} counter(#{list.nth($idents, $i)})';
34
+ }
35
+
36
+ @return #{$content} '. ';
37
+ }
38
+
39
+ @mixin hier-list($max-depth) {
40
+ $ident-path: ();
41
+
42
+ @for $i from 0 through $max-depth {
43
+ $ident: get-counter-ident($i);
44
+ $ident-path: list.append($ident-path, $ident);
45
+
46
+ & #{get-selector($i)} {
47
+ --hier-list-start: 0;
48
+ counter-reset: #{$ident} var(--hier-list-start);
49
+
50
+ & > li {
51
+ counter-increment: $ident;
52
+
53
+ &::marker {
54
+ content: get-marker-content($ident-path);
55
+ }
56
+ }
57
+ }
58
+ }
59
+ }
60
+
61
+ .yfm {
62
+ @include hier-list(5);
63
+
64
+ &.yfm_no-list-reset ol,
65
+ ol.yfm_no-list-reset {
66
+ // No direct ancestor (>) combinator to preserve legacy behavior
67
+ & > li::marker {
68
+ content: unset;
69
+ }
70
+ }
71
+ }
@@ -1,4 +1,5 @@
1
- import type {EnvType, OptionsType, OutputType, RootCollectorOptions} from './typings';
1
+ import type Token from 'markdown-it/lib/token';
2
+ import type {EnvType, OptionsType, OutputType} from './typings';
2
3
 
3
4
  import {bold} from 'chalk';
4
5
 
@@ -33,52 +34,25 @@ function emitResult(html: string, env: EnvType): OutputType {
33
34
  };
34
35
  }
35
36
 
36
- type TransformFunction = {
37
- (originInput: string, options?: OptionsType): OutputType;
38
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
39
- collect: (input: string, options: RootCollectorOptions<any>) => string;
40
- };
37
+ type TokensOptionsType = OptionsType & {tokens: true};
41
38
 
42
- // eslint-disable-next-line consistent-return
43
- const transform: TransformFunction = (originInput: string, options: OptionsType = {}) => {
39
+ function transform(originInput: string, options: TokensOptionsType): Token[];
40
+ function transform(originInput: string, options?: OptionsType): OutputType;
41
+ function transform(originInput: string, options: OptionsType = {}): OutputType | Token[] {
44
42
  const input = applyLiquid(originInput, options);
45
43
  const {parse, compile, env} = initMarkdownIt(options);
46
44
 
47
45
  try {
48
- return emitResult(compile(parse(input)), env);
49
- } catch (error) {
50
- handleError(error, options.path);
51
- }
52
- };
53
-
54
- transform.collect = (
55
- input: string,
56
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
57
- {mdItInitOptions, pluginCollectOptions, parserPluginsOverride}: RootCollectorOptions<any>,
58
- ) => {
59
- const maybeLiquidedInput = applyLiquid(input, mdItInitOptions);
60
- const {parse} = initMarkdownIt({
61
- ...mdItInitOptions,
62
- plugins: parserPluginsOverride ?? mdItInitOptions.plugins,
63
- });
64
-
65
- const plugins = mdItInitOptions.plugins ?? [];
46
+ const tokens = parse(input);
47
+ if (options.tokens === true) {
48
+ return tokens;
49
+ }
66
50
 
67
- try {
68
- const tokenStream = parse(maybeLiquidedInput);
69
-
70
- return plugins.reduce((collected, plugin) => {
71
- const collectOutput = plugin.collect?.(collected, {
72
- ...pluginCollectOptions,
73
- tokenStream,
74
- });
75
-
76
- return collectOutput ?? collected;
77
- }, maybeLiquidedInput);
51
+ return emitResult(compile(tokens), env);
78
52
  } catch (error) {
79
- handleError(error, mdItInitOptions.path);
53
+ handleError(error, options.path);
80
54
  }
81
- };
55
+ }
82
56
 
83
57
  export = transform;
84
58
 
@@ -11,6 +11,7 @@ import makeHighlight from './highlight';
11
11
  import extractTitle from './title';
12
12
  import getHeadings from './headings';
13
13
  import sanitizeHtml from './sanitize';
14
+ import {olAttrConversion} from './plugins/ol-attr-conversion';
14
15
 
15
16
  function initMarkdownIt(options: OptionsType) {
16
17
  const {
@@ -98,6 +99,7 @@ function initPlugins(md: MarkdownIt, options: OptionsType, pluginOptions: Markdo
98
99
 
99
100
  // Need for ids of headers
100
101
  md.use(attrs, {leftDelimiter, rightDelimiter});
102
+ md.use(olAttrConversion);
101
103
 
102
104
  plugins.forEach((plugin) => md.use(plugin, pluginOptions));
103
105
 
@@ -0,0 +1,21 @@
1
+ import {MarkdownItPluginCb} from '../typings';
2
+
3
+ const cssWhitelist = {
4
+ '--hier-list-start': true,
5
+ };
6
+
7
+ export const olAttrConversion: MarkdownItPluginCb = (md) => {
8
+ md.core.ruler.after('block', 'olAttrs', (state) => {
9
+ state.tokens.forEach((token) => {
10
+ const maybeStart = token.attrGet('start');
11
+
12
+ if (token.type === 'ordered_list_open' && maybeStart) {
13
+ token.attrSet('style', `--hier-list-start: ${Number(maybeStart) - 1};`);
14
+ }
15
+ });
16
+
17
+ state.env.additionalOptionsCssWhiteList ||= {};
18
+
19
+ Object.assign(state.env.additionalOptionsCssWhiteList, cssWhitelist);
20
+ });
21
+ };
@@ -30,6 +30,7 @@ export type Heading = {
30
30
  };
31
31
 
32
32
  export interface OptionsType {
33
+ tokens?: boolean;
33
34
  vars?: Record<string, string>;
34
35
  path?: string;
35
36
  extractTitle?: boolean;
@@ -111,13 +112,6 @@ export type ExtendedPluginWithCollect<
111
112
  ) => string | void;
112
113
  };
113
114
 
114
- export type RootCollectorOptions<PluginCollectOptions> = {
115
- mdItInitOptions: OptionsType;
116
- pluginCollectOptions: PluginCollectOptions;
117
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
118
- parserPluginsOverride?: ExtendedPluginWithCollect<any, any>[];
119
- };
120
-
121
115
  export type MarkdownItPreprocessorCb<T extends unknown = {}> = {
122
116
  (input: string, opts: T & Partial<MarkdownItPluginOpts>, md?: MarkdownIt): string;
123
117
  };