@ng-doc/utils 22.0.0-beta.1 → 22.0.0-beta.2
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/index.esm.js +286 -292
- package/index.esm.js.map +1 -1
- package/package.json +1 -1
package/index.esm.js
CHANGED
|
@@ -20,9 +20,12 @@ import { stringifyEntities as stringifyEntities$1 } from 'stringify-entities';
|
|
|
20
20
|
* @param html
|
|
21
21
|
*/
|
|
22
22
|
function minify(html) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
return unified()
|
|
24
|
+
.use(rehypeParse, { fragment: true })
|
|
25
|
+
.use(rehypeStringify)
|
|
26
|
+
.use(rehypeMinifyWhitespace)
|
|
27
|
+
.processSync(html)
|
|
28
|
+
.toString();
|
|
26
29
|
}
|
|
27
30
|
|
|
28
31
|
/**
|
|
@@ -31,8 +34,8 @@ function minify(html) {
|
|
|
31
34
|
* @param attr
|
|
32
35
|
*/
|
|
33
36
|
function attrValue(node, attr) {
|
|
34
|
-
|
|
35
|
-
|
|
37
|
+
const attrKey = attr.toLowerCase();
|
|
38
|
+
return node.properties?.[attrKey] ? String(node.properties[attrKey]) : undefined;
|
|
36
39
|
}
|
|
37
40
|
|
|
38
41
|
/**
|
|
@@ -41,8 +44,8 @@ function attrValue(node, attr) {
|
|
|
41
44
|
* @param cls
|
|
42
45
|
*/
|
|
43
46
|
function hasClass(node, cls) {
|
|
44
|
-
|
|
45
|
-
|
|
47
|
+
const className = node.properties?.['className']?.toString() ?? '';
|
|
48
|
+
return !!className && className.includes(cls);
|
|
46
49
|
}
|
|
47
50
|
|
|
48
51
|
/**
|
|
@@ -50,7 +53,7 @@ function hasClass(node, cls) {
|
|
|
50
53
|
* @param ancestors
|
|
51
54
|
*/
|
|
52
55
|
function hasLinkAncestor(ancestors) {
|
|
53
|
-
|
|
56
|
+
return ancestors.some((ancestor) => isElement$1(ancestor, 'a'));
|
|
54
57
|
}
|
|
55
58
|
|
|
56
59
|
/**
|
|
@@ -59,7 +62,7 @@ function hasLinkAncestor(ancestors) {
|
|
|
59
62
|
* @param node
|
|
60
63
|
*/
|
|
61
64
|
function isCodeBlock(parent, node) {
|
|
62
|
-
|
|
65
|
+
return parent?.type === 'element' && parent.tagName === 'pre' && node.tagName === 'code';
|
|
63
66
|
}
|
|
64
67
|
|
|
65
68
|
/**
|
|
@@ -67,7 +70,7 @@ function isCodeBlock(parent, node) {
|
|
|
67
70
|
* @param node
|
|
68
71
|
*/
|
|
69
72
|
function isCodeNode(node) {
|
|
70
|
-
|
|
73
|
+
return isElement$1(node, 'code') || isElement$1(node, 'ng-doc-code');
|
|
71
74
|
}
|
|
72
75
|
|
|
73
76
|
/**
|
|
@@ -75,7 +78,7 @@ function isCodeNode(node) {
|
|
|
75
78
|
* @param node
|
|
76
79
|
*/
|
|
77
80
|
function isElement(node) {
|
|
78
|
-
|
|
81
|
+
return node?.type === 'element';
|
|
79
82
|
}
|
|
80
83
|
|
|
81
84
|
const HEADINGS = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];
|
|
@@ -84,7 +87,7 @@ const HEADINGS = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];
|
|
|
84
87
|
* @param node
|
|
85
88
|
*/
|
|
86
89
|
function isHeading(node) {
|
|
87
|
-
|
|
90
|
+
return isElement$1(node, HEADINGS);
|
|
88
91
|
}
|
|
89
92
|
|
|
90
93
|
const ALWAYS_ALLOWED_LANGUAGES = ['typescript', 'ts', 'angular-ts'];
|
|
@@ -96,30 +99,32 @@ const MATCH_KEYWORD_REGEXP = /(?<key>[*\p{L}\w$@-]+)((?<delimiter>[.#])(?<anchor
|
|
|
96
99
|
* @param config
|
|
97
100
|
*/
|
|
98
101
|
function keywordsPlugin(config) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
103
|
-
const isInlineCode = !isElement$1(ancestors[ancestors.length - 1], 'pre');
|
|
104
|
-
const lang = asArray(node.properties?.['className'] ?? []).find(className => className.startsWith('language-'))?.replace('language-', '') ?? '';
|
|
105
|
-
if (isInlineCode || LANGUAGES.includes(lang)) {
|
|
106
|
-
visitParents(node, 'text', (node, ancestors) => {
|
|
107
|
-
if (hasLinkAncestor(ancestors)) {
|
|
108
|
-
return;
|
|
102
|
+
return (tree) => visitParents(tree, 'element', (node, ancestors) => {
|
|
103
|
+
if (!isCodeNode(node)) {
|
|
104
|
+
return;
|
|
109
105
|
}
|
|
110
|
-
const
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
106
|
+
const isInlineCode = !isElement$1(ancestors[ancestors.length - 1], 'pre');
|
|
107
|
+
const lang = asArray(node.properties?.['className'] ?? [])
|
|
108
|
+
.find((className) => className.startsWith('language-'))
|
|
109
|
+
?.replace('language-', '') ?? '';
|
|
110
|
+
if (isInlineCode || LANGUAGES.includes(lang)) {
|
|
111
|
+
visitParents(node, 'text', (node, ancestors) => {
|
|
112
|
+
if (hasLinkAncestor(ancestors)) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const parent = ancestors[ancestors.length - 1];
|
|
116
|
+
const index = parent.children.indexOf(node);
|
|
117
|
+
// Parse the text for words that we can convert to links
|
|
118
|
+
const nodes = getNodes(node, parent, isInlineCode, config, lang);
|
|
119
|
+
// Replace the text node with the links and leftover text nodes
|
|
120
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
121
|
+
// @ts-ignore
|
|
122
|
+
Array.prototype.splice.apply(parent.children, [index, 1].concat(nodes));
|
|
123
|
+
// Do not visit this node's children or the newly added nodes
|
|
124
|
+
return [SKIP, index + nodes.length];
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
});
|
|
123
128
|
}
|
|
124
129
|
/**
|
|
125
130
|
*
|
|
@@ -130,71 +135,54 @@ function keywordsPlugin(config) {
|
|
|
130
135
|
* @param language
|
|
131
136
|
*/
|
|
132
137
|
function getNodes(node, parent, isInlineCode, config, language) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
href: `${keyword.path}${queryParams ?? ''}`,
|
|
182
|
-
className: [NG_DOC_ELEMENT]
|
|
183
|
-
};
|
|
184
|
-
return {
|
|
185
|
-
type: 'text',
|
|
186
|
-
value: keyword.title
|
|
187
|
-
};
|
|
188
|
-
} else if (isInlineCode && keyword) {
|
|
189
|
-
parent.properties['className'] = [NG_DOC_ELEMENT, 'ng-doc-code-with-link'];
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
// Add link inside the code if it's a link to the API entity
|
|
193
|
-
return keyword ? createLinkNode(isInlineCode ? keyword.title : word, keyword.path, keyword.type, keyword.description) : {
|
|
194
|
-
type: 'text',
|
|
195
|
-
value: word
|
|
196
|
-
};
|
|
197
|
-
});
|
|
138
|
+
const { addUsedKeyword, getKeyword } = config;
|
|
139
|
+
return toString(node)
|
|
140
|
+
.split(SPLIT_REGEXP)
|
|
141
|
+
.map((word) => {
|
|
142
|
+
const match = word.match(MATCH_KEYWORD_REGEXP);
|
|
143
|
+
if (!match) {
|
|
144
|
+
return { type: 'text', value: word };
|
|
145
|
+
}
|
|
146
|
+
const { key = '', delimiter = '', anchor = '', queryParams = '', } = match.groups;
|
|
147
|
+
const usedKeyword = `${key}${delimiter}${anchor?.toLowerCase()}`;
|
|
148
|
+
const rootKeyword = getKeyword?.(key);
|
|
149
|
+
const keyword = getKeyword?.(usedKeyword);
|
|
150
|
+
const isGuideKeyword = key.startsWith('*');
|
|
151
|
+
const isLanguageAllowed = (!keyword?.languages && ALWAYS_ALLOWED_LANGUAGES.includes(language)) ||
|
|
152
|
+
!!keyword?.languages?.includes(language);
|
|
153
|
+
// If language of code block is not allowed, return the word as is
|
|
154
|
+
if (!isInlineCode && keyword && !isLanguageAllowed) {
|
|
155
|
+
return { type: 'text', value: word };
|
|
156
|
+
}
|
|
157
|
+
// If the keyword is just an asterisk, return the word as is
|
|
158
|
+
if (isGuideKeyword && key.length === 1) {
|
|
159
|
+
return { type: 'text', value: word };
|
|
160
|
+
}
|
|
161
|
+
addUsedKeyword?.(usedKeyword);
|
|
162
|
+
const notFoundGuideKeyword = isGuideKeyword && !keyword;
|
|
163
|
+
const notFoundApiAnchorKeyword = !!rootKeyword && !!anchor && !keyword;
|
|
164
|
+
if (getKeyword && isInlineCode && (notFoundGuideKeyword || notFoundApiAnchorKeyword)) {
|
|
165
|
+
throw new Error(`Route with keyword "${word}" is missing.`);
|
|
166
|
+
}
|
|
167
|
+
// Convert code tag to a link tag or highlight it with a class
|
|
168
|
+
if (parent.properties) {
|
|
169
|
+
if (isInlineCode && keyword?.type === 'link') {
|
|
170
|
+
parent.tagName = 'a';
|
|
171
|
+
parent.properties = {
|
|
172
|
+
href: `${keyword.path}${queryParams ?? ''}`,
|
|
173
|
+
className: [NG_DOC_ELEMENT],
|
|
174
|
+
};
|
|
175
|
+
return { type: 'text', value: keyword.title };
|
|
176
|
+
}
|
|
177
|
+
else if (isInlineCode && keyword) {
|
|
178
|
+
parent.properties['className'] = [NG_DOC_ELEMENT, 'ng-doc-code-with-link'];
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// Add link inside the code if it's a link to the API entity
|
|
182
|
+
return keyword
|
|
183
|
+
? createLinkNode(isInlineCode ? keyword.title : word, keyword.path, keyword.type, keyword.description)
|
|
184
|
+
: { type: 'text', value: word };
|
|
185
|
+
});
|
|
198
186
|
}
|
|
199
187
|
/**
|
|
200
188
|
*
|
|
@@ -204,20 +192,17 @@ function getNodes(node, parent, isInlineCode, config, language) {
|
|
|
204
192
|
* @param description
|
|
205
193
|
*/
|
|
206
194
|
function createLinkNode(text, href, type, description) {
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
value: text
|
|
219
|
-
}]
|
|
220
|
-
};
|
|
195
|
+
return {
|
|
196
|
+
type: 'element',
|
|
197
|
+
tagName: 'a',
|
|
198
|
+
properties: {
|
|
199
|
+
href: href,
|
|
200
|
+
class: ['ng-doc-code-anchor', NG_DOC_ELEMENT],
|
|
201
|
+
'data-link-type': type,
|
|
202
|
+
ngDocTooltip: description,
|
|
203
|
+
},
|
|
204
|
+
children: [{ type: 'text', value: text }],
|
|
205
|
+
};
|
|
221
206
|
}
|
|
222
207
|
|
|
223
208
|
/**
|
|
@@ -228,24 +213,19 @@ function createLinkNode(text, href, type, description) {
|
|
|
228
213
|
* @param addUsedKeyword
|
|
229
214
|
*/
|
|
230
215
|
async function postProcessHtml(html) {
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
content: html,
|
|
245
|
-
usedKeywords: [],
|
|
246
|
-
error
|
|
247
|
-
};
|
|
248
|
-
}
|
|
216
|
+
const usedKeywords = new Set();
|
|
217
|
+
try {
|
|
218
|
+
const content = await unified()
|
|
219
|
+
.use(rehypeParse, { fragment: true })
|
|
220
|
+
.use(rehypeStringify)
|
|
221
|
+
.use(keywordsPlugin, { addUsedKeyword: usedKeywords.add.bind(usedKeywords) })
|
|
222
|
+
.process(html)
|
|
223
|
+
.then((file) => file.toString());
|
|
224
|
+
return { content, usedKeywords: Array.from(usedKeywords) };
|
|
225
|
+
}
|
|
226
|
+
catch (error) {
|
|
227
|
+
return { content: html, usedKeywords: [], error };
|
|
228
|
+
}
|
|
249
229
|
}
|
|
250
230
|
|
|
251
231
|
const NO_ANCHOR_CLASS = 'no-anchor';
|
|
@@ -255,46 +235,51 @@ const NO_ANCHOR_CLASS = 'no-anchor';
|
|
|
255
235
|
* @param route
|
|
256
236
|
*/
|
|
257
237
|
function addHeadingAnchors(route) {
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
238
|
+
return (tree) => visit(tree, 'element', (node) => {
|
|
239
|
+
if (route &&
|
|
240
|
+
isHeading(node) &&
|
|
241
|
+
node.properties &&
|
|
242
|
+
node.properties['id'] &&
|
|
243
|
+
!hasClass(node, NO_ANCHOR_CLASS)) {
|
|
244
|
+
node.children.push({
|
|
245
|
+
type: 'element',
|
|
246
|
+
tagName: 'ng-doc-heading-anchor',
|
|
247
|
+
properties: {
|
|
248
|
+
className: ['ng-doc-anchor'],
|
|
249
|
+
anchor: node.properties['id'],
|
|
250
|
+
},
|
|
251
|
+
children: [],
|
|
252
|
+
});
|
|
253
|
+
node.properties = {
|
|
254
|
+
...node.properties,
|
|
255
|
+
href: route,
|
|
256
|
+
headingLink: 'true',
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
});
|
|
276
260
|
}
|
|
277
261
|
|
|
278
262
|
/**
|
|
279
263
|
* Highlight code lines
|
|
280
264
|
*/
|
|
281
265
|
function highlightCodeLines() {
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
266
|
+
return (tree) => {
|
|
267
|
+
visit(tree, 'element', (node, _i, parent) => {
|
|
268
|
+
if (isCodeBlock(parent, node) && parent?.type === 'element') {
|
|
269
|
+
const highlightedLines = JSON.parse(attrValue(parent, 'highlightedLines') ?? '[]');
|
|
270
|
+
highlightedLines.length &&
|
|
271
|
+
node.children.filter(isElement).forEach((child, i) => {
|
|
272
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
273
|
+
// @ts-ignore
|
|
274
|
+
if (child.properties.class === 'line' && highlightedLines.includes(i + 1)) {
|
|
275
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
276
|
+
// @ts-ignore
|
|
277
|
+
child.properties.class = 'line highlighted';
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
}
|
|
294
281
|
});
|
|
295
|
-
|
|
296
|
-
});
|
|
297
|
-
};
|
|
282
|
+
};
|
|
298
283
|
}
|
|
299
284
|
|
|
300
285
|
/**
|
|
@@ -303,15 +288,15 @@ function highlightCodeLines() {
|
|
|
303
288
|
* @param headings
|
|
304
289
|
*/
|
|
305
290
|
function markElementsPlugin() {
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
291
|
+
return (tree) => {
|
|
292
|
+
visit(tree, 'element', (node) => {
|
|
293
|
+
if (node.properties) {
|
|
294
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
295
|
+
// @ts-ignore
|
|
296
|
+
node.properties['className'] = [...asArray(node.properties.className), NG_DOC_ELEMENT];
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
};
|
|
315
300
|
}
|
|
316
301
|
|
|
317
302
|
/**
|
|
@@ -320,22 +305,22 @@ function markElementsPlugin() {
|
|
|
320
305
|
* @param headings
|
|
321
306
|
*/
|
|
322
307
|
function mermaidPlugin() {
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
308
|
+
return (tree) => {
|
|
309
|
+
visit(tree, 'element', (node) => {
|
|
310
|
+
if (node.tagName === 'pre') {
|
|
311
|
+
const codeNode = node.children[0];
|
|
312
|
+
if (codeNode.tagName === 'code' && codeNode.properties?.['lang'] === 'mermaid') {
|
|
313
|
+
node.properties = { className: ['mermaid'] };
|
|
314
|
+
node.children = [
|
|
315
|
+
{
|
|
316
|
+
type: 'text',
|
|
317
|
+
value: toString(codeNode),
|
|
318
|
+
},
|
|
319
|
+
];
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
};
|
|
339
324
|
}
|
|
340
325
|
|
|
341
326
|
/**
|
|
@@ -345,69 +330,75 @@ function mermaidPlugin() {
|
|
|
345
330
|
* @param headings
|
|
346
331
|
*/
|
|
347
332
|
function sluggerPlugin(addAnchor, headings = ['h1', 'h2', 'h3', 'h4']) {
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
333
|
+
if (!addAnchor) {
|
|
334
|
+
return () => { };
|
|
335
|
+
}
|
|
336
|
+
const slugger = new GithubSlugger();
|
|
337
|
+
return (tree) => {
|
|
338
|
+
slugger.reset();
|
|
339
|
+
visitParents(tree, 'element', (node, ancestors) => {
|
|
340
|
+
const scope = getKeywordScope(ancestors);
|
|
341
|
+
const isHeading = !!headingRank(node) &&
|
|
342
|
+
!hasProperty(node, 'id') &&
|
|
343
|
+
!!headings?.includes(node.tagName.toLowerCase());
|
|
344
|
+
const attrSlug = attrValue(node, 'dataSlug');
|
|
345
|
+
const attrSlugTitle = attrValue(node, 'dataSlugTitle');
|
|
346
|
+
const attrSlugType = attrValue(node, 'dataSlugType');
|
|
347
|
+
const dataToSlug = isHeading ? toString(node).trim() : attrSlug;
|
|
348
|
+
if (dataToSlug) {
|
|
349
|
+
if (node.properties) {
|
|
350
|
+
const id = attrSlug && attrSlugType === 'member' ? attrSlug : slugger.slug(dataToSlug);
|
|
351
|
+
node.properties['id'] = id;
|
|
352
|
+
addAnchor({
|
|
353
|
+
anchorId: id,
|
|
354
|
+
anchor: new GithubSlugger().slug(dataToSlug),
|
|
355
|
+
title: attrSlugTitle || dataToSlug,
|
|
356
|
+
scope,
|
|
357
|
+
type: (isHeading && attrSlugType !== 'member') || (attrSlug && attrSlugType === 'heading')
|
|
358
|
+
? 'heading'
|
|
359
|
+
: 'member',
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
});
|
|
364
|
+
};
|
|
376
365
|
}
|
|
377
366
|
/**
|
|
378
367
|
*
|
|
379
368
|
* @param ancestors
|
|
380
369
|
*/
|
|
381
370
|
function getKeywordScope(ancestors) {
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
371
|
+
const keywordScope = ancestors.find((ancestor) => isElement$1(ancestor) && ancestor.tagName === 'ng-doc-keyword-scope');
|
|
372
|
+
const key = keywordScope?.properties?.['id'];
|
|
373
|
+
return key
|
|
374
|
+
? {
|
|
375
|
+
key: String(key),
|
|
376
|
+
title: String(keywordScope?.properties?.['title']),
|
|
377
|
+
}
|
|
378
|
+
: undefined;
|
|
388
379
|
}
|
|
389
380
|
|
|
390
381
|
/**
|
|
391
382
|
*
|
|
392
383
|
*/
|
|
393
384
|
function wrapTablePlugin () {
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
385
|
+
return (tree) => {
|
|
386
|
+
visit(tree, 'element', (node, index, parent) => {
|
|
387
|
+
const table = node?.tagName === 'table';
|
|
388
|
+
if (table) {
|
|
389
|
+
const wrapper = {
|
|
390
|
+
type: 'element',
|
|
391
|
+
tagName: 'div',
|
|
392
|
+
properties: {
|
|
393
|
+
className: 'ng-doc-table-wrapper',
|
|
394
|
+
},
|
|
395
|
+
children: [node],
|
|
396
|
+
};
|
|
397
|
+
// @ts-expect-error - parent is a hast node
|
|
398
|
+
parent.children[index] = wrapper;
|
|
399
|
+
}
|
|
400
|
+
});
|
|
401
|
+
};
|
|
411
402
|
}
|
|
412
403
|
|
|
413
404
|
/**
|
|
@@ -416,34 +407,37 @@ function wrapTablePlugin () {
|
|
|
416
407
|
* @param config
|
|
417
408
|
*/
|
|
418
409
|
async function processHtml(html, config) {
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
410
|
+
const anchors = new Set();
|
|
411
|
+
try {
|
|
412
|
+
const content = await unified()
|
|
413
|
+
.use(rehypeParse, { fragment: true })
|
|
414
|
+
.use(rehypeStringify)
|
|
415
|
+
.use(mermaidPlugin)
|
|
416
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
417
|
+
// @ts-ignore
|
|
418
|
+
.use(rehypeShiki, {
|
|
419
|
+
defaultLanguage: 'ts',
|
|
420
|
+
fallbackLanguage: 'text',
|
|
421
|
+
addLanguageClass: true,
|
|
422
|
+
parseMetaString: (meta) => JSON.parse(meta?.replace(/\\/g, '') || '{}'),
|
|
423
|
+
themes: {
|
|
424
|
+
light: config.lightTheme ?? 'github-light',
|
|
425
|
+
dark: config.darkTheme ?? 'ayu-dark',
|
|
426
|
+
},
|
|
427
|
+
})
|
|
428
|
+
.use(highlightCodeLines)
|
|
429
|
+
.use(wrapTablePlugin)
|
|
430
|
+
.use(sluggerPlugin, anchors.add.bind(anchors), config.headings)
|
|
431
|
+
.use(rehypeMinifyWhitespace)
|
|
432
|
+
.use(addHeadingAnchors, config.route)
|
|
433
|
+
.use(markElementsPlugin)
|
|
434
|
+
.process(html)
|
|
435
|
+
.then((file) => file.toString());
|
|
436
|
+
return { content, anchors: Array.from(anchors) };
|
|
437
|
+
}
|
|
438
|
+
catch (error) {
|
|
439
|
+
return { content: html, anchors: [], error };
|
|
440
|
+
}
|
|
447
441
|
}
|
|
448
442
|
|
|
449
443
|
/**
|
|
@@ -452,19 +446,17 @@ async function processHtml(html, config) {
|
|
|
452
446
|
* @param headings
|
|
453
447
|
*/
|
|
454
448
|
function removeNotIndexableContentPlugin() {
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
});
|
|
467
|
-
};
|
|
449
|
+
return (tree) => {
|
|
450
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
451
|
+
// @ts-ignore
|
|
452
|
+
return filter(tree, { cascade: true }, (node) => {
|
|
453
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
454
|
+
// @ts-ignore
|
|
455
|
+
const preWithCode = node?.tagName === 'pre' && node?.children?.some(isCodeNode);
|
|
456
|
+
const notIndexable = node?.properties?.['indexable'] === 'false';
|
|
457
|
+
return !node?.tagName || (!preWithCode && !notIndexable);
|
|
458
|
+
});
|
|
459
|
+
};
|
|
468
460
|
}
|
|
469
461
|
|
|
470
462
|
/**
|
|
@@ -472,7 +464,10 @@ function removeNotIndexableContentPlugin() {
|
|
|
472
464
|
* @param html
|
|
473
465
|
*/
|
|
474
466
|
async function removeNotIndexableContent(html) {
|
|
475
|
-
|
|
467
|
+
return rehype()
|
|
468
|
+
.use(removeNotIndexableContentPlugin)
|
|
469
|
+
.process(html)
|
|
470
|
+
.then((file) => file.toString());
|
|
476
471
|
}
|
|
477
472
|
|
|
478
473
|
/**
|
|
@@ -482,14 +477,13 @@ async function removeNotIndexableContent(html) {
|
|
|
482
477
|
* @param config.getKeyword
|
|
483
478
|
* @param getKeyword
|
|
484
479
|
*/
|
|
485
|
-
async function replaceKeywords(html, {
|
|
486
|
-
|
|
487
|
-
})
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
}).process(html).then(file => file.toString());
|
|
480
|
+
async function replaceKeywords(html, { getKeyword }) {
|
|
481
|
+
return unified()
|
|
482
|
+
.use(rehypeParse, { fragment: true })
|
|
483
|
+
.use(rehypeStringify)
|
|
484
|
+
.use(keywordsPlugin, { getKeyword })
|
|
485
|
+
.process(html)
|
|
486
|
+
.then((file) => file.toString());
|
|
493
487
|
}
|
|
494
488
|
|
|
495
489
|
/**
|
|
@@ -497,7 +491,7 @@ async function replaceKeywords(html, {
|
|
|
497
491
|
* @param content
|
|
498
492
|
*/
|
|
499
493
|
function stringifyEntities(content) {
|
|
500
|
-
|
|
494
|
+
return stringifyEntities$1(content);
|
|
501
495
|
}
|
|
502
496
|
|
|
503
497
|
export { minify, postProcessHtml, processHtml, removeNotIndexableContent, replaceKeywords, stringifyEntities };
|
package/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../../../libs/utils/html/minify.ts","../../../libs/utils/html/helpers/attr-value.ts","../../../libs/utils/html/helpers/has-class.ts","../../../libs/utils/html/helpers/has-link-ancestor.ts","../../../libs/utils/html/helpers/is-code-block.ts","../../../libs/utils/html/helpers/is-code-node.ts","../../../libs/utils/html/helpers/is-element.ts","../../../libs/utils/html/helpers/is-heading.ts","../../../libs/utils/html/plugins/keywords.plugin.ts","../../../libs/utils/html/post-process-html.ts","../../../libs/utils/html/plugins/add-heading-anchors.plugin.ts","../../../libs/utils/html/plugins/highlight-code-lines.ts","../../../libs/utils/html/plugins/mark-elements.plugin.ts","../../../libs/utils/html/plugins/mermaid.plugin.ts","../../../libs/utils/html/plugins/slugger.plugin.ts","../../../libs/utils/html/plugins/table-wrapper.ts","../../../libs/utils/html/process-html.ts","../../../libs/utils/html/plugins/remove-not-indexable-content.plugin.ts","../../../libs/utils/html/remove-not-indexable-content.ts","../../../libs/utils/html/replace-keywords.ts","../../../libs/utils/html/stringify-entities.ts"],"sourcesContent":["import rehypeMinifyWhitespace from 'rehype-minify-whitespace';\nimport rehypeParse from 'rehype-parse';\nimport rehypeStringify from 'rehype-stringify';\nimport { unified } from 'unified';\n\n/**\n *\n * @param html\n */\nexport function minify(html: string): string {\n return unified()\n .use(rehypeParse, { fragment: true })\n .use(rehypeStringify)\n .use(rehypeMinifyWhitespace)\n .processSync(html)\n .toString();\n}\n","import { Element } from 'hast';\n\n/**\n *\n * @param node\n * @param attr\n */\nexport function attrValue(node: Element, attr: string): string | undefined {\n const attrKey: string = attr.toLowerCase();\n\n return node.properties?.[attrKey] ? String(node.properties[attrKey]) : undefined;\n}\n","import { Element } from 'hast';\n\n/**\n *\n * @param node\n * @param cls\n */\nexport function hasClass(node: Element, cls: string): boolean {\n const className: string = node.properties?.['className']?.toString() ?? '';\n\n return !!className && className.includes(cls);\n}\n","import { Element } from 'hast';\nimport { isElement } from 'hast-util-is-element';\n\n/**\n *\n * @param ancestors\n */\nexport function hasLinkAncestor(ancestors: Element[]): boolean {\n return ancestors.some((ancestor: Element) => isElement(ancestor, 'a'));\n}\n","import { Element, Root } from 'hast';\n\n/**\n *\n * @param parent\n * @param node\n */\nexport function isCodeBlock(parent: Root | Element | null, node: Element): node is Element {\n return parent?.type === 'element' && parent.tagName === 'pre' && node.tagName === 'code';\n}\n","import { Element } from 'hast';\nimport { isElement } from 'hast-util-is-element';\n\n/**\n *\n * @param node\n */\nexport function isCodeNode(node: Element): boolean {\n return isElement(node, 'code') || isElement(node, 'ng-doc-code');\n}\n","import { Content, Element } from 'hast';\n\n/**\n *\n * @param node\n */\nexport function isElement(node?: Content): node is Element {\n return node?.type === 'element';\n}\n","import { Element } from 'hast';\nimport { isElement } from 'hast-util-is-element';\n\nconst HEADINGS: string[] = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n\n/**\n *\n * @param node\n */\nexport function isHeading(node: Element): boolean {\n return isElement(node, HEADINGS);\n}\n","import {\n asArray,\n KEYWORD_ALLOWED_LANGUAGES,\n NG_DOC_ELEMENT,\n NgDocKeyword,\n NgDocKeywordLanguage,\n} from '@ng-doc/core';\nimport { Element, Text } from 'hast';\nimport { isElement } from 'hast-util-is-element';\nimport { toString } from 'hast-util-to-string';\nimport { SKIP, visitParents } from 'unist-util-visit-parents';\n\nimport { hasLinkAncestor, isCodeNode } from '../helpers';\n\nconst ALWAYS_ALLOWED_LANGUAGES: string[] = ['typescript', 'ts', 'angular-ts'];\nconst LANGUAGES: string[] = ['typescript', 'ts', 'angular-ts', ...KEYWORD_ALLOWED_LANGUAGES];\nconst SPLIT_REGEXP: RegExp = /([*\\p{L}\\w$@-]+(?:[.#][\\p{L}\\w-]+)?(?:\\?[\\w=&]+)?)/u;\nconst MATCH_KEYWORD_REGEXP: RegExp =\n /(?<key>[*\\p{L}\\w$@-]+)((?<delimiter>[.#])(?<anchor>[\\p{L}\\w-]+))?(?<queryParams>\\?[\\w=&]+)?/u;\n\nexport type AddKeyword = (keyword: string) => void;\nexport type GetKeyword = (keyword: string) => NgDocKeyword | undefined;\n\ninterface Config {\n addUsedKeyword?: AddKeyword;\n getKeyword?: GetKeyword;\n}\n\n/**\n *\n * @param config\n */\nexport default function keywordsPlugin(config: Config) {\n return (tree: Element) =>\n visitParents(tree, 'element', (node: Element, ancestors: Element[]) => {\n if (!isCodeNode(node)) {\n return;\n }\n\n const isInlineCode: boolean = !isElement(ancestors[ancestors.length - 1], 'pre');\n const lang =\n asArray((node.properties?.['className'] as string[]) ?? [])\n .find((className) => className.startsWith('language-'))\n ?.replace('language-', '') ?? '';\n\n if (isInlineCode || LANGUAGES.includes(lang)) {\n visitParents(node, 'text', (node: Text, ancestors: Element[]) => {\n if (hasLinkAncestor(ancestors)) {\n return;\n }\n\n const parent: Element = ancestors[ancestors.length - 1];\n const index: number = parent.children.indexOf(node);\n\n // Parse the text for words that we can convert to links\n const nodes: any[] = getNodes(node, parent, isInlineCode, config, lang);\n // Replace the text node with the links and leftover text nodes\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n Array.prototype.splice.apply(parent.children, [index, 1].concat(nodes));\n // Do not visit this node's children or the newly added nodes\n return [SKIP, index + nodes.length];\n });\n }\n });\n}\n\n/**\n *\n * @param node\n * @param parent\n * @param isInlineCode\n * @param config\n * @param language\n */\nfunction getNodes(\n node: Text,\n parent: Element,\n isInlineCode: boolean,\n config: Config,\n language: string,\n): Array<Element | Text> {\n const { addUsedKeyword, getKeyword } = config;\n\n return toString(node)\n .split(SPLIT_REGEXP)\n .map((word: string) => {\n const match = word.match(MATCH_KEYWORD_REGEXP);\n\n if (!match) {\n return { type: 'text', value: word };\n }\n\n const {\n key = '',\n delimiter = '',\n anchor = '',\n queryParams = '',\n } = match.groups as { key: string; delimiter: string; anchor: string; queryParams: string };\n const usedKeyword = `${key}${delimiter}${anchor?.toLowerCase()}`;\n const rootKeyword = getKeyword?.(key);\n const keyword = getKeyword?.(usedKeyword);\n const isGuideKeyword = key.startsWith('*');\n const isLanguageAllowed =\n (!keyword?.languages && ALWAYS_ALLOWED_LANGUAGES.includes(language)) ||\n !!keyword?.languages?.includes(language as NgDocKeywordLanguage);\n\n // If language of code block is not allowed, return the word as is\n if (!isInlineCode && keyword && !isLanguageAllowed) {\n return { type: 'text', value: word };\n }\n\n // If the keyword is just an asterisk, return the word as is\n if (isGuideKeyword && key.length === 1) {\n return { type: 'text', value: word };\n }\n\n addUsedKeyword?.(usedKeyword);\n\n const notFoundGuideKeyword: boolean = isGuideKeyword && !keyword;\n const notFoundApiAnchorKeyword: boolean = !!rootKeyword && !!anchor && !keyword;\n\n if (getKeyword && isInlineCode && (notFoundGuideKeyword || notFoundApiAnchorKeyword)) {\n throw new Error(`Route with keyword \"${word}\" is missing.`);\n }\n\n // Convert code tag to a link tag or highlight it with a class\n if (parent.properties) {\n if (isInlineCode && keyword?.type === 'link') {\n parent.tagName = 'a';\n parent.properties = {\n href: `${keyword.path}${queryParams ?? ''}`,\n className: [NG_DOC_ELEMENT],\n };\n\n return { type: 'text', value: keyword.title };\n } else if (isInlineCode && keyword) {\n parent.properties['className'] = [NG_DOC_ELEMENT, 'ng-doc-code-with-link'];\n }\n }\n\n // Add link inside the code if it's a link to the API entity\n return keyword\n ? createLinkNode(\n isInlineCode ? keyword.title : word,\n keyword.path,\n keyword.type,\n keyword.description,\n )\n : { type: 'text', value: word };\n });\n}\n\n/**\n *\n * @param text\n * @param href\n * @param type\n * @param description\n */\nfunction createLinkNode(text: string, href: string, type?: string, description?: string): Element {\n return {\n type: 'element',\n tagName: 'a',\n properties: {\n href: href,\n class: ['ng-doc-code-anchor', NG_DOC_ELEMENT],\n 'data-link-type': type,\n ngDocTooltip: description,\n },\n children: [{ type: 'text', value: text }],\n };\n}\n","import rehypeParse from 'rehype-parse';\nimport rehypeStringify from 'rehype-stringify';\nimport { unified } from 'unified';\n\nimport keywordsPlugin from './plugins/keywords.plugin';\n\nexport interface PostProcessHtmlOutput {\n content: string;\n usedKeywords: string[];\n error?: unknown;\n}\n\n/**\n *\n * @param html\n * @param config\n * @param config.addUsedKeyword\n * @param addUsedKeyword\n */\nexport async function postProcessHtml(html: string): Promise<PostProcessHtmlOutput> {\n const usedKeywords = new Set<string>();\n\n try {\n const content = await unified()\n .use(rehypeParse, { fragment: true })\n .use(rehypeStringify)\n .use(keywordsPlugin, { addUsedKeyword: usedKeywords.add.bind(usedKeywords) })\n .process(html)\n .then((file) => file.toString());\n\n return { content, usedKeywords: Array.from(usedKeywords) };\n } catch (error) {\n return { content: html, usedKeywords: [], error };\n }\n}\n","import { Element, Root } from 'hast';\nimport { visit } from 'unist-util-visit';\n\nimport { hasClass, isHeading } from '../helpers';\n\nconst NO_ANCHOR_CLASS: string = 'no-anchor';\n\n/**\n *\n * @param options\n * @param route\n */\nexport default function addHeadingAnchors(route?: string): any {\n return (tree: Root) =>\n visit(tree, 'element', (node: Element) => {\n if (\n route &&\n isHeading(node) &&\n node.properties &&\n node.properties['id'] &&\n !hasClass(node, NO_ANCHOR_CLASS)\n ) {\n node.children.push({\n type: 'element',\n tagName: 'ng-doc-heading-anchor',\n properties: {\n className: ['ng-doc-anchor'],\n anchor: node.properties['id'],\n },\n children: [],\n });\n\n node.properties = {\n ...node.properties,\n href: route,\n headingLink: 'true',\n };\n }\n });\n}\n","import { Element, Root } from 'hast';\nimport { visit } from 'unist-util-visit';\n\nimport { attrValue, isCodeBlock, isElement } from '../helpers';\n\n/**\n * Highlight code lines\n */\nexport default function highlightCodeLines() {\n return (tree: Root) => {\n visit(tree, 'element', (node: Element, _i, parent: Root | Element | null) => {\n if (isCodeBlock(parent, node) && parent?.type === 'element') {\n const highlightedLines: number[] = JSON.parse(\n attrValue(parent, 'highlightedLines') ?? '[]',\n );\n\n highlightedLines.length &&\n node.children.filter(isElement).forEach((child: Element, i: number) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (child.properties.class === 'line' && highlightedLines.includes(i + 1)) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n child.properties.class = 'line highlighted';\n }\n });\n }\n });\n };\n}\n","import { asArray, NG_DOC_ELEMENT } from '@ng-doc/core';\nimport { Element, Root } from 'hast';\nimport { visit } from 'unist-util-visit';\n\n/**\n * Marks all elements with the NG_DOC_ELEMENT class name\n * @param tree\n * @param headings\n */\nexport default function markElementsPlugin(): any {\n return (tree: Root) => {\n visit(tree, 'element', (node: Element) => {\n if (node.properties) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n node.properties['className'] = [...asArray(node.properties.className), NG_DOC_ELEMENT];\n }\n });\n };\n}\n","import { Element, Root } from 'hast';\nimport { toString } from 'hast-util-to-string';\nimport { visit } from 'unist-util-visit';\n\n/**\n * Plugin to transform mermaid code blocks into mermaid elements that are going to be rendered by the mermaid processor.\n * @param tree\n * @param headings\n */\nexport default function mermaidPlugin(): any {\n return (tree: Root) => {\n visit(tree, 'element', (node: Element) => {\n if (node.tagName === 'pre') {\n const codeNode = node.children[0] as Element;\n\n if (codeNode.tagName === 'code' && codeNode.properties?.['lang'] === 'mermaid') {\n node.properties = { className: 'mermaid' };\n node.children = [\n {\n type: 'text',\n value: toString(codeNode),\n },\n ];\n }\n }\n });\n };\n}\n","import { NgDocHeading, NgDocPageAnchor, NgDocScopedKeyword } from '@ng-doc/core';\nimport GithubSlugger from 'github-slugger';\nimport { Element, Root } from 'hast';\nimport { hasProperty } from 'hast-util-has-property';\nimport { headingRank } from 'hast-util-heading-rank';\nimport { isElement } from 'hast-util-is-element';\nimport { toString } from 'hast-util-to-string';\nimport { visitParents } from 'unist-util-visit-parents';\n\nimport { attrValue } from '../helpers';\n\n/**\n *\n * @param tree\n * @param addAnchor\n * @param headings\n */\nexport default function sluggerPlugin(\n addAnchor?: (anchor: NgDocPageAnchor) => void,\n headings: NgDocHeading[] = ['h1', 'h2', 'h3', 'h4'],\n) {\n if (!addAnchor) {\n return () => {};\n }\n\n const slugger: GithubSlugger = new GithubSlugger();\n\n return (tree: Root) => {\n slugger.reset();\n\n visitParents(tree, 'element', (node: Element, ancestors) => {\n const scope = getKeywordScope(ancestors);\n\n const isHeading =\n !!headingRank(node) &&\n !hasProperty(node, 'id') &&\n !!headings?.includes(node.tagName.toLowerCase() as NgDocHeading);\n const attrSlug: string | undefined = attrValue(node, 'dataSlug');\n const attrSlugTitle: string | undefined = attrValue(node, 'dataSlugTitle');\n const attrSlugType: string | undefined = attrValue(node, 'dataSlugType');\n const dataToSlug: string | undefined = isHeading ? toString(node).trim() : attrSlug;\n\n if (dataToSlug) {\n if (node.properties) {\n const id: string =\n attrSlug && attrSlugType === 'member' ? attrSlug : slugger.slug(dataToSlug);\n\n node.properties['id'] = id;\n\n addAnchor({\n anchorId: id,\n anchor: new GithubSlugger().slug(dataToSlug),\n title: attrSlugTitle || dataToSlug,\n scope,\n type:\n (isHeading && attrSlugType !== 'member') || (attrSlug && attrSlugType === 'heading')\n ? 'heading'\n : 'member',\n });\n }\n }\n });\n };\n}\n\n/**\n *\n * @param ancestors\n */\nfunction getKeywordScope(ancestors: Array<Root | Element>): NgDocScopedKeyword | undefined {\n const keywordScope = ancestors.find(\n (ancestor) => isElement(ancestor) && ancestor.tagName === 'ng-doc-keyword-scope',\n ) as Element | undefined;\n const key = keywordScope?.properties?.['id'];\n\n return key\n ? {\n key: String(key),\n title: String(keywordScope?.properties?.['title']),\n }\n : undefined;\n}\n","import { Element, Root } from 'hast';\nimport { visit } from 'unist-util-visit';\n\n/**\n *\n */\nexport default function (): any {\n return (tree: Root) => {\n visit(tree, 'element', (node: Element, index, parent) => {\n const table: boolean = node?.tagName === 'table';\n\n if (table) {\n const wrapper = {\n type: 'element',\n tagName: 'div',\n properties: {\n className: 'ng-doc-table-wrapper',\n },\n children: [node],\n };\n\n // @ts-expect-error - parent is a hast node\n parent.children[index] = wrapper;\n }\n });\n };\n}\n","import { NgDocHeading, NgDocPageAnchor } from '@ng-doc/core';\nimport rehypeShiki from '@shikijs/rehype';\nimport rehypeMinifyWhitespace from 'rehype-minify-whitespace';\nimport rehypeParse from 'rehype-parse';\nimport rehypeStringify from 'rehype-stringify';\nimport { unified } from 'unified';\n\nimport autolinkHeadingPlugin from './plugins/add-heading-anchors.plugin';\nimport highlightCodeLines from './plugins/highlight-code-lines';\nimport markElementsPlugin from './plugins/mark-elements.plugin';\nimport mermaidPlugin from './plugins/mermaid.plugin';\nimport sluggerPlugin from './plugins/slugger.plugin';\nimport wrapTablePlugin from './plugins/table-wrapper';\n\nexport interface NgDocHtmlProcessorConfig {\n lightTheme?: string;\n darkTheme?: string;\n headings?: NgDocHeading[];\n route?: string;\n}\n\nexport interface NgDocHtmlProcessorOutput {\n content: string;\n anchors: NgDocPageAnchor[];\n error?: unknown;\n}\n\n/**\n *\n * @param html\n * @param config\n */\nexport async function processHtml(\n html: string,\n config: NgDocHtmlProcessorConfig,\n): Promise<NgDocHtmlProcessorOutput> {\n const anchors = new Set<NgDocPageAnchor>();\n\n try {\n const content = await unified()\n .use(rehypeParse, { fragment: true })\n .use(rehypeStringify)\n .use(mermaidPlugin)\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n .use(rehypeShiki, {\n defaultLanguage: 'ts',\n fallbackLanguage: 'text',\n addLanguageClass: true,\n parseMetaString: (meta: string) => JSON.parse(meta?.replace(/\\\\/g, '') || '{}'),\n themes: {\n light: config.lightTheme ?? 'github-light',\n dark: config.darkTheme ?? 'ayu-dark',\n },\n })\n .use(highlightCodeLines)\n .use(wrapTablePlugin)\n .use(sluggerPlugin, anchors.add.bind(anchors), config.headings)\n .use(rehypeMinifyWhitespace)\n .use(autolinkHeadingPlugin, config.route)\n .use(markElementsPlugin)\n .process(html)\n .then((file) => file.toString());\n\n return { content, anchors: Array.from(anchors) };\n } catch (error) {\n return { content: html, anchors: [], error };\n }\n}\n","import { Element, Root } from 'hast';\nimport { filter } from 'unist-util-filter';\n\nimport { isCodeNode } from '../helpers';\n\n/**\n *\n * @param tree\n * @param headings\n */\nexport default function removeNotIndexableContentPlugin(): any {\n return (tree: Root) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return filter(tree, { cascade: true }, (node: Element) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const preWithCode: boolean = node?.tagName === 'pre' && node?.children?.some(isCodeNode);\n const notIndexable: boolean = node?.properties?.['indexable'] === 'false';\n\n return !node?.tagName || (!preWithCode && !notIndexable);\n });\n };\n}\n","import { rehype } from 'rehype';\n\nimport removeNotIndexableContentPlugin from './plugins/remove-not-indexable-content.plugin';\n\n/**\n *\n * @param html\n */\nexport async function removeNotIndexableContent(html: string): Promise<string> {\n return rehype()\n .use(removeNotIndexableContentPlugin)\n .process(html)\n .then((file) => file.toString());\n}\n","import rehypeParse from 'rehype-parse';\nimport rehypeStringify from 'rehype-stringify';\nimport { unified } from 'unified';\n\nimport keywordsPlugin, { GetKeyword } from './plugins/keywords.plugin';\n\nexport interface ReplaceKeywordsConfig {\n getKeyword: GetKeyword;\n}\n\n/**\n *\n * @param html\n * @param config\n * @param config.getKeyword\n * @param getKeyword\n */\nexport async function replaceKeywords(\n html: string,\n { getKeyword }: ReplaceKeywordsConfig,\n): Promise<string> {\n return unified()\n .use(rehypeParse, { fragment: true })\n .use(rehypeStringify)\n .use(keywordsPlugin, { getKeyword })\n .process(html)\n .then((file) => file.toString());\n}\n","import { stringifyEntities as stringify } from 'stringify-entities';\n\n/**\n *\n * @param content\n */\nexport function stringifyEntities(content: string): string {\n return stringify(content);\n}\n"],"names":["minify","html","unified","use","rehypeParse","fragment","rehypeStringify","rehypeMinifyWhitespace","processSync","toString","attrValue","node","attr","attrKey","toLowerCase","properties","String","undefined","hasClass","cls","className","includes","hasLinkAncestor","ancestors","some","ancestor","isElement","isCodeBlock","parent","type","tagName","isCodeNode","HEADINGS","isHeading","ALWAYS_ALLOWED_LANGUAGES","LANGUAGES","KEYWORD_ALLOWED_LANGUAGES","SPLIT_REGEXP","MATCH_KEYWORD_REGEXP","keywordsPlugin","config","tree","visitParents","isInlineCode","length","lang","asArray","find","startsWith","replace","index","children","indexOf","nodes","getNodes","Array","prototype","splice","apply","concat","SKIP","language","addUsedKeyword","getKeyword","split","map","word","match","value","key","delimiter","anchor","queryParams","groups","usedKeyword","rootKeyword","keyword","isGuideKeyword","isLanguageAllowed","languages","notFoundGuideKeyword","notFoundApiAnchorKeyword","Error","href","path","NG_DOC_ELEMENT","title","createLinkNode","description","text","class","ngDocTooltip","postProcessHtml","usedKeywords","Set","content","add","bind","process","then","file","from","error","NO_ANCHOR_CLASS","addHeadingAnchors","route","visit","push","headingLink","highlightCodeLines","_i","highlightedLines","JSON","parse","filter","forEach","child","i","markElementsPlugin","mermaidPlugin","codeNode","sluggerPlugin","addAnchor","headings","slugger","GithubSlugger","reset","scope","getKeywordScope","headingRank","hasProperty","attrSlug","attrSlugTitle","attrSlugType","dataToSlug","trim","id","slug","anchorId","keywordScope","table","wrapper","processHtml","anchors","rehypeShiki","defaultLanguage","fallbackLanguage","addLanguageClass","parseMetaString","meta","themes","light","lightTheme","dark","darkTheme","wrapTablePlugin","autolinkHeadingPlugin","removeNotIndexableContentPlugin","cascade","preWithCode","notIndexable","removeNotIndexableContent","rehype","replaceKeywords","stringifyEntities","stringify"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../../../libs/utils/html/minify.ts","../../../../libs/utils/html/helpers/attr-value.ts","../../../../libs/utils/html/helpers/has-class.ts","../../../../libs/utils/html/helpers/has-link-ancestor.ts","../../../../libs/utils/html/helpers/is-code-block.ts","../../../../libs/utils/html/helpers/is-code-node.ts","../../../../libs/utils/html/helpers/is-element.ts","../../../../libs/utils/html/helpers/is-heading.ts","../../../../libs/utils/html/plugins/keywords.plugin.ts","../../../../libs/utils/html/post-process-html.ts","../../../../libs/utils/html/plugins/add-heading-anchors.plugin.ts","../../../../libs/utils/html/plugins/highlight-code-lines.ts","../../../../libs/utils/html/plugins/mark-elements.plugin.ts","../../../../libs/utils/html/plugins/mermaid.plugin.ts","../../../../libs/utils/html/plugins/slugger.plugin.ts","../../../../libs/utils/html/plugins/table-wrapper.ts","../../../../libs/utils/html/process-html.ts","../../../../libs/utils/html/plugins/remove-not-indexable-content.plugin.ts","../../../../libs/utils/html/remove-not-indexable-content.ts","../../../../libs/utils/html/replace-keywords.ts","../../../../libs/utils/html/stringify-entities.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["isElement","autolinkHeadingPlugin","stringify"],"mappings":"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"}
|