typedoc 0.26.0-beta.1 → 0.26.0-beta.3

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 (109) hide show
  1. package/dist/lib/application.d.ts +2 -0
  2. package/dist/lib/application.js +12 -3
  3. package/dist/lib/cli.js +1 -0
  4. package/dist/lib/converter/comments/declarationReference.d.ts +1 -0
  5. package/dist/lib/converter/comments/declarationReference.js +14 -0
  6. package/dist/lib/converter/comments/declarationReferenceResolver.js +4 -2
  7. package/dist/lib/converter/comments/discovery.js +9 -2
  8. package/dist/lib/converter/comments/index.d.ts +6 -5
  9. package/dist/lib/converter/comments/index.js +21 -21
  10. package/dist/lib/converter/comments/parser.d.ts +3 -2
  11. package/dist/lib/converter/comments/parser.js +26 -17
  12. package/dist/lib/converter/comments/textParser.d.ts +16 -0
  13. package/dist/lib/converter/comments/textParser.js +190 -0
  14. package/dist/lib/converter/context.d.ts +2 -2
  15. package/dist/lib/converter/context.js +13 -8
  16. package/dist/lib/converter/converter.d.ts +4 -2
  17. package/dist/lib/converter/converter.js +65 -15
  18. package/dist/lib/converter/factories/index-signature.js +1 -1
  19. package/dist/lib/converter/plugins/CategoryPlugin.js +3 -5
  20. package/dist/lib/converter/plugins/CommentPlugin.js +20 -0
  21. package/dist/lib/converter/plugins/PackagePlugin.js +1 -1
  22. package/dist/lib/converter/symbols.js +27 -7
  23. package/dist/lib/converter/types.js +30 -3
  24. package/dist/lib/converter/utils/base-path.js +11 -6
  25. package/dist/lib/converter/utils/repository.js +2 -2
  26. package/dist/lib/internationalization/internationalization.js +1 -2
  27. package/dist/lib/internationalization/locales/ko.cjs +79 -0
  28. package/dist/lib/internationalization/locales/ko.d.cts +78 -0
  29. package/dist/lib/internationalization/translatable.d.ts +12 -1
  30. package/dist/lib/internationalization/translatable.js +12 -1
  31. package/dist/lib/models/FileRegistry.d.ts +26 -0
  32. package/dist/lib/models/FileRegistry.js +136 -0
  33. package/dist/lib/models/comments/comment.d.ts +57 -10
  34. package/dist/lib/models/comments/comment.js +32 -71
  35. package/dist/lib/models/comments/index.d.ts +1 -1
  36. package/dist/lib/models/index.d.ts +1 -0
  37. package/dist/lib/models/index.js +1 -0
  38. package/dist/lib/models/reflections/ReflectionSymbolId.js +1 -1
  39. package/dist/lib/models/reflections/abstract.js +1 -1
  40. package/dist/lib/models/reflections/document.d.ts +6 -1
  41. package/dist/lib/models/reflections/document.js +12 -2
  42. package/dist/lib/models/reflections/kind.d.ts +2 -0
  43. package/dist/lib/models/reflections/kind.js +3 -1
  44. package/dist/lib/models/reflections/project.d.ts +7 -2
  45. package/dist/lib/models/reflections/project.js +52 -40
  46. package/dist/lib/models/reflections/signature.js +9 -2
  47. package/dist/lib/models/types.d.ts +9 -1
  48. package/dist/lib/models/types.js +7 -20
  49. package/dist/lib/output/components.d.ts +2 -0
  50. package/dist/lib/output/components.js +139 -66
  51. package/dist/lib/output/models/UrlMapping.d.ts +4 -0
  52. package/dist/lib/output/plugins/AssetsPlugin.js +5 -0
  53. package/dist/lib/output/plugins/JavascriptIndexPlugin.js +2 -2
  54. package/dist/lib/output/plugins/NavigationPlugin.js +1 -1
  55. package/dist/lib/output/plugins/SitemapPlugin.js +1 -1
  56. package/dist/lib/output/renderer.d.ts +24 -14
  57. package/dist/lib/output/renderer.js +17 -12
  58. package/dist/lib/output/theme.d.ts +0 -7
  59. package/dist/lib/output/theme.js +0 -8
  60. package/dist/lib/output/themes/MarkedPlugin.d.ts +1 -0
  61. package/dist/lib/output/themes/MarkedPlugin.js +91 -3
  62. package/dist/lib/output/themes/default/DefaultTheme.js +6 -3
  63. package/dist/lib/output/themes/default/DefaultThemeRenderContext.d.ts +4 -3
  64. package/dist/lib/output/themes/default/DefaultThemeRenderContext.js +3 -1
  65. package/dist/lib/output/themes/default/layouts/default.js +10 -10
  66. package/dist/lib/output/themes/default/partials/comment.d.ts +1 -1
  67. package/dist/lib/output/themes/default/partials/comment.js +16 -11
  68. package/dist/lib/output/themes/default/partials/footer.js +3 -3
  69. package/dist/lib/output/themes/default/partials/index.js +1 -1
  70. package/dist/lib/output/themes/default/partials/member.declaration.js +30 -4
  71. package/dist/lib/output/themes/default/partials/member.signature.title.d.ts +2 -1
  72. package/dist/lib/output/themes/default/partials/member.signature.title.js +1 -2
  73. package/dist/lib/output/themes/default/partials/members.group.js +17 -10
  74. package/dist/lib/output/themes/default/partials/members.js +7 -3
  75. package/dist/lib/output/themes/default/partials/navigation.js +2 -2
  76. package/dist/lib/output/themes/default/partials/reflectionPreview.js +3 -2
  77. package/dist/lib/output/themes/default/partials/type.js +26 -2
  78. package/dist/lib/output/themes/default/partials/typeAndParent.js +2 -4
  79. package/dist/lib/output/themes/default/partials/typeParameters.js +1 -1
  80. package/dist/lib/serialization/deserializer.d.ts +8 -2
  81. package/dist/lib/serialization/deserializer.js +17 -8
  82. package/dist/lib/serialization/schema.d.ts +49 -13
  83. package/dist/lib/serialization/serializer.d.ts +1 -1
  84. package/dist/lib/utils/array.js +1 -1
  85. package/dist/lib/utils/entry-point.js +1 -1
  86. package/dist/lib/utils/events.d.ts +1 -1
  87. package/dist/lib/utils/events.js +1 -1
  88. package/dist/lib/utils/highlighter.d.ts +4 -2
  89. package/dist/lib/utils/highlighter.js +16 -5
  90. package/dist/lib/utils/html-entities.json +2324 -2231
  91. package/dist/lib/utils/html.d.ts +59 -1
  92. package/dist/lib/utils/html.js +577 -18
  93. package/dist/lib/utils/loggers.d.ts +0 -4
  94. package/dist/lib/utils/loggers.js +1 -7
  95. package/dist/lib/utils/options/declaration.d.ts +2 -0
  96. package/dist/lib/utils/options/help.js +1 -1
  97. package/dist/lib/utils/options/options.js +7 -6
  98. package/dist/lib/utils/options/readers/typedoc.js +0 -1
  99. package/dist/lib/utils/options/sources/typedoc.js +29 -0
  100. package/dist/lib/utils/options/tsdoc-defaults.d.ts +2 -2
  101. package/dist/lib/utils/options/tsdoc-defaults.js +2 -0
  102. package/dist/lib/utils/plugins.js +0 -1
  103. package/dist/lib/utils/set.d.ts +2 -1
  104. package/dist/lib/utils/set.js +8 -0
  105. package/dist/lib/utils/sort.js +4 -13
  106. package/package.json +11 -14
  107. package/static/main.js +4 -4
  108. package/static/style.css +5 -2
  109. package/tsdoc.json +8 -0
