@forsakringskassan/docs-generator 3.0.1 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{create-markdown-renderer-DUwT9Ka3.mjs → create-markdown-renderer-C-rQVf_R.mjs} +4 -4
- package/dist/{create-markdown-renderer-DUwT9Ka3.mjs.map → create-markdown-renderer-C-rQVf_R.mjs.map} +1 -1
- package/dist/{format-code.worker-CXHm5Lxb.mjs → format-code.worker-BwtL4Ldq.mjs} +2 -2
- package/dist/{format-code.worker-CXHm5Lxb.mjs.map → format-code.worker-BwtL4Ldq.mjs.map} +1 -1
- package/dist/index.mjs +4 -3
- package/dist/index.mjs.map +1 -1
- package/dist/markdown.mjs +2 -2
- package/dist/runtime.mjs +734 -516
- package/dist/{vendor-C0JAkCK-.mjs → vendor-CyiP4ufo.mjs} +2 -2
- package/dist/{vendor-C0JAkCK-.mjs.map → vendor-CyiP4ufo.mjs.map} +1 -1
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/matomo/matomo-processor.ts","../src/utils/memoize.ts","../src/utils/file-matcher.ts","../src/utils/format-size.ts","../src/utils/get-document-outline.ts","../src/utils/get-integrity.ts","../src/utils/get-pull-request-id.ts","../src/utils/get-repository-url.ts","../src/utils/run-command.ts","../src/utils/git/git-commit-hash.ts","../src/utils/have-output.ts","../src/utils/interpolate.ts","../src/utils/natural-join.ts","../src/utils/serialize-attrs.ts","../src/utils/set-utils.ts","../src/utils/slugify.ts","../src/utils/is-release.ts","../src/processors/api-extractor/get-variant.ts","../src/processors/api-extractor/documentation.ts","../src/processors/api-extractor/render-interface.ts","../src/processors/api-extractor/api-extractor-processor.ts","../src/document/document-attributes.ts","../src/processors/extract-examples-processor.ts","../src/manifest/manifest-page-from-document.ts","../src/processors/manifest-processor.ts","../src/processors/motd-processor.ts","../src/render/filter/dump.ts","../src/render/filter/json.ts","../src/render/filter/relative.ts","../src/render/filter/take.ts","../src/processors/redirect/html-redirect-processor.ts","../src/processors/redirect/redirect-file-processor.ts","../src/processors/redirect/get-redirects.ts","../src/processors/redirect/redirect-processor.ts","../src/processors/selectable-version-processor.ts","../src/navigation/generate-navtree.ts","../src/processors/topnav-processor.ts","../src/processors/version-processor.ts","../src/processors/source-url-processor.ts","../src/processors/cookie-processor.ts","../src/available-processors.ts","../src/define-sources.ts","../src/file-reader/attribute-error.ts","../src/file-reader/front-matter-file-reader.ts","../src/file-reader/vue-file-reader/find-translations.ts","../src/file-reader/vue-file-reader/generate-event-table.ts","../src/file-reader/vue-file-reader/generate-model-table.ts","../src/file-reader/vue-file-reader/generate-prop-table.ts","../src/file-reader/vue-file-reader/generate-slot-table.ts","../src/file-reader/vue-file-reader/generate-translation-table.ts","../src/file-reader/vue-file-reader/translate-api.ts","../src/file-reader/vue-file-reader/vue-file-reader.ts","../src/file-reader/file-reader-processor.ts","../src/file-reader/navigation-file-reader.ts","../src/sass/compile-sass-string.ts","../src/assets/compile-style.ts","../src/assets/css-asset-processor.ts","../src/assets/esbuild-wrapper.ts","../src/assets/compile-script.ts","../src/assets/js-asset-processor.ts","../src/assets/static-resources-processor.ts","../src/processor-runtime-name.ts","../src/compile-processor-runtime.ts","../src/navigation/navigation-processor.ts","../src/navigation/sort-navigation-tree.ts","../src/render/template-directory.ts","../src/render/find-template.ts","../src/render/template-loader.ts","../src/render/template-render-error.ts","../src/render/render.ts","../src/render/nunjucks-processor.ts","../src/serve/livereload-processor.ts","../src/serve/keypress.ts","../src/serve/print-menu.ts","../src/serve/serve.ts","../src/vendor/compile-vendor.ts","../src/vendor/normalize-vendor-definition.ts","../src/vendor/vendor-processor.ts","../src/generator.ts","../src/search/generate-index.ts","../src/search/search-processor.ts"],"sourcesContent":["import { type Processor, type ProcessorOptions } from \"../processor\";\n\n/**\n * @public\n */\nexport interface MatomoOptions {\n /** Matomo Site ID */\n siteId: string;\n /** Matomo API URL */\n apiUrl?: string;\n /** Matomo Tracker URL */\n trackerUrl: string;\n /** Site hostname (analytics will be disabled if the hostname of the running\n * site does not match one of the configured hostnames) */\n hostname?: string | string[];\n}\n\nfunction toArray<T>(value: T | T[]): T[] {\n return Array.isArray(value) ? value : [value];\n}\n\n/**\n * @public\n */\nexport function matomoProcessor(\n options: MatomoOptions & ProcessorOptions,\n): Processor {\n const { enabled, siteId, apiUrl, trackerUrl, hostname } = options;\n return {\n after: \"generate-docs\",\n name: \"matomo-processor\",\n enabled,\n handler(context) {\n context.addTemplateBlock(\"head\", \"matomo\", {\n filename: \"partials/matomo.html\",\n data: {\n siteId,\n apiUrl,\n trackerUrl,\n hostname: hostname ? toArray(hostname) : [],\n },\n });\n },\n };\n}\n","function cacheKey(...args: unknown[]): string {\n return JSON.stringify(args);\n}\n\n/**\n * Creates a new lazy-evaluated and cached function.\n *\n * The result of the callback will be cached once evaluated and subsequent calls\n * will return the cached value. When passing a callback with parameters each\n * set of arguments are cached individually. The parameters must be serializable\n * to string.\n *\n * @example\n *\n * Usage functional style:\n *\n * ```ts\n * function expensiveCalculation() {\n * // ...\n * }\n *\n * const fn = memoize(expensiveCalculation);\n *\n * // compute the value\n * const result1 = fn();\n *\n * // subsequent calls will be cached\n * // i.e. result1 === result2\n * const result2 = fn();\n * ```\n *\n *\n *\n * Usage as a decorator:\n *\n * ```ts\n * class AwesomeClass {\n * @memoize\n * public expensiveCalculation() {\n * // ...\n * }\n * }\n *\n * // compute the value\n * const instance = new AwesomeClass();\n * const result1 = instance.expensiveCalculation();\n *\n * // subsequent calls will be cached\n * // i.e. result1 === result2\n * const result2 = instance.expensiveCalculation();\n * ```\n *\n * @internal\n * @param callback - The expensive callback to be memoized.\n * @returns A wrapped function.\n */\nexport function memoize<TReturn, TArgs extends unknown[]>(\n callback: (...args: TArgs) => Promise<TReturn>,\n): (...args: TArgs) => Promise<TReturn>;\nexport function memoize<TReturn, TArgs extends unknown[]>(\n callback: (...args: TArgs) => TReturn,\n): (...args: TArgs) => TReturn;\nexport function memoize(\n callback: (...args: unknown[]) => unknown | Promise<unknown>,\n): (...args: unknown[]) => unknown | Promise<unknown> {\n const cache = new Map<string, unknown | Promise<unknown>>();\n return (...args: unknown[]) => {\n const key = cacheKey(args);\n if (!cache.has(key)) {\n cache.set(key, callback(...args));\n }\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- at this point we know the key will exist */\n return cache.get(key)!;\n };\n}\n","import path from \"node:path\";\nimport { globSync } from \"glob\";\nimport { memoize } from \"./memoize\";\n\n/**\n * Create a matcher which returns the full path given a filename, partial path\n * to a filename or glob pattern.\n *\n * Throws an error if zero or more than one paths match.\n *\n * @internal\n * @param patterns - Glob patterns to match all possible files.\n */\nexport function fileMatcher(\n patterns: string[],\n): (filename: string, context?: string) => string {\n const fileList = globSync(patterns, {\n posix: true,\n ignore: \"**/node_modules/**\",\n });\n\n return memoize((filename: string, context?: string) => {\n const matches = fileList.filter((file) => {\n return path.matchesGlob(file, `**/${filename}`);\n });\n if (matches.length === 0) {\n const additionalInfo = context ? ` (${context})` : \"\";\n const message = `No files matched pattern \"${filename}\"${additionalInfo}`;\n throw new Error(message);\n } else if (matches.length > 1) {\n const additionalInfo = context ? ` (${context})` : \"\";\n const message = `Multiple files matched pattern \"${filename}\"${additionalInfo}. Searched in [${patterns.join(\", \")}]`;\n throw new Error(message);\n } else {\n return matches[0];\n }\n });\n}\n","export function formatSize(value: number): string {\n const suffices = [\"kB\", \"MB\"];\n if (value < 1000) {\n return String(value);\n }\n for (const suffix of suffices) {\n value = Math.round((value / 1000) * 100) / 100;\n if (value < 1000) {\n return `${String(value)} ${suffix}`;\n }\n }\n value = Math.round((value / 1000) * 100) / 100;\n return `${String(value)} GB`;\n}\n","import { type DocumentOutline, type DocumentOutlineEntry } from \"../document\";\nimport { generateId } from \"./generate-id\";\n\ninterface ParsedHeading {\n rank: number;\n title: string;\n anchor: string;\n}\n\n/* eslint-disable-next-line sonarjs/slow-regex -- technical debt */\nconst matchHeading = /^(#+)(.*)$/gm;\n\nfunction getHeadings(text: string): ParsedHeading[] {\n return Array.from(text.matchAll(matchHeading), parseHeading);\n}\n\nfunction cleanTitle(text: string): string {\n return text.trim().replaceAll(\"`\", \"\");\n}\n\nfunction parseHeading(match: RegExpMatchArray): ParsedHeading {\n const [, prefix, text] = match;\n const rank = prefix.length; // # -> 1, ## -> 2, etc\n const id = generateId(text);\n return {\n rank,\n title: cleanTitle(text),\n anchor: id,\n };\n}\n\n/**\n * Get document outline (headings) from text.\n *\n * @public\n */\nexport function getDocumentOutline(\n text: string,\n _format: \"markdown\",\n): DocumentOutline {\n const entries = getHeadings(text);\n\n /* Create a stack of heading levels starting at a \"virtual\" level 0, the\n * first heading is always inserted as a child to this virtal heading.*/\n const root = { title: \"\", rank: 0, anchor: \"\", subheadings: [] };\n const stack: DocumentOutlineEntry[] = [root];\n\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion --\n * \"should\" never be undefined, if it is let it crash so the underlying\n * cause can be fixed instead */\n const top = (): DocumentOutlineEntry => stack.at(-1)!;\n\n for (const entry of entries) {\n const heading: DocumentOutlineEntry = {\n title: entry.title,\n rank: entry.rank,\n anchor: entry.anchor,\n subheadings: [],\n };\n\n /* If the top entry of the stack has a higher rank we pop the stack\n * until we reach the first one with a lower rank. This includes\n * siblings with the same rank, e.g. a `##` following another `##` will\n * be inserted under the parent and not as a child of the previous\n * `##` */\n while (top().rank >= entry.rank) {\n stack.pop();\n }\n\n /* Insert this heading as a subheading of the current top of the stack\n * and push this heading as the current top so subsequent headings (with\n * higher rank) will be inserted as a child of this one */\n top().subheadings.push(heading);\n stack.push(heading);\n }\n\n /* All the subheadings of the virtual root heading will now be the document\n * outline */\n return root.subheadings;\n}\n","import crypto from \"node:crypto\";\n\nexport function getIntegrity(source: string): string {\n const hash = crypto.createHash(\"sha384\").update(source).digest(\"base64\");\n return `sha384-${hash}`;\n}\n","/**\n * @internal\n */\nexport interface BuildEnv {\n /** Jenkins */\n JOB_BASE_NAME?: string;\n\n /** Github Actions */\n GITHUB_REF?: string;\n}\n\n/**\n * @internal\n */\nexport function getPullRequestID(\n env: BuildEnv | typeof process.env,\n): string | undefined {\n /* jenkins */\n if (env.JOB_BASE_NAME) {\n const name = env.JOB_BASE_NAME;\n const match = /^PR-(\\d+)$/.exec(name);\n return match ? match[1] : undefined;\n }\n\n /* github actions */\n if (env.GITHUB_REF) {\n const name = env.GITHUB_REF;\n const match = /^refs\\/pull\\/([^/]+)\\/merge$/.exec(name);\n return match ? match[1] : undefined;\n }\n\n return undefined;\n}\n","import { type PackageJson } from \"../package-json\";\n\nconst RE_MATCH_SSH = /^(ssh:\\/\\/)?(?<user>[^@]+)@(?<host>[^:]+):(?<path>.*)$/;\n\n/**\n * Get normalized URL to the repository (https).\n *\n * @internal\n */\nexport function getRepositoryUrl(url: string): string;\nexport function getRepositoryUrl(\n pkg: Pick<PackageJson, \"repository\">,\n): string | null;\nexport function getRepositoryUrl(\n value: string | Pick<PackageJson, \"repository\">,\n): string | null {\n if (typeof value !== \"string\") {\n const url = value.repository?.url;\n if (!url) {\n return null;\n }\n value = url;\n }\n\n /* strip out \"git+\" prefix if present */\n value = value.replace(/^git\\+/, \"\");\n\n /* convert ssh://user@host:org/repo to https://host/org/repo */\n const ssh = RE_MATCH_SSH.exec(value);\n if (ssh) {\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- it will exist with this regex */\n const { host, path } = ssh.groups!;\n value = `https://${host}/${path}`;\n }\n\n /* strip out \".git\" suffix if present */\n value = value.replace(/\\.git$/, \"\");\n\n return value;\n}\n","import { exec } from \"node:child_process\";\n\n/**\n * @internal\n * @param cmd - Command to run\n */\nexport function runCommand(cmd: string): Promise<string | undefined>;\nexport function runCommand<T>(\n cmd: string,\n defaultValue: T,\n): Promise<string | T>;\nexport function runCommand<T>(\n cmd: string,\n defaultValue?: T,\n): Promise<string | undefined | T> {\n return new Promise((resolve) => {\n /* eslint-disable-next-line sonarjs/os-command -- expected to run from PATH */\n exec(cmd, { encoding: \"utf8\" }, (error, stdout) => {\n if (error) {\n /* eslint-disable-next-line no-console -- expected to log */\n console.error(error);\n resolve(defaultValue);\n } else {\n resolve(stdout.trim());\n }\n });\n });\n}\n","import { memoize } from \"../memoize\";\nimport { runCommand } from \"../run-command\";\n\n/**\n * Get Git commit hash, if present.\n *\n * @internal\n * @param format - If set to `full` it gives the full SHA512 hash, if set to `short` it gives the abbrevated hash.\n */\nexport const gitCommitHash = memoize((format: \"full\" | \"short\" = \"short\") => {\n if (format === \"full\") {\n return runCommand(`git rev-parse HEAD`);\n } else {\n return runCommand(`git rev-parse --short HEAD`);\n }\n});\n","import { type FileInfo } from \"../document\";\n\n/**\n * @internal\n */\nexport function haveOutput<T extends { fileInfo: FileInfo }>(\n doc: T,\n): doc is T & { fileInfo: { outputName: string } } {\n const { fileInfo } = doc;\n return Boolean(fileInfo.outputName);\n}\n","/**\n * @internal\n */\nexport function interpolate(\n value: string,\n data: Record<string, string>,\n): string {\n return value.replaceAll(/{{([^{}]+)}}/g, (match, raw: string) => {\n const key = raw.trim();\n const value = data[key] as string | undefined;\n return value ?? match;\n });\n}\n","/**\n * Joins a list of words into natural language.\n *\n * - `[\"foo\"]` becomes `\"foo\"`\n * - `[\"foo\", \"bar\"]` becomes `\"foo or bar\"`\n * - `[\"foo\", \"bar\", \"baz\"]` becomes `\"foo, bar or baz\"`\n * - and so on...\n *\n * @internal\n * @param values - List of words to join\n * @param conjunction - Conjunction for the last element.\n * @returns String with the words naturally joined with a conjunction.\n */\nexport function naturalJoin(\n values: string[],\n conjunction: string = \"or\",\n): string {\n switch (values.length) {\n case 0:\n return \"\";\n case 1:\n return values[0];\n case 2:\n return `${values[0]} ${conjunction} ${values[1]}`;\n default:\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- we\n * know length will be greater than two so there must be an element */\n return `${values.slice(0, -1).join(\", \")} ${conjunction} ${values.at(-1)!}`;\n }\n}\n","/** @public */\nexport type AttributeValue =\n | string\n | number\n | boolean\n | null\n | { [key: string]: AttributeValue };\n\n/** @public */\nexport type AttributeTable = Record<string, AttributeValue>;\n\nfunction quote(text: string | number): string {\n return String(text).replaceAll('\"', \""\");\n}\n\nfunction* serializeAttr(key: string, value: AttributeValue): Generator<string> {\n if (value === null || value === false) {\n return;\n }\n if (value === true) {\n yield key;\n return;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n yield `${key}=\"${quote(value)}\"`;\n return;\n }\n for (const [innerKey, innerValue] of Object.entries(value)) {\n yield* serializeAttr([key, innerKey].join(\"-\"), innerValue);\n }\n}\n\nexport function* serializeAttrs(attrs: AttributeTable): Generator<string> {\n for (const [key, value] of Object.entries(attrs)) {\n yield* serializeAttr(key, value);\n }\n}\n","export function difference<T>(a: Set<T>, b: Set<T>): Set<T> {\n const _difference = new Set(a);\n for (const elem of b) {\n _difference.delete(elem);\n }\n return _difference;\n}\n","export function slugify(value: string): string {\n return (\n value\n .toLowerCase()\n .replaceAll(\"/\", \"--\")\n .replaceAll(/[^a-z]+/g, \"-\")\n /* eslint-disable-next-line sonarjs/slow-regex -- technical debt */\n .replace(/(^-+|-+$)/, \"\")\n );\n}\n","import { execSync } from \"node:child_process\";\n\n/**\n * Checks if the latest commit is a release commit.\n * @public\n * @returns if the latest commit is a release commit.\n */\nexport function isRelease(): boolean {\n try {\n const cmd = `git log -n1 --format=format:%s`;\n /* eslint-disable-next-line sonarjs/os-command -- want to execute git from PATH */\n const message = execSync(cmd, { encoding: \"utf8\" }).trim();\n return message.startsWith(\"chore(release):\");\n } catch (err) {\n /* eslint-disable-next-line no-console -- Print error if command fails */\n console.error(err);\n return false;\n }\n}\n","const available = {\n interface: [\"default\", \"interface\", \"properties\"],\n} as const;\n\ntype MappedType = typeof available;\ntype MappedKeys = keyof MappedType;\ntype MappedTag<K extends MappedKeys> = MappedType[K][number];\n\n/**\n * Get variant from tags.\n *\n * @internal\n */\nexport function getVariant<K extends MappedKeys>(\n kind: K,\n tags: string[],\n): MappedTag<K>;\nexport function getVariant(kind: MappedKeys, tags: string[]): string {\n const variant = available[kind].find((it) => tags.includes(it));\n return variant ?? \"default\";\n}\n","import {\n type ApiDocumentedItem,\n type ApiItem,\n} from \"@microsoft/api-extractor-model\";\nimport { type DocNode, DocExcerpt } from \"@microsoft/tsdoc\";\n\nfunction isDocumentedItem(item: ApiItem): item is ApiDocumentedItem {\n return \"tsdocComment\" in item;\n}\n\n/**\n * Returns the documentation for the given API item, or `undefined` if the item\n * has no documentation.\n *\n * @internal\n */\nexport function documentation(node: ApiItem | undefined): string | undefined {\n if (node && isDocumentedItem(node)) {\n const { tsdocComment } = node;\n return renderNode(tsdocComment?.summarySection).trim();\n } else {\n return undefined;\n }\n}\n\n/**\n * Same as `documentation()`, but returns the documentation as a TSDoc comment\n * block.\n *\n * @internal\n */\nexport function documentationComment(\n node: ApiItem | undefined,\n): string | undefined {\n const doc = documentation(node);\n if (doc === undefined) {\n return undefined;\n }\n\n if (!doc) {\n return \"\";\n }\n\n const lines = doc.split(\"\\n\");\n const commentLines = lines.map((line) => (line ? ` * ${line}` : ` *`));\n\n return [\"/**\", ...commentLines, \" */\"].join(\"\\n\");\n}\n\nfunction renderNode(docNode: DocNode | undefined): string {\n let result: string = \"\";\n if (docNode) {\n if (docNode instanceof DocExcerpt) {\n result += docNode.content.toString();\n }\n for (const childNode of docNode.getChildNodes()) {\n result += renderNode(childNode);\n }\n }\n return formatMarkdownLists(result);\n}\n\nfunction formatMarkdownLists(text: string): string {\n /* API Extractor condenses lists to `\"- foo - bar - baz\"`, this restores the\n * lists to proper markdown lists again */\n return text.replaceAll(/(\\S)[^\\S\\n]+([*-])[^\\S\\n]+/g, \"$1\\n$2 \");\n}\n","import {\n type ApiInterface,\n type ApiItem,\n type ApiMethodSignature,\n type ApiPackage,\n type ApiPropertySignature,\n type Excerpt,\n ApiItemKind,\n} from \"@microsoft/api-extractor-model\";\nimport { formatCode } from \"../../utils\";\nimport { documentation, documentationComment } from \"./documentation\";\n\nfunction isApiInterface(item: ApiItem): item is ApiInterface {\n return item.kind === ApiItemKind.Interface;\n}\n\nfunction findMemberByName(\n name: string,\n pkg: ApiPackage,\n): ApiInterface | undefined {\n for (const entryPoint of pkg.entryPoints) {\n for (const member of entryPoint.findMembersByName(name)) {\n if (isApiInterface(member)) {\n return member;\n }\n }\n }\n return undefined;\n}\n\nfunction getNameFromExcerpt(excerpt: Excerpt): string {\n const [token] = excerpt.tokens.slice(\n excerpt.tokenRange.startIndex,\n excerpt.tokenRange.endIndex,\n );\n return token.text;\n}\n\nfunction getInheritance(item: ApiInterface): ApiInterface[] {\n const pkg = item.getAssociatedPackage();\n if (!pkg) {\n return [];\n }\n\n const hierarchy: ApiInterface[] = [];\n const visited = new Set<string>();\n\n function traverseParents(current: ApiInterface, pkg: ApiPackage): void {\n if (visited.has(current.name)) {\n return;\n }\n visited.add(current.name);\n for (const { excerpt } of current.extendsTypes) {\n const name = getNameFromExcerpt(excerpt);\n const parentInterface = findMemberByName(name, pkg);\n if (parentInterface) {\n traverseParents(parentInterface, pkg);\n hierarchy.push(parentInterface);\n }\n }\n }\n\n traverseParents(item, pkg);\n hierarchy.push(item);\n\n return hierarchy;\n}\n\nfunction collectMembers(\n item: ApiInterface,\n inherit: boolean,\n): Array<ApiPropertySignature | ApiMethodSignature> {\n if (!inherit) {\n return item.members.filter(isSupported);\n }\n\n const hierarchy = getInheritance(item);\n const members = new Map<\n string,\n ApiPropertySignature | ApiMethodSignature\n >();\n\n for (const iface of hierarchy) {\n for (const member of iface.members.filter(isSupported)) {\n /* intentionally load the last seen member: overloaded members should only be displayed once */\n members.set(member.name, member);\n }\n }\n\n return [...members.values()];\n}\n\nfunction isSupported(item: {\n kind: ApiItemKind;\n}): item is ApiPropertySignature | ApiMethodSignature {\n return [\n ApiItemKind.PropertySignature,\n ApiItemKind.MethodSignature,\n ].includes(item.kind);\n}\n\nfunction renderCode(\n item: ApiInterface,\n members: Array<ApiPropertySignature | ApiMethodSignature>,\n options: RenderInterfaceOptions,\n): string {\n const inherit = options.inherit ?? false;\n const renderedMembers = members.map((it) => {\n const summary = documentationComment(it);\n const comment = summary ? `\\n${summary}` : \"\";\n return `${comment}\\n${it.excerpt.text}`;\n });\n const header = item.excerpt.text.replace(/^export /, \"\").trimEnd();\n const extendsIndex = header.indexOf(\" extends \");\n const declaration =\n inherit && extendsIndex !== -1 ? header.slice(0, extendsIndex) : header;\n const source = `${declaration} { ${renderedMembers.join(\"\")} }`;\n return [\n \"```ts nocompile nolint\",\n formatCode(source, \"docs/api-interface.ts\"),\n \"```\",\n ].join(\"\\n\");\n}\n\nfunction renderProperties(\n members: Array<ApiPropertySignature | ApiMethodSignature>,\n): string {\n return members\n .map((it) => {\n const optional = it.isOptional ? \" {@optional}\" : \"\";\n const summary = documentation(it);\n const lines = summary\n ? summary.split(\"\\n\").map((it, i) => {\n if (it.trim() === \"\") {\n return \"\\n\";\n }\n const prefix = i === 0 ? \": \" : \" \";\n return `${prefix}${it.trim()}\\n`;\n })\n : [\": ‐\\n\"];\n return [`\\`${it.excerpt.text}\\`${optional}\\n`, ...lines].join(\"\");\n })\n .join(\"\\n\");\n}\n\n/**\n * @internal\n */\nexport interface RenderInterfaceOptions {\n inherit?: boolean;\n}\n\n/**\n * @internal\n */\nexport function renderInterface(): {\n default(\n this: void,\n item: ApiInterface,\n options: RenderInterfaceOptions,\n ): string;\n interface(\n this: void,\n item: ApiInterface,\n options: RenderInterfaceOptions,\n ): string;\n properties(\n this: void,\n item: ApiInterface,\n options: RenderInterfaceOptions,\n ): string;\n} {\n return {\n default(item, options) {\n const inherit = options.inherit ?? false;\n return renderCode(item, collectMembers(item, inherit), options);\n },\n interface(item, options) {\n const inherit = options.inherit ?? false;\n return renderCode(item, collectMembers(item, inherit), options);\n },\n properties(item, options) {\n const inherit = options.inherit ?? true;\n return renderProperties(collectMembers(item, inherit));\n },\n };\n}\n","import {\n type ApiInterface,\n type ApiItem,\n ApiItemKind,\n ApiModel,\n} from \"@microsoft/api-extractor-model\";\nimport { glob } from \"glob\";\nimport { type DocumentPartial } from \"../../document\";\nimport { type Processor, type ProcessorOptions } from \"../../processor\";\nimport { naturalJoin } from \"../../utils\";\nimport { getVariant } from \"./get-variant\";\nimport { renderInterface } from \"./render-interface\";\n\n/**\n * Options for {@link apiExtractorProcessor}.\n *\n * @public\n */\nexport interface ApiExtractorProcessorOptions extends ProcessorOptions {\n apiModel?: string | string[];\n}\n\nfunction getFilenames(patterns: string | string[]): Promise<string[]> {\n return glob(patterns, { posix: true });\n}\n\nfunction pluralize(text: string, array: unknown[]): string {\n const s = array.length !== 1 ? \"s\" : \"\";\n return `${text}${s}`;\n}\n\nfunction loadedMessage(kind: string, array: unknown[]): unknown[] {\n return [array.length, pluralize(kind, array), \"loaded\"];\n}\n\nfunction getInheritOption(tags: string[]): boolean | undefined {\n if (tags.includes(\"inherit\")) {\n return true;\n }\n\n if (tags.includes(\"noinherit\")) {\n return false;\n }\n\n return undefined;\n}\n\ninterface WalkFnTable {\n [ApiItemKind.Interface]: (item: ApiInterface) => void;\n}\n\nfunction walk(root: ApiItem, fns: Partial<WalkFnTable>): void {\n const t = fns as Partial<Record<ApiItemKind, (item: ApiItem) => void>>;\n for (const member of root.members) {\n const fn = t[member.kind];\n if (fn) {\n fn(member);\n }\n walk(member, fns);\n }\n}\n\n/**\n * Return list of ambiguous ids if the name is ambiguous.\n */\nfunction isAmbigious(\n name: string,\n names: Map<string, string[]>,\n): string[] | null {\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- 1 or more must have been found */\n const found = names.get(name)!;\n return found.length > 1 ? found : null;\n}\n\n/**\n * @param id - Canonical unique identifier\n * @param name - Short user-defined name (might be ambiguous).\n */\nfunction createPartial(options: {\n id: string;\n name: string;\n names: Map<string, string[]>;\n fullPath: string | undefined;\n render(this: void, tags: string[]): string;\n}): DocumentPartial {\n const { id, name, fullPath, names, render } = options;\n return {\n kind: \"partial\",\n id,\n alias: [],\n name: `interface:${name}`,\n body(tags, reference) {\n /* if this partial was found by name, test if the name was ambiguous */\n if (reference.kind === \"name\") {\n const ambigious = isAmbigious(name, names);\n if (ambigious) {\n const quoted = ambigious.map((it) => `\"${it}\"`);\n const ids = naturalJoin(quoted, \"and\");\n throw new Error(\n `Ambiguous name \"${name}\", found ${ambigious.length} interfaces matching this name: ${ids}`,\n );\n }\n }\n\n return render(tags);\n },\n format: \"markdown\",\n fileInfo: {\n fullPath,\n },\n };\n}\n\n/**\n * Reads one or more API Extractor models and generates partial documents which\n * can be included into markdown documents.\n *\n * @public\n */\nexport function apiExtractorProcessor(\n options: ApiExtractorProcessorOptions = {},\n): Processor {\n const { apiModel: patterns = [], enabled = true } = options;\n return {\n name: \"apiExtractorProcessor\",\n after: \"generate-docs\",\n async handler(context) {\n if (!enabled) {\n return;\n }\n\n const symbols = {\n interface: [] as ApiInterface[],\n };\n\n for (const filename of await getFilenames(patterns)) {\n const apiModel = new ApiModel();\n const apiPackage = apiModel.loadPackage(filename);\n walk(apiPackage, {\n [ApiItemKind.Interface](item) {\n symbols.interface.push(item);\n },\n });\n }\n\n const interfaceRenderer = renderInterface();\n const seenInterfaces = new Map<string, string[]>();\n for (const item of symbols.interface) {\n /* unique id */\n const id = item.canonicalReference.toString();\n\n /* store mapping between short names and unique id to find duplicated names */\n const found = seenInterfaces.get(item.name) ?? [];\n seenInterfaces.set(item.name, [...found, id]);\n\n const partial = createPartial({\n id,\n name: item.name,\n names: seenInterfaces,\n fullPath: item.sourceLocation.fileUrl,\n render(tags) {\n const variant = getVariant(\"interface\", tags);\n return interfaceRenderer[variant](item, {\n inherit: getInheritOption(tags),\n });\n },\n });\n\n context.addDocument(partial);\n }\n\n context.log(...loadedMessage(\"interface\", symbols.interface));\n },\n };\n}\n","/**\n * @public\n */\nexport type DocumentBadge = \"success\" | \"error\" | \"info\";\n\n/**\n * @public\n */\nexport interface ComponentAttribute {\n /** component name */\n name: string;\n /** optional hint (glob pattern) how to find the component */\n source?: string;\n}\n\n/**\n * @internal\n */\nexport interface DocumentAttributes {\n /** Page title */\n title?: string;\n\n /** Short page title (e.g. used in sidenav) */\n \"short-title\"?: string;\n\n /** Page layout */\n layout?: string;\n\n /** sets the `name` property in `Document` */\n name?: string;\n\n /** document alias for easier linking */\n alias?: string | string[];\n\n /** component status */\n status?: string;\n\n /** visible in navigation */\n visible?: boolean;\n\n /** if should write to file and make available as a page */\n include?: boolean;\n\n /** component(s) this page corresponds to */\n component?:\n | string\n | ComponentAttribute\n | Array<string | ComponentAttribute>;\n\n /** link to external page in navigation */\n href?: string;\n\n /** Search options */\n search?: {\n /* Optional list of additional search terms for this page */\n terms?: string | string[];\n };\n\n /** navigation sortorder */\n sortorder?: number;\n\n /** pages redirecting to this page */\n redirect_from?: string | string[];\n}\n\n/**\n * @public\n */\nexport interface NormalizedDocumentAttributes {\n title?: string;\n shortTitle?: string;\n layout?: string;\n status?: string;\n badge?: DocumentBadge;\n component?: ComponentAttribute[];\n href?: string;\n /** search options */\n search: {\n /** list of additional search terms for this page */\n terms: string[];\n };\n /** normalized sortorder (defaults to Infinity) */\n sortorder: number;\n redirectFrom: string[];\n}\n\n/**\n * @internal\n */\nexport const documentAttributeKeys = [\n \"title\",\n \"short-title\",\n \"layout\",\n \"name\",\n \"alias\",\n \"status\",\n \"visible\",\n \"include\",\n \"component\",\n \"href\",\n \"search\",\n \"sortorder\",\n \"redirect_from\",\n];\n","import fs from \"node:fs/promises\";\nimport path from \"node:path/posix\";\nimport markdownIt from \"markdown-it\";\nimport { type DocumentPage, isDocumentPage } from \"../document\";\nimport { parseInfostring } from \"../examples\";\nimport { type Processor, type ProcessorOptions } from \"../processor\";\nimport { haveOutput, normalizePath, slugify } from \"../utils\";\n\n/**\n * Options for `extractExamplesProcessor`.\n *\n * @public\n */\nexport interface ExtractExamplesOptions extends ProcessorOptions {\n /**\n * Folder to write examples to. The output folder would typically be git\n * ignored except for configuration files such as `tsconfig.json.`\n */\n outputFolder: string;\n\n /**\n * Array of languages to extract.\n *\n * - `\"javascript\"`\n * - `\"typescript\"`\n * - `\"css\"`\n * - `\"scss\"`\n */\n languages?: string[];\n}\n\ninterface Example {\n name: string | undefined;\n content: string;\n language: string;\n tags: string[];\n}\n\ntype DocumentWithOutput = DocumentPage & { fileInfo: { outputName: string } };\ntype DocumentLike = Pick<DocumentWithOutput, \"fileInfo\" | \"body\" | \"format\">;\n\nconst md = markdownIt();\n\n/* eslint-disable-next-line sonarjs/no-invariant-returns -- function works as intended */\nmd.renderer.rules.fence = (tokens, idx, _options, collected: Example[]) => {\n const { content, info } = tokens[idx];\n const { language, tags } = parseInfostring(info);\n\n if (language === \"import\") {\n return \"\";\n }\n\n const nameTag = tags.find((it) => it.startsWith(\"name=\"));\n const name = nameTag ? slugify(nameTag.slice(\"name=\".length)) : undefined;\n\n collected.push({\n name,\n content,\n language,\n tags,\n });\n\n return \"\";\n};\n\nfunction findExamples(doc: DocumentLike): Example[] {\n if (doc.format !== \"markdown\") {\n return [];\n }\n const collected: Example[] = [];\n md.render(doc.body, collected);\n return collected;\n}\n\nfunction getSuffix(tags: string[]): string {\n const relevant = tags.filter((it) => [\"nocompile\", \"nolint\"].includes(it));\n if (relevant.length > 0) {\n return `-${relevant.join(\"-\")}`;\n } else {\n return \"\";\n }\n}\n\nfunction getExtension(lang: string): string {\n switch (lang) {\n case \"typescript\":\n return \"ts\";\n case \"javascript\":\n return \"js\";\n default:\n return lang;\n }\n}\n\n/**\n * Processor to extract and write examples to separate files.\n *\n * @public\n */\nexport function extractExamplesProcessor(\n options: ExtractExamplesOptions,\n): Processor {\n const {\n enabled = true,\n outputFolder,\n languages = [\"javascript\", \"typescript\", \"css\", \"scss\"],\n } = options;\n\n function isRelevant(example: Example): boolean {\n return languages.includes(example.language);\n }\n\n return {\n stage: \"render\",\n name: \"extract-examples-processor\",\n async handler(context) {\n if (!enabled) {\n return;\n }\n\n if (!outputFolder) {\n throw new Error(\n `\"outputFolder\" not set in \"extractExamplesProcessor(..)\"`,\n );\n }\n\n /* clear old folder to remove potential obsolete files */\n await fs.rm(outputFolder, { recursive: true, force: true });\n\n const docs = context.docs.filter(isDocumentPage).filter(haveOutput);\n\n let total = 0;\n for (const doc of docs) {\n const examples = findExamples(doc).filter(isRelevant);\n if (examples.length === 0) {\n continue;\n }\n\n /* create a directory matching the filename the examples is contained in */\n const dir = normalizePath(outputFolder, doc.fileInfo.fullPath);\n await fs.mkdir(dir, { recursive: true });\n\n /* write each example into the directory */\n let n = 1;\n for (const example of examples) {\n const suffix = getSuffix(example.tags);\n const extension = getExtension(example.language);\n const filename = `example-${example.name ?? String(n++)}${suffix}.${extension}`;\n const filePath = path.join(dir, filename);\n await fs.writeFile(filePath, example.content, \"utf8\");\n total++;\n }\n }\n\n context.log(total, \"examples extracted\");\n },\n };\n}\n","import markdownIt from \"markdown-it\";\nimport { type DocumentOutline, type DocumentPage } from \"../document\";\nimport { parseInfostring } from \"../examples\";\nimport { findTag, getFingerprint, getOutputFilePath, hasTag } from \"../utils\";\nimport { type Manifest } from \"./manifest\";\n\ntype DocumentPageWithOutput = DocumentPage & {\n fileInfo: { outputName: string };\n};\ntype DocumentPageLike = Pick<\n DocumentPageWithOutput,\n \"fileInfo\" | \"name\" | \"attributes\" | \"outline\" | \"body\" | \"format\"\n>;\ntype ManifestPage = Manifest[\"pages\"][number];\ntype ManifestOutline = ManifestPage[\"outline\"];\ntype ManifestExamples = ManifestPage[\"examples\"];\n\nconst md = markdownIt();\n\nmd.renderer.rules.fence = (\n tokens,\n idx,\n _options,\n collected: ManifestExamples,\n /* eslint-disable-next-line sonarjs/no-invariant-returns -- function works as intended */\n) => {\n const { content, info, map } = tokens[idx];\n const { language: rawLanguage, tags } = parseInfostring(info);\n const hashContent = `${String(map?.[0])}:${String(map?.[1])}:${info}:${content}`;\n const fingerprint = getFingerprint(hashContent);\n let extension = undefined;\n let language = rawLanguage;\n\n if (hasTag(tags, \"compare\")) {\n language = \"diff\";\n }\n\n if (language === \"import\") {\n extension = content.split(\".\").at(-1)?.trim();\n }\n\n if (hasTag(tags, \"hidden\")) {\n return \"\";\n }\n\n const name = findTag(tags, \"name\")?.value ?? undefined;\n\n collected.push({\n name,\n selector: `#example-${fingerprint}`,\n language: extension ?? language,\n tags,\n });\n return \"\";\n};\n\nfunction flattenOutline(outline: DocumentOutline): ManifestOutline {\n return outline.flatMap((entry) => {\n return [\n { heading: entry.title, anchor: entry.anchor },\n ...flattenOutline(entry.subheadings),\n ];\n });\n}\n\nfunction findExamples(doc: DocumentPageLike): ManifestExamples {\n if (doc.format !== \"markdown\") {\n return [];\n }\n const collected: ManifestExamples = [];\n md.render(doc.body, collected);\n return collected;\n}\n\n/**\n * @internal\n */\nexport function manifestPageFromDocument(doc: DocumentPageLike): ManifestPage {\n const { body, fileInfo, format } = doc;\n return {\n path: getOutputFilePath(\"\", fileInfo),\n title: doc.attributes.title ?? doc.name,\n redirect: format === \"redirect\" ? body : null,\n outline: flattenOutline(doc.outline),\n examples: findExamples(doc),\n };\n}\n","import fs from \"node:fs/promises\";\nimport { isDocumentPage } from \"../document\";\nimport { type Manifest, manifestPageFromDocument } from \"../manifest\";\nimport { type Processor } from \"../processor\";\nimport { haveOutput } from \"../utils\";\n\ntype ManifestPage = Manifest[\"pages\"][number];\n\n/**\n * Options for {@link manifestProcessor}.\n *\n * @public\n */\nexport interface ManifestProcessorOptions {\n /** If set, the manifest will be written as Markdown to this destination */\n markdown?: string;\n\n /** If set, the manifest will be written as JSON to this destination */\n json?: string;\n\n /** If set to `true` the markdown manifest will be verified instead of\n * written (typically enabled during CI) */\n verify?: boolean;\n}\n\nfunction line(page: ManifestPage): string {\n if (page.redirect) {\n return `${page.path} -> ${page.redirect}`;\n }\n return page.path;\n}\n\nfunction renderMarkdown(manifest: Manifest): string {\n return [\n \"## Documentation manifest\",\n \"\",\n \"> Do not edit this file. It is a automatically generated by `@forsakringskassan/docs-generator`.\",\n \"\",\n \"```\",\n ...manifest.pages.map(line),\n \"```\",\n \"\",\n ].join(\"\\n\");\n}\n\nfunction renderJSON(manifest: Manifest): string {\n return JSON.stringify(manifest, null, 2);\n}\n\nfunction normalize(text: string): string {\n return text.replaceAll(\"\\r\\n\", \"\\n\");\n}\n\nclass ManifestError extends Error {\n private readonly filename: string;\n\n public constructor(filename: string) {\n super(`Documentation manifest \"${filename}\" is not up-to-date!`);\n this.name = \"ManifestError\";\n this.filename = filename;\n }\n\n public prettyError(): string {\n const { filename, message } = this;\n\n return [\n message,\n \"\",\n `Run the build locally and commit the content of \"${filename}\".`,\n ].join(\"\\n\");\n }\n}\n\n/**\n * Write out a manifest listing all generated documents that will be present in\n * `outputFolder`.\n *\n * @public\n */\nexport function manifestProcessor(\n options: ManifestProcessorOptions = {},\n): Processor {\n const { markdown, json, verify } = options;\n return {\n name: \"manifestProcessor\",\n before: \"render\",\n async handler(context) {\n const docs = context.docs.filter(isDocumentPage).filter(haveOutput);\n const pages = docs.map(manifestPageFromDocument);\n pages.sort((a, b) => {\n return a.path.localeCompare(b.path);\n });\n const manifest: Manifest = { pages };\n if (markdown) {\n const content = normalize(renderMarkdown(manifest));\n if (verify) {\n const actual = normalize(\n await fs.readFile(markdown, \"utf8\"),\n );\n if (actual !== content) {\n throw new ManifestError(markdown);\n }\n } else {\n await fs.writeFile(markdown, content, \"utf8\");\n }\n }\n if (json) {\n const content = renderJSON(manifest);\n await fs.writeFile(json, content, \"utf8\");\n }\n },\n };\n}\n","import util from \"node:util\";\nimport { type Processor } from \"../processor\";\n\n/**\n * Options for {@link motdProcessor}.\n *\n * @public\n */\nexport interface MOTDOptions {\n /** Enables/disables the MOTD processor. */\n enabled?: boolean;\n /** Name of the container to render content in. */\n container?: string;\n /** Message to display */\n message?: string;\n}\n\n/**\n * @internal\n */\nexport interface MOTDProcessorTemplateData {\n message: string | undefined;\n}\n\ninterface NormalizedMOTDOptions {\n enabled: boolean;\n container: string;\n message: string | undefined;\n}\n\nfunction normalizeOptions(options: MOTDOptions): NormalizedMOTDOptions {\n const defaults = {\n enabled: true,\n container: \"body:begin\",\n message: undefined,\n };\n return { ...defaults, ...options };\n}\n\n/**\n * Display a MOTD style message.\n *\n * @public\n */\nexport function motdProcessor(options: MOTDOptions = {}): Processor {\n const { enabled, container, message } = normalizeOptions(options);\n return {\n name: \"motd-processor\",\n after: \"generate-docs\",\n runtime: [{ src: \"src/runtime/motd/index.ts\" }],\n handler(context) {\n if (!enabled) {\n return;\n }\n\n const useLegacyTemplate = context.hasTemplate(\n \"partials/version-banner.html\",\n );\n const data: MOTDProcessorTemplateData = {\n message,\n };\n\n context.addTemplateBlock(container, \"motd-container\", {\n filename: \"partials/motd-container.njk.html\",\n data: useLegacyTemplate ? undefined : data,\n });\n\n /* legacy for backwards compatibility */\n if (useLegacyTemplate) {\n /* eslint-disable-next-line no-console -- expected to log */\n console.warn(\n `[deprecated] using the \"partial/version-banner.html\" template for motdProcessor is deprecated`,\n );\n context.addTemplateBlock(container, \"version-banner\", {\n filename: \"partials/version-banner.html\",\n data,\n });\n }\n },\n };\n}\n\nfunction versionBannerProcessorDeprecated(\n message: string,\n container: string,\n): Processor {\n return motdProcessor({\n enabled: true,\n container,\n message,\n });\n}\n\n/**\n * Display a banner with message when path dosen't start with /latest.\n *\n * @param message - Message to display in banner, may contain html-template.\n * @param container - Where the content will be inserted.\n *\n * @public\n * @deprecated Use the `motdProcessor` instead.\n */\n/* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion -- to avoid exporting versionBannerProcessorDeprecated itself */\nexport const versionBannerProcessor = util.deprecate(\n versionBannerProcessorDeprecated,\n \"versionBannerProcessor() is deprecated, use motdProcessor() instead\",\n) as (message: string, container: string) => Processor;\n","/**\n * @internal\n */\nexport function dump(value: unknown): string {\n return `<pre>${JSON.stringify(value, null, 2)}</pre>`;\n}\n","/**\n * @internal\n */\nexport function json(value: unknown): string {\n return JSON.stringify(value, null, 2);\n}\n","import path from \"node:path/posix\";\nimport { normalizePath } from \"../../utils\";\n\nfunction isExternalUrl(url: string): boolean {\n return (\n url.startsWith(\"http://\") ||\n url.startsWith(\"https://\") ||\n url.startsWith(\"//\")\n );\n}\n\nfunction isAbsoluteUrl(url: string): boolean {\n return url.startsWith(\"/\");\n}\n\n/**\n * @internal\n */\nexport function relative(\n url: string,\n { fileInfo }: { fileInfo: { path: string } },\n): string {\n if (isExternalUrl(url)) {\n return url;\n }\n if (isAbsoluteUrl(url)) {\n /* `/foo` to `./foo` */\n url = `.${url}`;\n }\n\n url = normalizePath(url);\n\n const outputPath = normalizePath(fileInfo.path);\n if (outputPath === url || `${outputPath}/` === url) {\n return \"./\";\n }\n const relative = path.relative(outputPath, url);\n\n /* force ./ in front of url unless a path already has ./ ../ or similar */\n const prefix = relative.startsWith(\".\") ? \"\" : \"./\";\n\n /* retain trailing / if present in original url */\n const suffix = url.endsWith(\"/\") ? \"/\" : \"\";\n\n return [prefix, relative, suffix].join(\"\");\n}\n","/**\n * @internal\n */\nexport function take<T extends Record<string, unknown>>(\n haystack: T[],\n key: string,\n value: string,\n): T[] {\n return haystack.filter((it) => it[key] === value);\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path/posix\";\nimport dedent from \"dedent\";\nimport { isDocumentPage } from \"../../document\";\nimport { type Processor } from \"../../processor\";\nimport { relative } from \"../../render/filter\";\nimport { getOutputFilePath, haveOutput } from \"../../utils\";\n\nconst template = (dst: string): string => /* HTML */ `\n <!doctype html>\n <html lang=\"en\">\n <head>\n <title>Redirect</title>\n <meta http-equiv=\"refresh\" content=\"0; url=${dst}\" />\n </head>\n <body>\n <p>\n This page has moved to\n <a href=\"${dst}\"> ${dst} </a>.\n </p>\n </body>\n </html>\n`;\n\n/**\n * Creates redirects using html-files with meta redirects.\n *\n * @public\n */\nexport function htmlRedirectProcessor(): Processor {\n return {\n name: \"html-redirect-processor\",\n after: \"render\",\n async handler(context) {\n const { docs, outputFolder } = context;\n for (const doc of docs.filter(isDocumentPage).filter(haveOutput)) {\n if (doc.format !== \"redirect\") {\n continue;\n }\n const filePath = getOutputFilePath(outputFolder, doc.fileInfo);\n const dst = relative(doc.body, doc);\n const content = template(dst);\n await fs.mkdir(path.dirname(filePath), { recursive: true });\n await fs.writeFile(filePath, dedent(content), \"utf8\");\n }\n },\n };\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path/posix\";\nimport { type Document, isDocumentPage } from \"../../document\";\nimport { type Processor } from \"../../processor\";\nimport { haveOutput, normalizePath } from \"../../utils\";\n\nfunction isRedirect(doc: Document): boolean {\n return doc.format === \"redirect\";\n}\n\n/**\n * Generate a netlify-style `_redirects` file.\n *\n * @public\n * @param prefix - Prefix to append to all urls, set to subdirectory if you're deploying to a subdirectory.\n * @param filename - Output filename (relative to output folder).\n */\nexport function redirectFileProcessor(\n prefix: string = \"/\",\n filename: string = \"_redirects\",\n): Processor {\n return {\n name: \"redirect-file-processor\",\n after: \"render\",\n async handler(context) {\n const { docs } = context;\n const lines = docs\n .filter(isDocumentPage)\n .filter(haveOutput)\n .filter(isRedirect)\n .map((doc) => {\n const src = normalizePath(\n doc.fileInfo.path,\n doc.fileInfo.outputName,\n );\n const dst = doc.body;\n return `${prefix}${src} ${prefix}${dst} 301\\n`;\n });\n const filePath = path.join(context.outputFolder, filename);\n await fs.mkdir(path.dirname(filePath), { recursive: true });\n await fs.writeFile(filePath, lines.join(\"\"), \"utf8\");\n context.log(filename, \"generated\");\n },\n };\n}\n","import { type Document, isDocumentPage } from \"../../document\";\nimport { normalizePath } from \"../../utils\";\n\n/**\n * @internal\n */\nexport interface Redirect {\n from: string;\n to: string;\n}\n\n/**\n * @internal\n */\nexport function getRedirects(docs: Document[]): Redirect[] {\n return docs.filter(isDocumentPage).flatMap((it): Redirect[] => {\n const { fileInfo } = it;\n const { path, outputName } = fileInfo;\n if (outputName === false) {\n return [];\n }\n return it.attributes.redirectFrom.map((jt) => {\n return {\n from: jt.startsWith(\"/\") ? jt.slice(1) : jt,\n to: normalizePath(path, outputName),\n };\n });\n });\n}\n","import path from \"node:path/posix\";\nimport { type Processor } from \"../../processor\";\nimport { getRedirects } from \"./get-redirects\";\n\n/**\n * Creates stub documents with redirects suitable for creating a manifest.\n *\n * @internal\n */\nexport function redirectProcessor(): Processor {\n return {\n name: \"redirect-processor\",\n after: \"generate-docs\",\n handler(context) {\n const redirects = getRedirects(context.docs);\n for (const redirect of redirects) {\n const { dir, base, name } = path.parse(redirect.from);\n context.addDocument({\n kind: \"page\",\n id: `redirect:${redirect.from}-${redirect.to}`,\n name: `${redirect.from}-${redirect.to}`,\n alias: [],\n visible: false,\n attributes: {\n sortorder: Infinity,\n redirectFrom: [],\n search: { terms: [] },\n },\n body: redirect.to,\n outline: [],\n format: \"redirect\",\n tags: [],\n template: \"redirect\",\n fileInfo: {\n path: dir,\n name,\n fullPath: \"virtual:redirect\",\n outputName: base,\n },\n });\n }\n const s = redirects.length === 1 ? \"\" : \"s\";\n context.log(redirects.length, `redirect${s} found`);\n },\n };\n}\n","import { type PackageJson } from \"../package-json\";\nimport { type Processor, type ProcessorOptions } from \"../processor\";\n\n/**\n * Options for {@link selectableVersionProcessor#}.\n *\n * @public\n */\nexport interface SelectableVersionProcessorOptions extends ProcessorOptions {\n readonly message?: string;\n}\n\n/**\n * Make it possible to change version.\n *\n * @public\n */\nexport function selectableVersionProcessor(\n pkg: PackageJson,\n container: string,\n options?: SelectableVersionProcessorOptions,\n): Processor {\n const { enabled = true, message = \"Det finns en nyare version\" } =\n options ?? {};\n\n return {\n name: \"selectable-version-processor\",\n after: \"generate-docs\",\n runtime: [\n {\n src: \"src/runtime/select-version.ts\",\n buildOptions: {\n define: {\n __PKG_VERSION__: JSON.stringify(`v${pkg.version}`),\n __MESSAGE__: JSON.stringify(message),\n },\n },\n },\n ],\n handler(context) {\n if (!enabled) {\n return;\n }\n context.addTemplateBlock(container, \"version\", {\n filename: \"partials/selectable-version.html\",\n data: { pkg },\n });\n context.addTemplateBlock(\"body:end\", \"version-modal\", {\n filename: \"partials/version-modal.html\",\n data: { pkg },\n });\n },\n };\n}\n","import path from \"node:path\";\nimport { type DocumentPage } from \"../document\";\n\ntype Mutable<T> = { -readonly [P in keyof T]: T[P] };\n\n/**\n * @public\n */\nexport interface NavigationLeaf {\n readonly title: string;\n readonly path: string;\n readonly sortorder: number;\n readonly id: string;\n readonly external: boolean;\n}\n\n/**\n * @public\n */\nexport interface NavigationSection {\n readonly key: string;\n readonly title: string;\n readonly path: string;\n readonly sortorder: number;\n readonly children: NavigationNode[];\n readonly visible: boolean;\n}\n\n/**\n * @public\n */\nexport type NavigationNode = NavigationLeaf | NavigationSection;\n\ntype MutableNavigationSection = Mutable<NavigationSection>;\n\n/**\n * @public\n */\nexport function isNavigationSection(\n node: NavigationNode,\n): node is NavigationSection {\n return \"key\" in node;\n}\n\nfunction pathFromDoc({ fileInfo }: DocumentPage): [string, boolean] {\n if (fileInfo.name === \"index\") {\n return [fileInfo.path.replaceAll(\"\\\\\", \"/\"), true];\n } else {\n return [\n `./${path.join(fileInfo.path, fileInfo.name).replaceAll(\"\\\\\", \"/\")}`,\n false,\n ];\n }\n}\n\nfunction getParentKey(name: string): string {\n return name.split(\"/\").slice(0, -1).join(\"/\");\n}\n\nexport function generateNavtree(docs: DocumentPage[]): NavigationSection {\n /** Lookup table for sections */\n const section: Record<string, MutableNavigationSection> = {};\n\n function createSection(\n key: string,\n title: string,\n sortorder: number,\n { visible }: { visible?: boolean } = {},\n ): void {\n const existing = section[key] as MutableNavigationSection | undefined;\n if (existing) {\n existing.title = title;\n existing.sortorder = sortorder;\n existing.visible = visible ?? true;\n } else {\n const node: MutableNavigationSection = {\n key,\n title,\n path: \"\",\n sortorder,\n children: [],\n visible: visible ?? true,\n };\n section[key] = node;\n if (key !== \".\") {\n const parent = attach(key);\n parent.children.push(node);\n }\n }\n }\n\n function attach(key: string): MutableNavigationSection {\n const parentKey = getParentKey(key);\n let parent = section[parentKey] as MutableNavigationSection | undefined;\n\n /* parent exists and is attached */\n if (parent) {\n return parent;\n }\n\n /* create stub if the parent does not exist (yet) */\n parent = {\n key: parentKey,\n title: parentKey.split(\"/\").at(-1) ?? \"(missing title)\",\n path: \"\",\n sortorder: Infinity,\n children: [],\n visible: true,\n };\n section[parentKey] = parent;\n let anchestor = parentKey;\n let current = parent;\n while (anchestor !== \".\") {\n anchestor = getParentKey(anchestor);\n if (section[anchestor] as MutableNavigationSection | undefined) {\n section[anchestor].children.push(current);\n break;\n }\n const node: MutableNavigationSection = {\n key: anchestor,\n title: \"\",\n path: \"\",\n sortorder: Infinity,\n children: [current],\n visible: true,\n };\n section[anchestor] = node;\n current = node;\n }\n\n return parent;\n }\n\n for (const doc of docs) {\n /* always ignore redirects, should never be present in navigation no\n * matter what */\n if (doc.format === \"redirect\") {\n continue;\n }\n\n const [name, isSection] = pathFromDoc(doc);\n const title =\n doc.attributes.shortTitle ??\n doc.attributes.title ??\n doc.fileInfo.name;\n const sortorder = doc.attributes.sortorder;\n\n /* external link */\n if (doc.attributes.href) {\n const parent = attach(name);\n const leafNode: NavigationLeaf = {\n id: doc.id,\n title,\n path: doc.attributes.href,\n sortorder,\n external: true,\n };\n parent.children.push(leafNode);\n continue;\n }\n\n /* ignore documents without any output */\n if (!doc.fileInfo.outputName) {\n if (isSection) {\n createSection(name, title, sortorder);\n }\n continue;\n }\n\n /* ignore documents with are marked as not navigatable */\n if (!doc.visible) {\n if (isSection) {\n createSection(name, title, sortorder, { visible: false });\n }\n continue;\n }\n\n /* special case: create or update root node */\n if (name === \".\") {\n createSection(name, title, sortorder);\n continue;\n }\n\n const parent = attach(name);\n\n if (isSection) {\n const leafNode: NavigationLeaf = {\n id: doc.id,\n title,\n path: `${name}/`,\n sortorder,\n external: false,\n };\n\n const existing = section[name] as\n | MutableNavigationSection\n | undefined;\n if (existing) {\n existing.title = title;\n existing.path = leafNode.path;\n existing.sortorder = sortorder;\n existing.children.unshift(leafNode);\n existing.visible = true;\n } else {\n const sectionNode: MutableNavigationSection = {\n key: name,\n title,\n path: leafNode.path,\n sortorder,\n children: [leafNode],\n visible: true,\n };\n section[name] = sectionNode;\n parent.children.push(sectionNode);\n }\n } else {\n const leafNode: NavigationLeaf = {\n id: doc.id,\n title,\n path: `${doc.fileInfo.path}/${doc.fileInfo.outputName}`,\n sortorder,\n external: false,\n };\n parent.children.push(leafNode);\n }\n }\n\n const root = section[\".\"] as MutableNavigationSection | undefined;\n if (root) {\n return root;\n } else {\n return {\n key: \".\",\n title: \"\",\n path: \"\",\n sortorder: Infinity,\n children: [],\n visible: true,\n };\n }\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path/posix\";\nimport { isDocumentPage } from \"../document\";\nimport { type NavigationSection } from \"../navigation\";\nimport { generateNavtree } from \"../navigation/generate-navtree\";\nimport { type Processor } from \"../processor\";\n\n/**\n * Single entry for a topnav item.\n *\n * @public\n */\nexport interface TopnavEntry {\n path: string;\n title: string;\n sortorder?: number;\n visible?: boolean;\n}\n\n/**\n * @internal for testing\n */\nexport function generateNavigation(\n entries: TopnavEntry[],\n navtree: NavigationSection,\n): Omit<NavigationSection, \"title\"> {\n return {\n key: \".\",\n path: \"./index.html\",\n sortorder: Infinity,\n visible: true,\n children: entries\n .map((entry, index) => {\n // Find the corresponding item in navtree\n const navtreeItem = navtree.children.find(\n (item) => item.title === entry.title,\n );\n\n if (navtreeItem) {\n return {\n ...navtreeItem,\n path: entry.path,\n sortorder: entry.sortorder ?? index,\n };\n }\n\n const key = path.parse(entry.path).name;\n // Create a new NavigationLeaf for entries not in navtree\n return {\n key,\n sortorder: index,\n children: [],\n visible: true,\n ...entry,\n };\n })\n .toSorted((a, b) => a.sortorder - b.sortorder),\n };\n}\n\n/**\n * Processor to create a manual topnav:\n *\n * - Custom order.\n * - Custom items.\n *\n * @public\n */\n/* istanbul ignore next: not needed for coverage, the important part is tested from generateNavigation */\nexport function topnavProcessor(filename: string, title: string): Processor {\n return {\n after: \"generate-nav\",\n name: \"topnav-processor\",\n async handler(context) {\n const content = await fs.readFile(filename, \"utf8\");\n const parsed = JSON.parse(content) as TopnavEntry[];\n const pages = context.docs.filter(isDocumentPage);\n const navtree = generateNavtree(pages);\n const rootNode = generateNavigation(parsed, navtree);\n\n context.setTopNavigation({\n title,\n ...rootNode,\n });\n },\n };\n}\n","import { type PackageJson } from \"../package-json\";\nimport { type Processor } from \"../processor\";\nimport {\n getPullRequestID,\n getRepositoryUrl,\n gitCommitHash,\n interpolate,\n runCommand,\n} from \"../utils\";\n\n/**\n * Options for {@link versionProcessor}.\n *\n * @public\n */\nexport interface VersionProcessorOptions {\n readonly enabled: boolean;\n readonly scm?: {\n readonly commitUrlFormat: string;\n readonly prUrlFormat: string;\n };\n}\n\n/**\n * @internal\n */\nexport interface VersionProcessorTemplateData {\n readonly pkg: PackageJson;\n readonly scm: {\n readonly branch: string;\n readonly commitUrl: string;\n readonly commitShort: string;\n readonly commitHash: string;\n readonly pr: string | undefined;\n readonly prUrl: string | undefined;\n } | null;\n readonly build: {\n date: string;\n time: string;\n };\n}\n\ntype ScmOptions = NonNullable<VersionProcessorOptions[\"scm\"]>;\n\ninterface GitData {\n readonly branch: string;\n readonly commitUrl: string;\n readonly commitShort: string;\n readonly commitHash: string;\n readonly pr: string | undefined;\n readonly prUrl: string | undefined;\n}\n\nasync function getGitBranch(): Promise<string> {\n /* sometimes cicd runners doesn't checkout using branch name so cant fetch\n * using normal method but instead puts the branch name in environmental\n * variables */\n const { CHANGE_BRANCH, CHANGE_NAME, GITHUB_HEAD_REF } = process.env;\n\n /* jenkins */\n if (CHANGE_BRANCH) {\n return CHANGE_BRANCH;\n }\n if (CHANGE_NAME) {\n return CHANGE_NAME;\n }\n\n /* github actions */\n if (GITHUB_HEAD_REF) {\n return GITHUB_HEAD_REF;\n }\n\n const branch = await runCommand(\n \"git rev-parse --abbrev-ref HEAD\",\n \"unknown\",\n );\n if (branch === \"HEAD\" || branch === \"\") {\n return \"unknown\";\n } else {\n return branch;\n }\n}\n\nasync function getSCMData(\n pkg: { homepage: string; repository?: { url?: string } },\n options: ScmOptions,\n): Promise<GitData | null> {\n const commitHash = await gitCommitHash(\"full\");\n const commitShort = await gitCommitHash(\"short\");\n if (!commitHash || !commitShort) {\n return null;\n }\n\n const { homepage } = pkg;\n const repository = getRepositoryUrl(pkg) ?? \"\";\n const pr = getPullRequestID(process.env);\n const prUrl = pr\n ? interpolate(options.prUrlFormat, { homepage, pr, repository })\n : undefined;\n return {\n branch: await getGitBranch(),\n commitShort,\n commitHash,\n commitUrl: interpolate(options.commitUrlFormat, {\n hash: commitHash,\n short: commitShort,\n homepage,\n repository,\n }),\n pr,\n prUrl,\n };\n}\n\nfunction getBuildDatetime(): { date: string; time: string } {\n const date = new Date();\n return {\n date: date.toLocaleDateString(\"sv-SE\"),\n time: date.toLocaleTimeString(\"sv-SE\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n }),\n };\n}\n\n/**\n * Injects the package name and version into the document.\n *\n * @public\n */\nexport function versionProcessor(\n pkg: { name: string; version: string; homepage: string },\n container: string,\n options?: VersionProcessorOptions,\n): Processor {\n const { enabled = true, scm = false } = options ?? {};\n return {\n name: \"version-processor\",\n after: \"generate-docs\",\n async handler(context) {\n if (!enabled) {\n return;\n }\n const scmData = scm ? await getSCMData(pkg, scm) : null;\n const buildData = getBuildDatetime();\n const data: VersionProcessorTemplateData = {\n pkg,\n scm: scmData,\n build: buildData,\n };\n context.addTemplateBlock(container, \"version\", {\n filename: \"partials/version.njk.html\",\n data,\n });\n },\n };\n}\n","import { type ComponentAttribute } from \"../document\";\nimport { type PackageJson } from \"../package-json\";\nimport { type Processor, type ProcessorOptions } from \"../processor\";\nimport {\n fileMatcher,\n getRepositoryUrl,\n gitCommitHash,\n interpolate,\n} from \"../utils\";\n\n/**\n * Options for {@link sourceUrlProcessor#}.\n *\n * @public\n */\nexport interface SourceUrlProcessorOptions extends ProcessorOptions {\n /** List of glob patterns matching source files */\n readonly sourceFiles?: string[];\n\n readonly urlFormat: string;\n\n /** File extension used for finding component by name */\n readonly componentFileExtension?: string;\n}\n\n/**\n * Processor that provide `componentSourceUrl` template function used for resolving\n * component source urls.\n *\n * @public\n */\nexport function sourceUrlProcessor(\n pkg: PackageJson,\n options: SourceUrlProcessorOptions,\n): Processor;\n\n/**\n * Processor that provide `componentSourceUrl` template function used for resolving\n * component source urls.\n *\n * @public\n */\nexport function sourceUrlProcessor(\n options: SourceUrlProcessorOptions,\n): Processor;\n\nexport function sourceUrlProcessor(\n ...args:\n | [PackageJson, SourceUrlProcessorOptions]\n | [SourceUrlProcessorOptions]\n): Processor {\n const pkg = args.length === 2 ? args[0] : {};\n const options = args.length === 2 ? args[1] : args[0];\n const {\n enabled = true,\n sourceFiles = [\"**/*\"],\n urlFormat,\n componentFileExtension = \"vue\",\n } = options;\n\n const repository = getRepositoryUrl(pkg) ?? \"\";\n const matcher = fileMatcher(sourceFiles);\n\n return {\n after: \"generate-docs\",\n name: \"source-url-processor\",\n async handler(context) {\n if (!enabled) {\n return;\n }\n\n const hash = (await gitCommitHash(\"full\")) ?? \"\";\n const short = (await gitCommitHash(\"short\")) ?? \"\";\n\n function componentSourceUrl(\n component: ComponentAttribute,\n ): string | undefined {\n const { source, name } = component;\n const filename = source ?? `${name}.${componentFileExtension}`;\n const path = matcher(filename, \"when generating source url\");\n return interpolate(urlFormat, {\n path,\n hash,\n short,\n repository,\n });\n }\n\n context.setTemplateData(\"componentSourceUrl\", componentSourceUrl);\n },\n };\n}\n","import { type Processor, type ProcessorOptions } from \"../processor\";\n\n/**\n * Processor that displays cookie warning.\n *\n * @public\n */\nexport function cookieProcessor(options: ProcessorOptions = {}): Processor {\n const { enabled = true } = options;\n\n return {\n after: \"generate-docs\",\n name: \"cookie-processor\",\n handler(context) {\n if (!enabled) {\n return;\n }\n\n context.addTemplateBlock(\"body:begin\", \"cookie-warning\", {\n filename: \"partials/cookie-warning.html\",\n });\n },\n };\n}\n","import { matomoProcessor } from \"./matomo\";\nimport {\n cookieProcessor,\n manifestProcessor,\n motdProcessor,\n selectableVersionProcessor,\n sourceUrlProcessor,\n topnavProcessor,\n versionProcessor,\n} from \"./processors\";\n\n/**\n * Used by build-script to find all runtime scripts that needs compilation.\n *\n * @internal\n */\nexport const availableProcessors = [\n cookieProcessor(),\n manifestProcessor(),\n matomoProcessor({ siteId: \"\", trackerUrl: \"\" }),\n motdProcessor({ message: \"\" }),\n selectableVersionProcessor({ name: \"\", version: \"\" }, \"\"),\n sourceUrlProcessor({ urlFormat: \"\" }),\n topnavProcessor(\"\", \"\"),\n versionProcessor({ name: \"\", version: \"\", homepage: \"\" }, \"\"),\n];\n","import { type SourceFiles } from \"./file-reader\";\n\n/**\n * Tiny wrapper to provide type completion for IDE.\n *\n * @public\n */\n/* istanbul ignore next: not needed for coverage */\nexport function defineSources(sources: SourceFiles[]): SourceFiles[] {\n return sources;\n}\n","import { type SourceLocation, codeFrameColumns } from \"@babel/code-frame\";\nimport { closest, distance } from \"fastest-levenshtein\";\nimport { documentAttributeKeys } from \"../document\";\n\ninterface AttributeErrorOptions {\n attribute: string;\n filePath: string;\n content: string;\n}\n\nconst threshold = 3;\n\n/* manual suggestions for attributes where the name is not just a typo */\nconst suggestions: Partial<Record<string, string>> = {\n hidden: \"visible\",\n};\n\n/**\n * Hack to guess the line in the frontmatter block, it makes horrible\n * assumptions and will break down if anything than a simple flat structure is\n * used with attribute validation but it works good enough for now.\n *\n * Nested keys could be fixed by searching recursive though.\n *\n * @internal\n */\nexport function findLocation(\n content: string,\n attr: string,\n): SourceLocation | null {\n const match = /^---\\n(.*?)^---/ms.exec(content);\n if (match?.index !== 0) {\n return null;\n }\n\n /* @todo would be better to actually parse the yaml block to an ast and get the location from there */\n const yaml = match[1];\n const lines = yaml.split(\"\\n\");\n const index = lines.findIndex((it) => it.startsWith(`${attr}:`)); // this makes horrible assumptions and will break\n if (index === -1) {\n return null;\n }\n\n const blockBegin = 2; // the first line of the frontmatter block is at line 2\n return {\n start: { line: index + blockBegin, column: 1 },\n end: { line: index + blockBegin, column: 1 + attr.length },\n };\n}\n\nfunction getSuggestion(attribute: string): [suggestion: string, d: number] {\n /* use manual suggestions if they exists */\n const manual = suggestions[attribute];\n if (manual) {\n return [manual, 0];\n }\n\n /* find typos */\n const closestKey = closest(attribute, documentAttributeKeys);\n const d = distance(attribute, closestKey);\n return [closestKey, d];\n}\n\n/**\n * @internal\n */\nexport class AttributeError extends Error {\n private readonly attribute: string;\n private readonly content: string;\n\n public constructor(options: AttributeErrorOptions) {\n const { attribute, filePath, content } = options;\n super(`Unknown attribute \"${attribute}\" in \"${filePath}\"`);\n this.name = \"AttributeError\";\n this.attribute = attribute;\n this.content = content;\n }\n\n public prettyError(): string {\n const { attribute, content, message } = this;\n\n const [closestMatch, d] = getSuggestion(attribute);\n const suggestion =\n d <= threshold\n ? `Did you mean to use \"${closestMatch}\"?`\n : `Unknown attribute \"${attribute}\"`;\n const location = findLocation(content, attribute);\n if (location) {\n const codeframe = codeFrameColumns(content, location, {\n message: suggestion,\n });\n return [message, \"\", codeframe].join(\"\\n\");\n } else if (d <= threshold) {\n return [message, \"\", suggestion].join(\"\\n\");\n } else {\n return message;\n }\n }\n}\n","import fs from \"node:fs/promises\";\nimport path, { type ParsedPath } from \"node:path\";\nimport fm from \"front-matter\";\nimport {\n type ComponentAttribute,\n type DocumentAttributes,\n type DocumentBadge,\n type DocumentPage,\n documentAttributeKeys,\n} from \"../document\";\nimport { getDocumentOutline, normalizePath } from \"../utils\";\nimport { AttributeError } from \"./attribute-error\";\n\nfunction toArray<T>(value: T | T[]): T[] {\n return Array.isArray(value) ? value : [value];\n}\n\nfunction isIndexPage(parsed: ParsedPath): boolean {\n const folder = path.basename(parsed.dir);\n\n /* if the filename is the same as the folder it lives in this is considered the index page */\n if (parsed.name === folder) {\n return true;\n }\n\n /* if the filename is readme it is considered the index page */\n if (parsed.name.toLowerCase() === \"readme\") {\n return true;\n }\n\n /* if the filename is index it is considered the index page */\n if (parsed.name === \"index\") {\n return true;\n }\n\n return false;\n}\n\nfunction getBadge(attrs: DocumentAttributes): DocumentBadge | undefined {\n if (!attrs.status) {\n return undefined;\n }\n switch (attrs.status) {\n case \"Produktionsklar\":\n return \"success\";\n case \"Deprekerad\":\n case \"Experimentell\":\n return \"error\";\n case \"Preliminär\":\n case \"Draft\":\n case \"Beta\":\n return \"info\";\n default:\n return \"info\";\n }\n}\n\nfunction validateAttributes(\n attributes: DocumentAttributes,\n filePath: string,\n content: string,\n): void {\n /* @todo json schema validation would make more sense but for now this is good enough */\n for (const key of Object.keys(attributes)) {\n if (documentAttributeKeys.includes(key)) {\n continue;\n }\n throw new AttributeError({\n attribute: key,\n filePath,\n content,\n });\n }\n}\n\nfunction normalizeComponent(\n value: string | ComponentAttribute,\n): ComponentAttribute {\n if (typeof value === \"string\") {\n return {\n name: value,\n };\n } else {\n return value;\n }\n}\n\nfunction getComponentAlias(value: string | ComponentAttribute): string {\n const { name } = normalizeComponent(value);\n return `component:${name}`;\n}\n\n/**\n * @internal\n */\nexport function* getDocumentAlias(\n attrs: DocumentAttributes,\n): Generator<string> {\n if (attrs.alias) {\n yield* toArray(attrs.alias);\n }\n if (attrs.component) {\n yield* toArray(attrs.component).map(getComponentAlias);\n }\n}\n\nfunction getComponent(\n attrs: DocumentAttributes,\n): ComponentAttribute[] | undefined {\n if (!attrs.component) {\n return undefined;\n }\n return toArray(attrs.component).map(normalizeComponent);\n}\n\n/**\n * @internal\n */\nexport function parseFile(\n filePath: string,\n basePath: string | undefined,\n content: string,\n): DocumentPage {\n const relative = basePath\n ? path.relative(basePath, normalizePath(filePath))\n : normalizePath(filePath);\n const parsed = path.parse(relative);\n const blocks = fm<DocumentAttributes>(content);\n const attributes = blocks.attributes;\n const isIndex = isIndexPage(parsed);\n const filename = isIndex ? \"index\" : parsed.name.toLowerCase();\n const name = attributes.name ?? parsed.name;\n const urlpath = parsed.dir;\n const outline = getDocumentOutline(blocks.body, \"markdown\");\n const include = attributes.include ?? true;\n\n validateAttributes(attributes, filePath, content);\n\n return {\n kind: \"page\",\n id: `fs:${filePath.replaceAll(\"\\\\\", \"/\")}`,\n name,\n alias: Array.from(getDocumentAlias(attributes)),\n visible: attributes.visible ?? true,\n attributes: {\n title: attributes.title ?? name,\n shortTitle: attributes[\"short-title\"],\n layout: attributes.layout,\n status: attributes.status,\n badge: getBadge(attributes),\n component: getComponent(attributes),\n redirectFrom: toArray(attributes.redirect_from ?? []),\n search: {\n terms: toArray(attributes.search?.terms ?? []),\n },\n sortorder: attributes.sortorder ?? Infinity,\n },\n body: blocks.body,\n outline,\n format: \"markdown\",\n tags: [],\n template: blocks.attributes.layout ?? \"default\",\n fileInfo: {\n path: [\"\", \".\"].includes(urlpath)\n ? \".\"\n : `./${normalizePath(urlpath)}`,\n name: filename,\n fullPath: normalizePath(filePath),\n outputName: include ? `${filename}.html` : false,\n },\n };\n}\n\n/**\n * Read a Markdown file with Front Matter.\n *\n * @public\n */\n/* istanbul ignore next */\nexport async function frontMatterFileReader(\n filePath: string,\n basePath?: string,\n): Promise<DocumentPage[]> {\n const content = await fs.readFile(filePath, \"utf8\");\n const doc = parseFile(filePath, basePath, content);\n return [doc];\n}\n","import { parse as babelParser } from \"@babel/parser\";\nimport traverseModule, { type NodePath } from \"@babel/traverse\";\nimport {\n type CallExpression,\n type Comment,\n type CommentBlock,\n type MemberExpression,\n type Node,\n type ObjectExpression,\n type StringLiteral,\n} from \"@babel/types\";\nimport isCI from \"is-ci\";\nimport {\n type BindingMetadata,\n compileScript,\n compileTemplate,\n parse,\n} from \"vue/compiler-sfc\";\nimport { type TranslationKey } from \"./translation-key\";\n\ntype BabelTraverse = typeof traverseModule;\ntype TranslationParameter = TranslationKey[\"parameters\"][number];\n\nfunction isStringLiteral(node: Node): node is StringLiteral {\n return node.type === \"StringLiteral\";\n}\n\nfunction isObjectExpression(node: Node): node is ObjectExpression {\n return node.type === \"ObjectExpression\";\n}\n\nfunction isDocComment(node: Comment): node is CommentBlock {\n return node.type === \"CommentBlock\";\n}\n\nfunction getDescription(node: CommentBlock | null | undefined): string | null {\n if (!node) {\n return null;\n }\n const text = node.value;\n if (!text.startsWith(\"*\")) {\n return null;\n }\n return (\n node.value\n /* eslint-disable-next-line sonarjs/slow-regex -- technical debt */\n .replaceAll(/^\\s*\\*\\s/gm, \"\") // removes leading whitespace and *\n /* eslint-disable-next-line sonarjs/slow-regex -- technical debt */\n .replaceAll(/\\s+$/gm, \"\") // removes trailing whitespace\n );\n}\n\n/**\n * Takes a member expression and converts it back to string:\n *\n * \"foo.bar()\"\n * \"foo.bar.baz()\"\n * \"this.foo()\"\n * ... etc\n *\n * If the expression contains anything dynamic `null` is returned.\n */\nfunction flattenMemberExpression(node: MemberExpression): string | null {\n const { object, property } = node;\n if (property.type !== \"Identifier\") {\n return null;\n }\n if (object.type === \"Identifier\") {\n return [object.name, property.name].join(\".\");\n }\n if (object.type === \"ThisExpression\") {\n return [\"this\", property.name].join(\".\");\n }\n if (object.type === \"MemberExpression\") {\n const nested = flattenMemberExpression(object);\n if (nested) {\n return [nested, property.name].join(\".\");\n }\n }\n return null;\n}\n\nfunction getParameters(\n node: ObjectExpression | undefined,\n): TranslationParameter[] {\n if (!node) {\n return [];\n }\n const parameters: TranslationParameter[] = [];\n for (const property of node.properties) {\n if (property.type !== \"ObjectProperty\") {\n continue;\n }\n if (property.key.type !== \"Identifier\") {\n continue;\n }\n const docComment = property.leadingComments?.find(isDocComment);\n parameters.push({\n name: property.key.name,\n description: getDescription(docComment),\n });\n }\n return parameters;\n}\n\nfunction isTranslateCall(node: CallExpression): boolean {\n const allowedNames = [\n \"this.$t\", // options api (inside computed, methods, etc)\n \"_ctx.$t\", // options api (template)\n \"$setup.$t\", // script setup or setup in options api\n \"TranslationService.provider.translate\", // props call this directly\n ];\n\n if (node.callee.type === \"MemberExpression\") {\n const fullName = flattenMemberExpression(node.callee);\n return Boolean(fullName && allowedNames.includes(fullName));\n }\n\n /* direct calls in script setup, i.e. from global scope */\n if (node.callee.type === \"Identifier\") {\n return node.callee.name === \"$t\";\n }\n\n return false;\n}\n\nfunction findDocComment(\n path: NodePath,\n node: CallExpression,\n): CommentBlock | null {\n if (node.leadingComments) {\n const doc = node.leadingComments.find(isDocComment);\n if (doc) {\n return doc;\n }\n }\n\n const parent = path.parent;\n if (\n parent.leadingComments &&\n (parent.type === \"ReturnStatement\" || parent.type === \"ObjectProperty\")\n ) {\n const doc = parent.leadingComments.find(isDocComment);\n if (doc) {\n return doc;\n }\n }\n\n /* find comment from variable declaration */\n const grandparent = path.parentPath?.parent;\n if (parent.type === \"VariableDeclarator\" && grandparent?.leadingComments) {\n const doc = grandparent.leadingComments.find(isDocComment);\n if (doc) {\n return doc;\n }\n }\n\n return null;\n}\n\n/**\n * Finds all translation keys from a Vue SFC.\n *\n * This works in three distinctive steps:\n *\n * 1. Parse the SFC to javascript sourcecode.\n * 2. Parse the javascript sourcecode to an AST.\n * 3. Traverse the AST looking for calls to `$t()` (or variants of it).\n *\n * @internal\n */\nexport function findTranslations(\n filename: string,\n content: string,\n): TranslationKey[] {\n const { descriptor, errors } = parse(content, { filename });\n\n if (errors.length > 0) {\n if (isCI) {\n const first = errors[0].message;\n throw new Error(\n `Errors occurred when trying to parse \"${filename}\": ${first}`,\n );\n }\n return [];\n }\n\n const id = \"faux-id\";\n let sourcecode = \"\";\n\n let bindings: BindingMetadata | undefined = undefined;\n if (descriptor.script || descriptor.scriptSetup) {\n const script = compileScript(descriptor, {\n id,\n isProd: false,\n sourceMap: false,\n inlineTemplate: false,\n genDefaultAs: \"exampleComponent\",\n templateOptions: {\n filename,\n source: descriptor.template?.content,\n slotted: descriptor.slotted,\n compilerOptions: {\n comments: true,\n whitespace: \"condense\",\n mode: \"module\",\n },\n },\n });\n bindings = script.bindings;\n sourcecode += `${script.content}\\n\\n`;\n }\n\n if (descriptor.template) {\n const template = compileTemplate({\n id,\n filename,\n source: descriptor.template.content,\n slotted: descriptor.slotted,\n preprocessLang: descriptor.template.lang,\n compilerOptions: {\n bindingMetadata: bindings,\n comments: true,\n whitespace: \"condense\",\n mode: \"module\",\n },\n });\n sourcecode += `${template.code}\\n\\n`;\n }\n\n const ast = babelParser(sourcecode, {\n sourceType: \"module\",\n plugins: [\"typescript\"],\n });\n\n /* hack as @babel/traverse doesnt play nicely with import */\n const traverse: BabelTraverse =\n \"default\" in traverseModule\n ? (traverseModule.default as BabelTraverse)\n : traverseModule;\n\n const result: TranslationKey[] = [];\n traverse(ast, {\n CallExpression(path) {\n const { node } = path;\n if (isTranslateCall(node)) {\n const [name, ...defaultOrParams] = node.arguments;\n const textArgument = defaultOrParams.find(isStringLiteral);\n const paramArgument = defaultOrParams.find(isObjectExpression);\n if (name.type !== \"StringLiteral\") {\n return;\n }\n const defaultTranslation = textArgument\n ? textArgument.value\n : null;\n const docComment = findDocComment(path, node);\n result.push({\n name: name.value,\n defaultTranslation,\n description: getDescription(docComment),\n parameters: getParameters(paramArgument),\n });\n }\n },\n });\n\n return result;\n}\n","import markdownIt from \"markdown-it\";\nimport { htmlencode, slugify } from \"../../utils\";\nimport { type ComponentEvent } from \"./component-api\";\n\nconst md = markdownIt();\nconst EMPTY_CHAR = \"‐\";\nconst EM_DASH = `<span role=\"presentation\">—</span>`;\n\nfunction render(text: string | null): string {\n return text ? md.render(text) : EMPTY_CHAR;\n}\n\nfunction renderInline(text: string | null): string {\n return text ? md.renderInline(text) : EMPTY_CHAR;\n}\n\n/**\n * @internal\n */\nexport function generateEventTable(\n slug: string,\n events: ComponentEvent[],\n): string {\n return /* HTML */ `\n <next-heading-level id=\"${slug}-events\">\n <a class=\"header-anchor\" href=\"#${slug}-events\">Events</a>\n </next-heading-level>\n <dl class=\"docs-api docs-api--events\">\n ${events\n .map((event) => {\n const { name } = event;\n const id = `${slug}-event-${slugify(name)}`;\n const haveProperties = event.properties.length > 0;\n return /* HTML */ `\n <dt>\n <code id=\"${id}\"\n ><a class=\"docs-api__anchor\" href=\"#${id}\"\n ><span class=\"docs-api__name\"\n >${htmlencode(name)}</span\n ></a\n ></code\n >\n ${event.deprecated === null\n ? \"\"\n : `<span class=\"docs-tag docs-tag--deprecated\">Deprecated</span>`}\n </dt>\n <dd>\n ${render(event.description)}\n ${haveProperties\n ? `<p class=\"docs-api__list-title\">Arguments:</p><ul class=\"docs-api__list\">`\n : \"\"}\n ${event.properties\n .map((it) => {\n if (it.description) {\n return `<li><code>${htmlencode(it.name)}: ${htmlencode(it.type)}</code> ${EM_DASH} ${renderInline(it.description)}</li>`;\n } else {\n return `<li><code>${htmlencode(it.name)}: ${htmlencode(it.type)}</code></li>`;\n }\n })\n .join(\"\")}\n ${haveProperties ? `</ul>` : \"\"}\n ${event.deprecated\n ? `<p class=\"docs-api__deprecated docs-deprecated\">Deprecated: ${renderInline(event.deprecated)}</p>`\n : \"\"}\n </dd>\n `;\n })\n .join(\"\")}\n </dl>\n `;\n}\n","import markdownIt from \"markdown-it\";\nimport { htmlencode, slugify } from \"../../utils\";\nimport { type ComponentModel } from \"./component-api\";\n\nconst md = markdownIt();\nconst EMPTY_CHAR = \"‐\";\n\nfunction render(text: string | null): string {\n return text ? md.render(text) : EMPTY_CHAR;\n}\n\nfunction renderInline(text: string | null): string {\n return text ? md.renderInline(text) : EMPTY_CHAR;\n}\n\n/**\n * @internal\n */\nexport function generateModelTable(\n slug: string,\n models: ComponentModel[],\n): string {\n return /* HTML */ `\n <next-heading-level id=\"${slug}-models\">\n <a class=\"header-anchor\" href=\"#${slug}-models\">Models</a>\n </next-heading-level>\n <dl class=\"docs-api docs-api--models\">\n ${models\n .map((model) => {\n const { name } = model;\n const id = `${slug}-model-${slugify(name)}`;\n return /* HTML */ `\n <dt>\n <code id=\"${id}\"\n ><a class=\"docs-api__anchor\" href=\"#${id}\"\n ><span class=\"docs-api__name\"\n >${htmlencode(name)}</span\n >: ${htmlencode(model.type ?? \"unknown\")}</a\n ></code\n >\n ${model.required\n ? \"\"\n : `<span class=\"docs-tag docs-tag--default\">Optional</span>`}\n ${model.deprecated === null\n ? \"\"\n : `<span class=\"docs-tag docs-tag--deprecated\">Deprecated</span>`}\n </dt>\n <dd>\n ${render(model.description)}\n ${model.default\n ? `<p class=\"doc-api__item\">Default: <code>${htmlencode(model.default.value)}</code></p>`\n : \"\"}\n ${model.deprecated\n ? `<p class=\"doc-api__item docs-deprecated\">Deprecated: ${renderInline(model.deprecated)}</p>`\n : \"\"}\n </dd>\n `;\n })\n .join(\"\")}\n </dl>\n `;\n}\n","import markdownIt from \"markdown-it\";\nimport { htmlencode, slugify } from \"../../utils\";\nimport { type ComponentProp } from \"./component-api\";\n\nconst md = markdownIt();\nconst EMPTY_CHAR = \"‐\";\n\nfunction render(text: string | null): string {\n return text ? md.render(text) : EMPTY_CHAR;\n}\n\nfunction renderInline(text: string | null): string {\n return text ? md.renderInline(text) : EMPTY_CHAR;\n}\n\n/**\n * @internal\n */\nexport function generatePropTable(\n slug: string,\n props: ComponentProp[],\n): string {\n return /* HTML */ `\n <next-heading-level id=\"${slug}-props\">\n <a class=\"header-anchor\" href=\"#${slug}-props\">Props</a>\n </next-heading-level>\n <dl class=\"docs-api docs-api--slots\">\n ${props\n .map((prop) => {\n const { name } = prop;\n const id = `${slug}-prop-${slugify(name)}`;\n return /* HTML */ `\n <dt>\n <code id=\"${id}\"\n ><a class=\"docs-api__anchor\" href=\"#${id}\"\n ><span class=\"docs-api__name\"\n >${htmlencode(name)}</span\n >: ${htmlencode(prop.type ?? \"unknown\")}</a\n ></code\n >\n ${prop.required\n ? \"\"\n : `<span class=\"docs-tag docs-tag--default\">Optional</span>`}\n ${prop.deprecated === null\n ? \"\"\n : `<span class=\"docs-tag docs-tag--deprecated\">Deprecated</span>`}\n </dt>\n <dd>\n ${render(prop.description)}\n ${prop.default\n ? `<p class=\"doc-api__item\">Default: <code>${htmlencode(prop.default.value)}</code></p>`\n : \"\"}\n ${prop.deprecated\n ? `<p class=\"doc-api__item docs-deprecated\">Deprecated: ${renderInline(prop.deprecated)}</p>`\n : \"\"}\n </dd>\n `;\n })\n .join(\"\")}\n </dl>\n `;\n}\n","import markdownIt from \"markdown-it\";\nimport { htmlencode, slugify } from \"../../utils\";\nimport { type ComponentSlot } from \"./component-api\";\n\nconst md = markdownIt();\nconst EMPTY_CHAR = \"‐\";\nconst EM_DASH = `<span role=\"presentation\">—</span>`;\n\nfunction render(text: string | null): string {\n return text ? md.render(text) : EMPTY_CHAR;\n}\n\nfunction renderInline(text: string | null): string {\n return text ? md.renderInline(text) : EMPTY_CHAR;\n}\n\n/**\n * @internal\n */\nexport function generateSlotTable(\n slug: string,\n slots: ComponentSlot[],\n): string {\n return /* HTML */ `\n <next-heading-level id=\"${slug}-slots\">\n <a class=\"header-anchor\" href=\"#${slug}-slots\">Slots</a>\n </next-heading-level>\n <dl class=\"docs-api docs-api--slots\">\n ${slots\n .map((slot) => {\n const { name } = slot;\n const id = `${slug}-slot-${slugify(name)}`;\n const haveBindings = slot.bindings.length > 0;\n return /* HTML */ `\n <dt>\n <code id=\"${id}\"\n ><a class=\"docs-api__anchor\" href=\"#${id}\"\n ><span class=\"docs-api__name\"\n >${htmlencode(name)}</span\n ></a\n ></code\n >\n ${slot.deprecated === null\n ? \"\"\n : `<span class=\"docs-tag docs-tag--deprecated\">Deprecated</span>`}\n </dt>\n <dd>\n ${render(slot.description)}\n ${haveBindings\n ? `<p class=\"docs-api__list-title\">Bindings:</p><ul class=\"docs-api__list\">`\n : \"\"}\n ${slot.bindings\n .map((it) => {\n if (it.description) {\n return `<li><code>${htmlencode(it.name)}: ${htmlencode(it.type)}</code> ${EM_DASH} ${renderInline(it.description)}</li>`;\n } else {\n return `<li><code>${htmlencode(it.name)}: ${htmlencode(it.type)}</code></li>`;\n }\n })\n .join(\"\")}\n ${haveBindings ? `</ul>` : \"\"}\n ${slot.deprecated\n ? `<p class=\"docs-api__deprecated docs-deprecated\">Deprecated: ${renderInline(slot.deprecated)}</p>`\n : \"\"}\n </dd>\n `;\n })\n .join(\"\")}\n </dl>\n `;\n}\n","import markdownIt from \"markdown-it\";\nimport { htmlencode, slugify } from \"../../utils\";\nimport { type TranslationKey } from \"./translation-key\";\n\nconst md = markdownIt();\nconst EMPTY_CHAR = \"‐\";\nconst EM_DASH = `<span role=\"presentation\">—</span>`;\n\nfunction render(text: string | null): string {\n return text ? md.render(text) : EMPTY_CHAR;\n}\n\nfunction renderInline(text: string | null): string {\n return text ? md.renderInline(text) : EMPTY_CHAR;\n}\n\n/**\n * @internal\n */\nexport function generateTranslationTable(\n slug: string,\n translations: TranslationKey[],\n): string {\n return /* HTML */ `\n <dl class=\"docs-api docs-api--translation\">\n ${translations\n .map((translation) => {\n const { name } = translation;\n const id = `${slug}-translation-${slugify(name)}`;\n const haveParameters = translation.parameters.length > 0;\n return /* HTML */ `\n <dt>\n <code id=\"${id}\"\n ><a class=\"docs-api__anchor\" href=\"#${id}\"\n ><span class=\"docs-api__name\"\n >${htmlencode(name)}</span\n ></a\n ></code\n >\n </dt>\n <dd>\n ${render(translation.description)}\n ${translation.defaultTranslation\n ? `<p class=\"doc-api__item\">Default: \"${htmlencode(translation.defaultTranslation)}\"</p>`\n : \"\"}\n ${haveParameters\n ? `<p class=\"docs-api__list-title\">Parameters:</p><ul class=\"docs-api__list\">`\n : \"\"}\n ${translation.parameters\n .map((it) => {\n if (it.description) {\n return `<li><code>${htmlencode(it.name)}</code> ${EM_DASH} ${renderInline(it.description)}</li>`;\n } else {\n return `<li><code>${htmlencode(it.name)}</code></li>`;\n }\n })\n .join(\"\")}\n ${haveParameters ? `</ul>` : \"\"}\n </dd>\n `;\n })\n .join(\"\")}\n </dl>\n `;\n}\n","import {\n type EventDescriptor,\n type ParamType,\n type PropDescriptor,\n type SlotDescriptor,\n parse,\n} from \"vue-docgen-api\";\nimport { slugify } from \"../../utils\";\nimport {\n type ComponentAPI,\n type ComponentEvent,\n type ComponentModel,\n type ComponentProp,\n type ComponentSlot,\n} from \"./component-api\";\n\ninterface PropDeprecatedTag {\n description?: string | boolean;\n}\n\ninterface EventDeprecatedTag {\n content?: string | boolean;\n}\n\nfunction getPropSlotDeprecated(\n prop: Pick<PropDescriptor, \"tags\"> | Pick<SlotDescriptor, \"tags\">,\n): string | null {\n const tags = prop.tags;\n if (!tags?.deprecated) {\n return null;\n }\n const tag = tags.deprecated[0] as PropDeprecatedTag | undefined;\n if (!tag?.description) {\n return null;\n }\n if (tag.description === true) {\n return \"\";\n } else {\n return tag.description;\n }\n}\n\nfunction getEventDeprecated(\n event: Pick<EventDescriptor, \"tags\">,\n): string | null {\n const tags = event.tags;\n if (!tags) {\n return null;\n }\n const tag = tags.find((it) => it.title === \"deprecated\") as\n | EventDeprecatedTag\n | undefined;\n if (!tag?.content) {\n return null;\n }\n if (tag.content === true) {\n return \"\";\n } else {\n return tag.content;\n }\n}\n\n/**\n * A name is considered simple if it is suitable to type out as `Something[]`\n * instead of `Array<Something>`.\n *\n * Examples of simple names:\n *\n * - `string[]`\n * - `AwesomeInterface[]`\n *\n * Examples of complex names:\n *\n * - `Array<{ inline: \"interface\" }>`\n */\nfunction isSimpleName(name: string): boolean {\n return /^[\\da-z]+$/i.test(name);\n}\n\n/**\n * Get the type as a string from a prop.\n */\nfunction getPropType(prop: PropDescriptor): string | null {\n const { type } = prop;\n if (!type) {\n return null;\n }\n\n /* for options api the type may contain enum-like values */\n if (type.name === \"string\" && prop.values) {\n return prop.values.map((value) => `\"${value}\"`).join(\" | \");\n }\n\n /* for composition api the type is set to \"Array\" and the `elements`\n * property holds what the array contains (with a single element, if there\n * is multiple array elements it is considered a tuple). */\n if (type.name === \"Array\") {\n const param = type as ParamType;\n const element = param.elements?.[0];\n if (!element) {\n return \"any[]\";\n }\n if (isSimpleName(element.name)) {\n return `${element.name}[]`;\n } else {\n return `Array<${element.name}>`;\n }\n }\n\n /* similar to \"Array\" but this time the `elements` property contains each\n * constituent of the tuple (including zero elements if the type is `[]`) */\n if (type.name === \"tuple\") {\n const param = type as ParamType;\n if (!param.elements) {\n return type.name;\n }\n const constituents = param.elements.map((it) => it.name).join(\", \");\n return `[${constituents}]`;\n }\n\n /* handle union types by joining the constituent types with `|` */\n if (type.name === \"union\") {\n const param = type as ParamType;\n if (!param.elements) {\n return type.name;\n }\n return param.elements.map((it) => it.name).join(\" | \");\n }\n\n return type.name;\n}\n\nfunction translateProps(props: PropDescriptor[]): ComponentProp[] {\n const isRelevant = (prop: PropDescriptor): boolean => {\n return prop.tags?.ignore === undefined;\n };\n return props.filter(isRelevant).map((prop): ComponentProp => {\n const defaultValue = prop.defaultValue\n ? { value: prop.defaultValue.value }\n : null;\n return {\n name: prop.name,\n description: prop.description ?? null,\n type: getPropType(prop),\n required: Boolean(prop.required),\n default: defaultValue,\n deprecated: getPropSlotDeprecated(prop),\n };\n });\n}\n\nfunction translateEvents(events: EventDescriptor[]): ComponentEvent[] {\n const translatedEvents: ComponentEvent[] = [];\n\n for (const event of events) {\n if (event.tags?.find((it) => it.title === \"ignore\")) {\n continue;\n }\n const translatedEvent: ComponentEvent = {\n name: event.name,\n description: event.description ?? null,\n properties: translateEventProperties(event),\n deprecated: getEventDeprecated(event),\n };\n translatedEvents.push(translatedEvent);\n }\n\n return translatedEvents;\n}\n\nfunction translateEventProperties(event: EventDescriptor): Array<{\n name: string;\n type: string;\n description: string | null;\n}> {\n const properties = event.properties;\n const types = event.type ? Object.values(event.type.names) : [];\n\n if (!properties && types.length === 0) {\n return [];\n }\n if (!properties) {\n return [\n { name: \"<anonymous>\", type: String(types), description: null },\n ];\n }\n\n const translatedProperties: Array<{\n name: string;\n type: string;\n description: string | null;\n }> = [];\n\n for (const [i, property] of properties.entries()) {\n const name = property.name ?? \"<anonymous>\";\n const eventType = types[i];\n const hasEventType = Boolean(eventType) && eventType !== \"undefined\";\n const type = hasEventType ? eventType : property.type.names.join(\" \");\n const description =\n typeof property.description === \"string\"\n ? property.description\n : null;\n\n translatedProperties.push({\n name,\n type,\n description,\n });\n }\n\n return translatedProperties;\n}\n\nfunction translateSlots(slots: SlotDescriptor[]): ComponentSlot[] {\n const translatedSlots: ComponentSlot[] = [];\n\n for (const slot of slots) {\n if (slot.tags?.ignore) {\n continue;\n }\n const translatedSlot: ComponentSlot = {\n name: slot.name,\n description: slot.description ?? null,\n bindings: translateSlotBindings(slot),\n deprecated: getPropSlotDeprecated(slot),\n };\n\n translatedSlots.push(translatedSlot);\n }\n\n return translatedSlots;\n}\n\nfunction translateSlotBindings(slot: SlotDescriptor): Array<{\n name: string;\n type: string;\n description: string | null;\n}> {\n if (!slot.bindings) {\n return [];\n }\n\n const translatedBindings: Array<{\n name: string;\n type: string;\n description: string | null;\n }> = [];\n\n for (const binding of slot.bindings) {\n const name = binding.name ?? \"<anonymous>\";\n const type = binding.type?.name ?? \"unknown\";\n const description =\n typeof binding.description === \"string\"\n ? binding.description\n : null;\n translatedBindings.push({\n name,\n type,\n description,\n });\n }\n\n return translatedBindings;\n}\n\n/**\n * Filter v-models by comparing component props and events.\n *\n * @internal\n * @param rawProps - Translated props.\n * @param rawEvents - Translated events.\n * @returns Object with array of only models as well as props and events without models.\n */\nfunction filterModels(\n rawProps: ComponentProp[],\n rawEvents: ComponentEvent[],\n): {\n models: ComponentModel[];\n props: ComponentProp[];\n events: ComponentEvent[];\n} {\n const modelEvents = rawEvents.filter((it) => it.name.startsWith(\"update:\"));\n const rawModels = modelEvents.map((it) => {\n const propName = it.name.slice(\"update:\".length);\n const prop = rawProps.find((it) => it.name === propName);\n if (!prop) {\n return null;\n }\n\n return {\n ...prop,\n name: propName === \"modelValue\" ? \"v-model\" : `v-model:${propName}`,\n };\n });\n\n const models = rawModels.filter((model) => model !== null);\n const events = rawEvents.filter((it) => !it.name.startsWith(\"update:\"));\n const props = rawProps.filter((prop) => {\n const hasModelName = models.some(\n (model) => model.name.slice(\"v-model:\".length) === prop.name,\n );\n return !(hasModelName || prop.name.startsWith(\"modelValue\"));\n });\n\n return { models, props, events };\n}\n\n/**\n * Translates output from a vue component parser to general interface.\n * If the parser is changed the translation functions need to be updated to match its interface.\n *\n * @internal\n */\nexport async function translateAPI(filePath: string): Promise<ComponentAPI> {\n try {\n const api = await parse(filePath);\n const rawProps = api.props ? translateProps(api.props) : [];\n const rawEvents = api.events ? translateEvents(api.events) : [];\n\n const { models, props, events } = filterModels(rawProps, rawEvents);\n const slots = api.slots ? translateSlots(api.slots) : [];\n\n return {\n name: api.displayName,\n slug: slugify(api.displayName),\n models,\n props,\n events,\n slots,\n };\n } catch (err) {\n throw new Error(\n `Failed to generate API description from \"${filePath}\"`,\n { cause: err },\n );\n }\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { type DocumentPartial } from \"../../document\";\nimport { normalizePath } from \"../../utils\";\nimport { type ComponentAPI } from \"./component-api\";\nimport { findTranslations } from \"./find-translations\";\nimport { generateEventTable } from \"./generate-event-table\";\nimport { generateModelTable } from \"./generate-model-table\";\nimport { generatePropTable } from \"./generate-prop-table\";\nimport { generateSlotTable } from \"./generate-slot-table\";\nimport { generateTranslationTable } from \"./generate-translation-table\";\nimport { translateAPI } from \"./translate-api\";\n\nfunction parseAPI(filePath: string, api: ComponentAPI): DocumentPartial {\n const relative = normalizePath(filePath);\n const parsedPath = path.parse(relative);\n const componentName = parsedPath.name;\n\n let html = \"\";\n if (api.models.length > 0) {\n html += generateModelTable(api.slug, api.models);\n }\n if (api.props.length > 0) {\n html += generatePropTable(api.slug, api.props);\n }\n if (api.events.length > 0) {\n html += generateEventTable(api.slug, api.events);\n }\n if (api.slots.length > 0) {\n html += generateSlotTable(api.slug, api.slots);\n }\n\n return {\n kind: \"partial\",\n id: `fs:${filePath.replaceAll(\"\\\\\", \"/\")}:api`,\n name: `vue:${componentName}`,\n alias: [],\n body: html,\n format: \"html\",\n fileInfo: {\n fullPath: filePath,\n },\n };\n}\n\nasync function parseTranslation(\n slug: string,\n filePath: string,\n): Promise<DocumentPartial> {\n const relative = normalizePath(filePath);\n const parsedPath = path.parse(relative);\n const componentName = parsedPath.name;\n const content = await fs.readFile(filePath, \"utf8\");\n return {\n kind: \"partial\",\n id: `fs:${filePath.replaceAll(\"\\\\\", \"/\")}:translation`,\n name: `translation:${componentName}`,\n alias: [],\n get body() {\n const translations = findTranslations(filePath, content);\n return generateTranslationTable(slug, translations);\n },\n format: \"html\",\n fileInfo: {\n fullPath: filePath,\n },\n };\n}\n\n/**\n * Generate API documentation from a Vue SFC.\n *\n * @public\n */\nexport async function vueFileReader(\n filePath: string,\n): Promise<DocumentPartial[]> {\n const translated = await translateAPI(filePath);\n const vueApi = parseAPI(filePath, translated);\n const vueTranslation = await parseTranslation(translated.slug, filePath);\n return [vueApi, vueTranslation];\n}\n","import { glob } from \"glob\";\nimport { type Document } from \"../document\";\nimport { type Processor } from \"../processor\";\nimport { difference } from \"../utils\";\nimport { type SourceFiles } from \"./source-files\";\n\nasync function globAll(\n pattern: string | string[] | undefined,\n): Promise<Set<string>> {\n if (!pattern) {\n return new Set();\n }\n\n if (!Array.isArray(pattern)) {\n return globAll([pattern]);\n }\n\n const results = await Promise.all(\n pattern.map((it) => glob(it, { nodir: true })),\n );\n return new Set(results.flat());\n}\n\nasync function getDocumentsForSource(src: SourceFiles): Promise<Document[]> {\n const { transform } = src;\n const include = await globAll(src.include);\n const exclude = await globAll(src.exclude);\n const files = Array.from(difference(include, exclude));\n const promises = files.map(async (it) => {\n const docs = await src.fileReader(it, src.basePath);\n if (transform) {\n return docs.map((it) => transform(it));\n } else {\n return docs;\n }\n });\n const docs = await Promise.all(promises);\n return docs.flat();\n}\n\nasync function getAllDocuments(\n sourceFiles: SourceFiles[],\n): Promise<Document[]> {\n const result = await Promise.all(sourceFiles.map(getDocumentsForSource));\n return result.flat();\n}\n\n/**\n * @internal\n */\nexport function fileReaderProcessor(sourceFiles: SourceFiles[]): Processor {\n return {\n stage: \"generate-docs\",\n name: \"file-reader-processor\",\n async handler(context) {\n const result = await getAllDocuments(sourceFiles);\n context.addDocument(result);\n context.log(result.length, \"documents found\");\n },\n };\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { type DocumentAttributes, type DocumentPage } from \"../document\";\nimport { normalizePath } from \"../utils\";\n\n/**\n * @internal\n */\nexport function parseFile(\n filePath: string,\n basePath: string | undefined,\n content: string,\n): DocumentPage {\n const attributes = JSON.parse(content) as DocumentAttributes;\n const { title, href } = attributes;\n\n if (!title) {\n throw new Error(`No title property set in \"${filePath}\"`);\n }\n\n const relative = basePath\n ? path.relative(basePath, normalizePath(filePath))\n : normalizePath(filePath);\n const parsed = path.parse(relative);\n const filename = parsed.name.toLowerCase();\n const name = parsed.name;\n const urlpath = parsed.dir;\n return {\n kind: \"page\",\n id: `nav:${filePath.replaceAll(\"\\\\\", \"/\")}`,\n name,\n alias: [],\n visible: attributes.href ? true : false,\n attributes: {\n title,\n href,\n sortorder: attributes.sortorder ?? Infinity,\n redirectFrom: [],\n search: { terms: [] },\n },\n body: content,\n outline: [],\n format: \"json\",\n tags: [],\n template: \"default\",\n fileInfo: {\n path: [\"\", \".\"].includes(urlpath)\n ? \".\"\n : `./${normalizePath(urlpath)}`,\n name: filename,\n fullPath: normalizePath(filePath),\n outputName: false,\n },\n };\n}\n\n/**\n * Read a JSON file with arbitrary navigation entries.\n *\n * @public\n */\n/* istanbul ignore next */\nexport async function navigationFileReader(\n filePath: string,\n basePath?: string,\n): Promise<DocumentPage[]> {\n const content = await fs.readFile(filePath, \"utf8\");\n const doc = parseFile(filePath, basePath, content);\n return [doc];\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { moduleImporter } from \"@forsakringskassan/sass-module-importer\";\nimport { NodePackageImporter, compileStringAsync } from \"sass\";\n\n/**\n * @public\n * @param dst - Destination filename.\n * @param style - Inline SCSS string.\n */\nexport async function compileSassString(\n dst: string,\n style: string,\n): Promise<void> {\n const result = await compileStringAsync(style, {\n style: \"expanded\",\n importers: [new NodePackageImporter(), moduleImporter()],\n });\n await fs.mkdir(path.dirname(dst), { recursive: true });\n await fs.writeFile(dst, result.css, \"utf8\");\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path/posix\";\nimport { compileSassString } from \"../sass\";\nimport { getFingerprint, getIntegrity } from \"../utils\";\nimport { type AssetInfo } from \"./asset-info\";\n\n/**\n * @internal\n */\nexport async function compileStyle(\n assetFolder: string,\n name: string,\n src: string | URL,\n): Promise<AssetInfo> {\n try {\n const outfile = path.join(\"temp\", `asset-${name}.css`);\n const source = await fs.readFile(src, \"utf8\");\n await compileSassString(outfile, source);\n const content = await fs.readFile(outfile, \"utf8\");\n const fingerprint = getFingerprint(content);\n const integrity = getIntegrity(content);\n const filename = `${name}-${fingerprint}.css`;\n const dst = path.join(assetFolder, filename);\n await fs.rename(outfile, dst);\n const stat = await fs.stat(dst);\n return {\n name,\n filename,\n publicPath: `./assets/${filename}`,\n integrity,\n format: \"stylesheet\",\n size: stat.size,\n type: \"css\",\n };\n } catch (err) {\n /* eslint-disable-next-line no-console -- expected to log */\n console.error(err);\n throw new Error(`Failed to compile style \"${name}\"`);\n }\n}\n","import { type Processor } from \"../processor\";\nimport { formatSize, serializeAttrs } from \"../utils\";\nimport { type CompileOptions } from \"./compile-options\";\nimport { compileStyle } from \"./compile-style\";\n\n/**\n * @internal\n */\nexport interface CSSAsset {\n name: string;\n src: string | URL;\n options: CompileOptions;\n}\n\nfunction byPriority(\n { options: a }: CSSAsset,\n { options: b }: CSSAsset,\n): number {\n return b.priority - a.priority;\n}\n\n/**\n * @internal\n */\nexport function cssAssetProcessor(\n assetFolder: string,\n assets: CSSAsset[],\n): Processor {\n return {\n name: \"css-asset-processor\",\n after: \"assets\",\n async handler(context) {\n const assetInfo = context.getTemplateData(\"assets\", {});\n const head = context.getTemplateData(\"injectHead\", []);\n const body = context.getTemplateData(\"injectBody\", []);\n for (const asset of assets.toSorted(byPriority)) {\n const info = await compileStyle(\n assetFolder,\n asset.name,\n asset.src,\n );\n const attrs = serializeAttrs(asset.options.attributes);\n const inject = { ...info, attrs: Array.from(attrs).join(\" \") };\n assetInfo[asset.name] = {\n ...info,\n importmap: false,\n };\n switch (asset.options.appendTo) {\n case \"none\":\n break;\n case \"head\":\n head.push(inject);\n break;\n case \"body\":\n body.push(inject);\n break;\n }\n context.log(info.filename, formatSize(info.size));\n }\n },\n };\n}\n","import {\n type BuildOptions,\n type BuildResult,\n build as originalBuild,\n} from \"esbuild\";\n\n/**\n * Wraps the call to esbuild so we can mock it in test-cases. We don't have a\n * proper working Jest ESM configuration yet so constructs such as\n * `jest.mock(..)` does not work.\n *\n * @internal\n */\nexport function esbuild(options: BuildOptions): Promise<BuildResult> {\n return originalBuild(options);\n}\n","import nodeFS from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { type BuildOptions } from \"esbuild\";\nimport { tsconfigPath as tsconfig } from \"../tsconfig-path\";\nimport { getFingerprint, getIntegrity } from \"../utils\";\nimport { type VendorDefinition } from \"../vendor\";\nimport { type AssetInfo } from \"./asset-info\";\nimport { esbuild } from \"./esbuild-wrapper\";\n\n/**\n * @internal\n */\nexport interface FSLike {\n mkdir: typeof nodeFS.mkdir;\n readFile: typeof nodeFS.readFile;\n rename: typeof nodeFS.rename;\n stat: typeof nodeFS.stat;\n}\n\n/**\n * @internal\n */\nexport interface CompileScriptOptions {\n assetFolder: string;\n name: string;\n src: string | URL;\n assets: string[];\n vendor: VendorDefinition[];\n buildOptions: BuildOptions;\n fs?: FSLike;\n}\n\nfunction toExternalVendor(vendor: VendorDefinition): string {\n return typeof vendor === \"string\" ? vendor : vendor.package;\n}\n\n/**\n * @internal\n */\nexport async function compileScript(\n options: CompileScriptOptions,\n): Promise<AssetInfo> {\n const {\n assetFolder,\n name,\n src,\n assets,\n vendor,\n buildOptions,\n fs = nodeFS,\n } = options;\n\n const iconLib = process.env.DOCS_ICON_LIB ?? \"@fkui/icon-lib-default\";\n\n try {\n const entryPoints = [src instanceof URL ? fileURLToPath(src) : src];\n const outfile = path.join(\"temp\", `asset-${name}.js`);\n const external = [...assets, ...vendor.map(toExternalVendor)];\n const format = buildOptions.format ?? \"esm\";\n await esbuild({\n entryPoints,\n outfile,\n bundle: true,\n format,\n platform: \"browser\",\n external,\n tsconfig,\n ...buildOptions,\n define: {\n \"process.env.DOCS_ICON_LIB\": JSON.stringify(iconLib),\n ...buildOptions.define,\n },\n });\n const content = await fs.readFile(outfile, \"utf8\");\n const fingerprint = getFingerprint(content);\n const integrity = getIntegrity(content);\n const filename = `${name}-${fingerprint}.js`;\n const dst = path.join(assetFolder, filename);\n await fs.mkdir(path.dirname(dst), { recursive: true });\n await fs.rename(outfile, dst);\n const stat = await fs.stat(dst);\n return {\n name,\n filename,\n publicPath: `./assets/${filename}`,\n integrity,\n format,\n size: stat.size,\n type: \"js\",\n };\n } catch (err) {\n const reason = err instanceof Error ? err.message : String(err);\n throw new Error(`Failed to compile script \"${name}\": ${reason}`);\n }\n}\n","import { type BuildOptions } from \"esbuild\";\nimport { type Processor } from \"../processor\";\nimport { formatSize, serializeAttrs } from \"../utils\";\nimport { type VendorDefinition } from \"../vendor\";\nimport { type CompileOptions } from \"./compile-options\";\nimport { compileScript } from \"./compile-script\";\n\n/**\n * @internal\n */\nexport interface JSAsset {\n name: string;\n src: string | URL;\n options: CompileOptions;\n buildOptions: Pick<BuildOptions, \"define\">;\n}\n\nfunction byPriority({ options: a }: JSAsset, { options: b }: JSAsset): number {\n return b.priority - a.priority;\n}\n\nfunction isExternal(asset: JSAsset): boolean {\n return asset.options.appendTo === \"none\";\n}\n\n/**\n * @internal\n */\nexport function jsAssetProcessor(\n assetFolder: string,\n assets: JSAsset[],\n vendor: VendorDefinition[],\n): Processor {\n const externalAssets = assets.filter(isExternal).map((it) => it.name);\n return {\n name: \"js-asset-processor\",\n after: \"assets\",\n async handler(context) {\n const assetInfo = context.getTemplateData(\"assets\", {});\n const head = context.getTemplateData(\"injectHead\", []);\n const body = context.getTemplateData(\"injectBody\", []);\n for (const asset of assets.toSorted(byPriority)) {\n const info = await compileScript({\n assetFolder,\n name: asset.name,\n src: asset.src,\n assets: externalAssets,\n vendor,\n buildOptions: asset.buildOptions,\n });\n const attrs = serializeAttrs(asset.options.attributes);\n const inject = { ...info, attrs: Array.from(attrs).join(\" \") };\n assetInfo[asset.name] = {\n ...info,\n importmap: externalAssets.includes(asset.name),\n };\n switch (asset.options.appendTo) {\n case \"none\":\n break;\n case \"head\":\n head.push(inject);\n break;\n case \"body\":\n body.push(inject);\n break;\n }\n context.log(info.filename, formatSize(info.size));\n }\n },\n };\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path/posix\";\nimport { type Processor } from \"../processor\";\nimport { type ResourceTask } from \"./resource-task\";\n\n/**\n * @internal\n */\nexport function staticResourcesProcessor(\n assetFolder: string,\n resources: ResourceTask[],\n): Processor {\n return {\n name: \"static-resources-processor\",\n after: \"render\",\n async handler(context) {\n for (const resource of [...resources, ...context.resources]) {\n const src = resource.from;\n const dst = path.join(assetFolder, resource.to);\n await fs.cp(src, dst, {\n recursive: true,\n });\n context.log(src, \"->\", dst);\n }\n },\n };\n}\n","import { type Processor, type ProcessorRuntime } from \"./processor\";\n\n/**\n * Derive default runtime script name from processor.\n *\n * @internal\n */\nexport function processorRuntimeName(\n processor: Processor,\n runtime: ProcessorRuntime,\n): string {\n const { name } = processor;\n const base = name.replace(/-processor/, \"\");\n return `processors/${runtime.name ?? base}`;\n}\n","import { existsSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { type Generator } from \"./generator\";\nimport { type Processor } from \"./processor\";\nimport { processorRuntimeName } from \"./processor-runtime-name\";\n\n/**\n * Queues all runtime scripts from enabled processors to be compiled.\n *\n * @internal\n */\nexport function compileProcessorRuntime(\n generator: Pick<Generator, \"compileScript\">,\n distDir: string,\n processors: Processor[],\n): void {\n for (const processor of processors) {\n if (processor.enabled === false) {\n continue;\n }\n const { runtime } = processor;\n for (const entry of runtime ?? []) {\n const assetName = [\n \"processors\",\n processor.name.replace(/-processor/, \"\"),\n entry.name ?? path.parse(entry.src).name,\n ].join(\"/\");\n const name = processorRuntimeName(processor, entry);\n const bundled = new URL(`${name}.mjs`, distDir);\n const scriptPath = existsSync(bundled) ? bundled : entry.src;\n generator.compileScript(\n assetName,\n scriptPath,\n {\n appendTo: \"body\",\n priority: 50,\n },\n {\n ...entry.buildOptions,\n },\n );\n }\n }\n}\n","import { isDocumentPage } from \"../document\";\nimport { type Processor } from \"../processor\";\nimport { generateNavtree } from \"./generate-navtree\";\n\nexport function navigationProcessor(): Processor {\n return {\n stage: \"generate-nav\",\n name: \"navigation-processor\",\n handler(context) {\n const pages = context.docs.filter(isDocumentPage);\n const navtree = generateNavtree(pages);\n context.setTopNavigation(navtree);\n context.setSideNavigation(navtree);\n },\n };\n}\n","import {\n type NavigationSection,\n isNavigationSection,\n} from \"./generate-navtree\";\n\n/**\n * @internal\n */\nexport function sortNavigationTree(tree: NavigationSection): void {\n tree.children.sort((a, b) => {\n if (a.sortorder < b.sortorder) {\n return -1;\n } else if (a.sortorder > b.sortorder) {\n return 1;\n }\n\n const titleA = a.title.toUpperCase();\n const titleB = b.title.toUpperCase();\n if (titleA < titleB) {\n return -1;\n }\n if (titleA > titleB) {\n return 1;\n }\n return 0;\n });\n for (const child of tree.children) {\n if (isNavigationSection(child)) {\n sortNavigationTree(child);\n }\n }\n}\n","import { fileURLToPath } from \"node:url\";\n\nconst templateUrl = new URL(\"../templates\", import.meta.url);\nexport const templateDirectory = fileURLToPath(templateUrl);\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { type DocumentPage, type FileInfo } from \"../document\";\nimport { templateDirectory } from \"./template-directory\";\n\nclass MissingTemplateError extends Error {\n private searchDir: string[];\n\n public constructor(\n fileInfo: FileInfo,\n template: string,\n format: string,\n searchDir: string[],\n ) {\n const message = `Failed to find template \"${template}\" (${format} format) when rendering \"${fileInfo.fullPath}\"`;\n super(message);\n this.name = \"MissingTemplateError\";\n this.searchDir = searchDir;\n }\n\n public prettyError(): string {\n return [\n this.message,\n \"\",\n \"Searched the following directories:\",\n ...this.searchDir.map((it) => ` - ${it}`),\n ].join(\"\\n\");\n }\n}\n\nconst cache = new Map<string, string>();\n\nfunction cacheKey(layout: string, extension: \"html\" | \"json\"): string {\n return [layout, extension].join(\"|\");\n}\n\n/**\n * @internal\n * @param from - Which document requested this template (for logging/debugging).\n */\nexport function findTemplate(\n folders: string[],\n from: FileInfo,\n doc: DocumentPage,\n): string;\nexport function findTemplate(\n folders: string[],\n from: FileInfo,\n layout: string,\n format?: \"html\" | \"json\",\n): string;\nexport function findTemplate(\n folders: string[],\n from: FileInfo,\n src: DocumentPage | string,\n format?: \"html\" | \"json\",\n): string {\n let layout: string;\n\n if (typeof src === \"string\") {\n layout = src;\n format ??= \"html\";\n } else {\n layout = src.template;\n format = src.format !== \"json\" ? \"html\" : \"json\";\n }\n\n const key = cacheKey(layout, format);\n const cached = cache.get(key);\n if (cached) {\n return cached;\n }\n\n folders = [...folders, templateDirectory];\n const template = `${layout}.template.${format}`;\n const searchPaths = folders.map((it) => {\n return path.join(it, template);\n });\n const found = searchPaths.find((it) => fs.existsSync(it));\n if (!found) {\n throw new MissingTemplateError(from, template, format, folders);\n }\n\n cache.set(key, template);\n return template;\n}\n","import { existsSync } from \"node:fs\";\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { type Callback, type ILoaderAsync, type LoaderSource } from \"nunjucks\";\nimport { templateDirectory } from \"./template-directory\";\n\ninterface ResolvedTemplate {\n filePath: string;\n content: string;\n}\n\n/**\n * @internal\n */\nexport class TemplateLoader implements ILoaderAsync {\n public readonly async = true as const;\n private readonly folders: string[];\n private readonly templateCache: Map<string, ResolvedTemplate>;\n\n public constructor(folders: string[] = []) {\n this.folders = [...folders, templateDirectory];\n this.templateCache = new Map();\n }\n\n /* eslint-disable-next-line @typescript-eslint/no-misused-promises -- technical debt */\n public async getSource(\n name: string,\n callback: Callback<Error, LoaderSource>,\n ): Promise<void> {\n try {\n const { content, filePath } = await this.resolveTemplate(name);\n callback(null, {\n src: content,\n path: filePath,\n noCache: false,\n });\n } catch (err: unknown) {\n if (err instanceof Error) {\n callback(err, null);\n } else {\n callback(new Error(String(err)), null);\n }\n }\n }\n\n public hasTemplate(name: string): boolean {\n const { templateCache } = this;\n const cached = templateCache.get(name);\n if (cached) {\n return true;\n }\n const filePath = this.findTemplateFile(name);\n return Boolean(filePath);\n }\n\n private async resolveTemplate(name: string): Promise<ResolvedTemplate> {\n const { templateCache, folders } = this;\n const cached = templateCache.get(name);\n if (cached) {\n return cached;\n }\n const filePath = this.findTemplateFile(name);\n if (!filePath) {\n const searched = folders.map((it) => ` - \"${it}\"`).join(\"\\n\");\n const message = `Failed to resolve template \"${name}\", searched in:\n\n${searched}\n\nMake sure the name is correct and the template file exists in one of the listed directories.`;\n throw new Error(message);\n }\n const content = await fs.readFile(filePath, \"utf8\");\n const resolved = { content, filePath };\n templateCache.set(name, resolved);\n return resolved;\n }\n\n private findTemplateFile(name: string): string | undefined {\n const { folders } = this;\n const searchPaths = folders.map((it) => path.join(it, name));\n return searchPaths.find((it) => existsSync(it));\n }\n}\n","const messageRegex = /^\\([^)]+\\) \\[Line \\d+, Column \\d+]\\n\\s+Error: (.*)$/;\n\n/**\n * Extracts the actual error message from a nunjucks render error.\n *\n * The error instance should have properties such as `.cause` but these are lost\n * somewhere so this serves as a workaround.\n *\n * @internal\n */\nexport function getActualMessage(message: string): string {\n const match = messageRegex.exec(message);\n if (match) {\n return match[1].trim();\n } else {\n return message;\n }\n}\n\n/**\n * @internal\n */\nexport class TemplateRenderError extends Error {\n private readonly filename: string;\n\n public constructor(message: string, filename: string) {\n super(getActualMessage(message));\n this.name = \"TemplateRenderError\";\n this.filename = filename;\n }\n\n public prettyError(): string {\n return [\n \"\",\n `An error occured when rendering a document.`,\n ` Document: \"${this.filename}\".`,\n ` Message: ${this.message}`,\n \"\",\n \"---\",\n \"\",\n this.stack,\n ].join(\"\\n\");\n }\n}\n","import { copyFileSync, existsSync, readFileSync } from \"node:fs\";\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport pathPosix from \"node:path/posix\";\nimport { promisify } from \"node:util\";\nimport { Worker } from \"node:worker_threads\";\nimport nunjucks from \"nunjucks\";\nimport { type AssetInfo } from \"../assets\";\nimport { type Document, type DocumentPage, type FileInfo } from \"../document\";\nimport {\n type CompileMessage,\n type CompileResponse,\n type ExampleCompileTask,\n type ExampleStandaloneTask,\n generateExample,\n workerUrl as exampleWorkerUrl,\n} from \"../examples\";\nimport {\n type NavigationLeaf,\n type NavigationNode,\n type NavigationSection,\n isNavigationSection,\n sortNavigationTree,\n} from \"../navigation\";\nimport { getFingerprint, getOutputFilePath } from \"../utils\";\nimport { type VendorAsset } from \"../vendor\";\nimport { createMarkdownRenderer } from \"./create-markdown-renderer\";\nimport * as filter from \"./filter\";\nimport { findTemplate } from \"./find-template\";\nimport { type RenderOptions } from \"./render-options\";\nimport { TemplateLoader } from \"./template-loader\";\nimport { TemplateRenderError } from \"./template-render-error\";\n\ninterface ActiveNavigationLeaf extends NavigationLeaf {\n active: boolean;\n}\n\ninterface ActiveNavigationSection extends NavigationSection {\n active: boolean;\n}\n\ntype ActiveNavigationNode = ActiveNavigationLeaf | ActiveNavigationSection;\n\nconst exampleWorker = new Worker(exampleWorkerUrl);\nexampleWorker.unref();\n\nlet taskRef = 1;\nlet loader: TemplateLoader | null = null;\n\nfunction haveOutputFile(\n fileInfo: FileInfo,\n): fileInfo is FileInfo & { outputName: string } {\n return fileInfo.outputName !== false;\n}\n\nfunction fillActiveNavigation(\n doc: Document,\n node: NavigationSection,\n): ActiveNavigationSection;\nfunction fillActiveNavigation(\n doc: Document,\n node: NavigationLeaf,\n): ActiveNavigationLeaf;\nfunction fillActiveNavigation(\n doc: Document,\n node: NavigationNode,\n): ActiveNavigationNode;\nfunction fillActiveNavigation(\n doc: Document,\n node: NavigationNode,\n): ActiveNavigationNode {\n if (isNavigationSection(node)) {\n const children = node.children.map((it) =>\n fillActiveNavigation(doc, it),\n );\n const active = children.some((it) => it.active);\n return {\n ...node,\n active,\n children,\n };\n } else {\n const active = doc.id === node.id;\n return {\n ...node,\n active,\n };\n }\n}\n\nfunction findSidenav(\n doc: DocumentPage,\n tree: NavigationSection,\n): ActiveNavigationNode | undefined {\n const { path, name } = doc.fileInfo;\n const category = path === \".\" ? name : path.split(\"/\")[1];\n const sidenav = tree.children\n .filter(isNavigationSection)\n .find((it) => it.key === `./${category}`);\n if (sidenav) {\n return fillActiveNavigation(doc, sidenav);\n }\n}\n\nfunction cache(\n cacheFolder: string,\n outputFolder: string,\n): (it: { outputFile: string }) => boolean {\n return (it: { outputFile: string }) => {\n const cacheFile = path.join(cacheFolder, it.outputFile);\n const outputFile = path.join(outputFolder, it.outputFile);\n /* @todo technical debt: shame on me, doing side-effects in a filter function :( and not even async */\n if (existsSync(cacheFile)) {\n copyFileSync(cacheFile, outputFile);\n return false;\n } else {\n return true;\n }\n };\n}\n\nasync function compileExamples(options: {\n fileInfo: FileInfo;\n cacheFolder: string;\n outputFolder: string;\n tasks: ExampleCompileTask[];\n assets: AssetInfo[];\n vendors: VendorAsset[];\n}): Promise<void> {\n const { fileInfo, tasks, assets, vendors } = options;\n if (tasks.length === 0) {\n return;\n }\n\n const external = [\n ...assets.map((it) => it.name),\n ...vendors.map((it) => it.package),\n ];\n const cacheFolder = path.posix.join(options.cacheFolder, fileInfo.path);\n const outputFolder = path.posix.join(options.outputFolder, fileInfo.path);\n const cacheMiss = cache(cacheFolder, outputFolder);\n const dirtyTasks = tasks.filter(cacheMiss);\n\n /* skip forking if there are no tasks to be run anyway */\n if (dirtyTasks.length === 0) {\n return;\n }\n\n const ref = taskRef++;\n const message: CompileMessage = {\n message: \"compile\",\n ref,\n outputFolder,\n external,\n tasks: dirtyTasks,\n };\n\n return new Promise((resolve, reject) => {\n function onmessage(message: CompileResponse<number>): void {\n if (message.ref === ref) {\n exampleWorker.off(\"message\", onmessage);\n exampleWorker.off(\"error\", onerror);\n resolve();\n }\n }\n\n function onerror(err: Error): void {\n reject(err);\n }\n\n exampleWorker.on(\"message\", onmessage);\n exampleWorker.on(\"error\", onerror);\n exampleWorker.postMessage(message);\n });\n}\n\nasync function compileStandalones(options: {\n fileInfo: FileInfo;\n cacheFolder: string;\n outputFolder: string;\n templateFolders: string[];\n tasks: ExampleStandaloneTask[];\n renderTemplate(this: void, name: string, context: object): Promise<string>;\n templateData: Record<string, unknown>;\n}): Promise<void> {\n const { fileInfo, tasks, renderTemplate, templateData, templateFolders } =\n options;\n if (tasks.length === 0) {\n return;\n }\n\n const cacheFolder = path.posix.join(options.cacheFolder, fileInfo.path);\n const outputFolder = path.posix.join(options.outputFolder, fileInfo.path);\n const cacheMiss = cache(cacheFolder, outputFolder);\n const dirtyTasks = tasks.filter(cacheMiss);\n\n const standaloneTemplate = findTemplate(\n templateFolders,\n fileInfo,\n \"example\",\n );\n for (const task of dirtyTasks) {\n const outputFile = path.join(outputFolder, task.outputFile);\n const content = await renderTemplate(standaloneTemplate, {\n ...templateData,\n content: task.content,\n });\n await fs.writeFile(outputFile, content, \"utf8\");\n }\n}\n\n/**\n * @internal\n */\nexport function createTemplateLoader(folders: string[]): TemplateLoader {\n loader = new TemplateLoader(folders);\n return loader;\n}\n\nfunction stripPrettierComments(content: string): string {\n /* eslint-disable-next-line sonarjs/slow-regex -- technical debt */\n return content.replaceAll(/\\s*<!-- prettier-ignore -->\\s*/gm, \"\");\n}\n\n/**\n * @internal\n */\nexport async function render(\n doc: DocumentPage,\n docs: Document[],\n nav: { topnav: NavigationSection; sidenav: NavigationSection },\n vendors: VendorAsset[],\n options: RenderOptions,\n): Promise<string | null> {\n const { fileInfo } = doc;\n const { i18n, outputFolder, cacheFolder, templateFolders, fileMatcher } =\n options;\n\n /* skip rendering files which have no output */\n if (!haveOutputFile(fileInfo)) {\n return null;\n }\n\n /* ensure output directory exists */\n const dst = getOutputFilePath(outputFolder, fileInfo);\n const mkdir = fs.mkdir(path.dirname(dst), { recursive: true });\n\n const topnav = nav.topnav;\n const sidenav = findSidenav(doc, nav.sidenav);\n if (sidenav && isNavigationSection(sidenav)) {\n sortNavigationTree(sidenav);\n }\n\n const njk = new nunjucks.Environment(loader, { autoescape: false });\n const asyncRender = promisify<string, object, string>(njk.render); // eslint-disable-line @typescript-eslint/unbound-method -- technical debt */\n const renderTemplate = asyncRender.bind(njk);\n const template = findTemplate(templateFolders, doc.fileInfo, doc);\n const templateData = {\n ...options.templateData,\n $t: i18n.t,\n site: options.site,\n doc,\n get layoutClass() {\n return `layout--${doc.template.replaceAll(\".\", \"--\")}`;\n },\n topnav,\n rootUrl(doc: DocumentPage) {\n const { fileInfo } = doc;\n const relative = pathPosix.relative(fileInfo.path, \".\");\n return relative !== \"\" ? relative : \".\";\n },\n sidenav,\n vendors,\n importmap(doc: DocumentPage): string {\n const assets = Object.values(templateData.assets).filter(\n (it) => it.importmap,\n );\n const imports = Object.fromEntries([\n ...vendors.map((it): [PropertyKey, string] => {\n return [it.package, filter.relative(it.publicPath, doc)];\n }),\n ...assets.map((it): [PropertyKey, string] => {\n return [it.name, filter.relative(it.publicPath, doc)];\n }),\n ]);\n const integrity = Object.fromEntries([\n ...vendors.map((it): [PropertyKey, string] => {\n return [filter.relative(it.publicPath, doc), it.integrity];\n }),\n ...assets.map((it): [PropertyKey, string] => {\n return [filter.relative(it.publicPath, doc), it.integrity];\n }),\n ]);\n const importmap = { imports, integrity };\n return JSON.stringify(importmap, null, 2);\n },\n };\n\n const generatedExamples: ExampleCompileTask[] = [];\n const generatedStandalone: ExampleStandaloneTask[] = [];\n\n const markdownRenderer = createMarkdownRenderer({\n docs,\n generateExample({ source, language, filename, tags }) {\n const example = generateExample({\n source,\n language,\n filename,\n parent: fileInfo.fullPath,\n setupPath: options.setupPath,\n exampleFolders: options.exampleFolders,\n tags,\n fileMatcher,\n });\n\n if (example.output) {\n const { dir, name } = path.parse(example.output);\n if (example.task) {\n generatedExamples.push(example.task);\n }\n generatedStandalone.push({\n outputFile: path.join(dir, `${name}.html`),\n content: example.markup,\n });\n }\n\n return example;\n },\n getImportedSource(filename) {\n const context = `when importing example from \"${fileInfo.fullPath}\"`;\n const match = fileMatcher(filename, context);\n return readFileSync(match, \"utf8\");\n },\n addResource(dst, src) {\n if (!existsSync(src)) {\n throw new Error(`Failed to find image \"${src}\"`);\n }\n options.addResource(dst, src);\n },\n handleSoftError(error) {\n /* rethrow error so we get hard fails on everything */\n throw error;\n },\n messagebox: options.markdown.messagebox,\n });\n\n njk.addFilter(\"marked\", (content: string) => {\n return markdownRenderer.render(doc, content);\n });\n njk.addFilter(\"json\", filter.json);\n njk.addFilter(\"dump\", filter.dump);\n njk.addFilter(\"relative\", filter.relative);\n njk.addFilter(\"take\", filter.take);\n njk.addExtension(\"BlockContainer\", {\n tags: [\"container\"],\n parse(parser, nodes) {\n /* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call -- upstream api is untyped */\n const tok = parser.nextToken();\n const args = parser.parseSignature(null, true);\n parser.advanceAfterBlockEnd(tok.value);\n return new nodes.CallExtensionAsync(this, \"run\", args, []);\n /* eslint-enable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call */\n },\n async run(\n { ctx }: { ctx: Record<string, unknown> },\n container: string,\n callback: (\n err: Error | null,\n data: nunjucks.runtime.SafeString,\n ) => void,\n ) {\n const blocks = options.templateBlocks.get(container) ?? [];\n const promises = blocks.map(({ renderer }) => {\n if (\"filename\" in renderer) {\n const data = renderer.data as object;\n return renderTemplate(renderer.filename, {\n ...ctx,\n ...data,\n });\n }\n if (\"render\" in renderer) {\n return Promise.resolve(renderer.render());\n }\n return Promise.resolve(\"\");\n });\n const content = await Promise.all(promises);\n const markup = content.join(\"\");\n callback(null, new nunjucks.runtime.SafeString(markup));\n },\n } as nunjucks.Extension);\n\n await mkdir;\n\n let content;\n try {\n content = stripPrettierComments(\n await renderTemplate(template, templateData),\n );\n } catch (err: unknown) {\n const filename = fileInfo.fullPath;\n if (err instanceof Error && err.name === \"Template render error\") {\n /* recreate nunjucks template errors to be a bit more useful and readable */\n throw new TemplateRenderError(err.message, filename);\n }\n const prefix = `Failed to render \"${filename}\"`;\n const message = err instanceof Error ? err.message : String(err);\n throw new Error(`${prefix}: ${message}`, { cause: err });\n }\n\n /* eslint-disable-next-line sonarjs/slow-regex -- technical debt */\n const expandedDst = dst.replaceAll(/\\[([^]+)]/g, (match, key) => {\n if (key === \"hash\") {\n return getFingerprint(doc.body);\n } else {\n return match;\n }\n });\n const writeFile = fs.writeFile(expandedDst, content, \"utf8\");\n\n try {\n const assets = Object.values(templateData.assets).filter(\n (it) => it.importmap,\n );\n await compileExamples({\n fileInfo,\n cacheFolder,\n outputFolder,\n tasks: generatedExamples,\n assets,\n vendors,\n });\n } catch (err: unknown) {\n const prefix = `Failed to compile examples from \"${fileInfo.fullPath}\"`;\n const message = err instanceof Error ? err.message : String(err);\n throw new Error(`${prefix}: ${message}`, { cause: err });\n }\n\n try {\n await compileStandalones({\n fileInfo,\n cacheFolder,\n outputFolder,\n templateFolders,\n tasks: generatedStandalone,\n renderTemplate,\n templateData,\n });\n } catch (err: unknown) {\n const prefix = `Failed to render standalone examples from \"${fileInfo.fullPath}\"`;\n const message = err instanceof Error ? err.message : String(err);\n throw new Error(`${prefix}: ${message}`, { cause: err });\n }\n\n await writeFile;\n return dst;\n}\n","import cliProgress from \"cli-progress\";\nimport { type DocumentPage, isDocumentPage } from \"../document\";\nimport { type Processor } from \"../processor\";\nimport { render } from \"./render\";\nimport { type RenderOptions } from \"./render-options\";\n\nconst progressbar = new cliProgress.SingleBar({\n format: \" {bar} {percentage}% | {value}/{total} documents | {filename}\",\n barCompleteChar: \"\\u2588\",\n barIncompleteChar: \"\\u2591\",\n hideCursor: true,\n clearOnComplete: true,\n});\n\nexport function nunjucksProcessor(\n options: Omit<\n RenderOptions,\n \"templateBlocks\" | \"templateData\" | \"addResource\"\n >,\n): Processor {\n return {\n stage: \"render\",\n name: \"nunjucks-renderer\",\n async handler(context) {\n function renderDocument(doc: DocumentPage): Promise<string | null> {\n const nav = {\n topnav: context.topnav,\n sidenav: context.sidenav,\n };\n return render(doc, context.docs, nav, context.vendors, {\n ...options,\n templateBlocks: context.getAllTemplateBlocks(),\n templateData: context.getAllTemplateData(),\n addResource(dst, src) {\n context.addResource(dst, src);\n },\n });\n }\n\n const formats = new Set([\"markdown\", \"json\"]);\n const docs = context.docs.filter(isDocumentPage).filter((it) => {\n /* the nunjucks process primarly renders markdown documents but\n * for legacy reasons it also renders raw json files */\n if (!formats.has(it.format)) {\n return false;\n }\n return it.fileInfo.outputName;\n });\n\n progressbar.start(docs.length, 0, {\n filename: docs.length > 0 ? docs[0].fileInfo.fullPath : \"\",\n });\n\n const generatedFiles: string[] = [];\n try {\n for (const doc of docs) {\n const filePath = await renderDocument(doc);\n if (filePath) {\n generatedFiles.push(filePath);\n }\n progressbar.increment(1, {\n filename: doc.fileInfo.fullPath,\n });\n }\n } finally {\n progressbar.stop();\n }\n\n context.log(docs.length, \"documents rendered\");\n return generatedFiles;\n },\n };\n}\n","import { type Processor, type ProcessorOptions } from \"../processor\";\n\n/**\n * @public\n */\nexport function livereloadProcessor(options: ProcessorOptions): Processor {\n const { enabled } = options;\n return {\n after: \"generate-docs\",\n name: \"livereload-processor\",\n enabled,\n handler(context) {\n context.addTemplateBlock(\"body:end\", \"livereload\", {\n filename: \"partials/livereload.html\",\n });\n },\n };\n}\n","/**\n * Wait for a keypress and return the pressed key.\n *\n * @internal\n */\nexport async function keypress(): Promise<string> {\n process.stdin.setRawMode(true);\n process.stdin.resume();\n return new Promise((resolve) => {\n process.stdin.once(\"data\", (data) => {\n process.stdin.setRawMode(false);\n process.stdin.resume();\n resolve(data.toString(\"utf8\"));\n });\n });\n}\n","import { type AddressInfo } from \"node:net\";\n\n/**\n * @internal\n */\nexport function printMenu(addr: AddressInfo): void {\n /* eslint-disable no-console -- expected to log */\n console.log();\n console.group(\n `Starting development server at http://localhost:${String(addr.port)}`,\n );\n console.log();\n console.log(\"[q] quit\");\n console.log();\n console.groupEnd();\n /* eslint-enable no-console */\n}\n","import { type AddressInfo } from \"node:net\";\nimport path from \"node:path/posix\";\nimport { watch } from \"chokidar\";\nimport tinylr from \"tiny-lr\";\nimport { keypress } from \"./keypress\";\nimport { printMenu } from \"./print-menu\";\n\n/**\n * @internal\n */\nexport interface ServeOptions {\n outputFolder: string;\n watch: string[];\n\n /**\n * Callback to rebuild all assets depending on given filePaths.\n *\n * @returns A promise resolving to a list of all output files affected.\n */\n rebuild(this: void, filePath: string[]): Promise<string[]>;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction createRebuilder(\n callback: (filePath: string[]) => Promise<string[]>,\n livereload: (filePath: string[]) => void,\n): (filePath: string) => void {\n let inflight = false;\n let queue: string[] = [];\n\n async function rebuild(filePath: string): Promise<void> {\n queue.push(filePath);\n\n /* if there is already a request being handled we exit out right await\n * (with the flag set) */\n if (inflight) {\n return;\n }\n\n /* mark that this request is doing a rebuild so no futher requests will\n * try to rebuild until this one is finised */\n inflight = true;\n\n try {\n /* as long as the flag is raised we keep rebuilding, i.e. during the\n * last build another file changed and thus another rebuild is\n * needed */\n while (queue.length > 0) {\n const modifiedFiles = queue;\n queue = [];\n const generatedFiles = await callback(modifiedFiles);\n livereload(generatedFiles);\n\n /* delay further execution for a while so the live reload can finish before the new files are rebuilt */\n await sleep(200);\n }\n } finally {\n /* clear the flag so the next request can run a rebuild normally */\n inflight = false;\n }\n }\n\n /* eslint-disable-next-line @typescript-eslint/no-misused-promises -- technical debt */\n return rebuild;\n}\n\nfunction isImportError(err: unknown): err is Error & { code: string } {\n return Boolean(err && typeof err === \"object\" && \"code\" in err);\n}\n\n/* eslint-disable-next-line @typescript-eslint/consistent-type-imports -- technical debt */\nasync function importExpress(): Promise<typeof import(\"express\")> {\n try {\n const { default: express } = await import(\"express\");\n return express;\n } catch (err: unknown) {\n if (isImportError(err) && err.code === \"ERR_MODULE_NOT_FOUND\") {\n throw new Error(\n \"docs-generator serve() requires the optional peerDependency express to be installed\",\n { cause: err },\n );\n } else {\n throw err;\n }\n }\n}\n\n/**\n * @internal\n */\nexport async function serve(options: ServeOptions): Promise<void> {\n const express = await importExpress();\n const app = express();\n app.use(express.static(options.outputFolder));\n const server = app.listen(8080);\n printMenu(server.address() as AddressInfo);\n\n const livereload = tinylr();\n livereload.listen(35729);\n\n const watcher = watch(options.watch);\n const rebuild = createRebuilder(options.rebuild, (filePath: string[]) => {\n const files = filePath.map((it) => {\n return path.relative(options.outputFolder, it);\n });\n livereload.changed({ body: { files } });\n });\n\n watcher.on(\"change\", (filePath: string) => {\n rebuild(filePath);\n });\n\n for (;;) {\n const key = await keypress();\n switch (key) {\n case \"\\u0003\": /* ctrl-c */\n case \"q\":\n /* eslint-disable-next-line no-console -- expected to log */\n console.log(\"Shutting down gracefully\");\n server.close();\n /* eslint-disable-next-line @typescript-eslint/no-floating-promises -- technical debt */\n watcher.close();\n livereload.close();\n process.stdin.unref();\n return;\n }\n }\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport esbuild, { type BuildOptions } from \"esbuild\";\nimport { tsconfigPath as tsconfig } from \"../tsconfig-path\";\nimport { getFingerprint, getIntegrity, slugify } from \"../utils\";\nimport { type VendorAsset } from \"./vendor-asset\";\nimport { type NormalizedVendorDefinition } from \"./vendor-definition\";\n\nexport function getAssetSource(asset: NormalizedVendorDefinition): string {\n const lines = [];\n const pkg = asset.package.replaceAll(\"\\\\\", \"/\");\n\n lines.push(`export * from \"${pkg}\";`);\n\n return lines.join(\"\\n\");\n}\n\n/**\n * @internal\n */\nexport async function compileVendor(\n assetFolder: string,\n vendor: NormalizedVendorDefinition,\n options?: BuildOptions,\n): Promise<VendorAsset> {\n const name = path.isAbsolute(vendor.package)\n ? path.basename(vendor.package)\n : vendor.package;\n const slug = slugify(name);\n const outfile = `temp/vendor-${slug}.out.js`;\n const tmpfile = `temp/vendor-${slug}.in.js`;\n const source = getAssetSource(vendor);\n await fs.writeFile(tmpfile, source, \"utf8\");\n await esbuild.build({\n entryPoints: [tmpfile],\n outfile,\n bundle: true,\n format: \"esm\",\n platform: \"browser\",\n tsconfig,\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(\"development\"),\n __VUE_OPTIONS_API__: \"true\",\n __VUE_PROD_DEVTOOLS__: \"true\",\n __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: \"false\",\n },\n alias: vendor.alias ? { [vendor.package]: vendor.alias } : undefined,\n ...options,\n });\n const content = await fs.readFile(outfile, \"utf8\");\n const fingerprint = getFingerprint(content);\n const integrity = getIntegrity(content);\n const filename = `vendor-${slug}-${fingerprint}.js`;\n const dst = path.join(assetFolder, filename).replaceAll(\"\\\\\", \"/\");\n await fs.rename(outfile, dst);\n const stat = await fs.stat(dst);\n return {\n package: vendor.package,\n filename,\n publicPath: `./assets/${filename}`,\n integrity,\n size: stat.size,\n };\n}\n","import {\n type NormalizedVendorDefinition,\n type VendorDefinition,\n} from \"./vendor-definition\";\n\n/**\n * @internal\n */\nexport function normalizeVendorDefinition(\n vendor: VendorDefinition,\n): NormalizedVendorDefinition {\n if (typeof vendor === \"string\") {\n return {\n package: vendor,\n alias: undefined,\n };\n } else {\n return {\n package: vendor.package,\n alias: vendor.alias ?? undefined,\n };\n }\n}\n","import path from \"node:path/posix\";\nimport { type Processor } from \"../processor\";\nimport { formatSize } from \"../utils\";\nimport { compileVendor } from \"./compile-vendor\";\nimport { normalizeVendorDefinition } from \"./normalize-vendor-definition\";\nimport { type VendorAsset } from \"./vendor-asset\";\nimport { type VendorDefinition } from \"./vendor-definition\";\n\nfunction getPackageName(vendor: VendorDefinition): string {\n return typeof vendor === \"string\" ? vendor : vendor.package;\n}\n\nfunction generateVendorAssets(\n assetFolder: string,\n assets: VendorDefinition[],\n): Promise<VendorAsset[]> {\n const packages = assets.map(getPackageName);\n const normalized = assets.map(normalizeVendorDefinition);\n const promises = normalized.map((it) => {\n const external = packages.filter((pkg) => pkg !== it.package);\n return compileVendor(assetFolder, it, {\n external,\n });\n });\n return Promise.all(promises);\n}\n\nexport function vendorProcessor(\n assetFolder: string,\n vendor: VendorDefinition[],\n): Processor {\n return {\n stage: \"assets\",\n name: \"vendor-processor\",\n async handler(context) {\n const assets = await generateVendorAssets(assetFolder, vendor);\n context.addVendorAsset(assets);\n for (const asset of assets) {\n const filename = path.basename(asset.publicPath);\n context.log(filename, formatSize(asset.size));\n }\n },\n };\n}\n","import { existsSync } from \"node:fs\";\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport inter from \"@fontsource-variable/inter/metadata.json\";\nimport fse from \"fs-extra\";\nimport { createInstance as i18next } from \"i18next\";\nimport {\n type CSSAsset,\n type CompileOptions,\n type JSAsset,\n type ResourceTask,\n cssAssetProcessor,\n jsAssetProcessor,\n staticResourcesProcessor,\n} from \"./assets\";\nimport { compileProcessorRuntime } from \"./compile-processor-runtime\";\nimport { type Document, isDocumentPage } from \"./document\";\nimport { type SourceFiles, fileReaderProcessor } from \"./file-reader\";\nimport langEn from \"./i18n/en.json\";\nimport langSv from \"./i18n/sv.json\";\nimport { manifestPageFromDocument } from \"./manifest\";\nimport { type Manifest } from \"./manifest\";\nimport { type NavigationSection, navigationProcessor } from \"./navigation\";\nimport { type Processor } from \"./processor\";\nimport {\n type ProcessorContext,\n type TemplateBlockData,\n type TemplateData,\n} from \"./processor-context\";\nimport { type ProcessorStage } from \"./processor-stage\";\nimport { redirectProcessor } from \"./processors\";\nimport { type TemplateLoader, nunjucksProcessor } from \"./render\";\nimport { createTemplateLoader } from \"./render/render\";\nimport { serve } from \"./serve\";\nimport { fileMatcher, haveOutput, normalizePath } from \"./utils\";\nimport {\n type VendorAsset,\n type VendorDefinition,\n vendorProcessor,\n} from \"./vendor\";\n\n/**\n * @public\n */\nexport interface GeneratorSiteOptions {\n /** Site name */\n name: string;\n\n /** Site languange (BCP-47, e.g. `en` or `sv`), default `en` */\n lang?: string;\n}\n\n/**\n * @public\n */\nexport interface GeneratorOptions {\n /** Site options */\n site: GeneratorSiteOptions;\n\n /** If `true` the default font will be included in the generated bundle. Set\n * this to `false` if you change or otherwize manage the font assets\n * yourself. */\n bundleDefaultFont?: boolean;\n\n /** Output folder. Default: `public` */\n outputFolder?: string;\n\n /** Where cached content is stored. Default: `temp/docs` */\n cacheFolder?: string;\n\n /** List of folders to search when locating examples (searched recursively). Default: `[]` */\n exampleFolders?: string[];\n\n /** List of folders to search when locating templates. */\n templateFolders?: string[];\n\n /** List of extra processors to run */\n processors?: Processor[];\n\n /** List of vendor assets to compile */\n vendor?: VendorDefinition[];\n\n /** Path to file with exported `setup` function, responsible for mounting of component.\n * `function setup(options: { rootComponent: string, selector: string }): void`\n */\n setupPath: string;\n\n /**\n * Options for markdown renderer.\n */\n markdown?: {\n /**\n * Options for markdown messagebox container.\n */\n messagebox?: {\n /**\n * Default titles for messageboxes.\n *\n * If a title is the empty string `\"\"` the usage of title is\n * disabled by default.\n *\n * @example\n * ```json\n * {\n * \"title\": {\n * \"info\": \"Information\",\n * \"tip\": \"Tips\",\n * \"warning\": \"Varning\",\n * \"danger\": \"Se upp!\"\n * }\n * }\n * ```\n */\n title?: Record<string, string>;\n };\n };\n}\n\nfunction toArray<T>(value: T | T[]): T[] {\n return Array.isArray(value) ? value : [value];\n}\n\nfunction filterProcessors(\n stage: ProcessorStage,\n processors: Processor[],\n): Processor[] {\n const before: Processor[] = [];\n const during: Processor[] = [];\n const after: Processor[] = [];\n for (const processor of processors) {\n if (processor.enabled === false) {\n continue;\n }\n if (processor.before === stage) {\n before.push(processor);\n }\n if (processor.stage === stage) {\n during.push(processor);\n }\n if (processor.after === stage) {\n after.push(processor);\n }\n }\n return [...before, ...during, ...after];\n}\n\n/* eslint-disable no-console -- expected to log */\nasync function stage(\n stage: ProcessorStage,\n context: Omit<ProcessorContext, \"log\">,\n processors: Processor[],\n options?: { verbose: boolean },\n): Promise<string[]> {\n const { verbose = true } = options ?? {};\n if (verbose) {\n console.log(`stage:${stage}`);\n }\n let generatedFiles: string[] = [];\n const filteredProcessors = filterProcessors(stage, processors);\n for (let i = 0; i < filteredProcessors.length; i++) {\n const processor = filteredProcessors[i];\n const isLast = i === filteredProcessors.length - 1;\n if (verbose) {\n console.log(isLast ? \" └─\" : \" ├─\", processor.name);\n }\n try {\n const result = await processor.handler({\n ...context,\n log(...args: unknown[]) {\n if (verbose) {\n console.log(isLast ? \" \" : \" │ \", ...args);\n }\n },\n });\n if (result) {\n generatedFiles = [...generatedFiles, ...result];\n }\n } catch (err) {\n console.error(`When running processor \"${processor.name}\":`);\n throw err;\n }\n }\n return generatedFiles;\n}\n/* eslint-enable no-console */\n\nfunction createContext(\n outputFolder: string,\n templateLoader: TemplateLoader,\n): Omit<ProcessorContext, \"log\"> {\n let docs: Document[] = [];\n let vendors: VendorAsset[] = [];\n const resources: ResourceTask[] = [];\n const templateBlocks = new Map<string, Array<TemplateBlockData<unknown>>>();\n let topnav: NavigationSection = {\n key: \".\",\n title: \"\",\n path: \"\",\n sortorder: Infinity,\n children: [],\n visible: true,\n };\n let sidenav: NavigationSection = {\n key: \".\",\n title: \"\",\n path: \"\",\n sortorder: Infinity,\n children: [],\n visible: true,\n };\n const templateData = new Map<string, unknown>();\n return {\n get docs(): Document[] {\n return docs;\n },\n\n get vendors(): VendorAsset[] {\n return vendors;\n },\n\n get resources(): ResourceTask[] {\n return resources;\n },\n\n get topnav(): NavigationSection {\n return topnav;\n },\n\n get sidenav(): NavigationSection {\n return sidenav;\n },\n\n outputFolder,\n\n addDocument(document: Document | Document[]) {\n docs = [...docs, ...toArray(document)];\n },\n\n addVendorAsset(asset: VendorAsset | VendorAsset[]) {\n vendors = [...vendors, ...toArray(asset)];\n },\n\n addResource(dst: string, src: string): void {\n resources.push({\n from: src.replaceAll(\"\\\\\", \"/\"),\n to: dst,\n });\n },\n\n addTemplateBlock(container, id, renderer): void {\n const block: TemplateBlockData<unknown> = {\n container,\n id,\n renderer,\n };\n const list = templateBlocks.get(container) ?? [];\n templateBlocks.set(container, [...list, block]);\n },\n\n getAllTemplateBlocks(): Map<string, Array<TemplateBlockData<unknown>>> {\n return templateBlocks;\n },\n\n hasTemplate(name: string): boolean {\n return templateLoader.hasTemplate(name);\n },\n\n setTopNavigation(root: NavigationSection) {\n topnav = root;\n },\n\n setSideNavigation(root: NavigationSection) {\n sidenav = root;\n },\n\n getAllTemplateData() {\n return Object.fromEntries(templateData.entries()) as TemplateData &\n Record<string, unknown>;\n },\n\n getTemplateData(key: string, defaultValue?: unknown): unknown {\n if (templateData.has(key)) {\n return templateData.get(key);\n } else if (defaultValue) {\n templateData.set(key, defaultValue);\n return defaultValue;\n } else {\n return undefined;\n }\n },\n\n setTemplateData(key: string, value: unknown) {\n templateData.set(key, value);\n },\n };\n}\n\nfunction getWorkingDir(value: string | URL | null): string {\n if (value) {\n const url = typeof value === \"string\" ? new URL(value) : value;\n const normalized = normalizePath(fileURLToPath(url));\n return path.posix.dirname(normalized);\n } else {\n return normalizePath(process.cwd());\n }\n}\n\n/**\n * @public\n */\nexport class Generator {\n private cwd: string;\n private site: GeneratorSiteOptions;\n private bundleDefaultFont: boolean;\n private outputFolder: string;\n private cacheFolder: string;\n private assetFolder: string;\n private exampleFolders: string[];\n private templateFolders: string[];\n private processors: Processor[];\n private vendor: VendorDefinition[];\n private setupPath: string;\n private scripts: JSAsset[];\n private styles: CSSAsset[];\n private resources: ResourceTask[];\n private sourceFiles: SourceFiles[];\n private markdownOptions: GeneratorOptions[\"markdown\"];\n\n /**\n * @deprecated Pass in `import.meta.url` as first argument instead.\n */\n public constructor(options: GeneratorOptions);\n\n /**\n * Create a new Generator instance.\n */\n public constructor(importMetaUrl: string | URL, options: GeneratorOptions);\n public constructor(\n ...args:\n | [options: GeneratorOptions]\n | [importMetaUrl: string | URL, options: GeneratorOptions]\n ) {\n const cwd = getWorkingDir(args.length === 2 ? args[0] : null);\n const options = args.length === 2 ? args[1] : args[0];\n\n if (args.length === 1) {\n /* eslint-disable-next-line no-console -- expected to log */\n console.error(\n \"[docs-generator] deprecated: not passing import.meta.url as the first argument is deprecated, assuming `process.cwd()`.\",\n );\n }\n\n /* eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, sonarjs/different-types-comparison -- will not happen with typescript users but handle when vanilla js users miss this parameter */\n if (options.site === undefined) {\n throw new Error(\"site metadata not set in configuration\");\n }\n\n this.cwd = cwd;\n this.site = options.site;\n this.bundleDefaultFont = options.bundleDefaultFont ?? true;\n this.outputFolder = options.outputFolder ?? \"./public\";\n this.cacheFolder = options.cacheFolder ?? \"./temp/docs\";\n this.assetFolder = path.posix.join(this.outputFolder, \"assets\");\n this.exampleFolders = options.exampleFolders ?? [];\n this.templateFolders = options.templateFolders ?? [];\n this.processors = options.processors ?? [];\n this.vendor = options.vendor ?? [];\n this.setupPath = options.setupPath.replaceAll(\"\\\\\", \"/\");\n this.scripts = [];\n this.styles = [];\n this.resources = [];\n this.sourceFiles = [];\n this.markdownOptions = options.markdown;\n\n const bootstrapUrl = new URL(\"runtime-bootstrap.mjs\", import.meta.url);\n this.compileScript(\n \"bootstrap\",\n bootstrapUrl,\n {\n appendTo: \"head\",\n priority: 100,\n },\n {\n format: \"iife\",\n },\n );\n }\n\n public compileScript(\n name: string,\n src: string | URL,\n options?: Partial<CompileOptions>,\n buildOptions?: {\n format?: \"iife\" | \"cjs\" | \"esm\";\n define?: Record<string, string>;\n },\n ): void {\n this.scripts.push({\n name,\n src,\n options: {\n appendTo: \"none\",\n attributes: {},\n priority: 0,\n ...options,\n },\n buildOptions: {\n ...buildOptions,\n },\n });\n }\n\n public compileStyle(\n name: string,\n src: string | URL,\n options?: Partial<CompileOptions>,\n ): void {\n this.styles.push({\n name,\n src,\n options: {\n appendTo: \"none\",\n attributes: {},\n priority: 0,\n ...options,\n },\n });\n }\n\n /**\n * @param dst - Destination directory relative to asset folder.\n * @param src - File or directory to copy.\n */\n public copyResource(dst: string, src: string): void {\n this.resources.push({\n from: src.replaceAll(\"\\\\\", \"/\"),\n to: dst,\n });\n }\n\n /**\n * Generate a manifest listing all generated documents that will be present\n * in `outputFolder`.\n *\n * Note: this only collects documents from the `generate-docs` stage,\n * potential documents generated at later stages will not be present.\n *\n * @public\n */\n public async manifest(sourceFiles: SourceFiles[]): Promise<Manifest> {\n const processors: Processor[] = [\n fileReaderProcessor(sourceFiles),\n redirectProcessor(),\n ...this.processors,\n ];\n\n const templateLoader = createTemplateLoader([]);\n const context = createContext(\"\", templateLoader);\n await stage(\"generate-docs\", context, processors, { verbose: false });\n\n const docs = context.docs.filter(isDocumentPage).filter(haveOutput);\n const pages = docs.map(manifestPageFromDocument);\n return { pages };\n }\n\n public async build(sourceFiles: SourceFiles[]): Promise<string[]> {\n this.sourceFiles = sourceFiles;\n const {\n site,\n outputFolder,\n cacheFolder,\n assetFolder,\n exampleFolders,\n templateFolders,\n setupPath,\n markdownOptions,\n } = this;\n const examplePatterns = this.exampleFolders.map((it) => `${it}/**/*`);\n\n const i18n = i18next({\n lng: site.lang,\n fallbackLng: \"en\",\n resources: {\n en: langEn,\n sv: langSv,\n },\n });\n\n await i18n.init();\n\n await this._prepareFolders();\n await this._copyFonts();\n\n const processors: Processor[] = [\n fileReaderProcessor(sourceFiles),\n redirectProcessor(),\n vendorProcessor(assetFolder, this.vendor),\n cssAssetProcessor(assetFolder, this.styles),\n jsAssetProcessor(assetFolder, this.scripts, this.vendor),\n staticResourcesProcessor(assetFolder, this.resources),\n navigationProcessor(),\n nunjucksProcessor({\n site: {\n lang: \"en\",\n ...site,\n },\n outputFolder,\n cacheFolder,\n i18n,\n exampleFolders,\n templateFolders,\n setupPath,\n markdown: markdownOptions ?? {},\n fileMatcher: fileMatcher(examplePatterns),\n }),\n ...this.processors,\n ];\n\n compileProcessorRuntime(this, import.meta.url, processors);\n\n const templateLoader = createTemplateLoader(templateFolders);\n const context = createContext(outputFolder, templateLoader);\n const generatedFiles = [\n await stage(\"generate-docs\", context, processors),\n await stage(\"generate-nav\", context, processors),\n await stage(\"assets\", context, processors),\n await stage(\"render\", context, processors),\n ];\n return generatedFiles.flat();\n }\n\n /**\n * Start a development server hosting the generated documentation.\n */\n public serve(): Promise<void> {\n const { outputFolder, sourceFiles } = this;\n const watch = sourceFiles.flatMap((it) => it.include);\n return serve({\n outputFolder,\n watch,\n rebuild: (_filePath: string[]) => {\n return this.build(sourceFiles);\n },\n });\n }\n\n private async _prepareFolders(): Promise<void> {\n const { outputFolder, cacheFolder, assetFolder } = this;\n await fs.rm(cacheFolder, { force: true, recursive: true });\n if (existsSync(outputFolder)) {\n await fs.mkdir(path.dirname(cacheFolder), { recursive: true });\n\n /* `fs.rename(..)` does not work on windows when subdirectories are\n * involved, these two operations are ofcourse much slower and not\n * atomic but better than crashing */\n await fse.copy(outputFolder, cacheFolder);\n await fs.rm(outputFolder, { recursive: true });\n }\n await fs.mkdir(outputFolder, { recursive: true });\n await fs.mkdir(assetFolder, { recursive: true });\n await fs.mkdir(\"temp\", { recursive: true });\n }\n\n private async _copyFonts(): Promise<void> {\n const { assetFolder, bundleDefaultFont } = this;\n if (!bundleDefaultFont) {\n return;\n }\n const files = inter.subsets.map((subset) => {\n const filename = `inter-${subset}-wght-normal.woff2`;\n const module = `@fontsource-variable/inter/files/${filename}`;\n const src = fileURLToPath(import.meta.resolve(module));\n const dst = path.join(assetFolder, filename);\n return fs.copyFile(src, dst);\n });\n await Promise.all(files);\n }\n}\n","import { type SearchEntry } from \"./search-entry\";\nimport { type SearchIndex } from \"./search-index\";\n\n/**\n * @internal\n */\nexport function generateIndex(entries: SearchEntry[]): SearchIndex {\n const index: SearchIndex = {\n terms: [],\n results: [],\n mapping: {},\n };\n for (const entry of entries) {\n index.results.push({\n url: entry.url,\n title: entry.title,\n terms: entry.terms,\n });\n const resultIndex = index.results.length - 1;\n for (const word of entry.words) {\n index.terms.push(word);\n const termIndex = index.terms.length - 1;\n index.mapping[termIndex] = resultIndex;\n }\n }\n return index;\n}\n","import { type DocumentPage, isDocumentPage } from \"../document\";\nimport { type Processor } from \"../processor\";\nimport { getFingerprint, getIntegrity, getOutputFilePath } from \"../utils\";\nimport { generateIndex } from \"./generate-index\";\nimport { type SearchEntry } from \"./search-entry\";\n\nfunction* extractTerms(doc: DocumentPage): Generator<string> {\n const { title, component } = doc.attributes;\n if (title) {\n yield title;\n } else {\n yield doc.name;\n }\n if (component) {\n for (const name of component.map((it) => it.name)) {\n yield name;\n }\n }\n for (const term of doc.attributes.search.terms) {\n yield term;\n }\n}\n\nfunction isIndexable(doc: DocumentPage): boolean {\n const { visible, fileInfo, format } = doc;\n return Boolean(visible && fileInfo.outputName && format !== \"redirect\");\n}\n\nfunction getTerms(doc: DocumentPage): SearchEntry {\n return {\n url: getOutputFilePath(\".\", doc.fileInfo) ?? \"\",\n title: doc.attributes.title ?? doc.name,\n terms: [\n ...doc.attributes.search.terms,\n ...(doc.attributes.component?.map((it) => it.name) ?? []),\n ],\n words: Array.from(extractTerms(doc)),\n };\n}\n\n/**\n * @public\n */\nexport function searchProcessor(): Processor {\n return {\n after: \"generate-docs\",\n name: \"search-processor\",\n handler(context) {\n const entries = context.docs\n .filter(isDocumentPage)\n .filter(isIndexable)\n .map(getTerms);\n const index = generateIndex(entries);\n const body = JSON.stringify(index, null, 2);\n const fingerprint = getFingerprint(body);\n const integrity = getIntegrity(body);\n const outputName = `search-data-[hash].json`;\n const expandedName = `search-data-${fingerprint}.json`;\n context.setTemplateData(\"searchDataUrl\", expandedName);\n context.setTemplateData(\"searchDataIntegrity\", integrity);\n context.addDocument({\n kind: \"page\",\n id: \"search:data\",\n name: \"search-data\",\n alias: [],\n visible: false,\n attributes: {\n sortorder: Infinity,\n redirectFrom: [],\n search: {\n terms: [],\n },\n },\n body,\n outline: [],\n format: \"json\",\n tags: [],\n template: \"json\",\n fileInfo: {\n path: \"\",\n name: \"virtual:search-data\",\n fullPath: \"virtual:search-data\",\n outputName,\n },\n });\n context.addTemplateBlock(\"toolbar\", \"search-toolbar\", {\n filename: \"partials/search-toolbar.html\",\n });\n context.addTemplateBlock(\"body:end\", \"search-dialog\", {\n filename: \"partials/search-dialog.html\",\n });\n context.log(\"Indexed\", entries.length, \"documents\");\n },\n };\n}\n"],"names":["toArray","cacheKey","globSync","path","value","pkg","it","glob","md","markdownIt","findExamples","relative","parent","parseFile","compileScript","babelParser","EMPTY_CHAR","EM_DASH","render","renderInline","parse","docs","byPriority","originalBuild","fs","nodeFS","tsconfig","cache","exampleWorkerUrl","message","doc","fileInfo","pathPosix","filter.relative","dst","content","filter.json","filter.dump","filter.take","esbuild","stage","i18next"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/matomo/matomo-processor.ts","../src/utils/memoize.ts","../src/utils/file-matcher.ts","../src/utils/format-size.ts","../src/utils/get-document-outline.ts","../src/utils/get-integrity.ts","../src/utils/get-pull-request-id.ts","../src/utils/get-repository-url.ts","../src/utils/run-command.ts","../src/utils/git/git-commit-hash.ts","../src/utils/have-output.ts","../src/utils/interpolate.ts","../src/utils/natural-join.ts","../src/utils/serialize-attrs.ts","../src/utils/set-utils.ts","../src/utils/slugify.ts","../src/utils/is-release.ts","../src/processors/api-extractor/get-variant.ts","../src/processors/api-extractor/documentation.ts","../src/processors/api-extractor/render-interface.ts","../src/processors/api-extractor/api-extractor-processor.ts","../src/document/document-attributes.ts","../src/processors/extract-examples-processor.ts","../src/manifest/manifest-page-from-document.ts","../src/processors/manifest-processor.ts","../src/processors/motd-processor.ts","../src/render/filter/dump.ts","../src/render/filter/json.ts","../src/render/filter/relative.ts","../src/render/filter/take.ts","../src/processors/redirect/html-redirect-processor.ts","../src/processors/redirect/redirect-file-processor.ts","../src/processors/redirect/get-redirects.ts","../src/processors/redirect/redirect-processor.ts","../src/processors/selectable-version-processor.ts","../src/navigation/generate-navtree.ts","../src/processors/topnav-processor.ts","../src/processors/version-processor.ts","../src/processors/source-url-processor.ts","../src/processors/cookie-processor.ts","../src/available-processors.ts","../src/define-sources.ts","../src/file-reader/attribute-error.ts","../src/file-reader/front-matter-file-reader.ts","../src/file-reader/vue-file-reader/find-translations.ts","../src/file-reader/vue-file-reader/generate-event-table.ts","../src/file-reader/vue-file-reader/generate-model-table.ts","../src/file-reader/vue-file-reader/generate-prop-table.ts","../src/file-reader/vue-file-reader/generate-slot-table.ts","../src/file-reader/vue-file-reader/generate-translation-table.ts","../src/file-reader/vue-file-reader/translate-api.ts","../src/file-reader/vue-file-reader/vue-file-reader.ts","../src/file-reader/file-reader-processor.ts","../src/file-reader/navigation-file-reader.ts","../src/sass/compile-sass-string.ts","../src/assets/compile-style.ts","../src/assets/css-asset-processor.ts","../src/assets/esbuild-wrapper.ts","../src/assets/compile-script.ts","../src/assets/js-asset-processor.ts","../src/assets/static-resources-processor.ts","../src/processor-runtime-name.ts","../src/compile-processor-runtime.ts","../src/navigation/navigation-processor.ts","../src/navigation/sort-navigation-tree.ts","../src/render/template-directory.ts","../src/render/find-template.ts","../src/render/template-loader.ts","../src/render/template-render-error.ts","../src/render/render.ts","../src/render/nunjucks-processor.ts","../src/serve/livereload-processor.ts","../src/serve/keypress.ts","../src/serve/print-menu.ts","../src/serve/serve.ts","../src/vendor/compile-vendor.ts","../src/vendor/normalize-vendor-definition.ts","../src/vendor/vendor-processor.ts","../src/generator.ts","../src/search/generate-index.ts","../src/search/search-processor.ts"],"sourcesContent":["import { type Processor, type ProcessorOptions } from \"../processor\";\n\n/**\n * @public\n */\nexport interface MatomoOptions {\n /** Matomo Site ID */\n siteId: string;\n /** Matomo API URL */\n apiUrl?: string;\n /** Matomo Tracker URL */\n trackerUrl: string;\n /** Site hostname (analytics will be disabled if the hostname of the running\n * site does not match one of the configured hostnames) */\n hostname?: string | string[];\n}\n\nfunction toArray<T>(value: T | T[]): T[] {\n return Array.isArray(value) ? value : [value];\n}\n\n/**\n * @public\n */\nexport function matomoProcessor(\n options: MatomoOptions & ProcessorOptions,\n): Processor {\n const { enabled, siteId, apiUrl, trackerUrl, hostname } = options;\n return {\n after: \"generate-docs\",\n name: \"matomo-processor\",\n enabled,\n handler(context) {\n context.addTemplateBlock(\"head\", \"matomo\", {\n filename: \"partials/matomo.html\",\n data: {\n siteId,\n apiUrl,\n trackerUrl,\n hostname: hostname ? toArray(hostname) : [],\n },\n });\n },\n };\n}\n","function cacheKey(...args: unknown[]): string {\n return JSON.stringify(args);\n}\n\n/**\n * Creates a new lazy-evaluated and cached function.\n *\n * The result of the callback will be cached once evaluated and subsequent calls\n * will return the cached value. When passing a callback with parameters each\n * set of arguments are cached individually. The parameters must be serializable\n * to string.\n *\n * @example\n *\n * Usage functional style:\n *\n * ```ts\n * function expensiveCalculation() {\n * // ...\n * }\n *\n * const fn = memoize(expensiveCalculation);\n *\n * // compute the value\n * const result1 = fn();\n *\n * // subsequent calls will be cached\n * // i.e. result1 === result2\n * const result2 = fn();\n * ```\n *\n *\n *\n * Usage as a decorator:\n *\n * ```ts\n * class AwesomeClass {\n * @memoize\n * public expensiveCalculation() {\n * // ...\n * }\n * }\n *\n * // compute the value\n * const instance = new AwesomeClass();\n * const result1 = instance.expensiveCalculation();\n *\n * // subsequent calls will be cached\n * // i.e. result1 === result2\n * const result2 = instance.expensiveCalculation();\n * ```\n *\n * @internal\n * @param callback - The expensive callback to be memoized.\n * @returns A wrapped function.\n */\nexport function memoize<TReturn, TArgs extends unknown[]>(\n callback: (...args: TArgs) => Promise<TReturn>,\n): (...args: TArgs) => Promise<TReturn>;\nexport function memoize<TReturn, TArgs extends unknown[]>(\n callback: (...args: TArgs) => TReturn,\n): (...args: TArgs) => TReturn;\nexport function memoize(\n callback: (...args: unknown[]) => unknown | Promise<unknown>,\n): (...args: unknown[]) => unknown | Promise<unknown> {\n const cache = new Map<string, unknown | Promise<unknown>>();\n return (...args: unknown[]) => {\n const key = cacheKey(args);\n if (!cache.has(key)) {\n cache.set(key, callback(...args));\n }\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- at this point we know the key will exist */\n return cache.get(key)!;\n };\n}\n","import path from \"node:path\";\nimport { globSync } from \"glob\";\nimport { memoize } from \"./memoize\";\n\n/**\n * Create a matcher which returns the full path given a filename, partial path\n * to a filename or glob pattern.\n *\n * Throws an error if zero or more than one paths match.\n *\n * @internal\n * @param patterns - Glob patterns to match all possible files.\n */\nexport function fileMatcher(\n patterns: string[],\n): (filename: string, context?: string) => string {\n const fileList = globSync(patterns, {\n posix: true,\n ignore: \"**/node_modules/**\",\n });\n\n return memoize((filename: string, context?: string) => {\n const matches = fileList.filter((file) => {\n return path.matchesGlob(file, `**/${filename}`);\n });\n if (matches.length === 0) {\n const additionalInfo = context ? ` (${context})` : \"\";\n const message = `No files matched pattern \"${filename}\"${additionalInfo}`;\n throw new Error(message);\n } else if (matches.length > 1) {\n const additionalInfo = context ? ` (${context})` : \"\";\n const message = `Multiple files matched pattern \"${filename}\"${additionalInfo}. Searched in [${patterns.join(\", \")}]`;\n throw new Error(message);\n } else {\n return matches[0];\n }\n });\n}\n","export function formatSize(value: number): string {\n const suffices = [\"kB\", \"MB\"];\n if (value < 1000) {\n return String(value);\n }\n for (const suffix of suffices) {\n value = Math.round((value / 1000) * 100) / 100;\n if (value < 1000) {\n return `${String(value)} ${suffix}`;\n }\n }\n value = Math.round((value / 1000) * 100) / 100;\n return `${String(value)} GB`;\n}\n","import { type DocumentOutline, type DocumentOutlineEntry } from \"../document\";\nimport { generateId } from \"./generate-id\";\n\ninterface ParsedHeading {\n rank: number;\n title: string;\n anchor: string;\n}\n\n/* eslint-disable-next-line sonarjs/slow-regex -- technical debt */\nconst matchHeading = /^(#+)(.*)$/gm;\n\nfunction getHeadings(text: string): ParsedHeading[] {\n return Array.from(text.matchAll(matchHeading), parseHeading);\n}\n\nfunction cleanTitle(text: string): string {\n return text.trim().replaceAll(\"`\", \"\");\n}\n\nfunction parseHeading(match: RegExpMatchArray): ParsedHeading {\n const [, prefix, text] = match;\n const rank = prefix.length; // # -> 1, ## -> 2, etc\n const id = generateId(text);\n return {\n rank,\n title: cleanTitle(text),\n anchor: id,\n };\n}\n\n/**\n * Get document outline (headings) from text.\n *\n * @public\n */\nexport function getDocumentOutline(\n text: string,\n _format: \"markdown\",\n): DocumentOutline {\n const entries = getHeadings(text);\n\n /* Create a stack of heading levels starting at a \"virtual\" level 0, the\n * first heading is always inserted as a child to this virtal heading.*/\n const root = { title: \"\", rank: 0, anchor: \"\", subheadings: [] };\n const stack: DocumentOutlineEntry[] = [root];\n\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion --\n * \"should\" never be undefined, if it is let it crash so the underlying\n * cause can be fixed instead */\n const top = (): DocumentOutlineEntry => stack.at(-1)!;\n\n for (const entry of entries) {\n const heading: DocumentOutlineEntry = {\n title: entry.title,\n rank: entry.rank,\n anchor: entry.anchor,\n subheadings: [],\n };\n\n /* If the top entry of the stack has a higher rank we pop the stack\n * until we reach the first one with a lower rank. This includes\n * siblings with the same rank, e.g. a `##` following another `##` will\n * be inserted under the parent and not as a child of the previous\n * `##` */\n while (top().rank >= entry.rank) {\n stack.pop();\n }\n\n /* Insert this heading as a subheading of the current top of the stack\n * and push this heading as the current top so subsequent headings (with\n * higher rank) will be inserted as a child of this one */\n top().subheadings.push(heading);\n stack.push(heading);\n }\n\n /* All the subheadings of the virtual root heading will now be the document\n * outline */\n return root.subheadings;\n}\n","import crypto from \"node:crypto\";\n\nexport function getIntegrity(source: string): string {\n const hash = crypto.createHash(\"sha384\").update(source).digest(\"base64\");\n return `sha384-${hash}`;\n}\n","/**\n * @internal\n */\nexport interface BuildEnv {\n /** Jenkins */\n JOB_BASE_NAME?: string;\n\n /** Github Actions */\n GITHUB_REF?: string;\n}\n\n/**\n * @internal\n */\nexport function getPullRequestID(\n env: BuildEnv | typeof process.env,\n): string | undefined {\n /* jenkins */\n if (env.JOB_BASE_NAME) {\n const name = env.JOB_BASE_NAME;\n const match = /^PR-(\\d+)$/.exec(name);\n return match ? match[1] : undefined;\n }\n\n /* github actions */\n if (env.GITHUB_REF) {\n const name = env.GITHUB_REF;\n const match = /^refs\\/pull\\/([^/]+)\\/merge$/.exec(name);\n return match ? match[1] : undefined;\n }\n\n return undefined;\n}\n","import { type PackageJson } from \"../package-json\";\n\nconst RE_MATCH_SSH = /^(ssh:\\/\\/)?(?<user>[^@]+)@(?<host>[^:]+):(?<path>.*)$/;\n\n/**\n * Get normalized URL to the repository (https).\n *\n * @internal\n */\nexport function getRepositoryUrl(url: string): string;\nexport function getRepositoryUrl(\n pkg: Pick<PackageJson, \"repository\">,\n): string | null;\nexport function getRepositoryUrl(\n value: string | Pick<PackageJson, \"repository\">,\n): string | null {\n if (typeof value !== \"string\") {\n const url = value.repository?.url;\n if (!url) {\n return null;\n }\n value = url;\n }\n\n /* strip out \"git+\" prefix if present */\n value = value.replace(/^git\\+/, \"\");\n\n /* convert ssh://user@host:org/repo to https://host/org/repo */\n const ssh = RE_MATCH_SSH.exec(value);\n if (ssh) {\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- it will exist with this regex */\n const { host, path } = ssh.groups!;\n value = `https://${host}/${path}`;\n }\n\n /* strip out \".git\" suffix if present */\n value = value.replace(/\\.git$/, \"\");\n\n return value;\n}\n","import { exec } from \"node:child_process\";\n\n/**\n * @internal\n * @param cmd - Command to run\n */\nexport function runCommand(cmd: string): Promise<string | undefined>;\nexport function runCommand<T>(\n cmd: string,\n defaultValue: T,\n): Promise<string | T>;\nexport function runCommand<T>(\n cmd: string,\n defaultValue?: T,\n): Promise<string | undefined | T> {\n return new Promise((resolve) => {\n /* eslint-disable-next-line sonarjs/os-command -- expected to run from PATH */\n exec(cmd, { encoding: \"utf8\" }, (error, stdout) => {\n if (error) {\n /* eslint-disable-next-line no-console -- expected to log */\n console.error(error);\n resolve(defaultValue);\n } else {\n resolve(stdout.trim());\n }\n });\n });\n}\n","import { memoize } from \"../memoize\";\nimport { runCommand } from \"../run-command\";\n\n/**\n * Get Git commit hash, if present.\n *\n * @internal\n * @param format - If set to `full` it gives the full SHA512 hash, if set to `short` it gives the abbrevated hash.\n */\nexport const gitCommitHash = memoize((format: \"full\" | \"short\" = \"short\") => {\n if (format === \"full\") {\n return runCommand(`git rev-parse HEAD`);\n } else {\n return runCommand(`git rev-parse --short HEAD`);\n }\n});\n","import { type FileInfo } from \"../document\";\n\n/**\n * @internal\n */\nexport function haveOutput<T extends { fileInfo: FileInfo }>(\n doc: T,\n): doc is T & { fileInfo: { outputName: string } } {\n const { fileInfo } = doc;\n return Boolean(fileInfo.outputName);\n}\n","/**\n * @internal\n */\nexport function interpolate(\n value: string,\n data: Record<string, string>,\n): string {\n return value.replaceAll(/{{([^{}]+)}}/g, (match, raw: string) => {\n const key = raw.trim();\n const value = data[key] as string | undefined;\n return value ?? match;\n });\n}\n","/**\n * Joins a list of words into natural language.\n *\n * - `[\"foo\"]` becomes `\"foo\"`\n * - `[\"foo\", \"bar\"]` becomes `\"foo or bar\"`\n * - `[\"foo\", \"bar\", \"baz\"]` becomes `\"foo, bar or baz\"`\n * - and so on...\n *\n * @internal\n * @param values - List of words to join\n * @param conjunction - Conjunction for the last element.\n * @returns String with the words naturally joined with a conjunction.\n */\nexport function naturalJoin(\n values: string[],\n conjunction: string = \"or\",\n): string {\n switch (values.length) {\n case 0:\n return \"\";\n case 1:\n return values[0];\n case 2:\n return `${values[0]} ${conjunction} ${values[1]}`;\n default:\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- we\n * know length will be greater than two so there must be an element */\n return `${values.slice(0, -1).join(\", \")} ${conjunction} ${values.at(-1)!}`;\n }\n}\n","/** @public */\nexport type AttributeValue =\n | string\n | number\n | boolean\n | null\n | { [key: string]: AttributeValue };\n\n/** @public */\nexport type AttributeTable = Record<string, AttributeValue>;\n\nfunction quote(text: string | number): string {\n return String(text).replaceAll('\"', \""\");\n}\n\nfunction* serializeAttr(key: string, value: AttributeValue): Generator<string> {\n if (value === null || value === false) {\n return;\n }\n if (value === true) {\n yield key;\n return;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n yield `${key}=\"${quote(value)}\"`;\n return;\n }\n for (const [innerKey, innerValue] of Object.entries(value)) {\n yield* serializeAttr([key, innerKey].join(\"-\"), innerValue);\n }\n}\n\nexport function* serializeAttrs(attrs: AttributeTable): Generator<string> {\n for (const [key, value] of Object.entries(attrs)) {\n yield* serializeAttr(key, value);\n }\n}\n","export function difference<T>(a: Set<T>, b: Set<T>): Set<T> {\n const _difference = new Set(a);\n for (const elem of b) {\n _difference.delete(elem);\n }\n return _difference;\n}\n","export function slugify(value: string): string {\n return (\n value\n .toLowerCase()\n .replaceAll(\"/\", \"--\")\n .replaceAll(/[^a-z]+/g, \"-\")\n /* eslint-disable-next-line sonarjs/slow-regex -- technical debt */\n .replace(/(^-+|-+$)/, \"\")\n );\n}\n","import { execSync } from \"node:child_process\";\n\n/**\n * Checks if the latest commit is a release commit.\n * @public\n * @returns if the latest commit is a release commit.\n */\nexport function isRelease(): boolean {\n try {\n const cmd = `git log -n1 --format=format:%s`;\n /* eslint-disable-next-line sonarjs/os-command -- want to execute git from PATH */\n const message = execSync(cmd, { encoding: \"utf8\" }).trim();\n return message.startsWith(\"chore(release):\");\n } catch (err) {\n /* eslint-disable-next-line no-console -- Print error if command fails */\n console.error(err);\n return false;\n }\n}\n","const available = {\n interface: [\"default\", \"interface\", \"properties\"],\n} as const;\n\ntype MappedType = typeof available;\ntype MappedKeys = keyof MappedType;\ntype MappedTag<K extends MappedKeys> = MappedType[K][number];\n\n/**\n * Get variant from tags.\n *\n * @internal\n */\nexport function getVariant<K extends MappedKeys>(\n kind: K,\n tags: string[],\n): MappedTag<K>;\nexport function getVariant(kind: MappedKeys, tags: string[]): string {\n const variant = available[kind].find((it) => tags.includes(it));\n return variant ?? \"default\";\n}\n","import {\n type ApiDocumentedItem,\n type ApiItem,\n} from \"@microsoft/api-extractor-model\";\nimport { type DocNode, DocExcerpt } from \"@microsoft/tsdoc\";\n\nfunction isDocumentedItem(item: ApiItem): item is ApiDocumentedItem {\n return \"tsdocComment\" in item;\n}\n\n/**\n * Returns the documentation for the given API item, or `undefined` if the item\n * has no documentation.\n *\n * @internal\n */\nexport function documentation(node: ApiItem | undefined): string | undefined {\n if (node && isDocumentedItem(node)) {\n const { tsdocComment } = node;\n return renderNode(tsdocComment?.summarySection).trim();\n } else {\n return undefined;\n }\n}\n\n/**\n * Same as `documentation()`, but returns the documentation as a TSDoc comment\n * block.\n *\n * @internal\n */\nexport function documentationComment(\n node: ApiItem | undefined,\n): string | undefined {\n const doc = documentation(node);\n if (doc === undefined) {\n return undefined;\n }\n\n if (!doc) {\n return \"\";\n }\n\n const lines = doc.split(\"\\n\");\n const commentLines = lines.map((line) => (line ? ` * ${line}` : ` *`));\n\n return [\"/**\", ...commentLines, \" */\"].join(\"\\n\");\n}\n\nfunction renderNode(docNode: DocNode | undefined): string {\n let result: string = \"\";\n if (docNode) {\n if (docNode instanceof DocExcerpt) {\n result += docNode.content.toString();\n }\n for (const childNode of docNode.getChildNodes()) {\n result += renderNode(childNode);\n }\n }\n return formatMarkdownLists(result);\n}\n\nfunction formatMarkdownLists(text: string): string {\n /* API Extractor condenses lists to `\"- foo - bar - baz\"`, this restores the\n * lists to proper markdown lists again */\n return text.replaceAll(/(\\S)[^\\S\\n]+([*-])[^\\S\\n]+/g, \"$1\\n$2 \");\n}\n","import {\n type ApiInterface,\n type ApiItem,\n type ApiMethodSignature,\n type ApiPackage,\n type ApiPropertySignature,\n type Excerpt,\n ApiItemKind,\n} from \"@microsoft/api-extractor-model\";\nimport { formatCode } from \"../../utils\";\nimport { documentation, documentationComment } from \"./documentation\";\n\nfunction isApiInterface(item: ApiItem): item is ApiInterface {\n return item.kind === ApiItemKind.Interface;\n}\n\nfunction findMemberByName(\n name: string,\n pkg: ApiPackage,\n): ApiInterface | undefined {\n for (const entryPoint of pkg.entryPoints) {\n for (const member of entryPoint.findMembersByName(name)) {\n if (isApiInterface(member)) {\n return member;\n }\n }\n }\n return undefined;\n}\n\nfunction getNameFromExcerpt(excerpt: Excerpt): string {\n const [token] = excerpt.tokens.slice(\n excerpt.tokenRange.startIndex,\n excerpt.tokenRange.endIndex,\n );\n return token.text;\n}\n\nfunction getInheritance(item: ApiInterface): ApiInterface[] {\n const pkg = item.getAssociatedPackage();\n if (!pkg) {\n return [];\n }\n\n const hierarchy: ApiInterface[] = [];\n const visited = new Set<string>();\n\n function traverseParents(current: ApiInterface, pkg: ApiPackage): void {\n if (visited.has(current.name)) {\n return;\n }\n visited.add(current.name);\n for (const { excerpt } of current.extendsTypes) {\n const name = getNameFromExcerpt(excerpt);\n const parentInterface = findMemberByName(name, pkg);\n if (parentInterface) {\n traverseParents(parentInterface, pkg);\n hierarchy.push(parentInterface);\n }\n }\n }\n\n traverseParents(item, pkg);\n hierarchy.push(item);\n\n return hierarchy;\n}\n\nfunction collectMembers(\n item: ApiInterface,\n inherit: boolean,\n): Array<ApiPropertySignature | ApiMethodSignature> {\n if (!inherit) {\n return item.members.filter(isSupported);\n }\n\n const hierarchy = getInheritance(item);\n const members = new Map<\n string,\n ApiPropertySignature | ApiMethodSignature\n >();\n\n for (const iface of hierarchy) {\n for (const member of iface.members.filter(isSupported)) {\n /* intentionally load the last seen member: overloaded members should only be displayed once */\n members.set(member.name, member);\n }\n }\n\n return [...members.values()];\n}\n\nfunction isSupported(item: {\n kind: ApiItemKind;\n}): item is ApiPropertySignature | ApiMethodSignature {\n return [\n ApiItemKind.PropertySignature,\n ApiItemKind.MethodSignature,\n ].includes(item.kind);\n}\n\nfunction renderCode(\n item: ApiInterface,\n members: Array<ApiPropertySignature | ApiMethodSignature>,\n options: RenderInterfaceOptions,\n): string {\n const inherit = options.inherit ?? false;\n const renderedMembers = members.map((it) => {\n const summary = documentationComment(it);\n const comment = summary ? `\\n${summary}` : \"\";\n return `${comment}\\n${it.excerpt.text}`;\n });\n const header = item.excerpt.text.replace(/^export /, \"\").trimEnd();\n const extendsIndex = header.indexOf(\" extends \");\n const declaration =\n inherit && extendsIndex !== -1 ? header.slice(0, extendsIndex) : header;\n const source = `${declaration} { ${renderedMembers.join(\"\")} }`;\n return [\n \"```ts nocompile nolint\",\n formatCode(source, \"docs/api-interface.ts\"),\n \"```\",\n ].join(\"\\n\");\n}\n\nfunction renderProperties(\n members: Array<ApiPropertySignature | ApiMethodSignature>,\n): string {\n return members\n .map((it) => {\n const optional = it.isOptional ? \" {@optional}\" : \"\";\n const summary = documentation(it);\n const lines = summary\n ? summary.split(\"\\n\").map((it, i) => {\n if (it.trim() === \"\") {\n return \"\\n\";\n }\n const prefix = i === 0 ? \": \" : \" \";\n return `${prefix}${it.trim()}\\n`;\n })\n : [\": ‐\\n\"];\n return [`\\`${it.excerpt.text}\\`${optional}\\n`, ...lines].join(\"\");\n })\n .join(\"\\n\");\n}\n\n/**\n * @internal\n */\nexport interface RenderInterfaceOptions {\n inherit?: boolean;\n}\n\n/**\n * @internal\n */\nexport function renderInterface(): {\n default(\n this: void,\n item: ApiInterface,\n options: RenderInterfaceOptions,\n ): string;\n interface(\n this: void,\n item: ApiInterface,\n options: RenderInterfaceOptions,\n ): string;\n properties(\n this: void,\n item: ApiInterface,\n options: RenderInterfaceOptions,\n ): string;\n} {\n return {\n default(item, options) {\n const inherit = options.inherit ?? false;\n return renderCode(item, collectMembers(item, inherit), options);\n },\n interface(item, options) {\n const inherit = options.inherit ?? false;\n return renderCode(item, collectMembers(item, inherit), options);\n },\n properties(item, options) {\n const inherit = options.inherit ?? true;\n return renderProperties(collectMembers(item, inherit));\n },\n };\n}\n","import {\n type ApiInterface,\n type ApiItem,\n ApiItemKind,\n ApiModel,\n} from \"@microsoft/api-extractor-model\";\nimport { glob } from \"glob\";\nimport { type DocumentPartial } from \"../../document\";\nimport { type Processor, type ProcessorOptions } from \"../../processor\";\nimport { naturalJoin } from \"../../utils\";\nimport { getVariant } from \"./get-variant\";\nimport { renderInterface } from \"./render-interface\";\n\n/**\n * Options for {@link apiExtractorProcessor}.\n *\n * @public\n */\nexport interface ApiExtractorProcessorOptions extends ProcessorOptions {\n apiModel?: string | string[];\n}\n\nfunction getFilenames(patterns: string | string[]): Promise<string[]> {\n return glob(patterns, { posix: true });\n}\n\nfunction pluralize(text: string, array: unknown[]): string {\n const s = array.length !== 1 ? \"s\" : \"\";\n return `${text}${s}`;\n}\n\nfunction loadedMessage(kind: string, array: unknown[]): unknown[] {\n return [array.length, pluralize(kind, array), \"loaded\"];\n}\n\nfunction getInheritOption(tags: string[]): boolean | undefined {\n if (tags.includes(\"inherit\")) {\n return true;\n }\n\n if (tags.includes(\"noinherit\")) {\n return false;\n }\n\n return undefined;\n}\n\ninterface WalkFnTable {\n [ApiItemKind.Interface]: (item: ApiInterface) => void;\n}\n\nfunction walk(root: ApiItem, fns: Partial<WalkFnTable>): void {\n const t = fns as Partial<Record<ApiItemKind, (item: ApiItem) => void>>;\n for (const member of root.members) {\n const fn = t[member.kind];\n if (fn) {\n fn(member);\n }\n walk(member, fns);\n }\n}\n\n/**\n * Return list of ambiguous ids if the name is ambiguous.\n */\nfunction isAmbigious(\n name: string,\n names: Map<string, string[]>,\n): string[] | null {\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- 1 or more must have been found */\n const found = names.get(name)!;\n return found.length > 1 ? found : null;\n}\n\n/**\n * @param id - Canonical unique identifier\n * @param name - Short user-defined name (might be ambiguous).\n */\nfunction createPartial(options: {\n id: string;\n name: string;\n names: Map<string, string[]>;\n fullPath: string | undefined;\n render(this: void, tags: string[]): string;\n}): DocumentPartial {\n const { id, name, fullPath, names, render } = options;\n return {\n kind: \"partial\",\n id,\n alias: [],\n name: `interface:${name}`,\n body(tags, reference) {\n /* if this partial was found by name, test if the name was ambiguous */\n if (reference.kind === \"name\") {\n const ambigious = isAmbigious(name, names);\n if (ambigious) {\n const quoted = ambigious.map((it) => `\"${it}\"`);\n const ids = naturalJoin(quoted, \"and\");\n throw new Error(\n `Ambiguous name \"${name}\", found ${ambigious.length} interfaces matching this name: ${ids}`,\n );\n }\n }\n\n return render(tags);\n },\n format: \"markdown\",\n fileInfo: {\n fullPath,\n },\n };\n}\n\n/**\n * Reads one or more API Extractor models and generates partial documents which\n * can be included into markdown documents.\n *\n * @public\n */\nexport function apiExtractorProcessor(\n options: ApiExtractorProcessorOptions = {},\n): Processor {\n const { apiModel: patterns = [], enabled = true } = options;\n return {\n name: \"apiExtractorProcessor\",\n after: \"generate-docs\",\n async handler(context) {\n if (!enabled) {\n return;\n }\n\n const symbols = {\n interface: [] as ApiInterface[],\n };\n\n for (const filename of await getFilenames(patterns)) {\n const apiModel = new ApiModel();\n const apiPackage = apiModel.loadPackage(filename);\n walk(apiPackage, {\n [ApiItemKind.Interface](item) {\n symbols.interface.push(item);\n },\n });\n }\n\n const interfaceRenderer = renderInterface();\n const seenInterfaces = new Map<string, string[]>();\n for (const item of symbols.interface) {\n /* unique id */\n const id = item.canonicalReference.toString();\n\n /* store mapping between short names and unique id to find duplicated names */\n const found = seenInterfaces.get(item.name) ?? [];\n seenInterfaces.set(item.name, [...found, id]);\n\n const partial = createPartial({\n id,\n name: item.name,\n names: seenInterfaces,\n fullPath: item.sourceLocation.fileUrl,\n render(tags) {\n const variant = getVariant(\"interface\", tags);\n return interfaceRenderer[variant](item, {\n inherit: getInheritOption(tags),\n });\n },\n });\n\n context.addDocument(partial);\n }\n\n context.log(...loadedMessage(\"interface\", symbols.interface));\n },\n };\n}\n","/**\n * @public\n */\nexport type DocumentBadge = \"success\" | \"error\" | \"info\";\n\n/**\n * @public\n */\nexport interface ComponentAttribute {\n /** component name */\n name: string;\n /** optional hint (glob pattern) how to find the component */\n source?: string;\n}\n\n/**\n * @internal\n */\nexport interface DocumentAttributes {\n /** Page title */\n title?: string;\n\n /** Short page title (e.g. used in sidenav) */\n \"short-title\"?: string;\n\n /** Page layout */\n layout?: string;\n\n /** sets the `name` property in `Document` */\n name?: string;\n\n /** document alias for easier linking */\n alias?: string | string[];\n\n /** component status */\n status?: string;\n\n /** visible in navigation */\n visible?: boolean;\n\n /** if should write to file and make available as a page */\n include?: boolean;\n\n /** component(s) this page corresponds to */\n component?:\n | string\n | ComponentAttribute\n | Array<string | ComponentAttribute>;\n\n /** link to external page in navigation */\n href?: string;\n\n /** Search options */\n search?: {\n /* Optional list of additional search terms for this page */\n terms?: string | string[];\n };\n\n /** navigation sortorder */\n sortorder?: number;\n\n /** pages redirecting to this page */\n redirect_from?: string | string[];\n}\n\n/**\n * @public\n */\nexport interface NormalizedDocumentAttributes {\n title?: string;\n shortTitle?: string;\n layout?: string;\n status?: string;\n badge?: DocumentBadge;\n component?: ComponentAttribute[];\n href?: string;\n /** search options */\n search: {\n /** list of additional search terms for this page */\n terms: string[];\n };\n /** normalized sortorder (defaults to Infinity) */\n sortorder: number;\n redirectFrom: string[];\n}\n\n/**\n * @internal\n */\nexport const documentAttributeKeys = [\n \"title\",\n \"short-title\",\n \"layout\",\n \"name\",\n \"alias\",\n \"status\",\n \"visible\",\n \"include\",\n \"component\",\n \"href\",\n \"search\",\n \"sortorder\",\n \"redirect_from\",\n];\n","import fs from \"node:fs/promises\";\nimport path from \"node:path/posix\";\nimport markdownIt from \"markdown-it\";\nimport { type DocumentPage, isDocumentPage } from \"../document\";\nimport { parseInfostring } from \"../examples\";\nimport { type Processor, type ProcessorOptions } from \"../processor\";\nimport { haveOutput, normalizePath, slugify } from \"../utils\";\n\n/**\n * Options for `extractExamplesProcessor`.\n *\n * @public\n */\nexport interface ExtractExamplesOptions extends ProcessorOptions {\n /**\n * Folder to write examples to. The output folder would typically be git\n * ignored except for configuration files such as `tsconfig.json.`\n */\n outputFolder: string;\n\n /**\n * Array of languages to extract.\n *\n * - `\"javascript\"`\n * - `\"typescript\"`\n * - `\"css\"`\n * - `\"scss\"`\n */\n languages?: string[];\n}\n\ninterface Example {\n name: string | undefined;\n content: string;\n language: string;\n tags: string[];\n}\n\ntype DocumentWithOutput = DocumentPage & { fileInfo: { outputName: string } };\ntype DocumentLike = Pick<DocumentWithOutput, \"fileInfo\" | \"body\" | \"format\">;\n\nconst md = markdownIt();\n\n/* eslint-disable-next-line sonarjs/no-invariant-returns -- function works as intended */\nmd.renderer.rules.fence = (tokens, idx, _options, collected: Example[]) => {\n const { content, info } = tokens[idx];\n const { language, tags } = parseInfostring(info);\n\n if (language === \"import\") {\n return \"\";\n }\n\n const nameTag = tags.find((it) => it.startsWith(\"name=\"));\n const name = nameTag ? slugify(nameTag.slice(\"name=\".length)) : undefined;\n\n collected.push({\n name,\n content,\n language,\n tags,\n });\n\n return \"\";\n};\n\nfunction findExamples(doc: DocumentLike): Example[] {\n if (doc.format !== \"markdown\") {\n return [];\n }\n const collected: Example[] = [];\n md.render(doc.body, collected);\n return collected;\n}\n\nfunction getSuffix(tags: string[]): string {\n const relevant = tags.filter((it) => [\"nocompile\", \"nolint\"].includes(it));\n if (relevant.length > 0) {\n return `-${relevant.join(\"-\")}`;\n } else {\n return \"\";\n }\n}\n\nfunction getExtension(lang: string): string {\n switch (lang) {\n case \"typescript\":\n return \"ts\";\n case \"javascript\":\n return \"js\";\n default:\n return lang;\n }\n}\n\n/**\n * Processor to extract and write examples to separate files.\n *\n * @public\n */\nexport function extractExamplesProcessor(\n options: ExtractExamplesOptions,\n): Processor {\n const {\n enabled = true,\n outputFolder,\n languages = [\"javascript\", \"typescript\", \"css\", \"scss\"],\n } = options;\n\n function isRelevant(example: Example): boolean {\n return languages.includes(example.language);\n }\n\n return {\n stage: \"render\",\n name: \"extract-examples-processor\",\n async handler(context) {\n if (!enabled) {\n return;\n }\n\n if (!outputFolder) {\n throw new Error(\n `\"outputFolder\" not set in \"extractExamplesProcessor(..)\"`,\n );\n }\n\n /* clear old folder to remove potential obsolete files */\n await fs.rm(outputFolder, { recursive: true, force: true });\n\n const docs = context.docs.filter(isDocumentPage).filter(haveOutput);\n\n let total = 0;\n for (const doc of docs) {\n const examples = findExamples(doc).filter(isRelevant);\n if (examples.length === 0) {\n continue;\n }\n\n /* create a directory matching the filename the examples is contained in */\n const dir = normalizePath(outputFolder, doc.fileInfo.fullPath);\n await fs.mkdir(dir, { recursive: true });\n\n /* write each example into the directory */\n let n = 1;\n for (const example of examples) {\n const suffix = getSuffix(example.tags);\n const extension = getExtension(example.language);\n const filename = `example-${example.name ?? String(n++)}${suffix}.${extension}`;\n const filePath = path.join(dir, filename);\n await fs.writeFile(filePath, example.content, \"utf8\");\n total++;\n }\n }\n\n context.log(total, \"examples extracted\");\n },\n };\n}\n","import markdownIt from \"markdown-it\";\nimport { type DocumentOutline, type DocumentPage } from \"../document\";\nimport { parseInfostring } from \"../examples\";\nimport { findTag, getFingerprint, getOutputFilePath, hasTag } from \"../utils\";\nimport { type Manifest } from \"./manifest\";\n\ntype DocumentPageWithOutput = DocumentPage & {\n fileInfo: { outputName: string };\n};\ntype DocumentPageLike = Pick<\n DocumentPageWithOutput,\n \"fileInfo\" | \"name\" | \"attributes\" | \"outline\" | \"body\" | \"format\"\n>;\ntype ManifestPage = Manifest[\"pages\"][number];\ntype ManifestOutline = ManifestPage[\"outline\"];\ntype ManifestExamples = ManifestPage[\"examples\"];\n\nconst md = markdownIt();\n\nmd.renderer.rules.fence = (\n tokens,\n idx,\n _options,\n collected: ManifestExamples,\n /* eslint-disable-next-line sonarjs/no-invariant-returns -- function works as intended */\n) => {\n const { content, info, map } = tokens[idx];\n const { language: rawLanguage, tags } = parseInfostring(info);\n const hashContent = `${String(map?.[0])}:${String(map?.[1])}:${info}:${content}`;\n const fingerprint = getFingerprint(hashContent);\n let extension = undefined;\n let language = rawLanguage;\n\n if (hasTag(tags, \"compare\")) {\n language = \"diff\";\n }\n\n if (language === \"import\") {\n extension = content.split(\".\").at(-1)?.trim();\n }\n\n if (hasTag(tags, \"hidden\")) {\n return \"\";\n }\n\n const name = findTag(tags, \"name\")?.value ?? undefined;\n\n collected.push({\n name,\n selector: `#example-${fingerprint}`,\n language: extension ?? language,\n tags,\n });\n return \"\";\n};\n\nfunction flattenOutline(outline: DocumentOutline): ManifestOutline {\n return outline.flatMap((entry) => {\n return [\n { heading: entry.title, anchor: entry.anchor },\n ...flattenOutline(entry.subheadings),\n ];\n });\n}\n\nfunction findExamples(doc: DocumentPageLike): ManifestExamples {\n if (doc.format !== \"markdown\") {\n return [];\n }\n const collected: ManifestExamples = [];\n md.render(doc.body, collected);\n return collected;\n}\n\n/**\n * @internal\n */\nexport function manifestPageFromDocument(doc: DocumentPageLike): ManifestPage {\n const { body, fileInfo, format } = doc;\n return {\n path: getOutputFilePath(\"\", fileInfo),\n title: doc.attributes.title ?? doc.name,\n redirect: format === \"redirect\" ? body : null,\n outline: flattenOutline(doc.outline),\n examples: findExamples(doc),\n };\n}\n","import fs from \"node:fs/promises\";\nimport { isDocumentPage } from \"../document\";\nimport { type Manifest, manifestPageFromDocument } from \"../manifest\";\nimport { type Processor } from \"../processor\";\nimport { haveOutput } from \"../utils\";\n\ntype ManifestPage = Manifest[\"pages\"][number];\n\n/**\n * Options for {@link manifestProcessor}.\n *\n * @public\n */\nexport interface ManifestProcessorOptions {\n /** If set, the manifest will be written as Markdown to this destination */\n markdown?: string;\n\n /** If set, the manifest will be written as JSON to this destination */\n json?: string;\n\n /** If set to `true` the markdown manifest will be verified instead of\n * written (typically enabled during CI) */\n verify?: boolean;\n}\n\nfunction line(page: ManifestPage): string {\n if (page.redirect) {\n return `${page.path} -> ${page.redirect}`;\n }\n return page.path;\n}\n\nfunction renderMarkdown(manifest: Manifest): string {\n return [\n \"## Documentation manifest\",\n \"\",\n \"> Do not edit this file. It is a automatically generated by `@forsakringskassan/docs-generator`.\",\n \"\",\n \"```\",\n ...manifest.pages.map(line),\n \"```\",\n \"\",\n ].join(\"\\n\");\n}\n\nfunction renderJSON(manifest: Manifest): string {\n return JSON.stringify(manifest, null, 2);\n}\n\nfunction normalize(text: string): string {\n return text.replaceAll(\"\\r\\n\", \"\\n\");\n}\n\nclass ManifestError extends Error {\n private readonly filename: string;\n\n public constructor(filename: string) {\n super(`Documentation manifest \"${filename}\" is not up-to-date!`);\n this.name = \"ManifestError\";\n this.filename = filename;\n }\n\n public prettyError(): string {\n const { filename, message } = this;\n\n return [\n message,\n \"\",\n `Run the build locally and commit the content of \"${filename}\".`,\n ].join(\"\\n\");\n }\n}\n\n/**\n * Write out a manifest listing all generated documents that will be present in\n * `outputFolder`.\n *\n * @public\n */\nexport function manifestProcessor(\n options: ManifestProcessorOptions = {},\n): Processor {\n const { markdown, json, verify } = options;\n return {\n name: \"manifestProcessor\",\n before: \"render\",\n async handler(context) {\n const docs = context.docs.filter(isDocumentPage).filter(haveOutput);\n const pages = docs.map(manifestPageFromDocument);\n pages.sort((a, b) => {\n return a.path.localeCompare(b.path);\n });\n const manifest: Manifest = { pages };\n if (markdown) {\n const content = normalize(renderMarkdown(manifest));\n if (verify) {\n const actual = normalize(\n await fs.readFile(markdown, \"utf8\"),\n );\n if (actual !== content) {\n throw new ManifestError(markdown);\n }\n } else {\n await fs.writeFile(markdown, content, \"utf8\");\n }\n }\n if (json) {\n const content = renderJSON(manifest);\n await fs.writeFile(json, content, \"utf8\");\n }\n },\n };\n}\n","import util from \"node:util\";\nimport { type Processor } from \"../processor\";\n\n/**\n * Options for {@link motdProcessor}.\n *\n * @public\n */\nexport interface MOTDOptions {\n /** Enables/disables the MOTD processor. */\n enabled?: boolean;\n /** Name of the container to render content in. */\n container?: string;\n /** Message to display */\n message?: string;\n}\n\n/**\n * @internal\n */\nexport interface MOTDProcessorTemplateData {\n message: string | undefined;\n}\n\ninterface NormalizedMOTDOptions {\n enabled: boolean;\n container: string;\n message: string | undefined;\n}\n\nfunction normalizeOptions(options: MOTDOptions): NormalizedMOTDOptions {\n const defaults = {\n enabled: true,\n container: \"body:begin\",\n message: undefined,\n };\n return { ...defaults, ...options };\n}\n\n/**\n * Display a MOTD style message.\n *\n * @public\n */\nexport function motdProcessor(options: MOTDOptions = {}): Processor {\n const { enabled, container, message } = normalizeOptions(options);\n return {\n name: \"motd-processor\",\n after: \"generate-docs\",\n runtime: [{ src: \"src/runtime/motd/index.ts\" }],\n handler(context) {\n if (!enabled) {\n return;\n }\n\n const useLegacyTemplate = context.hasTemplate(\n \"partials/version-banner.html\",\n );\n const data: MOTDProcessorTemplateData = {\n message,\n };\n\n context.addTemplateBlock(container, \"motd-container\", {\n filename: \"partials/motd-container.njk.html\",\n data: useLegacyTemplate ? undefined : data,\n });\n\n /* legacy for backwards compatibility */\n if (useLegacyTemplate) {\n /* eslint-disable-next-line no-console -- expected to log */\n console.warn(\n `[deprecated] using the \"partial/version-banner.html\" template for motdProcessor is deprecated`,\n );\n context.addTemplateBlock(container, \"version-banner\", {\n filename: \"partials/version-banner.html\",\n data,\n });\n }\n },\n };\n}\n\nfunction versionBannerProcessorDeprecated(\n message: string,\n container: string,\n): Processor {\n return motdProcessor({\n enabled: true,\n container,\n message,\n });\n}\n\n/**\n * Display a banner with message when path dosen't start with /latest.\n *\n * @param message - Message to display in banner, may contain html-template.\n * @param container - Where the content will be inserted.\n *\n * @public\n * @deprecated Use the `motdProcessor` instead.\n */\n/* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion -- to avoid exporting versionBannerProcessorDeprecated itself */\nexport const versionBannerProcessor = util.deprecate(\n versionBannerProcessorDeprecated,\n \"versionBannerProcessor() is deprecated, use motdProcessor() instead\",\n) as (message: string, container: string) => Processor;\n","/**\n * @internal\n */\nexport function dump(value: unknown): string {\n return `<pre>${JSON.stringify(value, null, 2)}</pre>`;\n}\n","/**\n * @internal\n */\nexport function json(value: unknown): string {\n return JSON.stringify(value, null, 2);\n}\n","import path from \"node:path/posix\";\nimport { normalizePath } from \"../../utils\";\n\nfunction isExternalUrl(url: string): boolean {\n return (\n url.startsWith(\"http://\") ||\n url.startsWith(\"https://\") ||\n url.startsWith(\"//\")\n );\n}\n\nfunction isAbsoluteUrl(url: string): boolean {\n return url.startsWith(\"/\");\n}\n\n/**\n * @internal\n */\nexport function relative(\n url: string,\n { fileInfo }: { fileInfo: { path: string } },\n): string {\n if (isExternalUrl(url)) {\n return url;\n }\n if (isAbsoluteUrl(url)) {\n /* `/foo` to `./foo` */\n url = `.${url}`;\n }\n\n url = normalizePath(url);\n\n const outputPath = normalizePath(fileInfo.path);\n if (outputPath === url || `${outputPath}/` === url) {\n return \"./\";\n }\n const relative = path.relative(outputPath, url);\n\n /* force ./ in front of url unless a path already has ./ ../ or similar */\n const prefix = relative.startsWith(\".\") ? \"\" : \"./\";\n\n /* retain trailing / if present in original url */\n const suffix = url.endsWith(\"/\") ? \"/\" : \"\";\n\n return [prefix, relative, suffix].join(\"\");\n}\n","/**\n * @internal\n */\nexport function take<T extends Record<string, unknown>>(\n haystack: T[],\n key: string,\n value: string,\n): T[] {\n return haystack.filter((it) => it[key] === value);\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path/posix\";\nimport dedent from \"dedent\";\nimport { isDocumentPage } from \"../../document\";\nimport { type Processor } from \"../../processor\";\nimport { relative } from \"../../render/filter\";\nimport { getOutputFilePath, haveOutput } from \"../../utils\";\n\nconst template = (dst: string): string => /* HTML */ `\n <!doctype html>\n <html lang=\"en\">\n <head>\n <title>Redirect</title>\n <meta http-equiv=\"refresh\" content=\"0; url=${dst}\" />\n </head>\n <body>\n <p>\n This page has moved to\n <a href=\"${dst}\"> ${dst} </a>.\n </p>\n </body>\n </html>\n`;\n\n/**\n * Creates redirects using html-files with meta redirects.\n *\n * @public\n */\nexport function htmlRedirectProcessor(): Processor {\n return {\n name: \"html-redirect-processor\",\n after: \"render\",\n async handler(context) {\n const { docs, outputFolder } = context;\n for (const doc of docs.filter(isDocumentPage).filter(haveOutput)) {\n if (doc.format !== \"redirect\") {\n continue;\n }\n const filePath = getOutputFilePath(outputFolder, doc.fileInfo);\n const dst = relative(doc.body, doc);\n const content = template(dst);\n await fs.mkdir(path.dirname(filePath), { recursive: true });\n await fs.writeFile(filePath, dedent(content), \"utf8\");\n }\n },\n };\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path/posix\";\nimport { type Document, isDocumentPage } from \"../../document\";\nimport { type Processor } from \"../../processor\";\nimport { haveOutput, normalizePath } from \"../../utils\";\n\nfunction isRedirect(doc: Document): boolean {\n return doc.format === \"redirect\";\n}\n\n/**\n * Generate a netlify-style `_redirects` file.\n *\n * @public\n * @param prefix - Prefix to append to all urls, set to subdirectory if you're deploying to a subdirectory.\n * @param filename - Output filename (relative to output folder).\n */\nexport function redirectFileProcessor(\n prefix: string = \"/\",\n filename: string = \"_redirects\",\n): Processor {\n return {\n name: \"redirect-file-processor\",\n after: \"render\",\n async handler(context) {\n const { docs } = context;\n const lines = docs\n .filter(isDocumentPage)\n .filter(haveOutput)\n .filter(isRedirect)\n .map((doc) => {\n const src = normalizePath(\n doc.fileInfo.path,\n doc.fileInfo.outputName,\n );\n const dst = doc.body;\n return `${prefix}${src} ${prefix}${dst} 301\\n`;\n });\n const filePath = path.join(context.outputFolder, filename);\n await fs.mkdir(path.dirname(filePath), { recursive: true });\n await fs.writeFile(filePath, lines.join(\"\"), \"utf8\");\n context.log(filename, \"generated\");\n },\n };\n}\n","import { type Document, isDocumentPage } from \"../../document\";\nimport { normalizePath } from \"../../utils\";\n\n/**\n * @internal\n */\nexport interface Redirect {\n from: string;\n to: string;\n}\n\n/**\n * @internal\n */\nexport function getRedirects(docs: Document[]): Redirect[] {\n return docs.filter(isDocumentPage).flatMap((it): Redirect[] => {\n const { fileInfo } = it;\n const { path, outputName } = fileInfo;\n if (outputName === false) {\n return [];\n }\n return it.attributes.redirectFrom.map((jt) => {\n return {\n from: jt.startsWith(\"/\") ? jt.slice(1) : jt,\n to: normalizePath(path, outputName),\n };\n });\n });\n}\n","import path from \"node:path/posix\";\nimport { type Processor } from \"../../processor\";\nimport { getRedirects } from \"./get-redirects\";\n\n/**\n * Creates stub documents with redirects suitable for creating a manifest.\n *\n * @internal\n */\nexport function redirectProcessor(): Processor {\n return {\n name: \"redirect-processor\",\n after: \"generate-docs\",\n handler(context) {\n const redirects = getRedirects(context.docs);\n for (const redirect of redirects) {\n const { dir, base, name } = path.parse(redirect.from);\n context.addDocument({\n kind: \"page\",\n id: `redirect:${redirect.from}-${redirect.to}`,\n name: `${redirect.from}-${redirect.to}`,\n alias: [],\n visible: false,\n attributes: {\n sortorder: Infinity,\n redirectFrom: [],\n search: { terms: [] },\n },\n body: redirect.to,\n outline: [],\n format: \"redirect\",\n tags: [],\n template: \"redirect\",\n fileInfo: {\n path: dir,\n name,\n fullPath: \"virtual:redirect\",\n outputName: base,\n },\n });\n }\n const s = redirects.length === 1 ? \"\" : \"s\";\n context.log(redirects.length, `redirect${s} found`);\n },\n };\n}\n","import { type PackageJson } from \"../package-json\";\nimport { type Processor, type ProcessorOptions } from \"../processor\";\n\n/**\n * Options for {@link selectableVersionProcessor#}.\n *\n * @public\n */\nexport interface SelectableVersionProcessorOptions extends ProcessorOptions {\n readonly message?: string;\n}\n\n/**\n * Make it possible to change version.\n *\n * @public\n */\nexport function selectableVersionProcessor(\n pkg: PackageJson,\n container: string,\n options?: SelectableVersionProcessorOptions,\n): Processor {\n const { enabled = true, message = \"Det finns en nyare version\" } =\n options ?? {};\n\n return {\n name: \"selectable-version-processor\",\n after: \"generate-docs\",\n runtime: [\n {\n src: \"src/runtime/select-version.ts\",\n buildOptions: {\n define: {\n __PKG_VERSION__: JSON.stringify(`v${pkg.version}`),\n __MESSAGE__: JSON.stringify(message),\n },\n },\n },\n ],\n handler(context) {\n if (!enabled) {\n return;\n }\n context.addTemplateBlock(container, \"version\", {\n filename: \"partials/selectable-version.html\",\n data: { pkg },\n });\n context.addTemplateBlock(\"body:end\", \"version-modal\", {\n filename: \"partials/version-modal.html\",\n data: { pkg },\n });\n },\n };\n}\n","import path from \"node:path\";\nimport { type DocumentPage } from \"../document\";\n\ntype Mutable<T> = { -readonly [P in keyof T]: T[P] };\n\n/**\n * @public\n */\nexport interface NavigationLeaf {\n readonly title: string;\n readonly path: string;\n readonly sortorder: number;\n readonly id: string;\n readonly external: boolean;\n}\n\n/**\n * @public\n */\nexport interface NavigationSection {\n readonly key: string;\n readonly title: string;\n readonly path: string;\n readonly sortorder: number;\n readonly children: NavigationNode[];\n readonly visible: boolean;\n}\n\n/**\n * @public\n */\nexport type NavigationNode = NavigationLeaf | NavigationSection;\n\ntype MutableNavigationSection = Mutable<NavigationSection>;\n\n/**\n * @public\n */\nexport function isNavigationSection(\n node: NavigationNode,\n): node is NavigationSection {\n return \"key\" in node;\n}\n\nfunction pathFromDoc({ fileInfo }: DocumentPage): [string, boolean] {\n if (fileInfo.name === \"index\") {\n return [fileInfo.path.replaceAll(\"\\\\\", \"/\"), true];\n } else {\n return [\n `./${path.join(fileInfo.path, fileInfo.name).replaceAll(\"\\\\\", \"/\")}`,\n false,\n ];\n }\n}\n\nfunction getParentKey(name: string): string {\n return name.split(\"/\").slice(0, -1).join(\"/\");\n}\n\nexport function generateNavtree(docs: DocumentPage[]): NavigationSection {\n /** Lookup table for sections */\n const section: Record<string, MutableNavigationSection> = {};\n\n function createSection(\n key: string,\n title: string,\n sortorder: number,\n { visible }: { visible?: boolean } = {},\n ): void {\n const existing = section[key] as MutableNavigationSection | undefined;\n if (existing) {\n existing.title = title;\n existing.sortorder = sortorder;\n existing.visible = visible ?? true;\n } else {\n const node: MutableNavigationSection = {\n key,\n title,\n path: \"\",\n sortorder,\n children: [],\n visible: visible ?? true,\n };\n section[key] = node;\n if (key !== \".\") {\n const parent = attach(key);\n parent.children.push(node);\n }\n }\n }\n\n function attach(key: string): MutableNavigationSection {\n const parentKey = getParentKey(key);\n let parent = section[parentKey] as MutableNavigationSection | undefined;\n\n /* parent exists and is attached */\n if (parent) {\n return parent;\n }\n\n /* create stub if the parent does not exist (yet) */\n parent = {\n key: parentKey,\n title: parentKey.split(\"/\").at(-1) ?? \"(missing title)\",\n path: \"\",\n sortorder: Infinity,\n children: [],\n visible: true,\n };\n section[parentKey] = parent;\n let anchestor = parentKey;\n let current = parent;\n while (anchestor !== \".\") {\n anchestor = getParentKey(anchestor);\n if (section[anchestor] as MutableNavigationSection | undefined) {\n section[anchestor].children.push(current);\n break;\n }\n const node: MutableNavigationSection = {\n key: anchestor,\n title: \"\",\n path: \"\",\n sortorder: Infinity,\n children: [current],\n visible: true,\n };\n section[anchestor] = node;\n current = node;\n }\n\n return parent;\n }\n\n for (const doc of docs) {\n /* always ignore redirects, should never be present in navigation no\n * matter what */\n if (doc.format === \"redirect\") {\n continue;\n }\n\n const [name, isSection] = pathFromDoc(doc);\n const title =\n doc.attributes.shortTitle ??\n doc.attributes.title ??\n doc.fileInfo.name;\n const sortorder = doc.attributes.sortorder;\n\n /* external link */\n if (doc.attributes.href) {\n const parent = attach(name);\n const leafNode: NavigationLeaf = {\n id: doc.id,\n title,\n path: doc.attributes.href,\n sortorder,\n external: true,\n };\n parent.children.push(leafNode);\n continue;\n }\n\n /* ignore documents without any output */\n if (!doc.fileInfo.outputName) {\n if (isSection) {\n createSection(name, title, sortorder);\n }\n continue;\n }\n\n /* ignore documents with are marked as not navigatable */\n if (!doc.visible) {\n if (isSection) {\n createSection(name, title, sortorder, { visible: false });\n }\n continue;\n }\n\n /* special case: create or update root node */\n if (name === \".\") {\n createSection(name, title, sortorder);\n continue;\n }\n\n const parent = attach(name);\n\n if (isSection) {\n const leafNode: NavigationLeaf = {\n id: doc.id,\n title,\n path: `${name}/`,\n sortorder,\n external: false,\n };\n\n const existing = section[name] as\n | MutableNavigationSection\n | undefined;\n if (existing) {\n existing.title = title;\n existing.path = leafNode.path;\n existing.sortorder = sortorder;\n existing.children.unshift(leafNode);\n existing.visible = true;\n } else {\n const sectionNode: MutableNavigationSection = {\n key: name,\n title,\n path: leafNode.path,\n sortorder,\n children: [leafNode],\n visible: true,\n };\n section[name] = sectionNode;\n parent.children.push(sectionNode);\n }\n } else {\n const leafNode: NavigationLeaf = {\n id: doc.id,\n title,\n path: `${doc.fileInfo.path}/${doc.fileInfo.outputName}`,\n sortorder,\n external: false,\n };\n parent.children.push(leafNode);\n }\n }\n\n const root = section[\".\"] as MutableNavigationSection | undefined;\n if (root) {\n return root;\n } else {\n return {\n key: \".\",\n title: \"\",\n path: \"\",\n sortorder: Infinity,\n children: [],\n visible: true,\n };\n }\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path/posix\";\nimport { isDocumentPage } from \"../document\";\nimport { type NavigationSection } from \"../navigation\";\nimport { generateNavtree } from \"../navigation/generate-navtree\";\nimport { type Processor } from \"../processor\";\n\n/**\n * Single entry for a topnav item.\n *\n * @public\n */\nexport interface TopnavEntry {\n path: string;\n title: string;\n sortorder?: number;\n visible?: boolean;\n}\n\n/**\n * @internal for testing\n */\nexport function generateNavigation(\n entries: TopnavEntry[],\n navtree: NavigationSection,\n): Omit<NavigationSection, \"title\"> {\n return {\n key: \".\",\n path: \"./index.html\",\n sortorder: Infinity,\n visible: true,\n children: entries\n .map((entry, index) => {\n // Find the corresponding item in navtree\n const navtreeItem = navtree.children.find(\n (item) => item.title === entry.title,\n );\n\n if (navtreeItem) {\n return {\n ...navtreeItem,\n path: entry.path,\n sortorder: entry.sortorder ?? index,\n visible: true,\n };\n }\n\n const key = path.parse(entry.path).name;\n // Create a new NavigationLeaf for entries not in navtree\n return {\n key,\n sortorder: index,\n children: [],\n visible: true,\n ...entry,\n };\n })\n .toSorted((a, b) => a.sortorder - b.sortorder),\n };\n}\n\n/**\n * Processor to create a manual topnav:\n *\n * - Custom order.\n * - Custom items.\n *\n * @public\n */\n/* istanbul ignore next: not needed for coverage, the important part is tested from generateNavigation */\nexport function topnavProcessor(filename: string, title: string): Processor {\n return {\n after: \"generate-nav\",\n name: \"topnav-processor\",\n async handler(context) {\n const content = await fs.readFile(filename, \"utf8\");\n const parsed = JSON.parse(content) as TopnavEntry[];\n const pages = context.docs.filter(isDocumentPage);\n const navtree = generateNavtree(pages);\n const rootNode = generateNavigation(parsed, navtree);\n\n context.setTopNavigation({\n title,\n ...rootNode,\n });\n },\n };\n}\n","import { type PackageJson } from \"../package-json\";\nimport { type Processor } from \"../processor\";\nimport {\n getPullRequestID,\n getRepositoryUrl,\n gitCommitHash,\n interpolate,\n runCommand,\n} from \"../utils\";\n\n/**\n * Options for {@link versionProcessor}.\n *\n * @public\n */\nexport interface VersionProcessorOptions {\n readonly enabled: boolean;\n readonly scm?: {\n readonly commitUrlFormat: string;\n readonly prUrlFormat: string;\n };\n}\n\n/**\n * @internal\n */\nexport interface VersionProcessorTemplateData {\n readonly pkg: PackageJson;\n readonly scm: {\n readonly branch: string;\n readonly commitUrl: string;\n readonly commitShort: string;\n readonly commitHash: string;\n readonly pr: string | undefined;\n readonly prUrl: string | undefined;\n } | null;\n readonly build: {\n date: string;\n time: string;\n };\n}\n\ntype ScmOptions = NonNullable<VersionProcessorOptions[\"scm\"]>;\n\ninterface GitData {\n readonly branch: string;\n readonly commitUrl: string;\n readonly commitShort: string;\n readonly commitHash: string;\n readonly pr: string | undefined;\n readonly prUrl: string | undefined;\n}\n\nasync function getGitBranch(): Promise<string> {\n /* sometimes cicd runners doesn't checkout using branch name so cant fetch\n * using normal method but instead puts the branch name in environmental\n * variables */\n const { CHANGE_BRANCH, CHANGE_NAME, GITHUB_HEAD_REF } = process.env;\n\n /* jenkins */\n if (CHANGE_BRANCH) {\n return CHANGE_BRANCH;\n }\n if (CHANGE_NAME) {\n return CHANGE_NAME;\n }\n\n /* github actions */\n if (GITHUB_HEAD_REF) {\n return GITHUB_HEAD_REF;\n }\n\n const branch = await runCommand(\n \"git rev-parse --abbrev-ref HEAD\",\n \"unknown\",\n );\n if (branch === \"HEAD\" || branch === \"\") {\n return \"unknown\";\n } else {\n return branch;\n }\n}\n\nasync function getSCMData(\n pkg: { homepage: string; repository?: { url?: string } },\n options: ScmOptions,\n): Promise<GitData | null> {\n const commitHash = await gitCommitHash(\"full\");\n const commitShort = await gitCommitHash(\"short\");\n if (!commitHash || !commitShort) {\n return null;\n }\n\n const { homepage } = pkg;\n const repository = getRepositoryUrl(pkg) ?? \"\";\n const pr = getPullRequestID(process.env);\n const prUrl = pr\n ? interpolate(options.prUrlFormat, { homepage, pr, repository })\n : undefined;\n return {\n branch: await getGitBranch(),\n commitShort,\n commitHash,\n commitUrl: interpolate(options.commitUrlFormat, {\n hash: commitHash,\n short: commitShort,\n homepage,\n repository,\n }),\n pr,\n prUrl,\n };\n}\n\nfunction getBuildDatetime(): { date: string; time: string } {\n const date = new Date();\n return {\n date: date.toLocaleDateString(\"sv-SE\"),\n time: date.toLocaleTimeString(\"sv-SE\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n }),\n };\n}\n\n/**\n * Injects the package name and version into the document.\n *\n * @public\n */\nexport function versionProcessor(\n pkg: { name: string; version: string; homepage: string },\n container: string,\n options?: VersionProcessorOptions,\n): Processor {\n const { enabled = true, scm = false } = options ?? {};\n return {\n name: \"version-processor\",\n after: \"generate-docs\",\n async handler(context) {\n if (!enabled) {\n return;\n }\n const scmData = scm ? await getSCMData(pkg, scm) : null;\n const buildData = getBuildDatetime();\n const data: VersionProcessorTemplateData = {\n pkg,\n scm: scmData,\n build: buildData,\n };\n context.addTemplateBlock(container, \"version\", {\n filename: \"partials/version.njk.html\",\n data,\n });\n },\n };\n}\n","import { type ComponentAttribute } from \"../document\";\nimport { type PackageJson } from \"../package-json\";\nimport { type Processor, type ProcessorOptions } from \"../processor\";\nimport {\n fileMatcher,\n getRepositoryUrl,\n gitCommitHash,\n interpolate,\n} from \"../utils\";\n\n/**\n * Options for {@link sourceUrlProcessor#}.\n *\n * @public\n */\nexport interface SourceUrlProcessorOptions extends ProcessorOptions {\n /** List of glob patterns matching source files */\n readonly sourceFiles?: string[];\n\n readonly urlFormat: string;\n\n /** File extension used for finding component by name */\n readonly componentFileExtension?: string;\n}\n\n/**\n * Processor that provide `componentSourceUrl` template function used for resolving\n * component source urls.\n *\n * @public\n */\nexport function sourceUrlProcessor(\n pkg: PackageJson,\n options: SourceUrlProcessorOptions,\n): Processor;\n\n/**\n * Processor that provide `componentSourceUrl` template function used for resolving\n * component source urls.\n *\n * @public\n */\nexport function sourceUrlProcessor(\n options: SourceUrlProcessorOptions,\n): Processor;\n\nexport function sourceUrlProcessor(\n ...args:\n | [PackageJson, SourceUrlProcessorOptions]\n | [SourceUrlProcessorOptions]\n): Processor {\n const pkg = args.length === 2 ? args[0] : {};\n const options = args.length === 2 ? args[1] : args[0];\n const {\n enabled = true,\n sourceFiles = [\"**/*\"],\n urlFormat,\n componentFileExtension = \"vue\",\n } = options;\n\n const repository = getRepositoryUrl(pkg) ?? \"\";\n const matcher = fileMatcher(sourceFiles);\n\n return {\n after: \"generate-docs\",\n name: \"source-url-processor\",\n async handler(context) {\n if (!enabled) {\n return;\n }\n\n const hash = (await gitCommitHash(\"full\")) ?? \"\";\n const short = (await gitCommitHash(\"short\")) ?? \"\";\n\n function componentSourceUrl(\n component: ComponentAttribute,\n ): string | undefined {\n const { source, name } = component;\n const filename = source ?? `${name}.${componentFileExtension}`;\n const path = matcher(filename, \"when generating source url\");\n return interpolate(urlFormat, {\n path,\n hash,\n short,\n repository,\n });\n }\n\n context.setTemplateData(\"componentSourceUrl\", componentSourceUrl);\n },\n };\n}\n","import { type Processor, type ProcessorOptions } from \"../processor\";\n\n/**\n * Processor that displays cookie warning.\n *\n * @public\n */\nexport function cookieProcessor(options: ProcessorOptions = {}): Processor {\n const { enabled = true } = options;\n\n return {\n after: \"generate-docs\",\n name: \"cookie-processor\",\n handler(context) {\n if (!enabled) {\n return;\n }\n\n context.addTemplateBlock(\"body:begin\", \"cookie-warning\", {\n filename: \"partials/cookie-warning.html\",\n });\n },\n };\n}\n","import { matomoProcessor } from \"./matomo\";\nimport {\n cookieProcessor,\n manifestProcessor,\n motdProcessor,\n selectableVersionProcessor,\n sourceUrlProcessor,\n topnavProcessor,\n versionProcessor,\n} from \"./processors\";\n\n/**\n * Used by build-script to find all runtime scripts that needs compilation.\n *\n * @internal\n */\nexport const availableProcessors = [\n cookieProcessor(),\n manifestProcessor(),\n matomoProcessor({ siteId: \"\", trackerUrl: \"\" }),\n motdProcessor({ message: \"\" }),\n selectableVersionProcessor({ name: \"\", version: \"\" }, \"\"),\n sourceUrlProcessor({ urlFormat: \"\" }),\n topnavProcessor(\"\", \"\"),\n versionProcessor({ name: \"\", version: \"\", homepage: \"\" }, \"\"),\n];\n","import { type SourceFiles } from \"./file-reader\";\n\n/**\n * Tiny wrapper to provide type completion for IDE.\n *\n * @public\n */\n/* istanbul ignore next: not needed for coverage */\nexport function defineSources(sources: SourceFiles[]): SourceFiles[] {\n return sources;\n}\n","import { type SourceLocation, codeFrameColumns } from \"@babel/code-frame\";\nimport { closest, distance } from \"fastest-levenshtein\";\nimport { documentAttributeKeys } from \"../document\";\n\ninterface AttributeErrorOptions {\n attribute: string;\n filePath: string;\n content: string;\n}\n\nconst threshold = 3;\n\n/* manual suggestions for attributes where the name is not just a typo */\nconst suggestions: Partial<Record<string, string>> = {\n hidden: \"visible\",\n};\n\n/**\n * Hack to guess the line in the frontmatter block, it makes horrible\n * assumptions and will break down if anything than a simple flat structure is\n * used with attribute validation but it works good enough for now.\n *\n * Nested keys could be fixed by searching recursive though.\n *\n * @internal\n */\nexport function findLocation(\n content: string,\n attr: string,\n): SourceLocation | null {\n const match = /^---\\n(.*?)^---/ms.exec(content);\n if (match?.index !== 0) {\n return null;\n }\n\n /* @todo would be better to actually parse the yaml block to an ast and get the location from there */\n const yaml = match[1];\n const lines = yaml.split(\"\\n\");\n const index = lines.findIndex((it) => it.startsWith(`${attr}:`)); // this makes horrible assumptions and will break\n if (index === -1) {\n return null;\n }\n\n const blockBegin = 2; // the first line of the frontmatter block is at line 2\n return {\n start: { line: index + blockBegin, column: 1 },\n end: { line: index + blockBegin, column: 1 + attr.length },\n };\n}\n\nfunction getSuggestion(attribute: string): [suggestion: string, d: number] {\n /* use manual suggestions if they exists */\n const manual = suggestions[attribute];\n if (manual) {\n return [manual, 0];\n }\n\n /* find typos */\n const closestKey = closest(attribute, documentAttributeKeys);\n const d = distance(attribute, closestKey);\n return [closestKey, d];\n}\n\n/**\n * @internal\n */\nexport class AttributeError extends Error {\n private readonly attribute: string;\n private readonly content: string;\n\n public constructor(options: AttributeErrorOptions) {\n const { attribute, filePath, content } = options;\n super(`Unknown attribute \"${attribute}\" in \"${filePath}\"`);\n this.name = \"AttributeError\";\n this.attribute = attribute;\n this.content = content;\n }\n\n public prettyError(): string {\n const { attribute, content, message } = this;\n\n const [closestMatch, d] = getSuggestion(attribute);\n const suggestion =\n d <= threshold\n ? `Did you mean to use \"${closestMatch}\"?`\n : `Unknown attribute \"${attribute}\"`;\n const location = findLocation(content, attribute);\n if (location) {\n const codeframe = codeFrameColumns(content, location, {\n message: suggestion,\n });\n return [message, \"\", codeframe].join(\"\\n\");\n } else if (d <= threshold) {\n return [message, \"\", suggestion].join(\"\\n\");\n } else {\n return message;\n }\n }\n}\n","import fs from \"node:fs/promises\";\nimport path, { type ParsedPath } from \"node:path\";\nimport fm from \"front-matter\";\nimport {\n type ComponentAttribute,\n type DocumentAttributes,\n type DocumentBadge,\n type DocumentPage,\n documentAttributeKeys,\n} from \"../document\";\nimport { getDocumentOutline, normalizePath } from \"../utils\";\nimport { AttributeError } from \"./attribute-error\";\n\nfunction toArray<T>(value: T | T[]): T[] {\n return Array.isArray(value) ? value : [value];\n}\n\nfunction isIndexPage(parsed: ParsedPath): boolean {\n const folder = path.basename(parsed.dir);\n\n /* if the filename is the same as the folder it lives in this is considered the index page */\n if (parsed.name === folder) {\n return true;\n }\n\n /* if the filename is readme it is considered the index page */\n if (parsed.name.toLowerCase() === \"readme\") {\n return true;\n }\n\n /* if the filename is index it is considered the index page */\n if (parsed.name === \"index\") {\n return true;\n }\n\n return false;\n}\n\nfunction getBadge(attrs: DocumentAttributes): DocumentBadge | undefined {\n if (!attrs.status) {\n return undefined;\n }\n switch (attrs.status) {\n case \"Produktionsklar\":\n return \"success\";\n case \"Deprekerad\":\n case \"Experimentell\":\n return \"error\";\n case \"Preliminär\":\n case \"Draft\":\n case \"Beta\":\n return \"info\";\n default:\n return \"info\";\n }\n}\n\nfunction validateAttributes(\n attributes: DocumentAttributes,\n filePath: string,\n content: string,\n): void {\n /* @todo json schema validation would make more sense but for now this is good enough */\n for (const key of Object.keys(attributes)) {\n if (documentAttributeKeys.includes(key)) {\n continue;\n }\n throw new AttributeError({\n attribute: key,\n filePath,\n content,\n });\n }\n}\n\nfunction normalizeComponent(\n value: string | ComponentAttribute,\n): ComponentAttribute {\n if (typeof value === \"string\") {\n return {\n name: value,\n };\n } else {\n return value;\n }\n}\n\nfunction getComponentAlias(value: string | ComponentAttribute): string {\n const { name } = normalizeComponent(value);\n return `component:${name}`;\n}\n\n/**\n * @internal\n */\nexport function* getDocumentAlias(\n attrs: DocumentAttributes,\n): Generator<string> {\n if (attrs.alias) {\n yield* toArray(attrs.alias);\n }\n if (attrs.component) {\n yield* toArray(attrs.component).map(getComponentAlias);\n }\n}\n\nfunction getComponent(\n attrs: DocumentAttributes,\n): ComponentAttribute[] | undefined {\n if (!attrs.component) {\n return undefined;\n }\n return toArray(attrs.component).map(normalizeComponent);\n}\n\n/**\n * @internal\n */\nexport function parseFile(\n filePath: string,\n basePath: string | undefined,\n content: string,\n): DocumentPage {\n const relative = basePath\n ? path.relative(basePath, normalizePath(filePath))\n : normalizePath(filePath);\n const parsed = path.parse(relative);\n const blocks = fm<DocumentAttributes>(content);\n const attributes = blocks.attributes;\n const isIndex = isIndexPage(parsed);\n const filename = isIndex ? \"index\" : parsed.name.toLowerCase();\n const name = attributes.name ?? parsed.name;\n const urlpath = parsed.dir;\n const outline = getDocumentOutline(blocks.body, \"markdown\");\n const include = attributes.include ?? true;\n\n validateAttributes(attributes, filePath, content);\n\n return {\n kind: \"page\",\n id: `fs:${filePath.replaceAll(\"\\\\\", \"/\")}`,\n name,\n alias: Array.from(getDocumentAlias(attributes)),\n visible: attributes.visible ?? true,\n attributes: {\n title: attributes.title ?? name,\n shortTitle: attributes[\"short-title\"],\n layout: attributes.layout,\n status: attributes.status,\n badge: getBadge(attributes),\n component: getComponent(attributes),\n redirectFrom: toArray(attributes.redirect_from ?? []),\n search: {\n terms: toArray(attributes.search?.terms ?? []),\n },\n sortorder: attributes.sortorder ?? Infinity,\n },\n body: blocks.body,\n outline,\n format: \"markdown\",\n tags: [],\n template: blocks.attributes.layout ?? \"default\",\n fileInfo: {\n path: [\"\", \".\"].includes(urlpath)\n ? \".\"\n : `./${normalizePath(urlpath)}`,\n name: filename,\n fullPath: normalizePath(filePath),\n outputName: include ? `${filename}.html` : false,\n },\n };\n}\n\n/**\n * Read a Markdown file with Front Matter.\n *\n * @public\n */\n/* istanbul ignore next */\nexport async function frontMatterFileReader(\n filePath: string,\n basePath?: string,\n): Promise<DocumentPage[]> {\n const content = await fs.readFile(filePath, \"utf8\");\n const doc = parseFile(filePath, basePath, content);\n return [doc];\n}\n","import { parse as babelParser } from \"@babel/parser\";\nimport traverseModule, { type NodePath } from \"@babel/traverse\";\nimport {\n type CallExpression,\n type Comment,\n type CommentBlock,\n type MemberExpression,\n type Node,\n type ObjectExpression,\n type StringLiteral,\n} from \"@babel/types\";\nimport isCI from \"is-ci\";\nimport {\n type BindingMetadata,\n compileScript,\n compileTemplate,\n parse,\n} from \"vue/compiler-sfc\";\nimport { type TranslationKey } from \"./translation-key\";\n\ntype BabelTraverse = typeof traverseModule;\ntype TranslationParameter = TranslationKey[\"parameters\"][number];\n\nfunction isStringLiteral(node: Node): node is StringLiteral {\n return node.type === \"StringLiteral\";\n}\n\nfunction isObjectExpression(node: Node): node is ObjectExpression {\n return node.type === \"ObjectExpression\";\n}\n\nfunction isDocComment(node: Comment): node is CommentBlock {\n return node.type === \"CommentBlock\";\n}\n\nfunction getDescription(node: CommentBlock | null | undefined): string | null {\n if (!node) {\n return null;\n }\n const text = node.value;\n if (!text.startsWith(\"*\")) {\n return null;\n }\n return (\n node.value\n /* eslint-disable-next-line sonarjs/slow-regex -- technical debt */\n .replaceAll(/^\\s*\\*\\s/gm, \"\") // removes leading whitespace and *\n /* eslint-disable-next-line sonarjs/slow-regex -- technical debt */\n .replaceAll(/\\s+$/gm, \"\") // removes trailing whitespace\n );\n}\n\n/**\n * Takes a member expression and converts it back to string:\n *\n * \"foo.bar()\"\n * \"foo.bar.baz()\"\n * \"this.foo()\"\n * ... etc\n *\n * If the expression contains anything dynamic `null` is returned.\n */\nfunction flattenMemberExpression(node: MemberExpression): string | null {\n const { object, property } = node;\n if (property.type !== \"Identifier\") {\n return null;\n }\n if (object.type === \"Identifier\") {\n return [object.name, property.name].join(\".\");\n }\n if (object.type === \"ThisExpression\") {\n return [\"this\", property.name].join(\".\");\n }\n if (object.type === \"MemberExpression\") {\n const nested = flattenMemberExpression(object);\n if (nested) {\n return [nested, property.name].join(\".\");\n }\n }\n return null;\n}\n\nfunction getParameters(\n node: ObjectExpression | undefined,\n): TranslationParameter[] {\n if (!node) {\n return [];\n }\n const parameters: TranslationParameter[] = [];\n for (const property of node.properties) {\n if (property.type !== \"ObjectProperty\") {\n continue;\n }\n if (property.key.type !== \"Identifier\") {\n continue;\n }\n const docComment = property.leadingComments?.find(isDocComment);\n parameters.push({\n name: property.key.name,\n description: getDescription(docComment),\n });\n }\n return parameters;\n}\n\nfunction isTranslateCall(node: CallExpression): boolean {\n const allowedNames = [\n \"this.$t\", // options api (inside computed, methods, etc)\n \"_ctx.$t\", // options api (template)\n \"$setup.$t\", // script setup or setup in options api\n \"TranslationService.provider.translate\", // props call this directly\n ];\n\n if (node.callee.type === \"MemberExpression\") {\n const fullName = flattenMemberExpression(node.callee);\n return Boolean(fullName && allowedNames.includes(fullName));\n }\n\n /* direct calls in script setup, i.e. from global scope */\n if (node.callee.type === \"Identifier\") {\n return node.callee.name === \"$t\";\n }\n\n return false;\n}\n\nfunction findDocComment(\n path: NodePath,\n node: CallExpression,\n): CommentBlock | null {\n if (node.leadingComments) {\n const doc = node.leadingComments.find(isDocComment);\n if (doc) {\n return doc;\n }\n }\n\n const parent = path.parent;\n if (\n parent.leadingComments &&\n (parent.type === \"ReturnStatement\" || parent.type === \"ObjectProperty\")\n ) {\n const doc = parent.leadingComments.find(isDocComment);\n if (doc) {\n return doc;\n }\n }\n\n /* find comment from variable declaration */\n const grandparent = path.parentPath?.parent;\n if (parent.type === \"VariableDeclarator\" && grandparent?.leadingComments) {\n const doc = grandparent.leadingComments.find(isDocComment);\n if (doc) {\n return doc;\n }\n }\n\n return null;\n}\n\n/**\n * Finds all translation keys from a Vue SFC.\n *\n * This works in three distinctive steps:\n *\n * 1. Parse the SFC to javascript sourcecode.\n * 2. Parse the javascript sourcecode to an AST.\n * 3. Traverse the AST looking for calls to `$t()` (or variants of it).\n *\n * @internal\n */\nexport function findTranslations(\n filename: string,\n content: string,\n): TranslationKey[] {\n const { descriptor, errors } = parse(content, { filename });\n\n if (errors.length > 0) {\n if (isCI) {\n const first = errors[0].message;\n throw new Error(\n `Errors occurred when trying to parse \"${filename}\": ${first}`,\n );\n }\n return [];\n }\n\n const id = \"faux-id\";\n let sourcecode = \"\";\n\n let bindings: BindingMetadata | undefined = undefined;\n if (descriptor.script || descriptor.scriptSetup) {\n const script = compileScript(descriptor, {\n id,\n isProd: false,\n sourceMap: false,\n inlineTemplate: false,\n genDefaultAs: \"exampleComponent\",\n templateOptions: {\n filename,\n source: descriptor.template?.content,\n slotted: descriptor.slotted,\n compilerOptions: {\n comments: true,\n whitespace: \"condense\",\n mode: \"module\",\n },\n },\n });\n bindings = script.bindings;\n sourcecode += `${script.content}\\n\\n`;\n }\n\n if (descriptor.template) {\n const template = compileTemplate({\n id,\n filename,\n source: descriptor.template.content,\n slotted: descriptor.slotted,\n preprocessLang: descriptor.template.lang,\n compilerOptions: {\n bindingMetadata: bindings,\n comments: true,\n whitespace: \"condense\",\n mode: \"module\",\n },\n });\n sourcecode += `${template.code}\\n\\n`;\n }\n\n const ast = babelParser(sourcecode, {\n sourceType: \"module\",\n plugins: [\"typescript\"],\n });\n\n /* hack as @babel/traverse doesnt play nicely with import */\n const traverse: BabelTraverse =\n \"default\" in traverseModule\n ? (traverseModule.default as BabelTraverse)\n : traverseModule;\n\n const result: TranslationKey[] = [];\n traverse(ast, {\n CallExpression(path) {\n const { node } = path;\n if (isTranslateCall(node)) {\n const [name, ...defaultOrParams] = node.arguments;\n const textArgument = defaultOrParams.find(isStringLiteral);\n const paramArgument = defaultOrParams.find(isObjectExpression);\n if (name.type !== \"StringLiteral\") {\n return;\n }\n const defaultTranslation = textArgument\n ? textArgument.value\n : null;\n const docComment = findDocComment(path, node);\n result.push({\n name: name.value,\n defaultTranslation,\n description: getDescription(docComment),\n parameters: getParameters(paramArgument),\n });\n }\n },\n });\n\n return result;\n}\n","import markdownIt from \"markdown-it\";\nimport { htmlencode, slugify } from \"../../utils\";\nimport { type ComponentEvent } from \"./component-api\";\n\nconst md = markdownIt();\nconst EMPTY_CHAR = \"‐\";\nconst EM_DASH = `<span role=\"presentation\">—</span>`;\n\nfunction render(text: string | null): string {\n return text ? md.render(text) : EMPTY_CHAR;\n}\n\nfunction renderInline(text: string | null): string {\n return text ? md.renderInline(text) : EMPTY_CHAR;\n}\n\n/**\n * @internal\n */\nexport function generateEventTable(\n slug: string,\n events: ComponentEvent[],\n): string {\n return /* HTML */ `\n <next-heading-level id=\"${slug}-events\">\n <a class=\"header-anchor\" href=\"#${slug}-events\">Events</a>\n </next-heading-level>\n <dl class=\"docs-api docs-api--events\">\n ${events\n .map((event) => {\n const { name } = event;\n const id = `${slug}-event-${slugify(name)}`;\n const haveProperties = event.properties.length > 0;\n return /* HTML */ `\n <dt>\n <code id=\"${id}\"\n ><a class=\"docs-api__anchor\" href=\"#${id}\"\n ><span class=\"docs-api__name\"\n >${htmlencode(name)}</span\n ></a\n ></code\n >\n ${event.deprecated === null\n ? \"\"\n : `<span class=\"docs-tag docs-tag--deprecated\">Deprecated</span>`}\n </dt>\n <dd>\n ${render(event.description)}\n ${haveProperties\n ? `<p class=\"docs-api__list-title\">Arguments:</p><ul class=\"docs-api__list\">`\n : \"\"}\n ${event.properties\n .map((it) => {\n if (it.description) {\n return `<li><code>${htmlencode(it.name)}: ${htmlencode(it.type)}</code> ${EM_DASH} ${renderInline(it.description)}</li>`;\n } else {\n return `<li><code>${htmlencode(it.name)}: ${htmlencode(it.type)}</code></li>`;\n }\n })\n .join(\"\")}\n ${haveProperties ? `</ul>` : \"\"}\n ${event.deprecated\n ? `<p class=\"docs-api__deprecated docs-deprecated\">Deprecated: ${renderInline(event.deprecated)}</p>`\n : \"\"}\n </dd>\n `;\n })\n .join(\"\")}\n </dl>\n `;\n}\n","import markdownIt from \"markdown-it\";\nimport { htmlencode, slugify } from \"../../utils\";\nimport { type ComponentModel } from \"./component-api\";\n\nconst md = markdownIt();\nconst EMPTY_CHAR = \"‐\";\n\nfunction render(text: string | null): string {\n return text ? md.render(text) : EMPTY_CHAR;\n}\n\nfunction renderInline(text: string | null): string {\n return text ? md.renderInline(text) : EMPTY_CHAR;\n}\n\n/**\n * @internal\n */\nexport function generateModelTable(\n slug: string,\n models: ComponentModel[],\n): string {\n return /* HTML */ `\n <next-heading-level id=\"${slug}-models\">\n <a class=\"header-anchor\" href=\"#${slug}-models\">Models</a>\n </next-heading-level>\n <dl class=\"docs-api docs-api--models\">\n ${models\n .map((model) => {\n const { name } = model;\n const id = `${slug}-model-${slugify(name)}`;\n return /* HTML */ `\n <dt>\n <code id=\"${id}\"\n ><a class=\"docs-api__anchor\" href=\"#${id}\"\n ><span class=\"docs-api__name\"\n >${htmlencode(name)}</span\n >: ${htmlencode(model.type ?? \"unknown\")}</a\n ></code\n >\n ${model.required\n ? \"\"\n : `<span class=\"docs-tag docs-tag--default\">Optional</span>`}\n ${model.deprecated === null\n ? \"\"\n : `<span class=\"docs-tag docs-tag--deprecated\">Deprecated</span>`}\n </dt>\n <dd>\n ${render(model.description)}\n ${model.default\n ? `<p class=\"doc-api__item\">Default: <code>${htmlencode(model.default.value)}</code></p>`\n : \"\"}\n ${model.deprecated\n ? `<p class=\"doc-api__item docs-deprecated\">Deprecated: ${renderInline(model.deprecated)}</p>`\n : \"\"}\n </dd>\n `;\n })\n .join(\"\")}\n </dl>\n `;\n}\n","import markdownIt from \"markdown-it\";\nimport { htmlencode, slugify } from \"../../utils\";\nimport { type ComponentProp } from \"./component-api\";\n\nconst md = markdownIt();\nconst EMPTY_CHAR = \"‐\";\n\nfunction render(text: string | null): string {\n return text ? md.render(text) : EMPTY_CHAR;\n}\n\nfunction renderInline(text: string | null): string {\n return text ? md.renderInline(text) : EMPTY_CHAR;\n}\n\n/**\n * @internal\n */\nexport function generatePropTable(\n slug: string,\n props: ComponentProp[],\n): string {\n return /* HTML */ `\n <next-heading-level id=\"${slug}-props\">\n <a class=\"header-anchor\" href=\"#${slug}-props\">Props</a>\n </next-heading-level>\n <dl class=\"docs-api docs-api--slots\">\n ${props\n .map((prop) => {\n const { name } = prop;\n const id = `${slug}-prop-${slugify(name)}`;\n return /* HTML */ `\n <dt>\n <code id=\"${id}\"\n ><a class=\"docs-api__anchor\" href=\"#${id}\"\n ><span class=\"docs-api__name\"\n >${htmlencode(name)}</span\n >: ${htmlencode(prop.type ?? \"unknown\")}</a\n ></code\n >\n ${prop.required\n ? \"\"\n : `<span class=\"docs-tag docs-tag--default\">Optional</span>`}\n ${prop.deprecated === null\n ? \"\"\n : `<span class=\"docs-tag docs-tag--deprecated\">Deprecated</span>`}\n </dt>\n <dd>\n ${render(prop.description)}\n ${prop.default\n ? `<p class=\"doc-api__item\">Default: <code>${htmlencode(prop.default.value)}</code></p>`\n : \"\"}\n ${prop.deprecated\n ? `<p class=\"doc-api__item docs-deprecated\">Deprecated: ${renderInline(prop.deprecated)}</p>`\n : \"\"}\n </dd>\n `;\n })\n .join(\"\")}\n </dl>\n `;\n}\n","import markdownIt from \"markdown-it\";\nimport { htmlencode, slugify } from \"../../utils\";\nimport { type ComponentSlot } from \"./component-api\";\n\nconst md = markdownIt();\nconst EMPTY_CHAR = \"‐\";\nconst EM_DASH = `<span role=\"presentation\">—</span>`;\n\nfunction render(text: string | null): string {\n return text ? md.render(text) : EMPTY_CHAR;\n}\n\nfunction renderInline(text: string | null): string {\n return text ? md.renderInline(text) : EMPTY_CHAR;\n}\n\n/**\n * @internal\n */\nexport function generateSlotTable(\n slug: string,\n slots: ComponentSlot[],\n): string {\n return /* HTML */ `\n <next-heading-level id=\"${slug}-slots\">\n <a class=\"header-anchor\" href=\"#${slug}-slots\">Slots</a>\n </next-heading-level>\n <dl class=\"docs-api docs-api--slots\">\n ${slots\n .map((slot) => {\n const { name } = slot;\n const id = `${slug}-slot-${slugify(name)}`;\n const haveBindings = slot.bindings.length > 0;\n return /* HTML */ `\n <dt>\n <code id=\"${id}\"\n ><a class=\"docs-api__anchor\" href=\"#${id}\"\n ><span class=\"docs-api__name\"\n >${htmlencode(name)}</span\n ></a\n ></code\n >\n ${slot.deprecated === null\n ? \"\"\n : `<span class=\"docs-tag docs-tag--deprecated\">Deprecated</span>`}\n </dt>\n <dd>\n ${render(slot.description)}\n ${haveBindings\n ? `<p class=\"docs-api__list-title\">Bindings:</p><ul class=\"docs-api__list\">`\n : \"\"}\n ${slot.bindings\n .map((it) => {\n if (it.description) {\n return `<li><code>${htmlencode(it.name)}: ${htmlencode(it.type)}</code> ${EM_DASH} ${renderInline(it.description)}</li>`;\n } else {\n return `<li><code>${htmlencode(it.name)}: ${htmlencode(it.type)}</code></li>`;\n }\n })\n .join(\"\")}\n ${haveBindings ? `</ul>` : \"\"}\n ${slot.deprecated\n ? `<p class=\"docs-api__deprecated docs-deprecated\">Deprecated: ${renderInline(slot.deprecated)}</p>`\n : \"\"}\n </dd>\n `;\n })\n .join(\"\")}\n </dl>\n `;\n}\n","import markdownIt from \"markdown-it\";\nimport { htmlencode, slugify } from \"../../utils\";\nimport { type TranslationKey } from \"./translation-key\";\n\nconst md = markdownIt();\nconst EMPTY_CHAR = \"‐\";\nconst EM_DASH = `<span role=\"presentation\">—</span>`;\n\nfunction render(text: string | null): string {\n return text ? md.render(text) : EMPTY_CHAR;\n}\n\nfunction renderInline(text: string | null): string {\n return text ? md.renderInline(text) : EMPTY_CHAR;\n}\n\n/**\n * @internal\n */\nexport function generateTranslationTable(\n slug: string,\n translations: TranslationKey[],\n): string {\n return /* HTML */ `\n <dl class=\"docs-api docs-api--translation\">\n ${translations\n .map((translation) => {\n const { name } = translation;\n const id = `${slug}-translation-${slugify(name)}`;\n const haveParameters = translation.parameters.length > 0;\n return /* HTML */ `\n <dt>\n <code id=\"${id}\"\n ><a class=\"docs-api__anchor\" href=\"#${id}\"\n ><span class=\"docs-api__name\"\n >${htmlencode(name)}</span\n ></a\n ></code\n >\n </dt>\n <dd>\n ${render(translation.description)}\n ${translation.defaultTranslation\n ? `<p class=\"doc-api__item\">Default: \"${htmlencode(translation.defaultTranslation)}\"</p>`\n : \"\"}\n ${haveParameters\n ? `<p class=\"docs-api__list-title\">Parameters:</p><ul class=\"docs-api__list\">`\n : \"\"}\n ${translation.parameters\n .map((it) => {\n if (it.description) {\n return `<li><code>${htmlencode(it.name)}</code> ${EM_DASH} ${renderInline(it.description)}</li>`;\n } else {\n return `<li><code>${htmlencode(it.name)}</code></li>`;\n }\n })\n .join(\"\")}\n ${haveParameters ? `</ul>` : \"\"}\n </dd>\n `;\n })\n .join(\"\")}\n </dl>\n `;\n}\n","import {\n type EventDescriptor,\n type ParamType,\n type PropDescriptor,\n type SlotDescriptor,\n parse,\n} from \"vue-docgen-api\";\nimport { slugify } from \"../../utils\";\nimport {\n type ComponentAPI,\n type ComponentEvent,\n type ComponentModel,\n type ComponentProp,\n type ComponentSlot,\n} from \"./component-api\";\n\ninterface PropDeprecatedTag {\n description?: string | boolean;\n}\n\ninterface EventDeprecatedTag {\n content?: string | boolean;\n}\n\nfunction getPropSlotDeprecated(\n prop: Pick<PropDescriptor, \"tags\"> | Pick<SlotDescriptor, \"tags\">,\n): string | null {\n const tags = prop.tags;\n if (!tags?.deprecated) {\n return null;\n }\n const tag = tags.deprecated[0] as PropDeprecatedTag | undefined;\n if (!tag?.description) {\n return null;\n }\n if (tag.description === true) {\n return \"\";\n } else {\n return tag.description;\n }\n}\n\nfunction getEventDeprecated(\n event: Pick<EventDescriptor, \"tags\">,\n): string | null {\n const tags = event.tags;\n if (!tags) {\n return null;\n }\n const tag = tags.find((it) => it.title === \"deprecated\") as\n | EventDeprecatedTag\n | undefined;\n if (!tag?.content) {\n return null;\n }\n if (tag.content === true) {\n return \"\";\n } else {\n return tag.content;\n }\n}\n\n/**\n * A name is considered simple if it is suitable to type out as `Something[]`\n * instead of `Array<Something>`.\n *\n * Examples of simple names:\n *\n * - `string[]`\n * - `AwesomeInterface[]`\n *\n * Examples of complex names:\n *\n * - `Array<{ inline: \"interface\" }>`\n */\nfunction isSimpleName(name: string): boolean {\n return /^[\\da-z]+$/i.test(name);\n}\n\n/**\n * Get the type as a string from a prop.\n */\nfunction getPropType(prop: PropDescriptor): string | null {\n const { type } = prop;\n if (!type) {\n return null;\n }\n\n /* for options api the type may contain enum-like values */\n if (type.name === \"string\" && prop.values) {\n return prop.values.map((value) => `\"${value}\"`).join(\" | \");\n }\n\n /* for composition api the type is set to \"Array\" and the `elements`\n * property holds what the array contains (with a single element, if there\n * is multiple array elements it is considered a tuple). */\n if (type.name === \"Array\") {\n const param = type as ParamType;\n const element = param.elements?.[0];\n if (!element) {\n return \"any[]\";\n }\n if (isSimpleName(element.name)) {\n return `${element.name}[]`;\n } else {\n return `Array<${element.name}>`;\n }\n }\n\n /* similar to \"Array\" but this time the `elements` property contains each\n * constituent of the tuple (including zero elements if the type is `[]`) */\n if (type.name === \"tuple\") {\n const param = type as ParamType;\n if (!param.elements) {\n return type.name;\n }\n const constituents = param.elements.map((it) => it.name).join(\", \");\n return `[${constituents}]`;\n }\n\n /* handle union types by joining the constituent types with `|` */\n if (type.name === \"union\") {\n const param = type as ParamType;\n if (!param.elements) {\n return type.name;\n }\n return param.elements.map((it) => it.name).join(\" | \");\n }\n\n return type.name;\n}\n\nfunction translateProps(props: PropDescriptor[]): ComponentProp[] {\n const isRelevant = (prop: PropDescriptor): boolean => {\n return prop.tags?.ignore === undefined;\n };\n return props.filter(isRelevant).map((prop): ComponentProp => {\n const defaultValue = prop.defaultValue\n ? { value: prop.defaultValue.value }\n : null;\n return {\n name: prop.name,\n description: prop.description ?? null,\n type: getPropType(prop),\n required: Boolean(prop.required),\n default: defaultValue,\n deprecated: getPropSlotDeprecated(prop),\n };\n });\n}\n\nfunction translateEvents(events: EventDescriptor[]): ComponentEvent[] {\n const translatedEvents: ComponentEvent[] = [];\n\n for (const event of events) {\n if (event.tags?.find((it) => it.title === \"ignore\")) {\n continue;\n }\n const translatedEvent: ComponentEvent = {\n name: event.name,\n description: event.description ?? null,\n properties: translateEventProperties(event),\n deprecated: getEventDeprecated(event),\n };\n translatedEvents.push(translatedEvent);\n }\n\n return translatedEvents;\n}\n\nfunction translateEventProperties(event: EventDescriptor): Array<{\n name: string;\n type: string;\n description: string | null;\n}> {\n const properties = event.properties;\n const types = event.type ? Object.values(event.type.names) : [];\n\n if (!properties && types.length === 0) {\n return [];\n }\n if (!properties) {\n return [\n { name: \"<anonymous>\", type: String(types), description: null },\n ];\n }\n\n const translatedProperties: Array<{\n name: string;\n type: string;\n description: string | null;\n }> = [];\n\n for (const [i, property] of properties.entries()) {\n const name = property.name ?? \"<anonymous>\";\n const eventType = types[i];\n const hasEventType = Boolean(eventType) && eventType !== \"undefined\";\n const type = hasEventType ? eventType : property.type.names.join(\" \");\n const description =\n typeof property.description === \"string\"\n ? property.description\n : null;\n\n translatedProperties.push({\n name,\n type,\n description,\n });\n }\n\n return translatedProperties;\n}\n\nfunction translateSlots(slots: SlotDescriptor[]): ComponentSlot[] {\n const translatedSlots: ComponentSlot[] = [];\n\n for (const slot of slots) {\n if (slot.tags?.ignore) {\n continue;\n }\n const translatedSlot: ComponentSlot = {\n name: slot.name,\n description: slot.description ?? null,\n bindings: translateSlotBindings(slot),\n deprecated: getPropSlotDeprecated(slot),\n };\n\n translatedSlots.push(translatedSlot);\n }\n\n return translatedSlots;\n}\n\nfunction translateSlotBindings(slot: SlotDescriptor): Array<{\n name: string;\n type: string;\n description: string | null;\n}> {\n if (!slot.bindings) {\n return [];\n }\n\n const translatedBindings: Array<{\n name: string;\n type: string;\n description: string | null;\n }> = [];\n\n for (const binding of slot.bindings) {\n const name = binding.name ?? \"<anonymous>\";\n const type = binding.type?.name ?? \"unknown\";\n const description =\n typeof binding.description === \"string\"\n ? binding.description\n : null;\n translatedBindings.push({\n name,\n type,\n description,\n });\n }\n\n return translatedBindings;\n}\n\n/**\n * Filter v-models by comparing component props and events.\n *\n * @internal\n * @param rawProps - Translated props.\n * @param rawEvents - Translated events.\n * @returns Object with array of only models as well as props and events without models.\n */\nfunction filterModels(\n rawProps: ComponentProp[],\n rawEvents: ComponentEvent[],\n): {\n models: ComponentModel[];\n props: ComponentProp[];\n events: ComponentEvent[];\n} {\n const modelEvents = rawEvents.filter((it) => it.name.startsWith(\"update:\"));\n const rawModels = modelEvents.map((it) => {\n const propName = it.name.slice(\"update:\".length);\n const prop = rawProps.find((it) => it.name === propName);\n if (!prop) {\n return null;\n }\n\n return {\n ...prop,\n name: propName === \"modelValue\" ? \"v-model\" : `v-model:${propName}`,\n };\n });\n\n const models = rawModels.filter((model) => model !== null);\n const events = rawEvents.filter((it) => !it.name.startsWith(\"update:\"));\n const props = rawProps.filter((prop) => {\n const hasModelName = models.some(\n (model) => model.name.slice(\"v-model:\".length) === prop.name,\n );\n return !(hasModelName || prop.name.startsWith(\"modelValue\"));\n });\n\n return { models, props, events };\n}\n\n/**\n * Translates output from a vue component parser to general interface.\n * If the parser is changed the translation functions need to be updated to match its interface.\n *\n * @internal\n */\nexport async function translateAPI(filePath: string): Promise<ComponentAPI> {\n try {\n const api = await parse(filePath);\n const rawProps = api.props ? translateProps(api.props) : [];\n const rawEvents = api.events ? translateEvents(api.events) : [];\n\n const { models, props, events } = filterModels(rawProps, rawEvents);\n const slots = api.slots ? translateSlots(api.slots) : [];\n\n return {\n name: api.displayName,\n slug: slugify(api.displayName),\n models,\n props,\n events,\n slots,\n };\n } catch (err) {\n throw new Error(\n `Failed to generate API description from \"${filePath}\"`,\n { cause: err },\n );\n }\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { type DocumentPartial } from \"../../document\";\nimport { normalizePath } from \"../../utils\";\nimport { type ComponentAPI } from \"./component-api\";\nimport { findTranslations } from \"./find-translations\";\nimport { generateEventTable } from \"./generate-event-table\";\nimport { generateModelTable } from \"./generate-model-table\";\nimport { generatePropTable } from \"./generate-prop-table\";\nimport { generateSlotTable } from \"./generate-slot-table\";\nimport { generateTranslationTable } from \"./generate-translation-table\";\nimport { translateAPI } from \"./translate-api\";\n\nfunction parseAPI(filePath: string, api: ComponentAPI): DocumentPartial {\n const relative = normalizePath(filePath);\n const parsedPath = path.parse(relative);\n const componentName = parsedPath.name;\n\n let html = \"\";\n if (api.models.length > 0) {\n html += generateModelTable(api.slug, api.models);\n }\n if (api.props.length > 0) {\n html += generatePropTable(api.slug, api.props);\n }\n if (api.events.length > 0) {\n html += generateEventTable(api.slug, api.events);\n }\n if (api.slots.length > 0) {\n html += generateSlotTable(api.slug, api.slots);\n }\n\n return {\n kind: \"partial\",\n id: `fs:${filePath.replaceAll(\"\\\\\", \"/\")}:api`,\n name: `vue:${componentName}`,\n alias: [],\n body: html,\n format: \"html\",\n fileInfo: {\n fullPath: filePath,\n },\n };\n}\n\nasync function parseTranslation(\n slug: string,\n filePath: string,\n): Promise<DocumentPartial> {\n const relative = normalizePath(filePath);\n const parsedPath = path.parse(relative);\n const componentName = parsedPath.name;\n const content = await fs.readFile(filePath, \"utf8\");\n return {\n kind: \"partial\",\n id: `fs:${filePath.replaceAll(\"\\\\\", \"/\")}:translation`,\n name: `translation:${componentName}`,\n alias: [],\n get body() {\n const translations = findTranslations(filePath, content);\n return generateTranslationTable(slug, translations);\n },\n format: \"html\",\n fileInfo: {\n fullPath: filePath,\n },\n };\n}\n\n/**\n * Generate API documentation from a Vue SFC.\n *\n * @public\n */\nexport async function vueFileReader(\n filePath: string,\n): Promise<DocumentPartial[]> {\n const translated = await translateAPI(filePath);\n const vueApi = parseAPI(filePath, translated);\n const vueTranslation = await parseTranslation(translated.slug, filePath);\n return [vueApi, vueTranslation];\n}\n","import { glob } from \"glob\";\nimport { type Document } from \"../document\";\nimport { type Processor } from \"../processor\";\nimport { difference } from \"../utils\";\nimport { type SourceFiles } from \"./source-files\";\n\nasync function globAll(\n pattern: string | string[] | undefined,\n): Promise<Set<string>> {\n if (!pattern) {\n return new Set();\n }\n\n if (!Array.isArray(pattern)) {\n return globAll([pattern]);\n }\n\n const results = await Promise.all(\n pattern.map((it) => glob(it, { nodir: true })),\n );\n return new Set(results.flat());\n}\n\nasync function getDocumentsForSource(src: SourceFiles): Promise<Document[]> {\n const { transform } = src;\n const include = await globAll(src.include);\n const exclude = await globAll(src.exclude);\n const files = Array.from(difference(include, exclude));\n const promises = files.map(async (it) => {\n const docs = await src.fileReader(it, src.basePath);\n if (transform) {\n return docs.map((it) => transform(it));\n } else {\n return docs;\n }\n });\n const docs = await Promise.all(promises);\n return docs.flat();\n}\n\nasync function getAllDocuments(\n sourceFiles: SourceFiles[],\n): Promise<Document[]> {\n const result = await Promise.all(sourceFiles.map(getDocumentsForSource));\n return result.flat();\n}\n\n/**\n * @internal\n */\nexport function fileReaderProcessor(sourceFiles: SourceFiles[]): Processor {\n return {\n stage: \"generate-docs\",\n name: \"file-reader-processor\",\n async handler(context) {\n const result = await getAllDocuments(sourceFiles);\n context.addDocument(result);\n context.log(result.length, \"documents found\");\n },\n };\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { type DocumentAttributes, type DocumentPage } from \"../document\";\nimport { normalizePath } from \"../utils\";\n\n/**\n * @internal\n */\nexport function parseFile(\n filePath: string,\n basePath: string | undefined,\n content: string,\n): DocumentPage {\n const attributes = JSON.parse(content) as DocumentAttributes;\n const { title, href } = attributes;\n\n if (!title) {\n throw new Error(`No title property set in \"${filePath}\"`);\n }\n\n const relative = basePath\n ? path.relative(basePath, normalizePath(filePath))\n : normalizePath(filePath);\n const parsed = path.parse(relative);\n const filename = parsed.name.toLowerCase();\n const name = parsed.name;\n const urlpath = parsed.dir;\n return {\n kind: \"page\",\n id: `nav:${filePath.replaceAll(\"\\\\\", \"/\")}`,\n name,\n alias: [],\n visible: attributes.href ? true : false,\n attributes: {\n title,\n href,\n sortorder: attributes.sortorder ?? Infinity,\n redirectFrom: [],\n search: { terms: [] },\n },\n body: content,\n outline: [],\n format: \"json\",\n tags: [],\n template: \"default\",\n fileInfo: {\n path: [\"\", \".\"].includes(urlpath)\n ? \".\"\n : `./${normalizePath(urlpath)}`,\n name: filename,\n fullPath: normalizePath(filePath),\n outputName: false,\n },\n };\n}\n\n/**\n * Read a JSON file with arbitrary navigation entries.\n *\n * @public\n */\n/* istanbul ignore next */\nexport async function navigationFileReader(\n filePath: string,\n basePath?: string,\n): Promise<DocumentPage[]> {\n const content = await fs.readFile(filePath, \"utf8\");\n const doc = parseFile(filePath, basePath, content);\n return [doc];\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { moduleImporter } from \"@forsakringskassan/sass-module-importer\";\nimport { NodePackageImporter, compileStringAsync } from \"sass\";\n\n/**\n * @public\n * @param dst - Destination filename.\n * @param style - Inline SCSS string.\n */\nexport async function compileSassString(\n dst: string,\n style: string,\n): Promise<void> {\n const result = await compileStringAsync(style, {\n style: \"expanded\",\n importers: [new NodePackageImporter(), moduleImporter()],\n });\n await fs.mkdir(path.dirname(dst), { recursive: true });\n await fs.writeFile(dst, result.css, \"utf8\");\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path/posix\";\nimport { compileSassString } from \"../sass\";\nimport { getFingerprint, getIntegrity } from \"../utils\";\nimport { type AssetInfo } from \"./asset-info\";\n\n/**\n * @internal\n */\nexport async function compileStyle(\n assetFolder: string,\n name: string,\n src: string | URL,\n): Promise<AssetInfo> {\n try {\n const outfile = path.join(\"temp\", `asset-${name}.css`);\n const source = await fs.readFile(src, \"utf8\");\n await compileSassString(outfile, source);\n const content = await fs.readFile(outfile, \"utf8\");\n const fingerprint = getFingerprint(content);\n const integrity = getIntegrity(content);\n const filename = `${name}-${fingerprint}.css`;\n const dst = path.join(assetFolder, filename);\n await fs.rename(outfile, dst);\n const stat = await fs.stat(dst);\n return {\n name,\n filename,\n publicPath: `./assets/${filename}`,\n integrity,\n format: \"stylesheet\",\n size: stat.size,\n type: \"css\",\n };\n } catch (err) {\n /* eslint-disable-next-line no-console -- expected to log */\n console.error(err);\n throw new Error(`Failed to compile style \"${name}\"`);\n }\n}\n","import { type Processor } from \"../processor\";\nimport { formatSize, serializeAttrs } from \"../utils\";\nimport { type CompileOptions } from \"./compile-options\";\nimport { compileStyle } from \"./compile-style\";\n\n/**\n * @internal\n */\nexport interface CSSAsset {\n name: string;\n src: string | URL;\n options: CompileOptions;\n}\n\nfunction byPriority(\n { options: a }: CSSAsset,\n { options: b }: CSSAsset,\n): number {\n return b.priority - a.priority;\n}\n\n/**\n * @internal\n */\nexport function cssAssetProcessor(\n assetFolder: string,\n assets: CSSAsset[],\n): Processor {\n return {\n name: \"css-asset-processor\",\n after: \"assets\",\n async handler(context) {\n const assetInfo = context.getTemplateData(\"assets\", {});\n const head = context.getTemplateData(\"injectHead\", []);\n const body = context.getTemplateData(\"injectBody\", []);\n for (const asset of assets.toSorted(byPriority)) {\n const info = await compileStyle(\n assetFolder,\n asset.name,\n asset.src,\n );\n const attrs = serializeAttrs(asset.options.attributes);\n const inject = { ...info, attrs: Array.from(attrs).join(\" \") };\n assetInfo[asset.name] = {\n ...info,\n importmap: false,\n };\n switch (asset.options.appendTo) {\n case \"none\":\n break;\n case \"head\":\n head.push(inject);\n break;\n case \"body\":\n body.push(inject);\n break;\n }\n context.log(info.filename, formatSize(info.size));\n }\n },\n };\n}\n","import {\n type BuildOptions,\n type BuildResult,\n build as originalBuild,\n} from \"esbuild\";\n\n/**\n * Wraps the call to esbuild so we can mock it in test-cases. We don't have a\n * proper working Jest ESM configuration yet so constructs such as\n * `jest.mock(..)` does not work.\n *\n * @internal\n */\nexport function esbuild(options: BuildOptions): Promise<BuildResult> {\n return originalBuild(options);\n}\n","import nodeFS from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { type BuildOptions } from \"esbuild\";\nimport { tsconfigPath as tsconfig } from \"../tsconfig-path\";\nimport { getFingerprint, getIntegrity } from \"../utils\";\nimport { type VendorDefinition } from \"../vendor\";\nimport { type AssetInfo } from \"./asset-info\";\nimport { esbuild } from \"./esbuild-wrapper\";\n\n/**\n * @internal\n */\nexport interface FSLike {\n mkdir: typeof nodeFS.mkdir;\n readFile: typeof nodeFS.readFile;\n rename: typeof nodeFS.rename;\n stat: typeof nodeFS.stat;\n}\n\n/**\n * @internal\n */\nexport interface CompileScriptOptions {\n assetFolder: string;\n name: string;\n src: string | URL;\n assets: string[];\n vendor: VendorDefinition[];\n buildOptions: BuildOptions;\n fs?: FSLike;\n}\n\nfunction toExternalVendor(vendor: VendorDefinition): string {\n return typeof vendor === \"string\" ? vendor : vendor.package;\n}\n\n/**\n * @internal\n */\nexport async function compileScript(\n options: CompileScriptOptions,\n): Promise<AssetInfo> {\n const {\n assetFolder,\n name,\n src,\n assets,\n vendor,\n buildOptions,\n fs = nodeFS,\n } = options;\n\n const iconLib = process.env.DOCS_ICON_LIB ?? \"@fkui/icon-lib-default\";\n\n try {\n const entryPoints = [src instanceof URL ? fileURLToPath(src) : src];\n const outfile = path.join(\"temp\", `asset-${name}.js`);\n const external = [...assets, ...vendor.map(toExternalVendor)];\n const format = buildOptions.format ?? \"esm\";\n await esbuild({\n entryPoints,\n outfile,\n bundle: true,\n format,\n platform: \"browser\",\n external,\n tsconfig,\n ...buildOptions,\n define: {\n \"process.env.DOCS_ICON_LIB\": JSON.stringify(iconLib),\n ...buildOptions.define,\n },\n });\n const content = await fs.readFile(outfile, \"utf8\");\n const fingerprint = getFingerprint(content);\n const integrity = getIntegrity(content);\n const filename = `${name}-${fingerprint}.js`;\n const dst = path.join(assetFolder, filename);\n await fs.mkdir(path.dirname(dst), { recursive: true });\n await fs.rename(outfile, dst);\n const stat = await fs.stat(dst);\n return {\n name,\n filename,\n publicPath: `./assets/${filename}`,\n integrity,\n format,\n size: stat.size,\n type: \"js\",\n };\n } catch (err) {\n const reason = err instanceof Error ? err.message : String(err);\n throw new Error(`Failed to compile script \"${name}\": ${reason}`);\n }\n}\n","import { type BuildOptions } from \"esbuild\";\nimport { type Processor } from \"../processor\";\nimport { formatSize, serializeAttrs } from \"../utils\";\nimport { type VendorDefinition } from \"../vendor\";\nimport { type CompileOptions } from \"./compile-options\";\nimport { compileScript } from \"./compile-script\";\n\n/**\n * @internal\n */\nexport interface JSAsset {\n name: string;\n src: string | URL;\n options: CompileOptions;\n buildOptions: Pick<BuildOptions, \"define\">;\n}\n\nfunction byPriority({ options: a }: JSAsset, { options: b }: JSAsset): number {\n return b.priority - a.priority;\n}\n\nfunction isExternal(asset: JSAsset): boolean {\n return asset.options.appendTo === \"none\";\n}\n\n/**\n * @internal\n */\nexport function jsAssetProcessor(\n assetFolder: string,\n assets: JSAsset[],\n vendor: VendorDefinition[],\n): Processor {\n const externalAssets = assets.filter(isExternal).map((it) => it.name);\n return {\n name: \"js-asset-processor\",\n after: \"assets\",\n async handler(context) {\n const assetInfo = context.getTemplateData(\"assets\", {});\n const head = context.getTemplateData(\"injectHead\", []);\n const body = context.getTemplateData(\"injectBody\", []);\n for (const asset of assets.toSorted(byPriority)) {\n const info = await compileScript({\n assetFolder,\n name: asset.name,\n src: asset.src,\n assets: externalAssets,\n vendor,\n buildOptions: asset.buildOptions,\n });\n const attrs = serializeAttrs(asset.options.attributes);\n const inject = { ...info, attrs: Array.from(attrs).join(\" \") };\n assetInfo[asset.name] = {\n ...info,\n importmap: externalAssets.includes(asset.name),\n };\n switch (asset.options.appendTo) {\n case \"none\":\n break;\n case \"head\":\n head.push(inject);\n break;\n case \"body\":\n body.push(inject);\n break;\n }\n context.log(info.filename, formatSize(info.size));\n }\n },\n };\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path/posix\";\nimport { type Processor } from \"../processor\";\nimport { type ResourceTask } from \"./resource-task\";\n\n/**\n * @internal\n */\nexport function staticResourcesProcessor(\n assetFolder: string,\n resources: ResourceTask[],\n): Processor {\n return {\n name: \"static-resources-processor\",\n after: \"render\",\n async handler(context) {\n for (const resource of [...resources, ...context.resources]) {\n const src = resource.from;\n const dst = path.join(assetFolder, resource.to);\n await fs.cp(src, dst, {\n recursive: true,\n });\n context.log(src, \"->\", dst);\n }\n },\n };\n}\n","import { type Processor, type ProcessorRuntime } from \"./processor\";\n\n/**\n * Derive default runtime script name from processor.\n *\n * @internal\n */\nexport function processorRuntimeName(\n processor: Processor,\n runtime: ProcessorRuntime,\n): string {\n const { name } = processor;\n const base = name.replace(/-processor/, \"\");\n return `processors/${runtime.name ?? base}`;\n}\n","import { existsSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { type Generator } from \"./generator\";\nimport { type Processor } from \"./processor\";\nimport { processorRuntimeName } from \"./processor-runtime-name\";\n\n/**\n * Queues all runtime scripts from enabled processors to be compiled.\n *\n * @internal\n */\nexport function compileProcessorRuntime(\n generator: Pick<Generator, \"compileScript\">,\n distDir: string,\n processors: Processor[],\n): void {\n for (const processor of processors) {\n if (processor.enabled === false) {\n continue;\n }\n const { runtime } = processor;\n for (const entry of runtime ?? []) {\n const assetName = [\n \"processors\",\n processor.name.replace(/-processor/, \"\"),\n entry.name ?? path.parse(entry.src).name,\n ].join(\"/\");\n const name = processorRuntimeName(processor, entry);\n const bundled = new URL(`${name}.mjs`, distDir);\n const scriptPath = existsSync(bundled) ? bundled : entry.src;\n generator.compileScript(\n assetName,\n scriptPath,\n {\n appendTo: \"body\",\n priority: 50,\n },\n {\n ...entry.buildOptions,\n },\n );\n }\n }\n}\n","import { isDocumentPage } from \"../document\";\nimport { type Processor } from \"../processor\";\nimport { generateNavtree } from \"./generate-navtree\";\n\nexport function navigationProcessor(): Processor {\n return {\n stage: \"generate-nav\",\n name: \"navigation-processor\",\n handler(context) {\n const pages = context.docs.filter(isDocumentPage);\n const navtree = generateNavtree(pages);\n context.setTopNavigation(navtree);\n context.setSideNavigation(navtree);\n },\n };\n}\n","import {\n type NavigationSection,\n isNavigationSection,\n} from \"./generate-navtree\";\n\n/**\n * @internal\n */\nexport function sortNavigationTree(tree: NavigationSection): void {\n tree.children.sort((a, b) => {\n if (a.sortorder < b.sortorder) {\n return -1;\n } else if (a.sortorder > b.sortorder) {\n return 1;\n }\n\n const titleA = a.title.toUpperCase();\n const titleB = b.title.toUpperCase();\n if (titleA < titleB) {\n return -1;\n }\n if (titleA > titleB) {\n return 1;\n }\n return 0;\n });\n for (const child of tree.children) {\n if (isNavigationSection(child)) {\n sortNavigationTree(child);\n }\n }\n}\n","import { fileURLToPath } from \"node:url\";\n\nconst templateUrl = new URL(\"../templates\", import.meta.url);\nexport const templateDirectory = fileURLToPath(templateUrl);\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { type DocumentPage, type FileInfo } from \"../document\";\nimport { templateDirectory } from \"./template-directory\";\n\nclass MissingTemplateError extends Error {\n private searchDir: string[];\n\n public constructor(\n fileInfo: FileInfo,\n template: string,\n format: string,\n searchDir: string[],\n ) {\n const message = `Failed to find template \"${template}\" (${format} format) when rendering \"${fileInfo.fullPath}\"`;\n super(message);\n this.name = \"MissingTemplateError\";\n this.searchDir = searchDir;\n }\n\n public prettyError(): string {\n return [\n this.message,\n \"\",\n \"Searched the following directories:\",\n ...this.searchDir.map((it) => ` - ${it}`),\n ].join(\"\\n\");\n }\n}\n\nconst cache = new Map<string, string>();\n\nfunction cacheKey(layout: string, extension: \"html\" | \"json\"): string {\n return [layout, extension].join(\"|\");\n}\n\n/**\n * @internal\n * @param from - Which document requested this template (for logging/debugging).\n */\nexport function findTemplate(\n folders: string[],\n from: FileInfo,\n doc: DocumentPage,\n): string;\nexport function findTemplate(\n folders: string[],\n from: FileInfo,\n layout: string,\n format?: \"html\" | \"json\",\n): string;\nexport function findTemplate(\n folders: string[],\n from: FileInfo,\n src: DocumentPage | string,\n format?: \"html\" | \"json\",\n): string {\n let layout: string;\n\n if (typeof src === \"string\") {\n layout = src;\n format ??= \"html\";\n } else {\n layout = src.template;\n format = src.format !== \"json\" ? \"html\" : \"json\";\n }\n\n const key = cacheKey(layout, format);\n const cached = cache.get(key);\n if (cached) {\n return cached;\n }\n\n folders = [...folders, templateDirectory];\n const template = `${layout}.template.${format}`;\n const searchPaths = folders.map((it) => {\n return path.join(it, template);\n });\n const found = searchPaths.find((it) => fs.existsSync(it));\n if (!found) {\n throw new MissingTemplateError(from, template, format, folders);\n }\n\n cache.set(key, template);\n return template;\n}\n","import { existsSync } from \"node:fs\";\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { type Callback, type ILoaderAsync, type LoaderSource } from \"nunjucks\";\nimport { templateDirectory } from \"./template-directory\";\n\ninterface ResolvedTemplate {\n filePath: string;\n content: string;\n}\n\n/**\n * @internal\n */\nexport class TemplateLoader implements ILoaderAsync {\n public readonly async = true as const;\n private readonly folders: string[];\n private readonly templateCache: Map<string, ResolvedTemplate>;\n\n public constructor(folders: string[] = []) {\n this.folders = [...folders, templateDirectory];\n this.templateCache = new Map();\n }\n\n /* eslint-disable-next-line @typescript-eslint/no-misused-promises -- technical debt */\n public async getSource(\n name: string,\n callback: Callback<Error, LoaderSource>,\n ): Promise<void> {\n try {\n const { content, filePath } = await this.resolveTemplate(name);\n callback(null, {\n src: content,\n path: filePath,\n noCache: false,\n });\n } catch (err: unknown) {\n if (err instanceof Error) {\n callback(err, null);\n } else {\n callback(new Error(String(err)), null);\n }\n }\n }\n\n public hasTemplate(name: string): boolean {\n const { templateCache } = this;\n const cached = templateCache.get(name);\n if (cached) {\n return true;\n }\n const filePath = this.findTemplateFile(name);\n return Boolean(filePath);\n }\n\n private async resolveTemplate(name: string): Promise<ResolvedTemplate> {\n const { templateCache, folders } = this;\n const cached = templateCache.get(name);\n if (cached) {\n return cached;\n }\n const filePath = this.findTemplateFile(name);\n if (!filePath) {\n const searched = folders.map((it) => ` - \"${it}\"`).join(\"\\n\");\n const message = `Failed to resolve template \"${name}\", searched in:\n\n${searched}\n\nMake sure the name is correct and the template file exists in one of the listed directories.`;\n throw new Error(message);\n }\n const content = await fs.readFile(filePath, \"utf8\");\n const resolved = { content, filePath };\n templateCache.set(name, resolved);\n return resolved;\n }\n\n private findTemplateFile(name: string): string | undefined {\n const { folders } = this;\n const searchPaths = folders.map((it) => path.join(it, name));\n return searchPaths.find((it) => existsSync(it));\n }\n}\n","const messageRegex = /^\\([^)]+\\) \\[Line \\d+, Column \\d+]\\n\\s+Error: (.*)$/;\n\n/**\n * Extracts the actual error message from a nunjucks render error.\n *\n * The error instance should have properties such as `.cause` but these are lost\n * somewhere so this serves as a workaround.\n *\n * @internal\n */\nexport function getActualMessage(message: string): string {\n const match = messageRegex.exec(message);\n if (match) {\n return match[1].trim();\n } else {\n return message;\n }\n}\n\n/**\n * @internal\n */\nexport class TemplateRenderError extends Error {\n private readonly filename: string;\n\n public constructor(message: string, filename: string) {\n super(getActualMessage(message));\n this.name = \"TemplateRenderError\";\n this.filename = filename;\n }\n\n public prettyError(): string {\n return [\n \"\",\n `An error occured when rendering a document.`,\n ` Document: \"${this.filename}\".`,\n ` Message: ${this.message}`,\n \"\",\n \"---\",\n \"\",\n this.stack,\n ].join(\"\\n\");\n }\n}\n","import { copyFileSync, existsSync, readFileSync } from \"node:fs\";\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport pathPosix from \"node:path/posix\";\nimport { promisify } from \"node:util\";\nimport { Worker } from \"node:worker_threads\";\nimport nunjucks from \"nunjucks\";\nimport { type AssetInfo } from \"../assets\";\nimport { type Document, type DocumentPage, type FileInfo } from \"../document\";\nimport {\n type CompileMessage,\n type CompileResponse,\n type ExampleCompileTask,\n type ExampleStandaloneTask,\n generateExample,\n workerUrl as exampleWorkerUrl,\n} from \"../examples\";\nimport {\n type NavigationLeaf,\n type NavigationNode,\n type NavigationSection,\n isNavigationSection,\n sortNavigationTree,\n} from \"../navigation\";\nimport { getFingerprint, getOutputFilePath } from \"../utils\";\nimport { type VendorAsset } from \"../vendor\";\nimport { createMarkdownRenderer } from \"./create-markdown-renderer\";\nimport * as filter from \"./filter\";\nimport { findTemplate } from \"./find-template\";\nimport { type RenderOptions } from \"./render-options\";\nimport { TemplateLoader } from \"./template-loader\";\nimport { TemplateRenderError } from \"./template-render-error\";\n\ninterface ActiveNavigationLeaf extends NavigationLeaf {\n active: boolean;\n}\n\ninterface ActiveNavigationSection extends NavigationSection {\n active: boolean;\n}\n\ntype ActiveNavigationNode = ActiveNavigationLeaf | ActiveNavigationSection;\n\nconst exampleWorker = new Worker(exampleWorkerUrl);\nexampleWorker.unref();\n\nlet taskRef = 1;\nlet loader: TemplateLoader | null = null;\n\nfunction haveOutputFile(\n fileInfo: FileInfo,\n): fileInfo is FileInfo & { outputName: string } {\n return fileInfo.outputName !== false;\n}\n\nfunction fillActiveNavigation(\n doc: Document,\n node: NavigationSection,\n): ActiveNavigationSection;\nfunction fillActiveNavigation(\n doc: Document,\n node: NavigationLeaf,\n): ActiveNavigationLeaf;\nfunction fillActiveNavigation(\n doc: Document,\n node: NavigationNode,\n): ActiveNavigationNode;\nfunction fillActiveNavigation(\n doc: Document,\n node: NavigationNode,\n): ActiveNavigationNode {\n if (isNavigationSection(node)) {\n const children = node.children.map((it) =>\n fillActiveNavigation(doc, it),\n );\n const active = children.some((it) => it.active);\n return {\n ...node,\n active,\n children,\n };\n } else {\n const active = doc.id === node.id;\n return {\n ...node,\n active,\n };\n }\n}\n\nfunction findSidenav(\n doc: DocumentPage,\n tree: NavigationSection,\n): ActiveNavigationNode | undefined {\n const { path, name } = doc.fileInfo;\n const category = path === \".\" ? name : path.split(\"/\")[1];\n const sidenav = tree.children\n .filter(isNavigationSection)\n .find((it) => it.key === `./${category}`);\n if (sidenav) {\n return fillActiveNavigation(doc, sidenav);\n }\n}\n\nfunction cache(\n cacheFolder: string,\n outputFolder: string,\n): (it: { outputFile: string }) => boolean {\n return (it: { outputFile: string }) => {\n const cacheFile = path.join(cacheFolder, it.outputFile);\n const outputFile = path.join(outputFolder, it.outputFile);\n /* @todo technical debt: shame on me, doing side-effects in a filter function :( and not even async */\n if (existsSync(cacheFile)) {\n copyFileSync(cacheFile, outputFile);\n return false;\n } else {\n return true;\n }\n };\n}\n\nasync function compileExamples(options: {\n fileInfo: FileInfo;\n cacheFolder: string;\n outputFolder: string;\n tasks: ExampleCompileTask[];\n assets: AssetInfo[];\n vendors: VendorAsset[];\n}): Promise<void> {\n const { fileInfo, tasks, assets, vendors } = options;\n if (tasks.length === 0) {\n return;\n }\n\n const external = [\n ...assets.map((it) => it.name),\n ...vendors.map((it) => it.package),\n ];\n const cacheFolder = path.posix.join(options.cacheFolder, fileInfo.path);\n const outputFolder = path.posix.join(options.outputFolder, fileInfo.path);\n const cacheMiss = cache(cacheFolder, outputFolder);\n const dirtyTasks = tasks.filter(cacheMiss);\n\n /* skip forking if there are no tasks to be run anyway */\n if (dirtyTasks.length === 0) {\n return;\n }\n\n const ref = taskRef++;\n const message: CompileMessage = {\n message: \"compile\",\n ref,\n outputFolder,\n external,\n tasks: dirtyTasks,\n };\n\n return new Promise((resolve, reject) => {\n function onmessage(message: CompileResponse<number>): void {\n if (message.ref === ref) {\n exampleWorker.off(\"message\", onmessage);\n exampleWorker.off(\"error\", onerror);\n resolve();\n }\n }\n\n function onerror(err: Error): void {\n reject(err);\n }\n\n exampleWorker.on(\"message\", onmessage);\n exampleWorker.on(\"error\", onerror);\n exampleWorker.postMessage(message);\n });\n}\n\nasync function compileStandalones(options: {\n fileInfo: FileInfo;\n cacheFolder: string;\n outputFolder: string;\n templateFolders: string[];\n tasks: ExampleStandaloneTask[];\n renderTemplate(this: void, name: string, context: object): Promise<string>;\n templateData: Record<string, unknown>;\n}): Promise<void> {\n const { fileInfo, tasks, renderTemplate, templateData, templateFolders } =\n options;\n if (tasks.length === 0) {\n return;\n }\n\n const cacheFolder = path.posix.join(options.cacheFolder, fileInfo.path);\n const outputFolder = path.posix.join(options.outputFolder, fileInfo.path);\n const cacheMiss = cache(cacheFolder, outputFolder);\n const dirtyTasks = tasks.filter(cacheMiss);\n\n const standaloneTemplate = findTemplate(\n templateFolders,\n fileInfo,\n \"example\",\n );\n for (const task of dirtyTasks) {\n const outputFile = path.join(outputFolder, task.outputFile);\n const content = await renderTemplate(standaloneTemplate, {\n ...templateData,\n content: task.content,\n });\n await fs.writeFile(outputFile, content, \"utf8\");\n }\n}\n\n/**\n * @internal\n */\nexport function createTemplateLoader(folders: string[]): TemplateLoader {\n loader = new TemplateLoader(folders);\n return loader;\n}\n\nfunction stripPrettierComments(content: string): string {\n /* eslint-disable-next-line sonarjs/slow-regex -- technical debt */\n return content.replaceAll(/\\s*<!-- prettier-ignore -->\\s*/gm, \"\");\n}\n\n/**\n * @internal\n */\nexport async function render(\n doc: DocumentPage,\n docs: Document[],\n nav: { topnav: NavigationSection; sidenav: NavigationSection },\n vendors: VendorAsset[],\n options: RenderOptions,\n): Promise<string | null> {\n const { fileInfo } = doc;\n const { i18n, outputFolder, cacheFolder, templateFolders, fileMatcher } =\n options;\n\n /* skip rendering files which have no output */\n if (!haveOutputFile(fileInfo)) {\n return null;\n }\n\n /* ensure output directory exists */\n const dst = getOutputFilePath(outputFolder, fileInfo);\n const mkdir = fs.mkdir(path.dirname(dst), { recursive: true });\n\n const topnav = nav.topnav;\n const sidenav = findSidenav(doc, nav.sidenav);\n if (sidenav && isNavigationSection(sidenav)) {\n sortNavigationTree(sidenav);\n }\n\n const njk = new nunjucks.Environment(loader, { autoescape: false });\n const asyncRender = promisify<string, object, string>(njk.render); // eslint-disable-line @typescript-eslint/unbound-method -- technical debt */\n const renderTemplate = asyncRender.bind(njk);\n const template = findTemplate(templateFolders, doc.fileInfo, doc);\n const templateData = {\n ...options.templateData,\n $t: i18n.t,\n site: options.site,\n doc,\n get layoutClass() {\n return `layout--${doc.template.replaceAll(\".\", \"--\")}`;\n },\n topnav,\n rootUrl(doc: DocumentPage) {\n const { fileInfo } = doc;\n const relative = pathPosix.relative(fileInfo.path, \".\");\n return relative !== \"\" ? relative : \".\";\n },\n sidenav,\n vendors,\n importmap(doc: DocumentPage): string {\n const assets = Object.values(templateData.assets).filter(\n (it) => it.importmap,\n );\n const imports = Object.fromEntries([\n ...vendors.map((it): [PropertyKey, string] => {\n return [it.package, filter.relative(it.publicPath, doc)];\n }),\n ...assets.map((it): [PropertyKey, string] => {\n return [it.name, filter.relative(it.publicPath, doc)];\n }),\n ]);\n const integrity = Object.fromEntries([\n ...vendors.map((it): [PropertyKey, string] => {\n return [filter.relative(it.publicPath, doc), it.integrity];\n }),\n ...assets.map((it): [PropertyKey, string] => {\n return [filter.relative(it.publicPath, doc), it.integrity];\n }),\n ]);\n const importmap = { imports, integrity };\n return JSON.stringify(importmap, null, 2);\n },\n };\n\n const generatedExamples: ExampleCompileTask[] = [];\n const generatedStandalone: ExampleStandaloneTask[] = [];\n\n const markdownRenderer = createMarkdownRenderer({\n docs,\n generateExample({ source, language, filename, tags }) {\n const example = generateExample({\n source,\n language,\n filename,\n parent: fileInfo.fullPath,\n setupPath: options.setupPath,\n exampleFolders: options.exampleFolders,\n tags,\n fileMatcher,\n });\n\n if (example.output) {\n const { dir, name } = path.parse(example.output);\n if (example.task) {\n generatedExamples.push(example.task);\n }\n generatedStandalone.push({\n outputFile: path.join(dir, `${name}.html`),\n content: example.markup,\n });\n }\n\n return example;\n },\n getImportedSource(filename) {\n const context = `when importing example from \"${fileInfo.fullPath}\"`;\n const match = fileMatcher(filename, context);\n return readFileSync(match, \"utf8\");\n },\n addResource(dst, src) {\n if (!existsSync(src)) {\n throw new Error(`Failed to find image \"${src}\"`);\n }\n options.addResource(dst, src);\n },\n handleSoftError(error) {\n /* rethrow error so we get hard fails on everything */\n throw error;\n },\n messagebox: options.markdown.messagebox,\n });\n\n njk.addFilter(\"marked\", (content: string) => {\n return markdownRenderer.render(doc, content);\n });\n njk.addFilter(\"json\", filter.json);\n njk.addFilter(\"dump\", filter.dump);\n njk.addFilter(\"relative\", filter.relative);\n njk.addFilter(\"take\", filter.take);\n njk.addExtension(\"BlockContainer\", {\n tags: [\"container\"],\n parse(parser, nodes) {\n /* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call -- upstream api is untyped */\n const tok = parser.nextToken();\n const args = parser.parseSignature(null, true);\n parser.advanceAfterBlockEnd(tok.value);\n return new nodes.CallExtensionAsync(this, \"run\", args, []);\n /* eslint-enable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call */\n },\n async run(\n { ctx }: { ctx: Record<string, unknown> },\n container: string,\n callback: (\n err: Error | null,\n data: nunjucks.runtime.SafeString,\n ) => void,\n ) {\n const blocks = options.templateBlocks.get(container) ?? [];\n const promises = blocks.map(({ renderer }) => {\n if (\"filename\" in renderer) {\n const data = renderer.data as object;\n return renderTemplate(renderer.filename, {\n ...ctx,\n ...data,\n });\n }\n if (\"render\" in renderer) {\n return Promise.resolve(renderer.render());\n }\n return Promise.resolve(\"\");\n });\n const content = await Promise.all(promises);\n const markup = content.join(\"\");\n callback(null, new nunjucks.runtime.SafeString(markup));\n },\n } as nunjucks.Extension);\n\n await mkdir;\n\n let content;\n try {\n content = stripPrettierComments(\n await renderTemplate(template, templateData),\n );\n } catch (err: unknown) {\n const filename = fileInfo.fullPath;\n if (err instanceof Error && err.name === \"Template render error\") {\n /* recreate nunjucks template errors to be a bit more useful and readable */\n throw new TemplateRenderError(err.message, filename);\n }\n const prefix = `Failed to render \"${filename}\"`;\n const message = err instanceof Error ? err.message : String(err);\n throw new Error(`${prefix}: ${message}`, { cause: err });\n }\n\n /* eslint-disable-next-line sonarjs/slow-regex -- technical debt */\n const expandedDst = dst.replaceAll(/\\[([^]+)]/g, (match, key) => {\n if (key === \"hash\") {\n return getFingerprint(doc.body);\n } else {\n return match;\n }\n });\n const writeFile = fs.writeFile(expandedDst, content, \"utf8\");\n\n try {\n const assets = Object.values(templateData.assets).filter(\n (it) => it.importmap,\n );\n await compileExamples({\n fileInfo,\n cacheFolder,\n outputFolder,\n tasks: generatedExamples,\n assets,\n vendors,\n });\n } catch (err: unknown) {\n const prefix = `Failed to compile examples from \"${fileInfo.fullPath}\"`;\n const message = err instanceof Error ? err.message : String(err);\n throw new Error(`${prefix}: ${message}`, { cause: err });\n }\n\n try {\n await compileStandalones({\n fileInfo,\n cacheFolder,\n outputFolder,\n templateFolders,\n tasks: generatedStandalone,\n renderTemplate,\n templateData,\n });\n } catch (err: unknown) {\n const prefix = `Failed to render standalone examples from \"${fileInfo.fullPath}\"`;\n const message = err instanceof Error ? err.message : String(err);\n throw new Error(`${prefix}: ${message}`, { cause: err });\n }\n\n await writeFile;\n return dst;\n}\n","import cliProgress from \"cli-progress\";\nimport { type DocumentPage, isDocumentPage } from \"../document\";\nimport { type Processor } from \"../processor\";\nimport { render } from \"./render\";\nimport { type RenderOptions } from \"./render-options\";\n\nconst progressbar = new cliProgress.SingleBar({\n format: \" {bar} {percentage}% | {value}/{total} documents | {filename}\",\n barCompleteChar: \"\\u2588\",\n barIncompleteChar: \"\\u2591\",\n hideCursor: true,\n clearOnComplete: true,\n});\n\nexport function nunjucksProcessor(\n options: Omit<\n RenderOptions,\n \"templateBlocks\" | \"templateData\" | \"addResource\"\n >,\n): Processor {\n return {\n stage: \"render\",\n name: \"nunjucks-renderer\",\n async handler(context) {\n function renderDocument(doc: DocumentPage): Promise<string | null> {\n const nav = {\n topnav: context.topnav,\n sidenav: context.sidenav,\n };\n return render(doc, context.docs, nav, context.vendors, {\n ...options,\n templateBlocks: context.getAllTemplateBlocks(),\n templateData: context.getAllTemplateData(),\n addResource(dst, src) {\n context.addResource(dst, src);\n },\n });\n }\n\n const formats = new Set([\"markdown\", \"json\"]);\n const docs = context.docs.filter(isDocumentPage).filter((it) => {\n /* the nunjucks process primarly renders markdown documents but\n * for legacy reasons it also renders raw json files */\n if (!formats.has(it.format)) {\n return false;\n }\n return it.fileInfo.outputName;\n });\n\n progressbar.start(docs.length, 0, {\n filename: docs.length > 0 ? docs[0].fileInfo.fullPath : \"\",\n });\n\n const generatedFiles: string[] = [];\n try {\n for (const doc of docs) {\n const filePath = await renderDocument(doc);\n if (filePath) {\n generatedFiles.push(filePath);\n }\n progressbar.increment(1, {\n filename: doc.fileInfo.fullPath,\n });\n }\n } finally {\n progressbar.stop();\n }\n\n context.log(docs.length, \"documents rendered\");\n return generatedFiles;\n },\n };\n}\n","import { type Processor, type ProcessorOptions } from \"../processor\";\n\n/**\n * @public\n */\nexport function livereloadProcessor(options: ProcessorOptions): Processor {\n const { enabled } = options;\n return {\n after: \"generate-docs\",\n name: \"livereload-processor\",\n enabled,\n handler(context) {\n context.addTemplateBlock(\"body:end\", \"livereload\", {\n filename: \"partials/livereload.html\",\n });\n },\n };\n}\n","/**\n * Wait for a keypress and return the pressed key.\n *\n * @internal\n */\nexport async function keypress(): Promise<string> {\n process.stdin.setRawMode(true);\n process.stdin.resume();\n return new Promise((resolve) => {\n process.stdin.once(\"data\", (data) => {\n process.stdin.setRawMode(false);\n process.stdin.resume();\n resolve(data.toString(\"utf8\"));\n });\n });\n}\n","import { type AddressInfo } from \"node:net\";\n\n/**\n * @internal\n */\nexport function printMenu(addr: AddressInfo): void {\n /* eslint-disable no-console -- expected to log */\n console.log();\n console.group(\n `Starting development server at http://localhost:${String(addr.port)}`,\n );\n console.log();\n console.log(\"[q] quit\");\n console.log();\n console.groupEnd();\n /* eslint-enable no-console */\n}\n","import { type AddressInfo } from \"node:net\";\nimport path from \"node:path/posix\";\nimport { watch } from \"chokidar\";\nimport tinylr from \"tiny-lr\";\nimport { keypress } from \"./keypress\";\nimport { printMenu } from \"./print-menu\";\n\n/**\n * @internal\n */\nexport interface ServeOptions {\n outputFolder: string;\n watch: string[];\n\n /**\n * Callback to rebuild all assets depending on given filePaths.\n *\n * @returns A promise resolving to a list of all output files affected.\n */\n rebuild(this: void, filePath: string[]): Promise<string[]>;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction createRebuilder(\n callback: (filePath: string[]) => Promise<string[]>,\n livereload: (filePath: string[]) => void,\n): (filePath: string) => void {\n let inflight = false;\n let queue: string[] = [];\n\n async function rebuild(filePath: string): Promise<void> {\n queue.push(filePath);\n\n /* if there is already a request being handled we exit out right await\n * (with the flag set) */\n if (inflight) {\n return;\n }\n\n /* mark that this request is doing a rebuild so no futher requests will\n * try to rebuild until this one is finised */\n inflight = true;\n\n try {\n /* as long as the flag is raised we keep rebuilding, i.e. during the\n * last build another file changed and thus another rebuild is\n * needed */\n while (queue.length > 0) {\n const modifiedFiles = queue;\n queue = [];\n const generatedFiles = await callback(modifiedFiles);\n livereload(generatedFiles);\n\n /* delay further execution for a while so the live reload can finish before the new files are rebuilt */\n await sleep(200);\n }\n } finally {\n /* clear the flag so the next request can run a rebuild normally */\n inflight = false;\n }\n }\n\n /* eslint-disable-next-line @typescript-eslint/no-misused-promises -- technical debt */\n return rebuild;\n}\n\nfunction isImportError(err: unknown): err is Error & { code: string } {\n return Boolean(err && typeof err === \"object\" && \"code\" in err);\n}\n\n/* eslint-disable-next-line @typescript-eslint/consistent-type-imports -- technical debt */\nasync function importExpress(): Promise<typeof import(\"express\")> {\n try {\n const { default: express } = await import(\"express\");\n return express;\n } catch (err: unknown) {\n if (isImportError(err) && err.code === \"ERR_MODULE_NOT_FOUND\") {\n throw new Error(\n \"docs-generator serve() requires the optional peerDependency express to be installed\",\n { cause: err },\n );\n } else {\n throw err;\n }\n }\n}\n\n/**\n * @internal\n */\nexport async function serve(options: ServeOptions): Promise<void> {\n const express = await importExpress();\n const app = express();\n app.use(express.static(options.outputFolder));\n const server = app.listen(8080);\n printMenu(server.address() as AddressInfo);\n\n const livereload = tinylr();\n livereload.listen(35729);\n\n const watcher = watch(options.watch);\n const rebuild = createRebuilder(options.rebuild, (filePath: string[]) => {\n const files = filePath.map((it) => {\n return path.relative(options.outputFolder, it);\n });\n livereload.changed({ body: { files } });\n });\n\n watcher.on(\"change\", (filePath: string) => {\n rebuild(filePath);\n });\n\n for (;;) {\n const key = await keypress();\n switch (key) {\n case \"\\u0003\": /* ctrl-c */\n case \"q\":\n /* eslint-disable-next-line no-console -- expected to log */\n console.log(\"Shutting down gracefully\");\n server.close();\n /* eslint-disable-next-line @typescript-eslint/no-floating-promises -- technical debt */\n watcher.close();\n livereload.close();\n process.stdin.unref();\n return;\n }\n }\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport esbuild, { type BuildOptions } from \"esbuild\";\nimport { tsconfigPath as tsconfig } from \"../tsconfig-path\";\nimport { getFingerprint, getIntegrity, slugify } from \"../utils\";\nimport { type VendorAsset } from \"./vendor-asset\";\nimport { type NormalizedVendorDefinition } from \"./vendor-definition\";\n\nexport function getAssetSource(asset: NormalizedVendorDefinition): string {\n const lines = [];\n const pkg = asset.package.replaceAll(\"\\\\\", \"/\");\n\n lines.push(`export * from \"${pkg}\";`);\n\n return lines.join(\"\\n\");\n}\n\n/**\n * @internal\n */\nexport async function compileVendor(\n assetFolder: string,\n vendor: NormalizedVendorDefinition,\n options?: BuildOptions,\n): Promise<VendorAsset> {\n const name = path.isAbsolute(vendor.package)\n ? path.basename(vendor.package)\n : vendor.package;\n const slug = slugify(name);\n const outfile = `temp/vendor-${slug}.out.js`;\n const tmpfile = `temp/vendor-${slug}.in.js`;\n const source = getAssetSource(vendor);\n await fs.writeFile(tmpfile, source, \"utf8\");\n await esbuild.build({\n entryPoints: [tmpfile],\n outfile,\n bundle: true,\n format: \"esm\",\n platform: \"browser\",\n tsconfig,\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(\"development\"),\n __VUE_OPTIONS_API__: \"true\",\n __VUE_PROD_DEVTOOLS__: \"true\",\n __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: \"false\",\n },\n alias: vendor.alias ? { [vendor.package]: vendor.alias } : undefined,\n ...options,\n });\n const content = await fs.readFile(outfile, \"utf8\");\n const fingerprint = getFingerprint(content);\n const integrity = getIntegrity(content);\n const filename = `vendor-${slug}-${fingerprint}.js`;\n const dst = path.join(assetFolder, filename).replaceAll(\"\\\\\", \"/\");\n await fs.rename(outfile, dst);\n const stat = await fs.stat(dst);\n return {\n package: vendor.package,\n filename,\n publicPath: `./assets/${filename}`,\n integrity,\n size: stat.size,\n };\n}\n","import {\n type NormalizedVendorDefinition,\n type VendorDefinition,\n} from \"./vendor-definition\";\n\n/**\n * @internal\n */\nexport function normalizeVendorDefinition(\n vendor: VendorDefinition,\n): NormalizedVendorDefinition {\n if (typeof vendor === \"string\") {\n return {\n package: vendor,\n alias: undefined,\n };\n } else {\n return {\n package: vendor.package,\n alias: vendor.alias ?? undefined,\n };\n }\n}\n","import path from \"node:path/posix\";\nimport { type Processor } from \"../processor\";\nimport { formatSize } from \"../utils\";\nimport { compileVendor } from \"./compile-vendor\";\nimport { normalizeVendorDefinition } from \"./normalize-vendor-definition\";\nimport { type VendorAsset } from \"./vendor-asset\";\nimport { type VendorDefinition } from \"./vendor-definition\";\n\nfunction getPackageName(vendor: VendorDefinition): string {\n return typeof vendor === \"string\" ? vendor : vendor.package;\n}\n\nfunction generateVendorAssets(\n assetFolder: string,\n assets: VendorDefinition[],\n): Promise<VendorAsset[]> {\n const packages = assets.map(getPackageName);\n const normalized = assets.map(normalizeVendorDefinition);\n const promises = normalized.map((it) => {\n const external = packages.filter((pkg) => pkg !== it.package);\n return compileVendor(assetFolder, it, {\n external,\n });\n });\n return Promise.all(promises);\n}\n\nexport function vendorProcessor(\n assetFolder: string,\n vendor: VendorDefinition[],\n): Processor {\n return {\n stage: \"assets\",\n name: \"vendor-processor\",\n async handler(context) {\n const assets = await generateVendorAssets(assetFolder, vendor);\n context.addVendorAsset(assets);\n for (const asset of assets) {\n const filename = path.basename(asset.publicPath);\n context.log(filename, formatSize(asset.size));\n }\n },\n };\n}\n","import { existsSync } from \"node:fs\";\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport inter from \"@fontsource-variable/inter/metadata.json\";\nimport fse from \"fs-extra\";\nimport { createInstance as i18next } from \"i18next\";\nimport {\n type CSSAsset,\n type CompileOptions,\n type JSAsset,\n type ResourceTask,\n cssAssetProcessor,\n jsAssetProcessor,\n staticResourcesProcessor,\n} from \"./assets\";\nimport { compileProcessorRuntime } from \"./compile-processor-runtime\";\nimport { type Document, isDocumentPage } from \"./document\";\nimport { type SourceFiles, fileReaderProcessor } from \"./file-reader\";\nimport langEn from \"./i18n/en.json\";\nimport langSv from \"./i18n/sv.json\";\nimport { manifestPageFromDocument } from \"./manifest\";\nimport { type Manifest } from \"./manifest\";\nimport { type NavigationSection, navigationProcessor } from \"./navigation\";\nimport { type Processor } from \"./processor\";\nimport {\n type ProcessorContext,\n type TemplateBlockData,\n type TemplateData,\n} from \"./processor-context\";\nimport { type ProcessorStage } from \"./processor-stage\";\nimport { redirectProcessor } from \"./processors\";\nimport { type TemplateLoader, nunjucksProcessor } from \"./render\";\nimport { createTemplateLoader } from \"./render/render\";\nimport { serve } from \"./serve\";\nimport { fileMatcher, haveOutput, normalizePath } from \"./utils\";\nimport {\n type VendorAsset,\n type VendorDefinition,\n vendorProcessor,\n} from \"./vendor\";\n\n/**\n * @public\n */\nexport interface GeneratorSiteOptions {\n /** Site name */\n name: string;\n\n /** Site languange (BCP-47, e.g. `en` or `sv`), default `en` */\n lang?: string;\n}\n\n/**\n * @public\n */\nexport interface GeneratorOptions {\n /** Site options */\n site: GeneratorSiteOptions;\n\n /** If `true` the default font will be included in the generated bundle. Set\n * this to `false` if you change or otherwize manage the font assets\n * yourself. */\n bundleDefaultFont?: boolean;\n\n /** Output folder. Default: `public` */\n outputFolder?: string;\n\n /** Where cached content is stored. Default: `temp/docs` */\n cacheFolder?: string;\n\n /** List of folders to search when locating examples (searched recursively). Default: `[]` */\n exampleFolders?: string[];\n\n /** List of folders to search when locating templates. */\n templateFolders?: string[];\n\n /** List of extra processors to run */\n processors?: Processor[];\n\n /** List of vendor assets to compile */\n vendor?: VendorDefinition[];\n\n /** Path to file with exported `setup` function, responsible for mounting of component.\n * `function setup(options: { rootComponent: string, selector: string }): void`\n */\n setupPath: string;\n\n /**\n * Options for markdown renderer.\n */\n markdown?: {\n /**\n * Options for markdown messagebox container.\n */\n messagebox?: {\n /**\n * Default titles for messageboxes.\n *\n * If a title is the empty string `\"\"` the usage of title is\n * disabled by default.\n *\n * @example\n * ```json\n * {\n * \"title\": {\n * \"info\": \"Information\",\n * \"tip\": \"Tips\",\n * \"warning\": \"Varning\",\n * \"danger\": \"Se upp!\"\n * }\n * }\n * ```\n */\n title?: Record<string, string>;\n };\n };\n}\n\nfunction toArray<T>(value: T | T[]): T[] {\n return Array.isArray(value) ? value : [value];\n}\n\nfunction filterProcessors(\n stage: ProcessorStage,\n processors: Processor[],\n): Processor[] {\n const before: Processor[] = [];\n const during: Processor[] = [];\n const after: Processor[] = [];\n for (const processor of processors) {\n if (processor.enabled === false) {\n continue;\n }\n if (processor.before === stage) {\n before.push(processor);\n }\n if (processor.stage === stage) {\n during.push(processor);\n }\n if (processor.after === stage) {\n after.push(processor);\n }\n }\n return [...before, ...during, ...after];\n}\n\n/* eslint-disable no-console -- expected to log */\nasync function stage(\n stage: ProcessorStage,\n context: Omit<ProcessorContext, \"log\">,\n processors: Processor[],\n options?: { verbose: boolean },\n): Promise<string[]> {\n const { verbose = true } = options ?? {};\n if (verbose) {\n console.log(`stage:${stage}`);\n }\n let generatedFiles: string[] = [];\n const filteredProcessors = filterProcessors(stage, processors);\n for (let i = 0; i < filteredProcessors.length; i++) {\n const processor = filteredProcessors[i];\n const isLast = i === filteredProcessors.length - 1;\n if (verbose) {\n console.log(isLast ? \" └─\" : \" ├─\", processor.name);\n }\n try {\n const result = await processor.handler({\n ...context,\n log(...args: unknown[]) {\n if (verbose) {\n console.log(isLast ? \" \" : \" │ \", ...args);\n }\n },\n });\n if (result) {\n generatedFiles = [...generatedFiles, ...result];\n }\n } catch (err) {\n console.error(`When running processor \"${processor.name}\":`);\n throw err;\n }\n }\n return generatedFiles;\n}\n/* eslint-enable no-console */\n\nfunction createContext(\n outputFolder: string,\n templateLoader: TemplateLoader,\n): Omit<ProcessorContext, \"log\"> {\n let docs: Document[] = [];\n let vendors: VendorAsset[] = [];\n const resources: ResourceTask[] = [];\n const templateBlocks = new Map<string, Array<TemplateBlockData<unknown>>>();\n let topnav: NavigationSection = {\n key: \".\",\n title: \"\",\n path: \"\",\n sortorder: Infinity,\n children: [],\n visible: true,\n };\n let sidenav: NavigationSection = {\n key: \".\",\n title: \"\",\n path: \"\",\n sortorder: Infinity,\n children: [],\n visible: true,\n };\n const templateData = new Map<string, unknown>();\n return {\n get docs(): Document[] {\n return docs;\n },\n\n get vendors(): VendorAsset[] {\n return vendors;\n },\n\n get resources(): ResourceTask[] {\n return resources;\n },\n\n get topnav(): NavigationSection {\n return topnav;\n },\n\n get sidenav(): NavigationSection {\n return sidenav;\n },\n\n outputFolder,\n\n addDocument(document: Document | Document[]) {\n docs = [...docs, ...toArray(document)];\n },\n\n addVendorAsset(asset: VendorAsset | VendorAsset[]) {\n vendors = [...vendors, ...toArray(asset)];\n },\n\n addResource(dst: string, src: string): void {\n resources.push({\n from: src.replaceAll(\"\\\\\", \"/\"),\n to: dst,\n });\n },\n\n addTemplateBlock(container, id, renderer): void {\n const block: TemplateBlockData<unknown> = {\n container,\n id,\n renderer,\n };\n const list = templateBlocks.get(container) ?? [];\n templateBlocks.set(container, [...list, block]);\n },\n\n getAllTemplateBlocks(): Map<string, Array<TemplateBlockData<unknown>>> {\n return templateBlocks;\n },\n\n hasTemplate(name: string): boolean {\n return templateLoader.hasTemplate(name);\n },\n\n setTopNavigation(root: NavigationSection) {\n topnav = root;\n },\n\n setSideNavigation(root: NavigationSection) {\n sidenav = root;\n },\n\n getAllTemplateData() {\n return Object.fromEntries(templateData.entries()) as TemplateData &\n Record<string, unknown>;\n },\n\n getTemplateData(key: string, defaultValue?: unknown): unknown {\n if (templateData.has(key)) {\n return templateData.get(key);\n } else if (defaultValue) {\n templateData.set(key, defaultValue);\n return defaultValue;\n } else {\n return undefined;\n }\n },\n\n setTemplateData(key: string, value: unknown) {\n templateData.set(key, value);\n },\n };\n}\n\nfunction getWorkingDir(value: string | URL | null): string {\n if (value) {\n const url = typeof value === \"string\" ? new URL(value) : value;\n const normalized = normalizePath(fileURLToPath(url));\n return path.posix.dirname(normalized);\n } else {\n return normalizePath(process.cwd());\n }\n}\n\n/**\n * @public\n */\nexport class Generator {\n private cwd: string;\n private site: GeneratorSiteOptions;\n private bundleDefaultFont: boolean;\n private outputFolder: string;\n private cacheFolder: string;\n private assetFolder: string;\n private exampleFolders: string[];\n private templateFolders: string[];\n private processors: Processor[];\n private vendor: VendorDefinition[];\n private setupPath: string;\n private scripts: JSAsset[];\n private styles: CSSAsset[];\n private resources: ResourceTask[];\n private sourceFiles: SourceFiles[];\n private markdownOptions: GeneratorOptions[\"markdown\"];\n\n /**\n * @deprecated Pass in `import.meta.url` as first argument instead.\n */\n public constructor(options: GeneratorOptions);\n\n /**\n * Create a new Generator instance.\n */\n public constructor(importMetaUrl: string | URL, options: GeneratorOptions);\n public constructor(\n ...args:\n | [options: GeneratorOptions]\n | [importMetaUrl: string | URL, options: GeneratorOptions]\n ) {\n const cwd = getWorkingDir(args.length === 2 ? args[0] : null);\n const options = args.length === 2 ? args[1] : args[0];\n\n if (args.length === 1) {\n /* eslint-disable-next-line no-console -- expected to log */\n console.error(\n \"[docs-generator] deprecated: not passing import.meta.url as the first argument is deprecated, assuming `process.cwd()`.\",\n );\n }\n\n /* eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, sonarjs/different-types-comparison -- will not happen with typescript users but handle when vanilla js users miss this parameter */\n if (options.site === undefined) {\n throw new Error(\"site metadata not set in configuration\");\n }\n\n this.cwd = cwd;\n this.site = options.site;\n this.bundleDefaultFont = options.bundleDefaultFont ?? true;\n this.outputFolder = options.outputFolder ?? \"./public\";\n this.cacheFolder = options.cacheFolder ?? \"./temp/docs\";\n this.assetFolder = path.posix.join(this.outputFolder, \"assets\");\n this.exampleFolders = options.exampleFolders ?? [];\n this.templateFolders = options.templateFolders ?? [];\n this.processors = options.processors ?? [];\n this.vendor = options.vendor ?? [];\n this.setupPath = options.setupPath.replaceAll(\"\\\\\", \"/\");\n this.scripts = [];\n this.styles = [];\n this.resources = [];\n this.sourceFiles = [];\n this.markdownOptions = options.markdown;\n\n const bootstrapUrl = new URL(\"runtime-bootstrap.mjs\", import.meta.url);\n this.compileScript(\n \"bootstrap\",\n bootstrapUrl,\n {\n appendTo: \"head\",\n priority: 100,\n },\n {\n format: \"iife\",\n },\n );\n }\n\n public compileScript(\n name: string,\n src: string | URL,\n options?: Partial<CompileOptions>,\n buildOptions?: {\n format?: \"iife\" | \"cjs\" | \"esm\";\n define?: Record<string, string>;\n },\n ): void {\n this.scripts.push({\n name,\n src,\n options: {\n appendTo: \"none\",\n attributes: {},\n priority: 0,\n ...options,\n },\n buildOptions: {\n ...buildOptions,\n },\n });\n }\n\n public compileStyle(\n name: string,\n src: string | URL,\n options?: Partial<CompileOptions>,\n ): void {\n this.styles.push({\n name,\n src,\n options: {\n appendTo: \"none\",\n attributes: {},\n priority: 0,\n ...options,\n },\n });\n }\n\n /**\n * @param dst - Destination directory relative to asset folder.\n * @param src - File or directory to copy.\n */\n public copyResource(dst: string, src: string): void {\n this.resources.push({\n from: src.replaceAll(\"\\\\\", \"/\"),\n to: dst,\n });\n }\n\n /**\n * Generate a manifest listing all generated documents that will be present\n * in `outputFolder`.\n *\n * Note: this only collects documents from the `generate-docs` stage,\n * potential documents generated at later stages will not be present.\n *\n * @public\n */\n public async manifest(sourceFiles: SourceFiles[]): Promise<Manifest> {\n const processors: Processor[] = [\n fileReaderProcessor(sourceFiles),\n redirectProcessor(),\n ...this.processors,\n ];\n\n const templateLoader = createTemplateLoader([]);\n const context = createContext(\"\", templateLoader);\n await stage(\"generate-docs\", context, processors, { verbose: false });\n\n const docs = context.docs.filter(isDocumentPage).filter(haveOutput);\n const pages = docs.map(manifestPageFromDocument);\n return { pages };\n }\n\n public async build(sourceFiles: SourceFiles[]): Promise<string[]> {\n this.sourceFiles = sourceFiles;\n const {\n site,\n outputFolder,\n cacheFolder,\n assetFolder,\n exampleFolders,\n templateFolders,\n setupPath,\n markdownOptions,\n } = this;\n const examplePatterns = this.exampleFolders.map((it) => `${it}/**/*`);\n\n const i18n = i18next({\n lng: site.lang,\n fallbackLng: \"en\",\n resources: {\n en: langEn,\n sv: langSv,\n },\n });\n\n await i18n.init();\n\n await this._prepareFolders();\n await this._copyFonts();\n\n const processors: Processor[] = [\n fileReaderProcessor(sourceFiles),\n redirectProcessor(),\n vendorProcessor(assetFolder, this.vendor),\n cssAssetProcessor(assetFolder, this.styles),\n jsAssetProcessor(assetFolder, this.scripts, this.vendor),\n staticResourcesProcessor(assetFolder, this.resources),\n navigationProcessor(),\n nunjucksProcessor({\n site: {\n lang: \"en\",\n ...site,\n },\n outputFolder,\n cacheFolder,\n i18n,\n exampleFolders,\n templateFolders,\n setupPath,\n markdown: markdownOptions ?? {},\n fileMatcher: fileMatcher(examplePatterns),\n }),\n ...this.processors,\n ];\n\n compileProcessorRuntime(this, import.meta.url, processors);\n\n const templateLoader = createTemplateLoader(templateFolders);\n const context = createContext(outputFolder, templateLoader);\n const generatedFiles = [\n await stage(\"generate-docs\", context, processors),\n await stage(\"generate-nav\", context, processors),\n await stage(\"assets\", context, processors),\n await stage(\"render\", context, processors),\n ];\n return generatedFiles.flat();\n }\n\n /**\n * Start a development server hosting the generated documentation.\n */\n public serve(): Promise<void> {\n const { outputFolder, sourceFiles } = this;\n const watch = sourceFiles.flatMap((it) => it.include);\n return serve({\n outputFolder,\n watch,\n rebuild: (_filePath: string[]) => {\n return this.build(sourceFiles);\n },\n });\n }\n\n private async _prepareFolders(): Promise<void> {\n const { outputFolder, cacheFolder, assetFolder } = this;\n await fs.rm(cacheFolder, { force: true, recursive: true });\n if (existsSync(outputFolder)) {\n await fs.mkdir(path.dirname(cacheFolder), { recursive: true });\n\n /* `fs.rename(..)` does not work on windows when subdirectories are\n * involved, these two operations are ofcourse much slower and not\n * atomic but better than crashing */\n await fse.copy(outputFolder, cacheFolder);\n await fs.rm(outputFolder, { recursive: true });\n }\n await fs.mkdir(outputFolder, { recursive: true });\n await fs.mkdir(assetFolder, { recursive: true });\n await fs.mkdir(\"temp\", { recursive: true });\n }\n\n private async _copyFonts(): Promise<void> {\n const { assetFolder, bundleDefaultFont } = this;\n if (!bundleDefaultFont) {\n return;\n }\n const files = inter.subsets.map((subset) => {\n const filename = `inter-${subset}-wght-normal.woff2`;\n const module = `@fontsource-variable/inter/files/${filename}`;\n const src = fileURLToPath(import.meta.resolve(module));\n const dst = path.join(assetFolder, filename);\n return fs.copyFile(src, dst);\n });\n await Promise.all(files);\n }\n}\n","import { type SearchEntry } from \"./search-entry\";\nimport { type SearchIndex } from \"./search-index\";\n\n/**\n * @internal\n */\nexport function generateIndex(entries: SearchEntry[]): SearchIndex {\n const index: SearchIndex = {\n terms: [],\n results: [],\n mapping: {},\n };\n for (const entry of entries) {\n index.results.push({\n url: entry.url,\n title: entry.title,\n terms: entry.terms,\n });\n const resultIndex = index.results.length - 1;\n for (const word of entry.words) {\n index.terms.push(word);\n const termIndex = index.terms.length - 1;\n index.mapping[termIndex] = resultIndex;\n }\n }\n return index;\n}\n","import { type DocumentPage, isDocumentPage } from \"../document\";\nimport { type Processor } from \"../processor\";\nimport { getFingerprint, getIntegrity, getOutputFilePath } from \"../utils\";\nimport { generateIndex } from \"./generate-index\";\nimport { type SearchEntry } from \"./search-entry\";\n\nfunction* extractTerms(doc: DocumentPage): Generator<string> {\n const { title, component } = doc.attributes;\n if (title) {\n yield title;\n } else {\n yield doc.name;\n }\n if (component) {\n for (const name of component.map((it) => it.name)) {\n yield name;\n }\n }\n for (const term of doc.attributes.search.terms) {\n yield term;\n }\n}\n\nfunction isIndexable(doc: DocumentPage): boolean {\n const { visible, fileInfo, format } = doc;\n return Boolean(visible && fileInfo.outputName && format !== \"redirect\");\n}\n\nfunction getTerms(doc: DocumentPage): SearchEntry {\n return {\n url: getOutputFilePath(\".\", doc.fileInfo) ?? \"\",\n title: doc.attributes.title ?? doc.name,\n terms: [\n ...doc.attributes.search.terms,\n ...(doc.attributes.component?.map((it) => it.name) ?? []),\n ],\n words: Array.from(extractTerms(doc)),\n };\n}\n\n/**\n * @public\n */\nexport function searchProcessor(): Processor {\n return {\n after: \"generate-docs\",\n name: \"search-processor\",\n handler(context) {\n const entries = context.docs\n .filter(isDocumentPage)\n .filter(isIndexable)\n .map(getTerms);\n const index = generateIndex(entries);\n const body = JSON.stringify(index, null, 2);\n const fingerprint = getFingerprint(body);\n const integrity = getIntegrity(body);\n const outputName = `search-data-[hash].json`;\n const expandedName = `search-data-${fingerprint}.json`;\n context.setTemplateData(\"searchDataUrl\", expandedName);\n context.setTemplateData(\"searchDataIntegrity\", integrity);\n context.addDocument({\n kind: \"page\",\n id: \"search:data\",\n name: \"search-data\",\n alias: [],\n visible: false,\n attributes: {\n sortorder: Infinity,\n redirectFrom: [],\n search: {\n terms: [],\n },\n },\n body,\n outline: [],\n format: \"json\",\n tags: [],\n template: \"json\",\n fileInfo: {\n path: \"\",\n name: \"virtual:search-data\",\n fullPath: \"virtual:search-data\",\n outputName,\n },\n });\n context.addTemplateBlock(\"toolbar\", \"search-toolbar\", {\n filename: \"partials/search-toolbar.html\",\n });\n context.addTemplateBlock(\"body:end\", \"search-dialog\", {\n filename: \"partials/search-dialog.html\",\n });\n context.log(\"Indexed\", entries.length, \"documents\");\n },\n };\n}\n"],"names":["toArray","cacheKey","globSync","path","value","pkg","it","glob","md","markdownIt","findExamples","relative","parent","parseFile","compileScript","babelParser","EMPTY_CHAR","EM_DASH","render","renderInline","parse","docs","byPriority","originalBuild","fs","nodeFS","tsconfig","cache","exampleWorkerUrl","message","doc","fileInfo","pathPosix","filter.relative","dst","content","filter.json","filter.dump","filter.take","esbuild","stage","i18next"],"mappings":"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"}
|