@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 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 result2 = text;
91
- for (const rule of activeRules) {
199
+ let transformed = text;
200
+ for (const rule of otherRules) {
92
201
  let fixCount = 0;
93
202
  if (typeof rule.replacement === "function") {
94
- result2 = result2.replace(rule.pattern, (...args) => {
203
+ transformed = transformed.replace(rule.pattern, (...args) => {
95
204
  fixCount++;
96
205
  return rule.replacement(...args);
97
206
  });
98
207
  } else {
99
- result2 = result2.replace(rule.pattern, () => {
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 result2;
221
+ return transformed;
113
222
  };
114
- const result = preserveCodeBlocks ? preserveCode(markdown, transform) : transform(markdown);
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,EA+BlD,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,CA0ER"}
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,3 @@
1
+ import type { Transformer } from '../types';
2
+ export declare const codeBlockLanguageTransformer: Transformer;
3
+ //# sourceMappingURL=code-block-language.d.ts.map
@@ -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;AAKjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAK5C,eAAO,MAAM,mBAAmB,EAAE,WAAW,EAI5C,CAAC;AAKF,eAAO,MAAM,eAAe,EAAE,WAAW,EAIxC,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@principal-ade/industry-themed-mdx-editor",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Industry-themed MDX editor wrapper with integrated theming",
5
5
  "type": "module",
6
6
  "main": "dist/index.mjs",