@@ -30,6 +30,7 @@ const tsutils_1 = require("../utils/tsutils");
30
30
  const ReflectionSymbolId_1 = require("./reflections/ReflectionSymbolId");
31
31
  const fs_1 = require("../utils/fs");
32
32
  const kind_1 = require("./reflections/kind");
33
+ const comments_1 = require("./comments");
33
34
  /**
34
35
  * Base class of all type definitions.
35
36
  * @category Types
@@ -748,7 +749,7 @@ class ReferenceType extends Type {
748
749
  static createSymbolReference(symbol, context, name) {
749
750
  const ref = new ReferenceType(name ?? symbol.name, new ReflectionSymbolId_1.ReflectionSymbolId(symbol), context.project, (0, tsutils_1.getQualifiedName)(symbol, name ?? symbol.name));
750
751
  ref.refersToTypeParameter = !!(symbol.flags & ts.SymbolFlags.TypeParameter);
751
- const symbolPath = symbol?.declarations?.[0]
752
+ const symbolPath = symbol.declarations?.[0]
752
753
  ?.getSourceFile()
753
754
  .fileName.replace(/\\/g, "/");
754
755
  if (!symbolPath)
@@ -826,7 +827,7 @@ class ReferenceType extends Type {
826
827
  this._target = target.id;
827
828
  }
828
829
  else {
829
- de.logger.warn(de.application.i18n.serialized_project_referenced_0_not_part_of_project(obj.target.toString()));
830
+ de.logger.warn(de.application.i18n.serialized_project_referenced_0_not_part_of_project(JSON.stringify(obj.target)));
830
831
  }
831
832
  });
832
833
  }
@@ -1092,7 +1093,6 @@ class UnionType extends Type {
1092
1093
  super();
1093
1094
  this.types = types;
1094
1095
  this.type = "union";
1095
- this.normalize();
1096
1096
  }
1097
1097
  getTypeString() {
1098
1098
  return this.types
@@ -1127,29 +1127,16 @@ class UnionType extends Type {
1127
1127
  };
1128
1128
  return map[context];
1129
1129
  }
1130
- normalize() {
1131
- let trueIndex = -1;
1132
- let falseIndex = -1;
1133
- for (let i = 0; i < this.types.length && (trueIndex === -1 || falseIndex === -1); i++) {
1134
- const t = this.types[i];
1135
- if (t instanceof LiteralType) {
1136
- if (t.value === true) {
1137
- trueIndex = i;
1138
- }
1139
- if (t.value === false) {
1140
- falseIndex = i;
1141
- }
1142
- }
1143
- }
1144
- if (trueIndex !== -1 && falseIndex !== -1) {
1145
- this.types.splice(Math.max(trueIndex, falseIndex), 1);
1146
- this.types.splice(Math.min(trueIndex, falseIndex), 1, new IntrinsicType("boolean"));
1130
+ fromObject(de, obj) {
1131
+ if (obj.elementSummaries) {
1132
+ this.elementSummaries = obj.elementSummaries.map((parts) => comments_1.Comment.deserializeDisplayParts(de, parts));
1147
1133
  }
1148
1134
  }
1149
1135
  toObject(serializer) {
1150
1136
  return {
1151
1137
  type: this.type,
1152
1138
  types: this.types.map((t) => serializer.toObject(t)),
1139
+ elementSummaries: this.elementSummaries?.map((parts) => comments_1.Comment.serializeDisplayParts(serializer, parts)),
1153
1140
  };
1154
1141
  }
1155
1142
  }
@@ -28,6 +28,8 @@ export declare abstract class ContextAwareRendererComponent extends RendererComp
28
28
  * Regular expression to test if a string looks like an external url.
29
29
  */
