1
0

templateHelper.patch 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. --- node_modules/jsdoc/lib/jsdoc/util/templateHelper.js.orig
  2. +++ node_modules/jsdoc/lib/jsdoc/util/templateHelper.js
  3. @@ -804,7 +804,27 @@
  4. return returnTypes;
  5. };
  6. +
  7. +// Cache for memberof index to speed up ancestor lookups
  8. +let memberofIndex = null;
  9. +
  10. +function buildMemberofIndex(data) {
  11. + if (memberofIndex) {
  12. + return memberofIndex;
  13. + }
  14. +
  15. + memberofIndex = new Map();
  16. + const allDoclets = data().get();
  17. +
  18. + for (const doclet of allDoclets) {
  19. + if (doclet.longname) {
  20. + memberofIndex.set(doclet.longname, doclet);
  21. + }
  22. + }
  23. + return memberofIndex;
  24. +}
  25. +
  26. /**
  27. * Retrieve an ordered list of doclets for a symbol's ancestors.
  28. *
  29. @@ -818,9 +838,13 @@
  30. let doc = doclet;
  31. let previousDoc;
  32. + // Build index once for all lookups
  33. + const index = buildMemberofIndex(data);
  34. +
  35. while (doc) {
  36. previousDoc = doc;
  37. - doc = find(data, {longname: doc.memberof})[0];
  38. + // Use index instead of database query
  39. + doc = index.get(doc.memberof);
  40. // prevent infinite loop that can be caused by duplicated module definitions
  41. if (previousDoc === doc) {
粤ICP备19079148号