@dr-ishaan/rehype-perfect-code-blocks 1.2.0 → 1.2.1

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/CHANGELOG.md CHANGED
@@ -5,6 +5,30 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.2.1] — 2026-06-19
9
+
10
+ ### Summary
11
+
12
+ Patch release fixing a case-sensitive language loader bug that caused fenced code blocks with non-lowercase language identifiers (e.g. ```` ```JS ````, ```` ```TypeScript ````, ```` ```Python ````) to throw `Language 'XXX' is not included in this bundle` and abort the entire pipeline. No API changes; no backward-compatibility concerns. All 972 pre-existing tests continue to pass, plus 28 new regression tests.
13
+
14
+ ### Bug fixes
15
+
16
+ - **Case-insensitive language resolution** ([#12](https://github.com/dr-ishaan/rehype-perfect-code-blocks/issues/12), [PR #14](https://github.com/dr-ishaan/rehype-perfect-code-blocks/pull/14)) — Language identifiers are now normalized to lowercase before any Shiki call. Previously, the lazy-loader path called `highlighter.loadLanguage(lang)` with the raw case-preserving identifier from the fence, while Shiki's bundled grammars all use lowercase IDs (`javascript`, `typescript`, `python`, …). Shiki's own `codeToHast` / `codeToHtml` are case-insensitive, but the plugin's loader call site was not. This is valid CommonMark and works in every other major markdown renderer (GitHub, VS Code, GitLab, Docusaurus, VitePress, `rehype-pretty-code`). The fix normalizes the identifier to lowercase at three places in `src/shiki.ts`:
17
+
18
+ 1. When collecting langs for the initial highlighter load.
19
+ 2. When resolving the per-block lang for `codeToHast` / `codeToHtml`.
20
+ 3. When looking up user-defined `languageAliases` (config is now case-insensitive too — `{ TS: 'typescript' }` works the same as `{ ts: 'typescript' }`).
21
+
22
+ The output's `data-language` attribute now uses the lowercase normalized form (e.g. `data-language="javascript"` instead of `data-language="JavaScript"`). The original-case `language-*` CSS class is still added to the output `<code>` element (when different from the lowercase form) so existing user CSS targeting like `.language-JavaScript` continues to work.
23
+
24
+ Discovered by a 10,400-case fuzz suite against the package; 30 test cases in that suite hit this bug.
25
+
26
+ ### Verification
27
+
28
+ - All 972 pre-existing tests pass (no regressions).
29
+ - New `test-issue-12.mjs` adds 28 regression tests covering: exact reproduction cases, real syntax highlighting (not plaintext fallback), case-variants producing identical output to lowercase baseline, `languageAliases` working with case-insensitive lookup, `data-language` attribute normalization, and multi-block documents with mixed case.
30
+ - Total: 1000/1000 tests passing.
31
+
8
32
  ## [1.2.0] — 2026-06-18
9
33
 
10
34
  ### Summary
package/LICENSE CHANGED
File without changes
package/README.md CHANGED
File without changes
package/dist/astro.d.ts CHANGED
File without changes
File without changes
package/dist/astro.js CHANGED
File without changes
package/dist/astro.js.map CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
package/dist/index.d.ts CHANGED
File without changes
File without changes
package/dist/index.js CHANGED
File without changes
package/dist/index.js.map CHANGED
File without changes
package/dist/meta.d.ts CHANGED
File without changes
File without changes
package/dist/meta.js CHANGED
File without changes
package/dist/meta.js.map CHANGED
File without changes
package/dist/remark.d.ts CHANGED
File without changes
File without changes
package/dist/remark.js CHANGED
File without changes
File without changes
package/dist/shiki.d.ts CHANGED
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"shiki.d.ts","sourceRoot":"","sources":["../src/shiki.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,MAAM,CAAC;AAG1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAwUrD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC,CA4Pf"}
1
+ {"version":3,"file":"shiki.d.ts","sourceRoot":"","sources":["../src/shiki.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,MAAM,CAAC;AAG1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAwUrD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC,CAoSf"}
package/dist/shiki.js CHANGED
@@ -314,7 +314,13 @@ export async function runShikiOnRawBlocks(tree, opts) {
314
314
  themeKeys = ['github-dark'];
315
315
  }
316
316
  // Collect all langs needed for these blocks
317
- const langSet = new Set(opts.shiki.langs ?? []);
317
+ // NOTE: language identifiers are normalized to lowercase here so that
318
+ // case-insensitive fence spellings (```JS, ```TypeScript, ```Python)
319
+ // resolve to the same Shiki grammar as their canonical lowercase forms
320
+ // (javascript, typescript, python). This matches Shiki's own case-
321
+ // insensitive behavior in codeToHast/codeToHtml, and matches what every
322
+ // other CommonMark renderer accepts. See issue #12.
323
+ const langSet = new Set((opts.shiki.langs ?? []).map((l) => l.toLowerCase()));
318
324
  for (const pre of targets) {
319
325
  const code = pre.children.find((c) => c.type === 'element' && c.tagName === 'code');
320
326
  if (!code)
@@ -323,7 +329,7 @@ export async function runShikiOnRawBlocks(tree, opts) {
323
329
  for (const c of cls) {
324
330
  const m = c.match(/^language-(.+)$/);
325
331
  if (m)
326
- langSet.add(m[1]);
332
+ langSet.add(m[1].toLowerCase());
327
333
  }
328
334
  }
329
335
  langSet.add('plaintext');
@@ -357,7 +363,15 @@ export async function runShikiOnRawBlocks(tree, opts) {
357
363
  }
358
364
  }