30
30
  protected urlPrefix: RegExp;
31
+ private get hostedBaseUrl();
32
+ private accessor useHostedBaseUrlForAbsoluteLinks;
31
33
  /**
32
34
  * Create a new ContextAwareRendererPlugin instance.
33
35
  *
@@ -15,6 +15,40 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
19
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
20
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
21
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
22
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
23
+ var _, done = false;
24
+ for (var i = decorators.length - 1; i >= 0; i--) {
25
+ var context = {};
26
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
27
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
28
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
29
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
30
+ if (kind === "accessor") {
31
+ if (result === void 0) continue;
32
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
33
+ if (_ = accept(result.get)) descriptor.get = _;
34
+ if (_ = accept(result.set)) descriptor.set = _;
35
+ if (_ = accept(result.init)) initializers.unshift(_);
36
+ }
37
+ else if (_ = accept(result)) {
38
+ if (kind === "field") initializers.unshift(_);
39
+ else descriptor[key] = _;
40
+ }
41
+ }
42
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
43
+ done = true;
44
+ };
45
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
46
+ var useValue = arguments.length > 2;
47
+ for (var i = 0; i < initializers.length; i++) {
48
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
49
+ }
50
+ return useValue ? value : void 0;
51
+ };
18
52
  var __importStar = (this && this.__importStar) || function (mod) {
19
53
  if (mod && mod.__esModule) return mod;
20
54
  var result = {};
@@ -22,82 +56,121 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
56
  __setModuleDefault(result, mod);
23
57
  return result;
24
58
  };
59
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
60
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
61
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
62
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
63
+ };
64
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
65
+ if (kind === "m") throw new TypeError("Private method is not writable");
66
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
67
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
68
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
69
+ };
25
70
  Object.defineProperty(exports, "__esModule", { value: true });
26
71
  exports.ContextAwareRendererComponent = exports.RendererComponent = exports.Component = void 0;
27
72
  const Path = __importStar(require("path"));
28
73
  const component_1 = require("../utils/component");
29
74
  Object.defineProperty(exports, "Component", { enumerable: true, get: function () { return component_1.Component; } });
30
75
  const events_1 = require("./events");
76
+ const utils_1 = require("../utils");
31
77
  class RendererComponent extends component_1.AbstractComponent {
32
78
  }
33
79
  exports.RendererComponent = RendererComponent;
34
80
  /**
35
81
  * A plugin for the renderer that reads the current render context.
36
82
  */
