Socket
Socket
Sign inDemoInstall

typedoc

Package Overview
Dependencies
Maintainers
5
Versions
309
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

typedoc - npm Package Compare versions

Comparing version 0.24.8 to 0.25.0

4

dist/index.d.ts

@@ -8,2 +8,6 @@ export { Application } from "./lib/application";

export * as Models from "./lib/models";
/**
* All symbols documented under the Configuration namespace are also available in the root import.
*/
export * as Configuration from "./lib/utils/options";
export * from "./lib/models";

@@ -10,0 +14,0 @@ export { Converter, Context, type CommentParserConfig, type DeclarationReference, type SymbolReference, type ComponentPath, type Meaning, type MeaningKeyword, type ExternalResolveResult, type ExternalSymbolResolver, } from "./lib/converter";

@@ -32,3 +32,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.TypeScript = exports.SerializeEvent = exports.Deserializer = exports.Serializer = exports.JSONOutput = exports.normalizePath = exports.MinimalSourceFile = exports.EventHooks = exports.EntryPointStrategy = exports.TypeDocReader = exports.TSConfigReader = exports.ParameterType = exports.ParameterHint = exports.PackageJsonReader = exports.Options = exports.Logger = exports.LogLevel = exports.JSX = exports.CommentStyle = exports.BindOption = exports.ArgumentsReader = exports.IndexEvent = exports.MarkdownEvent = exports.RendererEvent = exports.PageEvent = exports.Theme = exports.UrlMapping = exports.DefaultThemeRenderContext = exports.DefaultTheme = exports.Renderer = exports.Context = exports.Converter = exports.Models = exports.resetReflectionID = exports.Event = exports.EventDispatcher = exports.Application = void 0;
exports.TypeScript = exports.SerializeEvent = exports.Deserializer = exports.Serializer = exports.JSONOutput = exports.normalizePath = exports.MinimalSourceFile = exports.EventHooks = exports.EntryPointStrategy = exports.TypeDocReader = exports.TSConfigReader = exports.ParameterType = exports.ParameterHint = exports.PackageJsonReader = exports.Options = exports.Logger = exports.LogLevel = exports.JSX = exports.CommentStyle = exports.BindOption = exports.ArgumentsReader = exports.IndexEvent = exports.MarkdownEvent = exports.RendererEvent = exports.PageEvent = exports.Theme = exports.UrlMapping = exports.DefaultThemeRenderContext = exports.DefaultTheme = exports.Renderer = exports.Context = exports.Converter = exports.Configuration = exports.Models = exports.resetReflectionID = exports.Event = exports.EventDispatcher = exports.Application = void 0;
var application_1 = require("./lib/application");

@@ -45,2 +45,6 @@ Object.defineProperty(exports, "Application", { enumerable: true, get: function () { return application_1.Application; } });

exports.Models = __importStar(require("./lib/models"));
/**
* All symbols documented under the Configuration namespace are also available in the root import.
*/
exports.Configuration = __importStar(require("./lib/utils/options"));
__exportStar(require("./lib/models"), exports);

@@ -47,0 +51,0 @@ var converter_1 = require("./lib/converter");

18

dist/lib/application.d.ts

@@ -5,3 +5,3 @@ import { Converter } from "./converter/index";

import type { ProjectReflection } from "./models/index";
import { Logger } from "./utils/index";
import { Logger, OptionsReader } from "./utils/index";
import { AbstractComponent, ChildableComponent } from "./utils/component";

@@ -11,2 +11,3 @@ import { Options } from "./utils";

import { DocumentationEntryPoint, EntryPointStrategy } from "./utils/entry-point";
export declare function createAppForTesting(): Application;
/**

@@ -75,7 +76,7 @@ * The default TypeDoc main application class.

*/
constructor();
private constructor();
/**
* Initialize TypeDoc, loading plugins if applicable.
*/
bootstrapWithPlugins(options?: Partial<TypeDocOptions>): Promise<void>;
static bootstrapWithPlugins(options?: Partial<TypeDocOptions>, readers?: readonly OptionsReader[]): Promise<Application>;
/**

@@ -87,9 +88,10 @@ * Initialize TypeDoc without loading plugins.

* ```ts
* const app = new Application();
* app.bootstrap({ pretty: false });
* const app = Application.bootstrap({ pretty: false });
* ```
*
* @param options - Options to set during initialization
* @param options Options to set during initialization
* @param readers Option readers to use to discover options from config files.
*/
bootstrap(options?: Partial<TypeDocOptions>): void;
static bootstrap(options?: Partial<TypeDocOptions>, readers?: readonly OptionsReader[]): Promise<Application>;
private _bootstrap;
private setOptions;

@@ -111,3 +113,3 @@ /**

*/
convert(): ProjectReflection | undefined;
convert(): Promise<ProjectReflection | undefined>;
convertAndWatch(success: (project: ProjectReflection) => Promise<void>): void;

@@ -114,0 +116,0 @@ validate(project: ProjectReflection): void;

@@ -36,3 +36,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.Application = void 0;
exports.Application = exports.createAppForTesting = void 0;
const Path = __importStar(require("path"));

@@ -63,2 +63,13 @@ const typescript_1 = __importDefault(require("typescript"));