359
365
  // Apply language aliases (e.g., { ts: 'typescript' }).
360
- const langAlias = opts.languageAliases ?? {};
366
+ // Build a lowercase-keyed lookup so user config like { TS: 'typescript' }
367
+ // or { ts: 'typescript' } both work regardless of the case used in the
368
+ // fence or in the config. The alias target is preserved as-is (typically
369
+ // already lowercase). See issue #12.
370
+ const rawLangAlias = opts.languageAliases ?? {};
371
+ const langAlias = {};
372
+ for (const [k, v] of Object.entries(rawLangAlias)) {
373
+ langAlias[k.toLowerCase()] = v;
374
+ }
361
375
  // Resolve the logger once.
362
376
  const logger = opts.logger ?? console;
363
377
  // Track which langs we've already warned about (avoid duplicate warnings).
@@ -374,7 +388,18 @@ export async function runShikiOnRawBlocks(tree, opts) {
374
388
  }
375
389
  const langClass = code.properties?.className?.[0] ?? '';
376
390
  const rawLang = (langClass.match(/^language-(.+)$/) ?? [])[1] ?? 'plaintext';
377
- const lang = langAlias[rawLang] ?? rawLang;
391
+ // Normalize to lowercase before any Shiki call. Shiki's bundled grammars
392
+ // all use lowercase IDs (javascript, typescript, ...), and its codeToHast
393
+ // is case-insensitive — but the lazy-loader path (loadLanguage) is not,
394
+ // which previously caused `JS`/`TypeScript`/`Python` to throw "Language
395
+ // is not included in this bundle". Lowercasing here fixes that and
396
+ // matches what every other CommonMark renderer does.
397
+ // See issue #12.
398
+ const normalizedRawLang = rawLang.toLowerCase();
399
+ // Apply user-defined languageAliases (e.g. { ts: 'typescript' }). Looked
400
+ // up by lowercase key so users can write either `ts` or `TS` in their
401
+ // config. The alias target is used as-is (typically already lowercase).
402
+ const lang = langAlias[normalizedRawLang] ?? normalizedRawLang;
378
403
  const metaStr = code.properties?.dataMeta ??
379
404
  pre.properties?.dataMeta ??
380
405
  '';
@@ -492,12 +517,26 @@ export async function runShikiOnRawBlocks(tree, opts) {
492
517
  newCode.properties.dataMeta = metaStr;
493
518
  }
494
519
  // Re-attach language-X class so the transformer can detect the language.
520
+ // Use the lowercase normalized form so downstream matching (which is
521
+ // case-sensitive in our transformer.ts:extractLanguageFromClass) is
522
+ // consistent with the lowercase lang we passed to Shiki. The original
523
+ // mixed-case class is also added (if different) so user CSS targeting
524
+ // like `.language-JS` continues to work. See issue #12.
495
525
  const existingClasses = newCode.properties.className ?? [];
