livemark 0.16.0 → 0.17.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.
@@ -1,6 +1,70 @@
1
- import type { z } from "zod";
2
- import { UserConfig } from "../../models/config.ts";
1
+ import type { UserConfig } from "../../models/config.ts";
3
2
  /**
4
3
  * Validate and fill defaults for a partial config object.
5
4
  */
6
- export declare function defineConfig(input: z.input<typeof UserConfig>): z.output<typeof UserConfig>;
5
+ export declare function defineConfig(input: UserConfig): {
6
+ site?: string | undefined;
7
+ base?: unknown;
8
+ favicon?: string | undefined;
9
+ logo?: string | undefined;
10
+ title: string;
11
+ description: string;
12
+ include: string | string[];
13
+ exclude?: string | string[] | undefined;
14
+ codeThemeLight: "ayu-light" | "catppuccin-latte" | "everforest-light" | "github-light" | "github-light-default" | "github-light-high-contrast" | "gruvbox-light-hard" | "gruvbox-light-medium" | "gruvbox-light-soft" | "horizon-bright" | "kanagawa-lotus" | "light-plus" | "material-theme-lighter" | "min-light" | "night-owl-light" | "one-light" | "rose-pine-dawn" | "slack-ochin" | "snazzy-light" | "solarized-light" | "vitesse-light";
15
+ codeThemeDark: "andromeeda" | "aurora-x" | "ayu-dark" | "ayu-mirage" | "catppuccin-frappe" | "catppuccin-macchiato" | "catppuccin-mocha" | "dark-plus" | "dracula" | "dracula-soft" | "everforest-dark" | "github-dark" | "github-dark-default" | "github-dark-dimmed" | "github-dark-high-contrast" | "gruvbox-dark-hard" | "gruvbox-dark-medium" | "gruvbox-dark-soft" | "horizon" | "houston" | "kanagawa-dragon" | "kanagawa-wave" | "laserwave" | "material-theme" | "material-theme-darker" | "material-theme-ocean" | "material-theme-palenight" | "min-dark" | "monokai" | "night-owl" | "nord" | "one-dark-pro" | "plastic" | "poimandres" | "red" | "rose-pine" | "rose-pine-moon" | "slack-dark" | "solarized-dark" | "synthwave-84" | "tokyo-night" | "vesper" | "vitesse-black" | "vitesse-dark";
16
+ links?: {
17
+ url: string;
18
+ title: string;
19
+ icon?: string | undefined;
20
+ prefix?: string | undefined;
21
+ position: "header" | "sidebar";
22
+ }[] | undefined;
23
+ sections?: ({
24
+ icon?: string | undefined;
25
+ title: string;
26
+ position: "header" | "sidebar";
27
+ type: "article";
28
+ prefix: string;
29
+ } | {
30
+ icon?: string | undefined;
31
+ title: string;
32
+ position: "header" | "sidebar";
33
+ type: "blog";
34
+ prefix: string;
35
+ } | {
36
+ icon?: string | undefined;
37
+ title: string;
38
+ position: "header" | "sidebar";
39
+ type: "changelog";
40
+ prefix: string;
41
+ source: string;
42
+ version?: boolean | undefined;
43
+ } | {
44
+ icon?: string | undefined;
45
+ title: string;
46
+ position: "header" | "sidebar";
47
+ type: "custom";
48
+ url: string;
49
+ })[] | undefined;
50
+ patches?: {
51
+ file: string;
52
+ article: {
53
+ title?: string | undefined;
54
+ label?: string | undefined;
55
+ description?: string | undefined;
56
+ icon?: string | undefined;
57
+ order?: number | undefined;
58
+ path?: string | undefined;
59
+ sidebar?: boolean | undefined;
60
+ toc?: boolean | undefined;
61
+ image?: string | undefined;
62
+ author?: string | string[] | undefined;
63
+ date?: string | undefined;
64
+ tags?: string[] | undefined;
65
+ sourceUrl?: string | undefined;
66
+ sourceAction?: "edit" | "view" | undefined;
67
+ };
68
+ }[] | undefined;
69
+ vite?: unknown;
70
+ };
@@ -1,8 +1,8 @@
1
- import { UserConfig } from "../../models/config.js";
1
+ import { UserConfig as UserConfigSchema } from "../../models/config.js";
2
2
  /**
3
3
  * Validate and fill defaults for a partial config object.
4
4
  */
