typedoc 0.25.13 → 0.26.0-beta.0

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 (207) hide show
  1. package/dist/index.d.ts +3 -2
  2. package/dist/index.js +3 -2
  3. package/dist/lib/application.d.ts +15 -3
  4. package/dist/lib/application.js +65 -23
  5. package/dist/lib/cli.js +1 -1
  6. package/dist/lib/converter/comments/blockLexer.d.ts +1 -1
  7. package/dist/lib/converter/comments/blockLexer.js +1 -2
  8. package/dist/lib/converter/comments/declarationReference.js +8 -8
  9. package/dist/lib/converter/comments/declarationReferenceResolver.d.ts +1 -1
  10. package/dist/lib/converter/comments/declarationReferenceResolver.js +15 -14
  11. package/dist/lib/converter/comments/discovery.d.ts +3 -3
  12. package/dist/lib/converter/comments/discovery.js +21 -19
  13. package/dist/lib/converter/comments/index.d.ts +1 -1
  14. package/dist/lib/converter/comments/index.js +35 -16
  15. package/dist/lib/converter/comments/lineLexer.d.ts +1 -1
  16. package/dist/lib/converter/comments/lineLexer.js +1 -2
  17. package/dist/lib/converter/comments/linkResolver.d.ts +2 -2
  18. package/dist/lib/converter/comments/linkResolver.js +5 -3
  19. package/dist/lib/converter/comments/parser.d.ts +14 -3
  20. package/dist/lib/converter/comments/parser.js +144 -39
  21. package/dist/lib/converter/comments/rawLexer.d.ts +7 -1
  22. package/dist/lib/converter/comments/rawLexer.js +21 -70
  23. package/dist/lib/converter/comments/tagName.js +1 -2
  24. package/dist/lib/converter/context.d.ts +7 -2
  25. package/dist/lib/converter/context.js +7 -2
  26. package/dist/lib/converter/convert-expression.js +2 -3
  27. package/dist/lib/converter/converter.d.ts +8 -3
  28. package/dist/lib/converter/converter.js +16 -13
  29. package/dist/lib/converter/factories/index-signature.d.ts +1 -1
  30. package/dist/lib/converter/factories/index-signature.js +9 -12
  31. package/dist/lib/converter/factories/signature.d.ts +1 -1
  32. package/dist/lib/converter/factories/signature.js +11 -12
  33. package/dist/lib/converter/jsdoc.js +2 -3
  34. package/dist/lib/converter/plugins/CategoryPlugin.d.ts +3 -3
  35. package/dist/lib/converter/plugins/CategoryPlugin.js +22 -15
  36. package/dist/lib/converter/plugins/CommentPlugin.d.ts +1 -1
  37. package/dist/lib/converter/plugins/CommentPlugin.js +58 -67
  38. package/dist/lib/converter/plugins/GroupPlugin.d.ts +4 -4
  39. package/dist/lib/converter/plugins/GroupPlugin.js +52 -18
  40. package/dist/lib/converter/plugins/ImplementsPlugin.js +4 -3
  41. package/dist/lib/converter/plugins/InheritDocPlugin.d.ts +1 -1
  42. package/dist/lib/converter/plugins/InheritDocPlugin.js +5 -6
  43. package/dist/lib/converter/plugins/LinkResolverPlugin.d.ts +2 -2
  44. package/dist/lib/converter/plugins/PackagePlugin.d.ts +0 -2
  45. package/dist/lib/converter/plugins/PackagePlugin.js +8 -30
  46. package/dist/lib/converter/plugins/SourcePlugin.js +2 -2
  47. package/dist/lib/converter/symbols.js +31 -11
  48. package/dist/lib/converter/types.d.ts +1 -1
  49. package/dist/lib/converter/types.js +4 -5
  50. package/dist/lib/converter/utils/nodes.js +3 -4
  51. package/dist/lib/converter/utils/reflections.d.ts +1 -1
  52. package/dist/lib/converter/utils/reflections.js +1 -2
  53. package/dist/lib/converter/utils/repository.js +4 -4
  54. package/dist/lib/converter/utils/symbols.js +1 -2
  55. package/dist/lib/internationalization/index.d.ts +7 -0
  56. package/dist/lib/internationalization/index.js +11 -0
  57. package/dist/lib/internationalization/internationalization.d.ts +92 -0
  58. package/dist/lib/internationalization/internationalization.js +194 -0
  59. package/dist/lib/internationalization/locales/en.cjs +3 -0
  60. package/dist/lib/internationalization/locales/en.d.cts +2 -0
  61. package/dist/lib/internationalization/locales/test.cjs +8 -0
  62. package/dist/lib/internationalization/locales/test.d.cts +5 -0
  63. package/dist/lib/internationalization/translatable.d.ts +297 -0
  64. package/dist/lib/internationalization/translatable.js +322 -0
  65. package/dist/lib/models/ReflectionCategory.d.ts +2 -2
  66. package/dist/lib/models/ReflectionGroup.d.ts +2 -2
  67. package/dist/lib/models/comments/comment.d.ts +17 -3
  68. package/dist/lib/models/comments/comment.js +377 -298
  69. package/dist/lib/models/reflections/ReflectionSymbolId.js +2 -2
  70. package/dist/lib/models/reflections/abstract.d.ts +11 -8
  71. package/dist/lib/models/reflections/abstract.js +17 -11
  72. package/dist/lib/models/reflections/container.d.ts +25 -3
  73. package/dist/lib/models/reflections/container.js +64 -0
  74. package/dist/lib/models/reflections/declaration.d.ts +3 -15
  75. package/dist/lib/models/reflections/declaration.js +16 -21
  76. package/dist/lib/models/reflections/document.d.ts +27 -0
  77. package/dist/lib/models/reflections/document.js +43 -0
  78. package/dist/lib/models/reflections/index.d.ts +4 -3
  79. package/dist/lib/models/reflections/index.js +5 -4
  80. package/dist/lib/models/reflections/kind.d.ts +13 -1
  81. package/dist/lib/models/reflections/kind.js +12 -0
  82. package/dist/lib/models/reflections/parameter.d.ts +1 -1
  83. package/dist/lib/models/reflections/project.d.ts +2 -2
  84. package/dist/lib/models/reflections/project.js +8 -7
  85. package/dist/lib/models/reflections/signature.d.ts +2 -2
  86. package/dist/lib/models/reflections/type-parameter.d.ts +1 -1
  87. package/dist/lib/models/reflections/utils.js +1 -2
  88. package/dist/lib/models/reflections/variant.d.ts +2 -0
  89. package/dist/lib/models/types.d.ts +4 -4
  90. package/dist/lib/models/types.js +3 -3
  91. package/dist/lib/output/events.d.ts +5 -5
  92. package/dist/lib/output/events.js +2 -1
  93. package/dist/lib/output/index.d.ts +1 -1
  94. package/dist/lib/output/index.js +2 -1
  95. package/dist/lib/output/plugins/AssetsPlugin.js +1 -1
  96. package/dist/lib/output/plugins/JavascriptIndexPlugin.d.ts +3 -1
  97. package/dist/lib/output/plugins/JavascriptIndexPlugin.js +28 -8
  98. package/dist/lib/output/plugins/SitemapPlugin.d.ts +1 -1
  99. package/dist/lib/output/plugins/SitemapPlugin.js +24 -13
  100. package/dist/lib/output/renderer.d.ts +1 -1
  101. package/dist/lib/output/renderer.js +5 -7
  102. package/dist/lib/output/themes/MarkedPlugin.d.ts +13 -24
  103. package/dist/lib/output/themes/MarkedPlugin.js +75 -160
  104. package/dist/lib/output/themes/default/DefaultTheme.d.ts +16 -4
  105. package/dist/lib/output/themes/default/DefaultTheme.js +62 -16
  106. package/dist/lib/output/themes/default/DefaultThemeRenderContext.d.ts +44 -44
  107. package/dist/lib/output/themes/default/DefaultThemeRenderContext.js +10 -10
  108. package/dist/lib/output/themes/default/layouts/default.js +1 -1
  109. package/dist/lib/output/themes/default/partials/analytics.js +1 -2
  110. package/dist/lib/output/themes/default/partials/anchor-icon.js +2 -3
  111. package/dist/lib/output/themes/default/partials/comment.d.ts +1 -1
  112. package/dist/lib/output/themes/default/partials/comment.js +3 -4
  113. package/dist/lib/output/themes/default/partials/footer.d.ts +1 -1
  114. package/dist/lib/output/themes/default/partials/footer.js +19 -5
  115. package/dist/lib/output/themes/default/partials/header.d.ts +1 -1
  116. package/dist/lib/output/themes/default/partials/header.js +4 -3
  117. package/dist/lib/output/themes/default/partials/hierarchy.js +3 -4
  118. package/dist/lib/output/themes/default/partials/icon.js +7 -2
  119. package/dist/lib/output/themes/default/partials/index.js +4 -4
  120. package/dist/lib/output/themes/default/partials/member.d.ts +2 -2
  121. package/dist/lib/output/themes/default/partials/member.declaration.js +2 -3
  122. package/dist/lib/output/themes/default/partials/member.js +13 -2
  123. package/dist/lib/output/themes/default/partials/member.reference.d.ts +1 -1
  124. package/dist/lib/output/themes/default/partials/member.reference.js +9 -6
  125. package/dist/lib/output/themes/default/partials/member.signature.body.d.ts +1 -1
  126. package/dist/lib/output/themes/default/partials/member.signature.body.js +4 -4
  127. package/dist/lib/output/themes/default/partials/member.signature.title.d.ts +1 -1
  128. package/dist/lib/output/themes/default/partials/member.signature.title.js +1 -2
  129. package/dist/lib/output/themes/default/partials/member.sources.js +12 -6
  130. package/dist/lib/output/themes/default/partials/members.d.ts +1 -1
  131. package/dist/lib/output/themes/default/partials/members.group.js +1 -2
  132. package/dist/lib/output/themes/default/partials/members.js +1 -2
  133. package/dist/lib/output/themes/default/partials/navigation.d.ts +1 -1
  134. package/dist/lib/output/themes/default/partials/navigation.js +18 -15
  135. package/dist/lib/output/themes/default/partials/parameter.d.ts +1 -1
  136. package/dist/lib/output/themes/default/partials/parameter.js +15 -15
  137. package/dist/lib/output/themes/default/partials/reflectionPreview.js +1 -2
  138. package/dist/lib/output/themes/default/partials/toolbar.js +4 -4
  139. package/dist/lib/output/themes/default/partials/type.d.ts +1 -1
  140. package/dist/lib/output/themes/default/partials/type.js +14 -14
  141. package/dist/lib/output/themes/default/partials/typeAndParent.d.ts +1 -1
  142. package/dist/lib/output/themes/default/partials/typeParameters.js +2 -3
  143. package/dist/lib/output/themes/default/templates/document.d.ts +5 -0
  144. package/dist/lib/output/themes/default/templates/document.js +7 -0
  145. package/dist/lib/output/themes/default/templates/hierarchy.js +1 -2
  146. package/dist/lib/output/themes/default/templates/reflection.d.ts +1 -1
  147. package/dist/lib/output/themes/default/templates/reflection.js +21 -19
  148. package/dist/lib/output/themes/lib.d.ts +1 -1
  149. package/dist/lib/output/themes/lib.js +12 -16
  150. package/dist/lib/serialization/deserializer.d.ts +3 -3
  151. package/dist/lib/serialization/deserializer.js +7 -5
  152. package/dist/lib/serialization/schema.d.ts +10 -3
  153. package/dist/lib/utils/array.js +9 -10
  154. package/dist/lib/utils/component.d.ts +1 -1
  155. package/dist/lib/utils/component.js +2 -2
  156. package/dist/lib/utils/entry-point.d.ts +11 -0
  157. package/dist/lib/utils/entry-point.js +51 -24
  158. package/dist/lib/utils/enum.js +6 -7
  159. package/dist/lib/utils/fs.js +15 -16
  160. package/dist/lib/utils/general.d.ts +4 -3
  161. package/dist/lib/utils/general.js +4 -5
  162. package/dist/lib/utils/highlighter.d.ts +4 -2
  163. package/dist/lib/utils/highlighter.js +41 -40
  164. package/dist/lib/utils/html.js +2 -3
  165. package/dist/lib/utils/index.d.ts +1 -1
  166. package/dist/lib/utils/index.js +1 -2
  167. package/dist/lib/utils/jsx.elements.d.ts +12 -0
  168. package/dist/lib/utils/jsx.js +4 -4
  169. package/dist/lib/utils/loggers.d.ts +13 -7
  170. package/dist/lib/utils/loggers.js +13 -10
  171. package/dist/lib/utils/map.d.ts +1 -1
  172. package/dist/lib/utils/map.js +1 -1
  173. package/dist/lib/utils/options/declaration.d.ts +40 -21
  174. package/dist/lib/utils/options/declaration.js +36 -36
  175. package/dist/lib/utils/options/help.d.ts +2 -1
  176. package/dist/lib/utils/options/help.js +10 -10
  177. package/dist/lib/utils/options/index.d.ts +1 -1
  178. package/dist/lib/utils/options/index.js +1 -2
  179. package/dist/lib/utils/options/options.d.ts +5 -34
  180. package/dist/lib/utils/options/options.js +10 -23
  181. package/dist/lib/utils/options/readers/arguments.js +3 -5
  182. package/dist/lib/utils/options/readers/package-json.js +2 -2
  183. package/dist/lib/utils/options/readers/tsconfig.js +8 -12
  184. package/dist/lib/utils/options/readers/typedoc.js +7 -6
  185. package/dist/lib/utils/options/sources/typedoc.js +187 -178
  186. package/dist/lib/utils/options/tsdoc-defaults.d.ts +1 -1
  187. package/dist/lib/utils/options/tsdoc-defaults.js +2 -0
  188. package/dist/lib/utils/package-manifest.d.ts +1 -1
  189. package/dist/lib/utils/package-manifest.js +9 -11
  190. package/dist/lib/utils/paths.js +4 -5
  191. package/dist/lib/utils/perf.js +3 -4
  192. package/dist/lib/utils/plugins.js +4 -5
  193. package/dist/lib/utils/reflections.d.ts +1 -1
  194. package/dist/lib/utils/reflections.js +2 -3
  195. package/dist/lib/utils/sort.d.ts +3 -2
  196. package/dist/lib/utils/sort.js +37 -6
  197. package/dist/lib/utils/tsconfig.js +3 -4
  198. package/dist/lib/utils/tsutils.js +2 -3
  199. package/dist/lib/utils/validation.js +4 -4
  200. package/dist/lib/validation/documentation.d.ts +1 -1
  201. package/dist/lib/validation/documentation.js +9 -4
  202. package/dist/lib/validation/exports.js +3 -5
  203. package/dist/lib/validation/links.js +2 -3
  204. package/package.json +12 -11
  205. package/static/main.js +4 -4
  206. package/static/style.css +18 -10
  207. package/tsdoc.json +9 -0
