@openuji/speculator 0.1.0 → 0.3.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.
Files changed (75) hide show
  1. package/README.md +16 -1
  2. package/dist/browser.cjs +1074 -0
  3. package/dist/browser.d.cts +259 -0
  4. package/dist/browser.d.ts +259 -0
  5. package/dist/browser.js +28 -0
  6. package/dist/chunk-U4GQ6EOV.js +1027 -0
  7. package/dist/node.cjs +1096 -0
  8. package/dist/node.d.cts +17 -0
  9. package/dist/node.d.ts +17 -0
  10. package/dist/node.js +49 -0
  11. package/package.json +28 -8
  12. package/dist/index.d.ts +0 -6
  13. package/dist/index.d.ts.map +0 -1
  14. package/dist/index.js +0 -17
  15. package/dist/index.js.map +0 -1
  16. package/dist/markdown/index.d.ts +0 -5
  17. package/dist/markdown/index.d.ts.map +0 -1
  18. package/dist/markdown/index.js +0 -70
  19. package/dist/markdown/index.js.map +0 -1
  20. package/dist/markdown/plugins/cite.d.ts +0 -3
  21. package/dist/markdown/plugins/cite.d.ts.map +0 -1
  22. package/dist/markdown/plugins/cite.js +0 -36
  23. package/dist/markdown/plugins/cite.js.map +0 -1
  24. package/dist/markdown/plugins/concept.d.ts +0 -3
  25. package/dist/markdown/plugins/concept.d.ts.map +0 -1
  26. package/dist/markdown/plugins/concept.js +0 -30
  27. package/dist/markdown/plugins/concept.js.map +0 -1
  28. package/dist/markdown/plugins/idl.d.ts +0 -3
  29. package/dist/markdown/plugins/idl.d.ts.map +0 -1
  30. package/dist/markdown/plugins/idl.js +0 -28
  31. package/dist/markdown/plugins/idl.js.map +0 -1
  32. package/dist/pipeline/passes/boilerplate.d.ts +0 -3
  33. package/dist/pipeline/passes/boilerplate.d.ts.map +0 -1
  34. package/dist/pipeline/passes/boilerplate.js +0 -59
  35. package/dist/pipeline/passes/boilerplate.js.map +0 -1
  36. package/dist/pipeline/passes/diagnostics.d.ts +0 -3
  37. package/dist/pipeline/passes/diagnostics.d.ts.map +0 -1
  38. package/dist/pipeline/passes/diagnostics.js +0 -43
  39. package/dist/pipeline/passes/diagnostics.js.map +0 -1
  40. package/dist/pipeline/passes/idl.d.ts +0 -4
  41. package/dist/pipeline/passes/idl.d.ts.map +0 -1
  42. package/dist/pipeline/passes/idl.js +0 -188
  43. package/dist/pipeline/passes/idl.js.map +0 -1
  44. package/dist/pipeline/passes/references.d.ts +0 -3
  45. package/dist/pipeline/passes/references.d.ts.map +0 -1
  46. package/dist/pipeline/passes/references.js +0 -99
  47. package/dist/pipeline/passes/references.js.map +0 -1
  48. package/dist/pipeline/passes/toc.d.ts +0 -3
  49. package/dist/pipeline/passes/toc.d.ts.map +0 -1
  50. package/dist/pipeline/passes/toc.js +0 -30
  51. package/dist/pipeline/passes/toc.js.map +0 -1
  52. package/dist/pipeline/passes/xref.d.ts +0 -3
  53. package/dist/pipeline/passes/xref.d.ts.map +0 -1
  54. package/dist/pipeline/passes/xref.js +0 -132
  55. package/dist/pipeline/passes/xref.js.map +0 -1
  56. package/dist/pipeline/postprocess.d.ts +0 -6
  57. package/dist/pipeline/postprocess.d.ts.map +0 -1
  58. package/dist/pipeline/postprocess.js +0 -26
  59. package/dist/pipeline/postprocess.js.map +0 -1
  60. package/dist/speculator.d.ts +0 -40
  61. package/dist/speculator.d.ts.map +0 -1
  62. package/dist/speculator.js +0 -188
  63. package/dist/speculator.js.map +0 -1
  64. package/dist/types.d.ts +0 -146
  65. package/dist/types.d.ts.map +0 -1
  66. package/dist/types.js +0 -16
  67. package/dist/types.js.map +0 -1
  68. package/dist/utils/file-loader.d.ts +0 -18
  69. package/dist/utils/file-loader.d.ts.map +0 -1
  70. package/dist/utils/file-loader.js +0 -100
  71. package/dist/utils/file-loader.js.map +0 -1
  72. package/dist/utils/strip-ident.d.ts +0 -2
  73. package/dist/utils/strip-ident.d.ts.map +0 -1
  74. package/dist/utils/strip-ident.js +0 -15
  75. package/dist/utils/strip-ident.js.map +0 -1
