@principal-ade/industry-themed-mdx-editor 0.1.3 → 0.1.5
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/dist/index.mjs +225 -8
- package/dist/src/plugins/mdx-auto-fix/preprocessor.d.ts.map +1 -1
- package/dist/src/plugins/mdx-auto-fix/transformers/code-block-language.d.ts +3 -0
- package/dist/src/plugins/mdx-auto-fix/transformers/code-block-language.d.ts.map +1 -0
- package/dist/src/plugins/mdx-auto-fix/transformers/index.d.ts +1 -0
- package/dist/src/plugins/mdx-auto-fix/transformers/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -6,6 +6,73 @@ import "@mdxeditor/editor/style.css";
|
|
|
6
6
|
|
|
7
7
|
// src/plugins/mdx-auto-fix/preprocessor.ts
|
|
8
8
|
var defaultPreprocessRules = [
|
|
9
|
+
{
|
|
10
|
+
name: "normalize-code-block-language",
|
|
11
|
+
description: "Normalize unknown or missing code block language identifiers",
|
|
12
|
+
pattern: /^```([^\n`]*?)\n/gim,
|
|
13
|
+
replacement: (_match, lang) => {
|
|
14
|
+
const trimmedLang = lang.trim();
|
|
15
|
+
const knownLanguages = [
|
|
16
|
+
"javascript",
|
|
17
|
+
"js",
|
|
18
|
+
"typescript",
|
|
19
|
+
"ts",
|
|
20
|
+
"jsx",
|
|
21
|
+
"tsx",
|
|
22
|
+
"python",
|
|
23
|
+
"py",
|
|
24
|
+
"java",
|
|
25
|
+
"c",
|
|
26
|
+
"cpp",
|
|
27
|
+
"csharp",
|
|
28
|
+
"cs",
|
|
29
|
+
"html",
|
|
30
|
+
"css",
|
|
31
|
+
"scss",
|
|
32
|
+
"sass",
|
|
33
|
+
"less",
|
|
34
|
+
"json",
|
|
35
|
+
"yaml",
|
|
36
|
+
"yml",
|
|
37
|
+
"xml",
|
|
38
|
+
"toml",
|
|
39
|
+
"bash",
|
|
40
|
+
"sh",
|
|
41
|
+
"shell",
|
|
42
|
+
"powershell",
|
|
43
|
+
"sql",
|
|
44
|
+
"graphql",
|
|
45
|
+
"markdown",
|
|
46
|
+
"md",
|
|
47
|
+
"rust",
|
|
48
|
+
"go",
|
|
49
|
+
"ruby",
|
|
50
|
+
"php",
|
|
51
|
+
"swift",
|
|
52
|
+
"kotlin",
|
|
53
|
+
"dart",
|
|
54
|
+
"r",
|
|
55
|
+
"matlab",
|
|
56
|
+
"diff",
|
|
57
|
+
"text",
|
|
58
|
+
"plaintext"
|
|
59
|
+
];
|
|
60
|
+
if (knownLanguages.includes(trimmedLang.toLowerCase())) {
|
|
61
|
+
return _match;
|
|
62
|
+
}
|
|
63
|
+
if (!trimmedLang || trimmedLang === "") {
|
|
64
|
+
return "```text\n";
|
|
65
|
+
}
|
|
66
|
+
const langLower = trimmedLang.toLowerCase();
|
|
67
|
+
if (langLower === "n/a") {
|
|
68
|
+
return "```text\n";
|
|
69
|
+
}
|
|
70
|
+
if (langLower === "argdown") {
|
|
71
|
+
return "```markdown\n";
|
|
72
|
+
}
|
|
73
|
+
return _match;
|
|
74
|
+
}
|
|
75
|
+
},
|
|
9
76
|
{
|
|
10
77
|
name: "less-than-digit",
|
|
11
78
|
description: "Escape < followed by digit",
|
|
@@ -86,17 +153,59 @@ function preprocessMDX(markdown, options = {}) {
|
|
|
86
153
|
totalFixes: 0,
|
|
87
154
|
byTransformer: {}
|
|
88
155
|
};
|
|
156
|
+
let result = markdown;
|
|
157
|
+
const codeBlockLangRule = activeRules.find((r) => r.name === "normalize-code-block-language");
|
|
158
|
+
if (codeBlockLangRule) {
|
|
159
|
+
let fixCount = 0;
|
|
160
|
+
let insideCodeBlock = false;
|
|
161
|
+
if (typeof codeBlockLangRule.replacement === "function") {
|
|
162
|
+
result = result.replace(codeBlockLangRule.pattern, (...args) => {
|
|
163
|
+
if (insideCodeBlock) {
|
|
164
|
+
insideCodeBlock = false;
|
|
165
|
+
return args[0];
|
|
166
|
+
}
|
|
167
|
+
insideCodeBlock = true;
|
|
168
|
+
const originalMatch = args[0];
|
|
169
|
+
const replacement = codeBlockLangRule.replacement(...args);
|
|
170
|
+
if (replacement !== originalMatch) {
|
|
171
|
+
fixCount++;
|
|
172
|
+
}
|
|
173
|
+
return replacement;
|
|
174
|
+
});
|
|
175
|
+
} else {
|
|
176
|
+
result = result.replace(codeBlockLangRule.pattern, (match) => {
|
|
177
|
+
if (insideCodeBlock) {
|
|
178
|
+
insideCodeBlock = false;
|
|
179
|
+
return match;
|
|
180
|
+
}
|
|
181
|
+
insideCodeBlock = true;
|
|
182
|
+
const replacement = codeBlockLangRule.replacement;
|
|
183
|
+
if (replacement !== match) {
|
|
184
|
+
fixCount++;
|
|
185
|
+
}
|
|
186
|
+
return replacement;
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
if (fixCount > 0) {
|
|
190
|
+
stats.byTransformer[codeBlockLangRule.name] = fixCount;
|
|
191
|
+
stats.totalFixes += fixCount;
|
|
192
|
+
if (debug) {
|
|
193
|
+
console.log(`[mdx-auto-fix] ${codeBlockLangRule.name}: ${fixCount} fixes`);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
const otherRules = activeRules.filter((r) => r.name !== "normalize-code-block-language");
|
|
89
198
|
const transform = (text) => {
|
|
90
|
-
let
|
|
91
|
-
for (const rule of
|
|
199
|
+
let transformed = text;
|
|
200
|
+
for (const rule of otherRules) {
|
|
92
201
|
let fixCount = 0;
|
|
93
202
|
if (typeof rule.replacement === "function") {
|
|
94
|
-
|
|
203
|
+
transformed = transformed.replace(rule.pattern, (...args) => {
|
|
95
204
|
fixCount++;
|
|
96
205
|
return rule.replacement(...args);
|
|
97
206
|
});
|
|
98
207
|
} else {
|
|
99
|
-
|
|
208
|
+
transformed = transformed.replace(rule.pattern, () => {
|
|
100
209
|
fixCount++;
|
|
101
210
|
return rule.replacement;
|
|
102
211
|
});
|
|
@@ -109,9 +218,9 @@ function preprocessMDX(markdown, options = {}) {
|
|
|
109
218
|
}
|
|
110
219
|
}
|
|
111
220
|
}
|
|
112
|
-
return
|
|
221
|
+
return transformed;
|
|
113
222
|
};
|
|
114
|
-
|
|
223
|
+
result = preserveCodeBlocks ? preserveCode(result, transform) : transform(result);
|
|
115
224
|
if (onStats && stats.totalFixes > 0) {
|
|
116
225
|
onStats(stats);
|
|
117
226
|
}
|
|
@@ -288,16 +397,124 @@ var invalidTagNamesTransformer = {
|
|
|
288
397
|
]
|
|
289
398
|
};
|
|
290
399
|
|
|
400
|
+
// src/plugins/mdx-auto-fix/transformers/code-block-language.ts
|
|
401
|
+
import { visit as visit4 } from "unist-util-visit";
|
|
402
|
+
var LANGUAGE_MAP = {
|
|
403
|
+
"N/A": "text",
|
|
404
|
+
"n/a": "text",
|
|
405
|
+
"argdown": "markdown"
|
|
406
|
+
// Map argdown to markdown for better syntax highlighting
|
|
407
|
+
// Add more mappings as needed
|
|
408
|
+
};
|
|
409
|
+
var KNOWN_LANGUAGES = /* @__PURE__ */ new Set([
|
|
410
|
+
"javascript",
|
|
411
|
+
"js",
|
|
412
|
+
"typescript",
|
|
413
|
+
"ts",
|
|
414
|
+
"jsx",
|
|
415
|
+
"tsx",
|
|
416
|
+
"python",
|
|
417
|
+
"py",
|
|
418
|
+
"java",
|
|
419
|
+
"c",
|
|
420
|
+
"cpp",
|
|
421
|
+
"csharp",
|
|
422
|
+
"cs",
|
|
423
|
+
"html",
|
|
424
|
+
"css",
|
|
425
|
+
"scss",
|
|
426
|
+
"sass",
|
|
427
|
+
"less",
|
|
428
|
+
"json",
|
|
429
|
+
"yaml",
|
|
430
|
+
"yml",
|
|
431
|
+
"xml",
|
|
432
|
+
"toml",
|
|
433
|
+
"bash",
|
|
434
|
+
"sh",
|
|
435
|
+
"shell",
|
|
436
|
+
"powershell",
|
|
437
|
+
"sql",
|
|
438
|
+
"graphql",
|
|
439
|
+
"markdown",
|
|
440
|
+
"md",
|
|
441
|
+
"rust",
|
|
442
|
+
"go",
|
|
443
|
+
"ruby",
|
|
444
|
+
"php",
|
|
445
|
+
"swift",
|
|
446
|
+
"kotlin",
|
|
447
|
+
"dart",
|
|
448
|
+
"r",
|
|
449
|
+
"matlab",
|
|
450
|
+
"diff",
|
|
451
|
+
"text",
|
|
452
|
+
"plaintext"
|
|
453
|
+
]);
|
|
454
|
+
var codeBlockLanguageTransformer = {
|
|
455
|
+
name: "code-block-language",
|
|
456
|
+
description: "Normalizes unrecognized code block language identifiers to safe alternatives",
|
|
457
|
+
defaultEnabled: true,
|
|
458
|
+
transform: (context) => {
|
|
459
|
+
let fixCount = 0;
|
|
460
|
+
visit4(context.tree, "code", (node) => {
|
|
461
|
+
const lang = node.lang?.toLowerCase().trim();
|
|
462
|
+
if (!lang) {
|
|
463
|
+
node.lang = "text";
|
|
464
|
+
fixCount++;
|
|
465
|
+
return;
|
|
466
|
+
}
|
|
467
|
+
if (LANGUAGE_MAP[lang]) {
|
|
468
|
+
node.lang = LANGUAGE_MAP[lang];
|
|
469
|
+
fixCount++;
|
|
470
|
+
return;
|
|
471
|
+
}
|
|
472
|
+
if (!KNOWN_LANGUAGES.has(lang)) {
|
|
473
|
+
}
|
|
474
|
+
});
|
|
475
|
+
context.stats.byTransformer[codeBlockLanguageTransformer.name] = fixCount;
|
|
476
|
+
context.stats.totalFixes += fixCount;
|
|
477
|
+
},
|
|
478
|
+
testCases: [
|
|
479
|
+
{
|
|
480
|
+
description: "Code block with N/A language",
|
|
481
|
+
input: "```N/A\ncode here\n```",
|
|
482
|
+
expected: "```text\ncode here\n```",
|
|
483
|
+
shouldFix: "Should convert N/A to text"
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
description: "Code block with argdown language",
|
|
487
|
+
input: "```argdown\n[Claim]: Statement\n```",
|
|
488
|
+
expected: "```markdown\n[Claim]: Statement\n```",
|
|
489
|
+
shouldFix: "Should convert argdown to markdown"
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
description: "Code block without language",
|
|
493
|
+
input: "```\ncode here\n```",
|
|
494
|
+
expected: "```text\ncode here\n```",
|
|
495
|
+
shouldFix: "Should add text language to blocks without one"
|
|
496
|
+
},
|
|
497
|
+
{
|
|
498
|
+
description: "Should preserve known languages",
|
|
499
|
+
input: "```javascript\nconst x = 1;\n```",
|
|
500
|
+
expected: "```javascript\nconst x = 1;\n```",
|
|
501
|
+
shouldFix: "Should not modify known languages"
|
|
502
|
+
}
|
|
503
|
+
]
|
|
504
|
+
};
|
|
505
|
+
|
|
291
506
|
// src/plugins/mdx-auto-fix/transformers/index.ts
|
|
292
507
|
var defaultTransformers = [
|
|
293
508
|
lessThanDigitTransformer,
|
|
294
509
|
greaterThanDigitTransformer,
|
|
295
|
-
invalidTagNamesTransformer
|
|
510
|
+
invalidTagNamesTransformer,
|
|
511
|
+
codeBlockLanguageTransformer
|
|
296
512
|
];
|
|
297
513
|
var allTransformers = [
|
|
298
514
|
lessThanDigitTransformer,
|
|
299
515
|
greaterThanDigitTransformer,
|
|
300
|
-
invalidTagNamesTransformer
|
|
516
|
+
invalidTagNamesTransformer,
|
|
517
|
+
codeBlockLanguageTransformer
|
|
301
518
|
];
|
|
302
519
|
|
|
303
520
|
// src/plugins/mdx-auto-fix/plugin.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preprocessor.d.ts","sourceRoot":"","sources":["../../../../src/plugins/mdx-auto-fix/preprocessor.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAKhD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,CAAC;CACnE;AAKD,eAAO,MAAM,sBAAsB,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"preprocessor.d.ts","sourceRoot":"","sources":["../../../../src/plugins/mdx-auto-fix/preprocessor.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAKhD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,CAAC;CACnE;AAKD,eAAO,MAAM,sBAAsB,EAAE,cAAc,EA2ElD,CAAC;AAgDF,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5C,KAAK,CAAC,EAAE,OAAO,CAAC;CACZ,GACL,MAAM,CAwIR"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-block-language.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/mdx-auto-fix/transformers/code-block-language.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAsB,MAAM,UAAU,CAAC;AA8BhE,eAAO,MAAM,4BAA4B,EAAE,WA+D1C,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { lessThanDigitTransformer } from './less-than-digit';
|
|
2
2
|
export { greaterThanDigitTransformer } from './greater-than-digit';
|
|
3
3
|
export { invalidTagNamesTransformer } from './invalid-tag-names';
|
|
4
|
+
export { codeBlockLanguageTransformer } from './code-block-language';
|
|
4
5
|
import type { Transformer } from '../types';
|
|
5
6
|
export declare const defaultTransformers: Transformer[];
|
|
6
7
|
export declare const allTransformers: Transformer[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/mdx-auto-fix/transformers/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/mdx-auto-fix/transformers/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAMrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAK5C,eAAO,MAAM,mBAAmB,EAAE,WAAW,EAK5C,CAAC;AAKF,eAAO,MAAM,eAAe,EAAE,WAAW,EAKxC,CAAC"}
|