@@ -106,17 +106,18 @@ class ProjectReflection extends container_1.ContainerReflection {
106
106
  if (child !== reflection) {
107
107
  return true; // Continue iteration
108
108
  }
109
- if (property === abstract_1.TraverseProperty.Children) {
110
- (0, utils_1.removeIfPresent)(parent.children, reflection);
111
- if (!parent.children?.length) {
112
- delete parent.children;
113
- }
109
+ if (property === abstract_1.TraverseProperty.Children ||
110
+ property == abstract_1.TraverseProperty.Documents) {
111
+ parent.removeChild(reflection);
114
112
  }
115
113
  else if (property === abstract_1.TraverseProperty.GetSignature) {
116
114
  delete parent.getSignature;
117
115
  }
118
116
  else if (property === abstract_1.TraverseProperty.IndexSignature) {
119
- delete parent.indexSignature;
117
+ (0, utils_1.removeIfPresent)(parent.indexSignatures, reflection);
118
+ if (!parent.indexSignatures?.length) {
119
+ delete parent.indexSignatures;
120
+ }
120
121
  }
121
122
  else if (property === abstract_1.TraverseProperty.Parameters) {
122
123
  (0, utils_1.removeIfPresent)(reflection.parent.parameters, reflection);
@@ -292,7 +293,7 @@ class ProjectReflection extends container_1.ContainerReflection {
292
293
  this.registerSymbolId(refl, new ReflectionSymbolId_1.ReflectionSymbolId(sid));
293
294
  }
294
295
  else {
295
- de.logger.warn(`Serialized project contained a reflection with id ${id} but it was not present in deserialized project.`);
296
+ de.logger.warn(de.application.i18n.serialized_project_referenced_0_not_part_of_project(id.toString()));
296
297
  }
297
298
  }
298
299
  });