@@ -0,0 +1,259 @@
1
+ import MarkdownIt from 'markdown-it';
2
+
3
+ /**
4
+ * Service responsible for processing data-format attributes and markdown content.
5
+ */
6
+ declare class FormatProcessor {
7
+ private readonly markdownOptions;
8
+ constructor(markdownOptions?: MarkdownOptions);
9
+ /**
10
+ * Convert content based on the specified format.
11
+ */
12
+ processContent(content: string, format: DataFormat): string;
13
+ /**
14
+ * Process an element with a data-format attribute.
15
+ */
16
+ process(element: Element, stats: ProcessingStats, warnings: string[]): void;
17
+ }
18
+
19
+ /**
20
+ * Service responsible for handling data-include attributes.
21
+ */
22
+ declare class IncludeProcessor {
23
+ private readonly baseUrl;
24
+ private readonly fileLoader;
25
+ private readonly formatProcessor;
26
+ constructor(baseUrl: string | undefined, fileLoader: FileLoader, formatProcessor: FormatProcessor);
27
+ process(element: Element, stats: ProcessingStats, warnings: string[]): Promise<void>;
28
+ private resolveFilePath;
29
+ }
30
+
31
+ /**
32
+ * Abstraction over DOM parsing and serialization, allowing custom implementations.
33
+ */
34
+ interface HtmlRenderer {
35
+ parse(html: string): Element;
36
+ serialize(element: Element): string;
37
+ }
38
+ /**
39
+ * Default DOM-based implementation using DOMParser.
40
+ */
41
+ declare class DOMHtmlRenderer implements HtmlRenderer {
42
+ parse(html: string): Element;
43
+ serialize(element: Element): string;
44
+ }
45
+
46
+ /**
47
+ * Configuration options for Speculator
48
+ */
49
+ interface SpeculatorOptions {
50
+ /** Base URL for resolving relative file paths */
51
+ baseUrl?: string;
52
+ /** Custom file loader function */
53
+ fileLoader?: FileLoader;
54
+ /** Markdown parsing options */
55
+ markdownOptions?: MarkdownOptions;
56
+ postprocess?: PostprocessOptions;
57
+ includeProcessor?: IncludeProcessor;
58
+ formatProcessor?: FormatProcessor;
59
+ htmlRenderer?: HtmlRenderer;
60
+ }
61
+ /**
62
+ * File loader function type
63
+ */
64
+ type FileLoader = (path: string) => Promise<string>;
65
+ /**
66
+ * Markdown parsing options
67
+ */
68
+ interface MarkdownOptions {
69
+ /** Enable GitHub Flavored Markdown */
70
+ gfm?: boolean;
71
+ /** Enable line breaks */
72
+ breaks?: boolean;
73
+ /** Enable smart typography */
74
+ smartypants?: boolean;
75
+ /** Generate header IDs */
76
+ headerIds?: boolean;
77
+ /** Custom renderer extensions */
78
+ extensions?: Array<MarkdownIt.PluginSimple | [MarkdownIt.PluginWithOptions<any>, any]>;
79
+ }
80
+ /**
81
+ * Processing result for a single element
82
+ */
83
+ interface ProcessingResult {
84
+ /** The processed HTML element */
85
+ element: Element;
86
+ /** Any warnings encountered during processing */
87
+ warnings: string[];
88
+ /** Processing statistics */
89
+ stats: ProcessingStats;
90
+ }
91
+ interface HtmlProcessingResult {
92
+ /** The processed HTML element */
93
+ html: string;
94
+ /** Any warnings encountered during processing */
95
+ warnings: string[];
96
+ /** Processing statistics */
97
+ stats: ProcessingStats;
98
+ }
99
+ /**
100
+ * Processing statistics
101
+ */
102
+ interface ProcessingStats {
103
+ /** Number of elements processed */
104
+ elementsProcessed: number;
105
+ /** Number of files included */
106
+ filesIncluded: number;
107
+ /** Number of markdown blocks converted */
108
+ markdownBlocks: number;
109
+ /** Processing time in milliseconds */
110
+ processingTime: number;
111
+ }
112
+ /**
113
+ * Supported data formats
114
+ */
115
+ type DataFormat = 'markdown' | 'text' | 'html';
116
+ /**
117
+ * Error thrown during rendering
118
+ */
119
+ declare class SpeculatorError extends Error {
120
+ readonly element?: Element | undefined;
121
+ readonly path?: string | undefined;
122
+ constructor(message: string, element?: Element | undefined, path?: string | undefined);
123
+ }
124
+ type XrefQuery = {
125
+ /** Unique identifier returned with results (internal use). */
126
+ id?: string;
127
+ /** The term to resolve. */
128
+ term: string;
129
+ /** Optional list of spec shortnames to constrain the search. */
130
+ specs?: string[];
131
+ /** Additional context for the lookup (unused for now). */
132
+ context?: string;
133
+ };
134
+ type XrefResult = {
135
+ href: string;
136
+ text?: string;
137
+ cite?: string;
138
+ };
139
+ interface XrefResolver {
140
+ /**
141
+ * Resolve a batch of xref queries. The returned map is keyed by the query's
142
+ * `id` if provided, otherwise by the query term.
143
+ */
144
+ resolveBatch(queries: XrefQuery[]): Promise<Map<string, XrefResult[]>>;
145
+ }
146
+ interface XrefOptions {
147
+ specs?: string[];
148
+ resolver: XrefResolver;
149
+ }
150
+ interface BiblioEntry {
151
+ id: string;
152
+ title?: string;
153
+ href?: string;
154
+ publisher?: string;
155
+ date?: string;
156
+ status?: string;
157
+ }
158
+ interface BiblioOptions {
159
+ /** Optional local entries (used in later steps). */
160
+ entries?: Record<string, BiblioEntry>;
161
+ }
162
+ interface IdlOptions {
163
+ enable?: boolean;
164
+ }
165
+ interface TocOptions {
166
+ /** CSS selector for the ToC mount point (default: '#toc'). */
167
+ selector?: string;
168
+ enabled?: boolean;
169
+ }
170
+ interface DiagnosticsOptions {
171
+ /** Suppress link warnings within elements having this class. */
172
+ suppressClass?: string;
173
+ /** Enable duplicate-id and missing-href checks (default true). */
174
+ idsAndLinks?: boolean;
175
+ }
176
+ interface BoilerplateOptions {
177
+ conformance?: boolean | {
178
+ title?: string;
179
+ id?: string;
180
+ content?: string;
181
+ };
182
+ security?: boolean | {
183
+ title?: string;
184
+ id?: string;
185
+ content?: string;
186
+ };
187
+ privacy?: boolean | {
188
+ title?: string;
189
+ id?: string;
190
+ content?: string;
191
+ };
192
+ mount?: 'end' | 'before-references' | 'after-toc';
193
+ }
194
+ interface PostprocessOptions {
195
+ xref?: XrefOptions | XrefOptions[];
196
+ biblio?: BiblioOptions;
197
+ idl?: IdlOptions;
198
+ toc?: TocOptions;
199
+ diagnostics?: DiagnosticsOptions;
200
+ boilerplate?: BoilerplateOptions;
201
+ }
202
+
203
+ /**
204
+ * Main Speculator renderer class
205
+ */
206
+ declare class Speculator {
207
+ private readonly includeProcessor;
208
+ private readonly formatProcessor;
209
+ private readonly htmlRenderer;
210
+ private readonly postprocessOptions;
211
+ private readonly postprocessor;
212
+ constructor(options?: SpeculatorOptions);
213
+ /**
214
+ * Process a single DOM element
215
+ */
216
+ processElement(element: Element): Promise<ProcessingResult>;
217
+ /**
218
+ * Process an entire document
219
+ */
220
+ renderDocument(container: Element): Promise<ProcessingResult>;
221
+ /**
222
+ * Process HTML string and return processed HTML
223
+ */
224
+ renderHTML(inputHtml: string): Promise<HtmlProcessingResult>;
225
+ }
226
+
227
+ declare function createMarkdownRenderer(options?: MarkdownOptions): MarkdownIt;
228
+ declare function parseMarkdown(markdown: string, options?: MarkdownOptions, env?: Record<string, any>): string;
229
+
230
+ /**
231
+ * Default file loader for Node.js environments
232
+ */
233
+ declare const nodeFileLoader: FileLoader;
234
+ /**
235
+ * Default file loader for browser environments
236
+ */
237
+ declare const browserFileLoader: FileLoader;
238
+ /**
239
+ * Creates a file loader that tries multiple loaders in sequence
240
+ */
241
+ declare function createFallbackFileLoader(loaders: FileLoader[]): FileLoader;
242
+ /**
243
+ * Auto-detects the appropriate file loader for the current environment
244
+ */
245
+ declare function getDefaultFileLoader(): FileLoader;
246
+
247
+ /**
248
+ * Xref resolver that queries the public ReSpec xref database.
249
+ *
250
+ * The fetch implementation is injectable to allow easy testing.
251
+ */
252
+ declare class RespecXrefResolver implements XrefResolver {
253
+ private readonly fetchFn;
254
+ private readonly endpoint;
255
+ constructor(fetchFn?: typeof fetch, endpoint?: string);
256
+ resolveBatch(queries: XrefQuery[]): Promise<Map<string, XrefResult[]>>;
257
+ }
258
+
259
+ export { DOMHtmlRenderer, type DataFormat, type FileLoader, FormatProcessor, type HtmlRenderer, IncludeProcessor, type MarkdownOptions, type ProcessingResult, type ProcessingStats, RespecXrefResolver, Speculator, SpeculatorError, type SpeculatorOptions, browserFileLoader, createFallbackFileLoader, createMarkdownRenderer, getDefaultFileLoader, nodeFileLoader, parseMarkdown };
@@ -0,0 +1,259 @@
1
+ import MarkdownIt from 'markdown-it';
2
+
3
+ /**
4
+ * Service responsible for processing data-format attributes and markdown content.
5
+ */
6
+ declare class FormatProcessor {
7
+ private readonly markdownOptions;
8
+ constructor(markdownOptions?: MarkdownOptions);
9
+ /**
10
+ * Convert content based on the specified format.
11
+ */
12
+ processContent(content: string, format: DataFormat): string;
13
+ /**
14
+ * Process an element with a data-format attribute.
15
+ */
16
+ process(element: Element, stats: ProcessingStats, warnings: string[]): void;
17
+ }
18
+
19
+ /**
20
+ * Service responsible for handling data-include attributes.
21
+ */
22
+ declare class IncludeProcessor {
23
+ private readonly baseUrl;
24
+ private readonly fileLoader;
25
+ private readonly formatProcessor;
26
+ constructor(baseUrl: string | undefined, fileLoader: FileLoader, formatProcessor: FormatProcessor);
27
+ process(element: Element, stats: ProcessingStats, warnings: string[]): Promise<void>;
28
+ private resolveFilePath;
29
+ }
30
+
31
+ /**
32
+ * Abstraction over DOM parsing and serialization, allowing custom implementations.
33
+ */
34
+ interface HtmlRenderer {
35
+ parse(html: string): Element;
36
+ serialize(element: Element): string;
37
+ }
38
+ /**
39
+ * Default DOM-based implementation using DOMParser.
40
+ */
41
+ declare class DOMHtmlRenderer implements HtmlRenderer {
42
+ parse(html: string): Element;
43
+ serialize(element: Element): string;
44
+ }
45
+
46
+ /**
47
+ * Configuration options for Speculator
48
+ */
49
+ interface SpeculatorOptions {
50
+ /** Base URL for resolving relative file paths */
51
+ baseUrl?: string;
52
+ /** Custom file loader function */
53
+ fileLoader?: FileLoader;
54
+ /** Markdown parsing options */
55
+ markdownOptions?: MarkdownOptions;
56
+ postprocess?: PostprocessOptions;
57
+ includeProcessor?: IncludeProcessor;
58
+ formatProcessor?: FormatProcessor;
59
+ htmlRenderer?: HtmlRenderer;
60
+ }
61
+ /**
62
+ * File loader function type
63
+ */
64
+ type FileLoader = (path: string) => Promise<string>;
65
+ /**
66
+ * Markdown parsing options
67
+ */
68
+ interface MarkdownOptions {
69
+ /** Enable GitHub Flavored Markdown */
70
+ gfm?: boolean;
71
+ /** Enable line breaks */
72
+ breaks?: boolean;
73
+ /** Enable smart typography */
74
+ smartypants?: boolean;
75
+ /** Generate header IDs */
76
+ headerIds?: boolean;
77
+ /** Custom renderer extensions */
78
+ extensions?: Array<MarkdownIt.PluginSimple | [MarkdownIt.PluginWithOptions<any>, any]>;
79
+ }
80
+ /**
81
+ * Processing result for a single element
82
+ */
83
+ interface ProcessingResult {
84
+ /** The processed HTML element */
85
+ element: Element;
86
+ /** Any warnings encountered during processing */
87
+ warnings: string[];
88
+ /** Processing statistics */
89
+ stats: ProcessingStats;
90
+ }
91
+ interface HtmlProcessingResult {
92
+ /** The processed HTML element */
93
+ html: string;
94
+ /** Any warnings encountered during processing */
95
+ warnings: string[];
96
+ /** Processing statistics */
97
+ stats: ProcessingStats;
98
+ }
99
+ /**
100
+ * Processing statistics
101
+ */
102
+ interface ProcessingStats {
103
+ /** Number of elements processed */
104
+ elementsProcessed: number;
105
+ /** Number of files included */
106
+ filesIncluded: number;
107
+ /** Number of markdown blocks converted */
108
+ markdownBlocks: number;
109
+ /** Processing time in milliseconds */
110
+ processingTime: number;
111
+ }
112
+ /**
113
+ * Supported data formats
114
+ */
115
+ type DataFormat = 'markdown' | 'text' | 'html';
116
+ /**
117
+ * Error thrown during rendering
118
+ */
119
+ declare class SpeculatorError extends Error {
120
+ readonly element?: Element | undefined;
121
+ readonly path?: string | undefined;
122
+ constructor(message: string, element?: Element | undefined, path?: string | undefined);
123
+ }
124
+ type XrefQuery = {
125
+ /** Unique identifier returned with results (internal use). */
126
+ id?: string;
127
+ /** The term to resolve. */
128
+ term: string;
129
+ /** Optional list of spec shortnames to constrain the search. */
130
+ specs?: string[];
131
+ /** Additional context for the lookup (unused for now). */
132
+ context?: string;
133
+ };
134
+ type XrefResult = {
135
+ href: string;
136
+ text?: string;
137
+ cite?: string;
138
+ };
139
+ interface XrefResolver {
140
+ /**
141
+ * Resolve a batch of xref queries. The returned map is keyed by the query's
142
+ * `id` if provided, otherwise by the query term.
143
+ */
144
+ resolveBatch(queries: XrefQuery[]): Promise<Map<string, XrefResult[]>>;
145
+ }
146
+ interface XrefOptions {
147
+ specs?: string[];
148
+ resolver: XrefResolver;
149
+ }
150
+ interface BiblioEntry {
151
+ id: string;
152
+ title?: string;
153
+ href?: string;
154
+ publisher?: string;
155
+ date?: string;
156
+ status?: string;
157
+ }
158
+ interface BiblioOptions {
159
+ /** Optional local entries (used in later steps). */
160
+ entries?: Record<string, BiblioEntry>;
161
+ }
162
+ interface IdlOptions {
163
+ enable?: boolean;
164
+ }
165
+ interface TocOptions {
166
+ /** CSS selector for the ToC mount point (default: '#toc'). */
167
+ selector?: string;
168
+ enabled?: boolean;
169
+ }
170
+ interface DiagnosticsOptions {
171
+ /** Suppress link warnings within elements having this class. */
172
+ suppressClass?: string;
173
+ /** Enable duplicate-id and missing-href checks (default true). */
174
+ idsAndLinks?: boolean;
175
+ }
176
+ interface BoilerplateOptions {
177
+ conformance?: boolean | {
178
+ title?: string;
179
+ id?: string;
180
+ content?: string;
181
+ };
182
+ security?: boolean | {
183
+ title?: string;
184
+ id?: string;
185
+ content?: string;
186
+ };
187
+ privacy?: boolean | {
188
+ title?: string;
189
+ id?: string;
190
+ content?: string;
191
+ };
192
+ mount?: 'end' | 'before-references' | 'after-toc';
193
+ }
194
+ interface PostprocessOptions {
195
+ xref?: XrefOptions | XrefOptions[];
196
+ biblio?: BiblioOptions;
197
+ idl?: IdlOptions;
198
+ toc?: TocOptions;
199
+ diagnostics?: DiagnosticsOptions;
200
+ boilerplate?: BoilerplateOptions;
201
+ }
202
+
203
+ /**
204
+ * Main Speculator renderer class
205
+ */
206
+ declare class Speculator {
207
+ private readonly includeProcessor;
208
+ private readonly formatProcessor;
209
+ private readonly htmlRenderer;
210
+ private readonly postprocessOptions;
211
+ private readonly postprocessor;
212
+ constructor(options?: SpeculatorOptions);
213
+ /**
214
+ * Process a single DOM element
215
+ */
216
+ processElement(element: Element): Promise<ProcessingResult>;
217
+ /**
218
+ * Process an entire document
219
+ */
220
+ renderDocument(container: Element): Promise<ProcessingResult>;
221
+ /**
222
+ * Process HTML string and return processed HTML
223
+ */
224
+ renderHTML(inputHtml: string): Promise<HtmlProcessingResult>;
225
+ }
226
+
227
+ declare function createMarkdownRenderer(options?: MarkdownOptions): MarkdownIt;
228
+ declare function parseMarkdown(markdown: string, options?: MarkdownOptions, env?: Record<string, any>): string;
229
+
230
+ /**
231
+ * Default file loader for Node.js environments
232
+ */
233
+ declare const nodeFileLoader: FileLoader;
234
+ /**
235
+ * Default file loader for browser environments
236
+ */
237
+ declare const browserFileLoader: FileLoader;
238
+ /**
239
+ * Creates a file loader that tries multiple loaders in sequence
240
+ */
241
+ declare function createFallbackFileLoader(loaders: FileLoader[]): FileLoader;
242
+ /**
243
+ * Auto-detects the appropriate file loader for the current environment
244
+ */
245
+ declare function getDefaultFileLoader(): FileLoader;
246
+
247
+ /**
248
+ * Xref resolver that queries the public ReSpec xref database.
249
+ *
250
+ * The fetch implementation is injectable to allow easy testing.
251
+ */
252
+ declare class RespecXrefResolver implements XrefResolver {
253
+ private readonly fetchFn;
254
+ private readonly endpoint;
255
+ constructor(fetchFn?: typeof fetch, endpoint?: string);
256
+ resolveBatch(queries: XrefQuery[]): Promise<Map<string, XrefResult[]>>;
257
+ }
258
+
259
+ export { DOMHtmlRenderer, type DataFormat, type FileLoader, FormatProcessor, type HtmlRenderer, IncludeProcessor, type MarkdownOptions, type ProcessingResult, type ProcessingStats, RespecXrefResolver, Speculator, SpeculatorError, type SpeculatorOptions, browserFileLoader, createFallbackFileLoader, createMarkdownRenderer, getDefaultFileLoader, nodeFileLoader, parseMarkdown };
@@ -0,0 +1,28 @@
1
+ import {
2
+ DOMHtmlRenderer,
3
+ FormatProcessor,
4
+ IncludeProcessor,
5
+ RespecXrefResolver,
6
+ Speculator,
7
+ SpeculatorError,
8
+ browserFileLoader,
9
+ createFallbackFileLoader,
10
+ createMarkdownRenderer,
11
+ getDefaultFileLoader,
12
+ nodeFileLoader,
13
+ parseMarkdown
14
+ } from "./chunk-U4GQ6EOV.js";
15
+ export {
16
+ DOMHtmlRenderer,
17
+ FormatProcessor,
18
+ IncludeProcessor,
19
+ RespecXrefResolver,
20
+ Speculator,
21
+ SpeculatorError,
22
+ browserFileLoader,
23
+ createFallbackFileLoader,
24
+ createMarkdownRenderer,
25
+ getDefaultFileLoader,
26
+ nodeFileLoader,
27
+ parseMarkdown
28
+ };