@forsakringskassan/docs-generator 2.19.1 → 2.20.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/README.md +2 -4
- package/dist/compile-example.js +3 -3
- package/dist/compile-example.js.map +1 -1
- package/dist/{create-markdown-renderer-BVgcQwRq.js → create-markdown-renderer-LhP3SCgI.js} +12 -7
- package/dist/create-markdown-renderer-LhP3SCgI.js.map +1 -0
- package/dist/index.d.ts +0 -29
- package/dist/index.js +23 -50
- package/dist/index.js.map +1 -1
- package/dist/markdown.js +3 -3
- package/dist/processors/selectable-version.js +1 -1
- package/dist/runtime.js +6975 -4844
- package/dist/tsdoc-metadata.json +1 -1
- package/dist/{vendor-BO0JjPoU.js → vendor-CLvDQIrx.js} +2049 -1702
- package/dist/vendor-CLvDQIrx.js.map +1 -0
- package/dist/vue3-BKfEgvlU.js +1863 -0
- package/dist/vue3-BKfEgvlU.js.map +1 -0
- package/package.json +1 -1
- package/templates/base.template.html +4 -9
- package/dist/create-markdown-renderer-BVgcQwRq.js.map +0 -1
- package/dist/vendor-BO0JjPoU.js.map +0 -1
- package/dist/vue3-BitM0YmN.js +0 -13321
- package/dist/vue3-BitM0YmN.js.map +0 -1
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ npm install --save-dev --save-exact @forsakringskassan/docs-generator
|
|
|
10
10
|
|
|
11
11
|
You can start a development server with watch for incremental builds using `.serve()`.
|
|
12
12
|
|
|
13
|
-
```ts
|
|
13
|
+
```ts name=watch
|
|
14
14
|
import {
|
|
15
15
|
Generator,
|
|
16
16
|
livereloadProcessor,
|
|
@@ -35,7 +35,7 @@ docs.serve();
|
|
|
35
35
|
|
|
36
36
|
Vendor alias is optional, it lets you substitute one package for another when bundling. The example below substitutes the package `vue` with the package `vue/dist/esm.bundle.js`. When an alias is given the package can be imported using the given alias as well as the original package name. For instance, when using the following configuration "vue" can be imported and resolved as "vue/dist/esm.bundle.js".
|
|
37
37
|
|
|
38
|
-
```ts
|
|
38
|
+
```ts name=vendor-alias
|
|
39
39
|
import {
|
|
40
40
|
Generator,
|
|
41
41
|
livereloadProcessor,
|
|
@@ -50,8 +50,6 @@ const docs = new Generator({
|
|
|
50
50
|
vendor: [
|
|
51
51
|
{
|
|
52
52
|
package: "vue",
|
|
53
|
-
expose: "named",
|
|
54
|
-
subpaths: [],
|
|
55
53
|
alias: "vue/dist/esm.bundle.js",
|
|
56
54
|
},
|
|
57
55
|
],
|
package/dist/compile-example.js
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
var path$1 = require('node:path');
|
|
4
4
|
var esbuild = require('esbuild');
|
|
5
5
|
var vue = require('vue');
|
|
6
|
-
var vue3 = require('./vue3-
|
|
6
|
+
var vue3 = require('./vue3-BKfEgvlU.js');
|
|
7
7
|
var path = require('node:path/posix');
|
|
8
8
|
require('@vue/compiler-sfc');
|
|
9
|
-
require('./vendor-
|
|
9
|
+
require('./vendor-CLvDQIrx.js');
|
|
10
10
|
require('node:url');
|
|
11
11
|
require('fs');
|
|
12
12
|
require('node:fs');
|
|
@@ -100,7 +100,7 @@ async function compileExample(batch) {
|
|
|
100
100
|
entryPoints,
|
|
101
101
|
outdir,
|
|
102
102
|
bundle: true,
|
|
103
|
-
format: "
|
|
103
|
+
format: "esm",
|
|
104
104
|
platform: "browser",
|
|
105
105
|
external,
|
|
106
106
|
tsconfig,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile-example.js","sources":["../src/esbuild/virtual-entry-plugin.ts","../src/compile-example.ts"],"sourcesContent":["import path from \"node:path/posix\";\nimport { type Plugin } from \"esbuild\";\n\nconst pluginName = \"virtual-entry\";\n\nexport type VirtualEntries = Record<string, string>;\n\nexport function virtualEntryPlugin(entries: VirtualEntries): Plugin {\n function haveEntry(key: string): boolean {\n return Boolean(entries[key]);\n }\n\n function getEntry(key: string): string {\n return entries[key];\n }\n\n return {\n name: pluginName,\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n if (args.kind === \"entry-point\" && haveEntry(args.path)) {\n return {\n path: args.path,\n namespace: pluginName,\n };\n } else {\n return undefined;\n }\n });\n build.onLoad({ filter: /.*/, namespace: pluginName }, (args) => {\n const contents = getEntry(args.path);\n return {\n contents,\n loader: \"ts\",\n resolveDir: path.dirname(args.path),\n };\n });\n },\n };\n}\n","import path from \"node:path\";\nimport { type Plugin, build as esbuild } from \"esbuild\";\nimport { version } from \"vue\";\nimport { vuePlugin as Vue3Plugin } from \"plugin-vue3\";\nimport { virtualEntryPlugin } from \"./esbuild\";\nimport { type ExampleBatch } from \"./examples\";\n\nconst vueMajor = parseInt(version.split(\".\", 2)[0], 10) as 2 | 3;\nconst tsconfig = path.join(__dirname, \"../tsconfig-examples.json\");\n\nfunction stripExtension(filename: string): string {\n return filename.replace(\".js\", \"\");\n}\n\nfunction VuePlugin(): Plugin {\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 Vue3Plugin();\n }\n}\n\nasync function compileExample(batch: ExampleBatch): Promise<void> {\n const { outputFolder: outdir, external, tasks } = batch;\n const entryPoints = tasks.map((it) => {\n return { in: it.sourceFile, out: stripExtension(it.outputFile) };\n });\n const virtualEntries = tasks.map((it): [key: string, value: string] => {\n return [`./${it.sourceFile}`, it.sourcecode];\n });\n const iconLib = process.env.DOCS_ICON_LIB ?? \"@fkui/icon-lib-default\";\n try {\n await esbuild({\n entryPoints,\n outdir,\n bundle: true,\n format: \"
|
|
1
|
+
{"version":3,"file":"compile-example.js","sources":["../src/esbuild/virtual-entry-plugin.ts","../src/compile-example.ts"],"sourcesContent":["import path from \"node:path/posix\";\nimport { type Plugin } from \"esbuild\";\n\nconst pluginName = \"virtual-entry\";\n\nexport type VirtualEntries = Record<string, string>;\n\nexport function virtualEntryPlugin(entries: VirtualEntries): Plugin {\n function haveEntry(key: string): boolean {\n return Boolean(entries[key]);\n }\n\n function getEntry(key: string): string {\n return entries[key];\n }\n\n return {\n name: pluginName,\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n if (args.kind === \"entry-point\" && haveEntry(args.path)) {\n return {\n path: args.path,\n namespace: pluginName,\n };\n } else {\n return undefined;\n }\n });\n build.onLoad({ filter: /.*/, namespace: pluginName }, (args) => {\n const contents = getEntry(args.path);\n return {\n contents,\n loader: \"ts\",\n resolveDir: path.dirname(args.path),\n };\n });\n },\n };\n}\n","import path from \"node:path\";\nimport { type Plugin, build as esbuild } from \"esbuild\";\nimport { version } from \"vue\";\nimport { vuePlugin as Vue3Plugin } from \"plugin-vue3\";\nimport { virtualEntryPlugin } from \"./esbuild\";\nimport { type ExampleBatch } from \"./examples\";\n\nconst vueMajor = parseInt(version.split(\".\", 2)[0], 10) as 2 | 3;\nconst tsconfig = path.join(__dirname, \"../tsconfig-examples.json\");\n\nfunction stripExtension(filename: string): string {\n return filename.replace(\".js\", \"\");\n}\n\nfunction VuePlugin(): Plugin {\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 Vue3Plugin();\n }\n}\n\nasync function compileExample(batch: ExampleBatch): Promise<void> {\n const { outputFolder: outdir, external, tasks } = batch;\n const entryPoints = tasks.map((it) => {\n return { in: it.sourceFile, out: stripExtension(it.outputFile) };\n });\n const virtualEntries = tasks.map((it): [key: string, value: string] => {\n return [`./${it.sourceFile}`, it.sourcecode];\n });\n const iconLib = process.env.DOCS_ICON_LIB ?? \"@fkui/icon-lib-default\";\n try {\n await esbuild({\n entryPoints,\n outdir,\n bundle: true,\n format: \"esm\",\n platform: \"browser\",\n external,\n tsconfig,\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(\"development\"),\n \"process.env.DOCS_ICON_LIB\": JSON.stringify(iconLib),\n },\n plugins: [\n virtualEntryPlugin(Object.fromEntries(virtualEntries)),\n VuePlugin(),\n ],\n });\n } catch (err) {\n /* eslint-disable-next-line no-console -- expected to log */\n console.error(err);\n process.exitCode = 1;\n }\n}\n\nasync function readBatchData(): Promise<ExampleBatch> {\n const { stdin } = process;\n return new Promise((resolve, reject) => {\n const chunks: Buffer[] = [];\n stdin.on(\"data\", (chunk) => {\n chunks.push(chunk);\n });\n stdin.on(\"end\", () => {\n const content = Buffer.concat(chunks).toString(\"utf-8\");\n const parsed = JSON.parse(content);\n resolve(parsed);\n });\n stdin.on(\"error\", (error) => {\n reject(error);\n });\n });\n}\n\nasync function run(): Promise<void> {\n const batch = await readBatchData();\n await compileExample(batch);\n}\n\nrun();\n"],"names":["version","path","Vue3Plugin","esbuild"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var vendor = require('./vendor-
|
|
3
|
+
var vendor = require('./vendor-CLvDQIrx.js');
|
|
4
4
|
var path = require('node:path/posix');
|
|
5
5
|
var path$1 = require('node:path');
|
|
6
6
|
require('crypto');
|
|
@@ -8,7 +8,7 @@ var crypto = require('node:crypto');
|
|
|
8
8
|
require('node:child_process');
|
|
9
9
|
var fs = require('node:fs');
|
|
10
10
|
var vue = require('vue');
|
|
11
|
-
var vue3 = require('./vue3-
|
|
11
|
+
var vue3 = require('./vue3-BKfEgvlU.js');
|
|
12
12
|
|
|
13
13
|
function isDocumentPage(doc) {
|
|
14
14
|
return doc.kind === "page";
|
|
@@ -104,10 +104,15 @@ function htmlencode(text) {
|
|
|
104
104
|
|
|
105
105
|
function parseImport(raw) {
|
|
106
106
|
const comments = [];
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
let stripped = raw;
|
|
108
|
+
let previous;
|
|
109
|
+
do {
|
|
110
|
+
previous = stripped;
|
|
111
|
+
stripped = stripped.replace(/<!--.*?-->/gms, (match) => {
|
|
112
|
+
comments.push(match);
|
|
113
|
+
return "";
|
|
114
|
+
});
|
|
115
|
+
} while (stripped !== previous);
|
|
111
116
|
const filename = stripped.trim();
|
|
112
117
|
const extension = path$1.parse(filename).ext.slice(1);
|
|
113
118
|
return {
|
|
@@ -1142,4 +1147,4 @@ exports.htmlencode = htmlencode;
|
|
|
1142
1147
|
exports.isDocumentPage = isDocumentPage;
|
|
1143
1148
|
exports.normalizePath = normalizePath;
|
|
1144
1149
|
exports.parseInfostring = parseInfostring;
|
|
1145
|
-
//# sourceMappingURL=create-markdown-renderer-
|
|
1150
|
+
//# sourceMappingURL=create-markdown-renderer-LhP3SCgI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-markdown-renderer-LhP3SCgI.js","sources":["../src/document/is-document-page.ts","../src/utils/find-document.ts","../src/utils/find-tag.ts","../src/utils/generate-id.ts","../src/utils/get-fingerprint.ts","../src/utils/normalize-path.ts","../src/utils/get-output-filepath.ts","../src/utils/has-tag.ts","../src/utils/htmlencode.ts","../src/utils/parse-import.ts","../src/examples/get-example-import.ts","../src/examples/get-example-name.ts","../src/examples/generate-example.ts","../src/examples/normalize-language.ts","../src/examples/parse-infostring.ts","../src/examples/transform-code.ts","../src/render/soft-error.ts","../src/render/process-inline-tags.ts","../src/render/inline-tags/link.ts","../src/render/inline-tags/optional.ts","../src/render/inline-tags/index.ts","../src/render/markdown/utils/find-test-id.ts","../src/render/markdown/utils/highlight.ts","../src/render/markdown/utils/replace-at-link.ts","../src/render/markdown/code-preview.ts","../src/render/markdown/heading-level.ts","../src/render/markdown/image-resources.ts","../src/render/markdown/container/alt-container.ts","../src/render/markdown/container/api-container.ts","../src/render/markdown/container/details-container.ts","../src/render/markdown/container/messagebox-container.ts","../src/render/markdown/container-renderer.ts","../src/render/markdown/table.ts","../src/render/markdown/code-inline.ts","../src/render/create-markdown-renderer.ts"],"sourcesContent":["import { type Document } from \"./document\";\nimport { type DocumentPage } from \"./document-page\";\n\n/**\n * @internal\n */\nexport function isDocumentPage(doc: Document): doc is DocumentPage {\n return doc.kind === \"page\";\n}\n","import { type Document } from \"../document\";\n\n/**\n * Find a document by id, name or alias.\n *\n * In case multiple document matches the \"first\" match is returned but the order\n * is in no way guaranteed so results may change over time.\n *\n * @internal\n * @param haystack - All available documents.\n * @param needle - What to search for.\n * @returns Matching document or `null` if no document matches.\n */\nexport function findDocument(\n haystack: Document[],\n needle: string,\n): Document | null {\n const match = haystack.find((it) => {\n if (it.id === needle) {\n return true;\n }\n if (it.name === needle) {\n return true;\n }\n if (it.alias.includes(needle)) {\n return true;\n }\n return false;\n });\n return match ?? null;\n}\n","/**\n * From a list of parsed tags in an infoline find a specific tag.\n *\n * @internal\n */\nexport function findTag(\n tags: string[],\n tag: string,\n): { tag: string; value: string | null } | null {\n const match = tags.find((it) => it === tag || it.startsWith(`${tag}=`));\n if (!match) {\n return null;\n }\n if (match === tag) {\n return { tag, value: null };\n } else {\n return { tag, value: match.slice(tag.length + 1) };\n }\n}\n","const replacements = {\n å: \"a\",\n ä: \"a\",\n ö: \"o\",\n};\n\nfunction findVersion(text: string): [number, number, number] | null {\n const match = text.match(/(\\d+)\\.(\\d+)\\.(\\d+) \\(\\d+-\\d+-\\d+\\)/);\n if (match) {\n return [\n parseInt(match[1], 10),\n parseInt(match[2], 10),\n parseInt(match[3], 10),\n ];\n } else {\n return null;\n }\n}\n\n/**\n * Generate a URL safe id from a text, suitable to use with headings etc.\n *\n * @internal\n */\nexport function generateId(text: string): string {\n const version = findVersion(text);\n if (version) {\n return `v${version.join(\"-\")}`;\n }\n return text\n .toLowerCase()\n .trim()\n .replace(/[åäö]/g, (m) => replacements[m as keyof typeof replacements]) // åäö to aao\n .replace(/[^a-z0-9]+/g, \"_\") // non-alphanum to dashes\n .replace(/^_+/, \"\") // remove leading dashes\n .replace(/_+$/, \"\"); // remove trailing dashes\n}\n","import crypto from \"node:crypto\";\n\nexport function getFingerprint(source: string): string {\n return crypto.createHash(\"md5\").update(source).digest(\"hex\").slice(0, 6);\n}\n","import path from \"node:path/posix\";\n\n/**\n * @internal\n */\nexport function normalizePath(...pathSegments: string[]): string {\n const filePath = path.join(...pathSegments);\n return path.normalize(filePath).replace(/\\\\/g, \"/\");\n}\n","import { normalizePath } from \"./normalize-path\";\n\nexport interface FileInfoLike {\n path: string;\n outputName: string | false;\n}\n\n/**\n * Get the final output filename.\n *\n * @internal\n */\nexport function getOutputFilePath(\n outputFolder: string,\n fileInfo: FileInfoLike & { outputName: string },\n): string;\nexport function getOutputFilePath(\n outputFolder: string,\n fileInfo: FileInfoLike & { outputName: false },\n): null;\nexport function getOutputFilePath(\n outputFolder: string,\n fileInfo: FileInfoLike,\n): string | null;\nexport function getOutputFilePath(\n outputFolder: string,\n fileInfo: FileInfoLike,\n): string | null {\n const { path, outputName } = fileInfo;\n if (outputName === false) {\n return null;\n }\n return normalizePath(outputFolder, path, outputName);\n}\n","/**\n * Tell if a specific tag is present in a list of parsed tags in an infoline.\n *\n * @internal\n */\nexport function hasTag(tags: string[], tag: string): boolean {\n const match = tags.find((it) => it === tag || it.startsWith(`${tag}=`));\n return Boolean(match);\n}\n","const replacement: Record<string, string> = {\n \"<\": `<`,\n \">\": `>`,\n \"&\": `&`,\n '\"': `"`,\n \"'\": `'`,\n};\n\n/**\n * Encodes symbols as HTML entities:\n *\n * - `<`\n * - `>`\n * - `&`\n * - `\"`\n * - `'`\n *\n * @internal\n */\nexport function htmlencode(text: string): string {\n return text.replace(/[<>&\"']/g, (m) => {\n return replacement[m];\n });\n}\n","import path from \"node:path\";\n\nexport interface ParsedImport {\n filename: string;\n extension: string;\n comments: string[];\n}\n\nexport function parseImport(raw: string): ParsedImport {\n const comments: string[] = [];\n let stripped = raw;\n let previous;\n do {\n previous = stripped;\n stripped = stripped.replace(/<!--.*?-->/gms, (match) => {\n comments.push(match);\n return \"\";\n });\n } while (stripped !== previous);\n const filename = stripped.trim();\n const extension = path.parse(filename).ext.slice(1);\n return {\n filename,\n extension,\n comments,\n };\n}\n","import { globSync } from \"glob\";\nimport { normalizePath } from \"../utils\";\n\n/**\n * Search filename in directories (deep).\n *\n * @internal\n * @deprecated use `fileMatcher()` instead, this function is insanely slow\n */\nexport function getExampleImport(\n searchDirs: string[],\n filename: string,\n): string {\n const pattern = searchDirs.map((dir) => `${dir}/**/${filename}`);\n const matches = globSync(pattern);\n if (matches.length === 0) {\n const message = `No files matched import \"${filename}\"`;\n throw new Error(message);\n } else if (matches.length > 1) {\n const message = `Multiple files matched import \"${filename}\"`;\n throw new Error(message);\n } else {\n return normalizePath(matches[0]);\n }\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 { generateCode as vue3 } from \"plugin-vue3\";\nimport { getFingerprint, parseImport } from \"../utils\";\nimport { type ExampleOptions } from \"./example-options\";\nimport { type ExampleResult } from \"./example-result\";\nimport { getExampleImport } from \"./get-example-import\";\nimport { getExampleName } from \"./get-example-name\";\n\nconst vueMajor = parseInt(version.split(\".\", 2)[0], 10) 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 } = options;\n\n if (language === \"import\") {\n const parsed = parseImport(options.source);\n const filename = getExampleImport(\n options.exampleFolders,\n parsed.filename,\n );\n const language = parsed.extension;\n const comments = parsed.comments;\n const content = fs.readFileSync(filename, \"utf-8\");\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 } else {\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}\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","/**\n * @internal\n */\nexport function normalizeLanguage(lang: string): string {\n switch (lang) {\n case \"ts\":\n return \"typescript\";\n case \"js\":\n return \"javascript\";\n default:\n return lang;\n }\n}\n","import { normalizeLanguage } from \"./normalize-language\";\n\n/**\n * Parse a markdown infostring from a code fence.\n *\n * @internal\n */\nexport function parseInfostring(infostring: string): {\n language: string;\n tags: string[];\n} {\n const [rawLanguage, ...rawTags] = infostring.trim().split(/\\s+/);\n return {\n language: normalizeLanguage(rawLanguage),\n tags: rawTags,\n };\n}\n","import dedent from \"dedent\";\nimport { normalizeLanguage } from \"./normalize-language\";\n\nfunction removeLinesInline(\n lines: string[],\n { begin, end }: { begin: number; end: number },\n): void {\n /* remove lines by blanking them (when the lines are later joined these\n * blank lines end up being nothing */\n for (let i = begin; i <= end; i++) {\n lines[i] = \"\";\n }\n\n /* if the previous line is just a blank line we remove that as well */\n if (lines[begin - 1] === \"\\n\") {\n lines[begin - 1] = \"\";\n begin--;\n }\n\n /* if the next line is just a blank line we remove that as well */\n if (lines[end + 1] === \"\\n\") {\n lines[end + 1] = \"\";\n }\n\n /* remove the trailing newline from the new last line or we end up with an\n * extra newline at the end of the string that wasn't there before */\n if (end === lines.length - 1 && begin > 0) {\n lines[begin - 1] = lines[begin - 1].slice(0, -1);\n }\n}\n\nfunction cutSnippets(code: string): string {\n const lines = code\n .split(/\\n/)\n .map((it, index, lines) => (index < lines.length - 1 ? `${it}\\n` : it));\n const directive =\n /(?:\\/\\* +--- +cut (?<js>above|below|begin|end) +--- +\\*\\/|<!---? +cut (?<html>above|below|begin|end) +---?>)/;\n\n let buffer = -1;\n lines.forEach((line, index) => {\n const match = line.match(directive);\n const { js, html } = match?.groups ?? { js: null, html: null };\n const instruction = js ?? html;\n if (!instruction) {\n return;\n }\n switch (instruction) {\n /* --- cut above --- */\n case \"above\":\n /* remove all lines above (including this one) */\n removeLinesInline(lines, {\n begin: 0,\n end: index,\n });\n break;\n /* --- cut below --- */\n case \"below\":\n /* remove all lines below (including this one) */\n removeLinesInline(lines, {\n begin: index,\n end: lines.length - 1,\n });\n break;\n /* --- cut begin --- */\n case \"begin\":\n /* here we only hold on to the line number until we\n * encounter the end instruction */\n if (buffer === -1) {\n buffer = index;\n }\n break;\n /* --- cut end --- */\n case \"end\":\n removeLinesInline(lines, {\n begin: Math.max(buffer, 0),\n end: index,\n });\n buffer = -1;\n break;\n default:\n break;\n }\n });\n\n /* if cut begin was used without end we still have the line number buffered\n * and should interpret it as cut below, i.e. we remove all lines from begin\n * and down */\n if (buffer >= 0) {\n removeLinesInline(lines, {\n begin: buffer,\n end: lines.length - 1,\n });\n }\n\n return lines.join(\"\");\n}\n\nfunction stripEslintComments(code: string): string {\n /* matches an eslint comment occupying the whole line (entire line including\n * newline is removed) */\n const matchLine =\n /^[ \\t]*(\\/\\* eslint-disable[^*]*\\*\\/|\\/\\/ eslint-disable.*)\\n/gm;\n\n /* matches an eslint comment embedded with other statements (only the\n * commend and whitespace before it is removed) */\n const matchEmbedded =\n /[ \\t]*(\\/\\* eslint-disable[^*]*\\*\\/|\\/\\/ eslint-disable.*)/g;\n\n return code.replace(matchLine, \"\").replace(matchEmbedded, \"\");\n}\n\nfunction maybeDedent(value: string): string {\n /* if the string is only whitespace we preserve it exactly as is */\n if (/^\\s*$/.test(value)) {\n return value;\n }\n\n /* Conditionally calling dedent due to\n * https://github.com/dmnd/dedent/issues/20\n *\n * - If the first line is indented we dedent the string as usual.\n *\n * - If the first line is not indented the dedention should be a no-op as\n * the indentation level is zero already but the referenced bug causes\n * `dedent` to pick up any other indented line as basis for the current\n * indentation level and thus removes to much.\n *\n * Consider the following input:\n *\n * ```\n * function foo() {\n * return \"...\";\n * }\n * ```\n *\n * The expected output is the same as the input.\n */\n if (/^\\s/.test(value)) {\n return dedent(value);\n } else {\n return value;\n }\n}\n\n/* transformations to apply based on language, transforms are run from left to right */\nconst transformations: Record<string, Array<(code: string) => string>> = {\n html: [cutSnippets, maybeDedent],\n vue: [cutSnippets, maybeDedent],\n javascript: [cutSnippets, stripEslintComments, maybeDedent],\n typescript: [cutSnippets, stripEslintComments, maybeDedent],\n};\n\nexport function transformCode(code: string, lang: string): string {\n const normalizedLanguage = normalizeLanguage(lang);\n const fns = transformations[normalizedLanguage] ?? [];\n for (const fn of fns) {\n code = fn(code);\n }\n return code;\n}\n","/**\n * @public\n */\nexport interface SoftErrorDetails {\n ELINKTARGET: { key: string; hash: string; title: string };\n ELINKFORMAT: undefined;\n ELINKPARTIAL: { key: string; hash: string; title: string };\n EINCLUDETARGET: { id: string };\n EINCLUDERECURSION: undefined;\n ETAGMISSING: undefined;\n}\n\n/**\n * @public\n */\nexport type SoftErrorCode = keyof SoftErrorDetails;\n\n/**\n * A soft error than can be recovered from.\n *\n * @public\n */\nexport class SoftError<T extends SoftErrorCode> extends Error {\n public readonly code: T;\n public readonly details: SoftErrorDetails[T];\n\n /**\n * @internal\n */\n public constructor(\n code: T,\n message: string,\n ...args: SoftErrorDetails[T] extends undefined\n ? []\n : [SoftErrorDetails[T]]\n ) {\n super(message);\n this.name = this.constructor.name;\n this.code = code;\n const [details] = args;\n this.details = details as typeof this.details;\n }\n}\n\n/**\n * @public\n */\nexport type SoftErrorType = {\n [T in SoftErrorCode]: SoftError<T>;\n}[SoftErrorCode];\n","import { type Document, type DocumentPage } from \"../document\";\nimport { type InlineTag } from \"./inline-tags\";\nimport { SoftError, type SoftErrorType } from \"./soft-error\";\n\n/**\n * @internal\n */\nexport function processInlineTags(\n tags: InlineTag[],\n doc: DocumentPage,\n docs: Document[],\n text: string,\n handleSoftError: (error: SoftErrorType) => string,\n): string {\n return text.replace(/{@(@?)([^{}]+)}/g, (_, escape, content) => {\n if (escape) {\n return `{@${content}}`;\n }\n const match = content.match(/^(\\S+)($|\\s[^]+)$/);\n\n /* istanbul ignore next: should never happen but just in case this is a\n * better fallback than crashing */\n if (!match) {\n return `{@${content}}`;\n }\n\n const [, name, text] = match;\n const tag = tags.find((it) => it.name === name);\n if (!tag) {\n return handleSoftError(\n new SoftError(\n \"ETAGMISSING\",\n `No inline tag registered with the name \"${name}\"`,\n ),\n );\n }\n try {\n return tag.handler(doc, docs, text.trim());\n } catch (err) {\n if (err instanceof SoftError) {\n return handleSoftError(err);\n } else {\n throw err;\n }\n }\n });\n}\n","import path from \"node:path/posix\";\nimport { type DocumentPage, isDocumentPage } from \"../../document\";\nimport { SoftError } from \"../soft-error\";\nimport { getOutputFilePath, findDocument } from \"../../utils\";\nimport { type InlineTag } from \"./inline-tag\";\n\nfunction getRelativeUrl(from: DocumentPage, to: DocumentPage): string {\n const fromResolved = getOutputFilePath(\".\", from.fileInfo);\n const toResolved = getOutputFilePath(\".\", to.fileInfo);\n if (!fromResolved || !toResolved) {\n throw new Error(\"Cannot create link to document with no output\");\n }\n\n const fromDir = path.dirname(fromResolved);\n const toDir = path.dirname(toResolved);\n const relative = path.relative(fromDir, toResolved);\n if (fromDir === toDir) {\n return relative === \"index.html\" ? \"./\" : `./${relative}`;\n } else if (relative.endsWith(\"/index.html\")) {\n return path.dirname(relative);\n } else {\n return relative;\n }\n}\n\nfunction getLinkTitle(\n doc: DocumentPage,\n key: string,\n explicitTitle?: string,\n): string {\n if (explicitTitle) {\n return explicitTitle;\n }\n const { title, component } = doc.attributes;\n if (component && component.some((it) => it.name === key)) {\n return `<code>${key}</code>`;\n } else {\n return title ?? doc.name;\n }\n}\n\nexport const linkTag: InlineTag = {\n name: \"link\",\n description: \"Create a link to another document\",\n handler(doc, docs, content) {\n const match = content.match(/^([^\\s#]+)(#\\S+)?\\s*(.+)?$/);\n if (!match) {\n throw new SoftError(\n \"ELINKFORMAT\",\n `Failed to parse link \"${content}\"`,\n );\n }\n const [, key, hash, explicitTitle] = match;\n\n if (key.startsWith(\"http://\") || key.startsWith(\"https://\")) {\n return `<a href=\"${key}${hash ?? \"\"}\">${explicitTitle ?? key}</a>`;\n }\n\n const linked = findDocument(docs, key);\n if (!linked) {\n throw new SoftError(\n \"ELINKTARGET\",\n `Failed to find linked document \"${key}\"`,\n {\n key,\n hash,\n title: explicitTitle,\n },\n );\n }\n\n /* if the document we are trying to linkt to is not a page document we\n * cannot link to it as we don't know the url (i.e. what page it exists\n * on or even if it is included on any page at all)\n */\n if (!isDocumentPage(linked)) {\n throw new SoftError(\n \"ELINKPARTIAL\",\n `Cannot link to partial document \"${key}\"`,\n {\n key,\n hash,\n title: explicitTitle,\n },\n );\n }\n\n const url = getRelativeUrl(doc, linked);\n const title = getLinkTitle(linked, key, explicitTitle);\n return `<a href=\"${url}${hash ?? \"\"}\">${title}</a>`;\n },\n};\n","import { type InlineTag } from \"./inline-tag\";\n\nexport const optionalTag: InlineTag = {\n name: \"optional\",\n description: \"Create a tag for symbolize optional content\",\n handler() {\n return `<span class=\"docs-tag docs-tag--default\">Optional</span>`;\n },\n};\n","import { type InlineTag } from \"./inline-tag\";\nimport { linkTag } from \"./link\";\nimport { optionalTag } from \"./optional\";\n\nexport { type InlineTag } from \"./inline-tag\";\n\nconst inlineTags: InlineTag[] = [linkTag, optionalTag];\n\nexport default inlineTags;\n","/**\n * Find test-id among a list of example tags.\n *\n * @internal\n */\nexport function findTestId(tags: string[]): string | null {\n const prefix = \"test-id=\";\n const tag = tags.find((it) => {\n return it.startsWith(prefix);\n });\n const match = tag?.match(/^test-id=(?:\"([^\"]+)\"|'([^']+)'|([^'\"]+))$/);\n if (!match) {\n return null;\n }\n /* the matched value will be in match[1], match[2] or match[3] depending on\n * which of the three that matches */\n return match.slice(1).find(Boolean) ?? null;\n}\n","import hljs from \"highlight.js/lib/common\";\n\nconst HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g;\nconst HTML_REPLACEMENTS: Record<string, string> = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n};\n\nfunction escapeHtml(str: string): string {\n return str.replace(HTML_ESCAPE_REPLACE_RE, (ch) => HTML_REPLACEMENTS[ch]);\n}\n\nfunction wrap(content: string, language: string): string {\n const markup = /* HTML */ `\n <code class=\"hljs lang-${language}\" tabindex=\"0\">${content}</code>\n `;\n return markup.trim();\n}\n\n/**\n * @internal\n */\nexport function highlight({\n source,\n language,\n}: {\n source: string;\n language: string;\n}): string {\n switch (language) {\n case \"\":\n case \"import\":\n case \"mermaid\":\n case \"plaintext\":\n return `<code>${escapeHtml(source)}</code>`;\n case \"vue\":\n return highlight({ source, language: \"html\" });\n case \"html\":\n }\n try {\n const { value } = hljs.highlight(source, { language });\n return wrap(value, language);\n } catch (err) {\n return wrap(String(err), language);\n }\n}\n","export function replaceAtLink(text: string): string {\n return text.replace(/{@link [^}]+[$}]/g, (match) =>\n match.replace(/^{/, \"{\").replace(/}$/, \"}\"),\n );\n}\n","import path from \"node:path\";\nimport { createTwoFilesPatch } from \"diff\";\nimport type MarkdownIt from \"markdown-it\";\nimport {\n type ExampleResult,\n parseInfostring,\n transformCode,\n} from \"../../examples\";\nimport { type MarkdownEnv } from \"../markdown-env\";\nimport { findTag, getFingerprint, hasTag, htmlencode } from \"../../utils\";\nimport { findTestId, highlight, replaceAtLink } from \"./utils\";\n\n/**\n * @internal\n */\nexport interface CodePreviewOptions {\n /** Callback when an example should be generated */\n generateExample(options: {\n source: string;\n language: string;\n filename: string;\n tags: string[];\n }): ExampleResult;\n}\n\nfunction getClassModifier(tags: string[]): string {\n if (tags.includes(\"borderless\")) {\n return \"code-preview--borderless\";\n }\n return \"code-preview--default\";\n}\n\nfunction getStandalonePath(output: string | null): string | null {\n if (!output) {\n return null;\n }\n const { dir, name } = path.parse(output);\n return path.join(dir, `${name}.html`);\n}\n\nfunction getSource(\n content: string,\n language: string,\n tags: string[],\n { namedExamples }: Pick<MarkdownEnv, \"namedExamples\">,\n): { source: string; language: string } {\n const compare = findTag(tags, \"compare\");\n if (compare && compare.value !== null) {\n const { value: context } = findTag(tags, \"context\") ?? {};\n const reference = namedExamples.get(compare.value);\n if (!reference) {\n throw new Error(\n `Failed to find referenced example \"${compare.value}\"`,\n );\n }\n const a = transformCode(reference.content, reference.language);\n const b = transformCode(content, language);\n const diff = createTwoFilesPatch(\"a\", \"b\", a, b, \"\", \"\", {\n context: context ? parseInt(context, 10) : 3,\n })\n .split(\"\\n\")\n .slice(4) // remove header\n .join(\"\\n\");\n return {\n source: diff,\n language: \"diff\",\n };\n }\n\n return { source: content, language };\n}\n\nexport function codePreview(\n options: CodePreviewOptions,\n): (md: MarkdownIt) => void {\n const { generateExample } = options;\n\n return (md: MarkdownIt): void => {\n md.renderer.rules.fence = fence.bind(undefined, md);\n };\n\n function fence(\n _md: MarkdownIt,\n tokens: MarkdownIt.Token[],\n idx: number,\n _options: MarkdownIt.Options,\n env: MarkdownEnv,\n ): string {\n const { fileInfo } = env;\n const { content: rawContent, info, map } = tokens[idx];\n const { language: rawLanguage, tags: rawTags } = parseInfostring(info);\n\n /* store a named reference to this example */\n const name = findTag(rawTags, \"name\")?.value;\n if (name) {\n env.namedExamples.set(name, {\n name,\n tags: rawTags,\n content: rawContent,\n language: rawLanguage,\n });\n }\n\n if (hasTag(rawTags, \"hidden\")) {\n return \"\";\n }\n\n if (rawLanguage === \"mermaid\") {\n return /* HTML */ `\n <pre class=\"mermaid\">${htmlencode(rawContent)}</pre>\n `;\n }\n\n const { source, language } = getSource(\n rawContent,\n rawLanguage,\n rawTags,\n env,\n );\n const example = generateExample({\n source,\n language,\n filename: fileInfo.fullPath,\n tags: rawTags,\n });\n const { tags } = example;\n\n const hashContent = `${map?.[0]}:${map?.[1]}:${info}:${source}`;\n const fingerprint = getFingerprint(hashContent);\n const transformedCode = transformCode(example.source, example.language);\n const highlightedCode = replaceAtLink(\n highlight({ source: transformedCode, language: example.language }),\n );\n const testId = findTestId(tags) ?? findTag(tags, \"name\")?.value;\n const liveExample = tags.includes(\"live-example\");\n const staticCode = example.runtime === false || tags.includes(\"static\");\n const noMarkup = tags.includes(\"nomarkup\");\n const fullscreen = tags.includes(\"fullscreen\");\n const modifier = getClassModifier(tags);\n const standalonePath = getStandalonePath(example.output);\n const showFullscreen = Boolean(standalonePath) && fullscreen;\n const testIdAttr = testId ? `data-test=\"${testId}\"` : \"\";\n const filteredTags = tags.filter((it) => {\n if (\n it.startsWith(\"test-id=\") ||\n it.startsWith(\"name\") ||\n it.startsWith(\"compare\")\n ) {\n return false;\n }\n return true;\n });\n const dataTagsAttr =\n filteredTags.length > 0\n ? `data-tags=\"${htmlencode(filteredTags.join(\" \"))}\"`\n : \"\";\n\n if (liveExample) {\n return /* HTML */ `\n <div\n id=\"example-${fingerprint}\"\n class=\"code-preview code-preview--borderless\"\n ${testIdAttr}\n ${dataTagsAttr}\n data-language=\"${example.language}\"\n >\n ${example.markup}\n </div>\n `;\n }\n\n if (staticCode) {\n return /* HTML */ `\n <div\n id=\"example-${fingerprint}\"\n class=\"code-preview ${modifier}\"\n ${testIdAttr}\n ${dataTagsAttr}\n data-language=\"${example.language}\"\n >\n ${example.comments.join(\"\\n\")}\n <pre class=\"code-preview__markup\">${highlightedCode}</pre>\n </div>\n `;\n }\n\n if (noMarkup) {\n return /* HTML */ `\n <div\n id=\"example-${fingerprint}\"\n class=\"code-preview ${modifier}\"\n ${testIdAttr}\n ${dataTagsAttr}\n data-language=\"${example.language}\"\n >\n ${example.comments.join(\"\\n\")}\n <div class=\"code-preview__preview\">${example.markup}</div>\n </div>\n `;\n }\n\n const toggleMarkup = /* HTML */ `\n <button\n type=\"button\"\n class=\"button button--discrete code-preview__toggle-markup\"\n aria-expanded=\"false\"\n onclick=\"toggleMarkup(this)\"\n >\n <i class=\"icon icon--code\"></i>\n Visa kod\n </button>\n `;\n\n const toggleFullscreen = showFullscreen\n ? /* HTML */ `\n <a href=\"${standalonePath}\" class=\"code-preview__fullscreen\">\n <i class=\"icon icon--fullscreen\"></i>\n Helskärm\n </a>\n `\n : \"\";\n\n return /* HTML */ `\n <div\n id=\"example-${fingerprint}\"\n class=\"code-preview ${modifier}\"\n ${testIdAttr}\n ${dataTagsAttr}\n data-language=\"${example.language}\"\n >\n ${example.comments.join(\"\\n\")}\n <div class=\"code-preview__preview\">${example.markup}</div>\n <div>${toggleMarkup} ${toggleFullscreen}</div>\n <div\n class=\"code-preview__expand animate-expand\"\n style=\"height: 0px;\"\n hidden\n >\n <pre class=\"code-preview__markup\">${highlightedCode}</pre>\n </div>\n </div>\n `;\n }\n}\n","import type MarkdownIt from \"markdown-it\";\nimport { generateId } from \"../../utils/generate-id\";\nimport { type MarkdownEnv } from \"../markdown-env\";\n\nfunction getTokensText(tokens: MarkdownIt.Token[]): string {\n return tokens\n .filter((token) => [\"text\", \"code_inline\"].includes(token.type))\n .map((token) => token.content)\n .join(\"\");\n}\n\nexport function headingLevel(options: {\n initialLevel: number;\n}): (md: MarkdownIt) => void {\n const { initialLevel } = options;\n const offset = initialLevel - 1;\n let counter = 1;\n return function (md: MarkdownIt): void {\n /* eslint-disable-next-line camelcase -- upstream library uses snake_case */\n md.renderer.rules.heading_open = function (\n tokens,\n idx,\n _options,\n env: MarkdownEnv,\n ) {\n const { ids } = env;\n const { tag } = tokens[idx];\n const title = getTokensText(tokens[idx + 1]?.children ?? []);\n let id = generateId(title);\n\n /* handles duplicate id's */\n if (ids.has(id)) {\n id += `--${counter++}`;\n }\n\n ids.add(id);\n\n return tag.replace(/h(\\d)/, (_, n: string) => {\n const level = parseInt(n, 10) + offset;\n env.currentHeading = level;\n return `<h${level} id=\"${id}\"><a class=\"header-anchor\" href=\"#${id}\">`;\n });\n };\n /* eslint-disable-next-line camelcase -- upstream library uses snake_case */\n md.renderer.rules.heading_close = function (tokens, idx) {\n const { tag } = tokens[idx];\n return tag.replace(/h(\\d)/, (_, n: string) => {\n const level = parseInt(n, 10) + offset;\n return `</a></h${level}>`;\n });\n };\n };\n}\n","import path from \"node:path/posix\";\nimport crypto from \"node:crypto\";\nimport type MarkdownIt from \"markdown-it\";\nimport { type FileInfo } from \"../../document\";\nimport { type MarkdownEnv } from \"../markdown-env\";\n\nfunction computeHash(source: string): string {\n return crypto.createHash(\"md5\").update(source).digest(\"hex\");\n}\n\nfunction getFilename(fileInfo: FileInfo, src: string): string {\n const key = [fileInfo.fullPath, src].join(\"-\");\n const hash = computeHash(key);\n const { ext } = path.parse(src);\n return `images/${hash}${ext}`;\n}\n\nexport function imageResources(options: {\n addResource(dst: string, src: string): void;\n}): (md: MarkdownIt) => void {\n const { addResource } = options;\n function imageResource(\n tokens: MarkdownIt.Token[],\n index: number,\n options: MarkdownIt.Options,\n env: MarkdownEnv,\n self: MarkdownIt.Renderer,\n ): string {\n const { fileInfo } = env;\n const token = tokens[index];\n\n token.attrs ??= [];\n\n /* copy image asset into the `assets/images` directory and rewrite the url to match */\n const srcAttr = token.attrGet(\"src\");\n if (srcAttr) {\n const dst = getFilename(fileInfo, srcAttr);\n const src = path.join(path.dirname(fileInfo.fullPath), srcAttr);\n const url = path.relative(fileInfo.path, path.join(\"assets\", dst));\n\n addResource(dst, src);\n token.attrs[token.attrIndex(\"src\")][1] = url;\n }\n\n /* from upstream original image renderer, sets the alt attribute */\n token.attrs[token.attrIndex(\"alt\")][1] = self.renderInlineAsText(\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- from upstream code */\n token.children!,\n options,\n env,\n );\n\n return self.renderToken(tokens, index, options);\n }\n\n return function (md: MarkdownIt): void {\n md.renderer.rules.image = imageResource;\n };\n}\n","import { findDocument } from \"../../../utils/find-document\";\nimport { type ContainerCallback } from \"./container-callback\";\nimport { type ContainerContext } from \"./container-context\";\n\n/**\n * Create a container renderer \"alt\" to render alternative texts.\n *\n * @internal\n */\nexport function altContainer(context: ContainerContext): ContainerCallback {\n const { md, env, docs } = context;\n return (tokens, index) => {\n const token = tokens[index];\n const needle = token.info;\n const tags = token.info.trim().split(/\\s+/);\n const doc = findDocument(docs, needle);\n\n if (doc && doc.format === \"markdown\") {\n const body =\n typeof doc.body === \"string\" ? doc.body : doc.body(tags);\n return md.render(body, env);\n }\n\n return md.render(token.content, env);\n };\n}\n","import { findDocument } from \"../../../utils/find-document\";\nimport { SoftError } from \"../../soft-error\";\nimport { type ContainerCallback } from \"./container-callback\";\nimport { type ContainerContext } from \"./container-context\";\n\n/**\n * Create a container renderer \"api\" to render API documentation.\n *\n * @internal\n */\nexport function apiContainer(context: ContainerContext): ContainerCallback {\n const { md, env, docs, included, handleSoftError } = context;\n return (tokens, index) => {\n const token = tokens[index];\n const needle = token.content.trim();\n const tags = token.info.trim().split(/\\s+/);\n const doc = findDocument(docs, needle);\n if (!doc) {\n return handleSoftError(\n new SoftError(\n \"EINCLUDETARGET\",\n `No document matches \"${needle}\" when trying to include content`,\n { id: needle },\n ),\n );\n }\n\n /* @todo here we should instead detect the chain of includes to\n * provide a better explanation of *why* it happened, not just\n * *that* it happend */\n const key = [doc.id, ...tags].join(\"|\");\n const loop = included.get(doc.id);\n if (loop && loop !== context.doc.id) {\n return handleSoftError(\n new SoftError(\n \"EINCLUDERECURSION\",\n `Recursion detected when including document \"${doc.id}\"`,\n ),\n );\n }\n included.set(key, context.doc.id);\n\n const body = typeof doc.body === \"string\" ? doc.body : doc.body(tags);\n\n if (doc.format === \"html\") {\n return body.replace(\n /* replace `<next-heading-level>` and `</next-heading-level>` with actual h-tags */\n /(?<=<\\/?)next-heading-level/g,\n `h${String(env.currentHeading + 1)}`,\n );\n }\n\n const content = md.render(body, env);\n return /* HTML */ ` <div>${content}</div> `;\n };\n}\n","import { type ContainerCallback } from \"./container-callback\";\nimport { type ContainerContext } from \"./container-context\";\n\n/**\n * Create a container renderer \"details\" to render details (special variant of\n * messagebox).\n *\n * @internal\n */\nexport function detailsContainer(\n context: ContainerContext,\n options: { title: Record<string, string | undefined> },\n): ContainerCallback {\n const { md, env } = context;\n\n function parseInfo(info: string | undefined): string {\n const customTitle = info ? info.split(\" \") : [];\n if (customTitle.length > 0) {\n return customTitle.join(\" \");\n } else {\n return options.title[\"details\"] || \"Details\";\n }\n }\n\n return (tokens, index) => {\n const token = tokens[index];\n const title = parseInfo(token.info);\n const text = token.content.trim();\n return /* HTML */ `\n <details class=\"docs-messagebox docs-messagebox--details\">\n <summary class=\"docs-messagebox__title\">\n ${md.renderInline(title, env)}\n </summary>\n ${md.render(text, env)}\n </details>\n `;\n };\n}\n","import { type ContainerCallback } from \"./container-callback\";\nimport { type ContainerContext } from \"./container-context\";\n\nconst defaultTitle: Record<string, string | undefined> = {\n info: \"INFO\",\n warning: \"WARNING\",\n danger: \"DANGER\",\n};\n\n/**\n * Create a container renderer \"messagebox\" to render messageboxes.\n *\n * @internal\n * @param alias - If specified it creates a messagebox renderer only for given variant.\n */\nexport function messageboxContainer(\n context: ContainerContext,\n options: { title: Record<string, string | undefined> },\n alias?: string,\n): ContainerCallback {\n const { md, env } = context;\n\n function getTitle(\n variant: string,\n customTitle: string[] | undefined,\n ): string {\n if (customTitle && customTitle.length > 0) {\n return customTitle.join(\" \");\n } else {\n return options.title[variant] ?? defaultTitle[variant] ?? \"\";\n }\n }\n\n function parseInfo(info: string | undefined): {\n variant: string;\n title: string;\n } {\n if (alias) {\n const variant = alias;\n const customTitle = info ? info.split(\" \") : [];\n const title = getTitle(variant, customTitle);\n return { variant, title };\n } else {\n const [variant = \"info\", ...customTitle] = info\n ? info.split(\" \")\n : [];\n const title = getTitle(variant, customTitle);\n return { variant, title };\n }\n }\n\n return (tokens, index) => {\n const token = tokens[index];\n const { variant, title } = parseInfo(token.info);\n const text = token.content.trim();\n return /* HTML */ `\n <div class=\"docs-messagebox docs-messagebox--${variant}\">\n ${title\n ? `<p class=\"docs-messagebox__title\">${md.renderInline(\n title,\n env,\n )}</p>`\n : \"\"}\n ${md.render(text, env)}\n </div>\n `;\n };\n}\n","import type MarkdownIt from \"markdown-it\";\nimport { type Document } from \"../../document\";\nimport { type MarkdownEnv } from \"../markdown-env\";\nimport { type SoftErrorType } from \"../soft-error\";\nimport {\n type ContainerCallback,\n type ContainerContext,\n altContainer,\n apiContainer,\n detailsContainer,\n messageboxContainer,\n} from \"./container\";\n\ntype Options = Record<string, ContainerCallback>;\n\nconst markerStr = \":\";\nconst markerChar = markerStr.charCodeAt(0);\n\n/**\n * @internal\n */\nexport function containerParser(md: MarkdownIt, options: Options): void {\n function container(\n state: MarkdownIt.StateBlock,\n startLine: number,\n endLine: number,\n silent: boolean,\n ): boolean {\n let pos = state.bMarks[startLine] + state.tShift[startLine];\n let max = state.eMarks[startLine];\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n if (pos + 3 > max) {\n return false;\n }\n\n const marker = state.src.charCodeAt(pos);\n\n if (marker !== markerChar) {\n return false;\n }\n\n // scan marker length\n let mem = pos;\n pos = state.skipChars(pos, marker);\n\n let len = pos - mem;\n\n if (len < 3) {\n return false;\n }\n\n const markup = state.src.slice(mem, pos);\n const params = state.src.slice(pos, max).trim().split(/\\s+/);\n const kind = params[0];\n const info = params.slice(1).join(\" \");\n\n // Since start is found, we can report success here in validation mode\n if (silent) {\n return true;\n }\n\n // search end of block\n let nextLine = startLine;\n let haveEndMarker = false;\n\n for (;;) {\n nextLine++;\n if (nextLine >= endLine) {\n // unclosed block should be autoclosed by end of document.\n // also block seems to be autoclosed by end of parent\n break;\n }\n\n pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos < max && state.sCount[nextLine] < state.blkIndent) {\n // non-empty line with negative indent should stop the list:\n // - ```\n // test\n break;\n }\n\n if (state.src.charCodeAt(pos) !== marker) {\n continue;\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n // closing fence should be indented less than 4 spaces\n continue;\n }\n\n pos = state.skipChars(pos, marker);\n\n // closing code fence must be at least as long as the opening one\n if (pos - mem < len) {\n continue;\n }\n\n // make sure tail has spaces only\n pos = state.skipSpaces(pos);\n\n if (pos < max) {\n continue;\n }\n\n haveEndMarker = true;\n // found!\n break;\n }\n\n // If a fence has heading spaces, they should be removed from its inner block\n len = state.sCount[startLine];\n\n state.line = nextLine + (haveEndMarker ? 1 : 0);\n\n const token = state.push(`doc_${kind}`, \"div\", 0);\n token.info = info?.trim();\n token.content = state.getLines(startLine + 1, nextLine, len, true);\n token.markup = markup;\n token.map = [startLine, state.line];\n\n return true;\n }\n\n md.block.ruler.before(\"fence\", \"container_include\", container, {\n alt: [\"paragraph\", \"reference\", \"blockquote\", \"list\"],\n });\n\n for (const [kind, fn] of Object.entries(options)) {\n md.renderer.rules[`doc_${kind}`] = fn;\n }\n}\n\n/* eslint-disable-next-line @typescript-eslint/max-params -- technical debt: should create and interface or similar */\nexport function containerRenderer(\n doc: () => Document,\n docs: Document[],\n env: MarkdownEnv,\n included: Map<string, string>,\n handleSoftError: (error: SoftErrorType) => string,\n options: {\n messagebox: {\n title: Record<string, string>;\n };\n },\n): (md: MarkdownIt) => void {\n return function (md: MarkdownIt): void {\n const context: ContainerContext = {\n md,\n env,\n get doc() {\n return doc();\n },\n docs,\n included,\n handleSoftError,\n };\n md.use(containerParser, {\n alt: altContainer(context),\n api: apiContainer(context),\n details: detailsContainer(context, options.messagebox),\n messagebox: messageboxContainer(context, options.messagebox),\n\n /* aliases for messagebox containers */\n info: messageboxContainer(context, options.messagebox, \"info\"),\n tip: messageboxContainer(context, options.messagebox, \"tip\"),\n warning: messageboxContainer(\n context,\n options.messagebox,\n \"warning\",\n ),\n danger: messageboxContainer(context, options.messagebox, \"danger\"),\n });\n };\n}\n","/* eslint-disable camelcase -- upstream library uses snake_case */\n\nimport type markdownIt from \"markdown-it\";\n\nexport function table(): (md: markdownIt) => void {\n return function (md: markdownIt): void {\n md.renderer.rules.table_open = () => `<table class=\"table\">\\n`;\n md.renderer.rules.tr_open = () => `<tr class=\"table__row\">\\n`;\n md.renderer.rules.th_open = () =>\n `<th class=\"table__column table__column--text\" scope=\"col\">`;\n md.renderer.rules.td_open = () =>\n `<td class=\"table__column table__column--text\">`;\n };\n}\n","/* eslint-disable camelcase -- upstream library uses snake_case */\nimport type markdownIt from \"markdown-it\";\nimport { replaceAtLink } from \"./utils\";\n\ntype RenderRule = markdownIt.Renderer.RenderRule;\n\nexport function codeInline(): (md: markdownIt) => void {\n return function (md: markdownIt): void {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- will never be undefined\n const original = md.renderer.rules.code_inline!;\n md.renderer.rules.code_inline = (...args: Parameters<RenderRule>) => {\n const tmp = original(...args);\n return replaceAtLink(tmp);\n };\n };\n}\n","import markdownIt from \"markdown-it\";\nimport markdownItDeflist from \"markdown-it-deflist\";\nimport { type Document, type DocumentPage } from \"../document\";\nimport { type ExampleResult } from \"../examples/example-result\";\nimport { processInlineTags } from \"./process-inline-tags\";\nimport inlineTags from \"./inline-tags\";\nimport {\n codeInline,\n codePreview,\n headingLevel,\n imageResources,\n containerRenderer,\n table,\n} from \"./markdown\";\nimport { MarkdownEnv } from \"./markdown-env\";\nimport { SoftErrorType } from \"./soft-error\";\n\n/**\n * Options for [[createMarkdownRenderer]].\n *\n * @public\n */\nexport interface MarkdownOptions {\n /** List of all available documents */\n readonly docs: Document[];\n\n /** Callback for adding a static resource */\n addResource(dst: string, src: string): void;\n\n /** Callback when an example should be generated */\n generateExample(options: {\n source: string;\n language: string;\n filename: string;\n tags: string[];\n }): ExampleResult;\n\n /**\n * Handle error which can be recovered from.\n *\n * If a string is returned it replaces the intended content but otherwise\n * continues rendering.\n *\n * If the exception is rethrown it will cause the renderer to bail out.\n *\n * @param error - The error to be handled.\n * @returns A replacement string or rethrows error.\n */\n handleSoftError(error: SoftErrorType): string;\n\n /**\n * Options for messagebox container.\n */\n messagebox?: {\n /** Default titles for messageboxes */\n title?: Record<string, string>;\n };\n}\n\n/**\n * Markdown renderer.\n *\n * @public\n */\nexport interface MarkdownRenderer {\n /**\n * Render given markdown content to HTML\n *\n * @param doc - Document metadata.\n * @param content - Markdown content to render.\n * @returns HTML rendered from markdown content.\n */\n render(doc: DocumentPage, content: string): string;\n}\n\n/**\n * @public\n */\nexport function createMarkdownRenderer(\n options: MarkdownOptions,\n): MarkdownRenderer {\n const { docs } = options;\n const env: MarkdownEnv = {\n fileInfo: {\n fullPath: \"\",\n name: \"\",\n path: \"\",\n outputName: false,\n },\n ids: new Set(),\n currentHeading: 1,\n namedExamples: new Map(),\n };\n\n let currentDoc: Document | null = null;\n const getCurrentDocument = (): Document => {\n if (!currentDoc) {\n throw new Error(\n \"Internal error: getting current document before rendering has started\",\n );\n }\n return currentDoc;\n };\n\n const included = new Map<string, string>();\n const md = markdownIt({\n html: true,\n });\n md.use(markdownItDeflist);\n md.use(\n codePreview({\n generateExample: options.generateExample,\n }),\n );\n md.use(headingLevel({ initialLevel: 1 }));\n md.use(\n imageResources({\n addResource: options.addResource,\n }),\n );\n md.use(\n containerRenderer(\n getCurrentDocument,\n docs,\n env,\n included,\n options.handleSoftError,\n {\n messagebox: { title: {}, ...options.messagebox },\n },\n ),\n );\n md.use(table());\n md.use(codeInline());\n\n return {\n render(doc: DocumentPage, content: string): string {\n currentDoc = doc;\n included.clear();\n included.set(doc.id, doc.id);\n env.fileInfo = doc.fileInfo;\n env.ids = new Set();\n const html = md.render(content, env);\n return processInlineTags(\n inlineTags,\n doc,\n docs,\n html,\n options.handleSoftError,\n );\n },\n };\n}\n"],"names":["path","globSync","version","vue3","language","lines","dedent","text","hljs","createTwoFilesPatch","options","markdownIt","markdownItDeflist"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -756,35 +756,6 @@ export declare interface VendorDefinitionDescriptor {
|
|
|
756
756
|
* Importabe package name or path.
|
|
757
757
|
*/
|
|
758
758
|
package: string;
|
|
759
|
-
/**
|
|
760
|
-
* If set, the package will be available on `window` under the given
|
|
761
|
-
* name. Requires the `export` property to be set to have any effect.
|
|
762
|
-
*/
|
|
763
|
-
global?: string;
|
|
764
|
-
/**
|
|
765
|
-
* If set this bundle will be exposed for usage with `require(..)` and if
|
|
766
|
-
* `global` is defined on the `window` object.
|
|
767
|
-
*
|
|
768
|
-
* When set to "named" the named exports will be exposed.
|
|
769
|
-
* When set to "default" the default export will be exposed.
|
|
770
|
-
*/
|
|
771
|
-
expose?: "named" | "default";
|
|
772
|
-
/**
|
|
773
|
-
* Optional list of additional subpaths to export from the package.
|
|
774
|
-
*
|
|
775
|
-
* E.g.:
|
|
776
|
-
*
|
|
777
|
-
* ```json
|
|
778
|
-
* {
|
|
779
|
-
* "package": "moment",
|
|
780
|
-
* "expose": "default",
|
|
781
|
-
* "subpaths": [
|
|
782
|
-
* "moment/locale/sv"
|
|
783
|
-
* ]
|
|
784
|
-
* }
|
|
785
|
-
* ```
|
|
786
|
-
*/
|
|
787
|
-
subpaths?: string[];
|
|
788
759
|
/**
|
|
789
760
|
* Optional alias for package name or path.
|
|
790
761
|
* When an alias is given the package can be imported using the given alias as well as the original package name.
|
package/dist/index.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
var fs = require('node:fs/promises');
|
|
4
4
|
var path = require('node:path/posix');
|
|
5
|
-
var vendor = require('./vendor-
|
|
6
|
-
var createMarkdownRenderer = require('./create-markdown-renderer-
|
|
5
|
+
var vendor = require('./vendor-CLvDQIrx.js');
|
|
6
|
+
var createMarkdownRenderer = require('./create-markdown-renderer-LhP3SCgI.js');
|
|
7
7
|
var path$1 = require('node:path');
|
|
8
8
|
var require$$1 = require('crypto');
|
|
9
9
|
require('node:crypto');
|
|
@@ -44,7 +44,7 @@ require('tls');
|
|
|
44
44
|
require('tty');
|
|
45
45
|
require('querystring');
|
|
46
46
|
require('vue');
|
|
47
|
-
require('./vue3-
|
|
47
|
+
require('./vue3-BKfEgvlU.js');
|
|
48
48
|
|
|
49
49
|
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
50
50
|
function toArray$2(value) {
|
|
@@ -2260,7 +2260,21 @@ async function render(doc, docs, nav, vendors, options) {
|
|
|
2260
2260
|
return relative !== "" ? relative : ".";
|
|
2261
2261
|
},
|
|
2262
2262
|
sidenav,
|
|
2263
|
-
vendors
|
|
2263
|
+
vendors,
|
|
2264
|
+
importmap(doc2) {
|
|
2265
|
+
const imports = Object.fromEntries(
|
|
2266
|
+
vendors.map((it) => {
|
|
2267
|
+
return [it.package, relative(it.publicPath, doc2)];
|
|
2268
|
+
})
|
|
2269
|
+
);
|
|
2270
|
+
const integrity = Object.fromEntries(
|
|
2271
|
+
vendors.map((it) => {
|
|
2272
|
+
return [relative(it.publicPath, doc2), it.integrity];
|
|
2273
|
+
})
|
|
2274
|
+
);
|
|
2275
|
+
const importmap = { imports, integrity };
|
|
2276
|
+
return JSON.stringify(importmap, null, 2);
|
|
2277
|
+
}
|
|
2264
2278
|
};
|
|
2265
2279
|
const generatedExamples = [];
|
|
2266
2280
|
const generatedStandalone = [];
|
|
@@ -2443,46 +2457,10 @@ function nunjucksProcessor(options) {
|
|
|
2443
2457
|
};
|
|
2444
2458
|
}
|
|
2445
2459
|
|
|
2446
|
-
function
|
|
2447
|
-
if (typeof window.__modules__ === "undefined") {
|
|
2448
|
-
window.__modules__ = {};
|
|
2449
|
-
}
|
|
2450
|
-
const mod = window.__modules__[name];
|
|
2451
|
-
if (!mod) {
|
|
2452
|
-
throw new Error(`Cannot find module "${name}"`);
|
|
2453
|
-
}
|
|
2454
|
-
return mod;
|
|
2455
|
-
}
|
|
2456
|
-
function getAssetSource(asset, require) {
|
|
2460
|
+
function getAssetSource(asset) {
|
|
2457
2461
|
const lines = [];
|
|
2458
2462
|
const pkg = asset.package.replace(/\\/g, "/");
|
|
2459
|
-
|
|
2460
|
-
return `import "${pkg}"`;
|
|
2461
|
-
}
|
|
2462
|
-
if (asset.expose === "named") {
|
|
2463
|
-
lines.push(`import * as lib from "${pkg}";`);
|
|
2464
|
-
} else {
|
|
2465
|
-
lines.push(`import lib from "${pkg}";`);
|
|
2466
|
-
}
|
|
2467
|
-
asset.subpaths.map((subpath, index) => {
|
|
2468
|
-
if (asset.expose === "named") {
|
|
2469
|
-
lines.push(`import * as lib$${index} from "${subpath}";`);
|
|
2470
|
-
} else {
|
|
2471
|
-
lines.push(`import lib$${index} from "${subpath}";`);
|
|
2472
|
-
}
|
|
2473
|
-
});
|
|
2474
|
-
lines.push(`window.require = window.require || ${require};`);
|
|
2475
|
-
lines.push(`window.__modules__ = window.__modules__ || {};`);
|
|
2476
|
-
lines.push(`window.__modules__["${asset.package}"] = lib;`);
|
|
2477
|
-
if (typeof asset.alias !== "undefined") {
|
|
2478
|
-
lines.push(`window.__modules__["${asset.alias}"] = lib;`);
|
|
2479
|
-
}
|
|
2480
|
-
asset.subpaths.map((subpath, index) => {
|
|
2481
|
-
lines.push(`window.__modules__["${subpath}"] = lib$${index};`);
|
|
2482
|
-
});
|
|
2483
|
-
if (typeof asset.global !== "undefined") {
|
|
2484
|
-
lines.push(`window["${asset.global}"] = lib;`);
|
|
2485
|
-
}
|
|
2463
|
+
lines.push(`export * from "${pkg}";`);
|
|
2486
2464
|
return lines.join("\n");
|
|
2487
2465
|
}
|
|
2488
2466
|
async function compileVendor(assetFolder, vendor, options) {
|
|
@@ -2490,14 +2468,14 @@ async function compileVendor(assetFolder, vendor, options) {
|
|
|
2490
2468
|
const slug = slugify(name);
|
|
2491
2469
|
const outfile = `temp/vendor-${slug}.out.js`;
|
|
2492
2470
|
const tmpfile = `temp/vendor-${slug}.in.js`;
|
|
2493
|
-
const source = getAssetSource(vendor
|
|
2471
|
+
const source = getAssetSource(vendor);
|
|
2494
2472
|
const tsconfig = path$1.resolve(__dirname, "../tsconfig-examples.json");
|
|
2495
2473
|
await fs.writeFile(tmpfile, source, "utf-8");
|
|
2496
2474
|
await esbuild$1.build({
|
|
2497
2475
|
entryPoints: [tmpfile],
|
|
2498
2476
|
outfile,
|
|
2499
2477
|
bundle: true,
|
|
2500
|
-
format: "
|
|
2478
|
+
format: "esm",
|
|
2501
2479
|
platform: "browser",
|
|
2502
2480
|
tsconfig,
|
|
2503
2481
|
define: {
|
|
@@ -2529,16 +2507,11 @@ function normalizeVendorDefinition(vendor) {
|
|
|
2529
2507
|
if (typeof vendor === "string") {
|
|
2530
2508
|
return {
|
|
2531
2509
|
package: vendor,
|
|
2532
|
-
|
|
2533
|
-
expose: "named",
|
|
2534
|
-
subpaths: []
|
|
2510
|
+
alias: void 0
|
|
2535
2511
|
};
|
|
2536
2512
|
} else {
|
|
2537
2513
|
return {
|
|
2538
2514
|
package: vendor.package,
|
|
2539
|
-
global: vendor.global,
|
|
2540
|
-
expose: vendor.expose ?? "named",
|
|
2541
|
-
subpaths: vendor.subpaths ?? [],
|
|
2542
2515
|
alias: vendor.alias ?? void 0
|
|
2543
2516
|
};
|
|
2544
2517
|
}
|