496
- const langClass2 = `language-${rawLang}`;
497
- if (!existingClasses.includes(langClass2)) {
498
- newCode.properties.className = [...existingClasses, langClass2];
526
+ const langClassLower = `language-${normalizedRawLang}`;
527
+ const langClassOriginal = `language-${rawLang}`;
528
+ const additions = [];
529
+ if (!existingClasses.includes(langClassLower))
530
+ additions.push(langClassLower);
531
+ if (rawLang !== normalizedRawLang && !existingClasses.includes(langClassOriginal) && !additions.includes(langClassOriginal)) {
532
+ additions.push(langClassOriginal);
533
+ }
534
+ if (additions.length > 0) {
535
+ newCode.properties.className = [...existingClasses, ...additions];
499
536
  }
500
- newCode.properties.dataLanguage = rawLang;
537
+ // dataLanguage uses the lowercase form for consistency with the
538
+ // language-* class and the Shiki lang we actually used.
539
+ newCode.properties.dataLanguage = normalizedRawLang;
501
540
  }
502
541
  Object.assign(pre, newPre);
503
542
  }
package/dist/shiki.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"shiki.js","sourceRoot":"","sources":["../src/shiki.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shiki.js","sourceRoot":"","sources":["../src/shiki.ts"],"names":[],"mappings":"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"}
package/dist/styles.css CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
package/dist/types.d.ts CHANGED
File without changes
File without changes
package/dist/types.js CHANGED
File without changes
package/dist/types.js.map CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dr-ishaan/rehype-perfect-code-blocks",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "Beautiful, configurable code blocks for Astro / MDX / any rehype pipeline. Built on Shiki, inspired by rehype-pretty-code, VitePress, Docusaurus, and Expressive Code.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -51,7 +51,7 @@
51
51
  "scripts": {
52
52
  "build": "tsc -p tsconfig.json && cp src/styles.css dist/styles.css",
53
53
  "dev": "tsc -p tsconfig.json --watch",
54
- "test": "node test-meta-parser.mjs && node test-dom-structure.mjs && node test-options.mjs && node test-notations.mjs && node test-security.mjs && node test-integration.mjs && node test-regression.mjs && node test-css.mjs && node test-edge-cases.mjs && node stress-tests.mjs && node new-feature-tests.mjs",
54
+ "test": "node test-meta-parser.mjs && node test-dom-structure.mjs && node test-options.mjs && node test-notations.mjs && node test-security.mjs && node test-integration.mjs && node test-regression.mjs && node test-css.mjs && node test-edge-cases.mjs && node stress-tests.mjs && node new-feature-tests.mjs && node test-issue-12.mjs",
55
55
  "prepublishOnly": "npm run build && npm test",
56
56
  "prepack": "npm run build"
57
57
  },
package/src/astro.ts CHANGED
File without changes
File without changes
package/src/index.ts CHANGED
File without changes
package/src/meta.ts CHANGED
File without changes
package/src/remark.ts CHANGED
File without changes
package/src/shiki.ts CHANGED
@@ -385,7 +385,15 @@ export async function runShikiOnRawBlocks(
385
385
  }
386
386
 
387
387
  // Collect all langs needed for these blocks