@@ -1,5 +1,5 @@
1
- import { SomeType, ReferenceType } from "../types";
2
- import { Reflection, TraverseCallback } from "./abstract";
1
+ import { type SomeType, type ReferenceType } from "../types";
2
+ import { Reflection, type TraverseCallback } from "./abstract";
3
3
  import type { ParameterReflection } from "./parameter";
4
4
  import type { TypeParameterReflection } from "./type-parameter";
5
5
  import type { DeclarationReflection } from "./declaration";
@@ -1,5 +1,5 @@
1
1
  import type { SomeType } from "../types";
2
- import { Reflection, TraverseCallback } from "./abstract";
2
+ import { Reflection, type TraverseCallback } from "./abstract";
3
3
  import type { DeclarationReflection } from "./declaration";
4
4
  import type { Serializer, JSONOutput, Deserializer } from "../../serialization";
5
5
  import type { SignatureReflection } from "./signature";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.splitUnquotedString = void 0;
3
+ exports.splitUnquotedString = splitUnquotedString;
4
4
  function splitUnquotedString(input, delimiter) {
5
5
  if (input.startsWith(delimiter)) {
6
6
  return splitUnquotedString(input.substring(delimiter.length), delimiter);
@@ -27,4 +27,3 @@ function splitUnquotedString(input, delimiter) {
27
27
  return input.split(delimiter);
28
28
  }
29
29
  }
30
- exports.splitUnquotedString = splitUnquotedString;
@@ -1,4 +1,5 @@
1
1
  import type { DeclarationReflection } from "./declaration";
2
+ import type { DocumentReflection } from "./document";
2
3
  import type { ParameterReflection } from "./parameter";
3
4
  import type { ProjectReflection } from "./project";
4
5
  import type { ReferenceReflection } from "./reference";
@@ -15,4 +16,5 @@ export interface ReflectionVariant {
15
16
  reference: ReferenceReflection;
16
17
  signature: SignatureReflection;
17
18
  typeParam: TypeParameterReflection;
19
+ document: DocumentReflection;
18
20
  }
@@ -228,11 +228,11 @@ export declare class MappedType extends Type {
228
228
  parameter: string;
229
229
  parameterType: SomeType;
230
230
  templateType: SomeType;
231
- readonlyModifier?: "+" | "-" | undefined;
232
- optionalModifier?: "+" | "-" | undefined;
231
+ readonlyModifier?: ("+" | "-") | undefined;
232
+ optionalModifier?: ("+" | "-") | undefined;
233
233
  nameType?: SomeType | undefined;
234
234
  readonly type = "mapped";
235
- constructor(parameter: string, parameterType: SomeType, templateType: SomeType, readonlyModifier?: "+" | "-" | undefined, optionalModifier?: "+" | "-" | undefined, nameType?: SomeType | undefined);
235
+ constructor(parameter: string, parameterType: SomeType, templateType: SomeType, readonlyModifier?: ("+" | "-") | undefined, optionalModifier?: ("+" | "-") | undefined, nameType?: SomeType | undefined);
236
236
  protected getTypeString(): string;
237
237
  needsParenthesis(): boolean;
238
238
  toObject(serializer: Serializer): JSONOutput.MappedType;
@@ -402,7 +402,7 @@ export declare class ReflectionType extends Type {
402
402
  declaration: DeclarationReflection;
403
403
  readonly type = "reflection";
404
404
  constructor(declaration: DeclarationReflection);
405
- protected getTypeString(): "Object" | "Function";
405
+ protected getTypeString(): "Function" | "Object";
406
406
  needsParenthesis(): boolean;
407
407
  toObject(serializer: Serializer): JSONOutput.ReflectionType;
408
408
  }
@@ -23,7 +23,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.UnknownType = exports.UnionType = exports.TypeOperatorType = exports.NamedTupleMember = exports.TupleType = exports.TemplateLiteralType = exports.RestType = exports.ReflectionType = exports.ReferenceType = exports.QueryType = exports.PredicateType = exports.OptionalType = exports.MappedType = exports.LiteralType = exports.IntrinsicType = exports.IntersectionType = exports.InferredType = exports.IndexedAccessType = exports.ConditionalType = exports.ArrayType = exports.TypeContext = exports.makeRecursiveVisitor = exports.Type = void 0;
26
+ exports.UnknownType = exports.UnionType = exports.TypeOperatorType = exports.NamedTupleMember = exports.TupleType = exports.TemplateLiteralType = exports.RestType = exports.ReflectionType = exports.ReferenceType = exports.QueryType = exports.PredicateType = exports.OptionalType = exports.MappedType = exports.LiteralType = exports.IntrinsicType = exports.IntersectionType = exports.InferredType = exports.IndexedAccessType = exports.ConditionalType = exports.ArrayType = exports.TypeContext = exports.Type = void 0;
27
+ exports.makeRecursiveVisitor = makeRecursiveVisitor;
27
28
  const ts = __importStar(require("typescript"));
28
29
  const tsutils_1 = require("../utils/tsutils");
29
30
  const ReflectionSymbolId_1 = require("./reflections/ReflectionSymbolId");
@@ -144,7 +145,6 @@ function makeRecursiveVisitor(visitor) {
144
145
  };
145
146
  return recursiveVisitor;
146
147
  }
147
- exports.makeRecursiveVisitor = makeRecursiveVisitor;
148
148
  /**
149
149
  * Enumeration that can be used when traversing types to track the location of recursion.
150
150
  * Used by TypeDoc internally to track when to output parenthesis when rendering.
@@ -826,7 +826,7 @@ class ReferenceType extends Type {
826
826
  this._target = target.id;
827
827
  }
828
828
  else {
829
- de.logger.warn(`Serialized project contained a reference to ${obj.target} (${this.qualifiedName}), which was not a part of the project.`);
829
+ de.logger.warn(de.application.i18n.serialized_project_referenced_0_not_part_of_project(obj.target.toString()));
830
830
  }
831
831
  });
832
832
  }
@@ -1,7 +1,7 @@
1
1
  import { Event } from "../utils/events";
2
2
  import type { ProjectReflection } from "../models/reflections/project";
3
3
  import type { RenderTemplate, UrlMapping } from "./models/UrlMapping";
4
- import type { DeclarationReflection, Reflection, ReflectionKind } from "../models";
4
+ import type { DeclarationReflection, DocumentReflection, Reflection, ReflectionKind } from "../models";
5
5
  /**
6
6
  * An event emitted by the {@link Renderer} class at the very beginning and
7
7
  * ending of the entire rendering process.
@@ -145,17 +145,17 @@ export declare class IndexEvent extends Event {
145
145
  * same index from {@link searchFields}. The {@link removeResult} helper
146
146
  * will do this for you.
147
147
  */
148
- searchResults: DeclarationReflection[];
148
+ searchResults: Array<DeclarationReflection | DocumentReflection>;
149
149
  /**
150
150
  * Additional search fields to be used when creating the search index.
151
- * `name` and `comment` may be specified to overwrite TypeDoc's search fields.
151
+ * `name`, `comment` and `document` may be specified to overwrite TypeDoc's search fields.
152
152
  *
153
153
  * Do not use `id` as a custom search field.
154
154
  */
155
155
  searchFields: Record<string, string>[];
156
156
  /**
157
157
  * Weights for the fields defined in `searchFields`. The default will weight
158
- * `name` as 10x more important than comment content.
158
+ * `name` as 10x more important than comment and document content.
159
159
  *
160
160
  * If a field added to {@link searchFields} is not added to this object, it
161
161
  * will **not** be searchable.
@@ -168,5 +168,5 @@ export declare class IndexEvent extends Event {
168
168
  * Remove a search result by index.
169
169
  */
170
170
  removeResult(index: number): void;
171
- constructor(name: string, searchResults: DeclarationReflection[]);
171
+ constructor(name: string, searchResults: Array<DeclarationReflection | DocumentReflection>);
172
172
  }