5
5
  export function defineConfig(input) {
6
- return UserConfig.parse(input);
6
+ return UserConfigSchema.parse(input);
7
7
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc291cmNlL2FjdGlvbnMvY29uZmlnL2RlZmluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFbkQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUMxQixLQUFpQztJQUVqQyxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgVXNlckNvbmZpZyB9IGZyb20gXCIuLi8uLi9tb2RlbHMvY29uZmlnLnRzXCJcblxuLyoqXG4gKiBWYWxpZGF0ZSBhbmQgZmlsbCBkZWZhdWx0cyBmb3IgYSBwYXJ0aWFsIGNvbmZpZyBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVDb25maWcoXG4gIGlucHV0OiB6LmlucHV0PHR5cGVvZiBVc2VyQ29uZmlnPixcbik6IHoub3V0cHV0PHR5cGVvZiBVc2VyQ29uZmlnPiB7XG4gIHJldHVybiBVc2VyQ29uZmlnLnBhcnNlKGlucHV0KVxufVxuIl19
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc291cmNlL2FjdGlvbnMvY29uZmlnL2RlZmluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxJQUFJLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFHdkU7O0dBRUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQWlCO0lBQzVDLE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVc2VyQ29uZmlnIGFzIFVzZXJDb25maWdTY2hlbWEgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbmZpZy50c1wiXG5pbXBvcnQgdHlwZSB7IFVzZXJDb25maWcgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbmZpZy50c1wiXG5cbi8qKlxuICogVmFsaWRhdGUgYW5kIGZpbGwgZGVmYXVsdHMgZm9yIGEgcGFydGlhbCBjb25maWcgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lQ29uZmlnKGlucHV0OiBVc2VyQ29uZmlnKSB7XG4gIHJldHVybiBVc2VyQ29uZmlnU2NoZW1hLnBhcnNlKGlucHV0KVxufVxuIl19
@@ -9,7 +9,24 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
9
9
  import { existsSync } from "node:fs";
10
10
  import { dirname, resolve } from "node:path";
11
11
  import { pathToFileURL } from "node:url";
12
+ import { resolveBase } from "../../helpers/resolve-base.js";
12
13
  import { defineConfig } from "./define.js";
14
+ /** Map livemark CLI verbs to the Vite-equivalent `command` string used by
15
+ * `resolveBase()`. `preview` serves the production build's artifacts so
16
+ * it uses the build-mode base. Default to `"build"` for safety when no
17
+ * recognised verb is in argv (the common path is `livemark <verb> ...`). */
18
+ const COMMAND_BY_VERB = {
19
+ start: "serve",
20
+ build: "build",
21
+ preview: "build",
22
+ };
23
+ function detectCommand() {
24
+ for (const arg of process.argv.slice(2)) {
25
+ if (arg in COMMAND_BY_VERB)
26
+ return COMMAND_BY_VERB[arg];
27
+ }
28
+ return "build";
29
+ }
13
30
  /**
14
31
  * Load and validate a config file, checking --config/-c CLI arg, then cwd.
15
32
  *
@@ -36,6 +53,10 @@ export async function loadConfig(path) {
36
53
  throw new Error(`Config file not found: ${resolved}`);
37
54
  }
38
55
  const validated = defineConfig(input);
39
- return { ...validated, root: dirname(resolved), configPath: resolved };
56
+ // Resolve the function form of `base` once, here, using the livemark
57
+ // CLI verb. Downstream consumers (Vite plugin, content-collections,
58
+ // runtime) get a plain string|undefined and never see the function.
59
+ const base = resolveBase(validated.base, detectCommand());
60
+ return { ...validated, base, root: dirname(resolved), configPath: resolved };
40
61
  }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NvdXJjZS9hY3Rpb25zL2NvbmZpZy9sb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUNwQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBSXhDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFMUM7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVLENBQUMsSUFBYTtJQUM1QyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FDeEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxVQUFVLENBQ3BDLENBQUE7SUFDRCxNQUFNLE9BQU8sR0FBRyxXQUFXLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDOUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLE9BQU8sQ0FBQTtJQUNoQyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLG9CQUFvQixDQUFDLENBQUE7SUFDMUQsSUFBSSxLQUFLLEdBQStCLEVBQUUsQ0FBQTtJQUMxQyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3pCLHlFQUF5RTtRQUN6RSxNQUFNLEdBQUcsR0FBRyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUE7UUFDN0QsTUFBTSxNQUFNLEdBQTRCLE1BQU0sTUFBTSxrQ0FBQyxHQUFHLEVBQUMsQ0FBQTtRQUN6RCxLQUFLLEdBQUksTUFBTSxDQUFDLE9BQXNDLElBQUksRUFBRSxDQUFBO0lBQzlELENBQUM7U0FBTSxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDdkQsQ0FBQztJQUNELE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNyQyxPQUFPLEVBQUUsR0FBRyxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUE7QUFDeEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tIFwibm9kZTpmc1wiXG5pbXBvcnQgeyBkaXJuYW1lLCByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSBcIm5vZGU6dXJsXCJcbmltcG9ydCB0eXBlIHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbmZpZy50c1wiXG5pbXBvcnQgeyBVc2VyQ29uZmlnIH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb25maWcudHNcIlxuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcIi4vZGVmaW5lLnRzXCJcblxuLyoqXG4gKiBMb2FkIGFuZCB2YWxpZGF0ZSBhIGNvbmZpZyBmaWxlLCBjaGVja2luZyAtLWNvbmZpZy8tYyBDTEkgYXJnLCB0aGVuIGN3ZC5cbiAqXG4gKiBJZiBhIHBhdGggaXMgcHJvdmlkZWQgZXhwbGljaXRseSAoYXJnIG9yIGAtLWNvbmZpZ2AvYC1jYCkgYW5kIHRoZVxuICogZmlsZSBpcyBtaXNzaW5nLCB0aHJvd3Mg4oCUIHRoZSB1c2VyIGFza2VkIGZvciBhIHNwZWNpZmljIGNvbmZpZyBhbmRcbiAqIGl0IGlzbid0IHRoZXJlLiBJZiBubyBwYXRoIGlzIHByb3ZpZGVkIGFuZCBubyBgbGl2ZW1hcmsuY29uZmlnLnRzYFxuICogZXhpc3RzIGluIGN3ZCwgZmFsbHMgYmFjayB0byB0aGUgZGVmYXVsdCBjb25maWcgd2l0aCBhIHN5bnRoZXNpemVkXG4gKiBgY29uZmlnUGF0aCA9IDxjd2Q+L2xpdmVtYXJrLmNvbmZpZy50c2Agc28gZG93bnN0cmVhbSBjb2RlICh0YXJnZXRcbiAqIGhhc2gsIHdhdGNoZXIpIHN0aWxsIGhhcyBhIHN0YWJsZSBwZXItcHJvamVjdCBrZXkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkQ29uZmlnKHBhdGg/OiBzdHJpbmcpOiBQcm9taXNlPENvbmZpZz4ge1xuICBjb25zdCBjb25maWdJbmRleCA9IHByb2Nlc3MuYXJndi5maW5kSW5kZXgoXG4gICAgYSA9PiBhID09PSBcIi1jXCIgfHwgYSA9PT0gXCItLWNvbmZpZ1wiLFxuICApXG4gIGNvbnN0IGNsaVBhdGggPSBjb25maWdJbmRleCAhPT0gLTEgPyBwcm9jZXNzLmFyZ3ZbY29uZmlnSW5kZXggKyAxXSA6IHVuZGVmaW5lZFxuICBjb25zdCBleHBsaWNpdCA9IHBhdGggPz8gY2xpUGF0aFxuICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmUoZXhwbGljaXQgPz8gXCJsaXZlbWFyay5jb25maWcudHNcIilcbiAgbGV0IGlucHV0OiB6LmlucHV0PHR5cGVvZiBVc2VyQ29uZmlnPiA9IHt9XG4gIGlmIChleGlzdHNTeW5jKHJlc29sdmVkKSkge1xuICAgIC8vIENhY2hlLWJ1c3QgdGhlIEVTTSBpbXBvcnQgc28gZGV2LXNlcnZlciByZXN0YXJ0IHJlbG9hZHMgZWRpdHMgb24gZGlzay5cbiAgICBjb25zdCB1cmwgPSBgJHtwYXRoVG9GaWxlVVJMKHJlc29sdmVkKS5ocmVmfT90PSR7RGF0ZS5ub3coKX1gXG4gICAgY29uc3QgbW9kdWxlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IGF3YWl0IGltcG9ydCh1cmwpXG4gICAgaW5wdXQgPSAobW9kdWxlLmRlZmF1bHQgYXMgei5pbnB1dDx0eXBlb2YgVXNlckNvbmZpZz4pID8/IHt9XG4gIH0gZWxzZSBpZiAoZXhwbGljaXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvbmZpZyBmaWxlIG5vdCBmb3VuZDogJHtyZXNvbHZlZH1gKVxuICB9XG4gIGNvbnN0IHZhbGlkYXRlZCA9IGRlZmluZUNvbmZpZyhpbnB1dClcbiAgcmV0dXJuIHsgLi4udmFsaWRhdGVkLCByb290OiBkaXJuYW1lKHJlc29sdmVkKSwgY29uZmlnUGF0aDogcmVzb2x2ZWQgfVxufVxuIl19
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NvdXJjZS9hY3Rpb25zL2NvbmZpZy9sb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUNwQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRXhDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRTFDOzs7NkVBRzZFO0FBQzdFLE1BQU0sZUFBZSxHQUFzQztJQUN6RCxLQUFLLEVBQUUsT0FBTztJQUNkLEtBQUssRUFBRSxPQUFPO0lBQ2QsT0FBTyxFQUFFLE9BQU87Q0FDakIsQ0FBQTtBQUVELFNBQVMsYUFBYTtJQUNwQixLQUFLLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDeEMsSUFBSSxHQUFHLElBQUksZUFBZTtZQUFFLE9BQU8sZUFBZSxDQUFDLEdBQUcsQ0FBRSxDQUFBO0lBQzFELENBQUM7SUFDRCxPQUFPLE9BQWdCLENBQUE7QUFDekIsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsVUFBVSxDQUFDLElBQWE7SUFDNUMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQ3hDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssVUFBVSxDQUNwQyxDQUFBO0lBQ0QsTUFBTSxPQUFPLEdBQUcsV0FBVyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO0lBQzlFLE1BQU0sUUFBUSxHQUFHLElBQUksSUFBSSxPQUFPLENBQUE7SUFDaEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxvQkFBb0IsQ0FBQyxDQUFBO0lBQzFELElBQUksS0FBSyxHQUFlLEVBQUUsQ0FBQTtJQUMxQixJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3pCLHlFQUF5RTtRQUN6RSxNQUFNLEdBQUcsR0FBRyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUE7UUFDN0QsTUFBTSxNQUFNLEdBQTRCLE1BQU0sTUFBTSxrQ0FBQyxHQUFHLEVBQUMsQ0FBQTtRQUN6RCxLQUFLLEdBQUksTUFBTSxDQUFDLE9BQXNCLElBQUksRUFBRSxDQUFBO0lBQzlDLENBQUM7U0FBTSxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDdkQsQ0FBQztJQUNELE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNyQyxxRUFBcUU7SUFDckUsb0VBQW9FO0lBQ3BFLG9FQUFvRTtJQUNwRSxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFBO0lBQ3pELE9BQU8sRUFBRSxHQUFHLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUE7QUFDOUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tIFwibm9kZTpmc1wiXG5pbXBvcnQgeyBkaXJuYW1lLCByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSBcIm5vZGU6dXJsXCJcbmltcG9ydCB0eXBlIHsgQ29uZmlnLCBVc2VyQ29uZmlnIH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb25maWcudHNcIlxuaW1wb3J0IHsgcmVzb2x2ZUJhc2UgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9yZXNvbHZlLWJhc2UudHNcIlxuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcIi4vZGVmaW5lLnRzXCJcblxuLyoqIE1hcCBsaXZlbWFyayBDTEkgdmVyYnMgdG8gdGhlIFZpdGUtZXF1aXZhbGVudCBgY29tbWFuZGAgc3RyaW5nIHVzZWQgYnlcbiAqICBgcmVzb2x2ZUJhc2UoKWAuIGBwcmV2aWV3YCBzZXJ2ZXMgdGhlIHByb2R1Y3Rpb24gYnVpbGQncyBhcnRpZmFjdHMgc29cbiAqICBpdCB1c2VzIHRoZSBidWlsZC1tb2RlIGJhc2UuIERlZmF1bHQgdG8gYFwiYnVpbGRcImAgZm9yIHNhZmV0eSB3aGVuIG5vXG4gKiAgcmVjb2duaXNlZCB2ZXJiIGlzIGluIGFyZ3YgKHRoZSBjb21tb24gcGF0aCBpcyBgbGl2ZW1hcmsgPHZlcmI+IC4uLmApLiAqL1xuY29uc3QgQ09NTUFORF9CWV9WRVJCOiBSZWNvcmQ8c3RyaW5nLCBcImJ1aWxkXCIgfCBcInNlcnZlXCI+ID0ge1xuICBzdGFydDogXCJzZXJ2ZVwiLFxuICBidWlsZDogXCJidWlsZFwiLFxuICBwcmV2aWV3OiBcImJ1aWxkXCIsXG59XG5cbmZ1bmN0aW9uIGRldGVjdENvbW1hbmQoKSB7XG4gIGZvciAoY29uc3QgYXJnIG9mIHByb2Nlc3MuYXJndi5zbGljZSgyKSkge1xuICAgIGlmIChhcmcgaW4gQ09NTUFORF9CWV9WRVJCKSByZXR1cm4gQ09NTUFORF9CWV9WRVJCW2FyZ10hXG4gIH1cbiAgcmV0dXJuIFwiYnVpbGRcIiBhcyBjb25zdFxufVxuXG4vKipcbiAqIExvYWQgYW5kIHZhbGlkYXRlIGEgY29uZmlnIGZpbGUsIGNoZWNraW5nIC0tY29uZmlnLy1jIENMSSBhcmcsIHRoZW4gY3dkLlxuICpcbiAqIElmIGEgcGF0aCBpcyBwcm92aWRlZCBleHBsaWNpdGx5IChhcmcgb3IgYC0tY29uZmlnYC9gLWNgKSBhbmQgdGhlXG4gKiBmaWxlIGlzIG1pc3NpbmcsIHRocm93cyDigJQgdGhlIHVzZXIgYXNrZWQgZm9yIGEgc3BlY2lmaWMgY29uZmlnIGFuZFxuICogaXQgaXNuJ3QgdGhlcmUuIElmIG5vIHBhdGggaXMgcHJvdmlkZWQgYW5kIG5vIGBsaXZlbWFyay5jb25maWcudHNgXG4gKiBleGlzdHMgaW4gY3dkLCBmYWxscyBiYWNrIHRvIHRoZSBkZWZhdWx0IGNvbmZpZyB3aXRoIGEgc3ludGhlc2l6ZWRcbiAqIGBjb25maWdQYXRoID0gPGN3ZD4vbGl2ZW1hcmsuY29uZmlnLnRzYCBzbyBkb3duc3RyZWFtIGNvZGUgKHRhcmdldFxuICogaGFzaCwgd2F0Y2hlcikgc3RpbGwgaGFzIGEgc3RhYmxlIHBlci1wcm9qZWN0IGtleS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRDb25maWcocGF0aD86IHN0cmluZyk6IFByb21pc2U8Q29uZmlnPiB7XG4gIGNvbnN0IGNvbmZpZ0luZGV4ID0gcHJvY2Vzcy5hcmd2LmZpbmRJbmRleChcbiAgICBhID0+IGEgPT09IFwiLWNcIiB8fCBhID09PSBcIi0tY29uZmlnXCIsXG4gIClcbiAgY29uc3QgY2xpUGF0aCA9IGNvbmZpZ0luZGV4ICE9PSAtMSA/IHByb2Nlc3MuYXJndltjb25maWdJbmRleCArIDFdIDogdW5kZWZpbmVkXG4gIGNvbnN0IGV4cGxpY2l0ID0gcGF0aCA/PyBjbGlQYXRoXG4gIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZShleHBsaWNpdCA/PyBcImxpdmVtYXJrLmNvbmZpZy50c1wiKVxuICBsZXQgaW5wdXQ6IFVzZXJDb25maWcgPSB7fVxuICBpZiAoZXhpc3RzU3luYyhyZXNvbHZlZCkpIHtcbiAgICAvLyBDYWNoZS1idXN0IHRoZSBFU00gaW1wb3J0IHNvIGRldi1zZXJ2ZXIgcmVzdGFydCByZWxvYWRzIGVkaXRzIG9uIGRpc2suXG4gICAgY29uc3QgdXJsID0gYCR7cGF0aFRvRmlsZVVSTChyZXNvbHZlZCkuaHJlZn0/dD0ke0RhdGUubm93KCl9YFxuICAgIGNvbnN0IG1vZHVsZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBhd2FpdCBpbXBvcnQodXJsKVxuICAgIGlucHV0ID0gKG1vZHVsZS5kZWZhdWx0IGFzIFVzZXJDb25maWcpID8/IHt9XG4gIH0gZWxzZSBpZiAoZXhwbGljaXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvbmZpZyBmaWxlIG5vdCBmb3VuZDogJHtyZXNvbHZlZH1gKVxuICB9XG4gIGNvbnN0IHZhbGlkYXRlZCA9IGRlZmluZUNvbmZpZyhpbnB1dClcbiAgLy8gUmVzb2x2ZSB0aGUgZnVuY3Rpb24gZm9ybSBvZiBgYmFzZWAgb25jZSwgaGVyZSwgdXNpbmcgdGhlIGxpdmVtYXJrXG4gIC8vIENMSSB2ZXJiLiBEb3duc3RyZWFtIGNvbnN1bWVycyAoVml0ZSBwbHVnaW4sIGNvbnRlbnQtY29sbGVjdGlvbnMsXG4gIC8vIHJ1bnRpbWUpIGdldCBhIHBsYWluIHN0cmluZ3x1bmRlZmluZWQgYW5kIG5ldmVyIHNlZSB0aGUgZnVuY3Rpb24uXG4gIGNvbnN0IGJhc2UgPSByZXNvbHZlQmFzZSh2YWxpZGF0ZWQuYmFzZSwgZGV0ZWN0Q29tbWFuZCgpKVxuICByZXR1cm4geyAuLi52YWxpZGF0ZWQsIGJhc2UsIHJvb3Q6IGRpcm5hbWUocmVzb2x2ZWQpLCBjb25maWdQYXRoOiByZXNvbHZlZCB9XG59XG4iXX0=
@@ -5,7 +5,7 @@ import { useHotkey } from "@tanstack/react-hotkeys";
5
5
  import { currentSection, sectionFirstArticle, sectionFlatArticles, sortedArticles, } from "../content/article.js";
6
6
  import { DynamicIcon } from "../helpers/dynamic-icon.js";
7
7
  import { prefixUrl } from "../helpers/prefix-url.js";
8
- import { sectionIcon } from "../helpers/section.js";
8
+ import { customSectionActive, sectionIcon } from "../helpers/section.js";
9
9
  import { SidebarInset, SidebarProvider, SidebarTrigger, useSidebar, } from "../elements/sidebar.js";
10
10
  import { BackToTop } from "./BackToTop.js";
11
11
  import { Banner } from "./Banner.js";
@@ -29,9 +29,12 @@ export function Layout(props) {
29
29
  ] })) : (_jsx(Link, { to: "/", className: "flex items-center gap-2", children: _jsx(SiteTitle, {}) })) }), _jsxs("div", { className: "hidden md:flex flex-1 items-center gap-8 self-stretch px-6 text-sm", children: [sections?.length ? (sections
30
30
  .filter(section => section.position === "header")
31
31
  .map(section => {
32
- if (section.type === "external") {
33
- return (_jsxs("a", { href: prefixUrl(section.url, config.base), className: "inline-flex items-center gap-1.5 text-foreground opacity-80 hover:opacity-100 transition-opacity", children: [
34
- _jsx(DynamicIcon, { name: sectionIcon(section), className: "size-3.5" }), _jsx("span", { children: section.title })
32
+ const icon = sectionIcon(section);
33
+ if (section.type === "custom") {
34
+ const isActive = customSectionActive(section.url, pathname);
35
+ return (_jsxs("a", { href: prefixUrl(section.url, config.base), className: `inline-flex items-center gap-1.5 text-foreground ${isActive
36
+ ? "font-medium border-b-2 border-foreground pb-0.5 -mb-0.5"
37
+ : "opacity-80 hover:opacity-100 transition-opacity"}`, children: [icon && _jsx(DynamicIcon, { name: icon, className: "size-3.5" }), _jsx("span", { children: section.title })
35
38
  ] }, section.url));
36
39
  }
37
40
  const isActive = activeSection?.prefix === section.prefix;
@@ -43,8 +46,7 @@ export function Layout(props) {
43
46
  : undefined;
44
47
  return (_jsxs(Link, { to: target === "/" ? "/" : "/$", params: target && target !== "/" ? splatFor(target) : {}, className: `inline-flex items-center gap-1.5 text-foreground ${isActive
45
48
  ? "font-medium border-b-2 border-foreground pb-0.5 -mb-0.5"
46
- : "opacity-80 hover:opacity-100 transition-opacity"}`, children: [
47
- _jsx(DynamicIcon, { name: sectionIcon(section), className: "size-3.5" }), _jsxs("span", { children: [section.title, latestVersion && (_jsxs("span", { className: "opacity-80", children: [" (", latestVersion, ")"] }))] })
49
+ : "opacity-80 hover:opacity-100 transition-opacity"}`, children: [icon && _jsx(DynamicIcon, { name: icon, className: "size-3.5" }), _jsxs("span", { children: [section.title, latestVersion && (_jsxs("span", { className: "opacity-80", children: [" (", latestVersion, ")"] }))] })
48
50
  ] }, section.prefix));
49
51
  })) : (_jsx(Link, { to: "/", className: "text-foreground font-medium underline underline-offset-4", children: "Docs" })), config.links
50
52
  ?.filter(link => link.position === "header" &&
@@ -67,4 +69,4 @@ function SidebarShell(props) {
67
69
  ] })
68
70
  ] }));
69
71
  }
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvTGF5b3V0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUNuRCxPQUFPLEVBQ0wsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsY0FBYyxHQUNmLE1BQU0sdUJBQXVCLENBQUE7QUFDOUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE2QixDQUFBO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDbkQsT0FBTyxFQUNMLFlBQVksRUFDWixlQUFlLEVBQ2YsY0FBYyxFQUNkLFVBQVUsR0FDWCxNQUFNLHdCQUF5QixDQUFBO0FBQ2hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYyxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFpQixDQUFBO0FBRTNDLFNBQVMsUUFBUSxDQUFDLFFBQWdCO0lBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQTtBQUNyRCxDQUFDO0FBRUQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxLQUd0QjtJQUNDLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQ3pELE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDakUsTUFBTSxhQUFhLEdBQUcsWUFBWTtRQUNoQyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUN6RCxDQUFDLENBQUMsU0FBUyxDQUFBO0lBRWIsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FDbEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FDdkUsQ0FBQTtJQUNELFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQ2xCLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FDeEUsQ0FBQTtJQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUE7SUFFaEMsTUFBTSxNQUFNLEdBQUcsQ0FDYixrQkFBUSxTQUFTLEVBQUMsMEVBQTBFO1lBQzFGLGNBQ0UsU0FBUyxFQUFFLHVDQUF1QyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxZQUUxRixLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNuQjt3QkFDRSxjQUFLLFNBQVMsRUFBQyxnQkFBZ0IsWUFDN0IsS0FBQyxjQUFjLEtBQUcsR0FDZCxFQUNOLEtBQUMsSUFBSSxJQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsU0FBUyxFQUFDLG1DQUFtQyxZQUN4RCxLQUFDLFNBQVMsS0FBRyxHQUNSO3dCQUNOLENBQ0osQ0FBQyxDQUFDLENBQUMsQ0FDRixLQUFDLElBQUksSUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLFNBQVMsRUFBQyx5QkFBeUIsWUFDOUMsS0FBQyxTQUFTLEtBQUcsR0FDUixDQUNSLEdBQ0csRUFDTixlQUFLLFNBQVMsRUFBQyxvRUFBb0UsYUFDaEYsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FDbEIsUUFBUTt5QkFDTCxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQzt5QkFDaEQsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUNiLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQzs0QkFDaEMsT0FBTyxDQUNMLGFBRUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFDekMsU0FBUyxFQUFDLGtHQUFrRztvQ0FFNUcsS0FBQyxXQUFXLElBQ1YsSUFBSSxFQUFFLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFDMUIsU0FBUyxFQUFDLFVBQVUsR0FDcEIsRUFDRix5QkFBTyxPQUFPLENBQUMsS0FBSyxHQUFRO3FDQVJ2QixPQUFPLENBQUMsR0FBRyxDQVNkLENBQ0wsQ0FBQTt3QkFDSCxDQUFDO3dCQUNELE1BQU0sUUFBUSxHQUFHLGFBQWEsRUFBRSxNQUFNLEtBQUssT0FBTyxDQUFDLE1BQU0sQ0FBQTt3QkFDekQsTUFBTSxNQUFNLEdBQ1YsT0FBTyxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxXQUFXOzRCQUNyRCxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU07NEJBQ2hCLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO3dCQUM3QyxNQUFNLGFBQWEsR0FDakIsT0FBTyxDQUFDLElBQUksS0FBSyxXQUFXLElBQUksT0FBTyxDQUFDLE9BQU87NEJBQzdDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUNqQixDQUFDLENBQUMsRUFBRSxDQUNGLENBQUMsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUMxRCxFQUFFLEtBQUs7NEJBQ1YsQ0FBQyxDQUFDLFNBQVMsQ0FBQTt3QkFDZixPQUFPLENBQ0wsTUFBQyxJQUFJLElBRUgsRUFBRSxFQUFFLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUMvQixNQUFNLEVBQUUsTUFBTSxJQUFJLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUN4RCxTQUFTLEVBQUUsb0RBQ1QsUUFBUTtnQ0FDTixDQUFDLENBQUMseURBQXlEO2dDQUMzRCxDQUFDLENBQUMsaURBQ04sRUFBRTtnQ0FFRixLQUFDLFdBQVcsSUFDVixJQUFJLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUMxQixTQUFTLEVBQUMsVUFBVSxHQUNwQixFQUNGLDJCQUNHLE9BQU8sQ0FBQyxLQUFLLEVBQ2IsYUFBYSxJQUFJLENBQ2hCLGdCQUFNLFNBQVMsRUFBQyxZQUFZLG1CQUFJLGFBQWEsU0FBUyxDQUN2RCxJQUNJO2lDQWxCRixPQUFPLENBQUMsTUFBTSxDQW1CZCxDQUNSLENBQUE7b0JBQ0gsQ0FBQyxDQUFDLENBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FDRixLQUFDLElBQUksSUFDSCxFQUFFLEVBQUMsR0FBRyxFQUNOLFNBQVMsRUFBQywwREFBMEQscUJBRy9ELENBQ1IsRUFDQSxNQUFNLENBQUMsS0FBSzt3QkFDWCxFQUFFLE1BQU0sQ0FDTixJQUFJLENBQUMsRUFBRSxDQUNMLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUTt3QkFDMUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQzFEO3lCQUNBLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQ1gsYUFFRSxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUN0QyxTQUFTLEVBQUMsaUVBQWlFLGFBRTFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FDWixLQUFDLFdBQVcsSUFDVixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFDZixTQUFTLEVBQUMsa0NBQWtDLEdBQzVDLENBQ0gsRUFBRSxHQUFHLEVBQ0wsSUFBSSxDQUFDLEtBQUssS0FWTixJQUFJLENBQUMsR0FBRyxDQVdYLENBQ0wsQ0FBQyxFQUNKLEtBQUMsTUFBTSxLQUFHO29CQUNOLEVBQ04sY0FBSyxTQUFTLEVBQUMsd0JBQXdCLFlBQ3JDLEtBQUMsY0FBYyxLQUFHLEdBQ2Q7WUFDQyxDQUNWLENBQUE7SUFFRCxPQUFPLENBQ0wsS0FBQyxlQUFlLElBRWQsV0FBVyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxZQUVoQyxLQUFDLFlBQVksSUFBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUN6RCxLQUFLLENBQUMsUUFBUSxHQUNGLElBTFYsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBTTNCLENBQ25CLENBQUE7QUFDSCxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsS0FJckI7SUFDQyxNQUFNLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxHQUFHLFVBQVUsRUFBRSxDQUFBO0lBQ2hELE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBdUMsRUFBRSxFQUFFO1FBQzFELElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTTtRQUNyQixJQUFLLEtBQUssQ0FBQyxNQUFzQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDdEUsQ0FBQyxDQUFBO0lBQ0QsT0FBTyxDQUNMLGVBQUssS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPO1lBQ25ELEtBQUMsT0FBTyxJQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxHQUFJLEVBQzNDLE1BQUMsWUFBWSxlQUNWLEtBQUssQ0FBQyxNQUFNLEVBQ2IsZUFBTSxTQUFTLEVBQUMsUUFBUSxZQUFFLEtBQUssQ0FBQyxRQUFRLEdBQVEsRUFDaEQsS0FBQyxTQUFTLEtBQUc7b0JBQ0E7WUFDWCxDQUNQLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29uZmlnIH0gZnJvbSBcImxpdmVtYXJrOnZpcnR1YWxcIlxuaW1wb3J0IHsgTGluaywgdXNlTG9jYXRpb24sIHVzZU1hdGNoIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1yb3V0ZXJcIlxuaW1wb3J0IHsgdXNlSG90a2V5IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1ob3RrZXlzXCJcbmltcG9ydCB7XG4gIGN1cnJlbnRTZWN0aW9uLFxuICBzZWN0aW9uRmlyc3RBcnRpY2xlLFxuICBzZWN0aW9uRmxhdEFydGljbGVzLFxuICBzb3J0ZWRBcnRpY2xlcyxcbn0gZnJvbSBcIi4uL2NvbnRlbnQvYXJ0aWNsZS50c1wiXG5pbXBvcnQgeyBEeW5hbWljSWNvbiB9IGZyb20gXCIuLi9oZWxwZXJzL2R5bmFtaWMtaWNvbi50c3hcIlxuaW1wb3J0IHsgcHJlZml4VXJsIH0gZnJvbSBcIi4uL2hlbHBlcnMvcHJlZml4LXVybC50c1wiXG5pbXBvcnQgeyBzZWN0aW9uSWNvbiB9IGZyb20gXCIuLi9oZWxwZXJzL3NlY3Rpb24udHNcIlxuaW1wb3J0IHtcbiAgU2lkZWJhckluc2V0LFxuICBTaWRlYmFyUHJvdmlkZXIsXG4gIFNpZGViYXJUcmlnZ2VyLFxuICB1c2VTaWRlYmFyLFxufSBmcm9tIFwiLi4vZWxlbWVudHMvc2lkZWJhci50c3hcIlxuaW1wb3J0IHsgQmFja1RvVG9wIH0gZnJvbSBcIi4vQmFja1RvVG9wLnRzeFwiXG5pbXBvcnQgeyBCYW5uZXIgfSBmcm9tIFwiLi9CYW5uZXIudHN4XCJcbmltcG9ydCB7IFNpZGViYXIgfSBmcm9tIFwiLi9TaWRlYmFyLnRzeFwiXG5pbXBvcnQgeyBTaXRlVGl0bGUgfSBmcm9tIFwiLi9TaXRlVGl0bGUudHN4XCJcblxuZnVuY3Rpb24gc3BsYXRGb3IocGF0aG5hbWU6IHN0cmluZykge1xuICByZXR1cm4geyBfc3BsYXQ6IHBhdGhuYW1lLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKSB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBMYXlvdXQocHJvcHM6IHtcbiAgd2l0aFNpZGViYXI/OiBib29sZWFuXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlXG59KSB7XG4gIGNvbnN0IHBhdGhuYW1lID0gdXNlTG9jYXRpb24oeyBzZWxlY3Q6IGwgPT4gbC5wYXRobmFtZSB9KVxuICBjb25zdCBhcnRpY2xlUm91dGUgPSB1c2VNYXRjaCh7IGZyb206IFwiLyRcIiwgc2hvdWxkVGhyb3c6IGZhbHNlIH0pXG4gIGNvbnN0IGFjdGl2ZVNlY3Rpb24gPSBhcnRpY2xlUm91dGVcbiAgICA/IGN1cnJlbnRTZWN0aW9uKGAvJHtwYXRobmFtZS5yZXBsYWNlKC9eXFwvfFxcLyQvZywgXCJcIil9L2ApXG4gICAgOiB1bmRlZmluZWRcblxuICB1c2VIb3RrZXkoXCJKXCIsICgpID0+XG4gICAgd2luZG93LnNjcm9sbEJ5KHsgdG9wOiB3aW5kb3cuaW5uZXJIZWlnaHQgKiAwLjgsIGJlaGF2aW9yOiBcInNtb290aFwiIH0pLFxuICApXG4gIHVzZUhvdGtleShcIktcIiwgKCkgPT5cbiAgICB3aW5kb3cuc2Nyb2xsQnkoeyB0b3A6IC13aW5kb3cuaW5uZXJIZWlnaHQgKiAwLjgsIGJlaGF2aW9yOiBcInNtb290aFwiIH0pLFxuICApXG5cbiAgY29uc3Qgc2VjdGlvbnMgPSBjb25maWcuc2VjdGlvbnNcblxuICBjb25zdCBoZWFkZXIgPSAoXG4gICAgPGhlYWRlciBjbGFzc05hbWU9XCJzdGlja3kgdG9wLTAgei0yMCBmbGV4IGgtMTYgc2hyaW5rLTAgaXRlbXMtY2VudGVyIGJvcmRlci1iIGJnLWJhY2tncm91bmRcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtgZmxleCBpdGVtcy1jZW50ZXIgc2VsZi1zdHJldGNoIHBsLTQgJHtwcm9wcy53aXRoU2lkZWJhciA/IFwicHItNFwiIDogXCJtZDpwci0yMFwifWB9XG4gICAgICA+XG4gICAgICAgIHtwcm9wcy53aXRoU2lkZWJhciA/IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoaWRkZW4gbWQ6ZmxleFwiPlxuICAgICAgICAgICAgICA8U2lkZWJhclRyaWdnZXIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPExpbmsgdG89XCIvXCIgY2xhc3NOYW1lPVwibWQ6aGlkZGVuIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgIDxTaXRlVGl0bGUgLz5cbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8TGluayB0bz1cIi9cIiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgPFNpdGVUaXRsZSAvPlxuICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoaWRkZW4gbWQ6ZmxleCBmbGV4LTEgaXRlbXMtY2VudGVyIGdhcC04IHNlbGYtc3RyZXRjaCBweC02IHRleHQtc21cIj5cbiAgICAgICAge3NlY3Rpb25zPy5sZW5ndGggPyAoXG4gICAgICAgICAgc2VjdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoc2VjdGlvbiA9PiBzZWN0aW9uLnBvc2l0aW9uID09PSBcImhlYWRlclwiKVxuICAgICAgICAgICAgLm1hcChzZWN0aW9uID0+IHtcbiAgICAgICAgICAgICAgaWYgKHNlY3Rpb24udHlwZSA9PT0gXCJleHRlcm5hbFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIGtleT17c2VjdGlvbi51cmx9XG4gICAgICAgICAgICAgICAgICAgIGhyZWY9e3ByZWZpeFVybChzZWN0aW9uLnVybCwgY29uZmlnLmJhc2UpfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSB0ZXh0LWZvcmVncm91bmQgb3BhY2l0eS04MCBob3ZlcjpvcGFjaXR5LTEwMCB0cmFuc2l0aW9uLW9wYWNpdHlcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8RHluYW1pY0ljb25cbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPXtzZWN0aW9uSWNvbihzZWN0aW9uKX1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzaXplLTMuNVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPntzZWN0aW9uLnRpdGxlfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgaXNBY3RpdmUgPSBhY3RpdmVTZWN0aW9uPy5wcmVmaXggPT09IHNlY3Rpb24ucHJlZml4XG4gICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9XG4gICAgICAgICAgICAgICAgc2VjdGlvbi50eXBlID09PSBcImJsb2dcIiB8fCBzZWN0aW9uLnR5cGUgPT09IFwiY2hhbmdlbG9nXCJcbiAgICAgICAgICAgICAgICAgID8gc2VjdGlvbi5wcmVmaXhcbiAgICAgICAgICAgICAgICAgIDogc2VjdGlvbkZpcnN0QXJ0aWNsZS5nZXQoc2VjdGlvbi5wcmVmaXgpXG4gICAgICAgICAgICAgIGNvbnN0IGxhdGVzdFZlcnNpb24gPVxuICAgICAgICAgICAgICAgIHNlY3Rpb24udHlwZSA9PT0gXCJjaGFuZ2Vsb2dcIiAmJiBzZWN0aW9uLnZlcnNpb25cbiAgICAgICAgICAgICAgICAgID8gc29ydGVkQXJ0aWNsZXMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICBhID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBhLnBhdGggPT09IHNlY3Rpb25GbGF0QXJ0aWNsZXMuZ2V0KHNlY3Rpb24ucHJlZml4KT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICApPy50aXRsZVxuICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAga2V5PXtzZWN0aW9uLnByZWZpeH1cbiAgICAgICAgICAgICAgICAgIHRvPXt0YXJnZXQgPT09IFwiL1wiID8gXCIvXCIgOiBcIi8kXCJ9XG4gICAgICAgICAgICAgICAgICBwYXJhbXM9e3RhcmdldCAmJiB0YXJnZXQgIT09IFwiL1wiID8gc3BsYXRGb3IodGFyZ2V0KSA6IHt9fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgdGV4dC1mb3JlZ3JvdW5kICR7XG4gICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgPyBcImZvbnQtbWVkaXVtIGJvcmRlci1iLTIgYm9yZGVyLWZvcmVncm91bmQgcGItMC41IC1tYi0wLjVcIlxuICAgICAgICAgICAgICAgICAgICAgIDogXCJvcGFjaXR5LTgwIGhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eVwiXG4gICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8RHluYW1pY0ljb25cbiAgICAgICAgICAgICAgICAgICAgbmFtZT17c2VjdGlvbkljb24oc2VjdGlvbil9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNpemUtMy41XCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAge3NlY3Rpb24udGl0bGV9XG4gICAgICAgICAgICAgICAgICAgIHtsYXRlc3RWZXJzaW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJvcGFjaXR5LTgwXCI+ICh7bGF0ZXN0VmVyc2lvbn0pPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgdG89XCIvXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtZm9yZWdyb3VuZCBmb250LW1lZGl1bSB1bmRlcmxpbmUgdW5kZXJsaW5lLW9mZnNldC00XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBEb2NzXG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICApfVxuICAgICAgICB7Y29uZmlnLmxpbmtzXG4gICAgICAgICAgPy5maWx0ZXIoXG4gICAgICAgICAgICBsaW5rID0+XG4gICAgICAgICAgICAgIGxpbmsucG9zaXRpb24gPT09IFwiaGVhZGVyXCIgJiZcbiAgICAgICAgICAgICAgKCFsaW5rLnByZWZpeCB8fCBsaW5rLnByZWZpeCA9PT0gYWN0aXZlU2VjdGlvbj8ucHJlZml4KSxcbiAgICAgICAgICApXG4gICAgICAgICAgLm1hcChsaW5rID0+IChcbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGtleT17bGluay51cmx9XG4gICAgICAgICAgICAgIGhyZWY9e3ByZWZpeFVybChsaW5rLnVybCwgY29uZmlnLmJhc2UpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LWZvcmVncm91bmQgb3BhY2l0eS04MCBob3ZlcjpvcGFjaXR5LTEwMCB0cmFuc2l0aW9uLW9wYWNpdHlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bGluay5pY29uICYmIChcbiAgICAgICAgICAgICAgICA8RHluYW1pY0ljb25cbiAgICAgICAgICAgICAgICAgIG5hbWU9e2xpbmsuaWNvbn1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImlubGluZSBzaXplLTMuNSBhbGlnbi1bLTAuMTI1ZW1dXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfXtcIiBcIn1cbiAgICAgICAgICAgICAge2xpbmsudGl0bGV9XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDxCYW5uZXIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZDpoaWRkZW4gbWwtYXV0byBwci0yXCI+XG4gICAgICAgIDxTaWRlYmFyVHJpZ2dlciAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9oZWFkZXI+XG4gIClcblxuICByZXR1cm4gKFxuICAgIDxTaWRlYmFyUHJvdmlkZXJcbiAgICAgIGtleT17cHJvcHMud2l0aFNpZGViYXIgPyBcInNpZGViYXJcIiA6IFwibWluaVwifVxuICAgICAgZGVmYXVsdE9wZW49eyEhcHJvcHMud2l0aFNpZGViYXJ9XG4gICAgPlxuICAgICAgPFNpZGViYXJTaGVsbCB3aXRoU2lkZWJhcj17cHJvcHMud2l0aFNpZGViYXJ9IGhlYWRlcj17aGVhZGVyfT5cbiAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgPC9TaWRlYmFyU2hlbGw+XG4gICAgPC9TaWRlYmFyUHJvdmlkZXI+XG4gIClcbn1cblxuZnVuY3Rpb24gU2lkZWJhclNoZWxsKHByb3BzOiB7XG4gIHdpdGhTaWRlYmFyPzogYm9vbGVhblxuICBoZWFkZXI6IFJlYWN0LlJlYWN0Tm9kZVxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZVxufSkge1xuICBjb25zdCB7IGlzTW9iaWxlLCBzZXRPcGVuTW9iaWxlIH0gPSB1c2VTaWRlYmFyKClcbiAgY29uc3Qgb25DbGljayA9IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWlzTW9iaWxlKSByZXR1cm5cbiAgICBpZiAoKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdChcImFcIikpIHNldE9wZW5Nb2JpbGUoZmFsc2UpXG4gIH1cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6IFwiY29udGVudHNcIiB9fSBvbkNsaWNrPXtvbkNsaWNrfT5cbiAgICAgIDxTaWRlYmFyIHdpdGhTaWRlYmFyPXtwcm9wcy53aXRoU2lkZWJhcn0gLz5cbiAgICAgIDxTaWRlYmFySW5zZXQ+XG4gICAgICAgIHtwcm9wcy5oZWFkZXJ9XG4gICAgICAgIDxtYWluIGNsYXNzTmFtZT1cImZsZXgtMVwiPntwcm9wcy5jaGlsZHJlbn08L21haW4+XG4gICAgICAgIDxCYWNrVG9Ub3AgLz5cbiAgICAgIDwvU2lkZWJhckluc2V0PlxuICAgIDwvZGl2PlxuICApXG59XG4iXX0=
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvTGF5b3V0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUNuRCxPQUFPLEVBQ0wsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsY0FBYyxHQUNmLE1BQU0sdUJBQXVCLENBQUE7QUFDOUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE2QixDQUFBO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDeEUsT0FBTyxFQUNMLFlBQVksRUFDWixlQUFlLEVBQ2YsY0FBYyxFQUNkLFVBQVUsR0FDWCxNQUFNLHdCQUF5QixDQUFBO0FBQ2hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYyxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFpQixDQUFBO0FBRTNDLFNBQVMsUUFBUSxDQUFDLFFBQWdCO0lBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQTtBQUNyRCxDQUFDO0FBRUQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxLQUd0QjtJQUNDLE1BQU0sUUFBUSxHQUFHLFdBQVcs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RUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLEdBQUcsVUFBVSxFQUFFLENBQUE7SUFDaEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUF1QyxFQUFFLEVBQUU7UUFDMUQsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFNO1FBQ3JCLElBQUssS0FBSyxDQUFDLE1BQXNCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN0RSxDQUFDLENBQUE7SUFDRCxPQUFPLENBQ0wsZUFBSyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU87WUFDbkQsS0FBQyxPQUFPLElBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLEdBQUksRUFDM0MsTUFBQyxZQUFZLGVBQ1YsS0FBSyxDQUFDLE1BQU0sRUFDYixlQUFNLFNBQVMsRUFBQyxRQUFRLFlBQUUsS0FBSyxDQUFDLFFBQVEsR0FBUSxFQUNoRCxLQUFDLFNBQVMsS0FBRztvQkFDQTtZQUNYLENBQ1AsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25maWcgfSBmcm9tIFwibGl2ZW1hcms6dmlydHVhbFwiXG5pbXBvcnQgeyBMaW5rLCB1c2VMb2NhdGlvbiwgdXNlTWF0Y2ggfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXJvdXRlclwiXG5pbXBvcnQgeyB1c2VIb3RrZXkgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LWhvdGtleXNcIlxuaW1wb3J0IHtcbiAgY3VycmVudFNlY3Rpb24sXG4gIHNlY3Rpb25GaXJzdEFydGljbGUsXG4gIHNlY3Rpb25GbGF0QXJ0aWNsZXMsXG4gIHNvcnRlZEFydGljbGVzLFxufSBmcm9tIFwiLi4vY29udGVudC9hcnRpY2xlLnRzXCJcbmltcG9ydCB7IER5bmFtaWNJY29uIH0gZnJvbSBcIi4uL2hlbHBlcnMvZHluYW1pYy1pY29uLnRzeFwiXG5pbXBvcnQgeyBwcmVmaXhVcmwgfSBmcm9tIFwiLi4vaGVscGVycy9wcmVmaXgtdXJsLnRzXCJcbmltcG9ydCB7IGN1c3RvbVNlY3Rpb25BY3RpdmUsIHNlY3Rpb25JY29uIH0gZnJvbSBcIi4uL2hlbHBlcnMvc2VjdGlvbi50c1wiXG5pbXBvcnQge1xuICBTaWRlYmFySW5zZXQsXG4gIFNpZGViYXJQcm92aWRlcixcbiAgU2lkZWJhclRyaWdnZXIsXG4gIHVzZVNpZGViYXIsXG59IGZyb20gXCIuLi9lbGVtZW50cy9zaWRlYmFyLnRzeFwiXG5pbXBvcnQgeyBCYWNrVG9Ub3AgfSBmcm9tIFwiLi9CYWNrVG9Ub3AudHN4XCJcbmltcG9ydCB7IEJhbm5lciB9IGZyb20gXCIuL0Jhbm5lci50c3hcIlxuaW1wb3J0IHsgU2lkZWJhciB9IGZyb20gXCIuL1NpZGViYXIudHN4XCJcbmltcG9ydCB7IFNpdGVUaXRsZSB9IGZyb20gXCIuL1NpdGVUaXRsZS50c3hcIlxuXG5mdW5jdGlvbiBzcGxhdEZvcihwYXRobmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiB7IF9zcGxhdDogcGF0aG5hbWUucmVwbGFjZSgvXlxcL3xcXC8kL2csIFwiXCIpIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIExheW91dChwcm9wczoge1xuICB3aXRoU2lkZWJhcj86IGJvb2xlYW5cbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGVcbn0pIHtcbiAgY29uc3QgcGF0aG5hbWUgPSB1c2VMb2NhdGlvbih7IHNlbGVjdDogbCA9PiBsLnBhdGhuYW1lIH0pXG4gIGNvbnN0IGFydGljbGVSb3V0ZSA9IHVzZU1hdGNoKHsgZnJvbTogXCIvJFwiLCBzaG91bGRUaHJvdzogZmFsc2UgfSlcbiAgY29uc3QgYWN0aXZlU2VjdGlvbiA9IGFydGljbGVSb3V0ZVxuICAgID8gY3VycmVudFNlY3Rpb24oYC8ke3BhdGhuYW1lLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKX0vYClcbiAgICA6IHVuZGVmaW5lZFxuXG4gIHVzZUhvdGtleShcIkpcIiwgKCkgPT5cbiAgICB3aW5kb3cuc2Nyb2xsQnkoeyB0b3A6IHdpbmRvdy5pbm5lckhlaWdodCAqIDAuOCwgYmVoYXZpb3I6IFwic21vb3RoXCIgfSksXG4gIClcbiAgdXNlSG90a2V5KFwiS1wiLCAoKSA9PlxuICAgIHdpbmRvdy5zY3JvbGxCeSh7IHRvcDogLXdpbmRvdy5pbm5lckhlaWdodCAqIDAuOCwgYmVoYXZpb3I6IFwic21vb3RoXCIgfSksXG4gIClcblxuICBjb25zdCBzZWN0aW9ucyA9IGNvbmZpZy5zZWN0aW9uc1xuXG4gIGNvbnN0IGhlYWRlciA9IChcbiAgICA8aGVhZGVyIGNsYXNzTmFtZT1cInN0aWNreSB0b3AtMCB6LTIwIGZsZXggaC0xNiBzaHJpbmstMCBpdGVtcy1jZW50ZXIgYm9yZGVyLWIgYmctYmFja2dyb3VuZFwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2BmbGV4IGl0ZW1zLWNlbnRlciBzZWxmLXN0cmV0Y2ggcGwtNCAke3Byb3BzLndpdGhTaWRlYmFyID8gXCJwci00XCIgOiBcIm1kOnByLTIwXCJ9YH1cbiAgICAgID5cbiAgICAgICAge3Byb3BzLndpdGhTaWRlYmFyID8gKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImhpZGRlbiBtZDpmbGV4XCI+XG4gICAgICAgICAgICAgIDxTaWRlYmFyVHJpZ2dlciAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8TGluayB0bz1cIi9cIiBjbGFzc05hbWU9XCJtZDpoaWRkZW4gZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPFNpdGVUaXRsZSAvPlxuICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgIDwvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxMaW5rIHRvPVwiL1wiIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICA8U2l0ZVRpdGxlIC8+XG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhpZGRlbiBtZDpmbGV4IGZsZXgtMSBpdGVtcy1jZW50ZXIgZ2FwLTggc2VsZi1zdHJldGNoIHB4LTYgdGV4dC1zbVwiPlxuICAgICAgICB7c2VjdGlvbnM/Lmxlbmd0aCA/IChcbiAgICAgICAgICBzZWN0aW9uc1xuICAgICAgICAgICAgLmZpbHRlcihzZWN0aW9uID0+IHNlY3Rpb24ucG9zaXRpb24gPT09IFwiaGVhZGVyXCIpXG4gICAgICAgICAgICAubWFwKHNlY3Rpb24gPT4ge1xuICAgICAgICAgICAgICBjb25zdCBpY29uID0gc2VjdGlvbkljb24oc2VjdGlvbilcbiAgICAgICAgICAgICAgaWYgKHNlY3Rpb24udHlwZSA9PT0gXCJjdXN0b21cIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzQWN0aXZlID0gY3VzdG9tU2VjdGlvbkFjdGl2ZShzZWN0aW9uLnVybCwgcGF0aG5hbWUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIGtleT17c2VjdGlvbi51cmx9XG4gICAgICAgICAgICAgICAgICAgIGhyZWY9e3ByZWZpeFVybChzZWN0aW9uLnVybCwgY29uZmlnLmJhc2UpfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSB0ZXh0LWZvcmVncm91bmQgJHtcbiAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZvbnQtbWVkaXVtIGJvcmRlci1iLTIgYm9yZGVyLWZvcmVncm91bmQgcGItMC41IC1tYi0wLjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcIm9wYWNpdHktODAgaG92ZXI6b3BhY2l0eS0xMDAgdHJhbnNpdGlvbi1vcGFjaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtpY29uICYmIDxEeW5hbWljSWNvbiBuYW1lPXtpY29ufSBjbGFzc05hbWU9XCJzaXplLTMuNVwiIC8+fVxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57c2VjdGlvbi50aXRsZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGlzQWN0aXZlID0gYWN0aXZlU2VjdGlvbj8ucHJlZml4ID09PSBzZWN0aW9uLnByZWZpeFxuICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPVxuICAgICAgICAgICAgICAgIHNlY3Rpb24udHlwZSA9PT0gXCJibG9nXCIgfHwgc2VjdGlvbi50eXBlID09PSBcImNoYW5nZWxvZ1wiXG4gICAgICAgICAgICAgICAgICA/IHNlY3Rpb24ucHJlZml4XG4gICAgICAgICAgICAgICAgICA6IHNlY3Rpb25GaXJzdEFydGljbGUuZ2V0KHNlY3Rpb24ucHJlZml4KVxuICAgICAgICAgICAgICBjb25zdCBsYXRlc3RWZXJzaW9uID1cbiAgICAgICAgICAgICAgICBzZWN0aW9uLnR5cGUgPT09IFwiY2hhbmdlbG9nXCIgJiYgc2VjdGlvbi52ZXJzaW9uXG4gICAgICAgICAgICAgICAgICA/IHNvcnRlZEFydGljbGVzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgYSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgYS5wYXRoID09PSBzZWN0aW9uRmxhdEFydGljbGVzLmdldChzZWN0aW9uLnByZWZpeCk/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgKT8udGl0bGVcbiAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgIGtleT17c2VjdGlvbi5wcmVmaXh9XG4gICAgICAgICAgICAgICAgICB0bz17dGFyZ2V0ID09PSBcIi9cIiA/IFwiL1wiIDogXCIvJFwifVxuICAgICAgICAgICAgICAgICAgcGFyYW1zPXt0YXJnZXQgJiYgdGFyZ2V0ICE9PSBcIi9cIiA/IHNwbGF0Rm9yKHRhcmdldCkgOiB7fX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHRleHQtZm9yZWdyb3VuZCAke1xuICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgID8gXCJmb250LW1lZGl1bSBib3JkZXItYi0yIGJvcmRlci1mb3JlZ3JvdW5kIHBiLTAuNSAtbWItMC41XCJcbiAgICAgICAgICAgICAgICAgICAgICA6IFwib3BhY2l0eS04MCBob3ZlcjpvcGFjaXR5LTEwMCB0cmFuc2l0aW9uLW9wYWNpdHlcIlxuICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge2ljb24gJiYgPER5bmFtaWNJY29uIG5hbWU9e2ljb259IGNsYXNzTmFtZT1cInNpemUtMy41XCIgLz59XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAge3NlY3Rpb24udGl0bGV9XG4gICAgICAgICAgICAgICAgICAgIHtsYXRlc3RWZXJzaW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJvcGFjaXR5LTgwXCI+ICh7bGF0ZXN0VmVyc2lvbn0pPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgdG89XCIvXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtZm9yZWdyb3VuZCBmb250LW1lZGl1bSB1bmRlcmxpbmUgdW5kZXJsaW5lLW9mZnNldC00XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBEb2NzXG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICApfVxuICAgICAgICB7Y29uZmlnLmxpbmtzXG4gICAgICAgICAgPy5maWx0ZXIoXG4gICAgICAgICAgICBsaW5rID0+XG4gICAgICAgICAgICAgIGxpbmsucG9zaXRpb24gPT09IFwiaGVhZGVyXCIgJiZcbiAgICAgICAgICAgICAgKCFsaW5rLnByZWZpeCB8fCBsaW5rLnByZWZpeCA9PT0gYWN0aXZlU2VjdGlvbj8ucHJlZml4KSxcbiAgICAgICAgICApXG4gICAgICAgICAgLm1hcChsaW5rID0+IChcbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGtleT17bGluay51cmx9XG4gICAgICAgICAgICAgIGhyZWY9e3ByZWZpeFVybChsaW5rLnVybCwgY29uZmlnLmJhc2UpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LWZvcmVncm91bmQgb3BhY2l0eS04MCBob3ZlcjpvcGFjaXR5LTEwMCB0cmFuc2l0aW9uLW9wYWNpdHlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bGluay5pY29uICYmIChcbiAgICAgICAgICAgICAgICA8RHluYW1pY0ljb25cbiAgICAgICAgICAgICAgICAgIG5hbWU9e2xpbmsuaWNvbn1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImlubGluZSBzaXplLTMuNSBhbGlnbi1bLTAuMTI1ZW1dXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfXtcIiBcIn1cbiAgICAgICAgICAgICAge2xpbmsudGl0bGV9XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDxCYW5uZXIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZDpoaWRkZW4gbWwtYXV0byBwci0yXCI+XG4gICAgICAgIDxTaWRlYmFyVHJpZ2dlciAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9oZWFkZXI+XG4gIClcblxuICByZXR1cm4gKFxuICAgIDxTaWRlYmFyUHJvdmlkZXJcbiAgICAgIGtleT17cHJvcHMud2l0aFNpZGViYXIgPyBcInNpZGViYXJcIiA6IFwibWluaVwifVxuICAgICAgZGVmYXVsdE9wZW49eyEhcHJvcHMud2l0aFNpZGViYXJ9XG4gICAgPlxuICAgICAgPFNpZGViYXJTaGVsbCB3aXRoU2lkZWJhcj17cHJvcHMud2l0aFNpZGViYXJ9IGhlYWRlcj17aGVhZGVyfT5cbiAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgPC9TaWRlYmFyU2hlbGw+XG4gICAgPC9TaWRlYmFyUHJvdmlkZXI+XG4gIClcbn1cblxuZnVuY3Rpb24gU2lkZWJhclNoZWxsKHByb3BzOiB7XG4gIHdpdGhTaWRlYmFyPzogYm9vbGVhblxuICBoZWFkZXI6IFJlYWN0LlJlYWN0Tm9kZVxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZVxufSkge1xuICBjb25zdCB7IGlzTW9iaWxlLCBzZXRPcGVuTW9iaWxlIH0gPSB1c2VTaWRlYmFyKClcbiAgY29uc3Qgb25DbGljayA9IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWlzTW9iaWxlKSByZXR1cm5cbiAgICBpZiAoKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdChcImFcIikpIHNldE9wZW5Nb2JpbGUoZmFsc2UpXG4gIH1cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6IFwiY29udGVudHNcIiB9fSBvbkNsaWNrPXtvbkNsaWNrfT5cbiAgICAgIDxTaWRlYmFyIHdpdGhTaWRlYmFyPXtwcm9wcy53aXRoU2lkZWJhcn0gLz5cbiAgICAgIDxTaWRlYmFySW5zZXQ+XG4gICAgICAgIHtwcm9wcy5oZWFkZXJ9XG4gICAgICAgIDxtYWluIGNsYXNzTmFtZT1cImZsZXgtMVwiPntwcm9wcy5jaGlsZHJlbn08L21haW4+XG4gICAgICAgIDxCYWNrVG9Ub3AgLz5cbiAgICAgIDwvU2lkZWJhckluc2V0PlxuICAgIDwvZGl2PlxuICApXG59XG4iXX0=
@@ -4,7 +4,7 @@ import { Link, useLocation, useMatch } from "@tanstack/react-router";
4
4
  import { currentSection, sectionFirstArticle } from "../content/article.js";
5
5
  import { DynamicIcon } from "../helpers/dynamic-icon.js";
6
6
  import { prefixUrl } from "../helpers/prefix-url.js";
7
- import { sectionIcon } from "../helpers/section.js";
7
+ import { customSectionActive, sectionIcon } from "../helpers/section.js";
8
8
  import { SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarMenu, SidebarMenuButton, SidebarMenuItem, } from "../elements/sidebar.js";
9
9
  function splatFor(pathname) {
10
10
  return { _splat: pathname.replace(/^\/|\/$/g, "") };
@@ -25,19 +25,19 @@ export function SidebarSections() {
25
25
  return (_jsxs(SidebarGroup, { className: hasDesktopItems ? undefined : "md:hidden", children: [
26
26
  _jsx(SidebarGroupLabel, { className: "uppercase font-mono text-xs tracking-widest", children: "Sections" }), _jsx(SidebarGroupContent, { children: _jsx(SidebarMenu, { children: sections.map(s => {
27
27
  const mobileOnly = s.position !== "sidebar";
28
- if (s.type === "external") {
29
- return (_jsx(SidebarMenuItem, { className: mobileOnly ? "md:hidden" : undefined, children: _jsxs(SidebarMenuButton, { className: "opacity-75", render: _jsx("a", { href: prefixUrl(s.url, config.base) }), children: [
30
- _jsx(DynamicIcon, { name: sectionIcon(s), className: "size-4" }), _jsx("span", { children: s.title })
28
+ const icon = sectionIcon(s);
29
+ if (s.type === "custom") {
30
+ const active = customSectionActive(s.url, pathname);
31
+ return (_jsx(SidebarMenuItem, { className: mobileOnly ? "md:hidden" : undefined, children: _jsxs(SidebarMenuButton, { isActive: active, className: active ? "" : "opacity-75", render: _jsx("a", { href: prefixUrl(s.url, config.base) }), children: [icon && _jsx(DynamicIcon, { name: icon, className: "size-4" }), _jsx("span", { children: s.title })
31
32
  ] }) }, s.url));
32
33
  }
33
34
  const target = s.type === "blog" || s.type === "changelog"
34
35
  ? s.prefix
35
36
  : (sectionFirstArticle.get(s.prefix) ?? s.prefix);
36
37
  const active = section?.prefix === s.prefix;
37
- return (_jsx(SidebarMenuItem, { className: mobileOnly ? "md:hidden" : undefined, children: _jsxs(SidebarMenuButton, { isActive: active, className: active ? "" : "opacity-75", render: _jsx(Link, { to: target === "/" ? "/" : "/$", params: target && target !== "/" ? splatFor(target) : {} }), children: [
38
- _jsx(DynamicIcon, { name: sectionIcon(s), className: "size-4" }), _jsx("span", { children: s.title })
38
+ return (_jsx(SidebarMenuItem, { className: mobileOnly ? "md:hidden" : undefined, children: _jsxs(SidebarMenuButton, { isActive: active, className: active ? "" : "opacity-75", render: _jsx(Link, { to: target === "/" ? "/" : "/$", params: target && target !== "/" ? splatFor(target) : {} }), children: [icon && _jsx(DynamicIcon, { name: icon, className: "size-4" }), _jsx("span", { children: s.title })
39
39
  ] }) }, s.prefix));
40
40
  }) }) })
41
41
  ] }));
42
42
  }
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2lkZWJhclNlY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvU2lkZWJhclNlY3Rpb25zLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTZCLENBQUE7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNuRCxPQUFPLEVBQ0wsWUFBWSxFQUNaLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixlQUFlLEdBQ2hCLE1BQU0sd0JBQXlCLENBQUE7QUFFaEMsU0FBUyxRQUFRLENBQUMsUUFBZ0I7SUFDaEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFBO0FBQ3JELENBQUM7QUFFRDs7d0VBRXdFO0FBQ3hFLE1BQU0sVUFBVSxlQUFlO0lBQzdCLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQ3pELE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDakUsTUFBTSxPQUFPLEdBQUcsWUFBWTtRQUMxQixDQUFDLENB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LENBQ2hCLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29uZmlnIH0gZnJvbSBcImxpdmVtYXJrOnZpcnR1YWxcIlxuaW1wb3J0IHsgTGluaywgdXNlTG9jYXRpb24sIHVzZU1hdGNoIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1yb3V0ZXJcIlxuaW1wb3J0IHsgY3VycmVudFNlY3Rpb24sIHNlY3Rpb25GaXJzdEFydGljbGUgfSBmcm9tIFwiLi4vY29udGVudC9hcnRpY2xlLnRzXCJcbmltcG9ydCB7IER5bmFtaWNJY29uIH0gZnJvbSBcIi4uL2hlbHBlcnMvZHluYW1pYy1pY29uLnRzeFwiXG5pbXBvcnQgeyBwcmVmaXhVcmwgfSBmcm9tIFwiLi4vaGVscGVycy9wcmVmaXgtdXJsLnRzXCJcbmltcG9ydCB7IHNlY3Rpb25JY29uIH0gZnJvbSBcIi4uL2hlbHBlcnMvc2VjdGlvbi50c1wiXG5pbXBvcnQge1xuICBTaWRlYmFyR3JvdXAsXG4gIFNpZGViYXJHcm91cENvbnRlbnQsXG4gIFNpZGViYXJHcm91cExhYmVsLFxuICBTaWRlYmFyTWVudSxcbiAgU2lkZWJhck1lbnVCdXR0b24sXG4gIFNpZGViYXJNZW51SXRlbSxcbn0gZnJvbSBcIi4uL2VsZW1lbnRzL3NpZGViYXIudHN4XCJcblxuZnVuY3Rpb24gc3BsYXRGb3IocGF0aG5hbWU6IHN0cmluZykge1xuICByZXR1cm4geyBfc3BsYXQ6IHBhdGhuYW1lLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKSB9XG59XG5cbi8qKiBTaGFyZWQgU2VjdGlvbnMgZ3JvdXAuIFJlbmRlcnMgc2lkZWJhci1wb3NpdGlvbmVkIHNlY3Rpb25zIGFsd2F5cywgYW5kXG4gKiBoZWFkZXItcG9zaXRpb25lZCBzZWN0aW9ucyBvbmx5IG9uIG1vYmlsZSAobW9iaWxlIGNvbGxhcHNlcyBhbGwgc2VjdGlvbnNcbiAqIGludG8gdGhlIHNpZGViYXIgc2luY2UgdGhlIGhlYWRlciBuYXYgc3RyaXAgaXMgaGlkZGVuIGJlbG93IGBtZGApLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFNpZGViYXJTZWN0aW9ucygpIHtcbiAgY29uc3QgcGF0aG5hbWUgPSB1c2VMb2NhdGlvbih7IHNlbGVjdDogbCA9PiBsLnBhdGhuYW1lIH0pXG4gIGNvbnN0IGFydGljbGVSb3V0ZSA9IHVzZU1hdGNoKHsgZnJvbTogXCIvJFwiLCBzaG91bGRUaHJvdzogZmFsc2UgfSlcbiAgY29uc3Qgc2VjdGlvbiA9IGFydGljbGVSb3V0ZVxuICAgID8gY3VycmVudFNlY3Rpb24oYC8ke3BhdGhuYW1lLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKX0vYClcbiAgICA6IHVuZGVmaW5lZFxuICBjb25zdCBzZWN0aW9ucyA9IGNvbmZpZy5zZWN0aW9ucyA/PyBbXVxuXG4gIGlmICghc2VjdGlvbnMubGVuZ3RoKSByZXR1cm4gbnVsbFxuICBjb25zdCBoYXNEZXNrdG9wSXRlbXMgPSBzZWN0aW9ucy5zb21lKHMgPT4gcy5wb3NpdGlvbiA9PT0gXCJzaWRlYmFyXCIpXG5cbiAgcmV0dXJuIChcbiAgICA8U2lkZWJhckdyb3VwIGNsYXNzTmFtZT17aGFzRGVza3RvcEl0ZW1zID8gdW5kZWZpbmVkIDogXCJtZDpoaWRkZW5cIn0+XG4gICAgICA8U2lkZWJhckdyb3VwTGFiZWwgY2xhc3NOYW1lPVwidXBwZXJjYXNlIGZvbnQtbW9ubyB0ZXh0LXhzIHRyYWNraW5nLXdpZGVzdFwiPlxuICAgICAgICBTZWN0aW9uc1xuICAgICAgPC9TaWRlYmFyR3JvdXBMYWJlbD5cbiAgICAgIDxTaWRlYmFyR3JvdXBDb250ZW50PlxuICAgICAgICA8U2lkZWJhck1lbnU+XG4gICAgICAgICAge3NlY3Rpb25zLm1hcChzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vYmlsZU9ubHkgPSBzLnBvc2l0aW9uICE9PSBcInNpZGViYXJcIlxuICAgICAgICAgICAgaWYgKHMudHlwZSA9PT0gXCJleHRlcm5hbFwiKSB7XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPFNpZGViYXJNZW51SXRlbVxuICAgICAgICAgICAgICAgICAga2V5PXtzLnVybH1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17bW9iaWxlT25seSA/IFwibWQ6aGlkZGVuXCIgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFNpZGViYXJNZW51QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9wYWNpdHktNzVcIlxuICAgICAgICAgICAgICAgICAgICByZW5kZXI9ezxhIGhyZWY9e3ByZWZpeFVybChzLnVybCwgY29uZmlnLmJhc2UpfSAvPn1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPER5bmFtaWNJY29uIG5hbWU9e3NlY3Rpb25JY29uKHMpfSBjbGFzc05hbWU9XCJzaXplLTRcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57cy50aXRsZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L1NpZGViYXJNZW51QnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvU2lkZWJhck1lbnVJdGVtPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPVxuICAgICAgICAgICAgICBzLnR5cGUgPT09IFwiYmxvZ1wiIHx8IHMudHlwZSA9PT0gXCJjaGFuZ2Vsb2dcIlxuICAgICAgICAgICAgICAgID8gcy5wcmVmaXhcbiAgICAgICAgICAgICAgICA6IChzZWN0aW9uRmlyc3RBcnRpY2xlLmdldChzLnByZWZpeCkgPz8gcy5wcmVmaXgpXG4gICAgICAgICAgICBjb25zdCBhY3RpdmUgPSBzZWN0aW9uPy5wcmVmaXggPT09IHMucHJlZml4XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8U2lkZWJhck1lbnVJdGVtXG4gICAgICAgICAgICAgICAga2V5PXtzLnByZWZpeH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e21vYmlsZU9ubHkgPyBcIm1kOmhpZGRlblwiIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNpZGViYXJNZW51QnV0dG9uXG4gICAgICAgICAgICAgICAgICBpc0FjdGl2ZT17YWN0aXZlfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXthY3RpdmUgPyBcIlwiIDogXCJvcGFjaXR5LTc1XCJ9XG4gICAgICAgICAgICAgICAgICByZW5kZXI9e1xuICAgICAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgICAgIHRvPXt0YXJnZXQgPT09IFwiL1wiID8gXCIvXCIgOiBcIi8kXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgcGFyYW1zPXt0YXJnZXQgJiYgdGFyZ2V0ICE9PSBcIi9cIiA/IHNwbGF0Rm9yKHRhcmdldCkgOiB7fX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8RHluYW1pY0ljb24gbmFtZT17c2VjdGlvbkljb24ocyl9IGNsYXNzTmFtZT1cInNpemUtNFwiIC8+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57cy50aXRsZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9TaWRlYmFyTWVudUJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9TaWRlYmFyTWVudUl0ZW0+XG4gICAgICAgICAgICApXG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvU2lkZWJhck1lbnU+XG4gICAgICA8L1NpZGViYXJHcm91cENvbnRlbnQ+XG4gICAgPC9TaWRlYmFyR3JvdXA+XG4gIClcbn1cbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2lkZWJhclNlY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvU2lkZWJhclNlY3Rpb25zLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTZCLENBQUE7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUN4RSxPQUFPLEVBQ0wsWUFBWSxFQUNaLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixlQUFlLEdBQ2hCLE1BQU0sd0JBQXlCLENBQUE7QUFFaEMsU0FBUyxRQUFRLENBQUMsUUFBZ0I7SUFDaEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFBO0FBQ3JELENBQUM7QUFFRDs7d0VBRXdFO0FBQ3hFLE1BQU0sVUFBVSxlQUFlO0lBQzdCLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQ3pELE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDakUsTUFBTSxPQUFPLEdBQUcsWUFBWTtRQUMxQixDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUN6RCxDQUFDLENBQUMsU0FBUyxDQUFBO0lBQ2IsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUE7SUFFdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNO1FBQUUsT0FBTyxJQUFJLENBQUE7SUFDakMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUE7SUFFcEUsT0FBTyxDQUNMLE1BQUMsWUFBWSxJQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVztZQUNoRSxLQUFDLGlCQUFpQixJQUFDLFNBQVMsRUFBQyw2Q0FBNkMseUJBRXRELEVBQ3BCLEtBQUMsbUJBQW1CLGNBQ2xCLEtBQUMsV0FBVyxjQUNULFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQ2hCLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFBO3dCQUMzQyxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUE7d0JBQzNCLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQzs0QkFDeEIsTUFBTSxNQUFNLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQTs0QkFDbkQsT0FBTyxDQUNMLEtBQUMsZUFBZSxJQUVkLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxZQUUvQyxNQUFDLGlCQUFpQixJQUNoQixRQUFRLEVBQUUsTUFBTSxFQUNoQixTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFDckMsTUFBTSxFQUFFLFlBQUcsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBSSxhQUVqRCxJQUFJLElBQUksS0FBQyxXQUFXLElBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUMsUUFBUSxHQUFHLEVBQ3ZELHlCQUFPLENBQUMsQ0FBQyxLQUFLLEdBQVE7d0NBQ0osSUFWZixDQUFDLENBQUMsR0FBRyxDQVdNLENBQ25CLENBQUE7d0JBQ0gsQ0FBQzt3QkFDRCxNQUFNLE1BQU0sR0FDVixDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFdBQVc7NEJBQ3pDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTs0QkFDVixDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTt3QkFDckQsTUFBTSxNQUFNLEdBQUcsT0FBTyxFQUFFLE1BQU0sS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFBO3dCQUMzQyxPQUFPLENBQ0wsS0FBQyxlQUFlLElBRWQsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLFlBRS9DLE1BQUMsaUJBQWlCLElBQ2hCLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUNyQyxNQUFNLEVBQ0osS0FBQyxJQUFJLElBQ0gsRUFBRSxFQUFFLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUMvQixNQUFNLEVBQUUsTUFBTSxJQUFJLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUN4RCxhQUdILElBQUksSUFBSSxLQUFDLFdBQVcsSUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBQyxRQUFRLEdBQUcsRUFDdkQseUJBQU8sQ0FBQyxDQUFDLEtBQUssR0FBUTtvQ0FDSixJQWZmLENBQUMsQ0FBQyxNQUFNLENBZ0JHLENBQ25CLENBQUE7b0JBQ0gsQ0FBQyxDQUFDLEdBQ1UsR0FDTTtZQUNULENBQ2hCLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29uZmlnIH0gZnJvbSBcImxpdmVtYXJrOnZpcnR1YWxcIlxuaW1wb3J0IHsgTGluaywgdXNlTG9jYXRpb24sIHVzZU1hdGNoIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1yb3V0ZXJcIlxuaW1wb3J0IHsgY3VycmVudFNlY3Rpb24sIHNlY3Rpb25GaXJzdEFydGljbGUgfSBmcm9tIFwiLi4vY29udGVudC9hcnRpY2xlLnRzXCJcbmltcG9ydCB7IER5bmFtaWNJY29uIH0gZnJvbSBcIi4uL2hlbHBlcnMvZHluYW1pYy1pY29uLnRzeFwiXG5pbXBvcnQgeyBwcmVmaXhVcmwgfSBmcm9tIFwiLi4vaGVscGVycy9wcmVmaXgtdXJsLnRzXCJcbmltcG9ydCB7IGN1c3RvbVNlY3Rpb25BY3RpdmUsIHNlY3Rpb25JY29uIH0gZnJvbSBcIi4uL2hlbHBlcnMvc2VjdGlvbi50c1wiXG5pbXBvcnQge1xuICBTaWRlYmFyR3JvdXAsXG4gIFNpZGViYXJHcm91cENvbnRlbnQsXG4gIFNpZGViYXJHcm91cExhYmVsLFxuICBTaWRlYmFyTWVudSxcbiAgU2lkZWJhck1lbnVCdXR0b24sXG4gIFNpZGViYXJNZW51SXRlbSxcbn0gZnJvbSBcIi4uL2VsZW1lbnRzL3NpZGViYXIudHN4XCJcblxuZnVuY3Rpb24gc3BsYXRGb3IocGF0aG5hbWU6IHN0cmluZykge1xuICByZXR1cm4geyBfc3BsYXQ6IHBhdGhuYW1lLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKSB9XG59XG5cbi8qKiBTaGFyZWQgU2VjdGlvbnMgZ3JvdXAuIFJlbmRlcnMgc2lkZWJhci1wb3NpdGlvbmVkIHNlY3Rpb25zIGFsd2F5cywgYW5kXG4gKiBoZWFkZXItcG9zaXRpb25lZCBzZWN0aW9ucyBvbmx5IG9uIG1vYmlsZSAobW9iaWxlIGNvbGxhcHNlcyBhbGwgc2VjdGlvbnNcbiAqIGludG8gdGhlIHNpZGViYXIgc2luY2UgdGhlIGhlYWRlciBuYXYgc3RyaXAgaXMgaGlkZGVuIGJlbG93IGBtZGApLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFNpZGViYXJTZWN0aW9ucygpIHtcbiAgY29uc3QgcGF0aG5hbWUgPSB1c2VMb2NhdGlvbih7IHNlbGVjdDogbCA9PiBsLnBhdGhuYW1lIH0pXG4gIGNvbnN0IGFydGljbGVSb3V0ZSA9IHVzZU1hdGNoKHsgZnJvbTogXCIvJFwiLCBzaG91bGRUaHJvdzogZmFsc2UgfSlcbiAgY29uc3Qgc2VjdGlvbiA9IGFydGljbGVSb3V0ZVxuICAgID8gY3VycmVudFNlY3Rpb24oYC8ke3BhdGhuYW1lLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKX0vYClcbiAgICA6IHVuZGVmaW5lZFxuICBjb25zdCBzZWN0aW9ucyA9IGNvbmZpZy5zZWN0aW9ucyA/PyBbXVxuXG4gIGlmICghc2VjdGlvbnMubGVuZ3RoKSByZXR1cm4gbnVsbFxuICBjb25zdCBoYXNEZXNrdG9wSXRlbXMgPSBzZWN0aW9ucy5zb21lKHMgPT4gcy5wb3NpdGlvbiA9PT0gXCJzaWRlYmFyXCIpXG5cbiAgcmV0dXJuIChcbiAgICA8U2lkZWJhckdyb3VwIGNsYXNzTmFtZT17aGFzRGVza3RvcEl0ZW1zID8gdW5kZWZpbmVkIDogXCJtZDpoaWRkZW5cIn0+XG4gICAgICA8U2lkZWJhckdyb3VwTGFiZWwgY2xhc3NOYW1lPVwidXBwZXJjYXNlIGZvbnQtbW9ubyB0ZXh0LXhzIHRyYWNraW5nLXdpZGVzdFwiPlxuICAgICAgICBTZWN0aW9uc1xuICAgICAgPC9TaWRlYmFyR3JvdXBMYWJlbD5cbiAgICAgIDxTaWRlYmFyR3JvdXBDb250ZW50PlxuICAgICAgICA8U2lkZWJhck1lbnU+XG4gICAgICAgICAge3NlY3Rpb25zLm1hcChzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vYmlsZU9ubHkgPSBzLnBvc2l0aW9uICE9PSBcInNpZGViYXJcIlxuICAgICAgICAgICAgY29uc3QgaWNvbiA9IHNlY3Rpb25JY29uKHMpXG4gICAgICAgICAgICBpZiAocy50eXBlID09PSBcImN1c3RvbVwiKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IGN1c3RvbVNlY3Rpb25BY3RpdmUocy51cmwsIHBhdGhuYW1lKVxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxTaWRlYmFyTWVudUl0ZW1cbiAgICAgICAgICAgICAgICAgIGtleT17cy51cmx9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e21vYmlsZU9ubHkgPyBcIm1kOmhpZGRlblwiIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTaWRlYmFyTWVudUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZT17YWN0aXZlfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2FjdGl2ZSA/IFwiXCIgOiBcIm9wYWNpdHktNzVcIn1cbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXs8YSBocmVmPXtwcmVmaXhVcmwocy51cmwsIGNvbmZpZy5iYXNlKX0gLz59XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtpY29uICYmIDxEeW5hbWljSWNvbiBuYW1lPXtpY29ufSBjbGFzc05hbWU9XCJzaXplLTRcIiAvPn1cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3MudGl0bGV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9TaWRlYmFyTWVudUJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L1NpZGViYXJNZW51SXRlbT5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID1cbiAgICAgICAgICAgICAgcy50eXBlID09PSBcImJsb2dcIiB8fCBzLnR5cGUgPT09IFwiY2hhbmdlbG9nXCJcbiAgICAgICAgICAgICAgICA/IHMucHJlZml4XG4gICAgICAgICAgICAgICAgOiAoc2VjdGlvbkZpcnN0QXJ0aWNsZS5nZXQocy5wcmVmaXgpID8/IHMucHJlZml4KVxuICAgICAgICAgICAgY29uc3QgYWN0aXZlID0gc2VjdGlvbj8ucHJlZml4ID09PSBzLnByZWZpeFxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPFNpZGViYXJNZW51SXRlbVxuICAgICAgICAgICAgICAgIGtleT17cy5wcmVmaXh9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXttb2JpbGVPbmx5ID8gXCJtZDpoaWRkZW5cIiA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTaWRlYmFyTWVudUJ1dHRvblxuICAgICAgICAgICAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YWN0aXZlID8gXCJcIiA6IFwib3BhY2l0eS03NVwifVxuICAgICAgICAgICAgICAgICAgcmVuZGVyPXtcbiAgICAgICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgICAgICB0bz17dGFyZ2V0ID09PSBcIi9cIiA/IFwiL1wiIDogXCIvJFwifVxuICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcz17dGFyZ2V0ICYmIHRhcmdldCAhPT0gXCIvXCIgPyBzcGxhdEZvcih0YXJnZXQpIDoge319XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge2ljb24gJiYgPER5bmFtaWNJY29uIG5hbWU9e2ljb259IGNsYXNzTmFtZT1cInNpemUtNFwiIC8+fVxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3MudGl0bGV9PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvU2lkZWJhck1lbnVCdXR0b24+XG4gICAgICAgICAgICAgIDwvU2lkZWJhck1lbnVJdGVtPlxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pfVxuICAgICAgICA8L1NpZGViYXJNZW51PlxuICAgICAgPC9TaWRlYmFyR3JvdXBDb250ZW50PlxuICAgIDwvU2lkZWJhckdyb3VwPlxuICApXG59XG4iXX0=
@@ -24,9 +24,9 @@ function orderKey(order) {
24
24
  return order;
25
25
  }
26
26
  const configSections = config.sections;
27
- /** Route-bound sections (everything except `external`). External sections
27
+ /** Route-bound sections (everything except `custom`). Custom sections
28
28
  * are pure links — they have no `prefix` and don't claim a URL space. */
29
- const routedSections = configSections?.filter(s => s.type !== "external") ?? [];
29
+ const routedSections = configSections?.filter(s => s.type !== "custom") ?? [];
30
30
  /** Per-section article tree, keyed by section prefix */
31
31
  export const sectionArticleTrees = new Map();
32
32
  /** Per-section flat article lists, keyed by section prefix */
@@ -54,4 +54,4 @@ export function currentSection(path) {
54
54
  return undefined;
55
55
  return matchSection(path, routedSections);
56
56
  }
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWNsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb250ZW50L2FydGljbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFeEU7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUNqRCxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FDaEQsQ0FBQTtBQUVELDRFQUE0RTtBQUM1RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUE7QUFFbkUsMkRBQTJEO0FBQzNELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQTtBQUUzRCwyRUFBMkU7QUFDM0UsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBRTNELDJFQUEyRTtBQUMzRSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFFaEYsU0FBUyxRQUFRLENBQUMsS0FBYztJQUM5QixJQUFJLEtBQUssS0FBSyxTQUFTO1FBQUUsT0FBTyxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFBO0lBQzNELElBQUksS0FBSyxHQUFHLENBQUM7UUFBRSxPQUFPLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUE7SUFDckQsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDO0FBRUQsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQTtBQUV0QzswRUFDMEU7QUFDMUUsTUFBTSxjQUFjLEdBQUcsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLElBQUksRUFBRSxDQUFBO0FBRS9FLHdEQUF3RDtBQUN4RCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQTtBQUVuRSw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxHQUFHLEVBQW9CLENBQUE7QUFFOUQsOERBQThEO0FBQzlELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksR0FBRyxFQUE4QixDQUFBO0FBRXhFLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzFCLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3ZFLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUNsRSxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksT0FBTyxFQUFFLENBQUM7UUFDcEMsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN4QyxNQUFNLE1BQU0sR0FDVixPQUFPLEVBQUUsSUFBSSxLQUFLLE1BQU0sSUFBSSxPQUFPLEVBQUUsSUFBSSxLQUFLLFdBQVc7WUFDdkQsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ2QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDUCxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQ3BFO1lBQ0gsQ0FBQyxDQUFDLE1BQU0sQ0FBQTtRQUNaLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3JDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDbEMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUNsQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7QUFDSCxDQUFDO0FBRUQsa0VBQWtFO0FBQ2xFLE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBWTtJQUN6QyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU07UUFBRSxPQUFPLFNBQVMsQ0FBQTtJQUM1QyxPQUFPLFlBQVksQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUE7QUFDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbmZpZyB9IGZyb20gXCJsaXZlbWFyazp2aXJ0dWFsXCJcbmltcG9ydCB7IGFsbEFydGljbGVzIH0gZnJvbSBcImNvbnRlbnQtY29sbGVjdGlvbnNcIlxuaW1wb3J0IHR5cGUgeyBBcnRpY2xlTm9kZSB9IGZyb20gXCIuLi9tb2RlbHMvYXJ0aWNsZS50c1wiXG5pbXBvcnQgeyBidWlsZEFydGljbGVUcmVlLCBmbGF0dGVuQXJ0aWNsZVRyZWUgfSBmcm9tIFwiLi4vaGVscGVycy9hcnRpY2xlLnRzXCJcbmltcG9ydCB7IG1hdGNoU2VjdGlvbiwgcGFydGl0aW9uQnlTZWN0aW9uIH0gZnJvbSBcIi4uL2hlbHBlcnMvc2VjdGlvbi50c1wiXG5cbi8qKlxuICogQXJ0aWNsZXMgc29ydGVkIGJ5IGZyb250bWF0dGVyIGBvcmRlcmA6XG4gKiBwb3NpdGl2ZSB2YWx1ZXMgZmlyc3QgKGFzY2VuZGluZyksIHRoZW4gdW5vcmRlcmVkLCB0aGVuIG5lZ2F0aXZlIHZhbHVlc1xuICogKHNvIGBvcmRlcjogLTFgIGxhbmRzIGF0IHRoZSB2ZXJ5IGVuZCwgYC0yYCBqdXN0IGJlZm9yZSBpdCwgYW5kIHNvIG9uKS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNvcnRlZEFydGljbGVzID0gWy4uLmFsbEFydGljbGVzXS5zb3J0KFxuICAoYSwgYikgPT4gb3JkZXJLZXkoYS5vcmRlcikgLSBvcmRlcktleShiLm9yZGVyKSxcbilcblxuLyoqIFRoZSBhcnRpY2xlIHdob3NlIHBhdGggaXMgYC9gLCBpZiBhbnkgKHJlbmRlcmVkIGluIHBsYWNlIGF0IHRoZSByb290KSAqL1xuZXhwb3J0IGNvbnN0IGhvbWVBcnRpY2xlID0gc29ydGVkQXJ0aWNsZXMuZmluZChhID0+IGEucGF0aCA9PT0gXCIvXCIpXG5cbi8qKiBTaWRlYmFyIHRyZWUgZGVyaXZlZCBmcm9tIHRoZSBhcnRpY2xlIHBhdGggaGllcmFyY2h5ICovXG5leHBvcnQgY29uc3QgYXJ0aWNsZVRyZWUgPSBidWlsZEFydGljbGVUcmVlKHNvcnRlZEFydGljbGVzKVxuXG4vKiogQXJ0aWNsZXMgaW4gZGVwdGgtZmlyc3Qgb3JkZXIgYWNyb3NzIHRoZSB0cmVlIChtYXRjaGVzIHNpZGViYXIgd2FsaykgKi9cbmV4cG9ydCBjb25zdCBmbGF0QXJ0aWNsZXMgPSBmbGF0dGVuQXJ0aWNsZVRyZWUoYXJ0aWNsZVRyZWUpXG5cbi8qKiBUaGUgZmlyc3QgYXJ0aWNsZSBpbiBzaWRlYmFyIG9yZGVyLCB1c2VkIGFzIHRoZSBkZWZhdWx0IGxhbmRpbmcgcGFnZSAqL1xuZXhwb3J0IGNvbnN0IGZpcnN0QXJ0aWNsZSA9IHNvcnRlZEFydGljbGVzLmZpbmQoYSA9PiBhLnBhdGggPT09IGZsYXRBcnRpY2xlc1swXSlcblxuZnVuY3Rpb24gb3JkZXJLZXkob3JkZXI/OiBudW1iZXIpIHtcbiAgaWYgKG9yZGVyID09PSB1bmRlZmluZWQpIHJldHVybiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiAvIDJcbiAgaWYgKG9yZGVyIDwgMCkgcmV0dXJuIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSICsgb3JkZXJcbiAgcmV0dXJuIG9yZGVyXG59XG5cbmNvbnN0IGNvbmZpZ1NlY3Rpb25zID0gY29uZmlnLnNlY3Rpb25zXG5cbi8qKiBSb3V0ZS1ib3VuZCBzZWN0aW9ucyAoZXZlcnl0aGluZyBleGNlcHQgYGV4dGVybmFsYCkuIEV4dGVybmFsIHNlY3Rpb25zXG4gKiAgYXJlIHB1cmUgbGlua3Mg4oCUIHRoZXkgaGF2ZSBubyBgcHJlZml4YCBhbmQgZG9uJ3QgY2xhaW0gYSBVUkwgc3BhY2UuICovXG5jb25zdCByb3V0ZWRTZWN0aW9ucyA9IGNvbmZpZ1NlY3Rpb25zPy5maWx0ZXIocyA9PiBzLnR5cGUgIT09IFwiZXh0ZXJuYWxcIikgPz8gW11cblxuLyoqIFBlci1zZWN0aW9uIGFydGljbGUgdHJlZSwga2V5ZWQgYnkgc2VjdGlvbiBwcmVmaXggKi9cbmV4cG9ydCBjb25zdCBzZWN0aW9uQXJ0aWNsZVRyZWVzID0gbmV3IE1hcDxzdHJpbmcsIEFydGljbGVOb2RlW10+KClcblxuLyoqIFBlci1zZWN0aW9uIGZsYXQgYXJ0aWNsZSBsaXN0cywga2V5ZWQgYnkgc2VjdGlvbiBwcmVmaXggKi9cbmV4cG9ydCBjb25zdCBzZWN0aW9uRmxhdEFydGljbGVzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZ1tdPigpXG5cbi8qKiBQZXItc2VjdGlvbiBmaXJzdCBhcnRpY2xlIHBhdGgsIGtleWVkIGJ5IHNlY3Rpb24gcHJlZml4ICovXG5leHBvcnQgY29uc3Qgc2VjdGlvbkZpcnN0QXJ0aWNsZSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+KClcblxuaWYgKHJvdXRlZFNlY3Rpb25zLmxlbmd0aCkge1xuICBjb25zdCBzZWN0aW9uQnlQcmVmaXggPSBuZXcgTWFwKHJvdXRlZFNlY3Rpb25zLm1hcChzID0+IFtzLnByZWZpeCwgc10pKVxuICBjb25zdCBidWNrZXRzID0gcGFydGl0aW9uQnlTZWN0aW9uKHNvcnRlZEFydGljbGVzLCByb3V0ZWRTZWN0aW9ucylcbiAgZm9yIChjb25zdCBba2V5LCBidWNrZXRdIG9mIGJ1Y2tldHMpIHtcbiAgICBjb25zdCBzZWN0aW9uID0gc2VjdGlvbkJ5UHJlZml4LmdldChrZXkpXG4gICAgY29uc3Qgc29ydGVkID1cbiAgICAgIHNlY3Rpb24/LnR5cGUgPT09IFwiYmxvZ1wiIHx8IHNlY3Rpb24/LnR5cGUgPT09IFwiY2hhbmdlbG9nXCJcbiAgICAgICAgPyBbLi4uYnVja2V0XS5zb3J0KFxuICAgICAgICAgICAgKGEsIGIpID0+XG4gICAgICAgICAgICAgIG5ldyBEYXRlKGIuZGF0ZSA/PyAwKS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShhLmRhdGUgPz8gMCkuZ2V0VGltZSgpLFxuICAgICAgICAgIClcbiAgICAgICAgOiBidWNrZXRcbiAgICBjb25zdCB0cmVlID0gYnVpbGRBcnRpY2xlVHJlZShzb3J0ZWQpXG4gICAgY29uc3QgZmxhdCA9IGZsYXR0ZW5BcnRpY2xlVHJlZSh0cmVlKVxuICAgIHNlY3Rpb25BcnRpY2xlVHJlZXMuc2V0KGtleSwgdHJlZSlcbiAgICBzZWN0aW9uRmxhdEFydGljbGVzLnNldChrZXksIGZsYXQpXG4gICAgc2VjdGlvbkZpcnN0QXJ0aWNsZS5zZXQoa2V5LCBmbGF0WzBdKVxuICB9XG59XG5cbi8qKiBGaW5kIHdoaWNoIHJvdXRlZCBjb25maWcgc2VjdGlvbiBhbiBhcnRpY2xlIHBhdGggYmVsb25ncyB0byAqL1xuZXhwb3J0IGZ1bmN0aW9uIGN1cnJlbnRTZWN0aW9uKHBhdGg6IHN0cmluZykge1xuICBpZiAoIXJvdXRlZFNlY3Rpb25zLmxlbmd0aCkgcmV0dXJuIHVuZGVmaW5lZFxuICByZXR1cm4gbWF0Y2hTZWN0aW9uKHBhdGgsIHJvdXRlZFNlY3Rpb25zKVxufVxuIl19
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWNsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb250ZW50L2FydGljbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFeEU7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUNqRCxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FDaEQsQ0FBQTtBQUVELDRFQUE0RTtBQUM1RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUE7QUFFbkUsMkRBQTJEO0FBQzNELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQTtBQUUzRCwyRUFBMkU7QUFDM0UsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBRTNELDJFQUEyRTtBQUMzRSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFFaEYsU0FBUyxRQUFRLENBQUMsS0FBYztJQUM5QixJQUFJLEtBQUssS0FBSyxTQUFTO1FBQUUsT0FBTyxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFBO0lBQzNELElBQUksS0FBSyxHQUFHLENBQUM7UUFBRSxPQUFPLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUE7SUFDckQsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDO0FBRUQsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQTtBQUV0QzswRUFDMEU7QUFDMUUsTUFBTSxjQUFjLEdBQUcsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRSxDQUFBO0FBRTdFLHdEQUF3RDtBQUN4RCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQTtBQUVuRSw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxHQUFHLEVBQW9CLENBQUE7QUFFOUQsOERBQThEO0FBQzlELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksR0FBRyxFQUE4QixDQUFBO0FBRXhFLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzFCLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3ZFLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUNsRSxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksT0FBTyxFQUFFLENBQUM7UUFDcEMsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN4QyxNQUFNLE1BQU0sR0FDVixPQUFPLEVBQUUsSUFBSSxLQUFLLE1BQU0sSUFBSSxPQUFPLEVBQUUsSUFBSSxLQUFLLFdBQVc7WUFDdkQsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ2QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDUCxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQ3BFO1lBQ0gsQ0FBQyxDQUFDLE1BQU0sQ0FBQTtRQUNaLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3JDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDbEMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUNsQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7QUFDSCxDQUFDO0FBRUQsa0VBQWtFO0FBQ2xFLE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBWTtJQUN6QyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU07UUFBRSxPQUFPLFNBQVMsQ0FBQTtJQUM1QyxPQUFPLFlBQVksQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUE7QUFDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbmZpZyB9IGZyb20gXCJsaXZlbWFyazp2aXJ0dWFsXCJcbmltcG9ydCB7IGFsbEFydGljbGVzIH0gZnJvbSBcImNvbnRlbnQtY29sbGVjdGlvbnNcIlxuaW1wb3J0IHR5cGUgeyBBcnRpY2xlTm9kZSB9IGZyb20gXCIuLi9tb2RlbHMvYXJ0aWNsZS50c1wiXG5pbXBvcnQgeyBidWlsZEFydGljbGVUcmVlLCBmbGF0dGVuQXJ0aWNsZVRyZWUgfSBmcm9tIFwiLi4vaGVscGVycy9hcnRpY2xlLnRzXCJcbmltcG9ydCB7IG1hdGNoU2VjdGlvbiwgcGFydGl0aW9uQnlTZWN0aW9uIH0gZnJvbSBcIi4uL2hlbHBlcnMvc2VjdGlvbi50c1wiXG5cbi8qKlxuICogQXJ0aWNsZXMgc29ydGVkIGJ5IGZyb250bWF0dGVyIGBvcmRlcmA6XG4gKiBwb3NpdGl2ZSB2YWx1ZXMgZmlyc3QgKGFzY2VuZGluZyksIHRoZW4gdW5vcmRlcmVkLCB0aGVuIG5lZ2F0aXZlIHZhbHVlc1xuICogKHNvIGBvcmRlcjogLTFgIGxhbmRzIGF0IHRoZSB2ZXJ5IGVuZCwgYC0yYCBqdXN0IGJlZm9yZSBpdCwgYW5kIHNvIG9uKS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNvcnRlZEFydGljbGVzID0gWy4uLmFsbEFydGljbGVzXS5zb3J0KFxuICAoYSwgYikgPT4gb3JkZXJLZXkoYS5vcmRlcikgLSBvcmRlcktleShiLm9yZGVyKSxcbilcblxuLyoqIFRoZSBhcnRpY2xlIHdob3NlIHBhdGggaXMgYC9gLCBpZiBhbnkgKHJlbmRlcmVkIGluIHBsYWNlIGF0IHRoZSByb290KSAqL1xuZXhwb3J0IGNvbnN0IGhvbWVBcnRpY2xlID0gc29ydGVkQXJ0aWNsZXMuZmluZChhID0+IGEucGF0aCA9PT0gXCIvXCIpXG5cbi8qKiBTaWRlYmFyIHRyZWUgZGVyaXZlZCBmcm9tIHRoZSBhcnRpY2xlIHBhdGggaGllcmFyY2h5ICovXG5leHBvcnQgY29uc3QgYXJ0aWNsZVRyZWUgPSBidWlsZEFydGljbGVUcmVlKHNvcnRlZEFydGljbGVzKVxuXG4vKiogQXJ0aWNsZXMgaW4gZGVwdGgtZmlyc3Qgb3JkZXIgYWNyb3NzIHRoZSB0cmVlIChtYXRjaGVzIHNpZGViYXIgd2FsaykgKi9cbmV4cG9ydCBjb25zdCBmbGF0QXJ0aWNsZXMgPSBmbGF0dGVuQXJ0aWNsZVRyZWUoYXJ0aWNsZVRyZWUpXG5cbi8qKiBUaGUgZmlyc3QgYXJ0aWNsZSBpbiBzaWRlYmFyIG9yZGVyLCB1c2VkIGFzIHRoZSBkZWZhdWx0IGxhbmRpbmcgcGFnZSAqL1xuZXhwb3J0IGNvbnN0IGZpcnN0QXJ0aWNsZSA9IHNvcnRlZEFydGljbGVzLmZpbmQoYSA9PiBhLnBhdGggPT09IGZsYXRBcnRpY2xlc1swXSlcblxuZnVuY3Rpb24gb3JkZXJLZXkob3JkZXI/OiBudW1iZXIpIHtcbiAgaWYgKG9yZGVyID09PSB1bmRlZmluZWQpIHJldHVybiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiAvIDJcbiAgaWYgKG9yZGVyIDwgMCkgcmV0dXJuIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSICsgb3JkZXJcbiAgcmV0dXJuIG9yZGVyXG59XG5cbmNvbnN0IGNvbmZpZ1NlY3Rpb25zID0gY29uZmlnLnNlY3Rpb25zXG5cbi8qKiBSb3V0ZS1ib3VuZCBzZWN0aW9ucyAoZXZlcnl0aGluZyBleGNlcHQgYGN1c3RvbWApLiBDdXN0b20gc2VjdGlvbnNcbiAqICBhcmUgcHVyZSBsaW5rcyDigJQgdGhleSBoYXZlIG5vIGBwcmVmaXhgIGFuZCBkb24ndCBjbGFpbSBhIFVSTCBzcGFjZS4gKi9cbmNvbnN0IHJvdXRlZFNlY3Rpb25zID0gY29uZmlnU2VjdGlvbnM/LmZpbHRlcihzID0+IHMudHlwZSAhPT0gXCJjdXN0b21cIikgPz8gW11cblxuLyoqIFBlci1zZWN0aW9uIGFydGljbGUgdHJlZSwga2V5ZWQgYnkgc2VjdGlvbiBwcmVmaXggKi9cbmV4cG9ydCBjb25zdCBzZWN0aW9uQXJ0aWNsZVRyZWVzID0gbmV3IE1hcDxzdHJpbmcsIEFydGljbGVOb2RlW10+KClcblxuLyoqIFBlci1zZWN0aW9uIGZsYXQgYXJ0aWNsZSBsaXN0cywga2V5ZWQgYnkgc2VjdGlvbiBwcmVmaXggKi9cbmV4cG9ydCBjb25zdCBzZWN0aW9uRmxhdEFydGljbGVzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZ1tdPigpXG5cbi8qKiBQZXItc2VjdGlvbiBmaXJzdCBhcnRpY2xlIHBhdGgsIGtleWVkIGJ5IHNlY3Rpb24gcHJlZml4ICovXG5leHBvcnQgY29uc3Qgc2VjdGlvbkZpcnN0QXJ0aWNsZSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+KClcblxuaWYgKHJvdXRlZFNlY3Rpb25zLmxlbmd0aCkge1xuICBjb25zdCBzZWN0aW9uQnlQcmVmaXggPSBuZXcgTWFwKHJvdXRlZFNlY3Rpb25zLm1hcChzID0+IFtzLnByZWZpeCwgc10pKVxuICBjb25zdCBidWNrZXRzID0gcGFydGl0aW9uQnlTZWN0aW9uKHNvcnRlZEFydGljbGVzLCByb3V0ZWRTZWN0aW9ucylcbiAgZm9yIChjb25zdCBba2V5LCBidWNrZXRdIG9mIGJ1Y2tldHMpIHtcbiAgICBjb25zdCBzZWN0aW9uID0gc2VjdGlvbkJ5UHJlZml4LmdldChrZXkpXG4gICAgY29uc3Qgc29ydGVkID1cbiAgICAgIHNlY3Rpb24/LnR5cGUgPT09IFwiYmxvZ1wiIHx8IHNlY3Rpb24/LnR5cGUgPT09IFwiY2hhbmdlbG9nXCJcbiAgICAgICAgPyBbLi4uYnVja2V0XS5zb3J0KFxuICAgICAgICAgICAgKGEsIGIpID0+XG4gICAgICAgICAgICAgIG5ldyBEYXRlKGIuZGF0ZSA/PyAwKS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShhLmRhdGUgPz8gMCkuZ2V0VGltZSgpLFxuICAgICAgICAgIClcbiAgICAgICAgOiBidWNrZXRcbiAgICBjb25zdCB0cmVlID0gYnVpbGRBcnRpY2xlVHJlZShzb3J0ZWQpXG4gICAgY29uc3QgZmxhdCA9IGZsYXR0ZW5BcnRpY2xlVHJlZSh0cmVlKVxuICAgIHNlY3Rpb25BcnRpY2xlVHJlZXMuc2V0KGtleSwgdHJlZSlcbiAgICBzZWN0aW9uRmxhdEFydGljbGVzLnNldChrZXksIGZsYXQpXG4gICAgc2VjdGlvbkZpcnN0QXJ0aWNsZS5zZXQoa2V5LCBmbGF0WzBdKVxuICB9XG59XG5cbi8qKiBGaW5kIHdoaWNoIHJvdXRlZCBjb25maWcgc2VjdGlvbiBhbiBhcnRpY2xlIHBhdGggYmVsb25ncyB0byAqL1xuZXhwb3J0IGZ1bmN0aW9uIGN1cnJlbnRTZWN0aW9uKHBhdGg6IHN0cmluZykge1xuICBpZiAoIXJvdXRlZFNlY3Rpb25zLmxlbmd0aCkgcmV0dXJuIHVuZGVmaW5lZFxuICByZXR1cm4gbWF0Y2hTZWN0aW9uKHBhdGgsIHJvdXRlZFNlY3Rpb25zKVxufVxuIl19
@@ -0,0 +1,6 @@
1
+ /** Resolve a base config field — accepts a string, a function of the
2
+ * form `(command) => string | undefined` (where `command` matches
3
+ * Vite's `ConfigEnv.command`), or undefined. Normalizes the result to
4
+ * either `undefined` (no base) or a leading-slash, no-trailing-slash
5
+ * string (e.g. `"repo"` and `"/repo/"` both → `"/repo"`). */
6
+ export declare function resolveBase(input: unknown, command: "build" | "serve"): string | undefined;
@@ -0,0 +1,13 @@
1
+ /** Resolve a base config field — accepts a string, a function of the
2
+ * form `(command) => string | undefined` (where `command` matches
3
+ * Vite's `ConfigEnv.command`), or undefined. Normalizes the result to
4
+ * either `undefined` (no base) or a leading-slash, no-trailing-slash
5
+ * string (e.g. `"repo"` and `"/repo/"` both → `"/repo"`). */
6
+ export function resolveBase(input, command) {
7
+ const raw = typeof input === "function" ? input(command) : input;
8
+ if (typeof raw !== "string" || !raw)
9
+ return undefined;
10
+ const trimmed = raw.replace(/^\/|\/$/g, "");
11
+ return trimmed ? `/${trimmed}` : undefined;
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2hlbHBlcnMvcmVzb2x2ZS1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OzhEQUk4RDtBQUM5RCxNQUFNLFVBQVUsV0FBVyxDQUFDLEtBQWMsRUFBRSxPQUEwQjtJQUNwRSxNQUFNLEdBQUcsR0FBRyxPQUFPLEtBQUssS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBO0lBQ2hFLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sU0FBUyxDQUFBO0lBQ3JELE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQzNDLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBSZXNvbHZlIGEgYmFzZSBjb25maWcgZmllbGQg4oCUIGFjY2VwdHMgYSBzdHJpbmcsIGEgZnVuY3Rpb24gb2YgdGhlXG4gKiAgZm9ybSBgKGNvbW1hbmQpID0+IHN0cmluZyB8IHVuZGVmaW5lZGAgKHdoZXJlIGBjb21tYW5kYCBtYXRjaGVzXG4gKiAgVml0ZSdzIGBDb25maWdFbnYuY29tbWFuZGApLCBvciB1bmRlZmluZWQuIE5vcm1hbGl6ZXMgdGhlIHJlc3VsdCB0b1xuICogIGVpdGhlciBgdW5kZWZpbmVkYCAobm8gYmFzZSkgb3IgYSBsZWFkaW5nLXNsYXNoLCBuby10cmFpbGluZy1zbGFzaFxuICogIHN0cmluZyAoZS5nLiBgXCJyZXBvXCJgIGFuZCBgXCIvcmVwby9cImAgYm90aCDihpIgYFwiL3JlcG9cImApLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVCYXNlKGlucHV0OiB1bmtub3duLCBjb21tYW5kOiBcImJ1aWxkXCIgfCBcInNlcnZlXCIpIHtcbiAgY29uc3QgcmF3ID0gdHlwZW9mIGlucHV0ID09PSBcImZ1bmN0aW9uXCIgPyBpbnB1dChjb21tYW5kKSA6IGlucHV0XG4gIGlmICh0eXBlb2YgcmF3ICE9PSBcInN0cmluZ1wiIHx8ICFyYXcpIHJldHVybiB1bmRlZmluZWRcbiAgY29uc3QgdHJpbW1lZCA9IHJhdy5yZXBsYWNlKC9eXFwvfFxcLyQvZywgXCJcIilcbiAgcmV0dXJuIHRyaW1tZWQgPyBgLyR7dHJpbW1lZH1gIDogdW5kZWZpbmVkXG59XG4iXX0=
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,49 @@
1
+ import { describe, expect, it } from "vite-plus/test";
2
+ import { resolveBase } from "./resolve-base.js";
3
+ describe("resolveBase", () => {
4
+ it("should return undefined for undefined input", () => {
5
+ expect(resolveBase(undefined, "build")).toBeUndefined();
6
+ expect(resolveBase(undefined, "serve")).toBeUndefined();
7
+ });
8
+ it("should return undefined for empty or root-only string", () => {
9
+ expect(resolveBase("", "build")).toBeUndefined();
10
+ expect(resolveBase("/", "build")).toBeUndefined();
11
+ });
12
+ it("should normalize a string without slashes", () => {
13
+ expect(resolveBase("repo", "build")).toBe("/repo");
14
+ });
15
+ it("should normalize a string with leading slash", () => {
16
+ expect(resolveBase("/repo", "build")).toBe("/repo");
17
+ });
18
+ it("should normalize a string with trailing slash", () => {
19
+ expect(resolveBase("repo/", "build")).toBe("/repo");
20
+ });
21
+ it("should normalize a string with both slashes", () => {
22
+ expect(resolveBase("/repo/", "build")).toBe("/repo");
23
+ });
24
+ it("should preserve multi-segment paths", () => {
25
+ expect(resolveBase("/a/b/", "build")).toBe("/a/b");
26
+ });
27
+ it("should call a function with command=build", () => {
28
+ const fn = (cmd) => (cmd === "build" ? "prod" : "dev");
29
+ expect(resolveBase(fn, "build")).toBe("/prod");
30
+ });
31
+ it("should call a function with command=serve", () => {
32
+ const fn = (cmd) => (cmd === "build" ? "prod" : "dev");
33
+ expect(resolveBase(fn, "serve")).toBe("/dev");
34
+ });
35
+ it("should handle a function returning undefined", () => {
36
+ const fn = (cmd) => cmd === "serve" ? undefined : "prod";
37
+ expect(resolveBase(fn, "serve")).toBeUndefined();
38
+ expect(resolveBase(fn, "build")).toBe("/prod");
39
+ });
40
+ it("should handle a function returning empty string", () => {
41
+ const fn = () => "";
42
+ expect(resolveBase(fn, "build")).toBeUndefined();
43
+ });
44
+ it("should normalize the function-returned string", () => {
45
+ const fn = () => "/repo/";
46
+ expect(resolveBase(fn, "build")).toBe("/repo");
47
+ });
48
+ });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1iYXNlLnVuaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvaGVscGVycy9yZXNvbHZlLWJhc2UudW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFL0MsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7SUFDM0IsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLEdBQUcsRUFBRTtRQUNyRCxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQ3ZELE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDekQsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsdURBQXVELEVBQUUsR0FBRyxFQUFFO1FBQy9ELE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDaEQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUNuRCxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQywyQ0FBMkMsRUFBRSxHQUFHLEVBQUU7UUFDbkQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDcEQsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsOENBQThDLEVBQUUsR0FBRyxFQUFFO1FBQ3RELE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3JELENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLCtDQUErQyxFQUFFLEdBQUcsRUFBRTtRQUN2RCxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNyRCxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyw2Q0FBNkMsRUFBRSxHQUFHLEVBQUU7UUFDckQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDdEQsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMscUNBQXFDLEVBQUUsR0FBRyxFQUFFO1FBQzdDLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3BELENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDJDQUEyQyxFQUFFLEdBQUcsRUFBRTtRQUNuRCxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQXNCLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN6RSxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNoRCxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQywyQ0FBMkMsRUFBRSxHQUFHLEVBQUU7UUFDbkQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFzQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDekUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDL0MsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsOENBQThDLEVBQUUsR0FBRyxFQUFFO1FBQ3RELE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBc0IsRUFBRSxFQUFFLENBQ3BDLEdBQUcsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBO1FBQ3RDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDaEQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDaEQsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsaURBQWlELEVBQUUsR0FBRyxFQUFFO1FBQ3pELE1BQU0sRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQTtRQUNuQixNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFBO0lBQ2xELENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLCtDQUErQyxFQUFFLEdBQUcsRUFBRTtRQUN2RCxNQUFNLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUE7UUFDekIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDaEQsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGUtcGx1cy90ZXN0XCJcbmltcG9ydCB7IHJlc29sdmVCYXNlIH0gZnJvbSBcIi4vcmVzb2x2ZS1iYXNlLnRzXCJcblxuZGVzY3JpYmUoXCJyZXNvbHZlQmFzZVwiLCAoKSA9PiB7XG4gIGl0KFwic2hvdWxkIHJldHVybiB1bmRlZmluZWQgZm9yIHVuZGVmaW5lZCBpbnB1dFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KHJlc29sdmVCYXNlKHVuZGVmaW5lZCwgXCJidWlsZFwiKSkudG9CZVVuZGVmaW5lZCgpXG4gICAgZXhwZWN0KHJlc29sdmVCYXNlKHVuZGVmaW5lZCwgXCJzZXJ2ZVwiKSkudG9CZVVuZGVmaW5lZCgpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCBmb3IgZW1wdHkgb3Igcm9vdC1vbmx5IHN0cmluZ1wiLCAoKSA9PiB7XG4gICAgZXhwZWN0KHJlc29sdmVCYXNlKFwiXCIsIFwiYnVpbGRcIikpLnRvQmVVbmRlZmluZWQoKVxuICAgIGV4cGVjdChyZXNvbHZlQmFzZShcIi9cIiwgXCJidWlsZFwiKSkudG9CZVVuZGVmaW5lZCgpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbm9ybWFsaXplIGEgc3RyaW5nIHdpdGhvdXQgc2xhc2hlc1wiLCAoKSA9PiB7XG4gICAgZXhwZWN0KHJlc29sdmVCYXNlKFwicmVwb1wiLCBcImJ1aWxkXCIpKS50b0JlKFwiL3JlcG9cIilcbiAgfSlcblxuICBpdChcInNob3VsZCBub3JtYWxpemUgYSBzdHJpbmcgd2l0aCBsZWFkaW5nIHNsYXNoXCIsICgpID0+IHtcbiAgICBleHBlY3QocmVzb2x2ZUJhc2UoXCIvcmVwb1wiLCBcImJ1aWxkXCIpKS50b0JlKFwiL3JlcG9cIilcbiAgfSlcblxuICBpdChcInNob3VsZCBub3JtYWxpemUgYSBzdHJpbmcgd2l0aCB0cmFpbGluZyBzbGFzaFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KHJlc29sdmVCYXNlKFwicmVwby9cIiwgXCJidWlsZFwiKSkudG9CZShcIi9yZXBvXCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbm9ybWFsaXplIGEgc3RyaW5nIHdpdGggYm90aCBzbGFzaGVzXCIsICgpID0+IHtcbiAgICBleHBlY3QocmVzb2x2ZUJhc2UoXCIvcmVwby9cIiwgXCJidWlsZFwiKSkudG9CZShcIi9yZXBvXCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgcHJlc2VydmUgbXVsdGktc2VnbWVudCBwYXRoc1wiLCAoKSA9PiB7XG4gICAgZXhwZWN0KHJlc29sdmVCYXNlKFwiL2EvYi9cIiwgXCJidWlsZFwiKSkudG9CZShcIi9hL2JcIilcbiAgfSlcblxuICBpdChcInNob3VsZCBjYWxsIGEgZnVuY3Rpb24gd2l0aCBjb21tYW5kPWJ1aWxkXCIsICgpID0+IHtcbiAgICBjb25zdCBmbiA9IChjbWQ6IFwiYnVpbGRcIiB8IFwic2VydmVcIikgPT4gKGNtZCA9PT0gXCJidWlsZFwiID8gXCJwcm9kXCIgOiBcImRldlwiKVxuICAgIGV4cGVjdChyZXNvbHZlQmFzZShmbiwgXCJidWlsZFwiKSkudG9CZShcIi9wcm9kXCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgY2FsbCBhIGZ1bmN0aW9uIHdpdGggY29tbWFuZD1zZXJ2ZVwiLCAoKSA9PiB7XG4gICAgY29uc3QgZm4gPSAoY21kOiBcImJ1aWxkXCIgfCBcInNlcnZlXCIpID0+IChjbWQgPT09IFwiYnVpbGRcIiA/IFwicHJvZFwiIDogXCJkZXZcIilcbiAgICBleHBlY3QocmVzb2x2ZUJhc2UoZm4sIFwic2VydmVcIikpLnRvQmUoXCIvZGV2XCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgaGFuZGxlIGEgZnVuY3Rpb24gcmV0dXJuaW5nIHVuZGVmaW5lZFwiLCAoKSA9PiB7XG4gICAgY29uc3QgZm4gPSAoY21kOiBcImJ1aWxkXCIgfCBcInNlcnZlXCIpID0+XG4gICAgICBjbWQgPT09IFwic2VydmVcIiA/IHVuZGVmaW5lZCA6IFwicHJvZFwiXG4gICAgZXhwZWN0KHJlc29sdmVCYXNlKGZuLCBcInNlcnZlXCIpKS50b0JlVW5kZWZpbmVkKClcbiAgICBleHBlY3QocmVzb2x2ZUJhc2UoZm4sIFwiYnVpbGRcIikpLnRvQmUoXCIvcHJvZFwiKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIGhhbmRsZSBhIGZ1bmN0aW9uIHJldHVybmluZyBlbXB0eSBzdHJpbmdcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGZuID0gKCkgPT4gXCJcIlxuICAgIGV4cGVjdChyZXNvbHZlQmFzZShmbiwgXCJidWlsZFwiKSkudG9CZVVuZGVmaW5lZCgpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbm9ybWFsaXplIHRoZSBmdW5jdGlvbi1yZXR1cm5lZCBzdHJpbmdcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGZuID0gKCkgPT4gXCIvcmVwby9cIlxuICAgIGV4cGVjdChyZXNvbHZlQmFzZShmbiwgXCJidWlsZFwiKSkudG9CZShcIi9yZXBvXCIpXG4gIH0pXG59KVxuIl19
@@ -1,6 +1,14 @@
1
1
  import type { Section } from "../models/section.ts";
2
- /** Return the section's icon, falling back to a type-based default */
3
- export declare function sectionIcon(section: Pick<Section, "icon" | "type">): string;
2
+ /** Return the section's icon, falling back to a type-based default.
3
+ * Custom sections have no default — the user opts in via `icon`. */
4
+ export declare function sectionIcon(section: Pick<Section, "icon" | "type">): string | undefined;
5
+ /** Whether a custom section's URL should highlight as active for the
6
+ * current pathname. Only `/`-leading internal paths participate;
7
+ * protocol-absolute (`https://…`, `//cdn…`) URLs never highlight.
8
+ * Match semantics mirror routed sections — exact path or any
9
+ * descendant. A URL of `/` only highlights the home page itself
10
+ * (otherwise it would always match). */
11
+ export declare function customSectionActive(url: string, pathname: string): boolean;
4
12
  /** Find the section whose prefix is the longest prefix of the article path */
5
13
  export declare function matchSection<S extends {
6
14
  prefix: string;
@@ -2,12 +2,28 @@ const DEFAULT_ICONS = {
2
2
  article: "book-open",
3
3
  blog: "rss",
4
4
  changelog: "history",
5
- external: "external-link",
6
5
  };
7
- /** Return the section's icon, falling back to a type-based default */
6
+ /** Return the section's icon, falling back to a type-based default.
7
+ * Custom sections have no default — the user opts in via `icon`. */
8
8
  export function sectionIcon(section) {
9
9
  return section.icon ?? DEFAULT_ICONS[section.type];
10
10
  }
11
+ /** Whether a custom section's URL should highlight as active for the
12
+ * current pathname. Only `/`-leading internal paths participate;
13
+ * protocol-absolute (`https://…`, `//cdn…`) URLs never highlight.
14
+ * Match semantics mirror routed sections — exact path or any
15
+ * descendant. A URL of `/` only highlights the home page itself
16
+ * (otherwise it would always match). */
17
+ export function customSectionActive(url, pathname) {
18
+ if (!url.startsWith("/") || url.startsWith("//"))
19
+ return false;
20
+ const stripped = url.split(/[?#]/)[0] ?? "";
21
+ const target = `/${stripped.replace(/^\/|\/$/g, "")}/`;
22
+ const current = `/${pathname.replace(/^\/|\/$/g, "")}/`;
23
+ if (target === "/")
24
+ return current === "/";
25
+ return current === target || current.startsWith(target);
26
+ }
11
27
  /** Find the section whose prefix is the longest prefix of the article path */
12
28
  export function matchSection(articlePath, sections) {
13
29
  let best;
@@ -37,4 +53,4 @@ export function partitionBySection(articles, sections) {
37
53
  }
38
54
  return buckets;
39
55
  }
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9oZWxwZXJzL3NlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxhQUFhLEdBQW9DO0lBQ3JELE9BQU8sRUFBRSxXQUFXO0lBQ3BCLElBQUksRUFBRSxLQUFLO0lBQ1gsU0FBUyxFQUFFLFNBQVM7SUFDcEIsUUFBUSxFQUFFLGVBQWU7Q0FDMUIsQ0FBQTtBQUVELHNFQUFzRTtBQUN0RSxNQUFNLFVBQVUsV0FBVyxDQUFDLE9BQXVDO0lBQ2pFLE9BQU8sT0FBTyxDQUFDLElBQUksSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ3BELENBQUM7QUFFRCw4RUFBOEU7QUFDOUUsTUFBTSxVQUFVLFlBQVksQ0FDMUIsV0FBbUIsRUFDbkIsUUFBYTtJQUViLElBQUksSUFBbUIsQ0FBQTtJQUN2QixJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUE7SUFDZixLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQy9CLElBQ0UsV0FBVyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ3RDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLE9BQU8sRUFDL0IsQ0FBQztZQUNELElBQUksR0FBRyxPQUFPLENBQUE7WUFDZCxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUE7UUFDakMsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRCxzRkFBc0Y7QUFDdEYsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxRQUFhLEVBQ2IsUUFBOEI7SUFFOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQTtJQUN0QyxLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQy9CLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBQ3BELE1BQU0sR0FBRyxHQUFHLE9BQU8sRUFBRSxNQUFNLElBQUksYUFBYSxDQUFBO1FBQzVDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDL0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDdEIsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQTtBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTZWN0aW9uIH0gZnJvbSBcIi4uL21vZGVscy9zZWN0aW9uLnRzXCJcblxuY29uc3QgREVGQVVMVF9JQ09OUzogUmVjb3JkPFNlY3Rpb25bXCJ0eXBlXCJdLCBzdHJpbmc+ID0ge1xuICBhcnRpY2xlOiBcImJvb2stb3BlblwiLFxuICBibG9nOiBcInJzc1wiLFxuICBjaGFuZ2Vsb2c6IFwiaGlzdG9yeVwiLFxuICBleHRlcm5hbDogXCJleHRlcm5hbC1saW5rXCIsXG59XG5cbi8qKiBSZXR1cm4gdGhlIHNlY3Rpb24ncyBpY29uLCBmYWxsaW5nIGJhY2sgdG8gYSB0eXBlLWJhc2VkIGRlZmF1bHQgKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWN0aW9uSWNvbihzZWN0aW9uOiBQaWNrPFNlY3Rpb24sIFwiaWNvblwiIHwgXCJ0eXBlXCI+KSB7XG4gIHJldHVybiBzZWN0aW9uLmljb24gPz8gREVGQVVMVF9JQ09OU1tzZWN0aW9uLnR5cGVdXG59XG5cbi8qKiBGaW5kIHRoZSBzZWN0aW9uIHdob3NlIHByZWZpeCBpcyB0aGUgbG9uZ2VzdCBwcmVmaXggb2YgdGhlIGFydGljbGUgcGF0aCAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoU2VjdGlvbjxTIGV4dGVuZHMgeyBwcmVmaXg6IHN0cmluZyB9PihcbiAgYXJ0aWNsZVBhdGg6IHN0cmluZyxcbiAgc2VjdGlvbnM6IFNbXSxcbik6IFMgfCB1bmRlZmluZWQge1xuICBsZXQgYmVzdDogUyB8IHVuZGVmaW5lZFxuICBsZXQgYmVzdExlbiA9IDBcbiAgZm9yIChjb25zdCBzZWN0aW9uIG9mIHNlY3Rpb25zKSB7XG4gICAgaWYgKFxuICAgICAgYXJ0aWNsZVBhdGguc3RhcnRzV2l0aChzZWN0aW9uLnByZWZpeCkgJiZcbiAgICAgIHNlY3Rpb24ucHJlZml4Lmxlbmd0aCA+IGJlc3RMZW5cbiAgICApIHtcbiAgICAgIGJlc3QgPSBzZWN0aW9uXG4gICAgICBiZXN0TGVuID0gc2VjdGlvbi5wcmVmaXgubGVuZ3RoXG4gICAgfVxuICB9XG4gIHJldHVybiBiZXN0XG59XG5cbi8qKiBTcGxpdCBhcnRpY2xlcyBpbnRvIHBlci1zZWN0aW9uIGJ1Y2tldHMuIFVubWF0Y2hlZCBhcnRpY2xlcyBnbyB0byBcIl9fZGVmYXVsdF9fXCIgKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJ0aXRpb25CeVNlY3Rpb248VCBleHRlbmRzIHsgcGF0aDogc3RyaW5nIH0+KFxuICBhcnRpY2xlczogVFtdLFxuICBzZWN0aW9uczogeyBwcmVmaXg6IHN0cmluZyB9W10sXG4pOiBNYXA8c3RyaW5nLCBUW10+IHtcbiAgY29uc3QgYnVja2V0cyA9IG5ldyBNYXA8c3RyaW5nLCBUW10+KClcbiAgZm9yIChjb25zdCBhcnRpY2xlIG9mIGFydGljbGVzKSB7XG4gICAgY29uc3Qgc2VjdGlvbiA9IG1hdGNoU2VjdGlvbihhcnRpY2xlLnBhdGgsIHNlY3Rpb25zKVxuICAgIGNvbnN0IGtleSA9IHNlY3Rpb24/LnByZWZpeCA/PyBcIl9fZGVmYXVsdF9fXCJcbiAgICBjb25zdCBidWNrZXQgPSBidWNrZXRzLmdldChrZXkpXG4gICAgaWYgKGJ1Y2tldCkge1xuICAgICAgYnVja2V0LnB1c2goYXJ0aWNsZSlcbiAgICB9IGVsc2Uge1xuICAgICAgYnVja2V0cy5zZXQoa2V5LCBbYXJ0aWNsZV0pXG4gICAgfVxuICB9XG4gIHJldHVybiBidWNrZXRzXG59XG4iXX0=
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9oZWxwZXJzL3NlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxhQUFhLEdBQTZDO0lBQzlELE9BQU8sRUFBRSxXQUFXO0lBQ3BCLElBQUksRUFBRSxLQUFLO0lBQ1gsU0FBUyxFQUFFLFNBQVM7Q0FDckIsQ0FBQTtBQUVEO3FFQUNxRTtBQUNyRSxNQUFNLFVBQVUsV0FBVyxDQUFDLE9BQXVDO0lBQ2pFLE9BQU8sT0FBTyxDQUFDLElBQUksSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ3BELENBQUM7QUFFRDs7Ozs7eUNBS3lDO0FBQ3pDLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxHQUFXLEVBQUUsUUFBZ0I7SUFDL0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUM5RCxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUE7SUFDdEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFBO0lBQ3ZELElBQUksTUFBTSxLQUFLLEdBQUc7UUFBRSxPQUFPLE9BQU8sS0FBSyxHQUFHLENBQUE7SUFDMUMsT0FBTyxPQUFPLEtBQUssTUFBTSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDekQsQ0FBQztBQUVELDhFQUE4RTtBQUM5RSxNQUFNLFVBQVUsWUFBWSxDQUMxQixXQUFtQixFQUNuQixRQUFhO0lBRWIsSUFBSSxJQUFtQixDQUFBO0lBQ3ZCLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQTtJQUNmLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFDRSxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDdEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsT0FBTyxFQUMvQixDQUFDO1lBQ0QsSUFBSSxHQUFHLE9BQU8sQ0FBQTtZQUNkLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQTtRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUVELHNGQUFzRjtBQUN0RixNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLFFBQWEsRUFDYixRQUE4QjtJQUU5QixNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFBO0lBQ3RDLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDcEQsTUFBTSxHQUFHLEdBQUcsT0FBTyxFQUFFLE1BQU0sSUFBSSxhQUFhLENBQUE7UUFDNUMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMvQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN0QixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFBO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNlY3Rpb24gfSBmcm9tIFwiLi4vbW9kZWxzL3NlY3Rpb24udHNcIlxuXG5jb25zdCBERUZBVUxUX0lDT05TOiBQYXJ0aWFsPFJlY29yZDxTZWN0aW9uW1widHlwZVwiXSwgc3RyaW5nPj4gPSB7XG4gIGFydGljbGU6IFwiYm9vay1vcGVuXCIsXG4gIGJsb2c6IFwicnNzXCIsXG4gIGNoYW5nZWxvZzogXCJoaXN0b3J5XCIsXG59XG5cbi8qKiBSZXR1cm4gdGhlIHNlY3Rpb24ncyBpY29uLCBmYWxsaW5nIGJhY2sgdG8gYSB0eXBlLWJhc2VkIGRlZmF1bHQuXG4gKiAgQ3VzdG9tIHNlY3Rpb25zIGhhdmUgbm8gZGVmYXVsdCDigJQgdGhlIHVzZXIgb3B0cyBpbiB2aWEgYGljb25gLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlY3Rpb25JY29uKHNlY3Rpb246IFBpY2s8U2VjdGlvbiwgXCJpY29uXCIgfCBcInR5cGVcIj4pIHtcbiAgcmV0dXJuIHNlY3Rpb24uaWNvbiA/PyBERUZBVUxUX0lDT05TW3NlY3Rpb24udHlwZV1cbn1cblxuLyoqIFdoZXRoZXIgYSBjdXN0b20gc2VjdGlvbidzIFVSTCBzaG91bGQgaGlnaGxpZ2h0IGFzIGFjdGl2ZSBmb3IgdGhlXG4gKiAgY3VycmVudCBwYXRobmFtZS4gT25seSBgL2AtbGVhZGluZyBpbnRlcm5hbCBwYXRocyBwYXJ0aWNpcGF0ZTtcbiAqICBwcm90b2NvbC1hYnNvbHV0ZSAoYGh0dHBzOi8v4oCmYCwgYC8vY2Ru4oCmYCkgVVJMcyBuZXZlciBoaWdobGlnaHQuXG4gKiAgTWF0Y2ggc2VtYW50aWNzIG1pcnJvciByb3V0ZWQgc2VjdGlvbnMg4oCUIGV4YWN0IHBhdGggb3IgYW55XG4gKiAgZGVzY2VuZGFudC4gQSBVUkwgb2YgYC9gIG9ubHkgaGlnaGxpZ2h0cyB0aGUgaG9tZSBwYWdlIGl0c2VsZlxuICogIChvdGhlcndpc2UgaXQgd291bGQgYWx3YXlzIG1hdGNoKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjdXN0b21TZWN0aW9uQWN0aXZlKHVybDogc3RyaW5nLCBwYXRobmFtZTogc3RyaW5nKSB7XG4gIGlmICghdXJsLnN0YXJ0c1dpdGgoXCIvXCIpIHx8IHVybC5zdGFydHNXaXRoKFwiLy9cIikpIHJldHVybiBmYWxzZVxuICBjb25zdCBzdHJpcHBlZCA9IHVybC5zcGxpdCgvWz8jXS8pWzBdID8/IFwiXCJcbiAgY29uc3QgdGFyZ2V0ID0gYC8ke3N0cmlwcGVkLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKX0vYFxuICBjb25zdCBjdXJyZW50ID0gYC8ke3BhdGhuYW1lLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKX0vYFxuICBpZiAodGFyZ2V0ID09PSBcIi9cIikgcmV0dXJuIGN1cnJlbnQgPT09IFwiL1wiXG4gIHJldHVybiBjdXJyZW50ID09PSB0YXJnZXQgfHwgY3VycmVudC5zdGFydHNXaXRoKHRhcmdldClcbn1cblxuLyoqIEZpbmQgdGhlIHNlY3Rpb24gd2hvc2UgcHJlZml4IGlzIHRoZSBsb25nZXN0IHByZWZpeCBvZiB0aGUgYXJ0aWNsZSBwYXRoICovXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hTZWN0aW9uPFMgZXh0ZW5kcyB7IHByZWZpeDogc3RyaW5nIH0+KFxuICBhcnRpY2xlUGF0aDogc3RyaW5nLFxuICBzZWN0aW9uczogU1tdLFxuKTogUyB8IHVuZGVmaW5lZCB7XG4gIGxldCBiZXN0OiBTIHwgdW5kZWZpbmVkXG4gIGxldCBiZXN0TGVuID0gMFxuICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygc2VjdGlvbnMpIHtcbiAgICBpZiAoXG4gICAgICBhcnRpY2xlUGF0aC5zdGFydHNXaXRoKHNlY3Rpb24ucHJlZml4KSAmJlxuICAgICAgc2VjdGlvbi5wcmVmaXgubGVuZ3RoID4gYmVzdExlblxuICAgICkge1xuICAgICAgYmVzdCA9IHNlY3Rpb25cbiAgICAgIGJlc3RMZW4gPSBzZWN0aW9uLnByZWZpeC5sZW5ndGhcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGJlc3Rcbn1cblxuLyoqIFNwbGl0IGFydGljbGVzIGludG8gcGVyLXNlY3Rpb24gYnVja2V0cy4gVW5tYXRjaGVkIGFydGljbGVzIGdvIHRvIFwiX19kZWZhdWx0X19cIiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnRpdGlvbkJ5U2VjdGlvbjxUIGV4dGVuZHMgeyBwYXRoOiBzdHJpbmcgfT4oXG4gIGFydGljbGVzOiBUW10sXG4gIHNlY3Rpb25zOiB7IHByZWZpeDogc3RyaW5nIH1bXSxcbik6IE1hcDxzdHJpbmcsIFRbXT4ge1xuICBjb25zdCBidWNrZXRzID0gbmV3IE1hcDxzdHJpbmcsIFRbXT4oKVxuICBmb3IgKGNvbnN0IGFydGljbGUgb2YgYXJ0aWNsZXMpIHtcbiAgICBjb25zdCBzZWN0aW9uID0gbWF0Y2hTZWN0aW9uKGFydGljbGUucGF0aCwgc2VjdGlvbnMpXG4gICAgY29uc3Qga2V5ID0gc2VjdGlvbj8ucHJlZml4ID8/IFwiX19kZWZhdWx0X19cIlxuICAgIGNvbnN0IGJ1Y2tldCA9IGJ1Y2tldHMuZ2V0KGtleSlcbiAgICBpZiAoYnVja2V0KSB7XG4gICAgICBidWNrZXQucHVzaChhcnRpY2xlKVxuICAgIH0gZWxzZSB7XG4gICAgICBidWNrZXRzLnNldChrZXksIFthcnRpY2xlXSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGJ1Y2tldHNcbn1cbiJdfQ==