@jupyterlab/rendermime 4.3.0 → 4.3.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/lib/renderers.js CHANGED
@@ -443,26 +443,97 @@ function* alignedNodes(a, b) {
443
443
  * @returns A promise which resolves when rendering is complete.
444
444
  */
445
445
  export function renderText(options) {
446
+ renderTextual(options, {
447
+ checkWeb: true,
448
+ checkPaths: false
449
+ });
450
+ // Return the rendered promise.
451
+ return Promise.resolve(undefined);
452
+ }
453
+ /**
454
+ * Sanitize HTML out using native browser sanitizer.
455
+ *
456
+ * Compared to the `ISanitizer.sanitize` this does not allow to selectively
457
+ * allow to keep certain tags but escapes everything; on the other hand
458
+ * it is much faster as it uses platform-optimized code.
459
+ */
460
+ function nativeSanitize(source) {
461
+ const el = document.createElement('span');
462
+ el.textContent = source;
463
+ return el.innerHTML;
464
+ }
465
+ /**
466
+ * Render the textual representation into a host node.
467
+ *
468
+ * Implements the shared logic for `renderText` and `renderError`.
469
+ */
470
+ function renderTextual(options, autoLinkOptions) {
446
471
  var _a, _b;
447
472
  // Unpack the options.
448
473
  const { host, sanitizer, source } = options;
449
- // Create the HTML content.
450
- const content = sanitizer.sanitize(Private.ansiSpan(source), {
451
- allowedTags: ['span']
452
- });
474
+ const ansiPrefixRe = /\x1b/; // eslint-disable-line no-control-regex
475
+ const hasAnsiPrefix = ansiPrefixRe.test(source);
476
+ // Create the HTML content:
477
+ // If no ANSI codes are present use a fast path for escaping.
478
+ const content = hasAnsiPrefix
479
+ ? sanitizer.sanitize(Private.ansiSpan(source), {
480
+ allowedTags: ['span']
481
+ })
482
+ : nativeSanitize(source);
453
483
  // Set the sanitized content for the host node.
454
484
  const pre = document.createElement('pre');
455
485
  pre.innerHTML = content;
456
486
  const preTextContent = pre.textContent;
487
+ const cacheStoreOptions = [];
488
+ if (autoLinkOptions.checkWeb) {
489
+ cacheStoreOptions.push('web');
490
+ }
491
+ if (autoLinkOptions.checkPaths) {
492
+ cacheStoreOptions.push('paths');
493
+ }
494
+ const cacheStoreKey = cacheStoreOptions.join('-');
495
+ let cacheStore = Private.autoLinkCache.get(cacheStoreKey);
496
+ if (!cacheStore) {
497
+ cacheStore = new WeakMap();
498
+ Private.autoLinkCache.set(cacheStoreKey, cacheStore);
499
+ }
457
500
  let ret;
458
501
  if (preTextContent) {
459
502
  // Note: only text nodes and span elements should be present after sanitization in the `<pre>` element.
460
- const linkedNodes = ((_b = (_a = sanitizer.getAutolink) === null || _a === void 0 ? void 0 : _a.call(sanitizer)) !== null && _b !== void 0 ? _b : true)
461
- ? autolink(preTextContent, {
462
- checkWeb: true,
463
- checkPaths: false
464
- })
465
- : [document.createTextNode(content)];
503
+ let linkedNodes;
504
+ if ((_b = (_a = sanitizer.getAutolink) === null || _a === void 0 ? void 0 : _a.call(sanitizer)) !== null && _b !== void 0 ? _b : true) {
505
+ const cache = getApplicableLinkCache(cacheStore.get(host), preTextContent);
506
+ if (cache) {
507
+ const { cachedNodes: fromCache, addedText } = cache;
508
+ const newAdditions = autolink(addedText, autoLinkOptions);
509
+ const lastInCache = fromCache[fromCache.length - 1];
510
+ const firstNewNode = newAdditions[0];
511
+ if (lastInCache instanceof Text && firstNewNode instanceof Text) {
512
+ const joiningNode = lastInCache;
513
+ joiningNode.data += firstNewNode.data;
514
+ linkedNodes = [
515
+ ...fromCache.slice(0, -1),
516
+ joiningNode,
517
+ ...newAdditions.slice(1)
518
+ ];
519
+ }
520
+ else {
521
+ linkedNodes = [...fromCache, ...newAdditions];
522
+ }
523
+ }
524
+ else {
525
+ linkedNodes = autolink(preTextContent, autoLinkOptions);
526
+ }
527
+ cacheStore.set(host, {
528
+ preTextContent,
529
+ // Clone the nodes before storing them in the cache in case if another component
530
+ // attempts to modify (e.g. dispose of) them - which is the case for search highlights!
531
+ linkedNodes: linkedNodes.map(node => node.cloneNode(true))
532
+ });
533
+ }
534
+ else {
535
+ linkedNodes = [document.createTextNode(content)];
536
+ }
466
537
  const preNodes = Array.from(pre.childNodes);
467
538
  ret = mergeNodes(preNodes, linkedNodes);
468
539
  }
@@ -470,8 +541,53 @@ export function renderText(options) {
470
541
  ret = document.createElement('pre');
471
542
  }
472
543
  host.appendChild(ret);
473
- // Return the rendered promise.
474
- return Promise.resolve(undefined);
544
+ }
545
+ /**
546
+ * Return the information from the cache that can be used given the cache entry and current text.
547
+ * If the cache is invalid given the current text (or cannot be used) `null` is returned.
548
+ */
549
+ function getApplicableLinkCache(cachedResult, preTextContent) {
550
+ if (!cachedResult) {
551
+ return null;
552
+ }
553
+ if (preTextContent.length < cachedResult.preTextContent.length) {
554
+ // If the new content is shorter than the cached content
555
+ // we cannot use the cache as we only support appending.
556
+ return null;
557
+ }
558
+ let addedText = preTextContent.substring(cachedResult.preTextContent.length);
559
+ let cachedNodes = cachedResult.linkedNodes;
560
+ const lastCachedNode = cachedResult.linkedNodes[cachedResult.linkedNodes.length - 1];
561
+ // Only use cached nodes if:
562
+ // - the last cached node is a text node
563
+ // - the new content starts with a new line
564
+ // - the old content ends with a new line
565
+ if (cachedResult.preTextContent.endsWith('\n') ||
566
+ addedText.startsWith('\n')) {
567
+ // Second or third condition is met, we can use the cached nodes
568
+ // (this is a no-op, we just continue execution).
569
+ }
570
+ else if (lastCachedNode instanceof Text) {
571
+ // The first condition is met, we can use the cached nodes,
572
+ // but first we remove the Text node to re-analyse its text.
573
+ // This is required when we cached `aaa www.one.com bbb www.`
574
+ // and the incoming addition is `two.com`. We can still
575
+ // use text node `aaa ` and anchor node `www.one.com`, but
576
+ // we need to pass `bbb www.` + `two.com` through linkify again.
577
+ cachedNodes = cachedNodes.slice(0, -1);
578
+ addedText = lastCachedNode.textContent + addedText;
579
+ }
580
+ else {
581
+ return null;
582
+ }
583
+ // Finally check if text has not changed.
584
+ if (!preTextContent.startsWith(cachedResult.preTextContent)) {
585
+ return null;
586
+ }
587
+ return {
588
+ cachedNodes,
589
+ addedText
590
+ };
475
591
  }
476
592
  /**
477
593
  * Render error into a host node.
@@ -481,33 +597,12 @@ export function renderText(options) {
481
597
  * @returns A promise which resolves when rendering is complete.
482
598
  */
483
599
  export function renderError(options) {
484
- var _a, _b;
485
600
  // Unpack the options.
486
- const { host, linkHandler, sanitizer, resolver, source } = options;
487
- // Create the HTML content.
488
- const content = sanitizer.sanitize(Private.ansiSpan(source), {
489
- allowedTags: ['span']
601
+ const { host, linkHandler, resolver } = options;
602
+ renderTextual(options, {
603
+ checkWeb: true,
604
+ checkPaths: true
490
605
  });
491
- // Set the sanitized content for the host node.
492
- const pre = document.createElement('pre');
493
- pre.innerHTML = content;
494
- const preTextContent = pre.textContent;
495
- let ret;
496
- if (preTextContent) {
497
- // Note: only text nodes and span elements should be present after sanitization in the `<pre>` element.
498
- const linkedNodes = ((_b = (_a = sanitizer.getAutolink) === null || _a === void 0 ? void 0 : _a.call(sanitizer)) !== null && _b !== void 0 ? _b : true)
499
- ? autolink(preTextContent, {
500
- checkWeb: true,
501
- checkPaths: true
502
- })
503
- : [document.createTextNode(content)];
504
- const preNodes = Array.from(pre.childNodes);
505
- ret = mergeNodes(preNodes, linkedNodes);
506
- }
507
- else {
508
- ret = document.createElement('pre');
509
- }
510
- host.appendChild(ret);
511
606
  // Patch the paths if a resolver is available.
512
607
  let promise;
513
608
  if (resolver) {
@@ -577,6 +672,10 @@ function mergeNodes(preNodes, linkedNodes) {
577
672
  */
578
673
  var Private;
579
674
  (function (Private) {
675
+ /**
676
+ * Cache for auto-linking results to provide better performance when streaming outputs.
677
+ */
678
+ Private.autoLinkCache = new Map();
580
679
  /**
581
680
  * Eval the script tags contained in a host populated by `innerHTML`.
582
681
  *
@@ -1 +1 @@
1
- {"version":3,"file":"renderers.js","sourceRoot":"","sources":["../src/renderers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderers.js","sourceRoot":"","sources":["../src/renderers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupyterlab/rendermime",
3
- "version": "4.3.0",
3
+ "version": "4.3.2",
4
4
  "description": "JupyterLab - RenderMime",
5
5
  "homepage": "https://github.com/jupyterlab/jupyterlab",
6
6
  "bugs": {
@@ -41,13 +41,13 @@
41
41
  "watch": "tsc -b --watch"
42
42
  },
43
43
  "dependencies": {
44
- "@jupyterlab/apputils": "^4.4.0",
45
- "@jupyterlab/coreutils": "^6.3.0",
46
- "@jupyterlab/nbformat": "^4.3.0",
47
- "@jupyterlab/observables": "^5.3.0",
48
- "@jupyterlab/rendermime-interfaces": "^3.11.0",
49
- "@jupyterlab/services": "^7.3.0",
50
- "@jupyterlab/translation": "^4.3.0",
44
+ "@jupyterlab/apputils": "^4.4.2",
45
+ "@jupyterlab/coreutils": "^6.3.2",
46
+ "@jupyterlab/nbformat": "^4.3.2",
47
+ "@jupyterlab/observables": "^5.3.2",
48
+ "@jupyterlab/rendermime-interfaces": "^3.11.2",
49
+ "@jupyterlab/services": "^7.3.2",
50
+ "@jupyterlab/translation": "^4.3.2",
51
51
  "@lumino/coreutils": "^2.2.0",
52
52
  "@lumino/messaging": "^2.0.2",
53
53
  "@lumino/signaling": "^2.1.3",
@@ -55,7 +55,7 @@
55
55
  "lodash.escape": "^4.0.1"
56
56
  },
57
57
  "devDependencies": {
58
- "@jupyterlab/testing": "^4.3.0",
58
+ "@jupyterlab/testing": "^4.3.2",
59
59
  "@types/jest": "^29.2.0",
60
60
  "@types/lodash.escape": "^4.0.6",
61
61
  "fs-extra": "^10.1.0",
package/src/renderers.ts CHANGED
@@ -787,13 +787,50 @@ function* alignedNodes<T extends Node, U extends Node>(
787
787
  * @returns A promise which resolves when rendering is complete.
788
788
  */
789
789
  export function renderText(options: renderText.IRenderOptions): Promise<void> {
790
+ renderTextual(options, {
791
+ checkWeb: true,
792
+ checkPaths: false
793
+ });
794
+
795
+ // Return the rendered promise.
796
+ return Promise.resolve(undefined);
797
+ }
798
+
799
+ /**
800
+ * Sanitize HTML out using native browser sanitizer.
801
+ *
802
+ * Compared to the `ISanitizer.sanitize` this does not allow to selectively
803
+ * allow to keep certain tags but escapes everything; on the other hand
804
+ * it is much faster as it uses platform-optimized code.
805
+ */
806
+ function nativeSanitize(source: string): string {
807
+ const el = document.createElement('span');
808
+ el.textContent = source;
809
+ return el.innerHTML;
810
+ }
811
+
812
+ /**
813
+ * Render the textual representation into a host node.
814
+ *
815
+ * Implements the shared logic for `renderText` and `renderError`.
816
+ */
817
+ function renderTextual(
818
+ options: renderText.IRenderOptions,
819
+ autoLinkOptions: IAutoLinkOptions
820
+ ): void {
790
821
  // Unpack the options.
791
822
  const { host, sanitizer, source } = options;
792
823
 
793
- // Create the HTML content.
794
- const content = sanitizer.sanitize(Private.ansiSpan(source), {
795
- allowedTags: ['span']
796
- });
824
+ const ansiPrefixRe = /\x1b/; // eslint-disable-line no-control-regex
825
+ const hasAnsiPrefix = ansiPrefixRe.test(source);
826
+
827
+ // Create the HTML content:
828
+ // If no ANSI codes are present use a fast path for escaping.
829
+ const content = hasAnsiPrefix
830
+ ? sanitizer.sanitize(Private.ansiSpan(source), {
831
+ allowedTags: ['span']
832
+ })
833
+ : nativeSanitize(source);
797
834
 
798
835
  // Set the sanitized content for the host node.
799
836
  const pre = document.createElement('pre');
@@ -801,16 +838,60 @@ export function renderText(options: renderText.IRenderOptions): Promise<void> {
801
838
 
802
839
  const preTextContent = pre.textContent;
803
840
 
841
+ const cacheStoreOptions = [];
842
+ if (autoLinkOptions.checkWeb) {
843
+ cacheStoreOptions.push('web');
844
+ }
845
+ if (autoLinkOptions.checkPaths) {
846
+ cacheStoreOptions.push('paths');
847
+ }
848
+ const cacheStoreKey = cacheStoreOptions.join('-');
849
+ let cacheStore = Private.autoLinkCache.get(cacheStoreKey);
850
+ if (!cacheStore) {
851
+ cacheStore = new WeakMap();
852
+ Private.autoLinkCache.set(cacheStoreKey, cacheStore);
853
+ }
854
+
804
855
  let ret: HTMLPreElement;
805
856
  if (preTextContent) {
806
857
  // Note: only text nodes and span elements should be present after sanitization in the `<pre>` element.
807
- const linkedNodes =
808
- sanitizer.getAutolink?.() ?? true
809
- ? autolink(preTextContent, {
810
- checkWeb: true,
811
- checkPaths: false
812
- })
813
- : [document.createTextNode(content)];
858
+ let linkedNodes: (HTMLAnchorElement | Text)[];
859
+ if (sanitizer.getAutolink?.() ?? true) {
860
+ const cache = getApplicableLinkCache(
861
+ cacheStore.get(host),
862
+ preTextContent
863
+ );
864
+ if (cache) {
865
+ const { cachedNodes: fromCache, addedText } = cache;
866
+ const newAdditions = autolink(addedText, autoLinkOptions);
867
+ const lastInCache = fromCache[fromCache.length - 1];
868
+ const firstNewNode = newAdditions[0];
869
+
870
+ if (lastInCache instanceof Text && firstNewNode instanceof Text) {
871
+ const joiningNode = lastInCache;
872
+ joiningNode.data += firstNewNode.data;
873
+ linkedNodes = [
874
+ ...fromCache.slice(0, -1),
875
+ joiningNode,
876
+ ...newAdditions.slice(1)
877
+ ];
878
+ } else {
879
+ linkedNodes = [...fromCache, ...newAdditions];
880
+ }
881
+ } else {
882
+ linkedNodes = autolink(preTextContent, autoLinkOptions);
883
+ }
884
+ cacheStore.set(host, {
885
+ preTextContent,
886
+ // Clone the nodes before storing them in the cache in case if another component
887
+ // attempts to modify (e.g. dispose of) them - which is the case for search highlights!
888
+ linkedNodes: linkedNodes.map(
889
+ node => node.cloneNode(true) as HTMLAnchorElement | Text
890
+ )
891
+ });
892
+ } else {
893
+ linkedNodes = [document.createTextNode(content)];
894
+ }
814
895
 
815
896
  const preNodes = Array.from(pre.childNodes) as (Text | HTMLSpanElement)[];
816
897
  ret = mergeNodes(preNodes, linkedNodes);
@@ -819,9 +900,6 @@ export function renderText(options: renderText.IRenderOptions): Promise<void> {
819
900
  }
820
901
 
821
902
  host.appendChild(ret);
822
-
823
- // Return the rendered promise.
824
- return Promise.resolve(undefined);
825
903
  }
826
904
 
827
905
  /**
@@ -854,6 +932,68 @@ export namespace renderText {
854
932
  }
855
933
  }
856
934
 
935
+ interface IAutoLinkCacheEntry {
936
+ preTextContent: string;
937
+ linkedNodes: (HTMLAnchorElement | Text)[];
938
+ }
939
+
940
+ /**
941
+ * Return the information from the cache that can be used given the cache entry and current text.
942
+ * If the cache is invalid given the current text (or cannot be used) `null` is returned.
943
+ */
944
+ function getApplicableLinkCache(
945
+ cachedResult: IAutoLinkCacheEntry | undefined,
946
+ preTextContent: string
947
+ ): {
948
+ cachedNodes: IAutoLinkCacheEntry['linkedNodes'];
949
+ addedText: string;
950
+ } | null {
951
+ if (!cachedResult) {
952
+ return null;
953
+ }
954
+ if (preTextContent.length < cachedResult.preTextContent.length) {
955
+ // If the new content is shorter than the cached content
956
+ // we cannot use the cache as we only support appending.
957
+ return null;
958
+ }
959
+ let addedText = preTextContent.substring(cachedResult.preTextContent.length);
960
+ let cachedNodes = cachedResult.linkedNodes;
961
+ const lastCachedNode =
962
+ cachedResult.linkedNodes[cachedResult.linkedNodes.length - 1];
963
+
964
+ // Only use cached nodes if:
965
+ // - the last cached node is a text node
966
+ // - the new content starts with a new line
967
+ // - the old content ends with a new line
968
+ if (
969
+ cachedResult.preTextContent.endsWith('\n') ||
970
+ addedText.startsWith('\n')
971
+ ) {
972
+ // Second or third condition is met, we can use the cached nodes
973
+ // (this is a no-op, we just continue execution).
974
+ } else if (lastCachedNode instanceof Text) {
975
+ // The first condition is met, we can use the cached nodes,
976
+ // but first we remove the Text node to re-analyse its text.
977
+ // This is required when we cached `aaa www.one.com bbb www.`
978
+ // and the incoming addition is `two.com`. We can still
979
+ // use text node `aaa ` and anchor node `www.one.com`, but
980
+ // we need to pass `bbb www.` + `two.com` through linkify again.
981
+ cachedNodes = cachedNodes.slice(0, -1);
982
+ addedText = lastCachedNode.textContent + addedText;
983
+ } else {
984
+ return null;
985
+ }
986
+
987
+ // Finally check if text has not changed.
988
+ if (!preTextContent.startsWith(cachedResult.preTextContent)) {
989
+ return null;
990
+ }
991
+ return {
992
+ cachedNodes,
993
+ addedText
994
+ };
995
+ }
996
+
857
997
  /**
858
998
  * Render error into a host node.
859
999
  *
@@ -865,37 +1005,13 @@ export function renderError(
865
1005
  options: renderError.IRenderOptions
866
1006
  ): Promise<void> {
867
1007
  // Unpack the options.
868
- const { host, linkHandler, sanitizer, resolver, source } = options;
1008
+ const { host, linkHandler, resolver } = options;
869
1009
 
870
- // Create the HTML content.
871
- const content = sanitizer.sanitize(Private.ansiSpan(source), {
872
- allowedTags: ['span']
1010
+ renderTextual(options, {
1011
+ checkWeb: true,
1012
+ checkPaths: true
873
1013
  });
874
1014
 
875
- // Set the sanitized content for the host node.
876
- const pre = document.createElement('pre');
877
- pre.innerHTML = content;
878
-
879
- const preTextContent = pre.textContent;
880
-
881
- let ret: HTMLPreElement;
882
- if (preTextContent) {
883
- // Note: only text nodes and span elements should be present after sanitization in the `<pre>` element.
884
- const linkedNodes =
885
- sanitizer.getAutolink?.() ?? true
886
- ? autolink(preTextContent, {
887
- checkWeb: true,
888
- checkPaths: true
889
- })
890
- : [document.createTextNode(content)];
891
-
892
- const preNodes = Array.from(pre.childNodes) as (Text | HTMLSpanElement)[];
893
- ret = mergeNodes(preNodes, linkedNodes);
894
- } else {
895
- ret = document.createElement('pre');
896
- }
897
- host.appendChild(ret);
898
-
899
1015
  // Patch the paths if a resolver is available.
900
1016
  let promise: Promise<void>;
901
1017
  if (resolver) {
@@ -1012,6 +1128,14 @@ export namespace renderError {
1012
1128
  * The namespace for module implementation details.
1013
1129
  */
1014
1130
  namespace Private {
1131
+ /**
1132
+ * Cache for auto-linking results to provide better performance when streaming outputs.
1133
+ */
1134
+ export const autoLinkCache = new Map<
1135
+ string,
1136
+ WeakMap<HTMLElement, IAutoLinkCacheEntry>
1137
+ >();
1138
+
1015
1139
  /**
1016
1140
  * Eval the script tags contained in a host populated by `innerHTML`.
1017
1141
  *