388
- const langSet = new Set<string>(opts.shiki.langs ?? []);
388
+ // NOTE: language identifiers are normalized to lowercase here so that
389
+ // case-insensitive fence spellings (```JS, ```TypeScript, ```Python)
390
+ // resolve to the same Shiki grammar as their canonical lowercase forms
391
+ // (javascript, typescript, python). This matches Shiki's own case-
392
+ // insensitive behavior in codeToHast/codeToHtml, and matches what every
393
+ // other CommonMark renderer accepts. See issue #12.
394
+ const langSet = new Set<string>(
395
+ (opts.shiki.langs ?? []).map((l) => l.toLowerCase())
396
+ );
389
397
  for (const pre of targets) {
390
398
  const code = pre.children.find(
391
399
  (c): c is Element => c.type === 'element' && c.tagName === 'code'
@@ -394,7 +402,7 @@ export async function runShikiOnRawBlocks(
394
402
  const cls = (code.properties?.className as string[] | undefined) ?? [];
395
403
  for (const c of cls) {
396
404
  const m = c.match(/^language-(.+)$/);
397
- if (m) langSet.add(m[1]);
405
+ if (m) langSet.add(m[1].toLowerCase());
398
406
  }
399
407
  }
400
408
  langSet.add('plaintext');
@@ -441,7 +449,15 @@ export async function runShikiOnRawBlocks(
441
449
  }
442
450
 
443
451
  // Apply language aliases (e.g., { ts: 'typescript' }).
444
- const langAlias = opts.languageAliases ?? {};
452
+ // Build a lowercase-keyed lookup so user config like { TS: 'typescript' }
453
+ // or { ts: 'typescript' } both work regardless of the case used in the
454
+ // fence or in the config. The alias target is preserved as-is (typically
455
+ // already lowercase). See issue #12.
456
+ const rawLangAlias = opts.languageAliases ?? {};
457
+ const langAlias: Record<string, string> = {};
458
+ for (const [k, v] of Object.entries(rawLangAlias)) {
459
+ langAlias[k.toLowerCase()] = v;
460
+ }
445
461
  // Resolve the logger once.
446
462
  const logger = opts.logger ?? console;
447
463
  // Track which langs we've already warned about (avoid duplicate warnings).
@@ -463,7 +479,18 @@ export async function runShikiOnRawBlocks(
463
479
 
464
480
  const langClass = (code.properties?.className as string[] | undefined)?.[0] ?? '';
465
481
  const rawLang = (langClass.match(/^language-(.+)$/) ?? [])[1] ?? 'plaintext';
466
- const lang = langAlias[rawLang] ?? rawLang;
482
+ // Normalize to lowercase before any Shiki call. Shiki's bundled grammars
483
+ // all use lowercase IDs (javascript, typescript, ...), and its codeToHast
484
+ // is case-insensitive — but the lazy-loader path (loadLanguage) is not,
485
+ // which previously caused `JS`/`TypeScript`/`Python` to throw "Language
486
+ // is not included in this bundle". Lowercasing here fixes that and
487
+ // matches what every other CommonMark renderer does.
488
+ // See issue #12.
489
+ const normalizedRawLang = rawLang.toLowerCase();
490
+ // Apply user-defined languageAliases (e.g. { ts: 'typescript' }). Looked
491
+ // up by lowercase key so users can write either `ts` or `TS` in their
492
+ // config. The alias target is used as-is (typically already lowercase).
493
+ const lang = langAlias[normalizedRawLang] ?? normalizedRawLang;
467
494
  const metaStr =
468
495
  (code.properties?.dataMeta as string | undefined) ??
469
496
  (pre.properties?.dataMeta as string | undefined) ??
@@ -595,12 +622,25 @@ export async function runShikiOnRawBlocks(
595
622
  (newCode.properties as Record<string, unknown>).dataMeta = metaStr;
596
623
  }
597
624
  // Re-attach language-X class so the transformer can detect the language.
625
+ // Use the lowercase normalized form so downstream matching (which is
626
+ // case-sensitive in our transformer.ts:extractLanguageFromClass) is
627
+ // consistent with the lowercase lang we passed to Shiki. The original
628
+ // mixed-case class is also added (if different) so user CSS targeting
629
+ // like `.language-JS` continues to work. See issue #12.
598
630
  const existingClasses = (newCode.properties.className as string[] | undefined) ?? [];
599
- const langClass2 = `language-${rawLang}`;
600
- if (!existingClasses.includes(langClass2)) {
601
- (newCode.properties as Record<string, unknown>).className = [...existingClasses, langClass2];
631
+ const langClassLower = `language-${normalizedRawLang}`;
632
+ const langClassOriginal = `language-${rawLang}`;
633
+ const additions: string[] = [];
634
+ if (!existingClasses.includes(langClassLower)) additions.push(langClassLower);
635
+ if (rawLang !== normalizedRawLang && !existingClasses.includes(langClassOriginal) && !additions.includes(langClassOriginal)) {
636
+ additions.push(langClassOriginal);
637
+ }
638
+ if (additions.length > 0) {
639
+ (newCode.properties as Record<string, unknown>).className = [...existingClasses, ...additions];
602
640
  }
603
- (newCode.properties as Record<string, unknown>).dataLanguage = rawLang;
641
+ // dataLanguage uses the lowercase form for consistency with the
642
+ // language-* class and the Shiki lang we actually used.
643
+ (newCode.properties as Record<string, unknown>).dataLanguage = normalizedRawLang;
604
644
  }
605
645
  Object.assign(pre, newPre);
606
646
  }
package/src/styles.css CHANGED
File without changes
File without changes
package/src/types.ts CHANGED
File without changes
package/src/vite-raw.d.ts CHANGED
File without changes