@pierre/diffs 1.1.0-beta.4 → 1.1.0-beta.6

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 (56) hide show
  1. package/dist/components/File.d.ts +6 -0
  2. package/dist/components/File.d.ts.map +1 -1
  3. package/dist/components/File.js +4 -5
  4. package/dist/components/File.js.map +1 -1
  5. package/dist/components/FileDiff.d.ts +6 -0
  6. package/dist/components/FileDiff.d.ts.map +1 -1
  7. package/dist/components/FileDiff.js +4 -5
  8. package/dist/components/FileDiff.js.map +1 -1
  9. package/dist/constants.d.ts +2 -1
  10. package/dist/constants.d.ts.map +1 -1
  11. package/dist/constants.js +2 -1
  12. package/dist/constants.js.map +1 -1
  13. package/dist/highlighter/languages/constants.d.ts +3 -1
  14. package/dist/highlighter/languages/constants.d.ts.map +1 -1
  15. package/dist/highlighter/languages/constants.js +2 -1
  16. package/dist/highlighter/languages/constants.js.map +1 -1
  17. package/dist/highlighter/languages/registerCustomLanguage.d.ts +12 -0
  18. package/dist/highlighter/languages/registerCustomLanguage.d.ts.map +1 -0
  19. package/dist/highlighter/languages/registerCustomLanguage.js +21 -0
  20. package/dist/highlighter/languages/registerCustomLanguage.js.map +1 -0
  21. package/dist/highlighter/languages/resolveLanguage.d.ts.map +1 -1
  22. package/dist/highlighter/languages/resolveLanguage.js +4 -3
  23. package/dist/highlighter/languages/resolveLanguage.js.map +1 -1
  24. package/dist/index.d.ts +5 -4
  25. package/dist/index.js +5 -4
  26. package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
  27. package/dist/renderers/DiffHunksRenderer.js +10 -6
  28. package/dist/renderers/DiffHunksRenderer.js.map +1 -1
  29. package/dist/style.js +1 -1
  30. package/dist/style.js.map +1 -1
  31. package/dist/types.d.ts +3 -1
  32. package/dist/types.d.ts.map +1 -1
  33. package/dist/utils/getFiletypeFromFileName.d.ts +2 -1
  34. package/dist/utils/getFiletypeFromFileName.d.ts.map +1 -1
  35. package/dist/utils/getFiletypeFromFileName.js +14 -4
  36. package/dist/utils/getFiletypeFromFileName.js.map +1 -1
  37. package/dist/utils/iterateOverDiff.d.ts +2 -0
  38. package/dist/utils/iterateOverDiff.d.ts.map +1 -1
  39. package/dist/utils/iterateOverDiff.js +7 -5
  40. package/dist/utils/iterateOverDiff.js.map +1 -1
  41. package/dist/utils/renderDiffWithHighlighter.d.ts +2 -1
  42. package/dist/utils/renderDiffWithHighlighter.d.ts.map +1 -1
  43. package/dist/utils/renderDiffWithHighlighter.js +3 -2
  44. package/dist/utils/renderDiffWithHighlighter.js.map +1 -1
  45. package/dist/utils/setLanguageOverride.d.ts +2 -1
  46. package/dist/utils/setLanguageOverride.d.ts.map +1 -1
  47. package/dist/utils/setLanguageOverride.js.map +1 -1
  48. package/dist/worker/WorkerPoolManager.d.ts +1 -1
  49. package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
  50. package/dist/worker/WorkerPoolManager.js +3 -2
  51. package/dist/worker/WorkerPoolManager.js.map +1 -1
  52. package/dist/worker/worker-portable.js +29 -11
  53. package/dist/worker/worker-portable.js.map +1 -1
  54. package/dist/worker/worker.js +17 -8
  55. package/dist/worker/worker.js.map +1 -1
  56. package/package.json +2 -2
@@ -11685,6 +11685,7 @@ const LINE_HEIGHT = 20;
11685
11685
  const DIFF_HEADER_HEIGHT = 44;
11686
11686
  const HUNK_SEPARATOR_HEIGHT = 32;
11687
11687
  const FILE_GAP = 8;
11688
+ const DEFAULT_COLLAPSED_CONTEXT_THRESHOLD = 1;
11688
11689
  const DEFAULT_EXPANDED_REGION = Object.freeze({
11689
11690
  fromStart: 0,
11690
11691
  fromEnd: 0
@@ -11694,6 +11695,7 @@ const DEFAULT_EXPANDED_REGION = Object.freeze({
11694
11695
  //#region src/highlighter/languages/constants.ts
11695
11696
  const ResolvedLanguages = new Map();
11696
11697
  const ResolvingLanguages = new Map();
11698
+ const RegisteredCustomLanguages = new Map();
11697
11699
  const AttachedLanguages = new Set();
11698
11700
 
11699
11701
  //#endregion
@@ -13948,6 +13950,7 @@ function formatCSSVariablePrefix(type) {
13948
13950
 
13949
13951
  //#endregion
13950
13952
  //#region src/utils/getFiletypeFromFileName.ts
13953
+ const CUSTOM_EXTENSION_TO_FILE_FORMAT = new Map();
13951
13954
  const EXTENSION_TO_FILE_FORMAT = {
13952
13955
  "1c": "1c",
13953
13956
  abap: "abap",
@@ -14278,19 +14281,33 @@ const EXTENSION_TO_FILE_FORMAT = {
14278
14281
  sty: "tex"
14279
14282
  };
14280
14283
  function getFiletypeFromFileName(fileName) {
14284
+ if (CUSTOM_EXTENSION_TO_FILE_FORMAT.has(fileName)) {
14285
+ return CUSTOM_EXTENSION_TO_FILE_FORMAT.get(fileName) ?? "text";
14286
+ }
14281
14287
  if (EXTENSION_TO_FILE_FORMAT[fileName] != null) {
14282
14288
  return EXTENSION_TO_FILE_FORMAT[fileName];
14283
14289
  }
14284
14290
  const compoundMatch = fileName.match(/\.([^/\\]+\.[^/\\]+)$/);
14285
- if (compoundMatch != null && EXTENSION_TO_FILE_FORMAT[compoundMatch[1]] != null) {
14286
- return EXTENSION_TO_FILE_FORMAT[compoundMatch[1]] ?? "text";
14291
+ if (compoundMatch != null) {
14292
+ if (CUSTOM_EXTENSION_TO_FILE_FORMAT.has(compoundMatch[1])) {
14293
+ return CUSTOM_EXTENSION_TO_FILE_FORMAT.get(compoundMatch[1]) ?? "text";
14294
+ }
14295
+ if (EXTENSION_TO_FILE_FORMAT[compoundMatch[1]] != null) {
14296
+ return EXTENSION_TO_FILE_FORMAT[compoundMatch[1]] ?? "text";
14297
+ }
14287
14298
  }
14288
- const simpleMatch = fileName.match(/\.([^.]+)$/);
14289
- return EXTENSION_TO_FILE_FORMAT[simpleMatch?.[1] ?? ""] ?? "text";
14299
+ const simpleMatch = fileName.match(/\.([^.]+)$/)?.[1] ?? "";
14300
+ if (CUSTOM_EXTENSION_TO_FILE_FORMAT.has(simpleMatch)) {
14301
+ return CUSTOM_EXTENSION_TO_FILE_FORMAT.get(simpleMatch) ?? "text";
14302
+ }
14303
+ return EXTENSION_TO_FILE_FORMAT[simpleMatch] ?? "text";
14290
14304
  }
14291
14305
  function extendFileFormatMap(map) {
14292
14306
  for (const key$1 in map) {
14293
- EXTENSION_TO_FILE_FORMAT[key$1] = map[key$1];
14307
+ const lang = map[key$1];
14308
+ if (lang != null) {
14309
+ CUSTOM_EXTENSION_TO_FILE_FORMAT.set(key$1, lang);
14310
+ }
14294
14311
  }
14295
14312
  }
14296
14313
 
@@ -14355,7 +14372,7 @@ function getLineNodes(nodes) {
14355
14372
 
14356
14373
  //#endregion
14357
14374
  //#region src/utils/iterateOverDiff.ts
14358
- function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infinity, expandedHunks, callback }) {
14375
+ function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infinity, expandedHunks, collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, callback }) {
14359
14376
  const state = {
14360
14377
  finalHunk: diff.hunks.at(-1),
14361
14378
  viewportStart: startingLine,
@@ -14436,7 +14453,7 @@ function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infin
14436
14453
  if (state.shouldBreak()) {
14437
14454
  break;
14438
14455
  }
14439
- const leadingRegion = getExpandedRegion(diff.isPartial, hunk.collapsedBefore, expandedHunks, hunkIndex);
14456
+ const leadingRegion = getExpandedRegion(diff.isPartial, hunk.collapsedBefore, expandedHunks, hunkIndex, collapsedContextThreshold);
14440
14457
  const trailingRegion = (() => {
14441
14458
  if (hunk !== state.finalHunk || !hasFinalCollapsedHunk(diff)) {
14442
14459
  return undefined;
@@ -14447,7 +14464,7 @@ function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infin
14447
14464
  throw new Error(`iterateOverDiff: trailing context mismatch (additions=${additionRemaining}, deletions=${deletionRemaining}) for ${diff.name}`);
14448
14465
  }
14449
14466
  const trailingRangeSize = Math.min(additionRemaining, deletionRemaining);
14450
- return getExpandedRegion(diff.isPartial, trailingRangeSize, expandedHunks, diff.hunks.length);
14467
+ return getExpandedRegion(diff.isPartial, trailingRangeSize, expandedHunks, diff.hunks.length, collapsedContextThreshold);
14451
14468
  })();
14452
14469
  const expandedLineCount = leadingRegion.fromStart + leadingRegion.fromEnd;
14453
14470
  function getTrailingCollapsedAfter(unifiedLineIndex$1, splitLineIndex$1) {
@@ -14669,7 +14686,7 @@ function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infin
14669
14686
  }
14670
14687
  }
14671
14688
  }
14672
- function getExpandedRegion(isPartial, rangeSize, expandedHunks, hunkIndex) {
14689
+ function getExpandedRegion(isPartial, rangeSize, expandedHunks, hunkIndex, collapsedContextThreshold) {
14673
14690
  rangeSize = Math.max(rangeSize, 0);
14674
14691
  if (rangeSize === 0 || isPartial) {
14675
14692
  return {
@@ -14679,7 +14696,7 @@ function getExpandedRegion(isPartial, rangeSize, expandedHunks, hunkIndex) {
14679
14696
  collapsedLines: Math.max(rangeSize, 0)
14680
14697
  };
14681
14698
  }
14682
- if (expandedHunks === true) {
14699
+ if (expandedHunks === true || rangeSize <= collapsedContextThreshold) {
14683
14700
  return {
14684
14701
  fromStart: rangeSize,
14685
14702
  fromEnd: 0,
@@ -14831,7 +14848,7 @@ function pushOrJoinSpan({ item, arr, enableJoin, isNeutral = false, isLastItem =
14831
14848
  //#endregion
14832
14849
  //#region src/utils/renderDiffWithHighlighter.ts
14833
14850
  const DEFAULT_PLAIN_TEXT_OPTIONS = { forcePlainText: false };
14834
- function renderDiffWithHighlighter(diff, highlighter$1, options, { forcePlainText, startingLine, totalLines, expandedHunks } = DEFAULT_PLAIN_TEXT_OPTIONS) {
14851
+ function renderDiffWithHighlighter(diff, highlighter$1, options, { forcePlainText, startingLine, totalLines, expandedHunks, collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD } = DEFAULT_PLAIN_TEXT_OPTIONS) {
14835
14852
  if (forcePlainText) {
14836
14853
  startingLine ??= 0;
14837
14854
  totalLines ??= Infinity;
@@ -14886,6 +14903,7 @@ function renderDiffWithHighlighter(diff, highlighter$1, options, { forcePlainTex
14886
14903
  startingLine,
14887
14904
  totalLines,
14888
14905
  expandedHunks: isWindowedHighlight ? expandedHunksForIteration : true,
14906
+ collapsedContextThreshold,
14889
14907
  callback: ({ hunkIndex, additionLineIndex, deletionLineIndex, additionLineNumber, deletionLineNumber, unifiedAdditionLineIndex, unifiedDeletionLineIndex, splitLineIndex, type }) => {
14890
14908
  const bucket = getBucketForHunk(hunkIndex);
14891
14909
  if (type === "change" && lineDiffType !== "none" && additionLineIndex != null && deletionLineIndex != null) {