.map((version) => version.replace(/^\s*|\.x\s*$/g, ""));
const DETECTOR = Symbol();
function createAppForTesting() {
// @ts-expect-error private constructor
return new Application(DETECTOR);
}
exports.createAppForTesting = createAppForTesting;
const DEFAULT_READERS = [
new index_2.TypeDocReader(),
new index_2.PackageJsonReader(),
new index_2.TSConfigReader(),
];
/**

@@ -77,7 +88,10 @@ * The default TypeDoc main application class.

*/
let Application = exports.Application = Application_1 = class Application extends component_1.ChildableComponent {
let Application = Application_1 = class Application extends component_1.ChildableComponent {
/**
* Create a new TypeDoc application instance.
*/
constructor() {
constructor(detector) {
if (detector !== DETECTOR) {
throw new Error("An application handle must be retrieved with Application.bootstrap or Application.bootstrapWithPlugins");
}
super(null); // We own ourselves

@@ -92,4 +106,7 @@ /**

this.deserializer = new serialization_1.Deserializer(this);
/**
* The logger that should be used to output messages.
*/
this.logger = new index_2.ConsoleLogger();
this.options = new utils_1.Options(this.logger);
this.options = new utils_1.Options();
this.converter = this.addComponent("converter", index_1.Converter);

@@ -101,9 +118,12 @@ this.renderer = this.addComponent("renderer", renderer_1.Renderer);

*/
async bootstrapWithPlugins(options = {}) {
this.options.reset();
this.setOptions(options, /* reportErrors */ false);
this.options.read(new index_2.Logger());
this.logger.level = this.options.getValue("logLevel");
await (0, index_2.loadPlugins)(this, this.options.getValue("plugin"));
this.bootstrap(options);
static async bootstrapWithPlugins(options = {}, readers = DEFAULT_READERS) {
const app = new Application_1(DETECTOR);
readers.forEach((r) => app.options.addReader(r));
app.options.reset();
app.setOptions(options, /* reportErrors */ false);
await app.options.read(new index_2.Logger());
app.logger.level = app.options.getValue("logLevel");
await (0, index_2.loadPlugins)(app, app.options.getValue("plugin"));
await app._bootstrap(options);
return app;
}

@@ -116,12 +136,18 @@ /**

* ```ts
* const app = new Application();
* app.bootstrap({ pretty: false });
* const app = Application.bootstrap({ pretty: false });
* ```
*
* @param options - Options to set during initialization
* @param options Options to set during initialization
* @param readers Option readers to use to discover options from config files.
*/
bootstrap(options = {}) {
static async bootstrap(options = {}, readers = DEFAULT_READERS) {
const app = new Application_1(DETECTOR);
readers.forEach((r) => app.options.addReader(r));
await app._bootstrap(options);
return app;
}
async _bootstrap(options) {
this.options.reset();
this.setOptions(options, /* reportErrors */ false);
this.options.read(this.logger);
await this.options.read(this.logger);
this.setOptions(options);

@@ -168,3 +194,3 @@ this.logger.level = this.options.getValue("logLevel");

*/
convert() {
async convert() {
const start = Date.now();

@@ -351,3 +377,3 @@ // We freeze here rather than in the Converter class since TypeDoc's tests reuse the Application

}
_convertPackages() {
async _convertPackages() {
if (!this.options.isSet("entryPoints")) {

@@ -370,3 +396,3 @@ this.logger.error("No entry points provided to packages mode, documentation cannot be generated.");

opts.setValue("validation", { invalidLink: false });
opts.read(this.logger, dir);
await opts.read(this.logger, dir);
if (opts.getValue("entryPointStrategy") ===

@@ -378,3 +404,3 @@ entry_point_1.EntryPointStrategy.Packages) {

this.options = opts;
const project = this.convert();
const project = await this.convert();
if (project) {

@@ -432,2 +458,3 @@ this.validate(project);

};
exports.Application = Application;
/**

@@ -434,0 +461,0 @@ * The version number of TypeDoc.

@@ -36,23 +36,28 @@ "use strict";

const td = __importStar(require("typedoc"));
const app = new td.Application();
app.options.addReader(new td.ArgumentsReader(0));
app.options.addReader(new td.TypeDocReader());
app.options.addReader(new td.PackageJsonReader());
app.options.addReader(new td.TSConfigReader());
app.options.addReader(new td.ArgumentsReader(300));
void run(app)
.catch((error) => {
console.error("TypeDoc exiting with unexpected error:");
console.error(error);
if (app.options.getValue("skipErrorChecking")) {
console.error("Try turning off --skipErrorChecking. If TypeDoc still crashes, please report a bug.");
void main();
async function main() {
let app;
try {
const start = Date.now();
app = await td.Application.bootstrapWithPlugins({}, [
new td.ArgumentsReader(0),
new td.TypeDocReader(),
new td.PackageJsonReader(),
new td.TSConfigReader(),
new td.ArgumentsReader(300),
]);
const exitCode = await run(app);
app.logger.verbose(`Full run took ${Date.now() - start}ms`);
process.exit(exitCode);
}
return ExitCodes.ExceptionThrown;
})
.then((exitCode) => {
process.exitCode = exitCode;
});
catch (error) {
console.error("TypeDoc exiting with unexpected error:");
console.error(error);
if (app?.options.getValue("skipErrorChecking")) {
console.error("Try turning off --skipErrorChecking. If TypeDoc still crashes, please report a bug.");
}
process.exit(ExitCodes.ExceptionThrown);
}
}
async function run(app) {
const start = Date.now();
await app.bootstrapWithPlugins();
if (app.options.getValue("version")) {

@@ -89,3 +94,3 @@ console.log(app.toString());

}
const project = app.convert();
const project = await app.convert();
if (!project) {

@@ -125,4 +130,3 @@ return ExitCodes.CompileError;

}
app.logger.verbose(`Full run took ${Date.now() - start}ms`);
return ExitCodes.Ok;
}

@@ -262,3 +262,3 @@ "use strict";

if (link.name) {
const tsTarget = checker?.getSymbolAtLocation(link.name);
const tsTarget = checker?.getSymbolAtLocation(getRightmostName(link.name));
if (tsTarget) {

@@ -372,1 +372,10 @@ token.tsLinkTarget = new ReflectionSymbolId_1.ReflectionSymbolId((0, symbols_1.resolveAliasedSymbol)(tsTarget, checker));

}
function getRightmostName(name) {
if (typescript_1.default.isJSDocMemberName(name)) {
return name.right;
}
if (typescript_1.default.isQualifiedName(name)) {
return name.right;
}
return name;
}

@@ -318,2 +318,4 @@ "use strict";

}
if (!moduleSource && !symbolReference)
return;
return [

@@ -320,0 +322,0 @@ {

@@ -129,3 +129,4 @@ "use strict";

case "constructor":
if (refl.kindOf(models_1.ReflectionKind.ClassOrInterface | models_1.ReflectionKind.TypeLiteral)) {
if (refl.kindOf(models_1.ReflectionKind.ClassOrInterface |
models_1.ReflectionKind.TypeLiteral)) {
const ctor = refl.children?.find((c) => c.kindOf(models_1.ReflectionKind.Constructor));

@@ -132,0 +133,0 @@ return ctor?.signatures;

@@ -94,3 +94,2 @@ "use strict";

[models_1.ReflectionKind.SetSignature]: [typescript_1.default.SyntaxKind.SetAccessor],
[models_1.ReflectionKind.ObjectLiteral]: [typescript_1.default.SyntaxKind.ObjectLiteralExpression],
[models_1.ReflectionKind.TypeAlias]: [typescript_1.default.SyntaxKind.TypeAliasDeclaration],

@@ -97,0 +96,0 @@ [models_1.ReflectionKind.Reference]: [

@@ -16,3 +16,6 @@ import { Comment, CommentDisplayPart, Reflection, ReflectionSymbolId } from "../../models";

export type ExternalSymbolResolver = (ref: DeclarationReference, refl: Reflection, part: Readonly<CommentDisplayPart> | undefined, symbolId: ReflectionSymbolId | undefined) => ExternalResolveResult | string | undefined;
export declare function resolveLinks(comment: Comment, reflection: Reflection, externalResolver: ExternalSymbolResolver): void;
export declare function resolvePartLinks(reflection: Reflection, parts: readonly CommentDisplayPart[], externalResolver: ExternalSymbolResolver): CommentDisplayPart[];
export type LinkResolverOptions = {
preserveLinkText: boolean;
};
export declare function resolveLinks(comment: Comment, reflection: Reflection, externalResolver: ExternalSymbolResolver, options: LinkResolverOptions): void;
export declare function resolvePartLinks(reflection: Reflection, parts: readonly CommentDisplayPart[], externalResolver: ExternalSymbolResolver, options: LinkResolverOptions): CommentDisplayPart[];

@@ -12,17 +12,17 @@ "use strict";

const urlPrefix = /^(http|ftp)s?:\/\//;
function resolveLinks(comment, reflection, externalResolver) {
comment.summary = resolvePartLinks(reflection, comment.summary, externalResolver);
function resolveLinks(comment, reflection, externalResolver, options) {
comment.summary = resolvePartLinks(reflection, comment.summary, externalResolver, options);
for (const tag of comment.blockTags) {
tag.content = resolvePartLinks(reflection, tag.content, externalResolver);
tag.content = resolvePartLinks(reflection, tag.content, externalResolver, options);
}
if (reflection instanceof models_1.DeclarationReflection && reflection.readme) {
reflection.readme = resolvePartLinks(reflection, reflection.readme, externalResolver);
reflection.readme = resolvePartLinks(reflection, reflection.readme, externalResolver, options);
}
}
exports.resolveLinks = resolveLinks;
function resolvePartLinks(reflection, parts, externalResolver) {
return parts.flatMap((part) => processPart(reflection, part, externalResolver));
function resolvePartLinks(reflection, parts, externalResolver, options) {
return parts.flatMap((part) => processPart(reflection, part, externalResolver, options));
}
exports.resolvePartLinks = resolvePartLinks;
function processPart(reflection, part, externalResolver) {
function processPart(reflection, part, externalResolver, options) {
if (part.kind === "inline-tag") {

@@ -32,3 +32,3 @@ if (part.tag === "@link" ||

part.tag === "@linkplain") {
return resolveLinkTag(reflection, part, externalResolver);
return resolveLinkTag(reflection, part, externalResolver, options);
}

@@ -38,3 +38,3 @@ }

}
function resolveLinkTag(reflection, part, externalResolver) {
function resolveLinkTag(reflection, part, externalResolver, options) {
let defaultDisplayText = "";

@@ -55,3 +55,5 @@ let pos = 0;

pos = end;
defaultDisplayText = part.tsLinkText || target.name;
defaultDisplayText =
part.tsLinkText ||
(options.preserveLinkText ? part.text : target.name);
}

@@ -65,3 +67,5 @@ else if (declRef) {

: undefined);
defaultDisplayText = part.text.substring(0, pos);
defaultDisplayText = options.preserveLinkText
? part.text
: part.text.substring(0, pos);
switch (typeof externalResolveResult) {

@@ -83,3 +87,5 @@ case "string":

if (target) {
defaultDisplayText = target.name;
defaultDisplayText = options.preserveLinkText
? part.text
: target.name;
}

@@ -91,3 +97,5 @@ else {

: undefined);
defaultDisplayText = part.text.substring(0, pos);
defaultDisplayText = options.preserveLinkText
? part.text
: part.text.substring(0, pos);
switch (typeof externalResolveResult) {

@@ -94,0 +102,0 @@ case "string":

@@ -138,3 +138,4 @@ "use strict";

}
else if (tagName === "@default" && config.jsDocCompatibility.defaultTag) {
else if (["@default", "@defaultValue"].includes(tagName) &&
config.jsDocCompatibility.defaultTag) {
content = defaultBlockContent(comment, lexer, config, warning);

@@ -141,0 +142,0 @@ }

@@ -39,2 +39,4 @@ import ts from "typescript";

useTsLinkResolution: boolean;
/** @internal */
preserveLinkText: boolean;
private _config?;

@@ -41,0 +43,0 @@ private _externalSymbolResolvers;

@@ -31,3 +31,3 @@ "use strict";

*/
let Converter = exports.Converter = Converter_1 = class Converter extends component_1.ChildableComponent {
let Converter = Converter_1 = class Converter extends component_1.ChildableComponent {
get config() {

@@ -126,6 +126,6 @@ return this._config || this._buildCommentParserConfig();

if (comment instanceof index_1.Comment) {
(0, linkResolver_1.resolveLinks)(comment, owner, (ref, part, refl, id) => this.resolveExternalLink(ref, part, refl, id));
(0, linkResolver_1.resolveLinks)(comment, owner, (ref, part, refl, id) => this.resolveExternalLink(ref, part, refl, id), { preserveLinkText: this.preserveLinkText });
}
else {
return (0, linkResolver_1.resolvePartLinks)(owner, comment, (ref, part, refl, id) => this.resolveExternalLink(ref, part, refl, id));
return (0, linkResolver_1.resolvePartLinks)(owner, comment, (ref, part, refl, id) => this.resolveExternalLink(ref, part, refl, id), { preserveLinkText: this.preserveLinkText });
}

@@ -197,3 +197,3 @@ }

for (const exp of allExports.filter((exp) => isDirectExport(context.resolveAliasedSymbol(exp), node))) {
(0, symbols_1.convertSymbol)(moduleContext, exp);
this.convertSymbol(moduleContext, exp);
}

@@ -204,3 +204,3 @@ return moduleContext;

for (const exp of getExports(moduleContext, node, moduleContext.project.getSymbolFromReflection(moduleContext.scope)).filter((exp) => !isDirectExport(moduleContext.resolveAliasedSymbol(exp), node))) {
(0, symbols_1.convertSymbol)(moduleContext, exp);
this.convertSymbol(moduleContext, exp);
}

@@ -217,4 +217,4 @@ }

const project = context.project;
for (const reflection of Object.values(project.reflections)) {
this.trigger(Converter_1.EVENT_RESOLVE, context, reflection);
for (const id in project.reflections) {
this.trigger(Converter_1.EVENT_RESOLVE, context, project.reflections[id]);
}

@@ -256,2 +256,3 @@ this.trigger(Converter_1.EVENT_RESOLVE_END, context);

};
exports.Converter = Converter;
/**

@@ -352,2 +353,5 @@ * General events

], Converter.prototype, "useTsLinkResolution", void 0);
__decorate([
(0, utils_1.BindOption)("preserveLinkText")
], Converter.prototype, "preserveLinkText", void 0);
exports.Converter = Converter = Converter_1 = __decorate([

@@ -371,3 +375,5 @@ (0, component_1.Component)({

.getSymbolsInScope(node, typescript_1.default.SymbolFlags.ModuleMember)
.filter((s) => s.getDeclarations()?.some((d) => d.getSourceFile() === sourceFile));
.filter((s) => s
.getDeclarations()
?.some((d) => d.getSourceFile() === sourceFile));
// Detect declaration files with declare module "foo" as their only export

@@ -374,0 +380,0 @@ // and lift that up one level as the source file symbol

@@ -19,3 +19,4 @@ "use strict";

const indexDeclaration = indexSymbol.getDeclarations()?.[0];
(0, assert_1.default)(indexDeclaration && typescript_1.default.isIndexSignatureDeclaration(indexDeclaration));
(0, assert_1.default)(indexDeclaration &&
typescript_1.default.isIndexSignatureDeclaration(indexDeclaration));
const param = indexDeclaration.parameters[0];

@@ -22,0 +23,0 @@ (0, assert_1.default)(param && typescript_1.default.isParameter(param));

@@ -21,3 +21,3 @@ "use strict";

*/
let CategoryPlugin = exports.CategoryPlugin = CategoryPlugin_1 = class CategoryPlugin extends components_1.ConverterComponent {
let CategoryPlugin = CategoryPlugin_1 = class CategoryPlugin extends components_1.ConverterComponent {
constructor() {

@@ -221,2 +221,3 @@ super(...arguments);

};
exports.CategoryPlugin = CategoryPlugin;
// For use in static methods

@@ -223,0 +224,0 @@ CategoryPlugin.defaultCategory = "Other";

@@ -91,3 +91,3 @@ "use strict";

*/
let CommentPlugin = exports.CommentPlugin = class CommentPlugin extends components_1.ConverterComponent {
let CommentPlugin = class CommentPlugin extends components_1.ConverterComponent {
get excludeNotDocumentedKinds() {

@@ -407,2 +407,3 @@ this._excludeKinds ?? (this._excludeKinds = this.application.options

};
exports.CommentPlugin = CommentPlugin;
__decorate([

@@ -409,0 +410,0 @@ (0, utils_1.BindOption)("excludeTags")

@@ -23,3 +23,3 @@ "use strict";

*/
let GroupPlugin = exports.GroupPlugin = GroupPlugin_1 = class GroupPlugin extends components_1.ConverterComponent {
let GroupPlugin = GroupPlugin_1 = class GroupPlugin extends components_1.ConverterComponent {
constructor() {

@@ -135,3 +135,3 @@ super(...arguments);

if (!group) {
group = new ReflectionGroup_1.ReflectionGroup(name);
group = new ReflectionGroup_1.ReflectionGroup(name, child);
groups.set(name, group);

@@ -168,2 +168,3 @@ }

};
exports.GroupPlugin = GroupPlugin;
GroupPlugin.WEIGHTS = [];

@@ -170,0 +171,0 @@ __decorate([

@@ -25,3 +25,3 @@ "use strict";

*/
let ImplementsPlugin = exports.ImplementsPlugin = class ImplementsPlugin extends components_1.ConverterComponent {
let ImplementsPlugin = class ImplementsPlugin extends components_1.ConverterComponent {
constructor() {

@@ -107,5 +107,6 @@ super(...arguments);

resolve(project) {
for (const reflection of Object.values(project.reflections)) {
if (reflection instanceof index_1.DeclarationReflection) {
this.tryResolve(project, reflection);
for (const id in project.reflections) {
const refl = project.reflections[id];
if (refl instanceof index_1.DeclarationReflection) {
this.tryResolve(project, refl);
}

@@ -200,3 +201,4 @@ }

// We're probably broken... but I don't think this should be fatal.
context.logger.warn(`Failed to retrieve${reflection.flags.isStatic ? " static" : ""} member "${reflection.escapedName ?? reflection.name}" of "${reflection.parent?.name}" for inheritance analysis. Please report a bug.`);
context.logger.warn(`Failed to retrieve${reflection.flags.isStatic ? " static" : ""} member "${reflection.escapedName ?? reflection.name}" of "${reflection.parent
?.name}" for inheritance analysis. Please report a bug.`);
return;

@@ -230,2 +232,3 @@ }

};
exports.ImplementsPlugin = ImplementsPlugin;
exports.ImplementsPlugin = ImplementsPlugin = __decorate([

@@ -232,0 +235,0 @@ (0, components_1.Component)({ name: "implements" })

import { ConverterComponent } from "../components";
import { ValidationOptions } from "../../utils";
/**

@@ -16,2 +17,3 @@ * A plugin that handles `@inheritDoc` tags by copying documentation from another API item.

export declare class InheritDocPlugin extends ConverterComponent {
validation: ValidationOptions;
private dependencies;

@@ -18,0 +20,0 @@ /**

@@ -31,3 +31,3 @@ "use strict";

*/
let InheritDocPlugin = exports.InheritDocPlugin = class InheritDocPlugin extends components_1.ConverterComponent {
let InheritDocPlugin = class InheritDocPlugin extends components_1.ConverterComponent {
constructor() {

@@ -43,3 +43,3 @@ super(...arguments);

this.owner.on(converter_1.Converter.EVENT_RESOLVE_END, (context) => this.processInheritDoc(context.project));
this.owner.on(application_events_1.ApplicationEvents.REVIVE, this.processInheritDoc, this);
this.application.on(application_events_1.ApplicationEvents.REVIVE, this.processInheritDoc, this);
}

@@ -52,3 +52,4 @@ /**

processInheritDoc(project) {
for (const reflection of Object.values(project.reflections)) {
for (const id in project.reflections) {
const reflection = project.reflections[id];
const source = extractInheritDocTagReference(reflection);

@@ -84,3 +85,5 @@ if (!source)

if (!sourceRefl) {
this.application.logger.warn(`Failed to find "${source}" to inherit the comment from in the comment for ${reflection.getFullName()}`);
if (this.validation.invalidLink) {
this.application.logger.warn(`Failed to find "${source}" to inherit the comment from in the comment for ${reflection.getFullName()}`);
}
continue;

@@ -166,2 +169,6 @@ }

};
exports.InheritDocPlugin = InheritDocPlugin;
__decorate([
(0, utils_1.BindOption)("validation")
], InheritDocPlugin.prototype, "validation", void 0);
exports.InheritDocPlugin = InheritDocPlugin = __decorate([

@@ -168,0 +175,0 @@ (0, components_1.Component)({ name: "inheritDoc" })

@@ -19,3 +19,3 @@ "use strict";

*/
let LinkResolverPlugin = exports.LinkResolverPlugin = class LinkResolverPlugin extends components_1.ConverterComponent {
let LinkResolverPlugin = class LinkResolverPlugin extends components_1.ConverterComponent {
initialize() {

@@ -30,3 +30,4 @@ super.initialize();

resolveLinks(project) {
for (const reflection of Object.values(project.reflections)) {
for (const id in project.reflections) {
const reflection = project.reflections[id];
if (reflection.comment) {

@@ -58,2 +59,3 @@ this.owner.resolveLinks(reflection.comment, reflection);

};
exports.LinkResolverPlugin = LinkResolverPlugin;
__decorate([

@@ -60,0 +62,0 @@ (0, utils_1.BindOption)("validation")

@@ -46,3 +46,3 @@ "use strict";

*/
let PackagePlugin = exports.PackagePlugin = class PackagePlugin extends components_1.ConverterComponent {
let PackagePlugin = class PackagePlugin extends components_1.ConverterComponent {
initialize() {

@@ -133,2 +133,3 @@ this.listenTo(this.owner, {

};
exports.PackagePlugin = PackagePlugin;
__decorate([

@@ -135,0 +136,0 @@ (0, utils_1.BindOption)("readme")

@@ -9,2 +9,3 @@ import { ConverterComponent } from "../components";

readonly gitRemote: string;
readonly disableGit: boolean;
readonly sourceLinkTemplate: string;

@@ -11,0 +12,0 @@ readonly basePath: string;

@@ -26,3 +26,3 @@ "use strict";

*/
let SourcePlugin = exports.SourcePlugin = class SourcePlugin extends components_1.ConverterComponent {
let SourcePlugin = class SourcePlugin extends components_1.ConverterComponent {
constructor() {

@@ -75,10 +75,7 @@ super(...arguments);

let position;
if ((0, nodes_1.isNamedNode)(node)) {
position = typescript_1.default.getLineAndCharacterOfPosition(sourceFile, node.name.getStart());
}
else if (typescript_1.default.isSourceFile(node)) {
if (typescript_1.default.isSourceFile(node)) {
position = { character: 0, line: 0 };
}
else {
position = typescript_1.default.getLineAndCharacterOfPosition(sourceFile, node.getStart());
position = typescript_1.default.getLineAndCharacterOfPosition(sourceFile, getLocationNode(node).getStart());
}

@@ -95,3 +92,3 @@ reflection.sources || (reflection.sources = []);

this.fileNames.add(fileName);
const position = typescript_1.default.getLineAndCharacterOfPosition(sourceFile, sig.getStart());
const position = typescript_1.default.getLineAndCharacterOfPosition(sourceFile, getLocationNode(sig).getStart());
reflection.sources || (reflection.sources = []);

@@ -108,4 +105,14 @@ reflection.sources.push(new models_1.SourceReference(fileName, position.line + 1, position.character));

return;
if (this.disableGit && !this.sourceLinkTemplate) {
this.application.logger.error(`disableGit is set, but sourceLinkTemplate is not, so source links cannot be produced. Set a sourceLinkTemplate or disableSources to prevent source tracking.`);
return;
}
if (this.disableGit &&
this.sourceLinkTemplate.includes("{gitRevision}") &&
!this.gitRevision) {
this.application.logger.warn(`disableGit is set and sourceLinkTemplate contains {gitRevision}, which will be replaced with an empty string as no revision was provided.`);
}
const basePath = this.basePath || (0, utils_1.getCommonDirectory)([...this.fileNames]);
for (const refl of Object.values(context.project.reflections)) {
for (const id in context.project.reflections) {
const refl = context.project.reflections[id];
if (!(refl instanceof index_1.DeclarationReflection ||

@@ -116,4 +123,4 @@ refl instanceof index_1.SignatureReflection)) {

for (const source of refl.sources || []) {
if (repository_1.gitIsInstalled) {
const repo = this.getRepository(source.fullFileName);
if (this.disableGit || (0, repository_1.gitIsInstalled)()) {
const repo = this.getRepository(basePath, source.fullFileName);
source.url = repo?.getURL(source.fullFileName, source.line);

@@ -131,3 +138,6 @@ }

*/
getRepository(fileName) {
getRepository(basePath, fileName) {
if (this.disableGit) {
return new repository_1.AssumedRepository(basePath, this.gitRevision, this.sourceLinkTemplate);
}
// Check for known non-repositories

@@ -148,3 +158,3 @@ const dirName = (0, path_1.dirname)(fileName);

// Try to create a new repository
const repository = repository_1.Repository.tryCreateRepository(dirName, this.sourceLinkTemplate, this.gitRevision, this.gitRemote, this.application.logger);
const repository = repository_1.GitRepository.tryCreateRepository(dirName, this.sourceLinkTemplate, this.gitRevision, this.gitRemote, this.application.logger);
if (repository) {

@@ -158,2 +168,3 @@ this.repositories[repository.path.toLowerCase()] = repository;

};
exports.SourcePlugin = SourcePlugin;
__decorate([

@@ -169,2 +180,5 @@ (0, utils_1.BindOption)("disableSources")

__decorate([
(0, utils_1.BindOption)("disableGit")
], SourcePlugin.prototype, "disableGit", void 0);
__decorate([
(0, utils_1.BindOption)("sourceLinkTemplate")

@@ -178,1 +192,6 @@ ], SourcePlugin.prototype, "sourceLinkTemplate", void 0);

], SourcePlugin);
function getLocationNode(node) {
if ((0, nodes_1.isNamedNode)(node))
return node.name;
return node;
}

@@ -18,3 +18,3 @@ "use strict";

*/
let TypePlugin = exports.TypePlugin = class TypePlugin extends components_1.ConverterComponent {
let TypePlugin = class TypePlugin extends components_1.ConverterComponent {
constructor() {

@@ -38,4 +38,5 @@ super(...arguments);

onRevive(project) {
for (const refl of Object.values(project.reflections)) {
this.resolve(project, refl);
for (const id in project.reflections) {
this.resolve(project, project.reflections[id],
/* create links */ false);
}

@@ -48,3 +49,3 @@ this.finishResolve(project);

}
resolve(project, reflection) {
resolve(project, reflection, createLinks = true) {
if (!(reflection instanceof index_1.DeclarationReflection))

@@ -56,13 +57,13 @@ return;

this.postpone(target);
if (!target.implementedBy) {
target.implementedBy = [];
target.implementedBy || (target.implementedBy = []);
if (createLinks) {
target.implementedBy.push(types_1.ReferenceType.createResolvedReference(reflection.name, reflection, project));
}
target.implementedBy.push(types_1.ReferenceType.createResolvedReference(reflection.name, reflection, project));
});
walk(reflection.extendedTypes, (target) => {
this.postpone(target);
if (!target.extendedBy) {
target.extendedBy = [];
target.extendedBy || (target.extendedBy = []);
if (createLinks) {
target.extendedBy.push(types_1.ReferenceType.createResolvedReference(reflection.name, reflection, project));
}
target.extendedBy.push(types_1.ReferenceType.createResolvedReference(reflection.name, reflection, project));
});

@@ -128,4 +129,5 @@ }

};
exports.TypePlugin = TypePlugin;
exports.TypePlugin = TypePlugin = __decorate([
(0, components_1.Component)({ name: "type" })
], TypePlugin);

@@ -179,4 +179,12 @@ "use strict";

}
const reflection = context.createDeclarationReflection(models_1.ReflectionKind.Namespace, symbol, exportSymbol);
context.finalizeDeclarationReflection(reflection);
// #2364, @namespace on a variable might be merged with a namespace containing types.
const existingReflection = context.project.getReflectionFromSymbol(exportSymbol || symbol);
let reflection;
if (existingReflection?.kind === models_1.ReflectionKind.Namespace) {
reflection = existingReflection;
}
else {
reflection = context.createDeclarationReflection(models_1.ReflectionKind.Namespace, symbol, exportSymbol);
context.finalizeDeclarationReflection(reflection);
}
convertSymbols(context.withScope(reflection), context.checker

@@ -220,2 +228,5 @@ .getExportsOfModule(symbol)

const type = context.checker.getTypeAtLocation(declaration);
if (type.getFlags() & typescript_1.default.TypeFlags.Union) {
context.logger.warn(`Using @interface on a union type will discard properties not present on all branches of the union. TypeDoc's output may not accurately describe your source code.`, declaration);
}
// Interfaces have properties

@@ -516,3 +527,4 @@ convertSymbols(rc, type.getProperties());

const rc = context.withScope(reflection);
const declaration = symbol.declarations[0];
const declaration = symbol.declarations?.find(typescript_1.default.isVariableDeclaration);
(0, assert_1.default)(declaration, "Missing variable declaration");
const type = context.checker.getTypeAtLocation(declaration);

@@ -519,0 +531,0 @@ convertSymbols(rc, type.getProperties());

@@ -564,3 +564,8 @@ "use strict";

const namedDeclarations = type.target.labeledElementDeclarations;
elements = elements?.map((el, i) => new models_1.NamedTupleMember(namedDeclarations[i].name.getText(), !!namedDeclarations[i].questionToken, (0, reflections_1.removeUndefined)(el)));
elements = elements?.map((el, i) => {
const namedDecl = namedDeclarations[i];
return namedDecl
? new models_1.NamedTupleMember(namedDecl.name.getText(), !!namedDecl.questionToken, (0, reflections_1.removeUndefined)(el))
: el;
});
}

@@ -567,0 +572,0 @@ elements = elements?.map((el, i) => {

import ts from "typescript";
export declare function isNamedNode(node: ts.Node): node is ts.Node & {
name: ts.Identifier | ts.PrivateIdentifier | ts.ComputedPropertyName;
export declare function isNamedNode(node: unknown): node is {
readonly name: ts.Identifier | ts.PrivateIdentifier | ts.ComputedPropertyName;
};
export declare function getHeritageTypes(declarations: readonly (ts.ClassDeclaration | ts.InterfaceDeclaration)[], kind: ts.SyntaxKind.ImplementsKeyword | ts.SyntaxKind.ExtendsKeyword): ts.ExpressionWithTypeArguments[];
export declare function isObjectType(type: ts.Type): type is ts.ObjectType;
import type { Logger } from "../../utils";
export declare const gitIsInstalled: boolean;
export declare function gitIsInstalled(): boolean;
export interface Repository {
getURL(fileName: string, line: number): string | undefined;
}
export declare class AssumedRepository implements Repository {
readonly path: string;
readonly gitRevision: string;
readonly sourceLinkTemplate: string;
constructor(path: string, gitRevision: string, sourceLinkTemplate: string);
getURL(fileName: string, line: number): string | undefined;
}
/**
* Stores data of a repository.
*/
export declare class Repository {
export declare class GitRepository implements Repository {
/**

@@ -34,9 +44,9 @@ * The path of this repository on disk.

* Checks whether the given path is the root of a valid repository and if so
* creates a new instance of {@link Repository}.
* creates a new instance of {@link GitRepository}.
*
* @param path The potential repository root.
* @returns A new instance of {@link Repository} or undefined.
* @returns A new instance of {@link GitRepository} or undefined.
*/
static tryCreateRepository(path: string, sourceLinkTemplate: string, gitRevision: string, gitRemote: string, logger: Logger): Repository | undefined;
static tryCreateRepository(path: string, sourceLinkTemplate: string, gitRevision: string, gitRemote: string, logger: Logger): GitRepository | undefined;
}
export declare function guessSourceUrlTemplate(remotes: string[]): string | undefined;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.guessSourceUrlTemplate = exports.Repository = exports.gitIsInstalled = void 0;
exports.guessSourceUrlTemplate = exports.GitRepository = exports.AssumedRepository = exports.gitIsInstalled = void 0;
const child_process_1 = require("child_process");

@@ -14,7 +14,28 @@ const base_path_1 = require("../utils/base-path");

}
exports.gitIsInstalled = git("--version").status === 0;
let haveGit;
function gitIsInstalled() {
haveGit ?? (haveGit = git("--version").status === 0);
return haveGit;
}
exports.gitIsInstalled = gitIsInstalled;
class AssumedRepository {
constructor(path, gitRevision, sourceLinkTemplate) {
this.path = path;
this.gitRevision = gitRevision;
this.sourceLinkTemplate = sourceLinkTemplate;
}
getURL(fileName, line) {
const replacements = {
gitRevision: this.gitRevision,
path: fileName.substring(this.path.length + 1),
line,
};
return this.sourceLinkTemplate.replace(/\{(path|line)\}/g, (_, key) => replacements[key]);
}
}
exports.AssumedRepository = AssumedRepository;
/**
* Stores data of a repository.
*/
class Repository {
class GitRepository {
/**

@@ -63,6 +84,6 @@ * Create a new Repository instance.

* Checks whether the given path is the root of a valid repository and if so
* creates a new instance of {@link Repository}.
* creates a new instance of {@link GitRepository}.
*
* @param path The potential repository root.
* @returns A new instance of {@link Repository} or undefined.
* @returns A new instance of {@link GitRepository} or undefined.
*/

@@ -80,6 +101,2 @@ static tryCreateRepository(path, sourceLinkTemplate, gitRevision, gitRemote, logger) {

}
else if (/^https?:\/\//.test(gitRemote)) {
logger.warn("Using a link as the gitRemote is deprecated and will be removed in 0.24.");
urlTemplate = `${gitRemote}/{gitRevision}`;
}
else {

@@ -96,6 +113,6 @@ const remotesOut = git("-C", path, "remote", "get-url", gitRemote);

return;
return new Repository(base_path_1.BasePath.normalize(topLevel.stdout.replace("\n", "")), gitRevision, urlTemplate);
return new GitRepository(base_path_1.BasePath.normalize(topLevel.stdout.replace("\n", "")), gitRevision, urlTemplate);
}
}
exports.Repository = Repository;
exports.GitRepository = GitRepository;
// Should have three capturing groups:

@@ -102,0 +119,0 @@ // 1. hostname

import type { Reflection } from "../reflections";
import { ReflectionSymbolId } from "../reflections/ReflectionSymbolId";
import type { Serializer, Deserializer, JSONOutput } from "../../serialization";
/**
* Represents a parsed piece of a comment.
* @category Comments
*/
export type CommentDisplayPart = {

@@ -16,2 +20,3 @@ kind: "text";

* TypeScript thinks should be displayed as the link text.
* @category Comments
*/

@@ -29,2 +34,3 @@ export interface InlineTagDisplayPart {

* Tags are stored in the {@link Comment.blockTags} property.
* @category Comments
*/

@@ -58,2 +64,3 @@ export declare class CommentTag {

* through the {@link DeclarationReflection.comment} property.
* @category Comments
*/

@@ -103,3 +110,3 @@ export declare class Comment {

*/
modifierTags: Set<string>;
modifierTags: Set<`@${string}`>;
/**

@@ -112,3 +119,3 @@ * Label associated with this reflection, if any (https://tsdoc.org/pages/tags/label/)

*/
constructor(summary?: CommentDisplayPart[], blockTags?: CommentTag[], modifierTags?: Set<string>);
constructor(summary?: CommentDisplayPart[], blockTags?: CommentTag[], modifierTags?: Set<`@${string}`>);
/**

@@ -115,0 +122,0 @@ * Create a deep clone of this comment.

@@ -11,2 +11,3 @@ "use strict";

* Tags are stored in the {@link Comment.blockTags} property.
* @category Comments
*/

@@ -47,2 +48,3 @@ class CommentTag {

* through the {@link DeclarationReflection.comment} property.
* @category Comments
*/

@@ -49,0 +51,0 @@ class Comment {

import { ReflectionCategory } from "./ReflectionCategory";
import type { DeclarationReflection } from ".";
import type { DeclarationReflection, Reflection } from ".";
import type { Serializer, JSONOutput, Deserializer } from "../serialization";

@@ -12,2 +12,3 @@ /**

export declare class ReflectionGroup {
readonly owningReflection: Reflection;
/**

@@ -29,4 +30,5 @@ * The title, a string representation of the typescript kind, of this group.

* @param title The title of this group.
* @param owningReflection The reflection containing this group, useful for changing rendering based on a comment on a reflection.
*/
constructor(title: string);
constructor(title: string, owningReflection: Reflection);
/**

@@ -33,0 +35,0 @@ * Do all children of this group have a separate document?

@@ -17,4 +17,6 @@ "use strict";

* @param title The title of this group.
* @param owningReflection The reflection containing this group, useful for changing rendering based on a comment on a reflection.
*/
constructor(title) {
constructor(title, owningReflection) {
this.owningReflection = owningReflection;
/**

@@ -21,0 +23,0 @@ * All reflections of this group.

@@ -103,2 +103,3 @@ import { Comment } from "../comments/comment";

* contains a list of all children grouped and sorted for rendering.
* @category Reflections
*/

@@ -211,3 +212,3 @@ export declare abstract class Reflection {

* Note: This may not necessarily traverse child reflections contained within the `type` property
* of the reflection, and should not be relied on for this. Support for checking object types will likely be removed in v0.25.
* of the reflection, and should not be relied on for this. Support for checking object types will likely be removed in v0.26.
*

@@ -214,0 +215,0 @@ * The given callback will be invoked for all children, signatures and type parameters

@@ -208,2 +208,3 @@ "use strict";

* contains a list of all children grouped and sorted for rendering.
* @category Reflections
*/

@@ -210,0 +211,0 @@ class Reflection {

@@ -7,2 +7,5 @@ import { Reflection, TraverseCallback } from "./abstract";

import type { DeclarationReflection } from "./declaration";
/**
* @category Reflections
*/
export declare abstract class ContainerReflection extends Reflection {

@@ -9,0 +12,0 @@ /**

@@ -7,2 +7,5 @@ "use strict";

const ReflectionGroup_1 = require("../ReflectionGroup");
/**
* @category Reflections
*/
class ContainerReflection extends abstract_1.Reflection {

@@ -36,3 +39,3 @@ /**

this.children = de.reviveMany(obj.children, (child) => de.constructReflection(child));
this.groups = de.reviveMany(obj.groups, (group) => new ReflectionGroup_1.ReflectionGroup(group.title));
this.groups = de.reviveMany(obj.groups, (group) => new ReflectionGroup_1.ReflectionGroup(group.title, this));
this.categories = de.reviveMany(obj.categories, (cat) => new ReflectionCategory_1.ReflectionCategory(cat.title));

@@ -39,0 +42,0 @@ }

@@ -41,2 +41,3 @@ import type * as ts from "typescript";

* kind of a reflection is stored in its ´kind´ member.
* @category Reflections
*/

@@ -43,0 +44,0 @@ export declare class DeclarationReflection extends ContainerReflection {

@@ -24,2 +24,3 @@ "use strict";

* kind of a reflection is stored in its ´kind´ member.
* @category Reflections
*/

@@ -26,0 +27,0 @@ class DeclarationReflection extends container_1.ContainerReflection {

import type { EnumKeys } from "../../utils";
/**
* Defines the available reflection kinds.
* @category Reflections
*/

@@ -27,7 +28,6 @@ export declare enum ReflectionKind {

SetSignature = 1048576,
/** @deprecated will be removed in v0.25, not used */
ObjectLiteral = 2097152,
TypeAlias = 4194304,
Reference = 8388608
TypeAlias = 2097152,
Reference = 4194304
}
/** @category Reflections */
export declare namespace ReflectionKind {

@@ -34,0 +34,0 @@ type KindString = EnumKeys<typeof ReflectionKind>;

@@ -6,2 +6,3 @@ "use strict";

* Defines the available reflection kinds.
* @category Reflections
*/

@@ -31,7 +32,6 @@ var ReflectionKind;

ReflectionKind[ReflectionKind["SetSignature"] = 1048576] = "SetSignature";
/** @deprecated will be removed in v0.25, not used */
ReflectionKind[ReflectionKind["ObjectLiteral"] = 2097152] = "ObjectLiteral";
ReflectionKind[ReflectionKind["TypeAlias"] = 4194304] = "TypeAlias";
ReflectionKind[ReflectionKind["Reference"] = 8388608] = "Reference";
ReflectionKind[ReflectionKind["TypeAlias"] = 2097152] = "TypeAlias";
ReflectionKind[ReflectionKind["Reference"] = 4194304] = "Reference";
})(ReflectionKind || (exports.ReflectionKind = ReflectionKind = {}));
/** @category Reflections */
(function (ReflectionKind) {

@@ -64,5 +64,3 @@ ReflectionKind.All = ReflectionKind.Reference * 2 - 1;

/** @internal */
ReflectionKind.SomeValue = ReflectionKind.Variable |
ReflectionKind.Function |
ReflectionKind.ObjectLiteral;
ReflectionKind.SomeValue = ReflectionKind.Variable | ReflectionKind.Function;
/** @internal */

@@ -69,0 +67,0 @@ ReflectionKind.SomeMember = ReflectionKind.EnumMember |

@@ -5,2 +5,5 @@ import type { SomeType } from "..";

import type { Serializer, JSONOutput, Deserializer } from "../../serialization";
/**
* @category Reflections
*/
export declare class ParameterReflection extends Reflection {

@@ -7,0 +10,0 @@ readonly variant = "param";

@@ -6,2 +6,5 @@ "use strict";

const abstract_1 = require("./abstract");
/**
* @category Reflections
*/
class ParameterReflection extends abstract_1.Reflection {

@@ -8,0 +11,0 @@ constructor() {

@@ -14,2 +14,3 @@ import { Reflection } from "./abstract";

* and source files of the processed project through this reflection.
* @category Reflections
*/

@@ -16,0 +17,0 @@ export declare class ProjectReflection extends ContainerReflection {

@@ -18,2 +18,3 @@ "use strict";

* and source files of the processed project through this reflection.
* @category Reflections
*/

@@ -199,3 +200,4 @@ class ProjectReflection extends container_1.ContainerReflection {

this.referenceGraph = new Map();
for (const ref of Object.values(this.reflections)) {
for (const id in this.reflections) {
const ref = this.reflections[id];
if (ref instanceof reference_1.ReferenceReflection) {

@@ -202,0 +204,0 @@ const target = ref.tryGetTargetReflection();

@@ -16,2 +16,3 @@ import { DeclarationReflection } from "./declaration";

* ```
* @category Reflections
*/

@@ -18,0 +19,0 @@ export declare class ReferenceReflection extends DeclarationReflection {

@@ -18,2 +18,3 @@ "use strict";

* ```
* @category Reflections
*/

@@ -20,0 +21,0 @@ class ReferenceReflection extends declaration_1.DeclarationReflection {

@@ -9,2 +9,5 @@ import { SomeType, ReferenceType } from "../types";

import { SourceReference } from "../sources/file";
/**
* @category Reflections
*/
export declare class SignatureReflection extends Reflection {

@@ -11,0 +14,0 @@ readonly variant = "signature";

@@ -7,2 +7,5 @@ "use strict";

const file_1 = require("../sources/file");
/**
* @category Reflections
*/
class SignatureReflection extends abstract_1.Reflection {

@@ -9,0 +12,0 @@ constructor(name, kind, parent) {

@@ -16,2 +16,5 @@ import type { SomeType } from "../types";

export type VarianceModifier = (typeof VarianceModifier)[keyof typeof VarianceModifier];
/**
* @category Reflections
*/
export declare class TypeParameterReflection extends Reflection {

@@ -18,0 +21,0 @@ readonly variant = "typeParam";

@@ -15,2 +15,5 @@ "use strict";

};
/**
* @category Reflections
*/
class TypeParameterReflection extends abstract_1.Reflection {

@@ -17,0 +20,0 @@ constructor(name, parent, varianceModifier) {

@@ -15,2 +15,3 @@ import type { Deserializer } from "../../serialization/deserializer";

* The absolute filename of the source file.
* @internal
*/

@@ -31,4 +32,5 @@ fullFileName: string;

constructor(fileName: string, line: number, character: number);
equals(other: SourceReference): boolean;
toObject(): JSONSourceReference;
fromObject(_de: Deserializer, obj: JSONSourceReference): void;
}

@@ -16,2 +16,7 @@ "use strict";

}
equals(other) {
return (this.fullFileName == other.fullFileName &&
this.line === other.line &&
this.character === other.character);
}
toObject() {

@@ -18,0 +23,0 @@ return {

@@ -11,2 +11,3 @@ import * as ts from "typescript";

* Base class of all type definitions.
* @category Types
*/

@@ -37,2 +38,3 @@ export declare abstract class Type {

}
/** @category Types */
export interface TypeKindMap {

@@ -64,3 +66,5 @@ array: ArrayType;

export declare function makeRecursiveVisitor(visitor: Partial<TypeVisitor>): TypeVisitor;
/** @category Types */
export type TypeKind = keyof TypeKindMap;
/** @category Types */
export type SomeType = TypeKindMap[keyof TypeKindMap];

@@ -104,2 +108,3 @@ /**

* ```
* @category Types
*/

@@ -123,2 +128,3 @@ export declare class ArrayType extends Type {

* ```
* @category Types
*/

@@ -138,2 +144,3 @@ export declare class ConditionalType extends Type {

* Represents an indexed access type.
* @category Types
*/

@@ -155,2 +162,3 @@ export declare class IndexedAccessType extends Type {

* ```
* @category Types
*/

@@ -172,2 +180,3 @@ export declare class InferredType extends Type {

* ```
* @category Types
*/

@@ -188,2 +197,3 @@ export declare class IntersectionType extends Type {

* ```
* @category Types
*/

@@ -205,2 +215,3 @@ export declare class IntrinsicType extends Type {

* ```
* @category Types
*/

@@ -224,2 +235,3 @@ export declare class LiteralType extends Type {

* ```
* @category Types
*/

@@ -245,2 +257,3 @@ export declare class MappedType extends Type {

* ```
* @category Types
*/

@@ -262,2 +275,3 @@ export declare class OptionalType extends Type {

* ```
* @category Types
*/

@@ -293,2 +307,3 @@ export declare class PredicateType extends Type {

* ```
* @category Types
*/

@@ -315,2 +330,3 @@ export declare class QueryType extends Type {

* ```
* @category Types
*/

@@ -393,2 +409,3 @@ export declare class ReferenceType extends Type {

* ```
* @category Types
*/

@@ -409,2 +426,3 @@ export declare class ReflectionType extends Type {

* ```
* @category Types
*/

@@ -424,2 +442,3 @@ export declare class RestType extends Type {

* ```
* @category Types
*/

@@ -441,2 +460,3 @@ export declare class TemplateLiteralType extends Type {

* ```
* @category Types
*/

@@ -460,2 +480,3 @@ export declare class TupleType extends Type {

* ```
* @category Types
*/

@@ -482,2 +503,3 @@ export declare class NamedTupleMember extends Type {

* ```
* @category Types
*/

@@ -499,2 +521,3 @@ export declare class TypeOperatorType extends Type {

* ```
* @category Types
*/

@@ -512,2 +535,3 @@ export declare class UnionType extends Type {

* Represents all unknown types that cannot be converted by TypeDoc.
* @category Types
*/

@@ -514,0 +538,0 @@ export declare class UnknownType extends Type {

@@ -33,2 +33,3 @@ "use strict";

* Base class of all type definitions.
* @category Types
*/

@@ -183,2 +184,3 @@ class Type {

* ```
* @category Types
*/

@@ -214,2 +216,3 @@ class ArrayType extends Type {

* ```
* @category Types
*/

@@ -277,2 +280,3 @@ class ConditionalType extends Type {

* Represents an indexed access type.
* @category Types
*/

@@ -312,2 +316,3 @@ class IndexedAccessType extends Type {

* ```
* @category Types
*/

@@ -370,2 +375,3 @@ class InferredType extends Type {

* ```
* @category Types
*/

@@ -425,2 +431,3 @@ class IntersectionType extends Type {

* ```
* @category Types
*/

@@ -454,2 +461,3 @@ class IntrinsicType extends Type {

* ```
* @category Types
*/

@@ -497,2 +505,3 @@ class LiteralType extends Type {

* ```
* @category Types
*/

@@ -557,2 +566,3 @@ class MappedType extends Type {

* ```
* @category Types
*/

@@ -586,2 +596,3 @@ class OptionalType extends Type {

* ```
* @category Types
*/

@@ -635,2 +646,3 @@ class PredicateType extends Type {

* ```
* @category Types
*/

@@ -669,2 +681,3 @@ class QueryType extends Type {

* ```
* @category Types
*/

@@ -845,2 +858,3 @@ class ReferenceType extends Type {

* ```
* @category Types
*/

@@ -881,2 +895,3 @@ class ReflectionType extends Type {

* ```
* @category Types
*/

@@ -908,2 +923,3 @@ class RestType extends Type {

* ```
* @category Types
*/

@@ -951,2 +967,3 @@ class TemplateLiteralType extends Type {

* ```
* @category Types
*/

@@ -986,2 +1003,3 @@ class TupleType extends Type {

* ```
* @category Types
*/

@@ -1022,2 +1040,3 @@ class NamedTupleMember extends Type {

* ```
* @category Types
*/

@@ -1077,2 +1096,3 @@ class TypeOperatorType extends Type {

* ```
* @category Types
*/

@@ -1148,2 +1168,3 @@ class UnionType extends Type {

* Represents all unknown types that cannot be converted by TypeDoc.
* @category Types
*/

@@ -1150,0 +1171,0 @@ class UnknownType extends Type {

@@ -67,4 +67,3 @@ "use strict";

else {
const relative = Path.relative(Path.dirname(this.location), Path.dirname(absolute));
return Path.join(relative, Path.basename(absolute)).replace(/\\/g, "/");
return Path.posix.relative(this.location, absolute) || ".";
}

@@ -86,3 +85,3 @@ }

onBeginPage(page) {
this.location = page.url;
this.location = Path.posix.dirname(page.url);
this.page = page;

@@ -89,0 +88,0 @@ }

import { Event } from "../utils/events";
import type { ProjectReflection } from "../models/reflections/project";
import type { RenderTemplate, UrlMapping } from "./models/UrlMapping";
import type { DeclarationReflection, ReflectionKind } from "../models";
import type { DeclarationReflection, Reflection, ReflectionKind } from "../models";
/**

@@ -26,3 +26,3 @@ * An event emitted by the {@link Renderer} class at the very beginning and

*/
urls?: UrlMapping[];
urls?: UrlMapping<Reflection>[];
/**

@@ -29,0 +29,0 @@ * Triggered before the renderer starts rendering a project.

@@ -22,3 +22,3 @@ "use strict";

*/
let AssetsPlugin = exports.AssetsPlugin = class AssetsPlugin extends components_1.RendererComponent {
let AssetsPlugin = class AssetsPlugin extends components_1.RendererComponent {
/**

@@ -58,2 +58,3 @@ * Create a new AssetsPlugin instance.

};
exports.AssetsPlugin = AssetsPlugin;
__decorate([

@@ -60,0 +61,0 @@ (0, utils_1.BindOption)("customCss")

@@ -45,3 +45,3 @@ "use strict";

*/
let JavascriptIndexPlugin = exports.JavascriptIndexPlugin = class JavascriptIndexPlugin extends components_1.RendererComponent {
let JavascriptIndexPlugin = class JavascriptIndexPlugin extends components_1.RendererComponent {
/**

@@ -142,2 +142,3 @@ * Create a new JavascriptIndexPlugin instance.

};
exports.JavascriptIndexPlugin = JavascriptIndexPlugin;
__decorate([

@@ -144,0 +145,0 @@ (0, utils_1.BindOption)("searchInComments")

@@ -53,2 +53,3 @@ "use strict";

const type_1 = require("./themes/default/partials/type");
const jsx_1 = require("../utils/jsx");
/**

@@ -86,3 +87,3 @@ * The renderer processes a {@link ProjectReflection} using a {@link Theme} instance and writes

*/
let Renderer = exports.Renderer = class Renderer extends component_1.ChildableComponent {
let Renderer = class Renderer extends component_1.ChildableComponent {
constructor() {

@@ -271,2 +272,3 @@ super(...arguments);

};
exports.Renderer = Renderer;
/** @event */

@@ -312,2 +314,1 @@ Renderer.EVENT_BEGIN_PAGE = events_1.PageEvent.BEGIN;

require("./plugins");
const jsx_1 = require("../utils/jsx");

@@ -38,3 +38,3 @@ import type { Renderer } from "./renderer";

*/
abstract getUrls(project: ProjectReflection): UrlMapping[];
abstract getUrls(project: ProjectReflection): UrlMapping<Reflection>[];
/**

@@ -41,0 +41,0 @@ * Renders the provided page to a string, which will be written to disk by the {@link Renderer}

@@ -20,3 +20,3 @@ "use strict";

*/
let Theme = exports.Theme = class Theme extends components_1.RendererComponent {
let Theme = class Theme extends components_1.RendererComponent {
/**

@@ -31,4 +31,5 @@ * Create a new BaseTheme instance.

};
exports.Theme = Theme;
exports.Theme = Theme = __decorate([
(0, component_1.Component)({ name: "theme", internal: true })
], Theme);
import type { PageEvent, RendererHooks } from "../..";
import { CommentDisplayPart, DeclarationReflection, ReferenceType, Reflection } from "../../../models";
import { CommentDisplayPart, DeclarationReflection, Reflection } from "../../../models";
import type { NeverIfInternal, Options } from "../../../utils";

@@ -16,8 +16,2 @@ import type { DefaultTheme } from "./DefaultTheme";

markdown: (md: readonly CommentDisplayPart[] | NeverIfInternal<string | undefined>) => string;
/**
* Using this method will repeat work already done, instead of calling it, use `type.externalUrl`.
* @deprecated
* Will be removed in 0.24.
*/
attemptExternalResolution: (type: NeverIfInternal<ReferenceType>) => string | undefined;
getReflectionClasses: (refl: DeclarationReflection) => string;

@@ -29,6 +23,5 @@ reflectionTemplate: (props: PageEvent<import("../../../models").ContainerReflection>) => import("../../../utils/jsx.elements").JsxElement;

breadcrumb: (props: Reflection) => import("../../../utils/jsx.elements").JsxElement | undefined;
/** @deprecated will be removed in 0.25 */
comment: (props: Reflection) => import("../../../utils/jsx.elements").JsxElement | undefined;
commentSummary: (props: Reflection) => import("../../../utils/jsx.elements").JsxElement | undefined;
commentTags: (props: Reflection) => import("../../../utils/jsx.elements").JsxElement | undefined;
reflectionFlags: (props: Reflection) => import("../../../utils/jsx.elements").JsxElement;
footer: () => import("../../../utils/jsx.elements").JsxElement | undefined;

@@ -35,0 +28,0 @@ header: (props: PageEvent<Reflection>) => import("../../../utils/jsx.elements").JsxElement;

@@ -58,10 +58,2 @@ "use strict";

};
/**
* Using this method will repeat work already done, instead of calling it, use `type.externalUrl`.
* @deprecated
* Will be removed in 0.24.
*/
this.attemptExternalResolution = (type) => {
return type.externalUrl;
};
this.getReflectionClasses = (refl) => this.theme.getReflectionClasses(refl);

@@ -73,6 +65,5 @@ this.reflectionTemplate = bind(reflection_1.reflectionTemplate, this);

this.breadcrumb = bind(breadcrumb_1.breadcrumb, this);
/** @deprecated will be removed in 0.25 */
this.comment = bind(comment_1.comment, this);
this.commentSummary = bind(comment_1.commentSummary, this);
this.commentTags = bind(comment_1.commentTags, this);
this.reflectionFlags = bind(comment_1.reflectionFlags, this);
this.footer = bind(footer_1.footer, this);

@@ -79,0 +70,0 @@ this.header = bind(header_1.header, this);

import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
import { JSX } from "../../../../utils";
import { Reflection } from "../../../../models";
export declare function comment({ markdown }: DefaultThemeRenderContext, props: Reflection): JSX.Element | undefined;
export declare function commentSummary({ markdown }: DefaultThemeRenderContext, props: Reflection): JSX.Element | undefined;
export declare function commentTags({ markdown }: DefaultThemeRenderContext, props: Reflection): JSX.Element | undefined;
export declare function reflectionFlags(_context: DefaultThemeRenderContext, props: Reflection): JSX.Element;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.commentTags = exports.commentSummary = exports.comment = void 0;
exports.reflectionFlags = exports.commentTags = exports.commentSummary = void 0;
const utils_1 = require("../../../../utils");

@@ -8,15 +8,2 @@ const models_1 = require("../../../../models");

// Note: Comment modifiers are handled in `renderFlags`
function comment({ markdown }, props) {
if (!props.comment?.hasVisibleComponent())
return;
const tags = props.kindOf(models_1.ReflectionKind.SomeSignature)
? props.comment.blockTags.filter((tag) => tag.tag !== "@returns")
: props.comment.blockTags;
return (utils_1.JSX.createElement("div", { class: "tsd-comment tsd-typography" },
utils_1.JSX.createElement(utils_1.Raw, { html: markdown(props.comment.summary) }),
tags.map((item) => (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
utils_1.JSX.createElement("h3", null, (0, lib_1.camelToTitleCase)(item.tag.substring(1))),
utils_1.JSX.createElement(utils_1.Raw, { html: markdown(item.content) }))))));
}
exports.comment = comment;
function commentSummary({ markdown }, props) {

@@ -40,1 +27,16 @@ if (!props.comment?.summary.some((part) => part.text))

exports.commentTags = commentTags;
const flagsNotRendered = ["@showCategories", "@showGroups", "@hideCategories", "@hideGroups"];
function reflectionFlags(_context, props) {
const allFlags = [...props.flags];
if (props.comment) {
for (const tag of props.comment.modifierTags) {
if (!flagsNotRendered.includes(tag)) {
allFlags.push((0, lib_1.camelToTitleCase)(tag.substring(1)));
}
}
}
return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null, allFlags.map((item) => (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
utils_1.JSX.createElement("code", { class: "tsd-tag ts-flag" + item }, item),
" ")))));
}
exports.reflectionFlags = reflectionFlags;

@@ -11,4 +11,4 @@ "use strict";

"Generated using ",
utils_1.JSX.createElement("a", { href: "https://typedoc.org/", target: "_blank" }, "TypeDoc"))));
utils_1.JSX.createElement("a", { href: "https://typedoc.org/", rel: "noopener", target: "_blank" }, "TypeDoc"))));
}
exports.footer = footer;

@@ -18,4 +18,4 @@ "use strict";

">")),
(0, lib_1.renderFlags)(props.model.flags, props.model.comment))));
context.reflectionFlags(props.model))));
};
exports.header = header;

@@ -54,5 +54,2 @@ "use strict";

[models_1.ReflectionKind.Namespace]: () => kindIcon(models_1.ReflectionKind.Namespace, utils_1.JSX.createElement("path", { d: "M9.33 16V7.24H10.77L13.446 14.74C13.43 14.54 13.41 14.296 13.386 14.008C13.37 13.712 13.354 13.404 13.338 13.084C13.33 12.756 13.326 12.448 13.326 12.16V7.24H14.37V16H12.93L10.266 8.5C10.282 8.692 10.298 8.936 10.314 9.232C10.33 9.52 10.342 9.828 10.35 10.156C10.366 10.476 10.374 10.784 10.374 11.08V16H9.33Z", fill: "var(--color-text)" }), "var(--color-ts-namespace)"),
[models_1.ReflectionKind.ObjectLiteral]() {
return this[models_1.ReflectionKind.Interface]();
},
[models_1.ReflectionKind.Parameter]() {

@@ -59,0 +56,0 @@ return this[models_1.ReflectionKind.Property]();

@@ -18,3 +18,3 @@ "use strict";

!!props.name && (utils_1.JSX.createElement("h3", { class: "tsd-anchor-link" },
(0, lib_1.renderFlags)(props.flags, props.comment),
context.reflectionFlags(props),
utils_1.JSX.createElement("span", { class: (0, lib_1.classNames)({ deprecated: props.isDeprecated() }) }, (0, lib_1.wbr)(props.name)),

@@ -21,0 +21,0 @@ (0, anchor_icon_1.anchorIcon)(context, props.anchor))),

@@ -10,3 +10,3 @@ "use strict";

return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
(0, lib_1.renderFlags)(props.flags, props.comment),
context.reflectionFlags(props),
context.commentSummary(props),

@@ -18,3 +18,3 @@ (0, lib_1.hasTypeParameters)(props) && context.typeParameters(props.typeParameters),

utils_1.JSX.createElement("h5", null,
(0, lib_1.renderFlags)(item.flags, item.comment),
context.reflectionFlags(item),
!!item.flags.isRest && utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "..."),

@@ -28,3 +28,3 @@ utils_1.JSX.createElement("span", { class: "tsd-kind-parameter" }, item.name),

context.commentSummary(item),
context.commentTags(item),
context.reflectionFlags(item),
item.type instanceof models_1.ReflectionType && context.parameter(item.type.declaration))))))),

@@ -31,0 +31,0 @@ props.type && (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,

@@ -8,4 +8,4 @@ import { Reflection } from "../../../../models";

export declare function settings(context: DefaultThemeRenderContext): JSX.Element;
export declare function navigation(context: DefaultThemeRenderContext, props: PageEvent<Reflection>): JSX.Element;
export declare const navigation: (context: DefaultThemeRenderContext, props: PageEvent<Reflection>) => JSX.Element;
export declare function pageSidebar(context: DefaultThemeRenderContext, props: PageEvent<Reflection>): JSX.Element;
export declare function pageNavigation(context: DefaultThemeRenderContext, props: PageEvent<Reflection>): JSX.Element;

@@ -24,3 +24,3 @@ "use strict";

return null;
return (utils_1.JSX.createElement("nav", { id: "tsd-sidebar-links", class: "tsd-navigation" }, links.map(([label, url]) => (utils_1.JSX.createElement("a", { href: url, target: "_blank" }, label)))));
return (utils_1.JSX.createElement("nav", { id: "tsd-sidebar-links", class: "tsd-navigation" }, links.map(([label, url]) => (utils_1.JSX.createElement("a", { href: url }, label)))));
}

@@ -66,3 +66,15 @@ exports.sidebarLinks = sidebarLinks;

exports.settings = settings;
function getNavigationElements(parent, opts) {
function shouldShowCategories(reflection, opts) {
if (opts.includeCategories) {
return !reflection.comment?.hasModifier("@hideCategories");
}
return reflection.comment?.hasModifier("@showCategories") === true;
}
function shouldShowGroups(reflection, opts) {
if (opts.includeGroups) {
return !reflection.comment?.hasModifier("@hideGroups");
}
return reflection.comment?.hasModifier("@showGroups") === true;
}
const getNavigationElements = function getNavigationElements(parent, opts) {
if (parent instanceof models_1.ReflectionCategory) {

@@ -72,3 +84,3 @@ return parent.children;

if (parent instanceof models_1.ReflectionGroup) {
if (opts.includeCategories && parent.categories) {
if (shouldShowCategories(parent.owningReflection, opts) && parent.categories) {
return parent.categories;

@@ -79,13 +91,13 @@ }

if (!parent.kindOf(models_1.ReflectionKind.SomeModule | models_1.ReflectionKind.Project)) {
return [];
return;
}
if (parent.categories && opts.includeCategories) {
if (parent.categories && shouldShowCategories(parent, opts)) {
return parent.categories;
}
if (parent.groups && opts.includeGroups) {
if (parent.groups && shouldShowGroups(parent, opts)) {
return parent.groups;
}
return parent.children || [];
}
function navigation(context, props) {
return parent.children;
};
const navigation = function navigation(context, props) {
const opts = context.options.getValue("navigation");

@@ -96,10 +108,11 @@ // Create the navigation for the current page

createNavElement(props.project),
utils_1.JSX.createElement("ul", { class: "tsd-small-nested-navigation" }, getNavigationElements(props.project, opts).map((c) => (utils_1.JSX.createElement("li", null, links(c, [])))))));
utils_1.JSX.createElement("ul", { class: "tsd-small-nested-navigation" }, getNavigationElements(props.project, opts)?.map((c) => utils_1.JSX.createElement("li", null, links(c, []))))));
function links(mod, parents) {
const nameClasses = (0, lib_1.classNames)({ deprecated: mod instanceof models_1.Reflection && mod.isDeprecated() }, mod instanceof models_1.DeclarationReflection ? context.getReflectionClasses(mod) : void 0);
const children = getNavigationElements(mod, opts);
if (!children.length || (!opts.fullTree && mod instanceof models_1.Reflection && !inPath(mod))) {
if (!children || (!opts.fullTree && mod instanceof models_1.Reflection && !inPath(mod))) {
return createNavElement(mod, nameClasses);
}
return (utils_1.JSX.createElement("details", { class: (0, lib_1.classNames)({ "tsd-index-accordion": true }, nameClasses), open: mod instanceof models_1.Reflection && inPath(mod), "data-key": mod instanceof models_1.Reflection ? mod.getFullName() : [...parents, mod.title].join("$") },
const childParents = mod instanceof models_1.Reflection ? [mod.getFullName()] : [...parents, mod.title];
return (utils_1.JSX.createElement("details", { class: (0, lib_1.classNames)({ "tsd-index-accordion": true }, nameClasses), open: mod instanceof models_1.Reflection && inPath(mod), "data-key": childParents.join("$") },
utils_1.JSX.createElement("summary", { class: "tsd-accordion-summary" },

@@ -109,3 +122,3 @@ context.icons.chevronDown(),

utils_1.JSX.createElement("div", { class: "tsd-accordion-details" },
utils_1.JSX.createElement("ul", { class: "tsd-nested-navigation" }, children.map((c) => (utils_1.JSX.createElement("li", null, links(c, mod instanceof models_1.Reflection ? [mod.getFullName()] : [...parents, mod.title]))))))));
utils_1.JSX.createElement("ul", { class: "tsd-nested-navigation" }, children.map((c) => (utils_1.JSX.createElement("li", null, links(c, childParents))))))));
}

@@ -129,3 +142,3 @@ function createNavElement(child, nameClasses) {

}
}
};
exports.navigation = navigation;

@@ -132,0 +145,0 @@ function pageSidebar(context, props) {

@@ -43,3 +43,3 @@ "use strict";

utils_1.JSX.createElement("h5", null,
(0, lib_1.renderFlags)(item.flags, item.comment),
context.reflectionFlags(item),
!!item.flags.isRest && utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "..."),

@@ -58,3 +58,3 @@ utils_1.JSX.createElement("span", { class: (0, lib_1.getKindClass)(item) }, (0, lib_1.wbr)(item.name)),

utils_1.JSX.createElement("h5", null,
(0, lib_1.renderFlags)(item.getSignature.flags, item.getSignature.comment),
context.reflectionFlags(item.getSignature),
utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "get "),

@@ -69,3 +69,3 @@ utils_1.JSX.createElement("span", { class: (0, lib_1.getKindClass)(item) }, (0, lib_1.wbr)(item.name)),

utils_1.JSX.createElement("h5", null,
(0, lib_1.renderFlags)(item.setSignature.flags, item.setSignature.comment),
context.reflectionFlags(item.setSignature),
utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "set "),

@@ -72,0 +72,0 @@ utils_1.JSX.createElement("span", { class: (0, lib_1.getKindClass)(item) }, (0, lib_1.wbr)(item.name)),

import type { DefaultThemeRenderContext } from "..";
import { Comment, Reflection, ReflectionFlags, TypeParameterReflection } from "../../models";
import { Reflection, TypeParameterReflection } from "../../models";
import { JSX } from "../../utils";

@@ -18,3 +18,2 @@ export declare function stringify(data: unknown): string;

export declare function join<T>(joiner: JSX.Children, list: readonly T[], cb: (x: T) => JSX.Children): JSX.Element;
export declare function renderFlags(flags: ReflectionFlags, comment: Comment | undefined): JSX.Element;
export declare function classNames(names: Record<string, boolean | null | undefined>, extraCss?: string): string | undefined;

@@ -21,0 +20,0 @@ export declare function hasTypeParameters(reflection: Reflection): reflection is Reflection & {

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.renderName = exports.camelToTitleCase = exports.renderTypeParametersSignature = exports.hasTypeParameters = exports.classNames = exports.renderFlags = exports.join = exports.wbr = exports.getKindClass = exports.toStyleClass = exports.getDisplayName = exports.stringify = void 0;
exports.renderName = exports.camelToTitleCase = exports.renderTypeParametersSignature = exports.hasTypeParameters = exports.classNames = exports.join = exports.wbr = exports.getKindClass = exports.toStyleClass = exports.getDisplayName = exports.stringify = void 0;
const models_1 = require("../../models");

@@ -65,12 +65,2 @@ const utils_1 = require("../../utils");

exports.join = join;
function renderFlags(flags, comment) {
const allFlags = [...flags];
if (comment) {
allFlags.push(...Array.from(comment.modifierTags, (tag) => tag.replace(/@([a-z])/, (x) => x[1].toUpperCase())));
}
return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null, allFlags.map((item) => (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
utils_1.JSX.createElement("code", { class: "tsd-tag ts-flag" + item }, item),
" ")))));
}
exports.renderFlags = renderFlags;
function classNames(names, extraCss) {

@@ -77,0 +67,0 @@ const css = Object.keys(names)

@@ -45,3 +45,3 @@ "use strict";

*/
let MarkedPlugin = exports.MarkedPlugin = class MarkedPlugin extends components_1.ContextAwareRendererComponent {
let MarkedPlugin = class MarkedPlugin extends components_1.ContextAwareRendererComponent {
constructor() {

@@ -193,2 +193,3 @@ super(...arguments);

};
exports.MarkedPlugin = MarkedPlugin;
__decorate([

@@ -195,0 +196,0 @@ (0, utils_1.BindOption)("includes")

@@ -60,5 +60,7 @@ /**

}
/** @category Reflections */
export type SomeReflection = {
[K in keyof M.ReflectionVariant]: ModelToObject<M.ReflectionVariant[K]>;
}[keyof M.ReflectionVariant];
/** @category Reflections */
export interface ReferenceReflection extends Omit<DeclarationReflection, "variant">, S<M.ReferenceReflection, "variant"> {

@@ -71,21 +73,30 @@ /**

}
/** @category Reflections */
export interface SignatureReflection extends Omit<Reflection, "variant">, S<M.SignatureReflection, "variant" | "sources" | "parameters" | "type" | "overwrites" | "inheritedFrom" | "implementationOf"> {
typeParameter?: ModelToObject<M.SignatureReflection["typeParameters"]>;
}
/** @category Reflections */
export interface ParameterReflection extends Omit<Reflection, "variant">, S<M.ParameterReflection, "variant" | "type" | "defaultValue"> {
variant: "param";
}
/** @category Reflections */
export interface DeclarationReflection extends Omit<ContainerReflection, "variant">, S<M.DeclarationReflection, "variant" | "packageVersion" | "sources" | "relevanceBoost" | "type" | "signatures" | "indexSignature" | "defaultValue" | "overwrites" | "inheritedFrom" | "implementationOf" | "extendedTypes" | "extendedBy" | "implementedTypes" | "implementedBy" | "getSignature" | "setSignature" | "typeParameters"> {
}
/** @category Reflections */
export interface TypeParameterReflection extends Omit<Reflection, "variant">, S<M.TypeParameterReflection, "variant" | "type" | "default" | "varianceModifier"> {
}
/** @category Reflections */
export interface ProjectReflection extends Omit<ContainerReflection, "variant">, S<M.ProjectReflection, "variant" | "packageName" | "packageVersion" | "readme"> {
symbolIdMap: Record<number, ReflectionSymbolId>;
}
/** @category Reflections */
export interface ContainerReflection extends Reflection, S<M.ContainerReflection, "children" | "groups" | "categories"> {
}
/** @category Reflections */
export interface Reflection extends S<M.Reflection, "id" | "variant" | "name" | "kind" | "comment"> {
flags: ReflectionFlags;
}
/** @category Types */
export type SomeType = ModelToObject<M.SomeType>;
/** @category Types */
export type TypeKindMap = {

@@ -113,20 +124,30 @@ array: ArrayType;

};
/** @category Types */
export interface ArrayType extends Type, S<M.ArrayType, "type" | "elementType"> {
}
/** @category Types */
export interface ConditionalType extends Type, S<M.ConditionalType, "type" | "checkType" | "extendsType" | "trueType" | "falseType"> {
}
/** @category Types */
export interface IndexedAccessType extends Type, S<M.IndexedAccessType, "type" | "indexType" | "objectType"> {
}
/** @category Types */
export interface InferredType extends Type, S<M.InferredType, "type" | "name" | "constraint"> {
}
/** @category Types */
export interface IntersectionType extends Type, S<M.IntersectionType, "type" | "types"> {
}
/** @category Types */
export interface IntrinsicType extends Type, S<M.IntrinsicType, "type" | "name"> {
}
/** @category Types */
export interface OptionalType extends Type, S<M.OptionalType, "type" | "elementType"> {
}
/** @category Types */
export interface PredicateType extends Type, S<M.PredicateType, "type" | "name" | "asserts" | "targetType"> {
}
/** @category Types */
export interface QueryType extends Type, S<M.QueryType, "type" | "queryType"> {
}
/** @category Types */
export interface ReferenceType extends Type, S<M.ReferenceType, "type" | "name" | "typeArguments" | "package" | "externalUrl"> {

@@ -137,24 +158,35 @@ target: number | ReflectionSymbolId;

}
/** @category Types */
export interface ReflectionType extends Type, S<M.ReflectionType, "type" | "declaration"> {
}
/** @category Types */
export interface RestType extends Type, S<M.RestType, "type" | "elementType"> {
}
/** @category Types */
export interface LiteralType extends Type, S<M.LiteralType, "type" | "value"> {
}
/** @category Types */
export interface TupleType extends Type, S<M.TupleType, "type"> {
elements?: ModelToObject<M.TupleType["elements"]>;
}
/** @category Types */
export interface NamedTupleMemberType extends Type, S<M.NamedTupleMember, "type" | "name" | "isOptional" | "element"> {
}
/** @category Types */
export interface TemplateLiteralType extends Type, S<M.TemplateLiteralType, "type" | "head"> {
tail: [SomeType, string][];
}
/** @category Types */
export interface MappedType extends Type, S<M.MappedType, "type" | "parameter" | "parameterType" | "templateType" | "readonlyModifier" | "optionalModifier" | "nameType"> {
}
/** @category Types */
export interface TypeOperatorType extends Type, S<M.TypeOperatorType, "type" | "operator" | "target"> {
}
/** @category Types */
export interface UnionType extends Type, S<M.UnionType, "type" | "types"> {
}
/** @category Types */
export interface UnknownType extends Type, S<M.UnknownType, "type" | "name"> {
}
/** @category Types */
export interface Type {

@@ -167,9 +199,12 @@ }

}
/** @category Comments */
export interface Comment extends Partial<S<M.Comment, "blockTags" | "label">> {
summary: CommentDisplayPart[];
modifierTags?: string[];
modifierTags?: `@${string}`[];
}
/** @category Comments */
export interface CommentTag extends S<M.CommentTag, "tag" | "name"> {
content: CommentDisplayPart[];
}
/** @category Comments */
export type CommentDisplayPart = {

@@ -185,2 +220,3 @@ kind: "text";

* `target` will only be set for `@link`, `@linkcode`, and `@linkplain` tags.
* @category Comments
*/

@@ -187,0 +223,0 @@ export interface InlineTagDisplayPart {

@@ -25,8 +25,2 @@ import ts from "typescript";

/**
* Will be removed in 0.25, this was called packages mode in 0.24.
* Alternative resolution mode useful for monorepos. With this mode, TypeDoc will look for a package.json
* and tsconfig.json under each provided entry point. The `main` field of each package will be documented.
*/
readonly LegacyPackages: "legacy-packages";
/**
* Merges multiple previously generated output from TypeDoc's --json output together into a single project.

@@ -33,0 +27,0 @@ */

@@ -33,3 +33,2 @@ "use strict";

const FS = __importStar(require("fs"));
const Path = __importStar(require("path"));
const package_manifest_1 = require("./package-manifest");

@@ -60,8 +59,2 @@ const paths_1 = require("./paths");

/**
* Will be removed in 0.25, this was called packages mode in 0.24.
* Alternative resolution mode useful for monorepos. With this mode, TypeDoc will look for a package.json
* and tsconfig.json under each provided entry point. The `main` field of each package will be documented.
*/
LegacyPackages: "legacy-packages",
/**
* Merges multiple previously generated output from TypeDoc's --json output together into a single project.

@@ -91,5 +84,2 @@ */

break;
case exports.EntryPointStrategy.LegacyPackages:
result = getEntryPointsForLegacyPackages(logger, entryPoints, options);
break;
case exports.EntryPointStrategy.Merge:

@@ -274,90 +264,1 @@ case exports.EntryPointStrategy.Packages:

}
/**
* Expand the provided packages configuration paths, determining the entry points
* and creating the ts.Programs for any which are found.
* @param logger
* @param packageGlobPaths
* @returns The information about the discovered programs, undefined if an error occurs.
*/
function getEntryPointsForLegacyPackages(logger, packageGlobPaths, options) {
const results = [];
for (const packagePath of getPackageDirectories(logger, options, packageGlobPaths)) {
const packageJsonPath = (0, path_1.resolve)(packagePath, "package.json");
const packageJson = (0, package_manifest_1.loadPackageManifest)(logger, packageJsonPath);
const includeVersion = options.getValue("includeVersion");
const typedocPackageConfig = packageJson
? (0, package_manifest_1.extractTypedocConfigFromPackageManifest)(logger, packageJsonPath)
: undefined;
if (packageJson === undefined) {
logger.error(`Could not load package manifest ${packageJsonPath}`);
return;
}
const packageEntryPoint = (0, package_manifest_1.getTsEntryPointForPackage)(logger, packageJsonPath, packageJson);
if (packageEntryPoint === undefined) {
logger.error(`Could not determine TS entry point for package ${packageJsonPath}`);
return;
}
if (packageEntryPoint === package_manifest_1.ignorePackage) {
continue;
}
const tsconfigFile = typescript_1.default.findConfigFile(packageEntryPoint, typescript_1.default.sys.fileExists, typedocPackageConfig?.tsconfig);
if (tsconfigFile === undefined) {
logger.error(`Could not determine tsconfig.json for source file ${packageEntryPoint} (it must be on an ancestor path)`);
return;
}
// Consider deduplicating this with similar code in src/lib/utils/options/readers/tsconfig.ts
let fatalError = false;
const parsedCommandLine = typescript_1.default.getParsedCommandLineOfConfigFile(tsconfigFile, {}, {
...typescript_1.default.sys,
onUnRecoverableConfigFileDiagnostic: (error) => {
logger.diagnostic(error);
fatalError = true;
},
});
if (!parsedCommandLine) {
return;
}
logger.diagnostics(parsedCommandLine.errors);
if (fatalError) {
return;
}
const program = typescript_1.default.createProgram({
rootNames: parsedCommandLine.fileNames,
options: options.fixCompilerOptions(parsedCommandLine.options),
projectReferences: parsedCommandLine.projectReferences,
});
const sourceFile = program.getSourceFile(packageEntryPoint);
if (sourceFile === undefined) {
logger.error(`Entry point "${packageEntryPoint}" does not appear to be built by/included in the tsconfig found at "${tsconfigFile}"`);
return;
}
const packageName = packageJson["name"];
results.push({
displayName: typedocPackageConfig?.displayName ?? packageName,
version: includeVersion
? packageJson["version"]?.replace(/^v/, "")
: void 0,
readmeFile: discoverReadmeFile(logger, Path.join(packageJsonPath, ".."), typedocPackageConfig?.readmeFile),
program,
sourceFile,
});
}
return results;
}
function discoverReadmeFile(logger, packageDir, userReadme) {
if (userReadme?.endsWith("none")) {
return;
}
if (userReadme) {
if (!FS.existsSync(Path.join(packageDir, userReadme))) {
logger.warn(`Failed to find ${userReadme} in ${(0, paths_1.nicePath)(packageDir)}`);
return;
}
return Path.resolve(Path.join(packageDir, userReadme));
}
for (const file of FS.readdirSync(packageDir)) {
if (file.toLowerCase() === "readme.md") {
return Path.resolve(Path.join(packageDir, file));
}
}
}

@@ -47,2 +47,2 @@ /**

}): void;
export declare function renderElement(element: JsxElement | null | undefined): string;
export declare const renderElement: (element: JsxElement | null | undefined) => string;

@@ -79,3 +79,3 @@ "use strict";

exports.setRenderSettings = setRenderSettings;
function renderElement(element) {
const renderElement = function renderElement(element) {
if (!element) {

@@ -91,8 +91,9 @@ return "";

}
const html = [];
let html = "";
if (tag !== jsx_elements_1.JsxFragment) {
if (blockElements.has(tag) && renderPretty) {
html.push("\n");
html += "\n";
}
html.push("<", tag);
html += "<";
html += tag;
for (const [key, val] of Object.entries(props ?? {})) {

@@ -103,7 +104,11 @@ if (val == null)

if (val) {
html.push(" ", key);
html += " ";
html += key;
}
}
else {
html.push(" ", key, "=", JSON.stringify(val));
html += " ";
html += key;
html += "=";
html += JSON.stringify(val);
}

@@ -116,3 +121,3 @@ }

if (tag !== jsx_elements_1.JsxFragment)
html.push(">");
html += ">";
renderChildren(children);

@@ -123,13 +128,17 @@ }

if (voidElements.has(tag)) {
html.push("/>");
html += "/>";
}
else {
html.push("></", tag, ">");
html += "></";
html += tag;
html += ">";
}
}
else {
html.push("</", tag, ">");
html += "</";
html += tag;
html += ">";
}
}
return html.join("");
return html;
function renderChildren(children) {

@@ -143,10 +152,10 @@ for (const child of children) {

else if (typeof child === "string" || typeof child === "number") {
html.push((0, html_1.escapeHtml)(child.toString()));
html += (0, html_1.escapeHtml)(child.toString());
}
else {
html.push(renderElement(child));
html += renderElement(child);
}
}
}
}
};
exports.renderElement = renderElement;

@@ -78,2 +78,3 @@ import type { Theme as ShikiTheme } from "shiki";

sourceLinkTemplate: string;
disableGit: boolean;
gitRevision: string;

@@ -120,2 +121,3 @@ gitRemote: string;

useTsLinkResolution: boolean;
preserveLinkText: boolean;
jsDocCompatibility: JsDocCompatibility;

@@ -228,3 +230,3 @@ blockTags: `@${string}`[];

/**
* An unopinionated object that preserves default settings unless explicitly overridden
* An object which partially merges user-set values into the defaults.
*/

@@ -231,0 +233,0 @@ Object = 10,

@@ -51,3 +51,3 @@ "use strict";

/**
* An unopinionated object that preserves default settings unless explicitly overridden
* An object which partially merges user-set values into the defaults.
*/

@@ -54,0 +54,0 @@ ParameterType[ParameterType["Object"] = 10] = "Object";

@@ -41,3 +41,3 @@ import type * as ts from "typescript";

*/
read(container: Options, logger: Logger, cwd: string): void;
read(container: Options, logger: Logger, cwd: string): void | Promise<void>;
}

@@ -72,3 +72,2 @@ /**

private _projectReferences;
private _logger;
/**

@@ -78,3 +77,3 @@ * In packages mode, the directory of the package being converted.

packageDir?: string;
constructor(logger: Logger);
constructor();
/**

@@ -107,7 +106,2 @@ * Clones the options, intended for use in packages mode.

/**
* Sets the logger used when an option declaration fails to be added.
* @param logger
*/
setLogger(logger: Logger): void;
/**
* Resets the option bag to all default values.

@@ -124,3 +118,3 @@ * If a name is provided, will only reset that name.

addReader(reader: OptionsReader): void;
read(logger: Logger, cwd?: string): void;
read(logger: Logger, cwd?: string): Promise<void>;
/**

@@ -127,0 +121,0 @@ * Adds an option declaration to the container with extra type checking to ensure that

@@ -31,3 +31,3 @@ "use strict";

class Options {
constructor(logger) {
constructor() {
this._readers = [];

@@ -40,3 +40,2 @@ this._declarations = new Map();

this._projectReferences = [];
this._logger = logger;
(0, sources_1.addTypeDocOptions)(this);

@@ -48,3 +47,3 @@ }

copyForPackage(packageDir) {
const options = new Options(this._logger);
const options = new Options();
options.packageDir = packageDir;

@@ -88,9 +87,2 @@ options._readers = this._readers.filter((reader) => reader.supportsPackages);

}
/**
* Sets the logger used when an option declaration fails to be added.
* @param logger
*/
setLogger(logger) {
this._logger = logger;
}
reset(name) {

@@ -122,5 +114,5 @@ if (name != null) {

}
read(logger, cwd = process.cwd()) {
async read(logger, cwd = process.cwd()) {
for (const reader of this._readers) {
reader.read(this, logger, cwd);
await reader.read(this, logger, cwd);
}

@@ -131,3 +123,3 @@ }

if (decl) {
this._logger.error(`The option ${declaration.name} has already been registered`);
throw new Error(`The option ${declaration.name} has already been registered`);
}

@@ -134,0 +126,0 @@ else {

@@ -6,3 +6,5 @@ import type { OptionsReader } from "..";

* Obtains option values from typedoc.json
* or typedoc.js (discouraged since ~0.14, don't fully deprecate until API has stabilized)
*
* Changes need to happen here at some point. I think we should follow ESLint's new config
* system eventually: https://eslint.org/blog/2022/08/new-config-system-part-1/
*/

@@ -19,3 +21,3 @@ export declare class TypeDocReader implements OptionsReader {

*/
read(container: Options, logger: Logger, cwd: string): void;
read(container: Options, logger: Logger, cwd: string): Promise<void>;
/**

@@ -22,0 +24,0 @@ * Read the given options file + any extended files.

@@ -37,5 +37,8 @@ "use strict";

const module_1 = require("module");
const url_1 = require("url");
/**
* Obtains option values from typedoc.json
* or typedoc.js (discouraged since ~0.14, don't fully deprecate until API has stabilized)
*
* Changes need to happen here at some point. I think we should follow ESLint's new config
* system eventually: https://eslint.org/blog/2022/08/new-config-system-part-1/
*/

@@ -54,3 +57,3 @@ class TypeDocReader {

*/
read(container, logger, cwd) {
async read(container, logger, cwd) {
const path = container.getValue("options") || cwd;

@@ -65,3 +68,3 @@ const file = this.findTypedocFile(path);

const seen = new Set();
this.readFile(file, container, logger, seen);
await this.readFile(file, container, logger, seen);
}

@@ -74,3 +77,3 @@ /**

*/
readFile(file, container, logger, seen) {
async readFile(file, container, logger, seen) {
if (seen.has(file)) {

@@ -93,4 +96,23 @@ logger.error(`Tried to load the options file ${(0, paths_1.nicePath)(file)} multiple times.`);

else {
// eslint-disable-next-line @typescript-eslint/no-var-requires
fileContent = require(file);
try {
try {
// eslint-disable-next-line @typescript-eslint/no-var-requires
fileContent = await require(file);
}
catch (error) {
if (error?.code === "ERR_REQUIRE_ESM") {
// On Windows, we need to ensure this path is a file path.
// Or we'll get ERR_UNSUPPORTED_ESM_URL_SCHEME
const esmPath = (0, url_1.pathToFileURL)(file).toString();
fileContent = await (await import(esmPath)).default;
}
else {
throw error;
}
}
}
catch (error) {
logger.error(`Failed to read ${(0, paths_1.nicePath)(file)}: ${error instanceof Error ? error.message : error}`);
return;
}
}

@@ -116,3 +138,3 @@ if (typeof fileContent !== "object" || !fileContent) {

}
this.readFile(resolvedParent, container, logger, seen);
await this.readFile(resolvedParent, container, logger, seen);
}

@@ -147,4 +169,6 @@ delete data["extends"];

(0, path_1.join)(path, "typedoc.config.cjs"),
(0, path_1.join)(path, "typedoc.config.mjs"),
(0, path_1.join)(path, "typedoc.js"),
(0, path_1.join)(path, "typedoc.cjs"),
(0, path_1.join)(path, "typedoc.mjs"),
(0, path_1.join)(path, ".config/typedoc.json"),

@@ -154,4 +178,6 @@ (0, path_1.join)(path, ".config/typedoc.jsonc"),

(0, path_1.join)(path, ".config/typedoc.config.cjs"),
(0, path_1.join)(path, ".config/typedoc.config.mjs"),
(0, path_1.join)(path, ".config/typedoc.js"),
(0, path_1.join)(path, ".config/typedoc.cjs"),
(0, path_1.join)(path, ".config/typedoc.mjs"),
].find(fs_1.isFile);

@@ -158,0 +184,0 @@ }

@@ -114,3 +114,2 @@ "use strict";

kind_1.ReflectionKind.Parameter,
kind_1.ReflectionKind.ObjectLiteral,
]) {

@@ -327,8 +326,13 @@ valid.delete(kind_1.ReflectionKind[notPermitted]);

options.addDeclaration({
name: "disableGit",
help: "Assume that all can be linked to with the sourceLinkTemplate, sourceLinkTemplate must be set if this is enabled. {path} will be rooted at basePath",
type: declaration_1.ParameterType.Boolean,
});
options.addDeclaration({
name: "gitRevision",
help: "Use specified revision instead of the last revision for linking to GitHub/Bitbucket source files.",
help: "Use specified revision instead of the last revision for linking to GitHub/Bitbucket source files. Has no effect if disableSources is set.",
});
options.addDeclaration({
name: "gitRemote",
help: "Use the specified remote for linking to GitHub/Bitbucket source files.",
help: "Use the specified remote for linking to GitHub/Bitbucket source files. Has no effect if disableGit or disableSources is set.",
defaultValue: "origin",

@@ -506,2 +510,8 @@ });

options.addDeclaration({
name: "preserveLinkText",
help: "If set, @link tags without link text will use the text content as the link. If not set, will use the target reflection name.",
type: declaration_1.ParameterType.Boolean,
defaultValue: true,
});
options.addDeclaration({
name: "blockTags",

@@ -546,3 +556,3 @@ help: "Block tags which TypeDoc should recognize when parsing comments.",

type: declaration_1.ParameterType.Boolean,
defaultValue: true, // 0.25, change this to false.
defaultValue: false,
});

@@ -549,0 +559,0 @@ options.addDeclaration({

@@ -6,2 +6,2 @@ export declare const tsdocBlockTags: readonly ["@deprecated", "@param", "@remarks", "@returns", "@throws", "@privateRemarks", "@defaultValue", "@typeParam"];

export declare const tsdocModifierTags: readonly ["@public", "@private", "@protected", "@internal", "@readonly", "@packageDocumentation", "@eventProperty", "@alpha", "@beta", "@experimental", "@sealed", "@override", "@virtual"];
export declare const modifierTags: readonly ["@public", "@private", "@protected", "@internal", "@readonly", "@packageDocumentation", "@eventProperty", "@alpha", "@beta", "@experimental", "@sealed", "@override", "@virtual", "@hidden", "@ignore", "@enum", "@event", "@overload", "@namespace", "@interface"];
export declare const modifierTags: readonly ["@public", "@private", "@protected", "@internal", "@readonly", "@packageDocumentation", "@eventProperty", "@alpha", "@beta", "@experimental", "@sealed", "@override", "@virtual", "@hidden", "@ignore", "@enum", "@event", "@overload", "@namespace", "@interface", "@showCategories", "@hideCategories", "@showGroups", "@hideGroups"];

@@ -57,2 +57,6 @@ "use strict";

"@interface",
"@showCategories",
"@hideCategories",
"@showGroups",
"@hideGroups",
];
import type { Logger } from "./loggers";
import type { Minimatch } from "minimatch";
import { additionalProperties, Infer } from "./validation";
/**

@@ -8,15 +7,3 @@ * Loads a package.json and validates that it is a JSON Object

export declare function loadPackageManifest(logger: Logger, packageJsonPath: string): Record<string, unknown> | undefined;
declare const typedocPackageManifestConfigSchema: {
displayName: import("./validation").Optional<StringConstructor>;
entryPoint: import("./validation").Optional<StringConstructor>;
readmeFile: import("./validation").Optional<StringConstructor>;
tsconfig: import("./validation").Optional<StringConstructor>;
[additionalProperties]: boolean;
};
export type TypedocPackageManifestConfig = Infer<typeof typedocPackageManifestConfigSchema>;
/**
* Extracts typedoc specific config from a specified package manifest
*/
export declare function extractTypedocConfigFromPackageManifest(logger: Logger, packageJsonPath: string): TypedocPackageManifestConfig | undefined;
/**
* Given a list of (potentially wildcarded) package paths,

@@ -26,13 +13,1 @@ * return all the actual package folders found.

export declare function expandPackages(logger: Logger, packageJsonDir: string, workspaces: string[], exclude: Minimatch[]): string[];
export declare const ignorePackage: unique symbol;
/**
* Given a package.json, attempt to find the TS file that defines its entry point
* The JS must be built with sourcemaps.
*
* When the TS file cannot be determined, the intention is to
* - Ignore things which don't appear to be `require`-able node packages.
* - Fail on things which appear to be `require`-able node packages but are missing
* the necessary metadata for us to document.
*/
export declare function getTsEntryPointForPackage(logger: Logger, packageJsonPath: string, packageJson: Record<string, unknown>): string | undefined | typeof ignorePackage;
export {};
"use strict";
// Utilities to support the inspection of node package "manifests"
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTsEntryPointForPackage = exports.ignorePackage = exports.expandPackages = exports.extractTypedocConfigFromPackageManifest = exports.loadPackageManifest = void 0;
exports.expandPackages = exports.loadPackageManifest = void 0;
const path_1 = require("path");
const fs_1 = require("fs");
const fs_2 = require("./fs");
const fs_1 = require("./fs");
const paths_1 = require("./paths");
const validation_1 = require("./validation");
/**

@@ -23,3 +21,3 @@ * Helper for the TS type system to understand hasOwnProperty

function loadPackageManifest(logger, packageJsonPath) {
const packageJson = JSON.parse((0, fs_2.readFile)(packageJsonPath));
const packageJson = JSON.parse((0, fs_1.readFile)(packageJsonPath));
if (typeof packageJson !== "object" || !packageJson) {

@@ -32,30 +30,3 @@ logger.error(`The file ${packageJsonPath} is not an object.`);

exports.loadPackageManifest = loadPackageManifest;
const typedocPackageManifestConfigSchema = {
displayName: (0, validation_1.optional)(String),
entryPoint: (0, validation_1.optional)(String),
readmeFile: (0, validation_1.optional)(String),
tsconfig: (0, validation_1.optional)(String),
[validation_1.additionalProperties]: false,
};
/**
* Extracts typedoc specific config from a specified package manifest
*/
function extractTypedocConfigFromPackageManifest(logger, packageJsonPath) {
const packageJson = loadPackageManifest(logger, packageJsonPath);
if (!packageJson) {
return undefined;
}
if (hasOwnProperty(packageJson, "typedoc") &&
typeof packageJson["typedoc"] == "object" &&
packageJson["typedoc"]) {
if (!(0, validation_1.validate)(typedocPackageManifestConfigSchema, packageJson["typedoc"])) {
logger.error(`Typedoc config extracted from package manifest file ${packageJsonPath} is not valid`);
return undefined;
}
return packageJson["typedoc"];
}
return undefined;
}
exports.extractTypedocConfigFromPackageManifest = extractTypedocConfigFromPackageManifest;
/**
* Load the paths to packages specified in a Yarn workspace package JSON

@@ -92,3 +63,3 @@ * Returns undefined if packageJSON does not define a Yarn workspace

return workspaces.flatMap((workspace) => {
const globbedPackageJsonPaths = (0, fs_2.glob)((0, path_1.resolve)(packageJsonDir, workspace, "package.json"), (0, path_1.resolve)(packageJsonDir));
const globbedPackageJsonPaths = (0, fs_1.glob)((0, path_1.resolve)(packageJsonDir, workspace, "package.json"), (0, path_1.resolve)(packageJsonDir));
if (globbedPackageJsonPaths.length === 0) {

@@ -98,3 +69,5 @@ logger.warn(`The entrypoint glob ${(0, paths_1.nicePath)(workspace)} did not match any directories containing package.json.`);

else {
logger.verbose(`Expanded ${(0, paths_1.nicePath)(workspace)} to:\n\t${globbedPackageJsonPaths.map(paths_1.nicePath).join("\n\t")}`);
logger.verbose(`Expanded ${(0, paths_1.nicePath)(workspace)} to:\n\t${globbedPackageJsonPaths
.map(paths_1.nicePath)
.join("\n\t")}`);
}

@@ -121,115 +94,1 @@ return globbedPackageJsonPaths.flatMap((packageJsonPath) => {

exports.expandPackages = expandPackages;
/**
* Finds the corresponding TS file from a transpiled JS file.
* The JS must be built with sourcemaps.
*/
function getTsSourceFromJsSource(logger, jsPath) {
const contents = (0, fs_2.readFile)(jsPath);
const sourceMapPrefix = "\n//# sourceMappingURL=";
const indexOfSourceMapPrefix = contents.indexOf(sourceMapPrefix);
if (indexOfSourceMapPrefix === -1) {
logger.verbose(`The file ${jsPath} does not contain a sourceMappingURL`);
return jsPath;
}
const endOfSourceMapPrefix = indexOfSourceMapPrefix + sourceMapPrefix.length;
const newLineIndex = contents.indexOf("\n", endOfSourceMapPrefix);
const sourceMapURL = contents.slice(endOfSourceMapPrefix, newLineIndex === -1 ? undefined : newLineIndex);
let resolvedSourceMapURL;
let sourceMap;
if (sourceMapURL.startsWith("data:application/json;base64,")) {
resolvedSourceMapURL = jsPath;
sourceMap = JSON.parse(Buffer.from(sourceMapURL.substring(sourceMapURL.indexOf(",") + 1), "base64").toString());
}
else {
resolvedSourceMapURL = (0, path_1.resolve)(jsPath, "..", sourceMapURL);
sourceMap = JSON.parse((0, fs_2.readFile)(resolvedSourceMapURL));
}
if (typeof sourceMap !== "object" || !sourceMap) {
logger.error(`The source map file ${resolvedSourceMapURL} is not an object.`);
return undefined;
}
if (!hasOwnProperty(sourceMap, "sources") ||
!Array.isArray(sourceMap.sources)) {
logger.error(`The source map ${resolvedSourceMapURL} does not contain "sources".`);
return undefined;
}
let sourceRoot;
if (hasOwnProperty(sourceMap, "sourceRoot") &&
typeof sourceMap.sourceRoot === "string") {
sourceRoot = sourceMap.sourceRoot;
}
// There's a pretty large assumption in here that we only have
// 1 source file per js file. This is a pretty standard typescript approach,
// but people might do interesting things with transpilation that could break this.
let source = sourceMap.sources[0];
// If we have a sourceRoot, trim any leading slash from the source, and join them
// Similar to how it's done at https://github.com/mozilla/source-map/blob/58819f09018d56ef84dc41ba9c93f554e0645169/lib/util.js#L412
if (sourceRoot !== undefined) {
source = source.replace(/^\//, "");
source = (0, path_1.join)(sourceRoot, source);
}
const sourcePath = (0, path_1.resolve)(resolvedSourceMapURL, "..", source);
return sourcePath;
}
// A Symbol used to communicate that this package should be ignored
exports.ignorePackage = Symbol("ignorePackage");
/**
* Given a package.json, attempt to find the TS file that defines its entry point
* The JS must be built with sourcemaps.
*
* When the TS file cannot be determined, the intention is to
* - Ignore things which don't appear to be `require`-able node packages.
* - Fail on things which appear to be `require`-able node packages but are missing
* the necessary metadata for us to document.
*/
function getTsEntryPointForPackage(logger, packageJsonPath, packageJson) {
let packageMain = "index.js"; // The default, per the npm docs.
let packageTypes = null;
const typedocPackageConfig = extractTypedocConfigFromPackageManifest(logger, packageJsonPath);
if (typedocPackageConfig?.entryPoint) {
packageMain = typedocPackageConfig.entryPoint;
}
else if ((0, validation_1.validate)({ typedocMain: String }, packageJson)) {
logger.warn(`Legacy typedoc entry point config (using "typedocMain" field) found for "${(0, paths_1.nicePath)(packageJsonPath)}". Please update to use "typedoc": { "entryPoint": "..." } instead. In future upgrade, "typedocMain" field will be ignored.`);
packageMain = packageJson.typedocMain;
}
else if ((0, validation_1.validate)({ main: String }, packageJson)) {
packageMain = packageJson.main;
}
else if ((0, validation_1.validate)({ types: String }, packageJson)) {
packageTypes = packageJson.types;
}
else if ((0, validation_1.validate)({ typings: String }, packageJson)) {
packageTypes = packageJson.typings;
}
let entryPointPath = (0, path_1.resolve)(packageJsonPath, "..", packageMain);
// The entryPointPath from the package manifest can be like a require path.
// It could end with .js, or it could end without .js, or it could be a folder containing an index.js
// We can use require.resolve to let node do its magic.
// Pass an empty `paths` as node_modules locations do not need to be examined
try {
entryPointPath = require.resolve(entryPointPath, { paths: [] });
if ((0, fs_2.hasTsExtension)(entryPointPath) && (0, fs_1.existsSync)(entryPointPath)) {
return entryPointPath;
}
}
catch (e) {
if (e.code !== "MODULE_NOT_FOUND") {
throw e;
}
else {
entryPointPath = (0, path_1.resolve)(packageJsonPath, "..", packageTypes ?? packageMain);
if (/\.([cm]?[tj]s|tsx?)$/.test(entryPointPath) &&
(0, fs_1.existsSync)(entryPointPath)) {
return entryPointPath;
}
else {
logger.warn(`Could not determine the entry point for "${packageJsonPath}". Package will be ignored.`);
logger.verbose(e.message);
return exports.ignorePackage;
}
}
}
return getTsSourceFromJsSource(logger, entryPointPath);
}
exports.getTsEntryPointForPackage = getTsEntryPointForPackage;

@@ -8,3 +8,4 @@ "use strict";

function bench(fn, name = fn.name) {
const timer = {
const matching = benchmarks.find((b) => b.name === name);
const timer = matching || {
name,

@@ -14,6 +15,8 @@ calls: 0,

};
benchmarks.push(timer);
if (!matching)
benchmarks.push(timer);
return function bench(...args) {
timer.calls++;
const start = perf_hooks_1.performance.now();
const end = () => (timer.time += perf_hooks_1.performance.now() - start);
let result;

@@ -23,5 +26,17 @@ try {

}
finally {
timer.time += perf_hooks_1.performance.now() - start;
catch (error) {
end();
throw error;
}
if (result instanceof Promise) {
result.then((res) => {
end();
return res;
}, () => {
end();
});
}
else {
end();
}
return result;

@@ -60,11 +75,11 @@ };

const width = benchmarks.reduce((a, b) => Math.max(a, b.name.length), 11);
console.log("=".repeat(width + 20));
console.log(`${"Benchmarked".padEnd(width)} | Calls | Time`);
console.log("=".repeat(width + 20));
console.log("=".repeat(width + 35));
console.log(`${"Benchmarked".padEnd(width)} | Calls | Time (ms) | Average (ms)`);
console.log("=".repeat(width + 35));
for (const { name, calls, time } of benchmarks) {
console.log(`${name.padEnd(width)} | ${calls
.toString()
.padEnd(5)} | ${time.toFixed(2)}ms`);
console.log(`${name.padEnd(width)} | ${calls.toString().padEnd(5)} | ${time
.toFixed(2)
.padEnd(9)} | ${(time / calls).toFixed(2)}`);
}
console.log("=".repeat(width + 20));
console.log("=".repeat(width + 35));
});

@@ -38,3 +38,2 @@ "use strict";

kind_1.ReflectionKind.Method,
kind_1.ReflectionKind.ObjectLiteral,
kind_1.ReflectionKind.Parameter,

@@ -41,0 +40,0 @@ kind_1.ReflectionKind.TypeParameter,

@@ -19,5 +19,13 @@ "use strict";

function validateLinks(project, logger) {
for (const reflection of Object.values(project.reflections)) {
for (const id in project.reflections) {
const reflection = project.reflections[id];
for (const broken of getBrokenLinks(reflection.comment)) {
logger.warn(`Failed to resolve link to "${broken}" in comment for ${reflection.getFriendlyFullName()}.`);
// #2360, "@" is a future reserved character in TSDoc component paths
// If a link starts with it, and doesn't include a module source indicator "!"
// then the user probably is trying to link to a package containing "@" with an absolute link.
let extra = "";
if (broken.startsWith("@") && !broken.includes("!")) {
extra = `\n\tYou may have wanted "${broken.replace(/[.#~]/, "!")}"`;
}
logger.warn(`Failed to resolve link to "${broken}" in comment for ${reflection.getFriendlyFullName()}.${extra}`);
}

@@ -24,0 +32,0 @@ }

{
"name": "typedoc",
"description": "Create api documentation for TypeScript projects.",
"version": "0.24.8",
"version": "0.25.0",
"homepage": "https://typedoc.org",

@@ -24,3 +24,3 @@ "exports": {

"engines": {
"node": ">= 14.14"
"node": ">= 16"
},

@@ -30,7 +30,7 @@ "dependencies": {

"marked": "^4.3.0",
"minimatch": "^9.0.0",
"minimatch": "^9.0.3",
"shiki": "^0.14.1"
},
"peerDependencies": {
"typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x"
"typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x"
},

@@ -41,14 +41,14 @@ "devDependencies": {

"@types/mocha": "^10.0.1",
"@types/node": "14",
"@typescript-eslint/eslint-plugin": "^5.58.0",
"@typescript-eslint/parser": "^5.58.0",
"@types/node": "16",
"@typescript-eslint/eslint-plugin": "^6.3.0",
"@typescript-eslint/parser": "^6.3.0",
"@typestrong/fs-fixture-builder": "github:TypeStrong/fs-fixture-builder#8abd1494280116ff5318dde2c50ad01e1663790c",
"c8": "^7.13.0",
"esbuild": "^0.17.16",
"eslint": "^8.38.0",
"c8": "^8.0.1",
"esbuild": "^0.19.0",
"eslint": "^8.46.0",
"mocha": "^10.2.0",
"prettier": "2.8.7",
"prettier": "3.0.1",
"puppeteer": "^13.5.2",
"ts-node": "^10.9.1",
"typescript": "5.1.3"
"typescript": "5.2.2"
},

@@ -55,0 +55,0 @@ "files": [

@@ -49,3 +49,3 @@ # TypeDoc

For a complete list of the command line arguments run `typedoc --help` or visit
[our website](https://typedoc.org/guides/options/).
[our website](https://typedoc.org/options/).

@@ -52,0 +52,0 @@ - `--out <path/to/documentation/>`<br>

"use strict";
"use strict";(()=>{var Se=Object.create;var re=Object.defineProperty;var we=Object.getOwnPropertyDescriptor;var Te=Object.getOwnPropertyNames;var ke=Object.getPrototypeOf,Qe=Object.prototype.hasOwnProperty;var Pe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Ie=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Te(e))!Qe.call(t,i)&&i!==r&&re(t,i,{get:()=>e[i],enumerable:!(n=we(e,i))||n.enumerable});return t};var Ce=(t,e,r)=>(r=t!=null?Se(ke(t)):{},Ie(e||!t||!t.__esModule?re(r,"default",{value:t,enumerable:!0}):r,t));var ae=Pe((se,oe)=>{(function(){var t=function(e){var r=new t.Builder;return r.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),r.searchPipeline.add(t.stemmer),e.call(r,r),r.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(r){e.console&&console.warn&&console.warn(r)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var r=Object.create(null),n=Object.keys(e),i=0;i<n.length;i++){var s=n[i],o=e[s];if(Array.isArray(o)){r[s]=o.slice();continue}if(typeof o=="string"||typeof o=="number"||typeof o=="boolean"){r[s]=o;continue}throw new TypeError("clone is not deep and does not support nested objects")}return r},t.FieldRef=function(e,r,n){this.docRef=e,this.fieldName=r,this._stringValue=n},t.FieldRef.joiner="/",t.FieldRef.fromString=function(e){var r=e.indexOf(t.FieldRef.joiner);if(r===-1)throw"malformed field ref string";var n=e.slice(0,r),i=e.slice(r+1);return new t.FieldRef(i,n,e)},t.FieldRef.prototype.toString=function(){return this._stringValue==null&&(this._stringValue=this.fieldName+t.FieldRef.joiner+this.docRef),this._stringValue};t.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var r=0;r<this.length;r++)this.elements[e[r]]=!0}else this.length=0},t.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},t.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},t.Set.prototype.contains=function(e){return!!this.elements[e]},t.Set.prototype.intersect=function(e){var r,n,i,s=[];if(e===t.Set.complete)return this;if(e===t.Set.empty)return e;this.length<e.length?(r=this,n=e):(r=e,n=this),i=Object.keys(r.elements);for(var o=0;o<i.length;o++){var a=i[o];a in n.elements&&s.push(a)}return new t.Set(s)},t.Set.prototype.union=function(e){return e===t.Set.complete?t.Set.complete:e===t.Set.empty?this:new t.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},t.idf=function(e,r){var n=0;for(var i in e)i!="_index"&&(n+=Object.keys(e[i]).length);var s=(r-n+.5)/(n+.5);return Math.log(1+Math.abs(s))},t.Token=function(e,r){this.str=e||"",this.metadata=r||{}},t.Token.prototype.toString=function(){return this.str},t.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},t.Token.prototype.clone=function(e){return e=e||function(r){return r},new t.Token(e(this.str,this.metadata),this.metadata)};t.tokenizer=function(e,r){if(e==null||e==null)return[];if(Array.isArray(e))return e.map(function(m){return new t.Token(t.utils.asString(m).toLowerCase(),t.utils.clone(r))});for(var n=e.toString().toLowerCase(),i=n.length,s=[],o=0,a=0;o<=i;o++){var l=n.charAt(o),u=o-a;if(l.match(t.tokenizer.separator)||o==i){if(u>0){var d=t.utils.clone(r)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(n.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,r){r in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+r),e.label=r,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var r=e.label&&e.label in this.registeredFunctions;r||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index.
`,e)},t.Pipeline.load=function(e){var r=new t.Pipeline;return e.forEach(function(n){var i=t.Pipeline.registeredFunctions[n];if(i)r.add(i);else throw new Error("Cannot load unregistered function: "+n)}),r},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(r){t.Pipeline.warnIfFunctionNotRegistered(r),this._stack.push(r)},this)},t.Pipeline.prototype.after=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");n=n+1,this._stack.splice(n,0,r)},t.Pipeline.prototype.before=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");this._stack.splice(n,0,r)},t.Pipeline.prototype.remove=function(e){var r=this._stack.indexOf(e);r!=-1&&this._stack.splice(r,1)},t.Pipeline.prototype.run=function(e){for(var r=this._stack.length,n=0;n<r;n++){for(var i=this._stack[n],s=[],o=0;o<e.length;o++){var a=i(e[o],o,e);if(!(a==null||a===""))if(Array.isArray(a))for(var l=0;l<a.length;l++)s.push(a[l]);else s.push(a)}e=s}return e},t.Pipeline.prototype.runString=function(e,r){var n=new t.Token(e,r);return this.run([n]).map(function(i){return i.toString()})},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})};t.Vector=function(e){this._magnitude=0,this.elements=e||[]},t.Vector.prototype.positionForIndex=function(e){if(this.elements.length==0)return 0;for(var r=0,n=this.elements.length/2,i=n-r,s=Math.floor(i/2),o=this.elements[s*2];i>1&&(o<e&&(r=s),o>e&&(n=s),o!=e);)i=n-r,s=r+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(o<e)return(s+1)*2},t.Vector.prototype.insert=function(e,r){this.upsert(e,r,function(){throw"duplicate index"})},t.Vector.prototype.upsert=function(e,r,n){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=n(this.elements[i+1],r):this.elements.splice(i,0,e,r)},t.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,r=this.elements.length,n=1;n<r;n+=2){var i=this.elements[n];e+=i*i}return this._magnitude=Math.sqrt(e)},t.Vector.prototype.dot=function(e){for(var r=0,n=this.elements,i=e.elements,s=n.length,o=i.length,a=0,l=0,u=0,d=0;u<s&&d<o;)a=n[u],l=i[d],a<l?u+=2:a>l?d+=2:a==l&&(r+=n[u+1]*i[d+1],u+=2,d+=2);return r},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),r=1,n=0;r<this.elements.length;r+=2,n++)e[n]=this.elements[r];return e},t.Vector.prototype.toJSON=function(){return this.elements};t.stemmer=function(){var e={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},r={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",s=n+"[^aeiouy]*",o=i+"[aeiou]*",a="^("+s+")?"+o+s,l="^("+s+")?"+o+s+"("+o+")?$",u="^("+s+")?"+o+s+o+s,d="^("+s+")?"+i,m=new RegExp(a),y=new RegExp(u),b=new RegExp(l),g=new RegExp(d),E=/^(.+?)(ss|i)es$/,f=/^(.+?)([^s])s$/,p=/^(.+?)eed$/,w=/^(.+?)(ed|ing)$/,S=/.$/,k=/(at|bl|iz)$/,_=new RegExp("([^aeiouylsz])\\1$"),B=new RegExp("^"+s+i+"[^aeiouwxy]$"),A=/^(.+?[^aeiou])y$/,j=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,q=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,V=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,$=/^(.+?)(s|t)(ion)$/,I=/^(.+?)e$/,z=/ll$/,W=new RegExp("^"+s+i+"[^aeiouwxy]$"),H=function(c){var v,C,T,h,x,O,F;if(c.length<3)return c;if(T=c.substr(0,1),T=="y"&&(c=T.toUpperCase()+c.substr(1)),h=E,x=f,h.test(c)?c=c.replace(h,"$1$2"):x.test(c)&&(c=c.replace(x,"$1$2")),h=p,x=w,h.test(c)){var L=h.exec(c);h=m,h.test(L[1])&&(h=S,c=c.replace(h,""))}else if(x.test(c)){var L=x.exec(c);v=L[1],x=g,x.test(v)&&(c=v,x=k,O=_,F=B,x.test(c)?c=c+"e":O.test(c)?(h=S,c=c.replace(h,"")):F.test(c)&&(c=c+"e"))}if(h=A,h.test(c)){var L=h.exec(c);v=L[1],c=v+"i"}if(h=j,h.test(c)){var L=h.exec(c);v=L[1],C=L[2],h=m,h.test(v)&&(c=v+e[C])}if(h=q,h.test(c)){var L=h.exec(c);v=L[1],C=L[2],h=m,h.test(v)&&(c=v+r[C])}if(h=V,x=$,h.test(c)){var L=h.exec(c);v=L[1],h=y,h.test(v)&&(c=v)}else if(x.test(c)){var L=x.exec(c);v=L[1]+L[2],x=y,x.test(v)&&(c=v)}if(h=I,h.test(c)){var L=h.exec(c);v=L[1],h=y,x=b,O=W,(h.test(v)||x.test(v)&&!O.test(v))&&(c=v)}return h=z,x=y,h.test(c)&&x.test(c)&&(h=S,c=c.replace(h,"")),T=="y"&&(c=T.toLowerCase()+c.substr(1)),c};return function(R){return R.update(H)}}(),t.Pipeline.registerFunction(t.stemmer,"stemmer");t.generateStopWordFilter=function(e){var r=e.reduce(function(n,i){return n[i]=i,n},{});return function(n){if(n&&r[n.toString()]!==n.toString())return n}},t.stopWordFilter=t.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter");t.trimmer=function(e){return e.update(function(r){return r.replace(/^\W+/,"").replace(/\W+$/,"")})},t.Pipeline.registerFunction(t.trimmer,"trimmer");t.TokenSet=function(){this.final=!1,this.edges={},this.id=t.TokenSet._nextId,t.TokenSet._nextId+=1},t.TokenSet._nextId=1,t.TokenSet.fromArray=function(e){for(var r=new t.TokenSet.Builder,n=0,i=e.length;n<i;n++)r.insert(e[n]);return r.finish(),r.root},t.TokenSet.fromClause=function(e){return"editDistance"in e?t.TokenSet.fromFuzzyString(e.term,e.editDistance):t.TokenSet.fromString(e.term)},t.TokenSet.fromFuzzyString=function(e,r){for(var n=new t.TokenSet,i=[{node:n,editsRemaining:r,str:e}];i.length;){var s=i.pop();if(s.str.length>0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),m=s.str.charAt(1),y;m in s.node.edges?y=s.node.edges[m]:(y=new t.TokenSet,s.node.edges[m]=y),s.str.length==1&&(y.final=!0),i.push({node:y,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return n},t.TokenSet.fromString=function(e){for(var r=new t.TokenSet,n=r,i=0,s=e.length;i<s;i++){var o=e[i],a=i==s-1;if(o=="*")r.edges[o]=r,r.final=a;else{var l=new t.TokenSet;l.final=a,r.edges[o]=l,r=l}}return n},t.TokenSet.prototype.toArray=function(){for(var e=[],r=[{prefix:"",node:this}];r.length;){var n=r.pop(),i=Object.keys(n.node.edges),s=i.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var o=0;o<s;o++){var a=i[o];r.push({prefix:n.prefix.concat(a),node:n.node.edges[a]})}}return e},t.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",r=Object.keys(this.edges).sort(),n=r.length,i=0;i<n;i++){var s=r[i],o=this.edges[s];e=e+s+o.id}return e},t.TokenSet.prototype.intersect=function(e){for(var r=new t.TokenSet,n=void 0,i=[{qNode:e,output:r,node:this}];i.length;){n=i.pop();for(var s=Object.keys(n.qNode.edges),o=s.length,a=Object.keys(n.node.edges),l=a.length,u=0;u<o;u++)for(var d=s[u],m=0;m<l;m++){var y=a[m];if(y==d||d=="*"){var b=n.node.edges[y],g=n.qNode.edges[d],E=b.final&&g.final,f=void 0;y in n.output.edges?(f=n.output.edges[y],f.final=f.final||E):(f=new t.TokenSet,f.final=E,n.output.edges[y]=f),i.push({qNode:g,output:f,node:b})}}}return r},t.TokenSet.Builder=function(){this.previousWord="",this.root=new t.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},t.TokenSet.Builder.prototype.insert=function(e){var r,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var i=0;i<e.length&&i<this.previousWord.length&&e[i]==this.previousWord[i];i++)n++;this.minimize(n),this.uncheckedNodes.length==0?r=this.root:r=this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(var i=n;i<e.length;i++){var s=new t.TokenSet,o=e[i];r.edges[o]=s,this.uncheckedNodes.push({parent:r,char:o,child:s}),r=s}r.final=!0,this.previousWord=e},t.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},t.TokenSet.Builder.prototype.minimize=function(e){for(var r=this.uncheckedNodes.length-1;r>=e;r--){var n=this.uncheckedNodes[r],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(r){var n=new t.QueryParser(e,r);n.parse()})},t.Index.prototype.query=function(e){for(var r=new t.Query(this.fields),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l<this.fields.length;l++)i[this.fields[l]]=new t.Vector;e.call(r,r);for(var l=0;l<r.clauses.length;l++){var u=r.clauses[l],d=null,m=t.Set.empty;u.usePipeline?d=this.pipeline.runString(u.term,{fields:u.fields}):d=[u.term];for(var y=0;y<d.length;y++){var b=d[y];u.term=b;var g=t.TokenSet.fromClause(u),E=this.tokenSet.intersect(g).toArray();if(E.length===0&&u.presence===t.Query.presence.REQUIRED){for(var f=0;f<u.fields.length;f++){var p=u.fields[f];o[p]=t.Set.empty}break}for(var w=0;w<E.length;w++)for(var S=E[w],k=this.invertedIndex[S],_=k._index,f=0;f<u.fields.length;f++){var p=u.fields[f],B=k[p],A=Object.keys(B),j=S+"/"+p,q=new t.Set(A);if(u.presence==t.Query.presence.REQUIRED&&(m=m.union(q),o[p]===void 0&&(o[p]=t.Set.complete)),u.presence==t.Query.presence.PROHIBITED){a[p]===void 0&&(a[p]=t.Set.empty),a[p]=a[p].union(q);continue}if(i[p].upsert(_,u.boost,function(Ee,be){return Ee+be}),!s[j]){for(var V=0;V<A.length;V++){var $=A[V],I=new t.FieldRef($,p),z=B[$],W;(W=n[I])===void 0?n[I]=new t.MatchData(S,p,z):W.add(S,p,z)}s[j]=!0}}}if(u.presence===t.Query.presence.REQUIRED)for(var f=0;f<u.fields.length;f++){var p=u.fields[f];o[p]=o[p].intersect(m)}}for(var H=t.Set.complete,R=t.Set.empty,l=0;l<this.fields.length;l++){var p=this.fields[l];o[p]&&(H=H.intersect(o[p])),a[p]&&(R=R.union(a[p]))}var c=Object.keys(n),v=[],C=Object.create(null);if(r.isNegated()){c=Object.keys(this.fieldVectors);for(var l=0;l<c.length;l++){var I=c[l],T=t.FieldRef.fromString(I);n[I]=new t.MatchData}}for(var l=0;l<c.length;l++){var T=t.FieldRef.fromString(c[l]),h=T.docRef;if(H.contains(h)&&!R.contains(h)){var x=this.fieldVectors[T],O=i[T.fieldName].similarity(x),F;if((F=C[h])!==void 0)F.score+=O,F.matchData.combine(n[T]);else{var L={ref:h,score:O,matchData:n[T]};C[h]=L,v.push(L)}}}return v.sort(function(xe,Le){return Le.score-xe.score})},t.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map(function(n){return[n,this.invertedIndex[n]]},this),r=Object.keys(this.fieldVectors).map(function(n){return[n,this.fieldVectors[n].toJSON()]},this);return{version:t.version,fields:this.fields,fieldVectors:r,invertedIndex:e,pipeline:this.pipeline.toJSON()}},t.Index.load=function(e){var r={},n={},i=e.fieldVectors,s=Object.create(null),o=e.invertedIndex,a=new t.TokenSet.Builder,l=t.Pipeline.load(e.pipeline);e.version!=t.version&&t.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+t.version+"' does not match serialized index '"+e.version+"'");for(var u=0;u<i.length;u++){var d=i[u],m=d[0],y=d[1];n[m]=new t.Vector(y)}for(var u=0;u<o.length;u++){var d=o[u],b=d[0],g=d[1];a.insert(b),s[b]=g}return a.finish(),r.fields=e.fields,r.fieldVectors=n,r.invertedIndex=s,r.tokenSet=a.root,r.pipeline=l,new t.Index(r)};t.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=t.tokenizer,this.pipeline=new t.Pipeline,this.searchPipeline=new t.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},t.Builder.prototype.ref=function(e){this._ref=e},t.Builder.prototype.field=function(e,r){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=r||{}},t.Builder.prototype.b=function(e){e<0?this._b=0:e>1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,r){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=r||{},this.documentCount+=1;for(var s=0;s<i.length;s++){var o=i[s],a=this._fields[o].extractor,l=a?a(e):e[o],u=this.tokenizer(l,{fields:[o]}),d=this.pipeline.run(u),m=new t.FieldRef(n,o),y=Object.create(null);this.fieldTermFrequencies[m]=y,this.fieldLengths[m]=0,this.fieldLengths[m]+=d.length;for(var b=0;b<d.length;b++){var g=d[b];if(y[g]==null&&(y[g]=0),y[g]+=1,this.invertedIndex[g]==null){var E=Object.create(null);E._index=this.termIndex,this.termIndex+=1;for(var f=0;f<i.length;f++)E[i[f]]=Object.create(null);this.invertedIndex[g]=E}this.invertedIndex[g][o][n]==null&&(this.invertedIndex[g][o][n]=Object.create(null));for(var p=0;p<this.metadataWhitelist.length;p++){var w=this.metadataWhitelist[p],S=g.metadata[w];this.invertedIndex[g][o][n][w]==null&&(this.invertedIndex[g][o][n][w]=[]),this.invertedIndex[g][o][n][w].push(S)}}}},t.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),r=e.length,n={},i={},s=0;s<r;s++){var o=t.FieldRef.fromString(e[s]),a=o.fieldName;i[a]||(i[a]=0),i[a]+=1,n[a]||(n[a]=0),n[a]+=this.fieldLengths[o]}for(var l=Object.keys(this._fields),s=0;s<l.length;s++){var u=l[s];n[u]=n[u]/i[u]}this.averageFieldLength=n},t.Builder.prototype.createFieldVectors=function(){for(var e={},r=Object.keys(this.fieldTermFrequencies),n=r.length,i=Object.create(null),s=0;s<n;s++){for(var o=t.FieldRef.fromString(r[s]),a=o.fieldName,l=this.fieldLengths[o],u=new t.Vector,d=this.fieldTermFrequencies[o],m=Object.keys(d),y=m.length,b=this._fields[a].boost||1,g=this._documents[o.docRef].boost||1,E=0;E<y;E++){var f=m[E],p=d[f],w=this.invertedIndex[f]._index,S,k,_;i[f]===void 0?(S=t.idf(this.invertedIndex[f],this.documentCount),i[f]=S):S=i[f],k=S*((this._k1+1)*p)/(this._k1*(1-this._b+this._b*(l/this.averageFieldLength[a]))+p),k*=b,k*=g,_=Math.round(k*1e3)/1e3,u.insert(w,_)}e[o]=u}this.fieldVectors=e},t.Builder.prototype.createTokenSet=function(){this.tokenSet=t.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},t.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new t.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},t.Builder.prototype.use=function(e){var r=Array.prototype.slice.call(arguments,1);r.unshift(this),e.apply(this,r)},t.MatchData=function(e,r,n){for(var i=Object.create(null),s=Object.keys(n||{}),o=0;o<s.length;o++){var a=s[o];i[a]=n[a].slice()}this.metadata=Object.create(null),e!==void 0&&(this.metadata[e]=Object.create(null),this.metadata[e][r]=i)},t.MatchData.prototype.combine=function(e){for(var r=Object.keys(e.metadata),n=0;n<r.length;n++){var i=r[n],s=Object.keys(e.metadata[i]);this.metadata[i]==null&&(this.metadata[i]=Object.create(null));for(var o=0;o<s.length;o++){var a=s[o],l=Object.keys(e.metadata[i][a]);this.metadata[i][a]==null&&(this.metadata[i][a]=Object.create(null));for(var u=0;u<l.length;u++){var d=l[u];this.metadata[i][a][d]==null?this.metadata[i][a][d]=e.metadata[i][a][d]:this.metadata[i][a][d]=this.metadata[i][a][d].concat(e.metadata[i][a][d])}}}},t.MatchData.prototype.add=function(e,r,n){if(!(e in this.metadata)){this.metadata[e]=Object.create(null),this.metadata[e][r]=n;return}if(!(r in this.metadata[e])){this.metadata[e][r]=n;return}for(var i=Object.keys(n),s=0;s<i.length;s++){var o=i[s];o in this.metadata[e][r]?this.metadata[e][r][o]=this.metadata[e][r][o].concat(n[o]):this.metadata[e][r][o]=n[o]}},t.Query=function(e){this.clauses=[],this.allFields=e},t.Query.wildcard=new String("*"),t.Query.wildcard.NONE=0,t.Query.wildcard.LEADING=1,t.Query.wildcard.TRAILING=2,t.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},t.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=t.Query.wildcard.NONE),e.wildcard&t.Query.wildcard.LEADING&&e.term.charAt(0)!=t.Query.wildcard&&(e.term="*"+e.term),e.wildcard&t.Query.wildcard.TRAILING&&e.term.slice(-1)!=t.Query.wildcard&&(e.term=""+e.term+"*"),"presence"in e||(e.presence=t.Query.presence.OPTIONAL),this.clauses.push(e),this},t.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=t.Query.presence.PROHIBITED)return!1;return!0},t.Query.prototype.term=function(e,r){if(Array.isArray(e))return e.forEach(function(i){this.term(i,t.utils.clone(r))},this),this;var n=r||{};return n.term=e.toString(),this.clause(n),this},t.QueryParseError=function(e,r,n){this.name="QueryParseError",this.message=e,this.start=r,this.end=n},t.QueryParseError.prototype=new Error,t.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},t.QueryLexer.prototype.run=function(){for(var e=t.QueryLexer.lexText;e;)e=e(this)},t.QueryLexer.prototype.sliceString=function(){for(var e=[],r=this.start,n=this.pos,i=0;i<this.escapeCharPositions.length;i++)n=this.escapeCharPositions[i],e.push(this.str.slice(r,n)),r=n+1;return e.push(this.str.slice(r,this.pos)),this.escapeCharPositions.length=0,e.join("")},t.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},t.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},t.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,r;do e=this.next(),r=e.charCodeAt(0);while(r>47&&r<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos<this.length},t.QueryLexer.EOS="EOS",t.QueryLexer.FIELD="FIELD",t.QueryLexer.TERM="TERM",t.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",t.QueryLexer.BOOST="BOOST",t.QueryLexer.PRESENCE="PRESENCE",t.QueryLexer.lexField=function(e){return e.backup(),e.emit(t.QueryLexer.FIELD),e.ignore(),t.QueryLexer.lexText},t.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var r=e.next();if(r==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(r.charCodeAt(0)==92){e.escapeCharacter();continue}if(r==":")return t.QueryLexer.lexField;if(r=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(r=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(r=="+"&&e.width()===1||r=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(r.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,r){this.lexer=new t.QueryLexer(e),this.query=r,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var r=e.peekLexeme();if(r!=null)switch(r.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(n+=" with value '"+r.str+"'"),new t.QueryParseError(n,r.start,r.end)}},t.QueryParser.parsePresence=function(e){var r=e.consumeLexeme();if(r!=null){switch(r.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+r.str+"'";throw new t.QueryParseError(n,r.start,r.end)}var i=e.peekLexeme();if(i==null){var n="expecting term or field, found nothing";throw new t.QueryParseError(n,r.start,r.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(n,i.start,i.end)}}},t.QueryParser.parseField=function(e){var r=e.consumeLexeme();if(r!=null){if(e.query.allFields.indexOf(r.str)==-1){var n=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+r.str+"', possible fields: "+n;throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.fields=[r.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,r.start,r.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var r=e.consumeLexeme();if(r!=null){e.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(n==null){e.nextClause();return}switch(n.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new t.QueryParseError(i,n.start,n.end)}}},t.QueryParser.parseEditDistance=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.editDistance=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="boost must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.boost=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,r){typeof define=="function"&&define.amd?define(r):typeof se=="object"?oe.exports=r():e.lunr=r()}(this,function(){return t})})()});var ne=[];function G(t,e){ne.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureActivePageVisible(),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible())}createComponents(e){ne.forEach(r=>{e.querySelectorAll(r.selector).forEach(n=>{n.dataset.hasInstance||(new r.constructor({el:n,app:this}),n.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),r=e?.parentElement;for(;r&&!r.classList.contains(".tsd-navigation");)r instanceof HTMLDetailsElement&&(r.open=!0),r=r.parentElement;if(e){let n=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=n}}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let r=e.parentElement;for(;r&&r.tagName!=="SECTION";)r=r.parentElement;if(r&&r.offsetParent==null){this.alwaysVisibleMember=r,r.classList.add("always-visible");let n=document.createElement("p");n.classList.add("warning"),n.textContent="This member is normally hidden due to your filter settings.",r.prepend(n)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let r;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(r),r=setTimeout(()=>{e.classList.remove("visible"),r=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let r;return()=>{clearTimeout(r),r=setTimeout(()=>t(),e)}};var ce=Ce(ae());function de(){let t=document.getElementById("tsd-search");if(!t)return;let e=document.getElementById("tsd-search-script");t.classList.add("loading"),e&&(e.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),e.addEventListener("load",()=>{t.classList.remove("loading"),t.classList.add("ready")}),window.searchData&&t.classList.remove("loading"));let r=document.querySelector("#tsd-search input"),n=document.querySelector("#tsd-search .results");if(!r||!n)throw new Error("The input field or the result list wrapper was not found");let i=!1;n.addEventListener("mousedown",()=>i=!0),n.addEventListener("mouseup",()=>{i=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{i||(i=!1,t.classList.remove("has-focus"))});let s={base:t.dataset.base+"/"};Oe(t,n,r,s)}function Oe(t,e,r,n){r.addEventListener("input",ie(()=>{Re(t,e,r,n)},200));let i=!1;r.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Fe(e,r):s.key=="Escape"?r.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),r.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!r.matches(":focus")&&s.key==="/"&&(r.focus(),s.preventDefault())})}function _e(t,e){t.index||window.searchData&&(e.classList.remove("loading"),e.classList.add("ready"),t.data=window.searchData,t.index=ce.Index.load(window.searchData.index))}function Re(t,e,r,n){if(_e(n,t),!n.index||!n.data)return;e.textContent="";let i=r.value.trim(),s=i?n.index.search(`*${i}*`):[];for(let o=0;o<s.length;o++){let a=s[o],l=n.data.rows[Number(a.ref)],u=1;l.name.toLowerCase().startsWith(i.toLowerCase())&&(u*=1+1/(1+Math.abs(l.name.length-i.length))),a.score*=u}s.sort((o,a)=>a.score-o.score);for(let o=0,a=Math.min(10,s.length);o<a;o++){let l=n.data.rows[Number(s[o].ref)],u=le(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(u+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(u=`<span class="parent">${le(l.parent,i)}.</span>${u}`);let d=document.createElement("li");d.classList.value=l.classes??"";let m=document.createElement("a");m.href=n.base+l.url,m.innerHTML=u,d.append(m),e.appendChild(d)}}function ue(t,e){let r=t.querySelector(".current");if(!r)r=t.querySelector(e==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let n=r;if(e===1)do n=n.nextElementSibling??void 0;while(n instanceof HTMLElement&&n.offsetParent==null);else do n=n.previousElementSibling??void 0;while(n instanceof HTMLElement&&n.offsetParent==null);n&&(r.classList.remove("current"),n.classList.add("current"))}}function Fe(t,e){let r=t.querySelector(".current");if(r||(r=t.querySelector("li:first-child")),r){let n=r.querySelector("a");n&&(window.location.href=n.href),e.blur()}}function le(t,e){if(e==="")return t;let r=t.toLocaleLowerCase(),n=e.toLocaleLowerCase(),i=[],s=0,o=r.indexOf(n);for(;o!=-1;)i.push(K(t.substring(s,o)),`<b>${K(t.substring(o,o+n.length))}</b>`),s=o+n.length,o=r.indexOf(n,s);return i.push(K(t.substring(s))),i.join("")}var Me={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#039;",'"':"&quot;"};function K(t){return t.replace(/[&<>"'"]/g,e=>Me[e])}var P=class{constructor(e){this.el=e.el,this.app=e.app}};var M="mousedown",fe="mousemove",N="mouseup",J={x:0,y:0},he=!1,ee=!1,De=!1,D=!1,pe=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(pe?"is-mobile":"not-mobile");pe&&"ontouchstart"in document.documentElement&&(De=!0,M="touchstart",fe="touchmove",N="touchend");document.addEventListener(M,t=>{ee=!0,D=!1;let e=M=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(fe,t=>{if(ee&&!D){let e=M=="touchstart"?t.targetTouches[0]:t,r=J.x-(e.pageX||0),n=J.y-(e.pageY||0);D=Math.sqrt(r*r+n*n)>10}});document.addEventListener(N,()=>{ee=!1});document.addEventListener("click",t=>{he&&(t.preventDefault(),t.stopImmediatePropagation(),he=!1)});var X=class extends P{constructor(r){super(r);this.className=this.el.dataset.toggle||"",this.el.addEventListener(N,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(M,n=>this.onDocumentPointerDown(n)),document.addEventListener(N,n=>this.onDocumentPointerUp(n))}setActive(r){if(this.active==r)return;this.active=r,document.documentElement.classList.toggle("has-"+this.className,r),this.el.classList.toggle("active",r);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(r){D||(this.setActive(!0),r.preventDefault())}onDocumentPointerDown(r){if(this.active){if(r.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(r){if(!D&&this.active&&r.target.closest(".col-sidebar")){let n=r.target.closest("a");if(n){let i=window.location.href;i.indexOf("#")!=-1&&(i=i.substring(0,i.indexOf("#"))),n.href.substring(0,i.length)==i&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var me=document.head.appendChild(document.createElement("style"));me.dataset.for="filters";var Y=class extends P{constructor(r){super(r);this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),me.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; }
`,e)},t.Pipeline.load=function(e){var r=new t.Pipeline;return e.forEach(function(n){var i=t.Pipeline.registeredFunctions[n];if(i)r.add(i);else throw new Error("Cannot load unregistered function: "+n)}),r},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(r){t.Pipeline.warnIfFunctionNotRegistered(r),this._stack.push(r)},this)},t.Pipeline.prototype.after=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");n=n+1,this._stack.splice(n,0,r)},t.Pipeline.prototype.before=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");this._stack.splice(n,0,r)},t.Pipeline.prototype.remove=function(e){var r=this._stack.indexOf(e);r!=-1&&this._stack.splice(r,1)},t.Pipeline.prototype.run=function(e){for(var r=this._stack.length,n=0;n<r;n++){for(var i=this._stack[n],s=[],o=0;o<e.length;o++){var a=i(e[o],o,e);if(!(a==null||a===""))if(Array.isArray(a))for(var l=0;l<a.length;l++)s.push(a[l]);else s.push(a)}e=s}return e},t.Pipeline.prototype.runString=function(e,r){var n=new t.Token(e,r);return this.run([n]).map(function(i){return i.toString()})},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})};t.Vector=function(e){this._magnitude=0,this.elements=e||[]},t.Vector.prototype.positionForIndex=function(e){if(this.elements.length==0)return 0;for(var r=0,n=this.elements.length/2,i=n-r,s=Math.floor(i/2),o=this.elements[s*2];i>1&&(o<e&&(r=s),o>e&&(n=s),o!=e);)i=n-r,s=r+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(o<e)return(s+1)*2},t.Vector.prototype.insert=function(e,r){this.upsert(e,r,function(){throw"duplicate index"})},t.Vector.prototype.upsert=function(e,r,n){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=n(this.elements[i+1],r):this.elements.splice(i,0,e,r)},t.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,r=this.elements.length,n=1;n<r;n+=2){var i=this.elements[n];e+=i*i}return this._magnitude=Math.sqrt(e)},t.Vector.prototype.dot=function(e){for(var r=0,n=this.elements,i=e.elements,s=n.length,o=i.length,a=0,l=0,u=0,d=0;u<s&&d<o;)a=n[u],l=i[d],a<l?u+=2:a>l?d+=2:a==l&&(r+=n[u+1]*i[d+1],u+=2,d+=2);return r},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),r=1,n=0;r<this.elements.length;r+=2,n++)e[n]=this.elements[r];return e},t.Vector.prototype.toJSON=function(){return this.elements};t.stemmer=function(){var e={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},r={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",s=n+"[^aeiouy]*",o=i+"[aeiou]*",a="^("+s+")?"+o+s,l="^("+s+")?"+o+s+"("+o+")?$",u="^("+s+")?"+o+s+o+s,d="^("+s+")?"+i,m=new RegExp(a),y=new RegExp(u),b=new RegExp(l),g=new RegExp(d),E=/^(.+?)(ss|i)es$/,f=/^(.+?)([^s])s$/,p=/^(.+?)eed$/,w=/^(.+?)(ed|ing)$/,S=/.$/,k=/(at|bl|iz)$/,_=new RegExp("([^aeiouylsz])\\1$"),B=new RegExp("^"+s+i+"[^aeiouwxy]$"),A=/^(.+?[^aeiou])y$/,j=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,q=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,V=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,$=/^(.+?)(s|t)(ion)$/,I=/^(.+?)e$/,z=/ll$/,W=new RegExp("^"+s+i+"[^aeiouwxy]$"),H=function(c){var v,C,T,h,x,O,F;if(c.length<3)return c;if(T=c.substr(0,1),T=="y"&&(c=T.toUpperCase()+c.substr(1)),h=E,x=f,h.test(c)?c=c.replace(h,"$1$2"):x.test(c)&&(c=c.replace(x,"$1$2")),h=p,x=w,h.test(c)){var L=h.exec(c);h=m,h.test(L[1])&&(h=S,c=c.replace(h,""))}else if(x.test(c)){var L=x.exec(c);v=L[1],x=g,x.test(v)&&(c=v,x=k,O=_,F=B,x.test(c)?c=c+"e":O.test(c)?(h=S,c=c.replace(h,"")):F.test(c)&&(c=c+"e"))}if(h=A,h.test(c)){var L=h.exec(c);v=L[1],c=v+"i"}if(h=j,h.test(c)){var L=h.exec(c);v=L[1],C=L[2],h=m,h.test(v)&&(c=v+e[C])}if(h=q,h.test(c)){var L=h.exec(c);v=L[1],C=L[2],h=m,h.test(v)&&(c=v+r[C])}if(h=V,x=$,h.test(c)){var L=h.exec(c);v=L[1],h=y,h.test(v)&&(c=v)}else if(x.test(c)){var L=x.exec(c);v=L[1]+L[2],x=y,x.test(v)&&(c=v)}if(h=I,h.test(c)){var L=h.exec(c);v=L[1],h=y,x=b,O=W,(h.test(v)||x.test(v)&&!O.test(v))&&(c=v)}return h=z,x=y,h.test(c)&&x.test(c)&&(h=S,c=c.replace(h,"")),T=="y"&&(c=T.toLowerCase()+c.substr(1)),c};return function(R){return R.update(H)}}(),t.Pipeline.registerFunction(t.stemmer,"stemmer");t.generateStopWordFilter=function(e){var r=e.reduce(function(n,i){return n[i]=i,n},{});return function(n){if(n&&r[n.toString()]!==n.toString())return n}},t.stopWordFilter=t.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter");t.trimmer=function(e){return e.update(function(r){return r.replace(/^\W+/,"").replace(/\W+$/,"")})},t.Pipeline.registerFunction(t.trimmer,"trimmer");t.TokenSet=function(){this.final=!1,this.edges={},this.id=t.TokenSet._nextId,t.TokenSet._nextId+=1},t.TokenSet._nextId=1,t.TokenSet.fromArray=function(e){for(var r=new t.TokenSet.Builder,n=0,i=e.length;n<i;n++)r.insert(e[n]);return r.finish(),r.root},t.TokenSet.fromClause=function(e){return"editDistance"in e?t.TokenSet.fromFuzzyString(e.term,e.editDistance):t.TokenSet.fromString(e.term)},t.TokenSet.fromFuzzyString=function(e,r){for(var n=new t.TokenSet,i=[{node:n,editsRemaining:r,str:e}];i.length;){var s=i.pop();if(s.str.length>0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),m=s.str.charAt(1),y;m in s.node.edges?y=s.node.edges[m]:(y=new t.TokenSet,s.node.edges[m]=y),s.str.length==1&&(y.final=!0),i.push({node:y,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return n},t.TokenSet.fromString=function(e){for(var r=new t.TokenSet,n=r,i=0,s=e.length;i<s;i++){var o=e[i],a=i==s-1;if(o=="*")r.edges[o]=r,r.final=a;else{var l=new t.TokenSet;l.final=a,r.edges[o]=l,r=l}}return n},t.TokenSet.prototype.toArray=function(){for(var e=[],r=[{prefix:"",node:this}];r.length;){var n=r.pop(),i=Object.keys(n.node.edges),s=i.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var o=0;o<s;o++){var a=i[o];r.push({prefix:n.prefix.concat(a),node:n.node.edges[a]})}}return e},t.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",r=Object.keys(this.edges).sort(),n=r.length,i=0;i<n;i++){var s=r[i],o=this.edges[s];e=e+s+o.id}return e},t.TokenSet.prototype.intersect=function(e){for(var r=new t.TokenSet,n=void 0,i=[{qNode:e,output:r,node:this}];i.length;){n=i.pop();for(var s=Object.keys(n.qNode.edges),o=s.length,a=Object.keys(n.node.edges),l=a.length,u=0;u<o;u++)for(var d=s[u],m=0;m<l;m++){var y=a[m];if(y==d||d=="*"){var b=n.node.edges[y],g=n.qNode.edges[d],E=b.final&&g.final,f=void 0;y in n.output.edges?(f=n.output.edges[y],f.final=f.final||E):(f=new t.TokenSet,f.final=E,n.output.edges[y]=f),i.push({qNode:g,output:f,node:b})}}}return r},t.TokenSet.Builder=function(){this.previousWord="",this.root=new t.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},t.TokenSet.Builder.prototype.insert=function(e){var r,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var i=0;i<e.length&&i<this.previousWord.length&&e[i]==this.previousWord[i];i++)n++;this.minimize(n),this.uncheckedNodes.length==0?r=this.root:r=this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(var i=n;i<e.length;i++){var s=new t.TokenSet,o=e[i];r.edges[o]=s,this.uncheckedNodes.push({parent:r,char:o,child:s}),r=s}r.final=!0,this.previousWord=e},t.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},t.TokenSet.Builder.prototype.minimize=function(e){for(var r=this.uncheckedNodes.length-1;r>=e;r--){var n=this.uncheckedNodes[r],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(r){var n=new t.QueryParser(e,r);n.parse()})},t.Index.prototype.query=function(e){for(var r=new t.Query(this.fields),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l<this.fields.length;l++)i[this.fields[l]]=new t.Vector;e.call(r,r);for(var l=0;l<r.clauses.length;l++){var u=r.clauses[l],d=null,m=t.Set.empty;u.usePipeline?d=this.pipeline.runString(u.term,{fields:u.fields}):d=[u.term];for(var y=0;y<d.length;y++){var b=d[y];u.term=b;var g=t.TokenSet.fromClause(u),E=this.tokenSet.intersect(g).toArray();if(E.length===0&&u.presence===t.Query.presence.REQUIRED){for(var f=0;f<u.fields.length;f++){var p=u.fields[f];o[p]=t.Set.empty}break}for(var w=0;w<E.length;w++)for(var S=E[w],k=this.invertedIndex[S],_=k._index,f=0;f<u.fields.length;f++){var p=u.fields[f],B=k[p],A=Object.keys(B),j=S+"/"+p,q=new t.Set(A);if(u.presence==t.Query.presence.REQUIRED&&(m=m.union(q),o[p]===void 0&&(o[p]=t.Set.complete)),u.presence==t.Query.presence.PROHIBITED){a[p]===void 0&&(a[p]=t.Set.empty),a[p]=a[p].union(q);continue}if(i[p].upsert(_,u.boost,function(Ee,be){return Ee+be}),!s[j]){for(var V=0;V<A.length;V++){var $=A[V],I=new t.FieldRef($,p),z=B[$],W;(W=n[I])===void 0?n[I]=new t.MatchData(S,p,z):W.add(S,p,z)}s[j]=!0}}}if(u.presence===t.Query.presence.REQUIRED)for(var f=0;f<u.fields.length;f++){var p=u.fields[f];o[p]=o[p].intersect(m)}}for(var H=t.Set.complete,R=t.Set.empty,l=0;l<this.fields.length;l++){var p=this.fields[l];o[p]&&(H=H.intersect(o[p])),a[p]&&(R=R.union(a[p]))}var c=Object.keys(n),v=[],C=Object.create(null);if(r.isNegated()){c=Object.keys(this.fieldVectors);for(var l=0;l<c.length;l++){var I=c[l],T=t.FieldRef.fromString(I);n[I]=new t.MatchData}}for(var l=0;l<c.length;l++){var T=t.FieldRef.fromString(c[l]),h=T.docRef;if(H.contains(h)&&!R.contains(h)){var x=this.fieldVectors[T],O=i[T.fieldName].similarity(x),F;if((F=C[h])!==void 0)F.score+=O,F.matchData.combine(n[T]);else{var L={ref:h,score:O,matchData:n[T]};C[h]=L,v.push(L)}}}return v.sort(function(xe,Le){return Le.score-xe.score})},t.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map(function(n){return[n,this.invertedIndex[n]]},this),r=Object.keys(this.fieldVectors).map(function(n){return[n,this.fieldVectors[n].toJSON()]},this);return{version:t.version,fields:this.fields,fieldVectors:r,invertedIndex:e,pipeline:this.pipeline.toJSON()}},t.Index.load=function(e){var r={},n={},i=e.fieldVectors,s=Object.create(null),o=e.invertedIndex,a=new t.TokenSet.Builder,l=t.Pipeline.load(e.pipeline);e.version!=t.version&&t.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+t.version+"' does not match serialized index '"+e.version+"'");for(var u=0;u<i.length;u++){var d=i[u],m=d[0],y=d[1];n[m]=new t.Vector(y)}for(var u=0;u<o.length;u++){var d=o[u],b=d[0],g=d[1];a.insert(b),s[b]=g}return a.finish(),r.fields=e.fields,r.fieldVectors=n,r.invertedIndex=s,r.tokenSet=a.root,r.pipeline=l,new t.Index(r)};t.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=t.tokenizer,this.pipeline=new t.Pipeline,this.searchPipeline=new t.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},t.Builder.prototype.ref=function(e){this._ref=e},t.Builder.prototype.field=function(e,r){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=r||{}},t.Builder.prototype.b=function(e){e<0?this._b=0:e>1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,r){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=r||{},this.documentCount+=1;for(var s=0;s<i.length;s++){var o=i[s],a=this._fields[o].extractor,l=a?a(e):e[o],u=this.tokenizer(l,{fields:[o]}),d=this.pipeline.run(u),m=new t.FieldRef(n,o),y=Object.create(null);this.fieldTermFrequencies[m]=y,this.fieldLengths[m]=0,this.fieldLengths[m]+=d.length;for(var b=0;b<d.length;b++){var g=d[b];if(y[g]==null&&(y[g]=0),y[g]+=1,this.invertedIndex[g]==null){var E=Object.create(null);E._index=this.termIndex,this.termIndex+=1;for(var f=0;f<i.length;f++)E[i[f]]=Object.create(null);this.invertedIndex[g]=E}this.invertedIndex[g][o][n]==null&&(this.invertedIndex[g][o][n]=Object.create(null));for(var p=0;p<this.metadataWhitelist.length;p++){var w=this.metadataWhitelist[p],S=g.metadata[w];this.invertedIndex[g][o][n][w]==null&&(this.invertedIndex[g][o][n][w]=[]),this.invertedIndex[g][o][n][w].push(S)}}}},t.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),r=e.length,n={},i={},s=0;s<r;s++){var o=t.FieldRef.fromString(e[s]),a=o.fieldName;i[a]||(i[a]=0),i[a]+=1,n[a]||(n[a]=0),n[a]+=this.fieldLengths[o]}for(var l=Object.keys(this._fields),s=0;s<l.length;s++){var u=l[s];n[u]=n[u]/i[u]}this.averageFieldLength=n},t.Builder.prototype.createFieldVectors=function(){for(var e={},r=Object.keys(this.fieldTermFrequencies),n=r.length,i=Object.create(null),s=0;s<n;s++){for(var o=t.FieldRef.fromString(r[s]),a=o.fieldName,l=this.fieldLengths[o],u=new t.Vector,d=this.fieldTermFrequencies[o],m=Object.keys(d),y=m.length,b=this._fields[a].boost||1,g=this._documents[o.docRef].boost||1,E=0;E<y;E++){var f=m[E],p=d[f],w=this.invertedIndex[f]._index,S,k,_;i[f]===void 0?(S=t.idf(this.invertedIndex[f],this.documentCount),i[f]=S):S=i[f],k=S*((this._k1+1)*p)/(this._k1*(1-this._b+this._b*(l/this.averageFieldLength[a]))+p),k*=b,k*=g,_=Math.round(k*1e3)/1e3,u.insert(w,_)}e[o]=u}this.fieldVectors=e},t.Builder.prototype.createTokenSet=function(){this.tokenSet=t.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},t.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new t.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},t.Builder.prototype.use=function(e){var r=Array.prototype.slice.call(arguments,1);r.unshift(this),e.apply(this,r)},t.MatchData=function(e,r,n){for(var i=Object.create(null),s=Object.keys(n||{}),o=0;o<s.length;o++){var a=s[o];i[a]=n[a].slice()}this.metadata=Object.create(null),e!==void 0&&(this.metadata[e]=Object.create(null),this.metadata[e][r]=i)},t.MatchData.prototype.combine=function(e){for(var r=Object.keys(e.metadata),n=0;n<r.length;n++){var i=r[n],s=Object.keys(e.metadata[i]);this.metadata[i]==null&&(this.metadata[i]=Object.create(null));for(var o=0;o<s.length;o++){var a=s[o],l=Object.keys(e.metadata[i][a]);this.metadata[i][a]==null&&(this.metadata[i][a]=Object.create(null));for(var u=0;u<l.length;u++){var d=l[u];this.metadata[i][a][d]==null?this.metadata[i][a][d]=e.metadata[i][a][d]:this.metadata[i][a][d]=this.metadata[i][a][d].concat(e.metadata[i][a][d])}}}},t.MatchData.prototype.add=function(e,r,n){if(!(e in this.metadata)){this.metadata[e]=Object.create(null),this.metadata[e][r]=n;return}if(!(r in this.metadata[e])){this.metadata[e][r]=n;return}for(var i=Object.keys(n),s=0;s<i.length;s++){var o=i[s];o in this.metadata[e][r]?this.metadata[e][r][o]=this.metadata[e][r][o].concat(n[o]):this.metadata[e][r][o]=n[o]}},t.Query=function(e){this.clauses=[],this.allFields=e},t.Query.wildcard=new String("*"),t.Query.wildcard.NONE=0,t.Query.wildcard.LEADING=1,t.Query.wildcard.TRAILING=2,t.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},t.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=t.Query.wildcard.NONE),e.wildcard&t.Query.wildcard.LEADING&&e.term.charAt(0)!=t.Query.wildcard&&(e.term="*"+e.term),e.wildcard&t.Query.wildcard.TRAILING&&e.term.slice(-1)!=t.Query.wildcard&&(e.term=""+e.term+"*"),"presence"in e||(e.presence=t.Query.presence.OPTIONAL),this.clauses.push(e),this},t.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=t.Query.presence.PROHIBITED)return!1;return!0},t.Query.prototype.term=function(e,r){if(Array.isArray(e))return e.forEach(function(i){this.term(i,t.utils.clone(r))},this),this;var n=r||{};return n.term=e.toString(),this.clause(n),this},t.QueryParseError=function(e,r,n){this.name="QueryParseError",this.message=e,this.start=r,this.end=n},t.QueryParseError.prototype=new Error,t.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},t.QueryLexer.prototype.run=function(){for(var e=t.QueryLexer.lexText;e;)e=e(this)},t.QueryLexer.prototype.sliceString=function(){for(var e=[],r=this.start,n=this.pos,i=0;i<this.escapeCharPositions.length;i++)n=this.escapeCharPositions[i],e.push(this.str.slice(r,n)),r=n+1;return e.push(this.str.slice(r,this.pos)),this.escapeCharPositions.length=0,e.join("")},t.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},t.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},t.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,r;do e=this.next(),r=e.charCodeAt(0);while(r>47&&r<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos<this.length},t.QueryLexer.EOS="EOS",t.QueryLexer.FIELD="FIELD",t.QueryLexer.TERM="TERM",t.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",t.QueryLexer.BOOST="BOOST",t.QueryLexer.PRESENCE="PRESENCE",t.QueryLexer.lexField=function(e){return e.backup(),e.emit(t.QueryLexer.FIELD),e.ignore(),t.QueryLexer.lexText},t.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var r=e.next();if(r==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(r.charCodeAt(0)==92){e.escapeCharacter();continue}if(r==":")return t.QueryLexer.lexField;if(r=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(r=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(r=="+"&&e.width()===1||r=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(r.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,r){this.lexer=new t.QueryLexer(e),this.query=r,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var r=e.peekLexeme();if(r!=null)switch(r.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(n+=" with value '"+r.str+"'"),new t.QueryParseError(n,r.start,r.end)}},t.QueryParser.parsePresence=function(e){var r=e.consumeLexeme();if(r!=null){switch(r.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+r.str+"'";throw new t.QueryParseError(n,r.start,r.end)}var i=e.peekLexeme();if(i==null){var n="expecting term or field, found nothing";throw new t.QueryParseError(n,r.start,r.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(n,i.start,i.end)}}},t.QueryParser.parseField=function(e){var r=e.consumeLexeme();if(r!=null){if(e.query.allFields.indexOf(r.str)==-1){var n=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+r.str+"', possible fields: "+n;throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.fields=[r.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,r.start,r.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var r=e.consumeLexeme();if(r!=null){e.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(n==null){e.nextClause();return}switch(n.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new t.QueryParseError(i,n.start,n.end)}}},t.QueryParser.parseEditDistance=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.editDistance=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="boost must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.boost=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,r){typeof define=="function"&&define.amd?define(r):typeof se=="object"?oe.exports=r():e.lunr=r()}(this,function(){return t})})()});var ne=[];function G(t,e){ne.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureActivePageVisible(),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible())}createComponents(e){ne.forEach(r=>{e.querySelectorAll(r.selector).forEach(n=>{n.dataset.hasInstance||(new r.constructor({el:n,app:this}),n.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),r=e?.parentElement;for(;r&&!r.classList.contains(".tsd-navigation");)r instanceof HTMLDetailsElement&&(r.open=!0),r=r.parentElement;if(e){let n=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=n}}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let r=e.parentElement;for(;r&&r.tagName!=="SECTION";)r=r.parentElement;if(r&&r.offsetParent==null){this.alwaysVisibleMember=r,r.classList.add("always-visible");let n=document.createElement("p");n.classList.add("warning"),n.textContent="This member is normally hidden due to your filter settings.",r.prepend(n)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let r;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(r),r=setTimeout(()=>{e.classList.remove("visible"),r=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let r;return()=>{clearTimeout(r),r=setTimeout(()=>t(),e)}};var ce=Ce(ae());function de(){let t=document.getElementById("tsd-search");if(!t)return;let e=document.getElementById("tsd-search-script");t.classList.add("loading"),e&&(e.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),e.addEventListener("load",()=>{t.classList.remove("loading"),t.classList.add("ready")}),window.searchData&&t.classList.remove("loading"));let r=document.querySelector("#tsd-search input"),n=document.querySelector("#tsd-search .results");if(!r||!n)throw new Error("The input field or the result list wrapper was not found");let i=!1;n.addEventListener("mousedown",()=>i=!0),n.addEventListener("mouseup",()=>{i=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{i||(i=!1,t.classList.remove("has-focus"))});let s={base:t.dataset.base+"/"};Oe(t,n,r,s)}function Oe(t,e,r,n){r.addEventListener("input",ie(()=>{Re(t,e,r,n)},200));let i=!1;r.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Fe(e,r):s.key=="Escape"?r.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),r.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!r.matches(":focus")&&s.key==="/"&&(r.focus(),s.preventDefault())})}function _e(t,e){t.index||window.searchData&&(e.classList.remove("loading"),e.classList.add("ready"),t.data=window.searchData,t.index=ce.Index.load(window.searchData.index))}function Re(t,e,r,n){if(_e(n,t),!n.index||!n.data)return;e.textContent="";let i=r.value.trim(),s=i?n.index.search(`*${i}*`):[];for(let o=0;o<s.length;o++){let a=s[o],l=n.data.rows[Number(a.ref)],u=1;l.name.toLowerCase().startsWith(i.toLowerCase())&&(u*=1+1/(1+Math.abs(l.name.length-i.length))),a.score*=u}if(s.length===0){let o=document.createElement("li");o.classList.add("no-results");let a=document.createElement("span");a.textContent="No results found",o.appendChild(a),e.appendChild(o)}s.sort((o,a)=>a.score-o.score);for(let o=0,a=Math.min(10,s.length);o<a;o++){let l=n.data.rows[Number(s[o].ref)],u=le(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(u+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(u=`<span class="parent">${le(l.parent,i)}.</span>${u}`);let d=document.createElement("li");d.classList.value=l.classes??"";let m=document.createElement("a");m.href=n.base+l.url,m.innerHTML=u,d.append(m),e.appendChild(d)}}function ue(t,e){let r=t.querySelector(".current");if(!r)r=t.querySelector(e==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let n=r;if(e===1)do n=n.nextElementSibling??void 0;while(n instanceof HTMLElement&&n.offsetParent==null);else do n=n.previousElementSibling??void 0;while(n instanceof HTMLElement&&n.offsetParent==null);n&&(r.classList.remove("current"),n.classList.add("current"))}}function Fe(t,e){let r=t.querySelector(".current");if(r||(r=t.querySelector("li:first-child")),r){let n=r.querySelector("a");n&&(window.location.href=n.href),e.blur()}}function le(t,e){if(e==="")return t;let r=t.toLocaleLowerCase(),n=e.toLocaleLowerCase(),i=[],s=0,o=r.indexOf(n);for(;o!=-1;)i.push(K(t.substring(s,o)),`<b>${K(t.substring(o,o+n.length))}</b>`),s=o+n.length,o=r.indexOf(n,s);return i.push(K(t.substring(s))),i.join("")}var Me={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#039;",'"':"&quot;"};function K(t){return t.replace(/[&<>"'"]/g,e=>Me[e])}var P=class{constructor(e){this.el=e.el,this.app=e.app}};var M="mousedown",fe="mousemove",N="mouseup",J={x:0,y:0},he=!1,ee=!1,De=!1,D=!1,pe=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(pe?"is-mobile":"not-mobile");pe&&"ontouchstart"in document.documentElement&&(De=!0,M="touchstart",fe="touchmove",N="touchend");document.addEventListener(M,t=>{ee=!0,D=!1;let e=M=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(fe,t=>{if(ee&&!D){let e=M=="touchstart"?t.targetTouches[0]:t,r=J.x-(e.pageX||0),n=J.y-(e.pageY||0);D=Math.sqrt(r*r+n*n)>10}});document.addEventListener(N,()=>{ee=!1});document.addEventListener("click",t=>{he&&(t.preventDefault(),t.stopImmediatePropagation(),he=!1)});var X=class extends P{constructor(r){super(r);this.className=this.el.dataset.toggle||"",this.el.addEventListener(N,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(M,n=>this.onDocumentPointerDown(n)),document.addEventListener(N,n=>this.onDocumentPointerUp(n))}setActive(r){if(this.active==r)return;this.active=r,document.documentElement.classList.toggle("has-"+this.className,r),this.el.classList.toggle("active",r);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(r){D||(this.setActive(!0),r.preventDefault())}onDocumentPointerDown(r){if(this.active){if(r.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(r){if(!D&&this.active&&r.target.closest(".col-sidebar")){let n=r.target.closest("a");if(n){let i=window.location.href;i.indexOf("#")!=-1&&(i=i.substring(0,i.indexOf("#"))),n.href.substring(0,i.length)==i&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var me=document.head.appendChild(document.createElement("style"));me.dataset.for="filters";var Y=class extends P{constructor(r){super(r);this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),me.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; }
`}fromLocalStorage(){let r=Q.getItem(this.key);return r?r==="true":this.el.checked}setLocalStorage(r){Q.setItem(this.key,r.toString()),this.value=r,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let n=Array.from(r.querySelectorAll(".tsd-index-link")).every(i=>i.offsetParent==null);r.style.display=n?"none":"block"})}};var Z=class extends P{constructor(r){super(r);this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update()),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ve(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ye(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ye(t.value)})}function ye(t){document.documentElement.dataset.theme=t}de();G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var ge=document.getElementById("tsd-theme");ge&&ve(ge);var Ae=new U;Object.defineProperty(window,"app",{value:Ae});document.querySelectorAll("summary a").forEach(t=>{t.addEventListener("click",()=>{location.assign(t.href)})});})();

@@ -5,0 +5,0 @@ /*! Bundled license information:

@@ -93,4 +93,20 @@ {

"syntaxKind": "modifier"
},
{
"tagName": "@showCategories",
"syntaxKind": "modifier"
},
{
"tagName": "@hideCategories",
"syntaxKind": "modifier"
},
{
"tagName": "@showGroups",
"syntaxKind": "modifier"
},
{
"tagName": "@hideGroups",
"syntaxKind": "modifier"
}
]
}

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc