@forsakringskassan/docs-generator 3.13.0 → 3.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{create-markdown-renderer-DwLB6VT1.mjs → create-markdown-renderer-BlUpDhJP.mjs} +12 -111
- package/dist/create-markdown-renderer-BlUpDhJP.mjs.map +1 -0
- package/dist/index.d.mts +18 -0
- package/dist/index.mjs +118 -6
- package/dist/index.mjs.map +1 -1
- package/dist/markdown.mjs +1 -4
- package/dist/markdown.mjs.map +1 -1
- package/dist/style/core.css +10 -2
- package/dist/style/index.css +10 -2
- package/package.json +3 -3
- package/dist/create-markdown-renderer-DwLB6VT1.mjs.map +0 -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/take-while.ts","../src/utils/is-release.ts","../src/utils/zip.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/processors/cookie-processor.ts","../src/document/document-attributes.ts","../src/document/is-document-partial.ts","../src/manifest/manifest-page-from-document.ts","../src/processors/manifest-processor.ts","../src/processors/extract-markdown-processor.ts","../src/processors/extract-examples-processor.ts","../src/processors/motd-processor.ts","../src/processors/playground-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/processors/source-url-processor.ts","../src/navigation/generate-navtree.ts","../src/navigation/sort-navigation-tree.ts","../src/navigation/navigation-processor.ts","../src/processors/topnav-processor.ts","../src/processors/version-processor.ts","../src/search/generate-index.ts","../src/search/search-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/file-reader/partial-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/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"],"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 * A function to search for a filename.\n *\n * The filename can optionally include subdirectories or glob patterns:\n *\n * - `foo.ts` searches for `foo.ts` anywhere.\n * - `bar/foo.ts` searches for `foo` in any `bar` directory.\n * - `bar/**\\/foo.ts` searches `foo` anywhere in an `bar` directory.\n *\n * @public\n * @since %version%\n * @param filename - The filename to search for\n * @param context - An optional context for usage in error messages\n * @throws Throws an error if the filename could not be found\n * @returns Filename relative to project root\n */\nexport type FileMatcher = (filename: string, context?: string) => string;\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(patterns: string[]): FileMatcher {\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 /* if the path starts with `../` we strip it out before matching or\n * `path.matchesGlob()` wont match */\n const stem = file.replace(/^(?:\\.\\.\\/)+/, \"\");\n return path.matchesGlob(stem, `**/${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 }\n 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 }\n return matches[0];\n });\n}\n","export function formatSize(value: number): string {\n if (value < 1000) {\n return String(value);\n }\n const suffices = [\"kB\", \"MB\"];\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\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 = /^[^@]+@(?<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 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 }\n return runCommand(`git rev-parse --short HEAD`);\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 | number | boolean | null | { [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 value\n .toLowerCase()\n .replaceAll(\"/\", \"--\")\n .replaceAll(/[^a-z]+/g, \"-\")\n .replace(/^-+|-+$/, \"\");\n}\n","/**\n * @internal\n */\nexport function* takeWhile<T>(\n it: T[] | IterableIterator<T>,\n predicate: (value: T) => boolean,\n): Generator<T, void> {\n for (const value of it) {\n if (!predicate(value)) {\n return;\n }\n yield value;\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 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","/**\n * @internal\n */\nexport function* zip<T, U>(\n a: T[] | IterableIterator<T, void>,\n b: U[] | IterableIterator<U, void>,\n): Generator<[T, U], void> {\n const ia = Array.isArray(a) ? a.values() : a;\n const ib = Array.isArray(b) ? b.values() : b;\n for (;;) {\n const va = ia.next();\n const vb = ib.next();\n if (va.done || vb.done) {\n return;\n }\n yield [va.value, vb.value];\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 }\n return undefined;\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 continue;\n }\n\n traverseParents(parentInterface, pkg);\n hierarchy.push(parentInterface);\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) {\n if (!isSupported(member)) {\n continue;\n }\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().toArray();\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 ? \": \" : \" \".repeat(4);\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 const filenames = await getFilenames(patterns);\n for (const filename of filenames) {\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","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 runtime: [{ src: \"src/runtime/cookie.ts\" }],\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","/**\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 | ComponentAttribute | 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 { type Document } from \"./document\";\nimport { type DocumentPartial } from \"./document-partial\";\n\n/**\n * @internal\n */\nexport function isDocumentPartial(doc: Document): doc is DocumentPartial {\n return doc.kind === \"partial\";\n}\n","import markdownIt, { type Env } from \"markdown-it\";\nimport { type DocumentOutline, type DocumentPage } from \"../document\";\nimport { parseInfostring } from \"../examples\";\nimport { type ProcessorContext } from \"../processor-context\";\nimport {\n type FileMatcher,\n findTag,\n getFingerprint,\n getOutputFilePath,\n hasTag,\n parseImport,\n} 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\ninterface MarkdownEnv extends Env {\n readonly collected: ManifestExamples;\n readonly exampleFileMatcher: FileMatcher;\n}\n\nconst md = markdownIt();\n\nmd.renderer.rules.fence = (\n tokens,\n idx,\n _options,\n env,\n /* eslint-disable-next-line sonarjs/no-invariant-returns -- function works as intended */\n) => {\n const { collected, exampleFileMatcher } = env as MarkdownEnv;\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 src: string | null = null;\n let language = rawLanguage;\n\n if (hasTag(tags, \"compare\")) {\n language = \"diff\";\n }\n\n if (language === \"import\") {\n const parsed = parseImport(content);\n src = exampleFileMatcher(parsed.filename);\n extension = parsed.extension;\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 src,\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(\n context: Pick<ProcessorContext, \"exampleFileMatcher\">,\n doc: DocumentPageLike,\n): ManifestExamples {\n const { exampleFileMatcher } = context;\n if (doc.format !== \"markdown\") {\n return [];\n }\n const collected: ManifestExamples = [];\n md.render(doc.body, {\n exampleFileMatcher,\n collected,\n } satisfies MarkdownEnv);\n return collected;\n}\n\n/**\n * @internal\n */\nexport function manifestPageFromDocument(\n context: Pick<ProcessorContext, \"exampleFileMatcher\">,\n doc: DocumentPageLike,\n): ManifestPage {\n const { body, fileInfo, format } = doc;\n return {\n path: getOutputFilePath(\"\", fileInfo),\n src: doc.fileInfo.fullPath,\n title: doc.attributes.title ?? doc.name,\n redirect: format === \"redirect\" ? body : null,\n outline: flattenOutline(doc.outline),\n examples: findExamples(context, doc),\n };\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { isDocumentPage } from \"../document\";\nimport { type Manifest, manifestPageFromDocument } from \"../manifest\";\nimport { type Processor } from \"../processor\";\nimport { haveOutput } from \"../utils\";\n\ndeclare module \"../state-map\" {\n export interface StateMap {\n [manifestState]: Manifest;\n }\n}\n\ntype ManifestPage = Manifest[\"pages\"][number];\n\n/** @internal */\nexport const manifestState = Symbol(\"manifest\");\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((doc) =>\n manifestPageFromDocument(context, doc),\n );\n pages.sort((a, b) => {\n return a.path.localeCompare(b.path);\n });\n const manifest: Manifest = { pages };\n context.setState(manifestState, manifest);\n if (markdown) {\n const content = normalize(renderMarkdown(manifest));\n await fs.mkdir(path.dirname(markdown), { recursive: true });\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 /* eslint-disable-next-line unicorn/prefer-early-return -- for consistency with other ifs */\n if (json) {\n const content = renderJSON(manifest);\n await fs.mkdir(path.dirname(json), { recursive: true });\n await fs.writeFile(json, content, \"utf8\");\n }\n },\n };\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport fm from \"front-matter\";\nimport {\n type Document,\n type DocumentPage,\n getDocumentBody,\n isDocumentPage,\n isDocumentPartial,\n} from \"../document\";\nimport { type PartialFile } from \"../file-reader\";\nimport { type Manifest } from \"../manifest\";\nimport { type Processor, type ProcessorOptions } from \"../processor\";\nimport {\n findDocument,\n getFingerprint,\n getOutputFilePath,\n haveOutput,\n takeWhile,\n zip,\n} from \"../utils\";\nimport { manifestState } from \"./manifest-processor\";\n\ntype ManifestPage = Manifest[\"pages\"][number];\n\n/**\n * Options for `extractMarkdownProcessor`.\n *\n * @public\n */\nexport interface ExtractMarkdownOptions extends ProcessorOptions {\n /**\n * Folder to write docs to.\n */\n outputFolder: string;\n}\n\nasync function copyFile(src: string, dst: string): Promise<void> {\n await fs.mkdir(path.dirname(dst), { recursive: true });\n await fs.cp(src, dst);\n}\n\nfunction equal<T>(values: [T, T]): boolean {\n return values[0] === values[1];\n}\n\n/**\n * Finds the common path segments from two paths.\n */\nfunction commonPath(a: string, b: string): string {\n const it = zip(a.split(path.sep), b.split(path.sep));\n const common = Array.from(takeWhile(it, equal), (it) => it[0]);\n return common.join(path.sep);\n}\n\nasync function extractExamples(\n page: ManifestPage,\n options: { outputFolder: string },\n): Promise<void> {\n const { outputFolder } = options;\n for (const example of page.examples) {\n /* inline examples do not have a source file */\n if (!example.src) {\n continue;\n }\n const common = commonPath(\n path.resolve(outputFolder),\n path.resolve(example.src),\n );\n const subpath = path.relative(common, path.resolve(example.src));\n await copyFile(example.src, path.join(outputFolder, \"files\", subpath));\n }\n}\n\nfunction isMarkdown(doc: DocumentPage): boolean {\n return doc.format === \"markdown\";\n}\n\nasync function getFrontMatter(filePath: string): Promise<string> {\n const content = await fs.readFile(filePath, \"utf8\");\n const { attributes } = fm<Record<string, unknown>>(content);\n delete attributes.redirect_from;\n if (Object.keys(attributes).length === 0) {\n return \"\";\n }\n return `---\\n${JSON.stringify(attributes)}\\n---\\n\\n`;\n}\n\nfunction cmp(this: void, a: [string, string], b: [string, string]): number {\n return a[0].localeCompare(b[0]);\n}\nasync function extractDocument(\n doc: DocumentPage,\n docs: Document[],\n partials: Map<string, PartialFile>,\n options: { outputFolder: string },\n): Promise<void> {\n const { outputFolder } = options;\n const markdown = doc.body.replaceAll(\n /^:::\\s*api(.*)\\n([\\s\\S]+?):::/gm,\n (match, info: string, content: string) => {\n const needle = content.trim();\n const trimmedInfo = info.trim();\n const tags = trimmedInfo ? trimmedInfo.split(/\\s+/) : [];\n const result = findDocument(docs, needle);\n if (!result.document) {\n return match;\n }\n\n const { document, kind, reference } = result;\n if (!isDocumentPartial(document)) {\n return match;\n }\n\n const body = getDocumentBody(document, tags, {\n kind,\n reference,\n });\n const fingerprint = getFingerprint(body);\n const id = `partial:${document.format}:${fingerprint}`;\n\n partials.set(id, {\n id,\n format: document.format,\n body,\n });\n\n return `:::api\\n${id}\\n:::\\n`;\n },\n );\n const src = doc.fileInfo.fullPath;\n const dst = path.join(outputFolder, \"files\", doc.fileInfo.fullPath);\n const fm = await getFrontMatter(src);\n const content = `${fm}${markdown}`;\n\n await fs.mkdir(path.dirname(dst), { recursive: true });\n await fs.writeFile(dst, content, \"utf8\");\n}\n\nasync function extractDocuments(\n docs: Document[],\n partials: Map<string, PartialFile>,\n options: { outputFolder: string },\n): Promise<void> {\n const files = docs\n .filter(isDocumentPage)\n .filter(isMarkdown)\n .filter(haveOutput)\n .map((doc) => extractDocument(doc, docs, partials, options));\n await Promise.all(files);\n}\n\nasync function extractPartials(\n partials: Map<string, PartialFile>,\n options: { outputFolder: string },\n): Promise<void> {\n const { outputFolder } = options;\n const dst = path.join(outputFolder, \"partials.json\");\n const content = JSON.stringify(Array.from(partials.values()), null, 2);\n await fs.mkdir(path.dirname(dst), { recursive: true });\n await fs.writeFile(dst, content, \"utf8\");\n}\n\nasync function extractLinks(\n docs: Document[],\n options: { outputFolder: string },\n): Promise<void> {\n const { outputFolder } = options;\n const links = new Map<string, string>();\n const pages = docs.filter(isDocumentPage).filter(haveOutput);\n for (const page of pages) {\n const path = getOutputFilePath(\"\", page.fileInfo);\n links.set(page.id, path);\n if (!links.has(page.name)) {\n links.set(page.name, path);\n }\n for (const alias of page.alias) {\n if (!links.has(alias)) {\n links.set(alias, path);\n }\n }\n }\n const sorted = Array.from(links).toSorted(cmp);\n const entries = Object.fromEntries(sorted);\n const content = JSON.stringify(entries, null, 2);\n const dst = path.join(outputFolder, \"links.json\");\n await fs.mkdir(path.dirname(dst), { recursive: true });\n await fs.writeFile(dst, content, \"utf8\");\n}\n\nasync function writeIndex(options: { outputFolder: string }): Promise<void> {\n const { outputFolder } = options;\n const dst = path.join(outputFolder, \"index.mjs\");\n const lines = [\n `import path from \"node:path\";`,\n `import { frontMatterFileReader, partialFileReader } from \"@forsakringskassan/docs-generator\";`,\n ``,\n `export const basename = import.meta.dirname;`,\n `export const exampleFolders = [path.join(basename, \"files\")];`,\n `export const filesPath = path.join(basename, \"files\");`,\n `export const partialsPath = [path.join(basename, \"partials.json\")];`,\n `export const linksPath = [path.join(basename, \"links.json\")];`,\n ``,\n `export function sourceFiles(src) {`,\n ` return [`,\n ` { `,\n ` include: path.join(basename, \"files/**/*.md\"),`,\n ` basename,`,\n ` fileReader: frontMatterFileReader,`,\n ` ...src`,\n ` },`,\n ` { `,\n ` include: path.join(basename, \"partials.json\"),`,\n ` basename,`,\n ` fileReader: partialFileReader,`,\n ` }`,\n ` ];`,\n `}`,\n ];\n await fs.writeFile(dst, lines.join(\"\\n\"), \"utf8\");\n}\n\nasync function writeDts(options: { outputFolder: string }): Promise<void> {\n const { outputFolder } = options;\n const dst = path.join(outputFolder, \"index.d.mts\");\n const lines = [\n `import { SourceFiles } from \"@forsakringskassan/docs-generator\";`,\n ``,\n `export declare const basename: string;`,\n `export declare const exampleFolders: string[];`,\n `export declare const filesPath: string;`,\n `export declare const partialsPath: string;`,\n `export declare const linksPath: string;`,\n ``,\n `export declare function sourceFiles(src: Partial<SourceFiles>): SourceFiles[];`,\n ];\n await fs.writeFile(dst, lines.join(\"\\n\"), \"utf8\");\n}\n\n/**\n * Processor to extract and write examples to separate files.\n *\n * @public\n */\nexport function extractMarkdownProcessor(\n options: ExtractMarkdownOptions,\n): Processor {\n const { enabled = true, outputFolder } = options;\n\n return {\n after: \"render\",\n name: \"extract-markdown-processor\",\n async handler(context) {\n if (!enabled) {\n return;\n }\n\n if (!outputFolder) {\n throw new Error(\n `\"outputFolder\" not set in \"extractMarkdownProcessor(..)\"`,\n );\n }\n\n const manifest = context.getState(manifestState);\n if (!manifest) {\n throw new Error(\n `\"extractMarkdownProcessor()\" requires \"manifestProcess()\"`,\n );\n }\n\n /* clear and recreate old output folder */\n await fs.rm(outputFolder, { recursive: true, force: true });\n await fs.mkdir(outputFolder, { recursive: true });\n\n /* copy all resources from rendered pages */\n const partials = new Map<string, PartialFile>();\n await extractDocuments(context.docs, partials, { outputFolder });\n await extractPartials(partials, { outputFolder });\n await extractLinks(context.docs, { outputFolder });\n const { pages } = manifest;\n const resources = pages.map((page) => {\n return extractExamples(page, { outputFolder });\n });\n await Promise.all(resources);\n\n /* write an index for programmatical usage */\n await writeIndex({ outputFolder });\n await writeDts({ outputFolder });\n },\n };\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, rawEnv) => {\n const { collected } = rawEnv as { collected: Example[] };\n\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 }\n return \"\";\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 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 return;\n }\n\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\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","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { strFromU8, strToU8, zlibSync } from \"fflate\";\nimport { type Processor, type ProcessorOptions } from \"../processor\";\nimport { interpolate } from \"../utils\";\n\n/**\n * Options for a playground entry.\n *\n * @public\n */\nexport interface PlaygroundProcessorEntry {\n /**\n * Unique identifier for this playground.\n */\n readonly id: string;\n\n /**\n * Name of template variable with the playground URL to inject.\n *\n * If unspecified, no template variable will be available.\n */\n readonly variable?: string;\n\n /**\n * The URL format.\n *\n * The following placeholders are available:\n *\n * - `base64`: Base64 encoded payload (use \"atou\" to decode unicode codepoints).\n * - `zlibBase64`: zlib base64 encoded payload.\n */\n readonly urlFormat: string;\n\n /**\n * Path to a folder with files to inject into the playground url.\n *\n * If unspecified, no files will be injected by default.\n */\n readonly folder?: string;\n\n /**\n * Serialize the files to a string for using in the url generation.\n *\n * Default is `JSON.stringify()`.\n */\n serialize?(\n this: void,\n context: {\n readonly files: Map<string, string>;\n },\n ): string | Promise<string>;\n}\n\n/**\n * Options for {@link playgroundProcessor}.\n *\n * @public\n */\nexport interface PlaygroundProcessorOptions extends ProcessorOptions {\n /**\n * List of playgrounds available.\n *\n * Default is empty array (no playgrounds enabled)\n */\n readonly entries?: PlaygroundProcessorEntry[];\n}\n\n/**\n * @internal\n */\nexport interface NormalizedEntry {\n readonly id: string;\n readonly variable: string | null;\n readonly urlFormat: string;\n readonly folder: string | null;\n serialize(\n this: void,\n context: {\n readonly files: Map<string, string>;\n },\n ): string | Promise<string>;\n}\n\nfunction utoa(value: string): string {\n /* eslint-disable-next-line @typescript-eslint/no-deprecated -- deprecated by the standard way of handling unicode codepoints */\n return btoa(unescape(encodeURIComponent(value)));\n}\n\nconst encoder: Partial<Record<PropertyKey, (value: string) => string>> = {\n base64(value) {\n return utoa(value);\n },\n zlibBase64(value) {\n const buffer = strToU8(value);\n const zipped = zlibSync(buffer, { level: 9 });\n const binary = strFromU8(zipped, true);\n return btoa(binary);\n },\n};\n\nfunction defaultSerializer(\n this: void,\n context: { readonly files: Map<string, string> },\n): string {\n const { files } = context;\n return JSON.stringify(Object.fromEntries(files));\n}\n\n/**\n * @internal\n */\nexport function normalizeEntry(\n entry: PlaygroundProcessorEntry,\n): NormalizedEntry {\n return {\n variable: null,\n folder: null,\n ...entry,\n serialize: entry.serialize ?? defaultSerializer,\n };\n}\n\n/**\n * @internal\n */\nexport function normalizeEntries(\n entries: PlaygroundProcessorEntry[] | undefined,\n): NormalizedEntry[] {\n if (!entries) {\n return [];\n }\n return entries.map(normalizeEntry);\n}\n\n/**\n * @internal\n */\nexport async function getFiles(\n entry: Pick<NormalizedEntry, \"folder\">,\n): Promise<Map<string, string>> {\n const { folder: cwd } = entry;\n const result = new Map<string, string>();\n if (!cwd) {\n return result;\n }\n const filenames = await Array.fromAsync(fs.glob(\"**\", { cwd }));\n const sorted = filenames.toSorted((a, b) => a.localeCompare(b));\n for (const filename of sorted) {\n const filePath = path.join(cwd, filename);\n const st = await fs.lstat(filePath);\n if (!st.isFile()) {\n continue;\n }\n const content = await fs.readFile(filePath, \"utf8\");\n result.set(filename, content);\n }\n return result;\n}\n\nfunction encode(key: PropertyKey, value: string): string | undefined {\n const fn = encoder[key] ?? (() => undefined);\n return fn(value);\n}\n\n/**\n * @internal\n */\nexport async function generateUrl(\n entry: Pick<NormalizedEntry, \"folder\" | \"serialize\" | \"urlFormat\">,\n): Promise<string> {\n const files = await getFiles(entry);\n const payload = await entry.serialize({ files });\n const lazyEvaluation = new Proxy({}, { get: (_, k) => encode(k, payload) });\n return encodeURI(interpolate(entry.urlFormat, lazyEvaluation));\n}\n\n/**\n * Generates links to code playgrounds.\n *\n * @public\n */\n/* istanbul ignore next */\nexport function playgroundProcessor(\n options: PlaygroundProcessorOptions,\n): Processor {\n const { enabled = true } = options;\n const entries = normalizeEntries(options.entries);\n return {\n after: \"generate-docs\",\n name: \"playground-processor\",\n async handler(context) {\n if (!enabled) {\n return;\n }\n for (const entry of entries) {\n if (!entry.variable) {\n continue;\n }\n const url = await generateUrl(entry);\n context.setTemplateData(entry.variable, url);\n }\n },\n };\n}\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) {\n if (!isDocumentPage(doc)) {\n continue;\n }\n if (!haveOutput(doc)) {\n continue;\n }\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 { 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] | [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 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 }\n return [\n `./${path.join(fileInfo.path, fileInfo.name).replaceAll(\"\\\\\", \"/\")}`,\n false,\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 (Object.hasOwn(section, anchestor)) {\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 | 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 }\n return {\n key: \".\",\n title: \"\",\n path: \"\",\n sortorder: Infinity,\n children: [],\n visible: true,\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 }\n 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 { isDocumentPage } from \"../document\";\nimport { type Processor } from \"../processor\";\nimport { generateNavtree } from \"./generate-navtree\";\nimport { sortNavigationTree } from \"./sort-navigation-tree\";\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 sortNavigationTree(navtree);\n context.setTopNavigation(navtree);\n context.setSideNavigation(navtree);\n },\n };\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path/posix\";\nimport { isDocumentPage } from \"../document\";\nimport { type NavigationSection, sortNavigationTree } 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 //Call sortNavigationTree to ensure submenus are correctly ordered in the mobile menu.\n sortNavigationTree(navtree);\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, type ProcessorOptions } 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 extends ProcessorOptions {\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 }\n return branch;\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 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) {\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 runtime: [{ src: \"src/runtime/search.ts\" }],\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(\"head\", \"search-preload\", {\n filename: \"partials/search-preload.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","import { matomoProcessor } from \"./matomo\";\nimport {\n cookieProcessor,\n manifestProcessor,\n motdProcessor,\n selectableVersionProcessor,\n sourceUrlProcessor,\n topnavProcessor,\n versionProcessor,\n} from \"./processors\";\nimport { playgroundProcessor } from \"./processors/playground-processor\";\nimport { searchProcessor } from \"./search\";\n\n/**\n * Used by build-script to find all runtime scripts that needs compilation.\n *\n * @internal\n */\nexport const availableProcessors = [\n playgroundProcessor({ entries: [] }),\n cookieProcessor(),\n manifestProcessor(),\n matomoProcessor({ siteId: \"\", trackerUrl: \"\" }),\n motdProcessor({ message: \"\" }),\n searchProcessor(),\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 { 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): {\n start: { line: number; column: number };\n end: { line: number; column: number };\n} | 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: 0 },\n end: { line: index + blockBegin, column: 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 }\n if (d <= threshold) {\n return [message, \"\", suggestion].join(\"\\n\");\n }\n return message;\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 }\n return value;\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 /* eslint-disable-next-line unicorn/prefer-logical-operator-over-ternary -- false positive? */\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 node.value\n .replaceAll(/^\\s*\\*\\s/gm, \"\") // removes leading whitespace and *\n .replaceAll(/\\s+$/gm, \"\"); // removes trailing whitespace\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 return;\n }\n const [name, ...defaultOrParams] = node.arguments;\n if (name.type !== \"StringLiteral\") {\n return;\n }\n const textArgument = defaultOrParams.find(isStringLiteral);\n const paramArgument = defaultOrParams.find(isObjectExpression);\n const defaultTranslation = textArgument ? textArgument.value : 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 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 ${\n event.deprecated === null\n ? \"\"\n : `<span class=\"docs-tag docs-tag--deprecated\">Deprecated</span>`\n }\n </dt>\n <dd>\n ${render(event.description)}\n ${\n haveProperties\n ? `<p class=\"docs-api__list-title\">Arguments:</p><ul class=\"docs-api__list\">`\n : \"\"\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 }\n return `<li><code>${htmlencode(it.name)}: ${htmlencode(it.type)}</code></li>`;\n })\n .join(\"\")}\n ${haveProperties ? `</ul>` : \"\"}\n ${\n event.deprecated\n ? `<p class=\"docs-api__deprecated docs-deprecated\">Deprecated: ${renderInline(event.deprecated)}</p>`\n : \"\"\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 ${\n model.required\n ? \"\"\n : `<span class=\"docs-tag docs-tag--default\">Optional</span>`\n }\n ${\n model.deprecated === null\n ? \"\"\n : `<span class=\"docs-tag docs-tag--deprecated\">Deprecated</span>`\n }\n </dt>\n <dd>\n ${render(model.description)}\n ${\n model.default\n ? `<p class=\"doc-api__item\">Default: <code>${htmlencode(model.default.value)}</code></p>`\n : \"\"\n }\n ${\n model.deprecated\n ? `<p class=\"doc-api__item docs-deprecated\">Deprecated: ${renderInline(model.deprecated)}</p>`\n : \"\"\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 ${\n prop.required\n ? \"\"\n : `<span class=\"docs-tag docs-tag--default\">Optional</span>`\n }\n ${\n prop.deprecated === null\n ? \"\"\n : `<span class=\"docs-tag docs-tag--deprecated\">Deprecated</span>`\n }\n </dt>\n <dd>\n ${render(prop.description)}\n ${\n prop.default\n ? `<p class=\"doc-api__item\">Default: <code>${htmlencode(prop.default.value)}</code></p>`\n : \"\"\n }\n ${\n prop.deprecated\n ? `<p class=\"doc-api__item docs-deprecated\">Deprecated: ${renderInline(prop.deprecated)}</p>`\n : \"\"\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 ${\n slot.deprecated === null\n ? \"\"\n : `<span class=\"docs-tag docs-tag--deprecated\">Deprecated</span>`\n }\n </dt>\n <dd>\n ${render(slot.description)}\n ${\n haveBindings\n ? `<p class=\"docs-api__list-title\">Bindings:</p><ul class=\"docs-api__list\">`\n : \"\"\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 }\n return `<li><code>${htmlencode(it.name)}: ${htmlencode(it.type)}</code></li>`;\n })\n .join(\"\")}\n ${haveBindings ? `</ul>` : \"\"}\n ${\n slot.deprecated\n ? `<p class=\"docs-api__deprecated docs-deprecated\">Deprecated: ${renderInline(slot.deprecated)}</p>`\n : \"\"\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 ${\n translation.defaultTranslation\n ? `<p class=\"doc-api__item\">Default: \"${htmlencode(translation.defaultTranslation)}\"</p>`\n : \"\"\n }\n ${\n haveParameters\n ? `<p class=\"docs-api__list-title\">Parameters:</p><ul class=\"docs-api__list\">`\n : \"\"\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 }\n return `<li><code>${htmlencode(it.name)}</code></li>`;\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 }\n return tag.description;\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 | undefined;\n if (!tag?.content) {\n return null;\n }\n if (tag.content === true) {\n return \"\";\n }\n return tag.content;\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 }\n return `Array<${element.name}>`;\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 { type ProcessorContext } from \"../processor-context\";\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 pattern = [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(\n context: ProcessorContext,\n src: Partial<SourceFiles>,\n index: number,\n): Promise<Document[]> {\n const { transform, filter = () => true } = src;\n const include = await globAll(src.include);\n const exclude = await globAll(src.exclude);\n const files = Array.from(difference(include, exclude));\n let showWarning = true;\n const promises = files.map(async (it) => {\n if (!src.fileReader) {\n if (showWarning) {\n const lines = JSON.stringify(src, null, 2).split(\"\\n\");\n context.error(\n `\"${it}\" ignored: \\`fileReader\\` property was not specified in configuration.`,\n );\n context.error();\n context.error(\n `The file was matched from sourceFiles[${index}]:`,\n );\n for (const line of lines) {\n context.error(\" \", line);\n }\n context.error();\n context.error(\"This warning is only shown once.\");\n showWarning = false;\n }\n\n return [];\n }\n\n const allDocs = await src.fileReader(it, src.basePath);\n const docs = allDocs.filter(filter);\n if (transform) {\n return docs.map((it) => transform(it));\n }\n return docs;\n });\n const docs = await Promise.all(promises);\n return docs.flat();\n}\n\nasync function getAllDocuments(\n context: ProcessorContext,\n sourceFiles: SourceFiles[],\n): Promise<Document[]> {\n const result = await Promise.all(\n sourceFiles.map((entry, index) => {\n return getDocumentsForSource(context, entry, index);\n }),\n );\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(context, 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 { type DocumentPartial } from \"../document\";\n\n/**\n * @internal\n */\nexport interface PartialFile {\n id: string;\n format: \"html\" | \"markdown\" | \"json\";\n body: string;\n}\n\n/**\n * @internal\n */\nexport function parseFile(\n filePath: string,\n content: string,\n): DocumentPartial[] {\n const parsed = JSON.parse(content) as PartialFile[];\n return parsed.map((it): DocumentPartial => {\n return {\n kind: \"partial\",\n id: it.id,\n name: it.id,\n alias: [],\n body: it.body,\n format: it.format,\n fileInfo: {\n fullPath: filePath,\n },\n };\n });\n}\n\n/**\n * Read partial documents for insertion in other markdown documents.\n *\n * @public\n */\n/* istanbul ignore next */\nexport async function partialFileReader(\n filePath: string,\n): Promise<DocumentPartial[]> {\n const content = await fs.readFile(filePath, \"utf8\");\n return parseFile(filePath, content);\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { moduleImporter } from \"@forsakringskassan/sass-module-importer\";\nimport { NodePackageImporter, compileAsync } from \"sass\";\n\n/**\n * @public\n * @param dst - Destination filename.\n * @param filePath - Sass path.\n */\nexport async function compileSassString(\n dst: string,\n filePath: string,\n): Promise<void> {\n const result = await compileAsync(filePath, {\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 { fileURLToPath } from \"node:url\";\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 filePath = typeof src === \"string\" ? src : fileURLToPath(src);\n\n await compileSassString(outfile, filePath);\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}\"`, { cause: err });\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 /* eslint-disable-next-line unicorn/no-break-in-nested-loop -- technical debt */\n break;\n case \"head\":\n head.push(inject);\n /* eslint-disable-next-line unicorn/no-break-in-nested-loop -- technical debt */\n break;\n case \"body\":\n body.push(inject);\n /* eslint-disable-next-line unicorn/no-break-in-nested-loop -- technical debt */\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.\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 name: string;\n src: string | URL;\n rootDir: string;\n outputFolder: string;\n outputName: string;\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 name,\n src,\n rootDir,\n outputFolder,\n outputName,\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 const sanitizedName = name.replaceAll(/[^a-z0-9-]+/gi, \"_\");\n\n try {\n const entryPoints = [src instanceof URL ? fileURLToPath(src) : src];\n const outfile = path.join(\"temp\", `asset-${sanitizedName}.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 = `${outputName}.js`\n .replaceAll(\"[name]\", () => sanitizedName)\n .replaceAll(\"[hash]\", () => fingerprint);\n const dst = path.join(outputFolder, filename);\n const publicPath = path.posix.join(\n path.posix.relative(rootDir, outputFolder),\n filename,\n );\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: `./${publicPath}`,\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 cause: err,\n });\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 outputFolder: string;\n outputName: string;\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 rootDir: 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 name: asset.name,\n src: asset.src,\n rootDir,\n outputFolder: asset.outputFolder,\n outputName: asset.outputName,\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 /* eslint-disable-next-line unicorn/no-break-in-nested-loop -- technical debt */\n break;\n case \"head\":\n head.push(inject);\n /* eslint-disable-next-line unicorn/no-break-in-nested-loop -- technical debt */\n break;\n case \"body\":\n body.push(inject);\n /* eslint-disable-next-line unicorn/no-break-in-nested-loop -- technical debt */\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 { 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.some((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 }\n return message;\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 { type LinkResolver } from \"../link-resolver\";\nimport {\n type NavigationLeaf,\n type NavigationNode,\n type NavigationSection,\n isNavigationSection,\n sortNavigationTree,\n} from \"../navigation\";\nimport { type FileMatcher, 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);\n\n/* eslint-disable-next-line unicorn/no-top-level-side-effects -- technical debt */\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 }\n const active = doc.id === node.id;\n return {\n ...node,\n active,\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(\"/\", 2)[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 }\n return true;\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 return;\n }\n\n exampleWorker.off(\"message\", onmessage);\n exampleWorker.off(\"error\", onerror);\n resolve();\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 return content.replaceAll(/\\s*<!-- prettier-ignore -->\\s*/g, \"\");\n}\n\n/**\n * @internal\n */\nexport async function render(\n doc: DocumentPage,\n docs: Document[],\n options: RenderOptions & {\n readonly exampleFileMatcher: FileMatcher;\n readonly nav: {\n readonly topnav: NavigationSection;\n readonly sidenav: NavigationSection;\n };\n readonly vendors: VendorAsset[];\n readonly linkResolvers: LinkResolver[];\n },\n): Promise<string | null> {\n const { fileInfo } = doc;\n const {\n i18n,\n outputFolder,\n cacheFolder,\n exampleFileMatcher,\n nav,\n templateFolders,\n vendors,\n linkResolvers,\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: exampleFileMatcher,\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 = exampleFileMatcher(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 linkResolvers,\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 const expandedDst = dst.replaceAll(/\\[([\\s\\S]+)\\]/g, (match, key) => {\n if (key === \"hash\") {\n return getFingerprint(doc.body);\n }\n return match;\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: \"\\u{2588}\",\n barIncompleteChar: \"\\u{2591}\",\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 return render(doc, context.docs, {\n ...options,\n exampleFileMatcher: context.exampleFileMatcher,\n nav: {\n topnav: context.topnav,\n sidenav: context.sidenav,\n },\n templateBlocks: context.getAllTemplateBlocks(),\n templateData: context.getAllTemplateData(),\n vendors: context.vendors,\n linkResolvers: options.linkResolvers,\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 }\n throw err;\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(35_729);\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 \"\\u{3}\": /* 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 }\n return {\n package: vendor.package,\n alias: vendor.alias ?? undefined,\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 { styleText } from \"node:util\";\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 { type LinkResolver } from \"./link-resolver\";\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 { type StateMap } from \"./state-map\";\nimport {\n type FileMatcher,\n fileMatcher,\n haveOutput,\n normalizePath,\n} 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 /**\n * List of source files to build documents from.\n */\n sourceFiles?: SourceFiles[];\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 | null;\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\" | \"error\">,\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 prefix = (() => {\n if (verbose) {\n return isLast ? \" \".repeat(6) : \" │ \";\n }\n return \"\";\n })();\n const result = await processor.handler({\n ...context,\n log(...args: unknown[]) {\n if (verbose) {\n console.log(prefix, ...args);\n }\n },\n error(...args: unknown[]) {\n process.exitCode = 1;\n console.error(\n prefix,\n ...args.map((it) =>\n typeof it === \"string\" ? styleText(\"red\", it) : it,\n ),\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(options: {\n outputFolder: string;\n exampleFileMatcher: FileMatcher;\n templateLoader: TemplateLoader;\n}): Omit<ProcessorContext, \"log\" | \"error\"> {\n const { outputFolder, exampleFileMatcher, templateLoader } = options;\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 const stateData = new Map<PropertyKey, 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 exampleFileMatcher,\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) 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 }\n if (defaultValue) {\n templateData.set(key, defaultValue);\n return defaultValue;\n }\n return undefined;\n },\n\n setTemplateData(key: string, value: unknown) {\n templateData.set(key, value);\n },\n\n setState(key, value) {\n stateData.set(key, value);\n },\n\n getState<K extends keyof StateMap>(key: K): StateMap[K] | null {\n if (!stateData.has(key)) {\n return null;\n }\n return stateData.get(key) as StateMap[K];\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 }\n return normalizePath(process.cwd());\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 | null;\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(\"\\\\\", \"/\") ?? null;\n this.scripts = [];\n this.styles = [];\n this.resources = [];\n this.sourceFiles = options.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 const runtimeUrl = new URL(\"runtime-internal.mjs\", import.meta.url);\n this.compileScript(\"runtime\", runtimeUrl, {\n appendTo: \"body\",\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 const { assetFolder } = this;\n this.scripts.push({\n name,\n src,\n outputFolder: assetFolder,\n outputName: \"[name]-[hash]\",\n options: {\n appendTo: \"none\",\n attributes: {},\n priority: 0,\n ...options,\n },\n buildOptions: {\n ...buildOptions,\n },\n });\n }\n\n /**\n * Compile a worker script.\n *\n * This is mostly the same as {@link Generator.compileScript} with some differences:\n *\n * - The script is written directly to `outputFolder` instead of `assetFolder` (i.e. to the web root).\n * - The output filename does not include a hash.\n *\n * @public\n * @since %version%\n * @param name - Asset name.\n * @param src - Asset entrypoint.\n * @param buildOptions - Options passed to `esbuild`.\n */\n public compileWorker(\n name: string,\n src: string | URL,\n buildOptions?: {\n format?: \"iife\" | \"cjs\" | \"esm\";\n define?: Record<string, string>;\n },\n ): void {\n const { outputFolder } = this;\n this.scripts.push({\n name,\n src,\n outputFolder,\n outputName: \"[name]\",\n options: {\n appendTo: \"none\",\n attributes: {},\n priority: 0,\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 manifest(): Promise<Manifest>;\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 * @deprecated Pass in the sourceFiles in the construction options instead.\n */\n /* eslint-disable-next-line @typescript-eslint/unified-signatures -- only one prototype is deprecated so cannot be unified */\n public manifest(explicitSourceFiles: SourceFiles[]): Promise<Manifest>;\n\n public async manifest(\n explicitSourceFiles?: SourceFiles[],\n ): Promise<Manifest> {\n if (explicitSourceFiles) {\n this.sourceFiles = explicitSourceFiles;\n /* eslint-disable-next-line no-console -- expected to log */\n console.error(\n \"[docs-generator] deprecated: passing in `sourceFiles` as a parameter to `Generator.manifest()` is deprecated, should be passed into the constructor options instead.\",\n );\n }\n\n const { sourceFiles } = this;\n\n const processors: Processor[] = [\n fileReaderProcessor(sourceFiles),\n redirectProcessor(),\n ...this.processors,\n ];\n\n const examplePatterns = this.exampleFolders.map((it) => `${it}/**/*`);\n const exampleFileMatcher = fileMatcher(examplePatterns);\n const templateLoader = createTemplateLoader([]);\n const context = createContext({\n outputFolder: \"\",\n exampleFileMatcher,\n templateLoader,\n });\n await stage(\"generate-docs\", context, processors, { verbose: false });\n\n const docs = context.docs.filter(isDocumentPage).filter(haveOutput);\n const pages = docs.map((doc) => {\n return manifestPageFromDocument({ exampleFileMatcher }, doc);\n });\n return { pages };\n }\n\n /**\n * Build the documentation project.\n *\n * @public\n * @returns A promise resolving to a list of generated files.\n */\n public build(): Promise<string[]>;\n\n /**\n * Build the documentation project.\n *\n * @public\n * @deprecated Pass in the sourceFiles in the construction options instead.\n * @returns A promise resolving to a list of generated files.\n */\n /* eslint-disable-next-line @typescript-eslint/unified-signatures -- only one prototype is deprecated so cannot be unified */\n public build(sourceFiles: SourceFiles[]): Promise<string[]>;\n\n public async build(explicitSourceFiles?: SourceFiles[]): Promise<string[]> {\n if (explicitSourceFiles) {\n this.sourceFiles = explicitSourceFiles;\n /* eslint-disable-next-line no-console -- expected to log */\n console.error(\n \"[docs-generator] deprecated: passing in `sourceFiles` as a parameter to `Generator.build()` is deprecated, should be passed into the constructor options instead.\",\n );\n }\n\n const {\n site,\n outputFolder,\n cacheFolder,\n assetFolder,\n exampleFolders,\n templateFolders,\n setupPath,\n sourceFiles,\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 linkResolvers = this.processors\n .map((it) => (it.enabled !== false ? it.resolveLink : undefined))\n .filter((it): it is LinkResolver => Boolean(it));\n const processors: Processor[] = [\n fileReaderProcessor(sourceFiles),\n redirectProcessor(),\n vendorProcessor(assetFolder, this.vendor),\n cssAssetProcessor(assetFolder, this.styles),\n jsAssetProcessor(outputFolder, 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 linkResolvers,\n markdown: markdownOptions ?? {},\n }),\n ...this.processors,\n ];\n\n compileProcessorRuntime(this, import.meta.url, processors);\n\n const templateLoader = createTemplateLoader(templateFolders);\n const context = createContext({\n outputFolder,\n exampleFileMatcher: fileMatcher(examplePatterns),\n templateLoader,\n });\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();\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"],"names":["toArray","cacheKey","globSync","path","value","pkg","it","glob","md","markdownIt","findExamples","content","fm","relative","parent","parseFile","compileScript","babelParser","EMPTY_CHAR","EM_DASH","render","renderInline","parse","docs","byPriority","originalBuild","fs","nodeFS","tsconfig","cache","exampleWorkerUrl","active","message","doc","fileInfo","pathPosix","filter.relative","dst","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/has-pretty-error.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/take-while.ts","../src/utils/is-release.ts","../src/utils/zip.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/processors/cookie-processor.ts","../src/document/document-attributes.ts","../src/document/is-document-partial.ts","../src/examples/get-example-name.ts","../src/examples/generate-example.ts","../src/manifest/manifest-page-from-document.ts","../src/processors/manifest-processor.ts","../src/processors/extract-markdown-processor.ts","../src/processors/extract-examples-processor.ts","../src/processors/motd-processor.ts","../src/processors/playground-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/processors/source-url-processor.ts","../src/navigation/generate-navtree.ts","../src/navigation/sort-navigation-tree.ts","../src/navigation/navigation-processor.ts","../src/processors/topnav-processor.ts","../src/processors/version-processor.ts","../src/search/generate-index.ts","../src/search/search-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/file-reader/partial-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/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"],"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 * A function to search for a filename.\n *\n * The filename can optionally include subdirectories or glob patterns:\n *\n * - `foo.ts` searches for `foo.ts` anywhere.\n * - `bar/foo.ts` searches for `foo` in any `bar` directory.\n * - `bar/**\\/foo.ts` searches `foo` anywhere in an `bar` directory.\n *\n * @public\n * @since %version%\n * @param filename - The filename to search for\n * @param context - An optional context for usage in error messages\n * @throws Throws an error if the filename could not be found\n * @returns Filename relative to project root\n */\nexport type FileMatcher = (filename: string, context?: string) => string;\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(patterns: string[]): FileMatcher {\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 /* if the path starts with `../` we strip it out before matching or\n * `path.matchesGlob()` wont match */\n const stem = file.replace(/^(?:\\.\\.\\/)+/, \"\");\n return path.matchesGlob(stem, `**/${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 }\n 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 }\n return matches[0];\n });\n}\n","export function formatSize(value: number): string {\n if (value < 1000) {\n return String(value);\n }\n const suffices = [\"kB\", \"MB\"];\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\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 = /^[^@]+@(?<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 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 }\n return runCommand(`git rev-parse --short HEAD`);\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 * An error that provides a human-friendly formatted message.\n *\n * @public\n * @since %version%\n */\nexport interface PrettyError {\n prettyError(): string;\n}\n\n/**\n * Tell if an error exposes a `prettyError()` method for human-friendly output.\n *\n * @public\n * @since %version%\n */\nexport function hasPrettyError(value: unknown): value is PrettyError {\n if (!value) {\n return false;\n }\n if (typeof value !== \"object\") {\n return false;\n }\n return \"prettyError\" in value && typeof value.prettyError === \"function\";\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 | number | boolean | null | { [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 value\n .toLowerCase()\n .replaceAll(\"/\", \"--\")\n .replaceAll(/[^a-z]+/g, \"-\")\n .replace(/^-+|-+$/, \"\");\n}\n","/**\n * @internal\n */\nexport function* takeWhile<T>(\n it: T[] | IterableIterator<T>,\n predicate: (value: T) => boolean,\n): Generator<T, void> {\n for (const value of it) {\n if (!predicate(value)) {\n return;\n }\n yield value;\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 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","/**\n * @internal\n */\nexport function* zip<T, U>(\n a: T[] | IterableIterator<T, void>,\n b: U[] | IterableIterator<U, void>,\n): Generator<[T, U], void> {\n const ia = Array.isArray(a) ? a.values() : a;\n const ib = Array.isArray(b) ? b.values() : b;\n for (;;) {\n const va = ia.next();\n const vb = ib.next();\n if (va.done || vb.done) {\n return;\n }\n yield [va.value, vb.value];\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 }\n return undefined;\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 continue;\n }\n\n traverseParents(parentInterface, pkg);\n hierarchy.push(parentInterface);\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) {\n if (!isSupported(member)) {\n continue;\n }\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().toArray();\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 ? \": \" : \" \".repeat(4);\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 const filenames = await getFilenames(patterns);\n for (const filename of filenames) {\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","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 runtime: [{ src: \"src/runtime/cookie.ts\" }],\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","/**\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 | ComponentAttribute | 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 { type Document } from \"./document\";\nimport { type DocumentPartial } from \"./document-partial\";\n\n/**\n * @internal\n */\nexport function isDocumentPartial(doc: Document): doc is DocumentPartial {\n return doc.kind === \"partial\";\n}\n","import path from \"node:path\";\n\n/**\n * Get name without path and extension.\n *\n * @internal\n */\nexport function getExampleName(filename: string): string {\n return path.parse(filename).name;\n}\n","import fs from \"node:fs\";\nimport { version } from \"vue\";\nimport { getFingerprint, parseImport } from \"../utils\";\nimport { type ExampleOptions } from \"./example-options\";\nimport { type ExampleResult } from \"./example-result\";\nimport { getExampleName } from \"./get-example-name\";\nimport { generateCode as vue3 } from \"plugin-vue3\";\n\nconst vueMajor = Number(version.split(\".\", 2)[0]) as 2 | 3;\n\nfunction vueGenerator(): typeof vue3 {\n switch (vueMajor) {\n case 2:\n throw new Error(\n \"Vue 2 is no longer supported, upgrade to Vue 3 or downgrade docs-generator\",\n );\n case 3:\n return vue3;\n }\n}\n\n/**\n * @internal\n */\nexport function generateExample(options: ExampleOptions): ExampleResult {\n const { language, fileMatcher } = options;\n\n if (language === \"import\") {\n const parsed = parseImport(options.source);\n const filename = fileMatcher(parsed.filename, \"when importing example\");\n const language = parsed.extension;\n const comments = parsed.comments;\n const content = fs.readFileSync(filename, \"utf8\");\n const example = generateExample({\n ...options,\n source: content,\n language,\n filename,\n });\n return { ...example, comments };\n }\n\n switch (language) {\n case \"vue\":\n return generateVueExample(options);\n case \"html\":\n return generateStaticExample(options);\n default:\n return generateStaticExample(options);\n }\n}\n\nfunction generateVueExample(options: ExampleOptions): ExampleResult {\n const { filename, source, parent, setupPath, tags } = options;\n const fn = vueGenerator();\n const slug = getExampleName(filename);\n const fingerprint = getFingerprint(source);\n const { markup, sourcecode, output } = fn({\n filename,\n slug,\n fingerprint,\n code: source,\n setupPath,\n });\n if (output) {\n return {\n source,\n language: options.language,\n comments: [],\n tags,\n markup,\n output,\n runtime: true,\n task: {\n outputFile: output,\n sourcecode,\n sourceFile: filename,\n parent,\n },\n };\n }\n return {\n source: sourcecode,\n language: \"plaintext\",\n comments: [],\n tags,\n markup,\n output: null,\n runtime: true,\n task: null,\n };\n}\n\nfunction generateStaticExample(options: ExampleOptions): ExampleResult {\n const { filename, source, language, tags } = options;\n const slug = getExampleName(filename);\n const fingerprint = getFingerprint(source);\n const asset = `${slug}-${fingerprint}.${language}`;\n const runtimeLanguages = [\"html\"];\n const runtime = runtimeLanguages.includes(language);\n return {\n source,\n language: options.language,\n comments: [],\n tags,\n markup: source,\n output: runtime ? asset : null,\n runtime,\n task: null,\n };\n}\n","import markdownIt, { type Env } from \"markdown-it\";\nimport { type DocumentOutline, type DocumentPage } from \"../document\";\nimport { parseInfostring } from \"../examples\";\nimport { type ProcessorContext } from \"../processor-context\";\nimport {\n type FileMatcher,\n findTag,\n getFingerprint,\n getOutputFilePath,\n hasTag,\n parseImport,\n} 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\ninterface MarkdownEnv extends Env {\n readonly collected: ManifestExamples;\n readonly exampleFileMatcher: FileMatcher;\n}\n\nconst md = markdownIt();\n\nmd.renderer.rules.fence = (\n tokens,\n idx,\n _options,\n env,\n /* eslint-disable-next-line sonarjs/no-invariant-returns -- function works as intended */\n) => {\n const { collected, exampleFileMatcher } = env as MarkdownEnv;\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 src: string | null = null;\n let language = rawLanguage;\n\n if (hasTag(tags, \"compare\")) {\n language = \"diff\";\n }\n\n if (language === \"import\") {\n const parsed = parseImport(content);\n src = exampleFileMatcher(parsed.filename);\n extension = parsed.extension;\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 src,\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(\n context: Pick<ProcessorContext, \"exampleFileMatcher\">,\n doc: DocumentPageLike,\n): ManifestExamples {\n const { exampleFileMatcher } = context;\n if (doc.format !== \"markdown\") {\n return [];\n }\n const collected: ManifestExamples = [];\n md.render(doc.body, {\n exampleFileMatcher,\n collected,\n } satisfies MarkdownEnv);\n return collected;\n}\n\n/**\n * @internal\n */\nexport function manifestPageFromDocument(\n context: Pick<ProcessorContext, \"exampleFileMatcher\">,\n doc: DocumentPageLike,\n): ManifestPage {\n const { body, fileInfo, format } = doc;\n return {\n path: getOutputFilePath(\"\", fileInfo),\n src: doc.fileInfo.fullPath,\n title: doc.attributes.title ?? doc.name,\n redirect: format === \"redirect\" ? body : null,\n outline: flattenOutline(doc.outline),\n examples: findExamples(context, doc),\n };\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { isDocumentPage } from \"../document\";\nimport { type Manifest, manifestPageFromDocument } from \"../manifest\";\nimport { type Processor } from \"../processor\";\nimport { haveOutput } from \"../utils\";\n\ndeclare module \"../state-map\" {\n export interface StateMap {\n [manifestState]: Manifest;\n }\n}\n\ntype ManifestPage = Manifest[\"pages\"][number];\n\n/** @internal */\nexport const manifestState = Symbol(\"manifest\");\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((doc) =>\n manifestPageFromDocument(context, doc),\n );\n pages.sort((a, b) => {\n return a.path.localeCompare(b.path);\n });\n const manifest: Manifest = { pages };\n context.setState(manifestState, manifest);\n if (markdown) {\n const content = normalize(renderMarkdown(manifest));\n await fs.mkdir(path.dirname(markdown), { recursive: true });\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 /* eslint-disable-next-line unicorn/prefer-early-return -- for consistency with other ifs */\n if (json) {\n const content = renderJSON(manifest);\n await fs.mkdir(path.dirname(json), { recursive: true });\n await fs.writeFile(json, content, \"utf8\");\n }\n },\n };\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport fm from \"front-matter\";\nimport {\n type Document,\n type DocumentPage,\n getDocumentBody,\n isDocumentPage,\n isDocumentPartial,\n} from \"../document\";\nimport { type PartialFile } from \"../file-reader\";\nimport { type Manifest } from \"../manifest\";\nimport { type Processor, type ProcessorOptions } from \"../processor\";\nimport {\n findDocument,\n getFingerprint,\n getOutputFilePath,\n haveOutput,\n takeWhile,\n zip,\n} from \"../utils\";\nimport { manifestState } from \"./manifest-processor\";\n\ntype ManifestPage = Manifest[\"pages\"][number];\n\n/**\n * Options for `extractMarkdownProcessor`.\n *\n * @public\n */\nexport interface ExtractMarkdownOptions extends ProcessorOptions {\n /**\n * Folder to write docs to.\n */\n outputFolder: string;\n}\n\nasync function copyFile(src: string, dst: string): Promise<void> {\n await fs.mkdir(path.dirname(dst), { recursive: true });\n await fs.cp(src, dst);\n}\n\nfunction equal<T>(values: [T, T]): boolean {\n return values[0] === values[1];\n}\n\n/**\n * Finds the common path segments from two paths.\n */\nfunction commonPath(a: string, b: string): string {\n const it = zip(a.split(path.sep), b.split(path.sep));\n const common = Array.from(takeWhile(it, equal), (it) => it[0]);\n return common.join(path.sep);\n}\n\nasync function extractExamples(\n page: ManifestPage,\n options: { outputFolder: string },\n): Promise<void> {\n const { outputFolder } = options;\n for (const example of page.examples) {\n /* inline examples do not have a source file */\n if (!example.src) {\n continue;\n }\n const common = commonPath(\n path.resolve(outputFolder),\n path.resolve(example.src),\n );\n const subpath = path.relative(common, path.resolve(example.src));\n await copyFile(example.src, path.join(outputFolder, \"files\", subpath));\n }\n}\n\nfunction isMarkdown(doc: DocumentPage): boolean {\n return doc.format === \"markdown\";\n}\n\nasync function getFrontMatter(filePath: string): Promise<string> {\n const content = await fs.readFile(filePath, \"utf8\");\n const { attributes } = fm<Record<string, unknown>>(content);\n delete attributes.redirect_from;\n if (Object.keys(attributes).length === 0) {\n return \"\";\n }\n return `---\\n${JSON.stringify(attributes)}\\n---\\n\\n`;\n}\n\nfunction cmp(this: void, a: [string, string], b: [string, string]): number {\n return a[0].localeCompare(b[0]);\n}\nasync function extractDocument(\n doc: DocumentPage,\n docs: Document[],\n partials: Map<string, PartialFile>,\n options: { outputFolder: string },\n): Promise<void> {\n const { outputFolder } = options;\n const markdown = doc.body.replaceAll(\n /^:::\\s*api(.*)\\n([\\s\\S]+?):::/gm,\n (match, info: string, content: string) => {\n const needle = content.trim();\n const trimmedInfo = info.trim();\n const tags = trimmedInfo ? trimmedInfo.split(/\\s+/) : [];\n const result = findDocument(docs, needle);\n if (!result.document) {\n return match;\n }\n\n const { document, kind, reference } = result;\n if (!isDocumentPartial(document)) {\n return match;\n }\n\n const body = getDocumentBody(document, tags, {\n kind,\n reference,\n });\n const fingerprint = getFingerprint(body);\n const id = `partial:${document.format}:${fingerprint}`;\n\n partials.set(id, {\n id,\n format: document.format,\n body,\n });\n\n return `:::api\\n${id}\\n:::\\n`;\n },\n );\n const src = doc.fileInfo.fullPath;\n const dst = path.join(outputFolder, \"files\", doc.fileInfo.fullPath);\n const fm = await getFrontMatter(src);\n const content = `${fm}${markdown}`;\n\n await fs.mkdir(path.dirname(dst), { recursive: true });\n await fs.writeFile(dst, content, \"utf8\");\n}\n\nasync function extractDocuments(\n docs: Document[],\n partials: Map<string, PartialFile>,\n options: { outputFolder: string },\n): Promise<void> {\n const files = docs\n .filter(isDocumentPage)\n .filter(isMarkdown)\n .filter(haveOutput)\n .map((doc) => extractDocument(doc, docs, partials, options));\n await Promise.all(files);\n}\n\nasync function extractPartials(\n partials: Map<string, PartialFile>,\n options: { outputFolder: string },\n): Promise<void> {\n const { outputFolder } = options;\n const dst = path.join(outputFolder, \"partials.json\");\n const content = JSON.stringify(Array.from(partials.values()), null, 2);\n await fs.mkdir(path.dirname(dst), { recursive: true });\n await fs.writeFile(dst, content, \"utf8\");\n}\n\nasync function extractLinks(\n docs: Document[],\n options: { outputFolder: string },\n): Promise<void> {\n const { outputFolder } = options;\n const links = new Map<string, string>();\n const pages = docs.filter(isDocumentPage).filter(haveOutput);\n for (const page of pages) {\n const path = getOutputFilePath(\"\", page.fileInfo);\n links.set(page.id, path);\n if (!links.has(page.name)) {\n links.set(page.name, path);\n }\n for (const alias of page.alias) {\n if (!links.has(alias)) {\n links.set(alias, path);\n }\n }\n }\n const sorted = Array.from(links).toSorted(cmp);\n const entries = Object.fromEntries(sorted);\n const content = JSON.stringify(entries, null, 2);\n const dst = path.join(outputFolder, \"links.json\");\n await fs.mkdir(path.dirname(dst), { recursive: true });\n await fs.writeFile(dst, content, \"utf8\");\n}\n\nasync function writeIndex(options: { outputFolder: string }): Promise<void> {\n const { outputFolder } = options;\n const dst = path.join(outputFolder, \"index.mjs\");\n const lines = [\n `import path from \"node:path\";`,\n `import { frontMatterFileReader, partialFileReader } from \"@forsakringskassan/docs-generator\";`,\n ``,\n `export const basename = import.meta.dirname;`,\n `export const exampleFolders = [path.join(basename, \"files\")];`,\n `export const filesPath = path.join(basename, \"files\");`,\n `export const partialsPath = [path.join(basename, \"partials.json\")];`,\n `export const linksPath = [path.join(basename, \"links.json\")];`,\n ``,\n `export function sourceFiles(src) {`,\n ` return [`,\n ` { `,\n ` include: path.join(basename, \"files/**/*.md\"),`,\n ` basename,`,\n ` fileReader: frontMatterFileReader,`,\n ` ...src`,\n ` },`,\n ` { `,\n ` include: path.join(basename, \"partials.json\"),`,\n ` basename,`,\n ` fileReader: partialFileReader,`,\n ` }`,\n ` ];`,\n `}`,\n ];\n await fs.writeFile(dst, lines.join(\"\\n\"), \"utf8\");\n}\n\nasync function writeDts(options: { outputFolder: string }): Promise<void> {\n const { outputFolder } = options;\n const dst = path.join(outputFolder, \"index.d.mts\");\n const lines = [\n `import { SourceFiles } from \"@forsakringskassan/docs-generator\";`,\n ``,\n `export declare const basename: string;`,\n `export declare const exampleFolders: string[];`,\n `export declare const filesPath: string;`,\n `export declare const partialsPath: string;`,\n `export declare const linksPath: string;`,\n ``,\n `export declare function sourceFiles(src: Partial<SourceFiles>): SourceFiles[];`,\n ];\n await fs.writeFile(dst, lines.join(\"\\n\"), \"utf8\");\n}\n\n/**\n * Processor to extract and write examples to separate files.\n *\n * @public\n */\nexport function extractMarkdownProcessor(\n options: ExtractMarkdownOptions,\n): Processor {\n const { enabled = true, outputFolder } = options;\n\n return {\n after: \"render\",\n name: \"extract-markdown-processor\",\n async handler(context) {\n if (!enabled) {\n return;\n }\n\n if (!outputFolder) {\n throw new Error(\n `\"outputFolder\" not set in \"extractMarkdownProcessor(..)\"`,\n );\n }\n\n const manifest = context.getState(manifestState);\n if (!manifest) {\n throw new Error(\n `\"extractMarkdownProcessor()\" requires \"manifestProcess()\"`,\n );\n }\n\n /* clear and recreate old output folder */\n await fs.rm(outputFolder, { recursive: true, force: true });\n await fs.mkdir(outputFolder, { recursive: true });\n\n /* copy all resources from rendered pages */\n const partials = new Map<string, PartialFile>();\n await extractDocuments(context.docs, partials, { outputFolder });\n await extractPartials(partials, { outputFolder });\n await extractLinks(context.docs, { outputFolder });\n const { pages } = manifest;\n const resources = pages.map((page) => {\n return extractExamples(page, { outputFolder });\n });\n await Promise.all(resources);\n\n /* write an index for programmatical usage */\n await writeIndex({ outputFolder });\n await writeDts({ outputFolder });\n },\n };\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, rawEnv) => {\n const { collected } = rawEnv as { collected: Example[] };\n\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 }\n return \"\";\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 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 return;\n }\n\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\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","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { strFromU8, strToU8, zlibSync } from \"fflate\";\nimport { type Processor, type ProcessorOptions } from \"../processor\";\nimport { interpolate } from \"../utils\";\n\n/**\n * Options for a playground entry.\n *\n * @public\n */\nexport interface PlaygroundProcessorEntry {\n /**\n * Unique identifier for this playground.\n */\n readonly id: string;\n\n /**\n * Name of template variable with the playground URL to inject.\n *\n * If unspecified, no template variable will be available.\n */\n readonly variable?: string;\n\n /**\n * The URL format.\n *\n * The following placeholders are available:\n *\n * - `base64`: Base64 encoded payload (use \"atou\" to decode unicode codepoints).\n * - `zlibBase64`: zlib base64 encoded payload.\n */\n readonly urlFormat: string;\n\n /**\n * Path to a folder with files to inject into the playground url.\n *\n * If unspecified, no files will be injected by default.\n */\n readonly folder?: string;\n\n /**\n * Serialize the files to a string for using in the url generation.\n *\n * Default is `JSON.stringify()`.\n */\n serialize?(\n this: void,\n context: {\n readonly files: Map<string, string>;\n },\n ): string | Promise<string>;\n}\n\n/**\n * Options for {@link playgroundProcessor}.\n *\n * @public\n */\nexport interface PlaygroundProcessorOptions extends ProcessorOptions {\n /**\n * List of playgrounds available.\n *\n * Default is empty array (no playgrounds enabled)\n */\n readonly entries?: PlaygroundProcessorEntry[];\n}\n\n/**\n * @internal\n */\nexport interface NormalizedEntry {\n readonly id: string;\n readonly variable: string | null;\n readonly urlFormat: string;\n readonly folder: string | null;\n serialize(\n this: void,\n context: {\n readonly files: Map<string, string>;\n },\n ): string | Promise<string>;\n}\n\nfunction utoa(value: string): string {\n /* eslint-disable-next-line @typescript-eslint/no-deprecated -- deprecated by the standard way of handling unicode codepoints */\n return btoa(unescape(encodeURIComponent(value)));\n}\n\nconst encoder: Partial<Record<PropertyKey, (value: string) => string>> = {\n base64(value) {\n return utoa(value);\n },\n zlibBase64(value) {\n const buffer = strToU8(value);\n const zipped = zlibSync(buffer, { level: 9 });\n const binary = strFromU8(zipped, true);\n return btoa(binary);\n },\n};\n\nfunction defaultSerializer(\n this: void,\n context: { readonly files: Map<string, string> },\n): string {\n const { files } = context;\n return JSON.stringify(Object.fromEntries(files));\n}\n\n/**\n * @internal\n */\nexport function normalizeEntry(\n entry: PlaygroundProcessorEntry,\n): NormalizedEntry {\n return {\n variable: null,\n folder: null,\n ...entry,\n serialize: entry.serialize ?? defaultSerializer,\n };\n}\n\n/**\n * @internal\n */\nexport function normalizeEntries(\n entries: PlaygroundProcessorEntry[] | undefined,\n): NormalizedEntry[] {\n if (!entries) {\n return [];\n }\n return entries.map(normalizeEntry);\n}\n\n/**\n * @internal\n */\nexport async function getFiles(\n entry: Pick<NormalizedEntry, \"folder\">,\n): Promise<Map<string, string>> {\n const { folder: cwd } = entry;\n const result = new Map<string, string>();\n if (!cwd) {\n return result;\n }\n const filenames = await Array.fromAsync(fs.glob(\"**\", { cwd }));\n const sorted = filenames.toSorted((a, b) => a.localeCompare(b));\n for (const filename of sorted) {\n const filePath = path.join(cwd, filename);\n const st = await fs.lstat(filePath);\n if (!st.isFile()) {\n continue;\n }\n const content = await fs.readFile(filePath, \"utf8\");\n result.set(filename, content);\n }\n return result;\n}\n\nfunction encode(key: PropertyKey, value: string): string | undefined {\n const fn = encoder[key] ?? (() => undefined);\n return fn(value);\n}\n\n/**\n * @internal\n */\nexport async function generateUrl(\n entry: Pick<NormalizedEntry, \"folder\" | \"serialize\" | \"urlFormat\">,\n): Promise<string> {\n const files = await getFiles(entry);\n const payload = await entry.serialize({ files });\n const lazyEvaluation = new Proxy({}, { get: (_, k) => encode(k, payload) });\n return encodeURI(interpolate(entry.urlFormat, lazyEvaluation));\n}\n\n/**\n * Generates links to code playgrounds.\n *\n * @public\n */\n/* istanbul ignore next */\nexport function playgroundProcessor(\n options: PlaygroundProcessorOptions,\n): Processor {\n const { enabled = true } = options;\n const entries = normalizeEntries(options.entries);\n return {\n after: \"generate-docs\",\n name: \"playground-processor\",\n async handler(context) {\n if (!enabled) {\n return;\n }\n for (const entry of entries) {\n if (!entry.variable) {\n continue;\n }\n const url = await generateUrl(entry);\n context.setTemplateData(entry.variable, url);\n }\n },\n };\n}\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) {\n if (!isDocumentPage(doc)) {\n continue;\n }\n if (!haveOutput(doc)) {\n continue;\n }\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 { 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] | [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 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 }\n return [\n `./${path.join(fileInfo.path, fileInfo.name).replaceAll(\"\\\\\", \"/\")}`,\n false,\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 (Object.hasOwn(section, anchestor)) {\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 | 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 }\n return {\n key: \".\",\n title: \"\",\n path: \"\",\n sortorder: Infinity,\n children: [],\n visible: true,\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 }\n 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 { isDocumentPage } from \"../document\";\nimport { type Processor } from \"../processor\";\nimport { generateNavtree } from \"./generate-navtree\";\nimport { sortNavigationTree } from \"./sort-navigation-tree\";\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 sortNavigationTree(navtree);\n context.setTopNavigation(navtree);\n context.setSideNavigation(navtree);\n },\n };\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path/posix\";\nimport { isDocumentPage } from \"../document\";\nimport { type NavigationSection, sortNavigationTree } 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 //Call sortNavigationTree to ensure submenus are correctly ordered in the mobile menu.\n sortNavigationTree(navtree);\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, type ProcessorOptions } 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 extends ProcessorOptions {\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 }\n return branch;\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 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) {\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 runtime: [{ src: \"src/runtime/search.ts\" }],\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(\"head\", \"search-preload\", {\n filename: \"partials/search-preload.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","import { matomoProcessor } from \"./matomo\";\nimport {\n cookieProcessor,\n manifestProcessor,\n motdProcessor,\n selectableVersionProcessor,\n sourceUrlProcessor,\n topnavProcessor,\n versionProcessor,\n} from \"./processors\";\nimport { playgroundProcessor } from \"./processors/playground-processor\";\nimport { searchProcessor } from \"./search\";\n\n/**\n * Used by build-script to find all runtime scripts that needs compilation.\n *\n * @internal\n */\nexport const availableProcessors = [\n playgroundProcessor({ entries: [] }),\n cookieProcessor(),\n manifestProcessor(),\n matomoProcessor({ siteId: \"\", trackerUrl: \"\" }),\n motdProcessor({ message: \"\" }),\n searchProcessor(),\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 { 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): {\n start: { line: number; column: number };\n end: { line: number; column: number };\n} | 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: 0 },\n end: { line: index + blockBegin, column: 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 }\n if (d <= threshold) {\n return [message, \"\", suggestion].join(\"\\n\");\n }\n return message;\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 }\n return value;\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 /* eslint-disable-next-line unicorn/prefer-logical-operator-over-ternary -- false positive? */\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 node.value\n .replaceAll(/^\\s*\\*\\s/gm, \"\") // removes leading whitespace and *\n .replaceAll(/\\s+$/gm, \"\"); // removes trailing whitespace\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 return;\n }\n const [name, ...defaultOrParams] = node.arguments;\n if (name.type !== \"StringLiteral\") {\n return;\n }\n const textArgument = defaultOrParams.find(isStringLiteral);\n const paramArgument = defaultOrParams.find(isObjectExpression);\n const defaultTranslation = textArgument ? textArgument.value : 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 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 ${\n event.deprecated === null\n ? \"\"\n : `<span class=\"docs-tag docs-tag--deprecated\">Deprecated</span>`\n }\n </dt>\n <dd>\n ${render(event.description)}\n ${\n haveProperties\n ? `<p class=\"docs-api__list-title\">Arguments:</p><ul class=\"docs-api__list\">`\n : \"\"\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 }\n return `<li><code>${htmlencode(it.name)}: ${htmlencode(it.type)}</code></li>`;\n })\n .join(\"\")}\n ${haveProperties ? `</ul>` : \"\"}\n ${\n event.deprecated\n ? `<p class=\"docs-api__deprecated docs-deprecated\">Deprecated: ${renderInline(event.deprecated)}</p>`\n : \"\"\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 ${\n model.required\n ? \"\"\n : `<span class=\"docs-tag docs-tag--default\">Optional</span>`\n }\n ${\n model.deprecated === null\n ? \"\"\n : `<span class=\"docs-tag docs-tag--deprecated\">Deprecated</span>`\n }\n </dt>\n <dd>\n ${render(model.description)}\n ${\n model.default\n ? `<p class=\"doc-api__item\">Default: <code>${htmlencode(model.default.value)}</code></p>`\n : \"\"\n }\n ${\n model.deprecated\n ? `<p class=\"doc-api__item docs-deprecated\">Deprecated: ${renderInline(model.deprecated)}</p>`\n : \"\"\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 ${\n prop.required\n ? \"\"\n : `<span class=\"docs-tag docs-tag--default\">Optional</span>`\n }\n ${\n prop.deprecated === null\n ? \"\"\n : `<span class=\"docs-tag docs-tag--deprecated\">Deprecated</span>`\n }\n </dt>\n <dd>\n ${render(prop.description)}\n ${\n prop.default\n ? `<p class=\"doc-api__item\">Default: <code>${htmlencode(prop.default.value)}</code></p>`\n : \"\"\n }\n ${\n prop.deprecated\n ? `<p class=\"doc-api__item docs-deprecated\">Deprecated: ${renderInline(prop.deprecated)}</p>`\n : \"\"\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 ${\n slot.deprecated === null\n ? \"\"\n : `<span class=\"docs-tag docs-tag--deprecated\">Deprecated</span>`\n }\n </dt>\n <dd>\n ${render(slot.description)}\n ${\n haveBindings\n ? `<p class=\"docs-api__list-title\">Bindings:</p><ul class=\"docs-api__list\">`\n : \"\"\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 }\n return `<li><code>${htmlencode(it.name)}: ${htmlencode(it.type)}</code></li>`;\n })\n .join(\"\")}\n ${haveBindings ? `</ul>` : \"\"}\n ${\n slot.deprecated\n ? `<p class=\"docs-api__deprecated docs-deprecated\">Deprecated: ${renderInline(slot.deprecated)}</p>`\n : \"\"\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 ${\n translation.defaultTranslation\n ? `<p class=\"doc-api__item\">Default: \"${htmlencode(translation.defaultTranslation)}\"</p>`\n : \"\"\n }\n ${\n haveParameters\n ? `<p class=\"docs-api__list-title\">Parameters:</p><ul class=\"docs-api__list\">`\n : \"\"\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 }\n return `<li><code>${htmlencode(it.name)}</code></li>`;\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 }\n return tag.description;\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 | undefined;\n if (!tag?.content) {\n return null;\n }\n if (tag.content === true) {\n return \"\";\n }\n return tag.content;\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 }\n return `Array<${element.name}>`;\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 { type ProcessorContext } from \"../processor-context\";\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 pattern = [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(\n context: ProcessorContext,\n src: Partial<SourceFiles>,\n index: number,\n): Promise<Document[]> {\n const { transform, filter = () => true } = src;\n const include = await globAll(src.include);\n const exclude = await globAll(src.exclude);\n const files = Array.from(difference(include, exclude));\n let showWarning = true;\n const promises = files.map(async (it) => {\n if (!src.fileReader) {\n if (showWarning) {\n const lines = JSON.stringify(src, null, 2).split(\"\\n\");\n context.error(\n `\"${it}\" ignored: \\`fileReader\\` property was not specified in configuration.`,\n );\n context.error();\n context.error(\n `The file was matched from sourceFiles[${index}]:`,\n );\n for (const line of lines) {\n context.error(\" \", line);\n }\n context.error();\n context.error(\"This warning is only shown once.\");\n showWarning = false;\n }\n\n return [];\n }\n\n const allDocs = await src.fileReader(it, src.basePath);\n const docs = allDocs.filter(filter);\n if (transform) {\n return docs.map((it) => transform(it));\n }\n return docs;\n });\n const docs = await Promise.all(promises);\n return docs.flat();\n}\n\nasync function getAllDocuments(\n context: ProcessorContext,\n sourceFiles: SourceFiles[],\n): Promise<Document[]> {\n const result = await Promise.all(\n sourceFiles.map((entry, index) => {\n return getDocumentsForSource(context, entry, index);\n }),\n );\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(context, 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 { type DocumentPartial } from \"../document\";\n\n/**\n * @internal\n */\nexport interface PartialFile {\n id: string;\n format: \"html\" | \"markdown\" | \"json\";\n body: string;\n}\n\n/**\n * @internal\n */\nexport function parseFile(\n filePath: string,\n content: string,\n): DocumentPartial[] {\n const parsed = JSON.parse(content) as PartialFile[];\n return parsed.map((it): DocumentPartial => {\n return {\n kind: \"partial\",\n id: it.id,\n name: it.id,\n alias: [],\n body: it.body,\n format: it.format,\n fileInfo: {\n fullPath: filePath,\n },\n };\n });\n}\n\n/**\n * Read partial documents for insertion in other markdown documents.\n *\n * @public\n */\n/* istanbul ignore next */\nexport async function partialFileReader(\n filePath: string,\n): Promise<DocumentPartial[]> {\n const content = await fs.readFile(filePath, \"utf8\");\n return parseFile(filePath, content);\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { moduleImporter } from \"@forsakringskassan/sass-module-importer\";\nimport { NodePackageImporter, compileAsync } from \"sass\";\n\n/**\n * @public\n * @param dst - Destination filename.\n * @param filePath - Sass path.\n */\nexport async function compileSassString(\n dst: string,\n filePath: string,\n): Promise<void> {\n const result = await compileAsync(filePath, {\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 { fileURLToPath } from \"node:url\";\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 filePath = typeof src === \"string\" ? src : fileURLToPath(src);\n\n await compileSassString(outfile, filePath);\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}\"`, { cause: err });\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 /* eslint-disable-next-line unicorn/no-break-in-nested-loop -- technical debt */\n break;\n case \"head\":\n head.push(inject);\n /* eslint-disable-next-line unicorn/no-break-in-nested-loop -- technical debt */\n break;\n case \"body\":\n body.push(inject);\n /* eslint-disable-next-line unicorn/no-break-in-nested-loop -- technical debt */\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.\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 name: string;\n src: string | URL;\n rootDir: string;\n outputFolder: string;\n outputName: string;\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 name,\n src,\n rootDir,\n outputFolder,\n outputName,\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 const sanitizedName = name.replaceAll(/[^a-z0-9-]+/gi, \"_\");\n\n try {\n const entryPoints = [src instanceof URL ? fileURLToPath(src) : src];\n const outfile = path.join(\"temp\", `asset-${sanitizedName}.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 = `${outputName}.js`\n .replaceAll(\"[name]\", () => sanitizedName)\n .replaceAll(\"[hash]\", () => fingerprint);\n const dst = path.join(outputFolder, filename);\n const publicPath = path.posix.join(\n path.posix.relative(rootDir, outputFolder),\n filename,\n );\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: `./${publicPath}`,\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 cause: err,\n });\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 outputFolder: string;\n outputName: string;\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 rootDir: 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 name: asset.name,\n src: asset.src,\n rootDir,\n outputFolder: asset.outputFolder,\n outputName: asset.outputName,\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 /* eslint-disable-next-line unicorn/no-break-in-nested-loop -- technical debt */\n break;\n case \"head\":\n head.push(inject);\n /* eslint-disable-next-line unicorn/no-break-in-nested-loop -- technical debt */\n break;\n case \"body\":\n body.push(inject);\n /* eslint-disable-next-line unicorn/no-break-in-nested-loop -- technical debt */\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 { 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.some((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 }\n return message;\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 { type LinkResolver } from \"../link-resolver\";\nimport {\n type NavigationLeaf,\n type NavigationNode,\n type NavigationSection,\n isNavigationSection,\n sortNavigationTree,\n} from \"../navigation\";\nimport { type FileMatcher, 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);\n\n/* eslint-disable-next-line unicorn/no-top-level-side-effects -- technical debt */\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 }\n const active = doc.id === node.id;\n return {\n ...node,\n active,\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(\"/\", 2)[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 }\n return true;\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 return;\n }\n\n exampleWorker.off(\"message\", onmessage);\n exampleWorker.off(\"error\", onerror);\n resolve();\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 return content.replaceAll(/\\s*<!-- prettier-ignore -->\\s*/g, \"\");\n}\n\n/**\n * @internal\n */\nexport async function render(\n doc: DocumentPage,\n docs: Document[],\n options: RenderOptions & {\n readonly exampleFileMatcher: FileMatcher;\n readonly nav: {\n readonly topnav: NavigationSection;\n readonly sidenav: NavigationSection;\n };\n readonly vendors: VendorAsset[];\n readonly linkResolvers: LinkResolver[];\n },\n): Promise<string | null> {\n const { fileInfo } = doc;\n const {\n i18n,\n outputFolder,\n cacheFolder,\n exampleFileMatcher,\n nav,\n templateFolders,\n vendors,\n linkResolvers,\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: exampleFileMatcher,\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 = exampleFileMatcher(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 linkResolvers,\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 const expandedDst = dst.replaceAll(/\\[([\\s\\S]+)\\]/g, (match, key) => {\n if (key === \"hash\") {\n return getFingerprint(doc.body);\n }\n return match;\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: \"\\u{2588}\",\n barIncompleteChar: \"\\u{2591}\",\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 return render(doc, context.docs, {\n ...options,\n exampleFileMatcher: context.exampleFileMatcher,\n nav: {\n topnav: context.topnav,\n sidenav: context.sidenav,\n },\n templateBlocks: context.getAllTemplateBlocks(),\n templateData: context.getAllTemplateData(),\n vendors: context.vendors,\n linkResolvers: options.linkResolvers,\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 }\n throw err;\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(35_729);\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 \"\\u{3}\": /* 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 }\n return {\n package: vendor.package,\n alias: vendor.alias ?? undefined,\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 { styleText } from \"node:util\";\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 { type LinkResolver } from \"./link-resolver\";\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 { type StateMap } from \"./state-map\";\nimport {\n type FileMatcher,\n fileMatcher,\n haveOutput,\n normalizePath,\n} 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 /**\n * List of source files to build documents from.\n */\n sourceFiles?: SourceFiles[];\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 | null;\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\" | \"error\">,\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 prefix = (() => {\n if (verbose) {\n return isLast ? \" \".repeat(6) : \" │ \";\n }\n return \"\";\n })();\n const result = await processor.handler({\n ...context,\n log(...args: unknown[]) {\n if (verbose) {\n console.log(prefix, ...args);\n }\n },\n error(...args: unknown[]) {\n process.exitCode = 1;\n console.error(\n prefix,\n ...args.map((it) =>\n typeof it === \"string\" ? styleText(\"red\", it) : it,\n ),\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(options: {\n outputFolder: string;\n exampleFileMatcher: FileMatcher;\n templateLoader: TemplateLoader;\n}): Omit<ProcessorContext, \"log\" | \"error\"> {\n const { outputFolder, exampleFileMatcher, templateLoader } = options;\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 const stateData = new Map<PropertyKey, 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 exampleFileMatcher,\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) 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 }\n if (defaultValue) {\n templateData.set(key, defaultValue);\n return defaultValue;\n }\n return undefined;\n },\n\n setTemplateData(key: string, value: unknown) {\n templateData.set(key, value);\n },\n\n setState(key, value) {\n stateData.set(key, value);\n },\n\n getState<K extends keyof StateMap>(key: K): StateMap[K] | null {\n if (!stateData.has(key)) {\n return null;\n }\n return stateData.get(key) as StateMap[K];\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 }\n return normalizePath(process.cwd());\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 | null;\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(\"\\\\\", \"/\") ?? null;\n this.scripts = [];\n this.styles = [];\n this.resources = [];\n this.sourceFiles = options.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 const runtimeUrl = new URL(\"runtime-internal.mjs\", import.meta.url);\n this.compileScript(\"runtime\", runtimeUrl, {\n appendTo: \"body\",\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 const { assetFolder } = this;\n this.scripts.push({\n name,\n src,\n outputFolder: assetFolder,\n outputName: \"[name]-[hash]\",\n options: {\n appendTo: \"none\",\n attributes: {},\n priority: 0,\n ...options,\n },\n buildOptions: {\n ...buildOptions,\n },\n });\n }\n\n /**\n * Compile a worker script.\n *\n * This is mostly the same as {@link Generator.compileScript} with some differences:\n *\n * - The script is written directly to `outputFolder` instead of `assetFolder` (i.e. to the web root).\n * - The output filename does not include a hash.\n *\n * @public\n * @since %version%\n * @param name - Asset name.\n * @param src - Asset entrypoint.\n * @param buildOptions - Options passed to `esbuild`.\n */\n public compileWorker(\n name: string,\n src: string | URL,\n buildOptions?: {\n format?: \"iife\" | \"cjs\" | \"esm\";\n define?: Record<string, string>;\n },\n ): void {\n const { outputFolder } = this;\n this.scripts.push({\n name,\n src,\n outputFolder,\n outputName: \"[name]\",\n options: {\n appendTo: \"none\",\n attributes: {},\n priority: 0,\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 manifest(): Promise<Manifest>;\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 * @deprecated Pass in the sourceFiles in the construction options instead.\n */\n /* eslint-disable-next-line @typescript-eslint/unified-signatures -- only one prototype is deprecated so cannot be unified */\n public manifest(explicitSourceFiles: SourceFiles[]): Promise<Manifest>;\n\n public async manifest(\n explicitSourceFiles?: SourceFiles[],\n ): Promise<Manifest> {\n if (explicitSourceFiles) {\n this.sourceFiles = explicitSourceFiles;\n /* eslint-disable-next-line no-console -- expected to log */\n console.error(\n \"[docs-generator] deprecated: passing in `sourceFiles` as a parameter to `Generator.manifest()` is deprecated, should be passed into the constructor options instead.\",\n );\n }\n\n const { sourceFiles } = this;\n\n const processors: Processor[] = [\n fileReaderProcessor(sourceFiles),\n redirectProcessor(),\n ...this.processors,\n ];\n\n const examplePatterns = this.exampleFolders.map((it) => `${it}/**/*`);\n const exampleFileMatcher = fileMatcher(examplePatterns);\n const templateLoader = createTemplateLoader([]);\n const context = createContext({\n outputFolder: \"\",\n exampleFileMatcher,\n templateLoader,\n });\n await stage(\"generate-docs\", context, processors, { verbose: false });\n\n const docs = context.docs.filter(isDocumentPage).filter(haveOutput);\n const pages = docs.map((doc) => {\n return manifestPageFromDocument({ exampleFileMatcher }, doc);\n });\n return { pages };\n }\n\n /**\n * Build the documentation project.\n *\n * @public\n * @returns A promise resolving to a list of generated files.\n */\n public build(): Promise<string[]>;\n\n /**\n * Build the documentation project.\n *\n * @public\n * @deprecated Pass in the sourceFiles in the construction options instead.\n * @returns A promise resolving to a list of generated files.\n */\n /* eslint-disable-next-line @typescript-eslint/unified-signatures -- only one prototype is deprecated so cannot be unified */\n public build(sourceFiles: SourceFiles[]): Promise<string[]>;\n\n public async build(explicitSourceFiles?: SourceFiles[]): Promise<string[]> {\n if (explicitSourceFiles) {\n this.sourceFiles = explicitSourceFiles;\n /* eslint-disable-next-line no-console -- expected to log */\n console.error(\n \"[docs-generator] deprecated: passing in `sourceFiles` as a parameter to `Generator.build()` is deprecated, should be passed into the constructor options instead.\",\n );\n }\n\n const {\n site,\n outputFolder,\n cacheFolder,\n assetFolder,\n exampleFolders,\n templateFolders,\n setupPath,\n sourceFiles,\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 linkResolvers = this.processors\n .map((it) => (it.enabled !== false ? it.resolveLink : undefined))\n .filter((it): it is LinkResolver => Boolean(it));\n const processors: Processor[] = [\n fileReaderProcessor(sourceFiles),\n redirectProcessor(),\n vendorProcessor(assetFolder, this.vendor),\n cssAssetProcessor(assetFolder, this.styles),\n jsAssetProcessor(outputFolder, 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 linkResolvers,\n markdown: markdownOptions ?? {},\n }),\n ...this.processors,\n ];\n\n compileProcessorRuntime(this, import.meta.url, processors);\n\n const templateLoader = createTemplateLoader(templateFolders);\n const context = createContext({\n outputFolder,\n exampleFileMatcher: fileMatcher(examplePatterns),\n templateLoader,\n });\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();\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"],"names":["toArray","cacheKey","globSync","path","value","pkg","it","glob","vue3","language","fs","md","markdownIt","findExamples","content","fm","relative","parent","parseFile","compileScript","babelParser","EMPTY_CHAR","EM_DASH","render","renderInline","parse","docs","byPriority","originalBuild","nodeFS","tsconfig","cache","exampleWorkerUrl","active","message","doc","fileInfo","pathPosix","filter.relative","dst","filter.json","filter.dump","filter.take","esbuild","stage","i18next"],"mappings":"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A,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAKI,GAAG,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAKjC,CAAA,CAAA,CAAG,MAAM,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CA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AA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEE,EAAE,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAC4B,EAAE,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAE7B,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AA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAC4B,EAAE,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAE7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAK3B,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACd,CAAA,CAAA,CAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACV;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA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,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEE,EAAE,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAC4B,EAAE,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAE7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAM7BA,CAAAA,CAAAA,CA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A,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAA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"}
|