37
- class ContextAwareRendererComponent extends RendererComponent {
38
- constructor() {
39
- super(...arguments);
40
- /**
41
- * The url of the document that is being currently generated.
42
- * Set when a page begins rendering.
43
- *
44
- * Defaulted to '.' so that tests don't have to set up events.
45
- */
46
- this.location = ".";
47
- /**
48
- * Regular expression to test if a string looks like an external url.
49
- */
50
- this.urlPrefix = /^(http|ftp)s?:\/\//;
51
- this.absoluteToRelativePathMap = new Map();
52
- }
53
- /**
54
- * Create a new ContextAwareRendererPlugin instance.
55
- *
56
- * @param renderer The renderer this plugin should be attached to.
57
- */
58
- initialize() {
59
- this.listenTo(this.owner, {
60
- [events_1.RendererEvent.BEGIN]: this.onBeginRenderer,
61
- [events_1.PageEvent.BEGIN]: this.onBeginPage,
62
- [events_1.RendererEvent.END]: () => this.absoluteToRelativePathMap.clear(),
63
- });
64
- }
65
- /**
66
- * Transform the given absolute path into a relative path.
67
- *
68
- * @param absolute The absolute path to transform.
69
- * @returns A path relative to the document currently processed.
70
- */
71
- getRelativeUrl(absolute) {
72
- if (this.urlPrefix.test(absolute)) {
73
- return absolute;
74
- }
75
- else {
76
- const key = `${this.location}:${absolute}`;
77
- let path = this.absoluteToRelativePathMap.get(key);
78
- if (path)
79
- return path;
80
- path = Path.posix.relative(this.location, absolute) || ".";
81
- this.absoluteToRelativePathMap.set(key, path);
82
- return path;
83
- }
84
- }
85
- /**
86
- * Triggered before the renderer starts rendering a project.
87
- *
88
- * @param event An event object describing the current render operation.
89
- */
90
- onBeginRenderer(event) {
91
- this.project = event.project;
92
- }
93
- /**
94
- * Triggered before a document will be rendered.
95
- *
96
- * @param page An event object describing the current render operation.
97
- */
98
- onBeginPage(page) {
99
- this.location = Path.posix.dirname(page.url);
100
- this.page = page;
101
- }
102
- }
83
+ let ContextAwareRendererComponent = (() => {
84
+ var _a, _ContextAwareRendererComponent_useHostedBaseUrlForAbsoluteLinks_accessor_storage;
85
+ let _classSuper = RendererComponent;
86
+ let _useHostedBaseUrlForAbsoluteLinks_decorators;
87
+ let _useHostedBaseUrlForAbsoluteLinks_initializers = [];
88
+ let _useHostedBaseUrlForAbsoluteLinks_extraInitializers = [];
89
+ return _a = class ContextAwareRendererComponent extends _classSuper {
90
+ constructor() {
91
+ super(...arguments);
92
+ /**
93
+ * The url of the document that is being currently generated.
94
+ * Set when a page begins rendering.
95
+ *
96
+ * Defaulted to '.' so that tests don't have to set up events.
97
+ */
98
+ this.location = ".";
99
+ /**
100
+ * Regular expression to test if a string looks like an external url.
101
+ */
102
+ this.urlPrefix = /^(http|ftp)s?:\/\//;
103
+ _ContextAwareRendererComponent_useHostedBaseUrlForAbsoluteLinks_accessor_storage.set(this, __runInitializers(this, _useHostedBaseUrlForAbsoluteLinks_initializers, void 0));
104
+ this.absoluteToRelativePathMap = (__runInitializers(this, _useHostedBaseUrlForAbsoluteLinks_extraInitializers), new Map());
105
+ }
106
+ get hostedBaseUrl() {
107
+ const url = this.application.options.getValue("hostedBaseUrl");
108
+ return !url || url.endsWith("/") ? url : url + "/";
109
+ }
110
+ get useHostedBaseUrlForAbsoluteLinks() { return __classPrivateFieldGet(this, _ContextAwareRendererComponent_useHostedBaseUrlForAbsoluteLinks_accessor_storage, "f"); }
111
+ set useHostedBaseUrlForAbsoluteLinks(value) { __classPrivateFieldSet(this, _ContextAwareRendererComponent_useHostedBaseUrlForAbsoluteLinks_accessor_storage, value, "f"); }
112
+ /**
113
+ * Create a new ContextAwareRendererPlugin instance.
114
+ *
115
+ * @param renderer The renderer this plugin should be attached to.
116
+ */
117
+ initialize() {
118
+ this.listenTo(this.owner, {
119
+ [events_1.RendererEvent.BEGIN]: this.onBeginRenderer,
120
+ [events_1.PageEvent.BEGIN]: this.onBeginPage,
121
+ [events_1.RendererEvent.END]: () => this.absoluteToRelativePathMap.clear(),
122
+ });
123
+ }
124
+ /**
125
+ * Transform the given absolute path into a relative path.
126
+ *
127
+ * @param absolute The absolute path to transform.
128
+ * @returns A path relative to the document currently processed.
129
+ */
130
+ getRelativeUrl(absolute) {
131
+ if (this.urlPrefix.test(absolute)) {
132
+ return absolute;
133
+ }
134
+ else {
135
+ const key = `${this.location}:${absolute}`;
136
+ let path = this.absoluteToRelativePathMap.get(key);
137
+ if (path)
138
+ return path;
139
+ if (this.useHostedBaseUrlForAbsoluteLinks) {
140
+ path = new URL(absolute, this.hostedBaseUrl).toString();
141
+ }
142
+ else {
143
+ path = Path.posix.relative(this.location, absolute) || ".";
144
+ }
145
+ this.absoluteToRelativePathMap.set(key, path);
146
+ return path;
147
+ }
148
+ }
149
+ /**
150
+ * Triggered before the renderer starts rendering a project.
151
+ *
152
+ * @param event An event object describing the current render operation.
153
+ */
154
+ onBeginRenderer(event) {
155
+ this.project = event.project;
156
+ }
157
+ /**
158
+ * Triggered before a document will be rendered.
159
+ *
160
+ * @param page An event object describing the current render operation.
161
+ */
162
+ onBeginPage(page) {
163
+ this.location = Path.posix.dirname(page.url);
164
+ this.page = page;
165
+ }
166
+ },
167
+ _ContextAwareRendererComponent_useHostedBaseUrlForAbsoluteLinks_accessor_storage = new WeakMap(),
168
+ (() => {
169
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
170
+ _useHostedBaseUrlForAbsoluteLinks_decorators = [(0, utils_1.Option)("useHostedBaseUrlForAbsoluteLinks")];
171
+ __esDecorate(_a, null, _useHostedBaseUrlForAbsoluteLinks_decorators, { kind: "accessor", name: "useHostedBaseUrlForAbsoluteLinks", static: false, private: false, access: { has: obj => "useHostedBaseUrlForAbsoluteLinks" in obj, get: obj => obj.useHostedBaseUrlForAbsoluteLinks, set: (obj, value) => { obj.useHostedBaseUrlForAbsoluteLinks = value; } }, metadata: _metadata }, _useHostedBaseUrlForAbsoluteLinks_initializers, _useHostedBaseUrlForAbsoluteLinks_extraInitializers);
172
+ if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
173
+ })(),
174
+ _a;
175
+ })();
103
176
  exports.ContextAwareRendererComponent = ContextAwareRendererComponent;
