@mnaoumov/typescript-dev-toolkit 1.3.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/docs-site/components/ConstructorBlock.astro +16 -0
- package/assets/docs-site/components/ImportStatement.astro +12 -0
- package/assets/docs-site/components/MemberDetail.astro +101 -0
- package/assets/docs-site/components/MethodTable.astro +45 -0
- package/assets/docs-site/components/PropertyTable.astro +45 -0
- package/assets/docs-site/components/SiteTitle.astro +43 -0
- package/assets/docs-site/components/TypeSignature.astro +20 -0
- package/assets/docs-site/fonts/inter-latin-400-normal.ttf +0 -0
- package/assets/docs-site/fonts/inter-latin-700-normal.ttf +0 -0
- package/assets/docs-site/styles/global.css +221 -0
- package/dist/lib/cjs/build.cjs +1 -1
- package/dist/lib/cjs/build.d.cts +1 -1
- package/dist/lib/cjs/commitlint-forbidden-patterns.cjs +2 -2
- package/dist/lib/cjs/commitlint-forbidden-patterns.d.cts +1 -1
- package/dist/lib/cjs/commitlint-spellcheck-header.cjs +2 -2
- package/dist/lib/cjs/commitlint-spellcheck-header.d.cts +1 -1
- package/dist/lib/cjs/docs-site/api-doc-constants.cjs +171 -0
- package/dist/lib/cjs/docs-site/api-doc-constants.d.cts +18 -0
- package/dist/lib/cjs/docs-site/api-doc-jsdoc.cjs +414 -0
- package/dist/lib/cjs/docs-site/api-doc-jsdoc.d.cts +149 -0
- package/dist/lib/cjs/docs-site/api-doc-link-rendering.cjs +377 -0
- package/dist/lib/cjs/docs-site/api-doc-link-rendering.d.cts +185 -0
- package/dist/lib/cjs/docs-site/api-doc-package-sites.cjs +118 -0
- package/dist/lib/cjs/docs-site/api-doc-package-sites.d.cts +36 -0
- package/dist/lib/cjs/docs-site/api-doc-page-generation.cjs +561 -0
- package/dist/lib/cjs/docs-site/api-doc-page-generation.d.cts +159 -0
- package/dist/lib/cjs/docs-site/api-doc-route-segments.cjs +42 -0
- package/dist/lib/cjs/docs-site/api-doc-route-segments.d.cts +25 -0
- package/dist/lib/cjs/docs-site/api-doc-settings.cjs +47 -0
- package/dist/lib/cjs/docs-site/api-doc-settings.d.cts +53 -0
- package/dist/lib/cjs/docs-site/api-doc-source-processing.cjs +288 -0
- package/dist/lib/cjs/docs-site/api-doc-source-processing.d.cts +75 -0
- package/dist/lib/cjs/docs-site/api-doc-text-utils.cjs +281 -0
- package/dist/lib/cjs/docs-site/api-doc-text-utils.d.cts +178 -0
- package/dist/lib/cjs/docs-site/api-doc-type-merging.cjs +157 -0
- package/dist/lib/cjs/docs-site/api-doc-type-merging.d.cts +51 -0
- package/dist/lib/cjs/docs-site/api-doc-types.cjs +22 -0
- package/dist/lib/cjs/docs-site/api-doc-types.d.cts +157 -0
- package/dist/lib/cjs/docs-site/api-docs.cjs +143 -0
- package/dist/lib/cjs/docs-site/api-docs.d.cts +34 -0
- package/dist/lib/cjs/docs-site/astro-config.cjs +169 -0
- package/dist/lib/cjs/docs-site/astro-config.d.cts +23 -0
- package/dist/lib/cjs/docs-site/docs-links.cjs +123 -0
- package/dist/lib/cjs/docs-site/docs-links.d.cts +32 -0
- package/dist/lib/cjs/docs-site/docs-site-assets.cjs +64 -0
- package/dist/lib/cjs/docs-site/docs-site-assets.d.cts +23 -0
- package/dist/lib/cjs/docs-site/docs-site-commands.cjs +72 -0
- package/dist/lib/cjs/docs-site/docs-site-commands.d.cts +29 -0
- package/dist/lib/cjs/docs-site/docs-site-config.cjs +122 -0
- package/dist/lib/cjs/docs-site/docs-site-config.d.cts +162 -0
- package/dist/lib/cjs/docs-site/index.cjs +116 -0
- package/dist/lib/cjs/docs-site/index.d.cts +26 -0
- package/dist/lib/cjs/docs-site/link-check.cjs +197 -0
- package/dist/lib/cjs/docs-site/link-check.d.cts +163 -0
- package/dist/lib/cjs/docs-site/og-image-page.cjs +45 -0
- package/dist/lib/cjs/docs-site/og-image-page.d.cts +15 -0
- package/dist/lib/cjs/docs-site/og-image.cjs +326 -0
- package/dist/lib/cjs/docs-site/og-image.d.cts +70 -0
- package/dist/lib/cjs/docs-site/og-images.cjs +170 -0
- package/dist/lib/cjs/docs-site/og-images.d.cts +41 -0
- package/dist/lib/cjs/docs-site/route-data.cjs +47 -0
- package/dist/lib/cjs/docs-site/route-data.d.cts +14 -0
- package/dist/lib/cjs/docs-site/satteri-github-alerts.cjs +97 -0
- package/dist/lib/cjs/docs-site/satteri-github-alerts.d.cts +31 -0
- package/dist/lib/cjs/docs-site/satteri-relative-links.cjs +87 -0
- package/dist/lib/cjs/docs-site/satteri-relative-links.d.cts +29 -0
- package/dist/lib/cjs/docs-site/unrendered-alerts.cjs +51 -0
- package/dist/lib/cjs/docs-site/unrendered-alerts.d.cts +38 -0
- package/dist/lib/cjs/index.cjs +4 -1
- package/dist/lib/cjs/index.d.cts +1 -0
- package/dist/lib/cjs/library-build.cjs +1 -1
- package/dist/lib/cjs/library-build.d.cts +2 -2
- package/dist/lib/cjs/linters/eslint-config.cjs +17 -17
- package/dist/lib/cjs/linters/eslint-config.d.cts +1 -7
- package/dist/lib/cjs/linters/eslint-rules/in-house-plugin.cjs +2 -2
- package/dist/lib/cjs/linters/eslint-rules/in-house-plugin.d.cts +5 -8
- package/dist/lib/cjs/linters/markdownlint.cjs +4 -1
- package/dist/lib/cjs/package-manager.cjs +2 -2
- package/dist/lib/esm/build.d.mts +1 -1
- package/dist/lib/esm/build.mjs +1 -1
- package/dist/lib/esm/commitlint-forbidden-patterns.d.mts +1 -1
- package/dist/lib/esm/commitlint-forbidden-patterns.mjs +2 -2
- package/dist/lib/esm/commitlint-spellcheck-header.d.mts +1 -1
- package/dist/lib/esm/commitlint-spellcheck-header.mjs +2 -2
- package/dist/lib/esm/docs-site/api-doc-constants.d.mts +18 -0
- package/dist/lib/esm/docs-site/api-doc-constants.mjs +143 -0
- package/dist/lib/esm/docs-site/api-doc-jsdoc.d.mts +149 -0
- package/dist/lib/esm/docs-site/api-doc-jsdoc.mjs +377 -0
- package/dist/lib/esm/docs-site/api-doc-link-rendering.d.mts +185 -0
- package/dist/lib/esm/docs-site/api-doc-link-rendering.mjs +356 -0
- package/dist/lib/esm/docs-site/api-doc-package-sites.d.mts +36 -0
- package/dist/lib/esm/docs-site/api-doc-package-sites.mjs +91 -0
- package/dist/lib/esm/docs-site/api-doc-page-generation.d.mts +159 -0
- package/dist/lib/esm/docs-site/api-doc-page-generation.mjs +548 -0
- package/dist/lib/esm/docs-site/api-doc-route-segments.d.mts +25 -0
- package/dist/lib/esm/docs-site/api-doc-route-segments.mjs +17 -0
- package/dist/lib/esm/docs-site/api-doc-settings.d.mts +53 -0
- package/dist/lib/esm/docs-site/api-doc-settings.mjs +22 -0
- package/dist/lib/esm/docs-site/api-doc-source-processing.d.mts +75 -0
- package/dist/lib/esm/docs-site/api-doc-source-processing.mjs +274 -0
- package/dist/lib/esm/docs-site/api-doc-text-utils.d.mts +178 -0
- package/dist/lib/esm/docs-site/api-doc-text-utils.mjs +239 -0
- package/dist/lib/esm/docs-site/api-doc-type-merging.d.mts +51 -0
- package/dist/lib/esm/docs-site/api-doc-type-merging.mjs +129 -0
- package/dist/lib/esm/docs-site/api-doc-types.d.mts +157 -0
- package/dist/lib/esm/docs-site/api-doc-types.mjs +6 -0
- package/dist/lib/esm/docs-site/api-docs.d.mts +34 -0
- package/dist/lib/esm/docs-site/api-docs.mjs +139 -0
- package/dist/lib/esm/docs-site/astro-config.d.mts +23 -0
- package/dist/lib/esm/docs-site/astro-config.mjs +135 -0
- package/dist/lib/esm/docs-site/docs-links.d.mts +32 -0
- package/dist/lib/esm/docs-site/docs-links.mjs +113 -0
- package/dist/lib/esm/docs-site/docs-site-assets.d.mts +23 -0
- package/dist/lib/esm/docs-site/docs-site-assets.mjs +32 -0
- package/dist/lib/esm/docs-site/docs-site-commands.d.mts +29 -0
- package/dist/lib/esm/docs-site/docs-site-commands.mjs +46 -0
- package/dist/lib/esm/docs-site/docs-site-config.d.mts +162 -0
- package/dist/lib/esm/docs-site/docs-site-config.mjs +98 -0
- package/dist/lib/esm/docs-site/index.d.mts +26 -0
- package/dist/lib/esm/docs-site/index.mjs +58 -0
- package/dist/lib/esm/docs-site/link-check.d.mts +163 -0
- package/dist/lib/esm/docs-site/link-check.mjs +166 -0
- package/dist/lib/esm/docs-site/og-image-page.d.mts +15 -0
- package/dist/lib/esm/docs-site/og-image-page.mjs +21 -0
- package/dist/lib/esm/docs-site/og-image.d.mts +70 -0
- package/dist/lib/esm/docs-site/og-image.mjs +292 -0
- package/dist/lib/esm/docs-site/og-images.d.mts +41 -0
- package/dist/lib/esm/docs-site/og-images.mjs +156 -0
- package/dist/lib/esm/docs-site/route-data.d.mts +14 -0
- package/dist/lib/esm/docs-site/route-data.mjs +23 -0
- package/dist/lib/esm/docs-site/satteri-github-alerts.d.mts +31 -0
- package/dist/lib/esm/docs-site/satteri-github-alerts.mjs +72 -0
- package/dist/lib/esm/docs-site/satteri-relative-links.d.mts +29 -0
- package/dist/lib/esm/docs-site/satteri-relative-links.mjs +63 -0
- package/dist/lib/esm/docs-site/unrendered-alerts.d.mts +38 -0
- package/dist/lib/esm/docs-site/unrendered-alerts.mjs +26 -0
- package/dist/lib/esm/index.d.mts +1 -0
- package/dist/lib/esm/index.mjs +3 -1
- package/dist/lib/esm/library-build.d.mts +2 -2
- package/dist/lib/esm/library-build.mjs +1 -1
- package/dist/lib/esm/linters/eslint-config.d.mts +1 -7
- package/dist/lib/esm/linters/eslint-config.mjs +17 -17
- package/dist/lib/esm/linters/eslint-rules/in-house-plugin.d.mts +5 -8
- package/dist/lib/esm/linters/eslint-rules/in-house-plugin.mjs +2 -2
- package/dist/lib/esm/linters/markdownlint.mjs +4 -1
- package/dist/lib/esm/package-manager.mjs +2 -2
- package/docs-site/api-doc-constants/package.json +6 -0
- package/docs-site/api-doc-jsdoc/package.json +6 -0
- package/docs-site/api-doc-link-rendering/package.json +6 -0
- package/docs-site/api-doc-package-sites/package.json +6 -0
- package/docs-site/api-doc-page-generation/package.json +6 -0
- package/docs-site/api-doc-route-segments/package.json +6 -0
- package/docs-site/api-doc-settings/package.json +6 -0
- package/docs-site/api-doc-source-processing/package.json +6 -0
- package/docs-site/api-doc-text-utils/package.json +6 -0
- package/docs-site/api-doc-type-merging/package.json +6 -0
- package/docs-site/api-doc-types/package.json +6 -0
- package/docs-site/api-docs/package.json +6 -0
- package/docs-site/astro-config/package.json +6 -0
- package/docs-site/docs-links/package.json +6 -0
- package/docs-site/docs-site-assets/package.json +6 -0
- package/docs-site/docs-site-commands/package.json +6 -0
- package/docs-site/docs-site-config/package.json +6 -0
- package/docs-site/index/package.json +6 -0
- package/docs-site/link-check/package.json +6 -0
- package/docs-site/og-image/package.json +6 -0
- package/docs-site/og-image-page/package.json +6 -0
- package/docs-site/og-images/package.json +6 -0
- package/docs-site/package.json +6 -0
- package/docs-site/route-data/package.json +6 -0
- package/docs-site/satteri-github-alerts/package.json +6 -0
- package/docs-site/satteri-relative-links/package.json +6 -0
- package/docs-site/unrendered-alerts/package.json +6 -0
- package/package.json +74 -4
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
(function () {
|
|
6
|
+
function ensureBrowserProcess() {
|
|
7
|
+
const browserProcess = {
|
|
8
|
+
browser: true,
|
|
9
|
+
cwd() {
|
|
10
|
+
return '/';
|
|
11
|
+
},
|
|
12
|
+
env: {},
|
|
13
|
+
platform: 'android'
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const existingProcess = globalThis.process;
|
|
17
|
+
|
|
18
|
+
if (!existingProcess) {
|
|
19
|
+
globalThis.process = browserProcess;
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if (existingProcess.versions?.node) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const existingProcessRecord = existingProcess;
|
|
28
|
+
|
|
29
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
30
|
+
existingProcessRecord[key] ??= value;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
existingProcessRecord['browser'] = true;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
ensureBrowserProcess();
|
|
37
|
+
})();
|
|
38
|
+
|
|
39
|
+
"use strict";
|
|
40
|
+
var __create = Object.create;
|
|
41
|
+
var __defProp = Object.defineProperty;
|
|
42
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
43
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
44
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
45
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
46
|
+
var __export = (target, all) => {
|
|
47
|
+
for (var name in all)
|
|
48
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
49
|
+
};
|
|
50
|
+
var __copyProps = (to, from, except, desc) => {
|
|
51
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
52
|
+
for (let key of __getOwnPropNames(from))
|
|
53
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
54
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
55
|
+
}
|
|
56
|
+
return to;
|
|
57
|
+
};
|
|
58
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
59
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
60
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
61
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
62
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
63
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
64
|
+
mod
|
|
65
|
+
));
|
|
66
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
67
|
+
var astro_config_exports = {};
|
|
68
|
+
__export(astro_config_exports, {
|
|
69
|
+
defineDocsSiteConfig: () => defineDocsSiteConfig
|
|
70
|
+
});
|
|
71
|
+
module.exports = __toCommonJS(astro_config_exports);
|
|
72
|
+
var import_markdown_satteri = require('@astrojs/markdown-satteri');
|
|
73
|
+
var import_starlight = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('@astrojs/starlight')), 1);
|
|
74
|
+
var import_path = require('@mnaoumov/typescript-lib/path');
|
|
75
|
+
var import_config = require('astro/config');
|
|
76
|
+
var import_node_fs = require('node:fs');
|
|
77
|
+
var import_node_url = require('node:url');
|
|
78
|
+
var import_docs_site_assets = require('./docs-site-assets.cjs');
|
|
79
|
+
var import_docs_site_config = require('./docs-site-config.cjs');
|
|
80
|
+
var import_satteri_github_alerts = require('./satteri-github-alerts.cjs');
|
|
81
|
+
var import_satteri_relative_links = require('./satteri-relative-links.cjs');
|
|
82
|
+
var __import_meta_url = globalThis["import.meta.url"] ?? (function getCjsImportMetaUrl() {
|
|
83
|
+
if (typeof __filename === "string") {
|
|
84
|
+
const localRequire = require;
|
|
85
|
+
const url = localRequire("node:url");
|
|
86
|
+
if (typeof url.pathToFileURL === "function") {
|
|
87
|
+
return url.pathToFileURL(__filename).href;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return globalThis.location?.href ?? "";
|
|
91
|
+
})();
|
|
92
|
+
function defineDocsSiteConfig(config) {
|
|
93
|
+
const resolved = (0, import_docs_site_config.resolveDocsSiteConfig)(config);
|
|
94
|
+
const assetsDirectory = (0, import_path.toPosixPath)((0, import_docs_site_assets.getDocsSiteAssetsDirectory)());
|
|
95
|
+
return (0, import_config.defineConfig)({
|
|
96
|
+
base: resolved.basePath,
|
|
97
|
+
integrations: [
|
|
98
|
+
(0, import_starlight.default)({
|
|
99
|
+
components: {
|
|
100
|
+
SiteTitle: (0, import_path.join)(assetsDirectory, "components", "SiteTitle.astro")
|
|
101
|
+
},
|
|
102
|
+
customCss: [
|
|
103
|
+
(0, import_path.join)(assetsDirectory, "styles", "global.css")
|
|
104
|
+
],
|
|
105
|
+
editLink: {
|
|
106
|
+
baseUrl: resolved.editLinkBaseUrl
|
|
107
|
+
},
|
|
108
|
+
favicon: "/favicon.svg",
|
|
109
|
+
routeMiddleware: getRouteDataModulePath(),
|
|
110
|
+
sidebar: [
|
|
111
|
+
{
|
|
112
|
+
items: [{ autogenerate: { directory: resolved.guidesDirectory } }],
|
|
113
|
+
label: "Guides"
|
|
114
|
+
},
|
|
115
|
+
...readApiSidebar(resolved.apiDocSettings.sidebarFile)
|
|
116
|
+
],
|
|
117
|
+
social: [
|
|
118
|
+
{ href: resolved.githubUrl, icon: "github", label: "GitHub" }
|
|
119
|
+
],
|
|
120
|
+
title: resolved.title
|
|
121
|
+
})
|
|
122
|
+
],
|
|
123
|
+
markdown: {
|
|
124
|
+
// Astro 7.3 made Sätteri the default Markdown processor; `markdown.remarkPlugins` now runs only on the
|
|
125
|
+
// `unified` processor from `@astrojs/markdown-remark`, which Astro no longer installs. Naming the
|
|
126
|
+
// Sätteri processor here keeps the pipeline on it, carrying the link rewrite as one of its mdast plugins.
|
|
127
|
+
// The GitHub-alert conversion rides here too, ahead of the asides plugin Starlight appends after these:
|
|
128
|
+
// `starlight-github-alerts` cannot find that plugin on Starlight 0.42 and silently skipped every page.
|
|
129
|
+
processor: (0, import_markdown_satteri.satteri)({ mdastPlugins: [(0, import_satteri_github_alerts.satteriGitHubAlerts)(), (0, import_satteri_relative_links.satteriRelativeLinks)(resolved.basePath)] })
|
|
130
|
+
},
|
|
131
|
+
// eslint-disable-next-line unicorn/name-replacements -- `outDir` is an Astro config key.
|
|
132
|
+
outDir: resolved.distDirectory,
|
|
133
|
+
// eslint-disable-next-line unicorn/name-replacements -- `publicDir` is an Astro config key.
|
|
134
|
+
publicDir: resolved.publicDirectory,
|
|
135
|
+
root: resolved.rootDirectory,
|
|
136
|
+
site: resolved.siteOrigin,
|
|
137
|
+
// eslint-disable-next-line unicorn/name-replacements -- `srcDir` is an Astro config key.
|
|
138
|
+
srcDir: resolved.docsSourceDirectory,
|
|
139
|
+
trailingSlash: "always",
|
|
140
|
+
vite: {
|
|
141
|
+
define: {
|
|
142
|
+
// The site title shows the documented package's version; `SiteTitle.astro` reads it from here.
|
|
143
|
+
"import.meta.env.DOCS_SITE_PACKAGE_VERSION": JSON.stringify(resolved.packageVersion)
|
|
144
|
+
},
|
|
145
|
+
resolve: {
|
|
146
|
+
alias: [
|
|
147
|
+
{ find: import_docs_site_assets.API_COMPONENTS_IMPORT_PREFIX, replacement: (0, import_path.join)(assetsDirectory, "components") }
|
|
148
|
+
]
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
function getRouteDataModulePath() {
|
|
154
|
+
const thisModulePath = (0, import_path.toPosixPath)((0, import_node_url.fileURLToPath)(__import_meta_url));
|
|
155
|
+
return (0, import_path.join)(thisModulePath, "..", `route-data${(0, import_path.extname)(thisModulePath)}`);
|
|
156
|
+
}
|
|
157
|
+
function readApiSidebar(sidebarFile) {
|
|
158
|
+
if (!(0, import_node_fs.existsSync)(sidebarFile)) {
|
|
159
|
+
console.warn(`[astro.config] ${sidebarFile} not found. Generate the API reference first (npm run docs:build).`);
|
|
160
|
+
return [];
|
|
161
|
+
}
|
|
162
|
+
const parsed = JSON.parse((0, import_node_fs.readFileSync)(sidebarFile, "utf-8"));
|
|
163
|
+
return Array.isArray(parsed) ? parsed : [];
|
|
164
|
+
}
|
|
165
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
166
|
+
0 && (module.exports = {
|
|
167
|
+
defineDocsSiteConfig
|
|
168
|
+
});
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb2NzLXNpdGUvYXN0cm8tY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbJ2ltcG9ydC5tZXRhLnVybCddID8/IChmdW5jdGlvbiBnZXRDanNJbXBvcnRNZXRhVXJsKCkge1xuICBpZiAodHlwZW9mIF9fZmlsZW5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgbG9jYWxSZXF1aXJlID0gcmVxdWlyZTtcbiAgICBjb25zdCB1cmwgPSBsb2NhbFJlcXVpcmUoJ25vZGU6dXJsJyk7XG4gICAgaWYgKHR5cGVvZiB1cmwucGF0aFRvRmlsZVVSTCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHVybC5wYXRoVG9GaWxlVVJMKF9fZmlsZW5hbWUpLmhyZWY7XG4gICAgfVxuICB9XG5cbiAgLy8gRmFsbGJhY2sgdG8gdGhlIHBhZ2UgVVJMLCBvciBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGVudmlyb25tZW50IGlzIHVua25vd24uXG4gIHJldHVybiBnbG9iYWxUaGlzLmxvY2F0aW9uPy5ocmVmID8/ICcnO1xufSkoKTtcbi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGUgQXN0cm8gKyBTdGFybGlnaHQgY29uZmlndXJhdGlvbiBldmVyeSBkb2N1bWVudGF0aW9uIHNpdGUgaXMgYnVpbHQgd2l0aC5cbiAqXG4gKiBBIHNpdGUncyBvd24gYGFzdHJvLmNvbmZpZy50c2AgaXMgb25lIGNhbGwsIGBleHBvcnQgZGVmYXVsdCBkZWZpbmVEb2NzU2l0ZUNvbmZpZyh7IHJlcG8sIHRpdGxlIH0pYDogdGhlIGJhc2UgcGF0aCxcbiAqIHRoZSBlZGl0IGFuZCBHaXRIdWIgbGlua3MsIHRoZSBzaWRlYmFyLCB0aGUgc2hhcmVkIGNvbXBvbmVudHMgYW5kIHN0eWxlc2hlZXQsIHRoZSBPcGVuIEdyYXBoIG1ldGFkYXRhIGFuZCB0aGVcbiAqIE1hcmtkb3duIHBsdWdpbnMgYWxsIGZvbGxvdyBmcm9tIHRoZSByZXBvc2l0b3J5J3MgbmFtZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFN0YXJsaWdodFVzZXJDb25maWcgfSBmcm9tICdAYXN0cm9qcy9zdGFybGlnaHQvdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBBc3Ryb1VzZXJDb25maWcgfSBmcm9tICdhc3Rybyc7XG5cbmltcG9ydCB7IHNhdHRlcmkgfSBmcm9tICdAYXN0cm9qcy9tYXJrZG93bi1zYXR0ZXJpJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1yZW5hbWUtZGVmYXVsdCAtLSBUaGUgZGVmYXVsdCBleHBvcnQgbmFtZSBgU3RhcmxpZ2h0SW50ZWdyYXRpb25gIGlzIHRvbyB2ZXJib3NlLlxuaW1wb3J0IHN0YXJsaWdodCBmcm9tICdAYXN0cm9qcy9zdGFybGlnaHQnO1xuaW1wb3J0IHtcbiAgZXh0bmFtZSxcbiAgam9pbixcbiAgdG9Qb3NpeFBhdGhcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSAnYXN0cm8vY29uZmlnJztcbmltcG9ydCB7XG4gIGV4aXN0c1N5bmMsXG4gIHJlYWRGaWxlU3luY1xufSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICdub2RlOnVybCc7XG5cbmltcG9ydCB0eXBlIHsgRG9jc1NpdGVDb25maWcgfSBmcm9tICcuL2RvY3Mtc2l0ZS1jb25maWcudHMnO1xuXG5pbXBvcnQge1xuICBBUElfQ09NUE9ORU5UU19JTVBPUlRfUFJFRklYLFxuICBnZXREb2NzU2l0ZUFzc2V0c0RpcmVjdG9yeVxufSBmcm9tICcuL2RvY3Mtc2l0ZS1hc3NldHMudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZURvY3NTaXRlQ29uZmlnIH0gZnJvbSAnLi9kb2NzLXNpdGUtY29uZmlnLnRzJztcbmltcG9ydCB7IHNhdHRlcmlHaXRIdWJBbGVydHMgfSBmcm9tICcuL3NhdHRlcmktZ2l0aHViLWFsZXJ0cy50cyc7XG5pbXBvcnQgeyBzYXR0ZXJpUmVsYXRpdmVMaW5rcyB9IGZyb20gJy4vc2F0dGVyaS1yZWxhdGl2ZS1saW5rcy50cyc7XG5cbnR5cGUgU2lkZWJhckl0ZW1zID0gTm9uTnVsbGFibGU8U3RhcmxpZ2h0VXNlckNvbmZpZ1snc2lkZWJhciddPjtcblxuLyoqXG4gKiBCdWlsZHMgYSBkb2N1bWVudGF0aW9uIHNpdGUncyBBc3RybyBjb25maWd1cmF0aW9uLlxuICpcbiAqIFRoZSBzaXRlJ3Mgc291cmNlIGxpdmVzIHVuZGVyIGA8ZG9jcz4vc3JjYCAoYHNyY0RpcmApLCBzbyBpdCBuZXZlciBjb2xsaWRlcyB3aXRoIHRoZSBwYWNrYWdlJ3Mgb3duIGBzcmMvYCBhbmRcbiAqIGBkaXN0L2AuIFRoZSBBUEkgcmVmZXJlbmNlIGlzIGdlbmVyYXRlZCBpbnRvIGA8ZG9jcz4vc3JjL2NvbnRlbnQvZG9jcy9hcGlgIHdpdGggYSBtYXRjaGluZ1xuICogYDxkb2NzPi9zcmMvZ2VuZXJhdGVkLXNpZGViYXIuanNvbmAsIHdoaWNoIHRoaXMgcmVhZHM7IHJ1biB0aGUgZ2VuZXJhdG9yIGZpcnN0LlxuICpcbiAqIEBwYXJhbSBjb25maWcgLSBUaGUgc2l0ZSdzIGNvbmZpZ3VyYXRpb24uXG4gKiBAcmV0dXJucyBUaGUgQXN0cm8gY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZURvY3NTaXRlQ29uZmlnKGNvbmZpZzogRG9jc1NpdGVDb25maWcpOiBBc3Ryb1VzZXJDb25maWcge1xuICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVEb2NzU2l0ZUNvbmZpZyhjb25maWcpO1xuICBjb25zdCBhc3NldHNEaXJlY3RvcnkgPSB0b1Bvc2l4UGF0aChnZXREb2NzU2l0ZUFzc2V0c0RpcmVjdG9yeSgpKTtcblxuICByZXR1cm4gZGVmaW5lQ29uZmlnKHtcbiAgICBiYXNlOiByZXNvbHZlZC5iYXNlUGF0aCxcbiAgICBpbnRlZ3JhdGlvbnM6IFtcbiAgICAgIHN0YXJsaWdodCh7XG4gICAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgICBTaXRlVGl0bGU6IGpvaW4oYXNzZXRzRGlyZWN0b3J5LCAnY29tcG9uZW50cycsICdTaXRlVGl0bGUuYXN0cm8nKVxuICAgICAgICB9LFxuICAgICAgICBjdXN0b21Dc3M6IFtcbiAgICAgICAgICBqb2luKGFzc2V0c0RpcmVjdG9yeSwgJ3N0eWxlcycsICdnbG9iYWwuY3NzJylcbiAgICAgICAgXSxcbiAgICAgICAgZWRpdExpbms6IHtcbiAgICAgICAgICBiYXNlVXJsOiByZXNvbHZlZC5lZGl0TGlua0Jhc2VVcmxcbiAgICAgICAgfSxcbiAgICAgICAgZmF2aWNvbjogJy9mYXZpY29uLnN2ZycsXG4gICAgICAgIHJvdXRlTWlkZGxld2FyZTogZ2V0Um91dGVEYXRhTW9kdWxlUGF0aCgpLFxuICAgICAgICBzaWRlYmFyOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaXRlbXM6IFt7IGF1dG9nZW5lcmF0ZTogeyBkaXJlY3Rvcnk6IHJlc29sdmVkLmd1aWRlc0RpcmVjdG9yeSB9IH1dLFxuICAgICAgICAgICAgbGFiZWw6ICdHdWlkZXMnXG4gICAgICAgICAgfSxcbiAgICAgICAgICAuLi5yZWFkQXBpU2lkZWJhcihyZXNvbHZlZC5hcGlEb2NTZXR0aW5ncy5zaWRlYmFyRmlsZSlcbiAgICAgICAgXSxcbiAgICAgICAgc29jaWFsOiBbXG4gICAgICAgICAgeyBocmVmOiByZXNvbHZlZC5naXRodWJVcmwsIGljb246ICdnaXRodWInLCBsYWJlbDogJ0dpdEh1YicgfVxuICAgICAgICBdLFxuICAgICAgICB0aXRsZTogcmVzb2x2ZWQudGl0bGVcbiAgICAgIH0pXG4gICAgXSxcbiAgICBtYXJrZG93bjoge1xuICAgICAgLy8gQXN0cm8gNy4zIG1hZGUgU8OkdHRlcmkgdGhlIGRlZmF1bHQgTWFya2Rvd24gcHJvY2Vzc29yOyBgbWFya2Rvd24ucmVtYXJrUGx1Z2luc2Agbm93IHJ1bnMgb25seSBvbiB0aGVcbiAgICAgIC8vIGB1bmlmaWVkYCBwcm9jZXNzb3IgZnJvbSBgQGFzdHJvanMvbWFya2Rvd24tcmVtYXJrYCwgd2hpY2ggQXN0cm8gbm8gbG9uZ2VyIGluc3RhbGxzLiBOYW1pbmcgdGhlXG4gICAgICAvLyBTw6R0dGVyaSBwcm9jZXNzb3IgaGVyZSBrZWVwcyB0aGUgcGlwZWxpbmUgb24gaXQsIGNhcnJ5aW5nIHRoZSBsaW5rIHJld3JpdGUgYXMgb25lIG9mIGl0cyBtZGFzdCBwbHVnaW5zLlxuICAgICAgLy8gVGhlIEdpdEh1Yi1hbGVydCBjb252ZXJzaW9uIHJpZGVzIGhlcmUgdG9vLCBhaGVhZCBvZiB0aGUgYXNpZGVzIHBsdWdpbiBTdGFybGlnaHQgYXBwZW5kcyBhZnRlciB0aGVzZTpcbiAgICAgIC8vIGBzdGFybGlnaHQtZ2l0aHViLWFsZXJ0c2AgY2Fubm90IGZpbmQgdGhhdCBwbHVnaW4gb24gU3RhcmxpZ2h0IDAuNDIgYW5kIHNpbGVudGx5IHNraXBwZWQgZXZlcnkgcGFnZS5cbiAgICAgIHByb2Nlc3Nvcjogc2F0dGVyaSh7IG1kYXN0UGx1Z2luczogW3NhdHRlcmlHaXRIdWJBbGVydHMoKSwgc2F0dGVyaVJlbGF0aXZlTGlua3MocmVzb2x2ZWQuYmFzZVBhdGgpXSB9KVxuICAgIH0sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYG91dERpcmAgaXMgYW4gQXN0cm8gY29uZmlnIGtleS5cbiAgICBvdXREaXI6IHJlc29sdmVkLmRpc3REaXJlY3RvcnksXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYHB1YmxpY0RpcmAgaXMgYW4gQXN0cm8gY29uZmlnIGtleS5cbiAgICBwdWJsaWNEaXI6IHJlc29sdmVkLnB1YmxpY0RpcmVjdG9yeSxcbiAgICByb290OiByZXNvbHZlZC5yb290RGlyZWN0b3J5LFxuICAgIHNpdGU6IHJlc29sdmVkLnNpdGVPcmlnaW4sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYHNyY0RpcmAgaXMgYW4gQXN0cm8gY29uZmlnIGtleS5cbiAgICBzcmNEaXI6IHJlc29sdmVkLmRvY3NTb3VyY2VEaXJlY3RvcnksXG4gICAgdHJhaWxpbmdTbGFzaDogJ2Fsd2F5cycsXG4gICAgdml0ZToge1xuICAgICAgZGVmaW5lOiB7XG4gICAgICAgIC8vIFRoZSBzaXRlIHRpdGxlIHNob3dzIHRoZSBkb2N1bWVudGVkIHBhY2thZ2UncyB2ZXJzaW9uOyBgU2l0ZVRpdGxlLmFzdHJvYCByZWFkcyBpdCBmcm9tIGhlcmUuXG4gICAgICAgICdpbXBvcnQubWV0YS5lbnYuRE9DU19TSVRFX1BBQ0tBR0VfVkVSU0lPTic6IEpTT04uc3RyaW5naWZ5KHJlc29sdmVkLnBhY2thZ2VWZXJzaW9uKVxuICAgICAgfSxcbiAgICAgIHJlc29sdmU6IHtcbiAgICAgICAgYWxpYXM6IFtcbiAgICAgICAgICB7IGZpbmQ6IEFQSV9DT01QT05FTlRTX0lNUE9SVF9QUkVGSVgsIHJlcGxhY2VtZW50OiBqb2luKGFzc2V0c0RpcmVjdG9yeSwgJ2NvbXBvbmVudHMnKSB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG4vLyBgcm91dGUtZGF0YWAgc2l0cyBiZXNpZGUgdGhpcyBtb2R1bGUgaW4gZXZlcnkgYnVpbGQgb2YgaXQsIHdpdGggdGhlIHNhbWUgZXh0ZW5zaW9uOiBgLnRzYCBpbiB0aGlzIHJlcG9zaXRvcnksXG4vLyBgLm1qc2AgLyBgLmNqc2Agb25jZSBpbnN0YWxsZWQuXG5mdW5jdGlvbiBnZXRSb3V0ZURhdGFNb2R1bGVQYXRoKCk6IHN0cmluZyB7XG4gIGNvbnN0IHRoaXNNb2R1bGVQYXRoID0gdG9Qb3NpeFBhdGgoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKTtcbiAgcmV0dXJuIGpvaW4odGhpc01vZHVsZVBhdGgsICcuLicsIGByb3V0ZS1kYXRhJHtleHRuYW1lKHRoaXNNb2R1bGVQYXRoKX1gKTtcbn1cblxuZnVuY3Rpb24gcmVhZEFwaVNpZGViYXIoc2lkZWJhckZpbGU6IHN0cmluZyk6IFNpZGViYXJJdGVtcyB7XG4gIGlmICghZXhpc3RzU3luYyhzaWRlYmFyRmlsZSkpIHtcbiAgICBjb25zb2xlLndhcm4oYFthc3Ryby5jb25maWddICR7c2lkZWJhckZpbGV9IG5vdCBmb3VuZC4gR2VuZXJhdGUgdGhlIEFQSSByZWZlcmVuY2UgZmlyc3QgKG5wbSBydW4gZG9jczpidWlsZCkuYCk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgcGFyc2VkOiB1bmtub3duID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMoc2lkZWJhckZpbGUsICd1dGYtOCcpKTtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkocGFyc2VkKSA/IHBhcnNlZCBhcyBTaWRlYmFySXRlbXMgOiBbXTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlCQSw4QkFBd0I7QUFFeEIsdUJBQXNCO0FBQ3RCLGtCQUlPO0FBQ1Asb0JBQTZCO0FBQzdCLHFCQUdPO0FBQ1Asc0JBQThCO0FBSTlCLDhCQUdPO0FBQ1AsOEJBQXNDO0FBQ3RDLG1DQUFvQztBQUNwQyxvQ0FBcUM7QUFoRHJDLElBQUksb0JBQW9CLFdBQVcsaUJBQWlCLE1BQU0sU0FBUyxzQkFBc0I7QUFDdkYsTUFBSSxPQUFPLGVBQWUsVUFBVTtBQUNsQyxVQUFNLGVBQWU7QUFDckIsVUFBTSxNQUFNLGFBQWEsVUFBVTtBQUNuQyxRQUFJLE9BQU8sSUFBSSxrQkFBa0IsWUFBWTtBQUMzQyxhQUFPLElBQUksY0FBYyxVQUFVLEVBQUU7QUFBQSxJQUN2QztBQUFBLEVBQ0Y7QUFHQSxTQUFPLFdBQVcsVUFBVSxRQUFRO0FBQ3RDLEdBQUc7QUFtREksU0FBUyxxQkFBcUIsUUFBeUM7QUFDNUUsUUFBTSxlQUFXLCtDQUFzQixNQUFNO0FBQzdDLFFBQU0sc0JBQWtCLDZCQUFZLG9EQUEyQixDQUFDO0FBRWhFLGFBQU8sNEJBQWE7QUFBQSxJQUNsQixNQUFNLFNBQVM7QUFBQSxJQUNmLGNBQWM7QUFBQSxVQUNaLGlCQUFBQSxTQUFVO0FBQUEsUUFDUixZQUFZO0FBQUEsVUFDVixlQUFXLGtCQUFLLGlCQUFpQixjQUFjLGlCQUFpQjtBQUFBLFFBQ2xFO0FBQUEsUUFDQSxXQUFXO0FBQUEsY0FDVCxrQkFBSyxpQkFBaUIsVUFBVSxZQUFZO0FBQUEsUUFDOUM7QUFBQSxRQUNBLFVBQVU7QUFBQSxVQUNSLFNBQVMsU0FBUztBQUFBLFFBQ3BCO0FBQUEsUUFDQSxTQUFTO0FBQUEsUUFDVCxpQkFBaUIsdUJBQXVCO0FBQUEsUUFDeEMsU0FBUztBQUFBLFVBQ1A7QUFBQSxZQUNFLE9BQU8sQ0FBQyxFQUFFLGNBQWMsRUFBRSxXQUFXLFNBQVMsZ0JBQWdCLEVBQUUsQ0FBQztBQUFBLFlBQ2pFLE9BQU87QUFBQSxVQUNUO0FBQUEsVUFDQSxHQUFHLGVBQWUsU0FBUyxlQUFlLFdBQVc7QUFBQSxRQUN2RDtBQUFBLFFBQ0EsUUFBUTtBQUFBLFVBQ04sRUFBRSxNQUFNLFNBQVMsV0FBVyxNQUFNLFVBQVUsT0FBTyxTQUFTO0FBQUEsUUFDOUQ7QUFBQSxRQUNBLE9BQU8sU0FBUztBQUFBLE1BQ2xCLENBQUM7QUFBQSxJQUNIO0FBQUEsSUFDQSxVQUFVO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BTVIsZUFBVyxpQ0FBUSxFQUFFLGNBQWMsS0FBQyxrREFBb0IsT0FBRyxvREFBcUIsU0FBUyxRQUFRLENBQUMsRUFBRSxDQUFDO0FBQUEsSUFDdkc7QUFBQTtBQUFBLElBRUEsUUFBUSxTQUFTO0FBQUE7QUFBQSxJQUVqQixXQUFXLFNBQVM7QUFBQSxJQUNwQixNQUFNLFNBQVM7QUFBQSxJQUNmLE1BQU0sU0FBUztBQUFBO0FBQUEsSUFFZixRQUFRLFNBQVM7QUFBQSxJQUNqQixlQUFlO0FBQUEsSUFDZixNQUFNO0FBQUEsTUFDSixRQUFRO0FBQUE7QUFBQSxRQUVOLDZDQUE2QyxLQUFLLFVBQVUsU0FBUyxjQUFjO0FBQUEsTUFDckY7QUFBQSxNQUNBLFNBQVM7QUFBQSxRQUNQLE9BQU87QUFBQSxVQUNMLEVBQUUsTUFBTSxzREFBOEIsaUJBQWEsa0JBQUssaUJBQWlCLFlBQVksRUFBRTtBQUFBLFFBQ3pGO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFDSDtBQUlBLFNBQVMseUJBQWlDO0FBQ3hDLFFBQU0scUJBQWlCLDZCQUFZLCtCQUFjLGlCQUFlLENBQUM7QUFDakUsYUFBTyxrQkFBSyxnQkFBZ0IsTUFBTSxpQkFBYSxxQkFBUSxjQUFjLENBQUMsRUFBRTtBQUMxRTtBQUVBLFNBQVMsZUFBZSxhQUFtQztBQUN6RCxNQUFJLEtBQUMsMkJBQVcsV0FBVyxHQUFHO0FBQzVCLFlBQVEsS0FBSyxrQkFBa0IsV0FBVyxvRUFBb0U7QUFDOUcsV0FBTyxDQUFDO0FBQUEsRUFDVjtBQUVBLFFBQU0sU0FBa0IsS0FBSyxVQUFNLDZCQUFhLGFBQWEsT0FBTyxDQUFDO0FBQ3JFLFNBQU8sTUFBTSxRQUFRLE1BQU0sSUFBSSxTQUF5QixDQUFDO0FBQzNEOyIsIm5hbWVzIjpbInN0YXJsaWdodCJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.cts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* The Astro + Starlight configuration every documentation site is built with.
|
|
6
|
+
*
|
|
7
|
+
* A site's own `astro.config.ts` is one call, `export default defineDocsSiteConfig({ repo, title })`: the base path,
|
|
8
|
+
* the edit and GitHub links, the sidebar, the shared components and stylesheet, the Open Graph metadata and the
|
|
9
|
+
* Markdown plugins all follow from the repository's name.
|
|
10
|
+
*/
|
|
11
|
+
import type { AstroUserConfig } from 'astro' with { 'resolution-mode': 'import' };
|
|
12
|
+
import type { DocsSiteConfig } from './docs-site-config.cjs';
|
|
13
|
+
/**
|
|
14
|
+
* Builds a documentation site's Astro configuration.
|
|
15
|
+
*
|
|
16
|
+
* The site's source lives under `<docs>/src` (`srcDir`), so it never collides with the package's own `src/` and
|
|
17
|
+
* `dist/`. The API reference is generated into `<docs>/src/content/docs/api` with a matching
|
|
18
|
+
* `<docs>/src/generated-sidebar.json`, which this reads; run the generator first.
|
|
19
|
+
*
|
|
20
|
+
* @param config - The site's configuration.
|
|
21
|
+
* @returns The Astro configuration.
|
|
22
|
+
*/
|
|
23
|
+
export declare function defineDocsSiteConfig(config: DocsSiteConfig): AstroUserConfig;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
9
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
10
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
|
+
var __export = (target, all) => {
|
|
12
|
+
for (var name in all)
|
|
13
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
14
|
+
};
|
|
15
|
+
var __copyProps = (to, from, except, desc) => {
|
|
16
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
17
|
+
for (let key of __getOwnPropNames(from))
|
|
18
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
19
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
20
|
+
}
|
|
21
|
+
return to;
|
|
22
|
+
};
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var docs_links_exports = {};
|
|
25
|
+
__export(docs_links_exports, {
|
|
26
|
+
assertDocsLinksResolve: () => assertDocsLinksResolve
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(docs_links_exports);
|
|
29
|
+
var import_promises = require('node:fs/promises');
|
|
30
|
+
var import_node_path = require('node:path');
|
|
31
|
+
var import_link_check = require('./link-check.cjs');
|
|
32
|
+
var import_unrendered_alerts = require('./unrendered-alerts.cjs');
|
|
33
|
+
const EXTERNAL_LINK_TIMEOUT_IN_MILLISECONDS = 1e4;
|
|
34
|
+
const EXTERNAL_LINK_CONCURRENCY = 20;
|
|
35
|
+
const HTML_FILE_EXTENSION = ".html";
|
|
36
|
+
const FALLBACK_PAGE_RELATIVE_PATH = "404.html";
|
|
37
|
+
async function assertDocsLinksResolve(options) {
|
|
38
|
+
const outputDirectory = (0, import_node_path.resolve)(options.outputDirectory).replaceAll("\\", "/");
|
|
39
|
+
const allFiles = await getAllFiles(outputDirectory);
|
|
40
|
+
const pages = await readPages(outputDirectory, allFiles);
|
|
41
|
+
const unrenderedAlerts = (0, import_unrendered_alerts.collectUnrenderedAlerts)(pages);
|
|
42
|
+
if (unrenderedAlerts.length > 0) {
|
|
43
|
+
throw new Error(
|
|
44
|
+
`Detected ${String(unrenderedAlerts.length)} GitHub alert(s) rendered as a plain blockquote instead of an aside:
|
|
45
|
+
${(0, import_unrendered_alerts.formatUnrenderedAlerts)(unrenderedAlerts)}`
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
const internalBrokenLinks = (0, import_link_check.collectBrokenLinks)(pages, createFileSystem({ allFiles, outputDirectory, pages }), options.siteBaseUrl);
|
|
49
|
+
const externalTargets = (0, import_link_check.collectExternalTargets)(pages, options.siteBaseUrl);
|
|
50
|
+
const externalBrokenLinks = await (0, import_link_check.collectBrokenExternalLinks)(externalTargets, fetchUrlStatus, EXTERNAL_LINK_CONCURRENCY);
|
|
51
|
+
const brokenLinks = [...internalBrokenLinks, ...externalBrokenLinks];
|
|
52
|
+
if (brokenLinks.length > 0) {
|
|
53
|
+
throw new Error(`Detected ${String(brokenLinks.length)} broken documentation link(s):
|
|
54
|
+
${(0, import_link_check.formatBrokenLinks)(brokenLinks)}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function createFileSystem(params) {
|
|
58
|
+
const { allFiles, outputDirectory, pages } = params;
|
|
59
|
+
const htmlByRelativePath = new Map(pages.map((page) => [page.relativePath, page.html]));
|
|
60
|
+
const idsCache = /* @__PURE__ */ new Map();
|
|
61
|
+
return {
|
|
62
|
+
readIds: (pageKey) => {
|
|
63
|
+
let ids = idsCache.get(pageKey);
|
|
64
|
+
if (ids === void 0) {
|
|
65
|
+
const html = htmlByRelativePath.get(pageKey);
|
|
66
|
+
ids = html === void 0 ? /* @__PURE__ */ new Set() : (0, import_link_check.extractIds)(html);
|
|
67
|
+
idsCache.set(pageKey, ids);
|
|
68
|
+
}
|
|
69
|
+
return ids;
|
|
70
|
+
},
|
|
71
|
+
resolveExistingPage: (outputRelativePath) => {
|
|
72
|
+
if ((0, import_link_check.resolveWithinRoot)(outputDirectory, outputRelativePath) === null) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
const trimmed = outputRelativePath.replace(/\/$/u, "");
|
|
76
|
+
const candidates = trimmed === "" ? ["index.html"] : [trimmed, `${trimmed}/index.html`];
|
|
77
|
+
return candidates.find((candidate) => allFiles.has(candidate)) ?? null;
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
async function fetchUrlStatus(url) {
|
|
82
|
+
const controller = new AbortController();
|
|
83
|
+
const timeoutId = globalThis.setTimeout(() => {
|
|
84
|
+
controller.abort();
|
|
85
|
+
}, EXTERNAL_LINK_TIMEOUT_IN_MILLISECONDS);
|
|
86
|
+
try {
|
|
87
|
+
const response = await fetch(url, { signal: controller.signal });
|
|
88
|
+
await response.body?.cancel();
|
|
89
|
+
return response.status;
|
|
90
|
+
} catch {
|
|
91
|
+
return import_link_check.NETWORK_FAILURE_STATUS;
|
|
92
|
+
} finally {
|
|
93
|
+
globalThis.clearTimeout(timeoutId);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async function getAllFiles(outputRootPath) {
|
|
97
|
+
const entries = await (0, import_promises.readdir)(outputRootPath, { recursive: true, withFileTypes: true });
|
|
98
|
+
const files = /* @__PURE__ */ new Set();
|
|
99
|
+
for (const entry of entries) {
|
|
100
|
+
if (!entry.isFile()) {
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
const absolutePath = (0, import_node_path.resolve)(entry.parentPath, entry.name).replaceAll("\\", "/");
|
|
104
|
+
files.add(absolutePath.slice(`${outputRootPath}/`.length));
|
|
105
|
+
}
|
|
106
|
+
return files;
|
|
107
|
+
}
|
|
108
|
+
async function readPages(outputRootPath, allFiles) {
|
|
109
|
+
const pages = [];
|
|
110
|
+
for (const relativePath of allFiles) {
|
|
111
|
+
if (!relativePath.endsWith(HTML_FILE_EXTENSION) || relativePath === FALLBACK_PAGE_RELATIVE_PATH) {
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
const html = await (0, import_promises.readFile)((0, import_node_path.resolve)(outputRootPath, relativePath), "utf-8");
|
|
115
|
+
pages.push({ html, relativePath });
|
|
116
|
+
}
|
|
117
|
+
return pages;
|
|
118
|
+
}
|
|
119
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
120
|
+
0 && (module.exports = {
|
|
121
|
+
assertDocsLinksResolve
|
|
122
|
+
});
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2RvY3Mtc2l0ZS9kb2NzLWxpbmtzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVmFsaWRhdGVzIHRoZSBsaW5rcyBlbWl0dGVkIGJ5IGEgYnVpbHQgZG9jdW1lbnRhdGlvbiBzaXRlLlxuICpcbiAqIEludGVybmFsIGxpbmtzIGFyZSByZXNvbHZlZCBvZmZsaW5lIGFnYWluc3QgdGhlIGJ1aWxkIG91dHB1dDsgZXh0ZXJuYWwgbGlua3MgYXJlIHZhbGlkYXRlZCBvdmVyIHRoZSBuZXR3b3JrLFxuICogZGVkdXBsaWNhdGVkIHNvIGVhY2ggdW5pcXVlIFVSTCBpcyBmZXRjaGVkIGF0IG1vc3Qgb25jZS4gU2VlIHtAbGluayAuL2xpbmstY2hlY2sudHN9IGZvciB0aGUgZGVjaXNpb24gbG9naWMuXG4gKlxuICogSXQgYWxzbyBmYWlscyBvbiBhIEdpdEh1YiBhbGVydCB0aGF0IHJlYWNoZWQgYSBwYWdlIGFzIGEgcGxhaW4gYmxvY2txdW90ZSAoc2VlIHtAbGluayAuL3VucmVuZGVyZWQtYWxlcnRzLnRzfSksXG4gKiBzaW5jZSBub3RoaW5nIGVsc2Ugbm90aWNlcyB3aGVuIHRoZSBjb252ZXJzaW9uIHN0b3BzLlxuICovXG5cbmltcG9ydCB7XG4gIHJlYWRkaXIsXG4gIHJlYWRGaWxlXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB0eXBlIHtcbiAgRG9jdW1lbnRhdGlvblBhZ2UsXG4gIExpbmtDaGVja0ZpbGVTeXN0ZW1cbn0gZnJvbSAnLi9saW5rLWNoZWNrLnRzJztcblxuaW1wb3J0IHtcbiAgY29sbGVjdEJyb2tlbkV4dGVybmFsTGlua3MsXG4gIGNvbGxlY3RCcm9rZW5MaW5rcyxcbiAgY29sbGVjdEV4dGVybmFsVGFyZ2V0cyxcbiAgZXh0cmFjdElkcyxcbiAgZm9ybWF0QnJva2VuTGlua3MsXG4gIE5FVFdPUktfRkFJTFVSRV9TVEFUVVMsXG4gIHJlc29sdmVXaXRoaW5Sb290XG59IGZyb20gJy4vbGluay1jaGVjay50cyc7XG5pbXBvcnQge1xuICBjb2xsZWN0VW5yZW5kZXJlZEFsZXJ0cyxcbiAgZm9ybWF0VW5yZW5kZXJlZEFsZXJ0c1xufSBmcm9tICcuL3VucmVuZGVyZWQtYWxlcnRzLnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgYXNzZXJ0RG9jc0xpbmtzUmVzb2x2ZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZXJ0RG9jc0xpbmtzUmVzb2x2ZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYnVpbGQgb3V0cHV0IGZvbGRlciwgbm9ybWFsbHkgYDxkb2NzPi9kaXN0YC5cbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dERpcmVjdG9yeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWJzb2x1dGUgVVJMIHRoZSBzaXRlIGlzIHNlcnZlZCBmcm9tLCB3aXRoIGEgdHJhaWxpbmcgc2xhc2gsIGUuZy4gYGh0dHBzOi8vbW5hb3Vtb3YuZGV2L3R5cGVzY3JpcHQtbGliL2AuXG4gICAqL1xuICByZWFkb25seSBzaXRlQmFzZVVybDogc3RyaW5nO1xufVxuXG5jb25zdCBFWFRFUk5BTF9MSU5LX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTID0gMTBfMDAwO1xuY29uc3QgRVhURVJOQUxfTElOS19DT05DVVJSRU5DWSA9IDIwO1xuY29uc3QgSFRNTF9GSUxFX0VYVEVOU0lPTiA9ICcuaHRtbCc7XG5cbi8vIFRoZSBob3N0IHNlcnZlcyB0aGlzIHBhZ2UgYXMgdGhlIGZhbGxiYWNrIGZvciBhbnkgbWlzc2luZyBwYXRoICh3aXRoIGEgNDA0IHN0YXR1cyksIHNvIGl0IGlzIG5vdCBhXG4vLyByZWFsIG5hdmlnYWJsZSByb3V0ZTogU3RhcmxpZ2h0IGdpdmVzIGl0IGEgc2VsZi1gcmVsPVwiY2Fub25pY2FsXCJgIG9mIGAvNDA0L2AgdGhhdCBpbmhlcmVudGx5IGNhbm5vdFxuLy8gcmVzb2x2ZSwgYW5kIGl0cyBib2R5IGxpbmtzIChuYXYsIGxvZ28pIGFyZSBpZGVudGljYWwgdG8gZXZlcnkgcmVhbCBwYWdlIHdlIGFscmVhZHkgdmFsaWRhdGUuXG5jb25zdCBGQUxMQkFDS19QQUdFX1JFTEFUSVZFX1BBVEggPSAnNDA0Lmh0bWwnO1xuXG5pbnRlcmZhY2UgQ3JlYXRlRmlsZVN5c3RlbVBhcmFtcyB7XG4gIHJlYWRvbmx5IGFsbEZpbGVzOiBTZXQ8c3RyaW5nPjtcbiAgcmVhZG9ubHkgb3V0cHV0RGlyZWN0b3J5OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhZ2VzOiBEb2N1bWVudGF0aW9uUGFnZVtdO1xufVxuXG4vKipcbiAqIENoZWNrcyBldmVyeSBsaW5rIG9mIHRoZSBidWlsdCBzaXRlLCBhbmQgdGhhdCBldmVyeSBHaXRIdWIgYWxlcnQgcmVuZGVyZWQgYXMgYW4gYXNpZGUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucy5cbiAqIEB0aHJvd3MgSWYgYW4gYWxlcnQgcmVuZGVyZWQgYXMgYSBwbGFpbiBibG9ja3F1b3RlLCBvciBhIGxpbmsgZG9lcyBub3QgcmVzb2x2ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzc2VydERvY3NMaW5rc1Jlc29sdmUob3B0aW9uczogQXNzZXJ0RG9jc0xpbmtzUmVzb2x2ZVBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBvdXRwdXREaXJlY3RvcnkgPSByZXNvbHZlKG9wdGlvbnMub3V0cHV0RGlyZWN0b3J5KS5yZXBsYWNlQWxsKCdcXFxcJywgJy8nKTtcbiAgY29uc3QgYWxsRmlsZXMgPSBhd2FpdCBnZXRBbGxGaWxlcyhvdXRwdXREaXJlY3RvcnkpO1xuICBjb25zdCBwYWdlcyA9IGF3YWl0IHJlYWRQYWdlcyhvdXRwdXREaXJlY3RvcnksIGFsbEZpbGVzKTtcblxuICAvLyBPZmZsaW5lIGFuZCBpbnN0YW50LCBzbyBpdCBydW5zIGJlZm9yZSB0aGUgbmV0d29yayBoYWxmIGFuZCBmYWlscyBmaXJzdC5cbiAgY29uc3QgdW5yZW5kZXJlZEFsZXJ0cyA9IGNvbGxlY3RVbnJlbmRlcmVkQWxlcnRzKHBhZ2VzKTtcbiAgaWYgKHVucmVuZGVyZWRBbGVydHMubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBEZXRlY3RlZCAke1N0cmluZyh1bnJlbmRlcmVkQWxlcnRzLmxlbmd0aCl9IEdpdEh1YiBhbGVydChzKSByZW5kZXJlZCBhcyBhIHBsYWluIGJsb2NrcXVvdGUgaW5zdGVhZCBvZiBhbiBhc2lkZTpcXG4ke2Zvcm1hdFVucmVuZGVyZWRBbGVydHModW5yZW5kZXJlZEFsZXJ0cyl9YFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbnRlcm5hbEJyb2tlbkxpbmtzID0gY29sbGVjdEJyb2tlbkxpbmtzKHBhZ2VzLCBjcmVhdGVGaWxlU3lzdGVtKHsgYWxsRmlsZXMsIG91dHB1dERpcmVjdG9yeSwgcGFnZXMgfSksIG9wdGlvbnMuc2l0ZUJhc2VVcmwpO1xuXG4gIGNvbnN0IGV4dGVybmFsVGFyZ2V0cyA9IGNvbGxlY3RFeHRlcm5hbFRhcmdldHMocGFnZXMsIG9wdGlvbnMuc2l0ZUJhc2VVcmwpO1xuICBjb25zdCBleHRlcm5hbEJyb2tlbkxpbmtzID0gYXdhaXQgY29sbGVjdEJyb2tlbkV4dGVybmFsTGlua3MoZXh0ZXJuYWxUYXJnZXRzLCBmZXRjaFVybFN0YXR1cywgRVhURVJOQUxfTElOS19DT05DVVJSRU5DWSk7XG5cbiAgY29uc3QgYnJva2VuTGlua3MgPSBbLi4uaW50ZXJuYWxCcm9rZW5MaW5rcywgLi4uZXh0ZXJuYWxCcm9rZW5MaW5rc107XG4gIGlmIChicm9rZW5MaW5rcy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBEZXRlY3RlZCAke1N0cmluZyhicm9rZW5MaW5rcy5sZW5ndGgpfSBicm9rZW4gZG9jdW1lbnRhdGlvbiBsaW5rKHMpOlxcbiR7Zm9ybWF0QnJva2VuTGlua3MoYnJva2VuTGlua3MpfWApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUZpbGVTeXN0ZW0ocGFyYW1zOiBDcmVhdGVGaWxlU3lzdGVtUGFyYW1zKTogTGlua0NoZWNrRmlsZVN5c3RlbSB7XG4gIGNvbnN0IHsgYWxsRmlsZXMsIG91dHB1dERpcmVjdG9yeSwgcGFnZXMgfSA9IHBhcmFtcztcbiAgY29uc3QgaHRtbEJ5UmVsYXRpdmVQYXRoID0gbmV3IE1hcChwYWdlcy5tYXAoKHBhZ2UpID0+IFtwYWdlLnJlbGF0aXZlUGF0aCwgcGFnZS5odG1sXSkpO1xuICBjb25zdCBpZHNDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4oKTtcblxuICByZXR1cm4ge1xuICAgIHJlYWRJZHM6IChwYWdlS2V5KTogU2V0PHN0cmluZz4gPT4ge1xuICAgICAgbGV0IGlkcyA9IGlkc0NhY2hlLmdldChwYWdlS2V5KTtcbiAgICAgIGlmIChpZHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBodG1sID0gaHRtbEJ5UmVsYXRpdmVQYXRoLmdldChwYWdlS2V5KTtcbiAgICAgICAgaWRzID0gaHRtbCA9PT0gdW5kZWZpbmVkID8gbmV3IFNldDxzdHJpbmc+KCkgOiBleHRyYWN0SWRzKGh0bWwpO1xuICAgICAgICBpZHNDYWNoZS5zZXQocGFnZUtleSwgaWRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGlkcztcbiAgICB9LFxuICAgIHJlc29sdmVFeGlzdGluZ1BhZ2U6IChvdXRwdXRSZWxhdGl2ZVBhdGgpOiBudWxsIHwgc3RyaW5nID0+IHtcbiAgICAgIGlmIChyZXNvbHZlV2l0aGluUm9vdChvdXRwdXREaXJlY3RvcnksIG91dHB1dFJlbGF0aXZlUGF0aCkgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRyaW1tZWQgPSBvdXRwdXRSZWxhdGl2ZVBhdGgucmVwbGFjZSgvXFwvJC91LCAnJyk7XG4gICAgICBjb25zdCBjYW5kaWRhdGVzID0gdHJpbW1lZCA9PT0gJycgPyBbJ2luZGV4Lmh0bWwnXSA6IFt0cmltbWVkLCBgJHt0cmltbWVkfS9pbmRleC5odG1sYF07XG4gICAgICByZXR1cm4gY2FuZGlkYXRlcy5maW5kKChjYW5kaWRhdGUpID0+IGFsbEZpbGVzLmhhcyhjYW5kaWRhdGUpKSA/PyBudWxsO1xuICAgIH1cbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hVcmxTdGF0dXModXJsOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICBjb25zdCB0aW1lb3V0SWQgPSBnbG9iYWxUaGlzLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgfSwgRVhURVJOQUxfTElOS19USU1FT1VUX0lOX01JTExJU0VDT05EUyk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwgeyBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsIH0pO1xuICAgIC8vIENhbmNlbCB0aGUgdW5yZWFkIGJvZHkgc28gdW5kaWNpIHJlbGVhc2VzIHRoZSBjb25uZWN0aW9uIGltbWVkaWF0ZWx5LlxuICAgIC8vIFdpdGhvdXQgdGhpcyB0aGUgcGVyLWhvc3QgY29ubmVjdGlvbiBwb29sIHN0YWxscyBhbmQgc2FtZS1ob3N0IHJlcXVlc3RzXG4gICAgLy8gc2VyaWFsaXplLCB0dXJuaW5nIGEgfjNzIHJ1biBpbnRvIG1pbnV0ZXMuXG4gICAgYXdhaXQgcmVzcG9uc2UuYm9keT8uY2FuY2VsKCk7XG4gICAgcmV0dXJuIHJlc3BvbnNlLnN0YXR1cztcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIE5FVFdPUktfRkFJTFVSRV9TVEFUVVM7XG4gIH0gZmluYWxseSB7XG4gICAgZ2xvYmFsVGhpcy5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxGaWxlcyhvdXRwdXRSb290UGF0aDogc3RyaW5nKTogUHJvbWlzZTxTZXQ8c3RyaW5nPj4ge1xuICBjb25zdCBlbnRyaWVzID0gYXdhaXQgcmVhZGRpcihvdXRwdXRSb290UGF0aCwgeyByZWN1cnNpdmU6IHRydWUsIHdpdGhGaWxlVHlwZXM6IHRydWUgfSk7XG4gIGNvbnN0IGZpbGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmICghZW50cnkuaXNGaWxlKCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGFic29sdXRlUGF0aCA9IHJlc29sdmUoZW50cnkucGFyZW50UGF0aCwgZW50cnkubmFtZSkucmVwbGFjZUFsbCgnXFxcXCcsICcvJyk7XG4gICAgZmlsZXMuYWRkKGFic29sdXRlUGF0aC5zbGljZShgJHtvdXRwdXRSb290UGF0aH0vYC5sZW5ndGgpKTtcbiAgfVxuXG4gIHJldHVybiBmaWxlcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZFBhZ2VzKG91dHB1dFJvb3RQYXRoOiBzdHJpbmcsIGFsbEZpbGVzOiBTZXQ8c3RyaW5nPik6IFByb21pc2U8RG9jdW1lbnRhdGlvblBhZ2VbXT4ge1xuICBjb25zdCBwYWdlczogRG9jdW1lbnRhdGlvblBhZ2VbXSA9IFtdO1xuICBmb3IgKGNvbnN0IHJlbGF0aXZlUGF0aCBvZiBhbGxGaWxlcykge1xuICAgIGlmICghcmVsYXRpdmVQYXRoLmVuZHNXaXRoKEhUTUxfRklMRV9FWFRFTlNJT04pIHx8IHJlbGF0aXZlUGF0aCA9PT0gRkFMTEJBQ0tfUEFHRV9SRUxBVElWRV9QQVRIKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBodG1sID0gYXdhaXQgcmVhZEZpbGUocmVzb2x2ZShvdXRwdXRSb290UGF0aCwgcmVsYXRpdmVQYXRoKSwgJ3V0Zi04Jyk7XG4gICAgcGFnZXMucHVzaCh7IGh0bWwsIHJlbGF0aXZlUGF0aCB9KTtcbiAgfVxuXG4gIHJldHVybiBw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
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.cts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* Validates the links emitted by a built documentation site.
|
|
6
|
+
*
|
|
7
|
+
* Internal links are resolved offline against the build output; external links are validated over the network,
|
|
8
|
+
* deduplicated so each unique URL is fetched at most once. See {@link ./link-check.ts} for the decision logic.
|
|
9
|
+
*
|
|
10
|
+
* It also fails on a GitHub alert that reached a page as a plain blockquote (see {@link ./unrendered-alerts.ts}),
|
|
11
|
+
* since nothing else notices when the conversion stops.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Options for {@link assertDocsLinksResolve}.
|
|
15
|
+
*/
|
|
16
|
+
export interface AssertDocsLinksResolveParams {
|
|
17
|
+
/**
|
|
18
|
+
* The build output folder, normally `<docs>/dist`.
|
|
19
|
+
*/
|
|
20
|
+
readonly outputDirectory: string;
|
|
21
|
+
/**
|
|
22
|
+
* The absolute URL the site is served from, with a trailing slash, e.g. `https://mnaoumov.dev/typescript-lib/`.
|
|
23
|
+
*/
|
|
24
|
+
readonly siteBaseUrl: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Checks every link of the built site, and that every GitHub alert rendered as an aside.
|
|
28
|
+
*
|
|
29
|
+
* @param options - The options.
|
|
30
|
+
* @throws If an alert rendered as a plain blockquote, or a link does not resolve.
|
|
31
|
+
*/
|
|
32
|
+
export declare function assertDocsLinksResolve(options: AssertDocsLinksResolveParams): Promise<void>;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
9
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
10
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
|
+
var __export = (target, all) => {
|
|
12
|
+
for (var name in all)
|
|
13
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
14
|
+
};
|
|
15
|
+
var __copyProps = (to, from, except, desc) => {
|
|
16
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
17
|
+
for (let key of __getOwnPropNames(from))
|
|
18
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
19
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
20
|
+
}
|
|
21
|
+
return to;
|
|
22
|
+
};
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var docs_site_assets_exports = {};
|
|
25
|
+
__export(docs_site_assets_exports, {
|
|
26
|
+
API_COMPONENTS_IMPORT_PREFIX: () => API_COMPONENTS_IMPORT_PREFIX,
|
|
27
|
+
getDocsSiteAssetsDirectory: () => getDocsSiteAssetsDirectory
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(docs_site_assets_exports);
|
|
30
|
+
var import_node_fs = require('node:fs');
|
|
31
|
+
var import_node_path = require('node:path');
|
|
32
|
+
var import_node_url = require('node:url');
|
|
33
|
+
var __import_meta_url = globalThis["import.meta.url"] ?? (function getCjsImportMetaUrl() {
|
|
34
|
+
if (typeof __filename === "string") {
|
|
35
|
+
const localRequire = require;
|
|
36
|
+
const url = localRequire("node:url");
|
|
37
|
+
if (typeof url.pathToFileURL === "function") {
|
|
38
|
+
return url.pathToFileURL(__filename).href;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return globalThis.location?.href ?? "";
|
|
42
|
+
})();
|
|
43
|
+
const ASSETS_RELATIVE_PATH = (0, import_node_path.join)("assets", "docs-site");
|
|
44
|
+
const API_COMPONENTS_IMPORT_PREFIX = "@mnaoumov/typescript-dev-toolkit/docs-site-components";
|
|
45
|
+
function getDocsSiteAssetsDirectory(moduleUrl = __import_meta_url) {
|
|
46
|
+
let directory = (0, import_node_path.dirname)((0, import_node_url.fileURLToPath)(moduleUrl));
|
|
47
|
+
for (; ; ) {
|
|
48
|
+
const candidate = (0, import_node_path.join)(directory, ASSETS_RELATIVE_PATH);
|
|
49
|
+
if ((0, import_node_fs.existsSync)(candidate)) {
|
|
50
|
+
return candidate;
|
|
51
|
+
}
|
|
52
|
+
const parent = (0, import_node_path.dirname)(directory);
|
|
53
|
+
if (parent === directory) {
|
|
54
|
+
throw new Error(`No ${ASSETS_RELATIVE_PATH} folder above ${(0, import_node_url.fileURLToPath)(moduleUrl)}.`);
|
|
55
|
+
}
|
|
56
|
+
directory = parent;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
60
|
+
0 && (module.exports = {
|
|
61
|
+
API_COMPONENTS_IMPORT_PREFIX,
|
|
62
|
+
getDocsSiteAssetsDirectory
|
|
63
|
+
});
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2RvY3Mtc2l0ZS9kb2NzLXNpdGUtYXNzZXRzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19pbXBvcnRfbWV0YV91cmwgPSBnbG9iYWxUaGlzWydpbXBvcnQubWV0YS51cmwnXSA/PyAoZnVuY3Rpb24gZ2V0Q2pzSW1wb3J0TWV0YVVybCgpIHtcbiAgaWYgKHR5cGVvZiBfX2ZpbGVuYW1lID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGxvY2FsUmVxdWlyZSA9IHJlcXVpcmU7XG4gICAgY29uc3QgdXJsID0gbG9jYWxSZXF1aXJlKCdub2RlOnVybCcpO1xuICAgIGlmICh0eXBlb2YgdXJsLnBhdGhUb0ZpbGVVUkwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB1cmwucGF0aFRvRmlsZVVSTChfX2ZpbGVuYW1lKS5ocmVmO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZhbGxiYWNrIHRvIHRoZSBwYWdlIFVSTCwgb3IgYW4gZW1wdHkgc3RyaW5nIGlmIHRoZSBlbnZpcm9ubWVudCBpcyB1bmtub3duLlxuICByZXR1cm4gZ2xvYmFsVGhpcy5sb2NhdGlvbj8uaHJlZiA/PyAnJztcbn0pKCk7XG4vKipcbiAqIEBmaWxlXG4gKlxuICogTG9jYXRlcyB0aGUgZmlsZXMgZXZlcnkgZG9jdW1lbnRhdGlvbiBzaXRlIHNoYXJlcyBcdTIwMTQgdGhlIEFQSSBwYWdlIGNvbXBvbmVudHMsIHRoZSBzaXRlIHRpdGxlLCB0aGUgc3R5bGVzaGVldCBhbmRcbiAqIHRoZSBPcGVuIEdyYXBoIGZvbnRzIFx1MjAxNCB3aGljaCB0aGlzIHBhY2thZ2Ugc2hpcHMgdW5kZXIgYGFzc2V0cy9kb2NzLXNpdGVgIHJhdGhlciB0aGFuIGNvbXBpbGluZy5cbiAqL1xuXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge1xuICBkaXJuYW1lLFxuICBqb2luXG59IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSAnbm9kZTp1cmwnO1xuXG5jb25zdCBBU1NFVFNfUkVMQVRJVkVfUEFUSCA9IGpvaW4oJ2Fzc2V0cycsICdkb2NzLXNpdGUnKTtcblxuLyoqXG4gKiBUaGUgc3BlY2lmaWVyIGdlbmVyYXRlZCBBUEkgcGFnZXMgaW1wb3J0IHRoZWlyIGNvbXBvbmVudHMgdGhyb3VnaC4ge0BsaW5rIGdldERvY3NTaXRlQXNzZXRzRGlyZWN0b3J5fSdzIGBjb21wb25lbnRzYFxuICogZm9sZGVyIGlzIGFsaWFzZWQgdG8gaXQsIHNvIGV2ZXJ5IHNpdGUgcmVuZGVycyBpdHMgQVBJIHBhZ2VzIHdpdGggdGhlIHNhbWUgY29tcG9uZW50cy5cbiAqL1xuZXhwb3J0IGNvbnN0IEFQSV9DT01QT05FTlRTX0lNUE9SVF9QUkVGSVggPSAnQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvZG9jcy1zaXRlLWNvbXBvbmVudHMnO1xuXG4vKipcbiAqIEdldHMgdGhlIGZvbGRlciBob2xkaW5nIHRoZSBzaGFyZWQgc2l0ZSBmaWxlcy5cbiAqXG4gKiBUaGUgbW9kdWxlIHJ1bnMgZnJvbSBgc3JjL2RvY3Mtc2l0ZWAgaW4gdGhpcyByZXBvc2l0b3J5IGFuZCBmcm9tIGBkaXN0L2xpYi88Zm9ybWF0Pi9kb2NzLXNpdGVgIG9uY2UgaW5zdGFsbGVkLCBzb1xuICogdGhlIGZvbGRlciBpcyBmb3VuZCBieSB3YWxraW5nIHVwIHRvIHRoZSBwYWNrYWdlIHJvb3QgdGhhdCBob2xkcyBpdCByYXRoZXIgdGhhbiBieSBhIGZpeGVkIHJlbGF0aXZlIHBhdGguXG4gKlxuICogQHBhcmFtIG1vZHVsZVVybCAtIFRoZSBVUkwgb2YgYSBtb2R1bGUgb2YgdGhpcyBwYWNrYWdlIHRvIHN0YXJ0IGZyb20uXG4gKiBAcmV0dXJucyBUaGUgZm9sZGVyJ3MgYWJzb2x1dGUgcGF0aC5cbiAqIEB0aHJvd3MgSWYgbm8gZm9sZGVyIGFib3ZlIHRoZSBtb2R1bGUgaG9sZHMgdGhlIGFzc2V0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERvY3NTaXRlQXNzZXRzRGlyZWN0b3J5KG1vZHVsZVVybDogc3RyaW5nID0gaW1wb3J0Lm1ldGEudXJsKTogc3RyaW5nIHtcbiAgbGV0IGRpcmVjdG9yeSA9IGRpcm5hbWUoZmlsZVVSTFRvUGF0aChtb2R1bGVVcmwpKTtcbiAgZm9yICg7Oykge1xuICAgIGNvbnN0IGNhbmRpZGF0ZSA9IGpvaW4oZGlyZWN0b3J5LCBBU1NFVFNfUkVMQVRJVkVfUEFUSCk7XG4gICAgaWYgKGV4aXN0c1N5bmMoY2FuZGlkYXRlKSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnQgPSBkaXJuYW1lKGRpcmVjdG9yeSk7XG4gICAgaWYgKHBhcmVudCA9PT0gZGlyZWN0b3J5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vICR7QVNTRVRTX1JFTEFUSVZFX1BBVEh9IGZvbGRlciBhYm92ZSAke2ZpbGVVUkxUb1BhdGgobW9kdWxlVXJsKX0uYCk7XG4gICAgfVxuXG4gICAgZGlyZWN0b3J5ID0gcGFyZW50O1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW1CQSxxQkFBMkI7QUFDM0IsdUJBR087QUFDUCxzQkFBOEI7QUF4QjlCLElBQUksb0JBQW9CLFdBQVcsaUJBQWlCLE1BQU0sU0FBUyxzQkFBc0I7QUFDdkYsTUFBSSxPQUFPLGVBQWUsVUFBVTtBQUNsQyxVQUFNLGVBQWU7QUFDckIsVUFBTSxNQUFNLGFBQWEsVUFBVTtBQUNuQyxRQUFJLE9BQU8sSUFBSSxrQkFBa0IsWUFBWTtBQUMzQyxhQUFPLElBQUksY0FBYyxVQUFVLEVBQUU7QUFBQSxJQUN2QztBQUFBLEVBQ0Y7QUFHQSxTQUFPLFdBQVcsVUFBVSxRQUFRO0FBQ3RDLEdBQUc7QUFlSCxNQUFNLDJCQUF1Qix1QkFBSyxVQUFVLFdBQVc7QUFNaEQsTUFBTSwrQkFBK0I7QUFZckMsU0FBUywyQkFBMkIsWUFBb0IsbUJBQXlCO0FBQ3RGLE1BQUksZ0JBQVksOEJBQVEsK0JBQWMsU0FBUyxDQUFDO0FBQ2hELGFBQVM7QUFDUCxVQUFNLGdCQUFZLHVCQUFLLFdBQVcsb0JBQW9CO0FBQ3RELFlBQUksMkJBQVcsU0FBUyxHQUFHO0FBQ3pCLGFBQU87QUFBQSxJQUNUO0FBRUEsVUFBTSxhQUFTLDBCQUFRLFNBQVM7QUFDaEMsUUFBSSxXQUFXLFdBQVc7QUFDeEIsWUFBTSxJQUFJLE1BQU0sTUFBTSxvQkFBb0IscUJBQWlCLCtCQUFjLFNBQVMsQ0FBQyxHQUFHO0FBQUEsSUFDeEY7QUFFQSxnQkFBWTtBQUFBLEVBQ2Q7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.cts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* Locates the files every documentation site shares — the API page components, the site title, the stylesheet and
|
|
6
|
+
* the Open Graph fonts — which this package ships under `assets/docs-site` rather than compiling.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* The specifier generated API pages import their components through. {@link getDocsSiteAssetsDirectory}'s `components`
|
|
10
|
+
* folder is aliased to it, so every site renders its API pages with the same components.
|
|
11
|
+
*/
|
|
12
|
+
export declare const API_COMPONENTS_IMPORT_PREFIX = "@mnaoumov/typescript-dev-toolkit/docs-site-components";
|
|
13
|
+
/**
|
|
14
|
+
* Gets the folder holding the shared site files.
|
|
15
|
+
*
|
|
16
|
+
* The module runs from `src/docs-site` in this repository and from `dist/lib/<format>/docs-site` once installed, so
|
|
17
|
+
* the folder is found by walking up to the package root that holds it rather than by a fixed relative path.
|
|
18
|
+
*
|
|
19
|
+
* @param moduleUrl - The URL of a module of this package to start from.
|
|
20
|
+
* @returns The folder's absolute path.
|
|
21
|
+
* @throws If no folder above the module holds the assets.
|
|
22
|
+
*/
|
|
23
|
+
export declare function getDocsSiteAssetsDirectory(moduleUrl?: string): string;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
9
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
10
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
|
+
var __export = (target, all) => {
|
|
12
|
+
for (var name in all)
|
|
13
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
14
|
+
};
|
|
15
|
+
var __copyProps = (to, from, except, desc) => {
|
|
16
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
17
|
+
for (let key of __getOwnPropNames(from))
|
|
18
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
19
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
20
|
+
}
|
|
21
|
+
return to;
|
|
22
|
+
};
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var docs_site_commands_exports = {};
|
|
25
|
+
__export(docs_site_commands_exports, {
|
|
26
|
+
buildDocsSite: () => buildDocsSite,
|
|
27
|
+
devDocsSite: () => devDocsSite,
|
|
28
|
+
previewDocsSite: () => previewDocsSite
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(docs_site_commands_exports);
|
|
31
|
+
var import_node_path = require('node:path');
|
|
32
|
+
var import_root = require('../root.cjs');
|
|
33
|
+
var import_api_docs = require('./api-docs.cjs');
|
|
34
|
+
var import_docs_links = require('./docs-links.cjs');
|
|
35
|
+
var import_docs_site_assets = require('./docs-site-assets.cjs');
|
|
36
|
+
var import_docs_site_config = require('./docs-site-config.cjs');
|
|
37
|
+
var import_og_images = require('./og-images.cjs');
|
|
38
|
+
async function buildDocsSite(config) {
|
|
39
|
+
const resolved = (0, import_docs_site_config.resolveDocsSiteConfig)(config);
|
|
40
|
+
await (0, import_api_docs.generateApiDocs)({ rootDirectory: resolved.rootDirectory, settings: resolved.apiDocSettings, sourceDirectory: resolved.sourceDirectory });
|
|
41
|
+
await (0, import_og_images.generateOgImages)({
|
|
42
|
+
brandText: resolved.packageName,
|
|
43
|
+
contentDocsDirectory: resolved.contentDocsDirectory,
|
|
44
|
+
faviconPath: resolved.faviconPath,
|
|
45
|
+
fontsDirectory: (0, import_node_path.join)((0, import_docs_site_assets.getDocsSiteAssetsDirectory)(), "fonts"),
|
|
46
|
+
outputDirectory: resolved.ogOutputDirectory
|
|
47
|
+
});
|
|
48
|
+
await (0, import_root.execFromRoot)(["astro", "build"], { cwd: resolved.rootDirectory });
|
|
49
|
+
await (0, import_docs_links.assertDocsLinksResolve)({ outputDirectory: resolved.distDirectory, siteBaseUrl: resolved.siteBaseUrl });
|
|
50
|
+
}
|
|
51
|
+
async function devDocsSite(config) {
|
|
52
|
+
const resolved = (0, import_docs_site_config.resolveDocsSiteConfig)(config);
|
|
53
|
+
await (0, import_api_docs.generateApiDocs)({ rootDirectory: resolved.rootDirectory, settings: resolved.apiDocSettings, sourceDirectory: resolved.sourceDirectory });
|
|
54
|
+
await (0, import_root.execFromRoot)(["astro", "dev"], {
|
|
55
|
+
cwd: resolved.rootDirectory,
|
|
56
|
+
env: {
|
|
57
|
+
ASTRO_DEV_BACKGROUND: "1"
|
|
58
|
+
},
|
|
59
|
+
isInteractive: true
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async function previewDocsSite(config) {
|
|
63
|
+
const resolved = (0, import_docs_site_config.resolveDocsSiteConfig)(config);
|
|
64
|
+
await (0, import_root.execFromRoot)(["astro", "preview"], { cwd: resolved.rootDirectory, isInteractive: true });
|
|
65
|
+
}
|
|
66
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
67
|
+
0 && (module.exports = {
|
|
68
|
+
buildDocsSite,
|
|
69
|
+
devDocsSite,
|
|
70
|
+
previewDocsSite
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2RvY3Mtc2l0ZS9kb2NzLXNpdGUtY29tbWFuZHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGUgYGRvY3M6YnVpbGRgLCBgZG9jczpkZXZgIGFuZCBgZG9jczpwcmV2aWV3YCBjb21tYW5kcyBvZiBhIGRvY3VtZW50YXRpb24gc2l0ZS5cbiAqXG4gKiBFYWNoIHRha2VzIHRoZSBzYW1lIHtAbGluayBEb2NzU2l0ZUNvbmZpZ30gdGhlIHNpdGUncyBgYXN0cm8uY29uZmlnLnRzYCBwYXNzZXMgdG8gYGRlZmluZURvY3NTaXRlQ29uZmlnYCwgc28gYVxuICogcmVwb3NpdG9yeSBkZXNjcmliZXMgaXRzIHNpdGUgb25jZSwgaW4gYSBtb2R1bGUgYm90aCBpbXBvcnQuXG4gKi9cblxuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB0eXBlIHsgRG9jc1NpdGVDb25maWcgfSBmcm9tICcuL2RvY3Mtc2l0ZS1jb25maWcudHMnO1xuXG5pbXBvcnQgeyBleGVjRnJvbVJvb3QgfSBmcm9tICcuLi9yb290LnRzJztcbmltcG9ydCB7IGdlbmVyYXRlQXBpRG9jcyB9IGZyb20gJy4vYXBpLWRvY3MudHMnO1xuaW1wb3J0IHsgYXNzZXJ0RG9jc0xpbmtzUmVzb2x2ZSB9IGZyb20gJy4vZG9jcy1saW5rcy50cyc7XG5pbXBvcnQgeyBnZXREb2NzU2l0ZUFzc2V0c0RpcmVjdG9yeSB9IGZyb20gJy4vZG9jcy1zaXRlLWFzc2V0cy50cyc7XG5pbXBvcnQgeyByZXNvbHZlRG9jc1NpdGVDb25maWcgfSBmcm9tICcuL2RvY3Mtc2l0ZS1jb25maWcudHMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVPZ0ltYWdlcyB9IGZyb20gJy4vb2ctaW1hZ2VzLnRzJztcblxuLyoqXG4gKiBCdWlsZHMgdGhlIHNpdGU6IGdlbmVyYXRlcyB0aGUgQVBJIHJlZmVyZW5jZSBhbmQgdGhlIE9wZW4gR3JhcGggY2FyZHMsIHJ1bnMgYGFzdHJvIGJ1aWxkYCwgdGhlbiBjaGVja3MgZXZlcnkgbGlua1xuICogb2YgdGhlIG91dHB1dC5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gVGhlIHNpdGUncyBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGREb2NzU2l0ZShjb25maWc6IERvY3NTaXRlQ29uZmlnKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZURvY3NTaXRlQ29uZmlnKGNvbmZpZyk7XG4gIGF3YWl0IGdlbmVyYXRlQXBpRG9jcyh7IHJvb3REaXJlY3Rvcnk6IHJlc29sdmVkLnJvb3REaXJlY3RvcnksIHNldHRpbmdzOiByZXNvbHZlZC5hcGlEb2NTZXR0aW5ncywgc291cmNlRGlyZWN0b3J5OiByZXNvbHZlZC5zb3VyY2VEaXJlY3RvcnkgfSk7XG4gIGF3YWl0IGdlbmVyYXRlT2dJbWFnZXMoe1xuICAgIGJyYW5kVGV4dDogcmVzb2x2ZWQucGFja2FnZU5hbWUsXG4gICAgY29udGVudERvY3NEaXJlY3Rvcnk6IHJlc29sdmVkLmNvbnRlbnREb2NzRGlyZWN0b3J5LFxuICAgIGZhdmljb25QYXRoOiByZXNvbHZlZC5mYXZpY29uUGF0aCxcbiAgICBmb250c0RpcmVjdG9yeTogam9pbihnZXREb2NzU2l0ZUFzc2V0c0RpcmVjdG9yeSgpLCAnZm9udHMnKSxcbiAgICBvdXRwdXREaXJlY3Rvcnk6IHJlc29sdmVkLm9nT3V0cHV0RGlyZWN0b3J5XG4gIH0pO1xuICBhd2FpdCBleGVjRnJvbVJvb3QoWydhc3RybycsICdidWlsZCddLCB7IGN3ZDogcmVzb2x2ZWQucm9vdERpcmVjdG9yeSB9KTtcbiAgYXdhaXQgYXNzZXJ0RG9jc0xpbmtzUmVzb2x2ZSh7IG91dHB1dERpcmVjdG9yeTogcmVzb2x2ZWQuZGlzdERpcmVjdG9yeSwgc2l0ZUJhc2VVcmw6IHJlc29sdmVkLnNpdGVCYXNlVXJsIH0pO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgQVBJIHJlZmVyZW5jZSwgdGhlbiBzZXJ2ZXMgdGhlIHNpdGUgd2l0aCBgYXN0cm8gZGV2YCB1bnRpbCBpdCBpcyBzdG9wcGVkLlxuICpcbiAqIEBwYXJhbSBjb25maWcgLSBUaGUgc2l0ZSdzIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXZEb2NzU2l0ZShjb25maWc6IERvY3NTaXRlQ29uZmlnKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZURvY3NTaXRlQ29uZmlnKGNvbmZpZyk7XG4gIGF3YWl0IGdlbmVyYXRlQXBpRG9jcyh7IHJvb3REaXJlY3Rvcnk6IHJlc29sdmVkLnJvb3REaXJlY3RvcnksIHNldHRpbmdzOiByZXNvbHZlZC5hcGlEb2NTZXR0aW5ncywgc291cmNlRGlyZWN0b3J5OiByZXNvbHZlZC5zb3VyY2VEaXJlY3RvcnkgfSk7XG4gIC8vIGBBU1RST19ERVZfQkFDS0dST1VORGAgZm9yY2VzIEFzdHJvJ3MgZm9yZWdyb3VuZCBkZXYgc2VydmVyLiBBc3RybyBvdGhlcndpc2Ugc3dpdGNoZXMgdG8gYSBiYWNrZ3JvdW5kIGxhdW5jaGVyXG4gIC8vIChoYXJkY29kZWQgMzBzIHN0YXJ0dXAgdGltZW91dCkgdW5kZXIgYW4gYWdlbnQgLyBub24taW50ZXJhY3RpdmUgZW52aXJvbm1lbnQuXG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbJ2FzdHJvJywgJ2RldiddLCB7XG4gICAgY3dkOiByZXNvbHZlZC5yb290RGlyZWN0b3J5LFxuICAgIGVudjoge1xuICAgICAgQVNUUk9fREVWX0JBQ0tHUk9VTkQ6ICcxJ1xuICAgIH0sXG4gICAgaXNJbnRlcmFjdGl2ZTogdHJ1ZVxuICB9KTtcbn1cblxuLyoqXG4gKiBTZXJ2ZXMgdGhlIGxhc3QgYnVpbGQgd2l0aCBgYXN0cm8gcHJldmlld2AgdW50aWwgaXQgaXMgc3RvcHBlZC5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gVGhlIHNpdGUncyBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJldmlld0RvY3NTaXRlKGNvbmZpZzogRG9jc1NpdGVDb25maWcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlRG9jc1NpdGVDb25maWcoY29uZmlnKTtcbiAgYXdhaXQgZXhlY0Zyb21Sb290KFsnYXN0cm8nLCAncHJldmlldyddLCB7IGN3ZDogcmVzb2x2ZWQucm9vdERpcmVjdG9yeSwgaXNJbnRlcmFjdGl2ZTogdHJ1ZSB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFTQSx1QkFBcUI7QUFJckIsa0JBQTZCO0FBQzdCLHNCQUFnQztBQUNoQyx3QkFBdUM7QUFDdkMsOEJBQTJDO0FBQzNDLDhCQUFzQztBQUN0Qyx1QkFBaUM7QUFRakMsZUFBc0IsY0FBYyxRQUF1QztBQUN6RSxRQUFNLGVBQVcsK0NBQXNCLE1BQU07QUFDN0MsWUFBTSxpQ0FBZ0IsRUFBRSxlQUFlLFNBQVMsZUFBZSxVQUFVLFNBQVMsZ0JBQWdCLGlCQUFpQixTQUFTLGdCQUFnQixDQUFDO0FBQzdJLFlBQU0sbUNBQWlCO0FBQUEsSUFDckIsV0FBVyxTQUFTO0FBQUEsSUFDcEIsc0JBQXNCLFNBQVM7QUFBQSxJQUMvQixhQUFhLFNBQVM7QUFBQSxJQUN0QixvQkFBZ0IsMkJBQUssb0RBQTJCLEdBQUcsT0FBTztBQUFBLElBQzFELGlCQUFpQixTQUFTO0FBQUEsRUFDNUIsQ0FBQztBQUNELFlBQU0sMEJBQWEsQ0FBQyxTQUFTLE9BQU8sR0FBRyxFQUFFLEtBQUssU0FBUyxjQUFjLENBQUM7QUFDdEUsWUFBTSwwQ0FBdUIsRUFBRSxpQkFBaUIsU0FBUyxlQUFlLGFBQWEsU0FBUyxZQUFZLENBQUM7QUFDN0c7QUFPQSxlQUFzQixZQUFZLFFBQXVDO0FBQ3ZFLFFBQU0sZUFBVywrQ0FBc0IsTUFBTTtBQUM3QyxZQUFNLGlDQUFnQixFQUFFLGVBQWUsU0FBUyxlQUFlLFVBQVUsU0FBUyxnQkFBZ0IsaUJBQWlCLFNBQVMsZ0JBQWdCLENBQUM7QUFHN0ksWUFBTSwwQkFBYSxDQUFDLFNBQVMsS0FBSyxHQUFHO0FBQUEsSUFDbkMsS0FBSyxTQUFTO0FBQUEsSUFDZCxLQUFLO0FBQUEsTUFDSCxzQkFBc0I7QUFBQSxJQUN4QjtBQUFBLElBQ0EsZUFBZTtBQUFBLEVBQ2pCLENBQUM7QUFDSDtBQU9BLGVBQXNCLGdCQUFnQixRQUF1QztBQUMzRSxRQUFNLGVBQVcsK0NBQXNCLE1BQU07QUFDN0MsWUFBTSwwQkFBYSxDQUFDLFNBQVMsU0FBUyxHQUFHLEVBQUUsS0FBSyxTQUFTLGVBQWUsZUFBZSxLQUFLLENBQUM7QUFDL0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.cts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* The `docs:build`, `docs:dev` and `docs:preview` commands of a documentation site.
|
|
6
|
+
*
|
|
7
|
+
* Each takes the same {@link DocsSiteConfig} the site's `astro.config.ts` passes to `defineDocsSiteConfig`, so a
|
|
8
|
+
* repository describes its site once, in a module both import.
|
|
9
|
+
*/
|
|
10
|
+
import type { DocsSiteConfig } from './docs-site-config.cjs';
|
|
11
|
+
/**
|
|
12
|
+
* Builds the site: generates the API reference and the Open Graph cards, runs `astro build`, then checks every link
|
|
13
|
+
* of the output.
|
|
14
|
+
*
|
|
15
|
+
* @param config - The site's configuration.
|
|
16
|
+
*/
|
|
17
|
+
export declare function buildDocsSite(config: DocsSiteConfig): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Generates the API reference, then serves the site with `astro dev` until it is stopped.
|
|
20
|
+
*
|
|
21
|
+
* @param config - The site's configuration.
|
|
22
|
+
*/
|
|
23
|
+
export declare function devDocsSite(config: DocsSiteConfig): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Serves the last build with `astro preview` until it is stopped.
|
|
26
|
+
*
|
|
27
|
+
* @param config - The site's configuration.
|
|
28
|
+
*/
|
|
29
|
+
export declare function previewDocsSite(config: DocsSiteConfig): Promise<void>;
|