@@ -134,7 +134,7 @@ class IndexEvent extends events_1.Event {
134
134
  super(name);
135
135
  /**
136
136
  * Weights for the fields defined in `searchFields`. The default will weight
137
- * `name` as 10x more important than comment content.
137
+ * `name` as 10x more important than comment and document content.
138
138
  *
139
139
  * If a field added to {@link searchFields} is not added to this object, it
140
140
  * will **not** be searchable.
@@ -145,6 +145,7 @@ class IndexEvent extends events_1.Event {
145
145
  this.searchFieldWeights = {
146
146
  name: 10,
147
147
  comment: 1,
148
+ document: 1,
148
149
  };
149
150
  this.searchResults = searchResults;
150
151
  this.searchFields = Array.from({ length: this.searchResults.length }, () => ({}));
@@ -4,5 +4,5 @@ export type { RenderTemplate } from "./models/UrlMapping";
4
4
  export { Renderer } from "./renderer";
5
5
  export type { RendererHooks } from "./renderer";
6
6
  export { Theme } from "./theme";
7
- export { DefaultTheme, type NavigationElement, } from "./themes/default/DefaultTheme";
7
+ export { DefaultTheme, Slugger, type NavigationElement, } from "./themes/default/DefaultTheme";
8
8
  export { DefaultThemeRenderContext } from "./themes/default/DefaultThemeRenderContext";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DefaultThemeRenderContext = exports.DefaultTheme = exports.Theme = exports.Renderer = exports.UrlMapping = exports.IndexEvent = exports.MarkdownEvent = exports.RendererEvent = exports.PageEvent = void 0;
3
+ exports.DefaultThemeRenderContext = exports.Slugger = exports.DefaultTheme = exports.Theme = exports.Renderer = exports.UrlMapping = exports.IndexEvent = exports.MarkdownEvent = exports.RendererEvent = exports.PageEvent = void 0;
4
4
  var events_1 = require("./events");
5
5
  Object.defineProperty(exports, "PageEvent", { enumerable: true, get: function () { return events_1.PageEvent; } });
6
6
  Object.defineProperty(exports, "RendererEvent", { enumerable: true, get: function () { return events_1.RendererEvent; } });
@@ -14,5 +14,6 @@ var theme_1 = require("./theme");
14
14
  Object.defineProperty(exports, "Theme", { enumerable: true, get: function () { return theme_1.Theme; } });
15
15
  var DefaultTheme_1 = require("./themes/default/DefaultTheme");
16
16
  Object.defineProperty(exports, "DefaultTheme", { enumerable: true, get: function () { return DefaultTheme_1.DefaultTheme; } });
17
+ Object.defineProperty(exports, "Slugger", { enumerable: true, get: function () { return DefaultTheme_1.Slugger; } });
17
18
  var DefaultThemeRenderContext_1 = require("./themes/default/DefaultThemeRenderContext");
18
19
  Object.defineProperty(exports, "DefaultThemeRenderContext", { enumerable: true, get: function () { return DefaultThemeRenderContext_1.DefaultThemeRenderContext; } });
@@ -89,7 +89,7 @@ let AssetsPlugin = (() => {
89
89
  (0, fs_1.copySync)(this.customCss, (0, path_1.join)(dest, "custom.css"));
90
90
  }
91
91
  else {
92
- this.application.logger.error(`Custom CSS file at ${this.customCss} does not exist.`);
92
+ this.application.logger.error(this.application.i18n.custom_css_file_0_does_not_exist(this.customCss));
93
93
  event.preventDefault();
94
94
  }
95
95
  }
@@ -5,7 +5,8 @@ import { RendererComponent } from "../components";
5
5
  * The resulting javascript file can be used to build a simple search function.
6
6
  */
7
7
  export declare class JavascriptIndexPlugin extends RendererComponent {
8
- accessor searchComments: boolean;
8
+ private accessor searchComments;
9
+ private accessor searchDocuments;
9
10
  /**
10
11
  * Create a new JavascriptIndexPlugin instance.
11
12
  */
@@ -18,4 +19,5 @@ export declare class JavascriptIndexPlugin extends RendererComponent {
18
19
  private onRendererBegin;
19
20
  private buildSearchIndex;
20
21
  private getCommentSearchText;
22
+ private getDocumentSearchText;
21
23
  }
@@ -89,7 +89,7 @@ const gzipP = (0, util_1.promisify)(zlib_1.gzip);
89
89
  * The resulting javascript file can be used to build a simple search function.
90
90
  */
91
91
  let JavascriptIndexPlugin = (() => {
92
- var _JavascriptIndexPlugin_searchComments_accessor_storage;
92
+ var _JavascriptIndexPlugin_searchComments_accessor_storage, _JavascriptIndexPlugin_searchDocuments_accessor_storage;
93
93
  let _classDecorators = [(0, components_1.Component)({ name: "javascript-index" })];
94
94
  let _classDescriptor;
95
95
  let _classExtraInitializers = [];
@@ -98,9 +98,14 @@ let JavascriptIndexPlugin = (() => {
98
98
  let _searchComments_decorators;
99
99
  let _searchComments_initializers = [];
100
100
  let _searchComments_extraInitializers = [];
101
+ let _searchDocuments_decorators;
102
+ let _searchDocuments_initializers = [];
103
+ let _searchDocuments_extraInitializers = [];
101
104
  var JavascriptIndexPlugin = _classThis = class extends _classSuper {
102
105
  get searchComments() { return __classPrivateFieldGet(this, _JavascriptIndexPlugin_searchComments_accessor_storage, "f"); }
103
106
  set searchComments(value) { __classPrivateFieldSet(this, _JavascriptIndexPlugin_searchComments_accessor_storage, value, "f"); }
107
+ get searchDocuments() { return __classPrivateFieldGet(this, _JavascriptIndexPlugin_searchDocuments_accessor_storage, "f"); }
108
+ set searchDocuments(value) { __classPrivateFieldSet(this, _JavascriptIndexPlugin_searchDocuments_accessor_storage, value, "f"); }
104
109
  /**
105
110
  * Create a new JavascriptIndexPlugin instance.
106
111
  */
@@ -125,7 +130,8 @@ let JavascriptIndexPlugin = (() => {
125
130
  const theme = this.owner.theme;
126
131
  const rows = [];
127
132
  const initialSearchResults = Object.values(event.project.reflections).filter((refl) => {
128
- return (refl instanceof models_1.DeclarationReflection &&
133
+ return ((refl instanceof models_1.DeclarationReflection ||
134
+ refl instanceof models_1.DocumentReflection) &&
129
135
  refl.url &&
130
136
  refl.name &&
131
137
  !refl.flags.isExternal);
@@ -165,6 +171,7 @@ let JavascriptIndexPlugin = (() => {
165
171
  builder.add({
166
172
  name: reflection.name,
167
173
  comment: this.getCommentSearchText(reflection),
174
+ document: this.getDocumentSearchText(reflection),
168
175
  ...indexEvent.searchFields[rows.length],
169
176
  id: rows.length,
170
177
  }, { boost });
@@ -185,11 +192,13 @@ let JavascriptIndexPlugin = (() => {
185
192
  const comments = [];
186
193
  if (reflection.comment)
187
194
  comments.push(reflection.comment);
188
- reflection.signatures?.forEach((s) => s.comment && comments.push(s.comment));
189
- reflection.getSignature?.comment &&
190
- comments.push(reflection.getSignature.comment);
191
- reflection.setSignature?.comment &&
192
- comments.push(reflection.setSignature.comment);
195
+ if (reflection.isDeclaration()) {
196
+ reflection.signatures?.forEach((s) => s.comment && comments.push(s.comment));
197
+ reflection.getSignature?.comment &&
198
+ comments.push(reflection.getSignature.comment);
199
+ reflection.setSignature?.comment &&
200
+ comments.push(reflection.setSignature.comment);
201
+ }
193
202
  if (!comments.length) {
194
203
  return;
195
204
  }
@@ -200,18 +209,29 @@ let JavascriptIndexPlugin = (() => {
200
209
  .map((part) => part.text)
201
210
  .join("\n");
202
211
  }
212
+ getDocumentSearchText(reflection) {
213
+ if (!this.searchDocuments)
214
+ return;
215
+ if (reflection.isDocument()) {
216
+ return reflection.content.flatMap((c) => c.text).join("\n");
217
+ }
218
+ }
203
219
  constructor() {
204
220
  super(...arguments);
205
221
  _JavascriptIndexPlugin_searchComments_accessor_storage.set(this, __runInitializers(this, _searchComments_initializers, void 0));
206
- __runInitializers(this, _searchComments_extraInitializers);
222
+ _JavascriptIndexPlugin_searchDocuments_accessor_storage.set(this, (__runInitializers(this, _searchComments_extraInitializers), __runInitializers(this, _searchDocuments_initializers, void 0)));
223
+ __runInitializers(this, _searchDocuments_extraInitializers);
207
224
  }
208
225
  };
209
226
  _JavascriptIndexPlugin_searchComments_accessor_storage = new WeakMap();
227
+ _JavascriptIndexPlugin_searchDocuments_accessor_storage = new WeakMap();
210
228
  __setFunctionName(_classThis, "JavascriptIndexPlugin");
211
229
  (() => {
212
230
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
213
231
  _searchComments_decorators = [(0, utils_1.Option)("searchInComments")];
232
+ _searchDocuments_decorators = [(0, utils_1.Option)("searchInDocuments")];
214
233
  __esDecorate(_classThis, null, _searchComments_decorators, { kind: "accessor", name: "searchComments", static: false, private: false, access: { has: obj => "searchComments" in obj, get: obj => obj.searchComments, set: (obj, value) => { obj.searchComments = value; } }, metadata: _metadata }, _searchComments_initializers, _searchComments_extraInitializers);
234
+ __esDecorate(_classThis, null, _searchDocuments_decorators, { kind: "accessor", name: "searchDocuments", static: false, private: false, access: { has: obj => "searchDocuments" in obj, get: obj => obj.searchDocuments, set: (obj, value) => { obj.searchDocuments = value; } }, metadata: _metadata }, _searchDocuments_initializers, _searchDocuments_extraInitializers);
215
235
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
216
236
  JavascriptIndexPlugin = _classThis = _classDescriptor.value;
217
237
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
@@ -1,6 +1,6 @@
1
1
  import { RendererComponent } from "../components";
2
2
  export declare class SitemapPlugin extends RendererComponent {
3
- accessor sitemapBaseUrl: string;
3
+ accessor hostedBaseUrl: string;
4
4
  initialize(): void;
5
5
  private onRendererBegin;
6
6
  private buildSitemap;
@@ -59,19 +59,20 @@ const events_1 = require("../events");
59
59
  const DefaultTheme_1 = require("../themes/default/DefaultTheme");
60
60
  const utils_1 = require("../../utils");
61
61
  const html_1 = require("../../utils/html");
62
+ const jsx_1 = require("../../utils/jsx");
62
63
  let SitemapPlugin = (() => {
63
- var _SitemapPlugin_sitemapBaseUrl_accessor_storage;
64
+ var _SitemapPlugin_hostedBaseUrl_accessor_storage;
64
65
  let _classDecorators = [(0, components_1.Component)({ name: "sitemap" })];
65
66
  let _classDescriptor;
66
67
  let _classExtraInitializers = [];
67
68
  let _classThis;
68
69
  let _classSuper = components_1.RendererComponent;
69
- let _sitemapBaseUrl_decorators;
70
- let _sitemapBaseUrl_initializers = [];
71
- let _sitemapBaseUrl_extraInitializers = [];
70
+ let _hostedBaseUrl_decorators;
71
+ let _hostedBaseUrl_initializers = [];
72
+ let _hostedBaseUrl_extraInitializers = [];
72
73
  var SitemapPlugin = _classThis = class extends _classSuper {
73
- get sitemapBaseUrl() { return __classPrivateFieldGet(this, _SitemapPlugin_sitemapBaseUrl_accessor_storage, "f"); }
74
- set sitemapBaseUrl(value) { __classPrivateFieldSet(this, _SitemapPlugin_sitemapBaseUrl_accessor_storage, value, "f"); }
74
+ get hostedBaseUrl() { return __classPrivateFieldGet(this, _SitemapPlugin_hostedBaseUrl_accessor_storage, "f"); }
75
+ set hostedBaseUrl(value) { __classPrivateFieldSet(this, _SitemapPlugin_hostedBaseUrl_accessor_storage, value, "f"); }
75
76
  initialize() {
76
77
  this.listenTo(this.owner, events_1.RendererEvent.BEGIN, this.onRendererBegin);
77
78
  }
@@ -79,9 +80,19 @@ let SitemapPlugin = (() => {
79
80
  if (!(this.owner.theme instanceof DefaultTheme_1.DefaultTheme)) {
80
81
  return;
81
82
  }
82
- if (event.isDefaultPrevented || !this.sitemapBaseUrl) {
83
+ if (event.isDefaultPrevented || !this.hostedBaseUrl) {
83
84
  return;
84
85
  }
86
+ this.owner.hooks.on("head.begin", (context) => {
87
+ if (context.page.url === "index.html") {
88
+ return {
89
+ tag: "link",
90
+ props: { rel: "canonical", href: this.hostedBaseUrl },
91
+ children: [],
92
+ };
93
+ }
94
+ return { tag: jsx_1.Fragment, props: null, children: [] };
95
+ });
85
96
  this.owner.preRenderAsyncJobs.push((event) => this.buildSitemap(event));
86
97
  }
87
98
  async buildSitemap(event) {
@@ -94,7 +105,7 @@ let SitemapPlugin = (() => {
94
105
  children: [
95
106
  {
96
107
  tag: "loc",
97
- children: new URL(url.url, this.sitemapBaseUrl).toString(),
108
+ children: new URL(url.url, this.hostedBaseUrl).toString(),
98
109
  },
99
110
  {
100
111
  tag: "lastmod",
@@ -114,16 +125,16 @@ let SitemapPlugin = (() => {
114
125
  }
115
126
  constructor() {
116
127
  super(...arguments);
117
- _SitemapPlugin_sitemapBaseUrl_accessor_storage.set(this, __runInitializers(this, _sitemapBaseUrl_initializers, void 0));
118
- __runInitializers(this, _sitemapBaseUrl_extraInitializers);
128
+ _SitemapPlugin_hostedBaseUrl_accessor_storage.set(this, __runInitializers(this, _hostedBaseUrl_initializers, void 0));
129
+ __runInitializers(this, _hostedBaseUrl_extraInitializers);
119
130
  }
120
131
  };
121
- _SitemapPlugin_sitemapBaseUrl_accessor_storage = new WeakMap();
132
+ _SitemapPlugin_hostedBaseUrl_accessor_storage = new WeakMap();
122
133
  __setFunctionName(_classThis, "SitemapPlugin");
123
134
  (() => {
124
135
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
125
- _sitemapBaseUrl_decorators = [(0, utils_1.Option)("sitemapBaseUrl")];
126
- __esDecorate(_classThis, null, _sitemapBaseUrl_decorators, { kind: "accessor", name: "sitemapBaseUrl", static: false, private: false, access: { has: obj => "sitemapBaseUrl" in obj, get: obj => obj.sitemapBaseUrl, set: (obj, value) => { obj.sitemapBaseUrl = value; } }, metadata: _metadata }, _sitemapBaseUrl_initializers, _sitemapBaseUrl_extraInitializers);
136
+ _hostedBaseUrl_decorators = [(0, utils_1.Option)("hostedBaseUrl")];
137
+ __esDecorate(_classThis, null, _hostedBaseUrl_decorators, { kind: "accessor", name: "hostedBaseUrl", static: false, private: false, access: { has: obj => "hostedBaseUrl" in obj, get: obj => obj.hostedBaseUrl, set: (obj, value) => { obj.hostedBaseUrl = value; } }, metadata: _metadata }, _hostedBaseUrl_initializers, _hostedBaseUrl_extraInitializers);
127
138
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
128
139
  SitemapPlugin = _classThis = _classDescriptor.value;
129
140
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
@@ -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 { Theme as ShikiTheme } from "shiki";
8
+ import type { BundledTheme as ShikiTheme } from "shiki" with { "resolution-mode": "import" };
9
9
  import type { JsxElement } from "../utils/jsx.elements";
10
10
  import type { DefaultThemeRenderContext } from "./themes/default/DefaultThemeRenderContext";
11
11
  /**
@@ -307,7 +307,7 @@ let Renderer = (() => {
307
307
  (0, fs_1.writeFileSync)(page.filename, page.contents);
308
308
  }
309
309
  catch (error) {
310
- this.application.logger.error(`Could not write ${page.filename}`);
310
+ this.application.logger.error(this.application.i18n.could_not_write_0(page.filename));
311
311
  }
312
312
  }
313
313
  /**
@@ -322,9 +322,7 @@ let Renderer = (() => {
322
322
  if (!this.theme) {
323
323
  const ctor = this.themes.get(this.themeName);
324
324
  if (!ctor) {
325
- this.application.logger.error(`The theme '${this.themeName}' is not defined. The available themes are: ${[
326
- ...this.themes.keys(),
327
- ].join(", ")}`);
325
+ this.application.logger.error(this.application.i18n.theme_0_is_not_defined_available_are_1(this.themeName, [...this.themes.keys()].join(", ")));
328
326
  return false;
329
327
  }
330
328
  else {
@@ -349,7 +347,7 @@ let Renderer = (() => {
349
347
  });
350
348
  }
351
349
  catch (error) {
352
- this.application.logger.warn("Could not empty the output directory.");
350
+ this.application.logger.warn(this.application.i18n.could_not_empty_output_directory_0(directory));
353
351
  return false;
354
352
  }
355
353
  }
@@ -357,7 +355,7 @@ let Renderer = (() => {
357
355
  fs.mkdirSync(directory, { recursive: true });
358
356
  }
359
357
  catch (error) {
360
- this.application.logger.error(`Could not create output directory ${directory}.`);
358
+ this.application.logger.error(this.application.i18n.could_not_create_output_directory_0(directory));
361
359
  return false;
362
360
  }
363
361
  if (this.githubPages) {
@@ -368,7 +366,7 @@ let Renderer = (() => {
368
366
  fs.writeFileSync(path.join(directory, ".nojekyll"), text);
369
367
  }
370
368
  catch (error) {
371
- this.application.logger.warn("Could not create .nojekyll file.");
369
+ this.application.logger.warn(this.application.i18n.could_not_write_0(path.join(directory, ".nojekyll")));
372
370
  return false;
373
371
  }
374
372
  }
@@ -1,33 +1,21 @@
1
1
  import { ContextAwareRendererComponent } from "../components";
2
- import { RendererEvent, MarkdownEvent, PageEvent } from "../events";
3
- import type { Theme } from "shiki";
2
+ import { type RendererEvent, MarkdownEvent, type PageEvent } from "../events";
3
+ import type { BundledTheme } from "shiki" with { "resolution-mode": "import" };
4
+ import type { DefaultThemeRenderContext } from "..";
4
5
  /**
5
6
  * Implements markdown and relativeURL helpers for templates.
6
7
  * @internal
7
8
  */
8
9
  export declare class MarkedPlugin extends ContextAwareRendererComponent {
9
- accessor includeSource: string;
10
- accessor mediaSource: string;
11
- accessor lightTheme: Theme;
12
- accessor darkTheme: Theme;
10
+ accessor lightTheme: BundledTheme;
11
+ accessor darkTheme: BundledTheme;
12
+ private parser?;
13
13
  /**
14
- * The path referenced files are located in.
14
+ * This needing to be here really feels hacky... probably some nicer way to do this.
15
+ * Revisit when adding support for arbitrary pages in 0.26.
15
16
  */
16
- private includes?;
17
- /**
18
- * Path to the output media directory.
19
- */
20
- private mediaDirectory?;
21
- /**
22
- * The pattern used to find references in markdown.
23
- */
24
- private includePattern;
25
- /**
26
- * The pattern used to find media links.
27
- */
28
- private mediaPattern;
29
- private sources?;
30
- private outputFileName?;
17
+ private renderContext;
18
+ private lastHeaderSlug;
31
19
  /**
32
20
  * Create a new MarkedPlugin instance.
33
21
  */
@@ -46,19 +34,20 @@ export declare class MarkedPlugin extends ContextAwareRendererComponent {
46
34
  * @param text The markdown string that should be parsed.
47
35
  * @returns The resulting html string.
48
36
  */
49
- parseMarkdown(text: string, page: PageEvent<any>): string;
37
+ parseMarkdown(text: string, page: PageEvent<any>, context: DefaultThemeRenderContext): string;
50
38
  /**
51
39
  * Triggered before the renderer starts rendering a project.
52
40
  *
53
41
  * @param event An event object describing the current render operation.
54
42
  */
55
43
  protected onBeginRenderer(event: RendererEvent): void;
44
+ private getSlugger;
56
45
  /**
57
46
  * Creates an object with options that are passed to the markdown parser.
58
47
  *
59
48
  * @returns The options object for the markdown parser.
60
49
  */
61
- private createMarkedOptions;
50
+ private setupParser;
62
51
  /**
63
52
  * Triggered when {@link MarkedPlugin} parses a markdown string.
64
53
  *