@@ -6,4 +6,8 @@ export declare class UrlMapping<Model = any> {
6
6
  template: RenderTemplate<PageEvent<Model>>;
7
7
  constructor(url: string, model: Model, template: RenderTemplate<PageEvent<Model>>);
8
8
  }
9
+ /**
10
+ * @param data the reflection to render
11
+ * @returns either a string to be written to the file, or an element to be serialized and then written.
12
+ */
9
13
  export type RenderTemplate<T> = (data: T) => JSX.Element | string;
@@ -107,6 +107,11 @@ let AssetsPlugin = (() => {
107
107
  const dest = (0, path_1.join)(event.outputDirectory, "assets");
108
108
  (0, fs_1.copySync)(src, dest);
109
109
  (0, fs_1.writeFileSync)((0, path_1.join)(dest, "highlight.css"), (0, highlighter_1.getStyles)());
110
+ const media = (0, path_1.join)(event.outputDirectory, "media");
111
+ const toCopy = event.project.files.getNameToAbsoluteMap();
112
+ for (const [fileName, absolute] of toCopy.entries()) {
113
+ (0, fs_1.copySync)(absolute, (0, path_1.join)(media, fileName));
114
+ }
110
115
  }
111
116
  }
112
117
  constructor() {
@@ -121,7 +121,7 @@ let JavascriptIndexPlugin = (() => {
121
121
  if (!(this.owner.theme instanceof DefaultTheme_1.DefaultTheme)) {
122
122
  return;
123
123
  }
124
- if (event.isDefaultPrevented) {
124
+ if (event.isDefaultPrevented()) {
125
125
  return;
126
126
  }
127
127
  this.owner.preRenderAsyncJobs.push((event) => this.buildSearchIndex(event));
@@ -138,7 +138,7 @@ let JavascriptIndexPlugin = (() => {
138
138
  });
139
139
  const indexEvent = new events_1.IndexEvent(events_1.IndexEvent.PREPARE_INDEX, initialSearchResults);
140
140
  this.owner.trigger(indexEvent);
141
- if (indexEvent.isDefaultPrevented) {
141
+ if (indexEvent.isDefaultPrevented()) {
142
142
  return;
143
143
  }
144
144
  const builder = new lunr_1.Builder();
@@ -84,7 +84,7 @@ let NavigationPlugin = (() => {
84
84
  if (!(this.owner.theme instanceof DefaultTheme_1.DefaultTheme)) {
85
85
  return;
86
86
  }
87
- if (event.isDefaultPrevented) {
87
+ if (event.isDefaultPrevented()) {
88
88
  return;
89
89
  }
90
90
  this.owner.preRenderAsyncJobs.push((event) => this.buildNavigationIndex(event));
@@ -67,7 +67,7 @@ let SitemapPlugin = (() => {
67
67
  if (!(this.owner.theme instanceof DefaultTheme_1.DefaultTheme)) {
68
68
  return;
69
69
  }
70
- if (event.isDefaultPrevented || !this.hostedBaseUrl) {
70
+ if (event.isDefaultPrevented() || !this.hostedBaseUrl) {
71
71
  return;
72
72
  }
73
73
  this.owner.hooks.on("head.begin", (context) => {
@@ -5,7 +5,7 @@ import type { ProjectReflection } from "../models/reflections/project";
5
5
  import { RendererComponent } from "./components";
6
6
  import { ChildableComponent } from "../utils/component";
7
7
  import { EventHooks } from "../utils";
8
- import type { BundledTheme as ShikiTheme } from "shiki" with { "resolution-mode": "import" };
8
+ import { type Comment, Reflection } from "../models";
9
9
  import type { JsxElement } from "../utils/jsx.elements";
10
10
  import type { DefaultThemeRenderContext } from "./themes/default/DefaultThemeRenderContext";
11
11
  /**
@@ -61,6 +61,21 @@ export interface RendererHooks {
61
61
  * Applied immediately after the "Generated by TypeDoc" link in the footer.
62
62
  */
63
63
  "footer.end": [DefaultThemeRenderContext];
64
+ /**
65
+ * Applied immediately before a comment's tags are rendered.
66
+ *
67
+ * This may be used to set {@link CommentTag.skipRendering} on any tags which
68
+ * should not be rendered.
69
+ */
70
+ "comment.beforeTags": [DefaultThemeRenderContext, Comment, Reflection];
71
+ /**
72
+ * Applied immediately after a comment's tags are rendered.
73
+ *
74
+ * This may be used to set {@link CommentTag.skipRendering} on any tags which
75
+ * should not be rendered as this hook is called before the tags are actually
76
+ * rendered.
77
+ */
78
+ "comment.afterTags": [DefaultThemeRenderContext, Comment, Reflection];
64
79
  }
65
80
  /**
66
81
  * The renderer processes a {@link ProjectReflection} using a {@link Theme} instance and writes
@@ -142,21 +157,16 @@ export declare class Renderer extends ChildableComponent<Application, RendererCo
142
157
  */
143
158
  hooks: EventHooks<RendererHooks, JsxElement>;
144
159
  /** @internal */
145
- accessor themeName: string;
146
- /** @internal */
147
- accessor cleanOutputDir: boolean;
148
- /** @internal */
149
- accessor cname: string;
150
- /** @internal */
151
- accessor githubPages: boolean;
160
+ private accessor themeName;
161
+ private accessor cleanOutputDir;
162
+ private accessor cname;
163
+ private accessor githubPages;
152
164
  /** @internal */
153
165
  accessor cacheBust: boolean;
154
- /** @internal */
155
- accessor lightTheme: ShikiTheme;
156
- /** @internal */
157
- accessor darkTheme: ShikiTheme;
158
- /** @internal */
159
- accessor pretty: boolean;
166
+ private accessor lightTheme;
167
+ private accessor darkTheme;
168
+ private accessor highlightLanguages;
169
+ private accessor pretty;
160
170
  renderStartTime: number;
161
171
  /**
162
172
  * Define a new theme that can be used to render output.
@@ -128,7 +128,7 @@ const jsx_1 = require("../utils/jsx");
128
128
  * @document ../../../internal-docs/custom-themes.md
129
129
  */
130
130
  let Renderer = (() => {
131
- var _Renderer_themeName_accessor_storage, _Renderer_cleanOutputDir_accessor_storage, _Renderer_cname_accessor_storage, _Renderer_githubPages_accessor_storage, _Renderer_cacheBust_accessor_storage, _Renderer_lightTheme_accessor_storage, _Renderer_darkTheme_accessor_storage, _Renderer_pretty_accessor_storage;
131
+ var _Renderer_themeName_accessor_storage, _Renderer_cleanOutputDir_accessor_storage, _Renderer_cname_accessor_storage, _Renderer_githubPages_accessor_storage, _Renderer_cacheBust_accessor_storage, _Renderer_lightTheme_accessor_storage, _Renderer_darkTheme_accessor_storage, _Renderer_highlightLanguages_accessor_storage, _Renderer_pretty_accessor_storage;
132
132
  let _classDecorators = [(0, component_1.Component)({ name: "renderer", internal: true, childClass: components_1.RendererComponent })];
133
133
  let _classDescriptor;
134
134
  let _classExtraInitializers = [];
@@ -155,6 +155,9 @@ let Renderer = (() => {
155
155
  let _darkTheme_decorators;
156
156
  let _darkTheme_initializers = [];
157
157
  let _darkTheme_extraInitializers = [];
158
+ let _highlightLanguages_decorators;
159
+ let _highlightLanguages_initializers = [];
160
+ let _highlightLanguages_extraInitializers = [];
158
161
  let _pretty_decorators;
159
162
  let _pretty_initializers = [];
160
163
  let _pretty_extraInitializers = [];
@@ -200,31 +203,28 @@ let Renderer = (() => {
200
203
  _Renderer_cacheBust_accessor_storage.set(this, (__runInitializers(this, _githubPages_extraInitializers), __runInitializers(this, _cacheBust_initializers, void 0)));
201
204
  _Renderer_lightTheme_accessor_storage.set(this, (__runInitializers(this, _cacheBust_extraInitializers), __runInitializers(this, _lightTheme_initializers, void 0)));
202
205
  _Renderer_darkTheme_accessor_storage.set(this, (__runInitializers(this, _lightTheme_extraInitializers), __runInitializers(this, _darkTheme_initializers, void 0)));
203
- _Renderer_pretty_accessor_storage.set(this, (__runInitializers(this, _darkTheme_extraInitializers), __runInitializers(this, _pretty_initializers, void 0)));
206
+ _Renderer_highlightLanguages_accessor_storage.set(this, (__runInitializers(this, _darkTheme_extraInitializers), __runInitializers(this, _highlightLanguages_initializers, void 0)));
207
+ _Renderer_pretty_accessor_storage.set(this, (__runInitializers(this, _highlightLanguages_extraInitializers), __runInitializers(this, _pretty_initializers, void 0)));
204
208
  this.renderStartTime = (__runInitializers(this, _pretty_extraInitializers), -1);
205
209
  }
206
210
  /** @internal */
207
211
  get themeName() { return __classPrivateFieldGet(this, _Renderer_themeName_accessor_storage, "f"); }
208
212
  set themeName(value) { __classPrivateFieldSet(this, _Renderer_themeName_accessor_storage, value, "f"); }
209
- /** @internal */
210
213
  get cleanOutputDir() { return __classPrivateFieldGet(this, _Renderer_cleanOutputDir_accessor_storage, "f"); }
211
214
  set cleanOutputDir(value) { __classPrivateFieldSet(this, _Renderer_cleanOutputDir_accessor_storage, value, "f"); }
212
- /** @internal */
213
215
  get cname() { return __classPrivateFieldGet(this, _Renderer_cname_accessor_storage, "f"); }
214
216
  set cname(value) { __classPrivateFieldSet(this, _Renderer_cname_accessor_storage, value, "f"); }
215
- /** @internal */
216
217
  get githubPages() { return __classPrivateFieldGet(this, _Renderer_githubPages_accessor_storage, "f"); }
217
218
  set githubPages(value) { __classPrivateFieldSet(this, _Renderer_githubPages_accessor_storage, value, "f"); }
218
219
  /** @internal */
219
220
  get cacheBust() { return __classPrivateFieldGet(this, _Renderer_cacheBust_accessor_storage, "f"); }
220
221
  set cacheBust(value) { __classPrivateFieldSet(this, _Renderer_cacheBust_accessor_storage, value, "f"); }
221
- /** @internal */
222
222
  get lightTheme() { return __classPrivateFieldGet(this, _Renderer_lightTheme_accessor_storage, "f"); }
223
223
  set lightTheme(value) { __classPrivateFieldSet(this, _Renderer_lightTheme_accessor_storage, value, "f"); }
224
- /** @internal */
225
224
  get darkTheme() { return __classPrivateFieldGet(this, _Renderer_darkTheme_accessor_storage, "f"); }
226
225
  set darkTheme(value) { __classPrivateFieldSet(this, _Renderer_darkTheme_accessor_storage, value, "f"); }
227
- /** @internal */
226
+ get highlightLanguages() { return __classPrivateFieldGet(this, _Renderer_highlightLanguages_accessor_storage, "f"); }
227
+ set highlightLanguages(value) { __classPrivateFieldSet(this, _Renderer_highlightLanguages_accessor_storage, value, "f"); }
228
228
  get pretty() { return __classPrivateFieldGet(this, _Renderer_pretty_accessor_storage, "f"); }
229
229
  set pretty(value) { __classPrivateFieldSet(this, _Renderer_pretty_accessor_storage, value, "f"); }
230
230
  /**
@@ -258,7 +258,7 @@ let Renderer = (() => {
258
258
  output.urls = this.theme.getUrls(project);
259
259
  this.trigger(output);
260
260
  await this.runPreRenderJobs(output);
261
- if (!output.isDefaultPrevented) {
261
+ if (!output.isDefaultPrevented()) {
262
262
  this.application.logger.verbose(`There are ${output.urls.length} pages to write.`);
263
263
  output.urls.forEach((mapping) => {
264
264
  this.renderDocument(...output.createPageEvent(mapping));
@@ -279,7 +279,9 @@ let Renderer = (() => {
279
279
  this.application.logger.verbose(`Pre render async jobs took ${Date.now() - start}ms`);
280
280
  }
281
281
  async loadHighlighter() {
282
- await (0, highlighter_1.loadHighlighter)(this.lightTheme, this.darkTheme);
282
+ await (0, highlighter_1.loadHighlighter)(this.lightTheme, this.darkTheme,
283
+ // Checked in option validation
284
+ this.highlightLanguages);
283
285
  }
284
286
  /**
285
287
  * Render a single page.
@@ -290,7 +292,7 @@ let Renderer = (() => {
290
292
  renderDocument(template, page) {
291
293
  const momento = this.hooks.saveMomento();
292
294
  this.trigger(events_1.PageEvent.BEGIN, page);
293
- if (page.isDefaultPrevented) {
295
+ if (page.isDefaultPrevented()) {
294
296
  this.hooks.restoreMomento(momento);
295
297
  return false;
296
298
  }
@@ -302,7 +304,7 @@ let Renderer = (() => {
302
304
  }
303
305
  this.trigger(events_1.PageEvent.END, page);
304
306
  this.hooks.restoreMomento(momento);
305
- if (page.isDefaultPrevented) {
307
+ if (page.isDefaultPrevented()) {
306
308
  return false;
307
309
  }
308
310
  try {
@@ -385,6 +387,7 @@ let Renderer = (() => {
385
387
  _Renderer_cacheBust_accessor_storage = new WeakMap();
386
388
  _Renderer_lightTheme_accessor_storage = new WeakMap();
387
389
  _Renderer_darkTheme_accessor_storage = new WeakMap();
390
+ _Renderer_highlightLanguages_accessor_storage = new WeakMap();
388
391
  _Renderer_pretty_accessor_storage = new WeakMap();
389
392
  __setFunctionName(_classThis, "Renderer");
390
393
  (() => {
@@ -396,6 +399,7 @@ let Renderer = (() => {
396
399
  _cacheBust_decorators = [(0, utils_1.Option)("cacheBust")];
397
400
  _lightTheme_decorators = [(0, utils_1.Option)("lightHighlightTheme")];
398
401
  _darkTheme_decorators = [(0, utils_1.Option)("darkHighlightTheme")];
402
+ _highlightLanguages_decorators = [(0, utils_1.Option)("highlightLanguages")];
399
403
  _pretty_decorators = [(0, utils_1.Option)("pretty")];
400
404
  __esDecorate(_classThis, null, _themeName_decorators, { kind: "accessor", name: "themeName", static: false, private: false, access: { has: obj => "themeName" in obj, get: obj => obj.themeName, set: (obj, value) => { obj.themeName = value; } }, metadata: _metadata }, _themeName_initializers, _themeName_extraInitializers);
401
405
  __esDecorate(_classThis, null, _cleanOutputDir_decorators, { kind: "accessor", name: "cleanOutputDir", static: false, private: false, access: { has: obj => "cleanOutputDir" in obj, get: obj => obj.cleanOutputDir, set: (obj, value) => { obj.cleanOutputDir = value; } }, metadata: _metadata }, _cleanOutputDir_initializers, _cleanOutputDir_extraInitializers);
@@ -404,6 +408,7 @@ let Renderer = (() => {
404
408
  __esDecorate(_classThis, null, _cacheBust_decorators, { kind: "accessor", name: "cacheBust", static: false, private: false, access: { has: obj => "cacheBust" in obj, get: obj => obj.cacheBust, set: (obj, value) => { obj.cacheBust = value; } }, metadata: _metadata }, _cacheBust_initializers, _cacheBust_extraInitializers);
405
409
  __esDecorate(_classThis, null, _lightTheme_decorators, { kind: "accessor", name: "lightTheme", static: false, private: false, access: { has: obj => "lightTheme" in obj, get: obj => obj.lightTheme, set: (obj, value) => { obj.lightTheme = value; } }, metadata: _metadata }, _lightTheme_initializers, _lightTheme_extraInitializers);
406
410
  __esDecorate(_classThis, null, _darkTheme_decorators, { kind: "accessor", name: "darkTheme", static: false, private: false, access: { has: obj => "darkTheme" in obj, get: obj => obj.darkTheme, set: (obj, value) => { obj.darkTheme = value; } }, metadata: _metadata }, _darkTheme_initializers, _darkTheme_extraInitializers);
411
+ __esDecorate(_classThis, null, _highlightLanguages_decorators, { kind: "accessor", name: "highlightLanguages", static: false, private: false, access: { has: obj => "highlightLanguages" in obj, get: obj => obj.highlightLanguages, set: (obj, value) => { obj.highlightLanguages = value; } }, metadata: _metadata }, _highlightLanguages_initializers, _highlightLanguages_extraInitializers);
407
412
  __esDecorate(_classThis, null, _pretty_decorators, { kind: "accessor", name: "pretty", static: false, private: false, access: { has: obj => "pretty" in obj, get: obj => obj.pretty, set: (obj, value) => { obj.pretty = value; } }, metadata: _metadata }, _pretty_initializers, _pretty_extraInitializers);
408
413
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
409
414
  Renderer = _classThis = _classDescriptor.value;
@@ -1,4 +1,3 @@
1
- import type { Renderer } from "./renderer";
2
1
  import type { ProjectReflection } from "../models/reflections/project";
3
2
  import type { RenderTemplate, UrlMapping } from "./models/UrlMapping";
4
3
  import { RendererComponent } from "./components";
@@ -13,12 +12,6 @@ import type { Reflection } from "../models";
13
12
  * {@link Renderer} to control and manipulate the output process.
14
13
  */
15
14
  export declare abstract class Theme extends RendererComponent {
16
- /**
17
- * Create a new BaseTheme instance.
18
- *
19
- * @param renderer The renderer this theme is attached to.
20
- */
21
- constructor(renderer: Renderer);
22
15
  /**
23
16
  * Map the models of the given project to the desired output files.
24
17
  * It is assumed that with the project structure:
@@ -56,14 +56,6 @@ let Theme = (() => {
56
56
  let _classThis;
57
57
  let _classSuper = components_1.RendererComponent;
58
58
  var Theme = _classThis = class extends _classSuper {
59
- /**
60
- * Create a new BaseTheme instance.
61
- *
62
- * @param renderer The renderer this theme is attached to.
63
- */
64
- constructor(renderer) {
65
- super(renderer);
66
- }
67
59
  };
68
60
  __setFunctionName(_classThis, "Theme");
69
61
  (() => {
@@ -37,6 +37,7 @@ export declare class MarkedPlugin extends ContextAwareRendererComponent {
37
37
  * @returns The resulting html string.
38
38
  */
39
39
  parseMarkdown(input: string | readonly CommentDisplayPart[], page: PageEvent<any>, context: DefaultThemeRenderContext): string;
40
+ private displayPartsToMarkdown;
40
41
  /**
41
42
  * Triggered before the renderer starts rendering a project.
42
43
  *