@doxbrix/doxloop 0.1.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.
Files changed (152) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/LICENSE +93 -0
  3. package/README.md +576 -0
  4. package/SECURITY.md +15 -0
  5. package/assets/brand/README.md +8 -0
  6. package/assets/brand/doxloop-favicon.png +0 -0
  7. package/assets/brand/doxloop-logo-dark.png +0 -0
  8. package/assets/brand/doxloop-logo-light.png +0 -0
  9. package/assets/doxbrix-preview.css +6672 -0
  10. package/dist/agents.d.ts +26 -0
  11. package/dist/agents.d.ts.map +1 -0
  12. package/dist/agents.js +258 -0
  13. package/dist/agents.js.map +1 -0
  14. package/dist/args.d.ts +8 -0
  15. package/dist/args.d.ts.map +1 -0
  16. package/dist/args.js +95 -0
  17. package/dist/args.js.map +1 -0
  18. package/dist/artifact-deploy.d.ts +8 -0
  19. package/dist/artifact-deploy.d.ts.map +1 -0
  20. package/dist/artifact-deploy.js +240 -0
  21. package/dist/artifact-deploy.js.map +1 -0
  22. package/dist/auth.d.ts +17 -0
  23. package/dist/auth.d.ts.map +1 -0
  24. package/dist/auth.js +245 -0
  25. package/dist/auth.js.map +1 -0
  26. package/dist/author.d.ts +30 -0
  27. package/dist/author.d.ts.map +1 -0
  28. package/dist/author.js +195 -0
  29. package/dist/author.js.map +1 -0
  30. package/dist/capture.d.ts +10 -0
  31. package/dist/capture.d.ts.map +1 -0
  32. package/dist/capture.js +299 -0
  33. package/dist/capture.js.map +1 -0
  34. package/dist/cli.d.ts +3 -0
  35. package/dist/cli.d.ts.map +1 -0
  36. package/dist/cli.js +558 -0
  37. package/dist/cli.js.map +1 -0
  38. package/dist/deploy.d.ts +22 -0
  39. package/dist/deploy.d.ts.map +1 -0
  40. package/dist/deploy.js +136 -0
  41. package/dist/deploy.js.map +1 -0
  42. package/dist/doctor.d.ts +18 -0
  43. package/dist/doctor.d.ts.map +1 -0
  44. package/dist/doctor.js +222 -0
  45. package/dist/doctor.js.map +1 -0
  46. package/dist/doxbrix-markdown.d.ts +20 -0
  47. package/dist/doxbrix-markdown.d.ts.map +1 -0
  48. package/dist/doxbrix-markdown.js +873 -0
  49. package/dist/doxbrix-markdown.js.map +1 -0
  50. package/dist/errors.d.ts +8 -0
  51. package/dist/errors.d.ts.map +1 -0
  52. package/dist/errors.js +15 -0
  53. package/dist/errors.js.map +1 -0
  54. package/dist/fs.d.ts +6 -0
  55. package/dist/fs.d.ts.map +1 -0
  56. package/dist/fs.js +77 -0
  57. package/dist/fs.js.map +1 -0
  58. package/dist/generator-api.d.ts +69 -0
  59. package/dist/generator-api.d.ts.map +1 -0
  60. package/dist/generator-api.js +6 -0
  61. package/dist/generator-api.js.map +1 -0
  62. package/dist/generator-manager.d.ts +13 -0
  63. package/dist/generator-manager.d.ts.map +1 -0
  64. package/dist/generator-manager.js +155 -0
  65. package/dist/generator-manager.js.map +1 -0
  66. package/dist/generator-runtime.d.ts +24 -0
  67. package/dist/generator-runtime.d.ts.map +1 -0
  68. package/dist/generator-runtime.js +265 -0
  69. package/dist/generator-runtime.js.map +1 -0
  70. package/dist/generators.d.ts +21 -0
  71. package/dist/generators.d.ts.map +1 -0
  72. package/dist/generators.js +202 -0
  73. package/dist/generators.js.map +1 -0
  74. package/dist/preview.d.ts +21 -0
  75. package/dist/preview.d.ts.map +1 -0
  76. package/dist/preview.js +691 -0
  77. package/dist/preview.js.map +1 -0
  78. package/dist/progress.d.ts +19 -0
  79. package/dist/progress.d.ts.map +1 -0
  80. package/dist/progress.js +70 -0
  81. package/dist/progress.js.map +1 -0
  82. package/dist/project.d.ts +37 -0
  83. package/dist/project.d.ts.map +1 -0
  84. package/dist/project.js +499 -0
  85. package/dist/project.js.map +1 -0
  86. package/dist/sync.d.ts +7 -0
  87. package/dist/sync.d.ts.map +1 -0
  88. package/dist/sync.js +221 -0
  89. package/dist/sync.js.map +1 -0
  90. package/dist/types.d.ts +141 -0
  91. package/dist/types.d.ts.map +1 -0
  92. package/dist/types.js +2 -0
  93. package/dist/types.js.map +1 -0
  94. package/dist/validation.d.ts +4 -0
  95. package/dist/validation.d.ts.map +1 -0
  96. package/dist/validation.js +478 -0
  97. package/dist/validation.js.map +1 -0
  98. package/dist/version.d.ts +3 -0
  99. package/dist/version.d.ts.map +1 -0
  100. package/dist/version.js +5 -0
  101. package/dist/version.js.map +1 -0
  102. package/docs/agent-compatibility.md +41 -0
  103. package/docs/ci-and-automation.md +56 -0
  104. package/docs/doxbrix-http-api.md +182 -0
  105. package/docs/generator-authoring.md +59 -0
  106. package/docs/generator-selection.md +25 -0
  107. package/docs/project-format.md +97 -0
  108. package/docs/security-model.md +90 -0
  109. package/docs/troubleshooting.md +103 -0
  110. package/package.json +87 -0
  111. package/skills/doxloop-authoring/SKILL.md +381 -0
  112. package/skills/doxloop-authoring/agents/openai.yaml +4 -0
  113. package/skills/doxloop-authoring/assets/screenshot-highlight.js +83 -0
  114. package/skills/doxloop-authoring/references/accessibility.md +54 -0
  115. package/skills/doxloop-authoring/references/audience-flavors.md +93 -0
  116. package/skills/doxloop-authoring/references/branding.md +50 -0
  117. package/skills/doxloop-authoring/references/documentation-types.md +236 -0
  118. package/skills/doxloop-authoring/references/domain-ai-ml.md +67 -0
  119. package/skills/doxloop-authoring/references/domain-api-platform.md +68 -0
  120. package/skills/doxloop-authoring/references/domain-cli-tool.md +65 -0
  121. package/skills/doxloop-authoring/references/domain-data-platform.md +65 -0
  122. package/skills/doxloop-authoring/references/domain-developer-library.md +63 -0
  123. package/skills/doxloop-authoring/references/domain-ecommerce.md +63 -0
  124. package/skills/doxloop-authoring/references/domain-infrastructure-devops.md +67 -0
  125. package/skills/doxloop-authoring/references/domain-payments-fintech.md +69 -0
  126. package/skills/doxloop-authoring/references/domain-saas.md +71 -0
  127. package/skills/doxloop-authoring/references/domain-security-identity.md +65 -0
  128. package/skills/doxloop-authoring/references/editorial-style.md +105 -0
  129. package/skills/doxloop-authoring/references/examples-and-evidence.md +71 -0
  130. package/skills/doxloop-authoring/references/navigation-architecture.md +152 -0
  131. package/skills/doxloop-authoring/references/project-format.md +119 -0
  132. package/skills/doxloop-authoring/references/quality.md +122 -0
  133. package/skills/doxloop-authoring/references/reference-sites.md +207 -0
  134. package/skills/doxloop-authoring/references/screenshots.md +251 -0
  135. package/skills/doxloop-authoring/references/template-routing.md +94 -0
  136. package/skills/doxloop-authoring/references/type-administrator-guide.md +59 -0
  137. package/skills/doxloop-authoring/references/type-api-reference.md +66 -0
  138. package/skills/doxloop-authoring/references/type-architecture-concepts.md +61 -0
  139. package/skills/doxloop-authoring/references/type-cli-manual.md +61 -0
  140. package/skills/doxloop-authoring/references/type-deployment-operations.md +64 -0
  141. package/skills/doxloop-authoring/references/type-developer-portal.md +69 -0
  142. package/skills/doxloop-authoring/references/type-getting-started.md +59 -0
  143. package/skills/doxloop-authoring/references/type-integration-guide.md +59 -0
  144. package/skills/doxloop-authoring/references/type-migration-release.md +66 -0
  145. package/skills/doxloop-authoring/references/type-sdk-guide.md +63 -0
  146. package/skills/doxloop-authoring/references/type-troubleshooting-kb.md +63 -0
  147. package/skills/doxloop-authoring/references/type-user-guide.md +59 -0
  148. package/skills/doxloop-doxbrix/SKILL.md +83 -0
  149. package/skills/doxloop-doxbrix/agents/openai.yaml +4 -0
  150. package/skills/doxloop-doxbrix/references/api-endpoints.md +128 -0
  151. package/skills/doxloop-doxbrix/references/components.md +137 -0
  152. package/skills/doxloop-doxbrix/references/manifest.md +117 -0
@@ -0,0 +1,265 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { createReadStream } from 'node:fs';
3
+ import { access, readFile, stat, writeFile } from 'node:fs/promises';
4
+ import { createServer } from 'node:http';
5
+ import { delimiter, extname, join, normalize, resolve, sep } from 'node:path';
6
+ import { DoxloopError } from './errors.js';
7
+ export async function pathExists(path) {
8
+ try {
9
+ await access(path);
10
+ return true;
11
+ }
12
+ catch (error) {
13
+ if (error.code === 'ENOENT')
14
+ return false;
15
+ throw error;
16
+ }
17
+ }
18
+ export function resolvePublicAsset(root, directory, reference) {
19
+ if (!reference.startsWith('/'))
20
+ return undefined;
21
+ const base = resolve(root, directory);
22
+ const target = resolve(base, `.${reference}`);
23
+ return target === base || target.startsWith(`${base}${sep}`)
24
+ ? target
25
+ : undefined;
26
+ }
27
+ export async function readPackageJson(root) {
28
+ try {
29
+ return JSON.parse(await readFile(join(root, 'package.json'), 'utf8'));
30
+ }
31
+ catch (error) {
32
+ if (error.code === 'ENOENT')
33
+ return {};
34
+ throw error;
35
+ }
36
+ }
37
+ export async function writeJsonFile(path, value) {
38
+ await writeFile(path, `${JSON.stringify(value, null, 2)}\n`, 'utf8');
39
+ }
40
+ export function isRecord(value) {
41
+ return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
42
+ }
43
+ export function slugFromTitle(title) {
44
+ return (title
45
+ .toLowerCase()
46
+ .normalize('NFKD')
47
+ .replace(/[\u0300-\u036f]/g, '')
48
+ .replace(/[^a-z0-9]+/g, '-')
49
+ .replace(/^-+|-+$/g, '') || 'documentation');
50
+ }
51
+ export function shownHost(host) {
52
+ return host === '0.0.0.0' || host === '::' ? 'localhost' : host;
53
+ }
54
+ export function nodeBinary(root, name) {
55
+ return resolve(root, 'node_modules', '.bin', process.platform === 'win32' ? `${name}.cmd` : name);
56
+ }
57
+ export async function findExecutable(name) {
58
+ const path = process.env.PATH;
59
+ if (!path)
60
+ return undefined;
61
+ const suffixes = process.platform === 'win32'
62
+ ? (process.env.PATHEXT ?? '.EXE;.CMD;.BAT').split(';')
63
+ : [''];
64
+ for (const directory of path.split(delimiter)) {
65
+ for (const suffix of suffixes) {
66
+ const candidate = join(directory, `${name}${suffix.toLowerCase()}`);
67
+ if (await pathExists(candidate))
68
+ return candidate;
69
+ }
70
+ }
71
+ return undefined;
72
+ }
73
+ export async function nodeInstallInvocation(root) {
74
+ const suffix = process.platform === 'win32' ? '.cmd' : '';
75
+ if (await pathExists(join(root, 'pnpm-lock.yaml'))) {
76
+ return { command: `pnpm${suffix}`, args: ['install'] };
77
+ }
78
+ if (await pathExists(join(root, 'yarn.lock'))) {
79
+ return { command: `yarn${suffix}`, args: ['install'] };
80
+ }
81
+ return { command: `npm${suffix}`, args: ['install'] };
82
+ }
83
+ export async function ensureNodeDependencies(root, binaryName, label) {
84
+ const binary = nodeBinary(root, binaryName);
85
+ if (await pathExists(binary))
86
+ return binary;
87
+ if (!(await pathExists(join(root, 'package.json')))) {
88
+ throw new DoxloopError(`This ${label} project has no package.json.`, 2);
89
+ }
90
+ const install = await nodeInstallInvocation(root);
91
+ process.stdout.write(`Installing ${label} dependencies with \`${install.command} ${install.args.join(' ')}\` (first preview only)...\n`);
92
+ const code = await runCommand(install.command, install.args, root);
93
+ if (code !== 0 || !(await pathExists(binary))) {
94
+ throw new DoxloopError(`${label} dependency installation did not complete. Run \`${install.command} ${install.args.join(' ')}\` in this documentation project.`, 2);
95
+ }
96
+ return binary;
97
+ }
98
+ export async function ensureNodeModule(root, modulePath, label) {
99
+ if (await pathExists(join(root, 'node_modules', ...modulePath.split('/'))))
100
+ return;
101
+ if (!(await pathExists(join(root, 'package.json')))) {
102
+ throw new DoxloopError(`This ${label} project has no package.json.`, 2);
103
+ }
104
+ const install = await nodeInstallInvocation(root);
105
+ process.stdout.write(`Installing ${label} dependencies with \`${install.command} ${install.args.join(' ')}\` (first preview only)...\n`);
106
+ const code = await runCommand(install.command, install.args, root);
107
+ if (code !== 0 ||
108
+ !(await pathExists(join(root, 'node_modules', ...modulePath.split('/'))))) {
109
+ throw new DoxloopError(`${label} dependency installation did not complete. Run \`${install.command} ${install.args.join(' ')}\` in this documentation project.`, 2);
110
+ }
111
+ }
112
+ export function venvExecutable(root, name) {
113
+ return join(root, '.doxloop', 'venv', process.platform === 'win32' ? 'Scripts' : 'bin', process.platform === 'win32' ? `${name}.exe` : name);
114
+ }
115
+ export async function ensurePythonDependencies(root, binaryName, label) {
116
+ const binary = venvExecutable(root, binaryName);
117
+ if (await pathExists(binary))
118
+ return binary;
119
+ if (!(await pathExists(join(root, 'requirements.txt')))) {
120
+ throw new DoxloopError(`This ${label} project has no requirements.txt.`, 2);
121
+ }
122
+ const python = process.platform === 'win32' ? 'python' : 'python3';
123
+ const venv = join(root, '.doxloop', 'venv');
124
+ process.stdout.write(`Creating .doxloop/venv and installing ${label} dependencies (first preview only)...\n`);
125
+ let code = await runCommand(python, ['-m', 'venv', venv], root);
126
+ if (code === 0) {
127
+ code = await runCommand(venvExecutable(root, 'python'), ['-m', 'pip', 'install', '-r', 'requirements.txt'], root);
128
+ }
129
+ if (code !== 0 || !(await pathExists(binary))) {
130
+ throw new DoxloopError(`${label} dependency installation did not complete. Create a Python virtual environment and run \`pip install -r requirements.txt\`.`, 2);
131
+ }
132
+ return binary;
133
+ }
134
+ export async function runCommand(command, args, root) {
135
+ return new Promise((resolveExit, reject) => {
136
+ const child = spawn(command, args, { cwd: root, stdio: 'inherit' });
137
+ child.once('error', reject);
138
+ child.once('exit', (code) => resolveExit(code ?? 1));
139
+ });
140
+ }
141
+ export async function runPreviewProcess(command, args, root, label, environment = process.env) {
142
+ const child = spawn(command, args, {
143
+ cwd: root,
144
+ env: environment,
145
+ stdio: 'inherit',
146
+ });
147
+ const forward = (signal) => {
148
+ if (!child.killed)
149
+ child.kill(signal);
150
+ };
151
+ const onSigint = () => forward('SIGINT');
152
+ const onSigterm = () => forward('SIGTERM');
153
+ process.once('SIGINT', onSigint);
154
+ process.once('SIGTERM', onSigterm);
155
+ try {
156
+ const result = await new Promise((resolveExit, reject) => {
157
+ child.once('error', reject);
158
+ child.once('exit', (code, signal) => resolveExit({ code, signal }));
159
+ });
160
+ if (result.code !== 0 && result.signal === null) {
161
+ throw new DoxloopError(`${label} preview exited with code ${result.code ?? 1}.`);
162
+ }
163
+ }
164
+ finally {
165
+ process.off('SIGINT', onSigint);
166
+ process.off('SIGTERM', onSigterm);
167
+ }
168
+ }
169
+ export async function openBrowser(url) {
170
+ const invocation = process.platform === 'darwin'
171
+ ? { command: 'open', args: [url] }
172
+ : process.platform === 'win32'
173
+ ? { command: 'cmd', args: ['/c', 'start', '', url] }
174
+ : { command: 'xdg-open', args: [url] };
175
+ await new Promise((resolveOpen) => {
176
+ const child = spawn(invocation.command, invocation.args, {
177
+ stdio: 'ignore',
178
+ detached: true,
179
+ });
180
+ child.once('error', () => resolveOpen());
181
+ child.once('spawn', () => {
182
+ child.unref();
183
+ resolveOpen();
184
+ });
185
+ });
186
+ }
187
+ export function requiredFileIssues(label, files, existing) {
188
+ return files
189
+ .filter((file) => !existing.has(file))
190
+ .map((file) => ({
191
+ severity: 'error',
192
+ code: 'missing-generator-file',
193
+ message: `${label} project is missing ${file}.`,
194
+ file,
195
+ }));
196
+ }
197
+ const CONTENT_TYPES = {
198
+ '.css': 'text/css; charset=utf-8',
199
+ '.gif': 'image/gif',
200
+ '.html': 'text/html; charset=utf-8',
201
+ '.ico': 'image/x-icon',
202
+ '.jpeg': 'image/jpeg',
203
+ '.jpg': 'image/jpeg',
204
+ '.js': 'text/javascript; charset=utf-8',
205
+ '.json': 'application/json; charset=utf-8',
206
+ '.png': 'image/png',
207
+ '.svg': 'image/svg+xml',
208
+ '.webp': 'image/webp',
209
+ '.woff': 'font/woff',
210
+ '.woff2': 'font/woff2',
211
+ };
212
+ export async function serveStaticDirectory(options, directory, label) {
213
+ const root = resolve(options.root, directory);
214
+ if (!(await pathExists(join(root, 'index.html')))) {
215
+ throw new DoxloopError(`${label} output is missing ${directory}/index.html.`, 2);
216
+ }
217
+ const server = createServer(async (request, response) => {
218
+ try {
219
+ const url = new URL(request.url ?? '/', `http://${request.headers.host ?? 'localhost'}`);
220
+ const decoded = decodeURIComponent(url.pathname);
221
+ const relativePath = normalize(decoded).replace(/^([/\\])+/, '');
222
+ let path = resolve(root, relativePath);
223
+ if (path !== root && !path.startsWith(`${root}${sep}`)) {
224
+ response.writeHead(403).end('Forbidden');
225
+ return;
226
+ }
227
+ try {
228
+ if ((await stat(path)).isDirectory())
229
+ path = join(path, 'index.html');
230
+ }
231
+ catch {
232
+ if (extname(path) === '')
233
+ path = join(path, 'index.html');
234
+ }
235
+ if (!(await pathExists(path))) {
236
+ response.writeHead(404).end('Not found');
237
+ return;
238
+ }
239
+ response.writeHead(200, {
240
+ 'Content-Type': CONTENT_TYPES[extname(path).toLowerCase()] ??
241
+ 'application/octet-stream',
242
+ });
243
+ createReadStream(path).pipe(response);
244
+ }
245
+ catch {
246
+ response.writeHead(400).end('Bad request');
247
+ }
248
+ });
249
+ await new Promise((resolveListen, reject) => {
250
+ server.once('error', reject);
251
+ server.listen(options.port, options.host, resolveListen);
252
+ });
253
+ const url = `http://${shownHost(options.host)}:${options.port}`;
254
+ process.stdout.write(`Starting ${label} preview at ${url}\n`);
255
+ if (options.open)
256
+ void openBrowser(url);
257
+ await new Promise((resolveClose) => {
258
+ const close = () => {
259
+ server.close(() => resolveClose());
260
+ };
261
+ process.once('SIGINT', close);
262
+ process.once('SIGTERM', close);
263
+ });
264
+ }
265
+ //# sourceMappingURL=generator-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator-runtime.js","sourceRoot":"","sources":["../src/generator-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type GeneratorAdapter } from './generator-api.js';
2
+ import type { DoxloopProject, GeneratorName } from './types.js';
3
+ export interface GeneratorCatalogEntry {
4
+ id: GeneratorName;
5
+ displayName: string;
6
+ packageName?: string;
7
+ skillName: string;
8
+ buildCommand?: string;
9
+ outputDir?: string;
10
+ }
11
+ export declare const GENERATOR_CATALOG: readonly GeneratorCatalogEntry[];
12
+ export declare function generatorCatalogEntry(id: string): GeneratorCatalogEntry | undefined;
13
+ export declare function parseGenerator(value: string | undefined): GeneratorName | undefined;
14
+ export declare function generatorPackageName(generator: GeneratorName, configured?: string): string | undefined;
15
+ export declare function generatorSkillName(generator: GeneratorName): string;
16
+ export declare function loadGeneratorAdapter(root: string, projectOrGenerator: DoxloopProject | GeneratorName, configuredPackage?: string): Promise<GeneratorAdapter>;
17
+ export declare function resolveGeneratorPackage(root: string, packageName: string): string | undefined;
18
+ export declare function installedGeneratorEntries(root: string): Promise<Array<GeneratorCatalogEntry & {
19
+ installed: boolean;
20
+ }>>;
21
+ //# sourceMappingURL=generators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../src/generators.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/D,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,aAAa,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,eAAO,MAAM,iBAAiB,EAAE,SAAS,qBAAqB,EAsFpD,CAAA;AAEV,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAEnF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,CAOnF;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,aAAa,EACxB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CAEpB;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,aAAa,GAAG,MAAM,CAEnE;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,kBAAkB,EAAE,cAAc,GAAG,aAAa,EAClD,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAsC3B;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CAapB;AAED,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,CAUhE"}
@@ -0,0 +1,202 @@
1
+ import { createRequire } from 'node:module';
2
+ import { join, resolve } from 'node:path';
3
+ import { pathToFileURL } from 'node:url';
4
+ import { DoxloopError, UsageError } from './errors.js';
5
+ import { GENERATOR_API_VERSION, } from './generator-api.js';
6
+ export const GENERATOR_CATALOG = [
7
+ {
8
+ id: 'doxbrix',
9
+ displayName: 'Doxbrix',
10
+ skillName: 'doxloop-doxbrix',
11
+ },
12
+ {
13
+ id: 'docusaurus',
14
+ displayName: 'Docusaurus',
15
+ packageName: '@doxbrix/doxloop-generator-docusaurus',
16
+ skillName: 'doxloop-docusaurus',
17
+ buildCommand: 'npm run build',
18
+ outputDir: 'build',
19
+ },
20
+ {
21
+ id: 'mkdocs',
22
+ displayName: 'MkDocs Material',
23
+ packageName: '@doxbrix/doxloop-generator-mkdocs',
24
+ skillName: 'doxloop-mkdocs',
25
+ buildCommand: 'mkdocs build --strict',
26
+ outputDir: 'site',
27
+ },
28
+ {
29
+ id: 'sphinx',
30
+ displayName: 'Sphinx',
31
+ packageName: '@doxbrix/doxloop-generator-sphinx',
32
+ skillName: 'doxloop-sphinx',
33
+ buildCommand: 'sphinx-build -W -b html docs _build/html',
34
+ outputDir: '_build/html',
35
+ },
36
+ {
37
+ id: 'hugo',
38
+ displayName: 'Hugo',
39
+ packageName: '@doxbrix/doxloop-generator-hugo',
40
+ skillName: 'doxloop-hugo',
41
+ buildCommand: 'hugo --minify',
42
+ outputDir: 'public',
43
+ },
44
+ {
45
+ id: 'vitepress',
46
+ displayName: 'VitePress',
47
+ packageName: '@doxbrix/doxloop-generator-vitepress',
48
+ skillName: 'doxloop-vitepress',
49
+ buildCommand: 'npm run docs:build',
50
+ outputDir: 'docs/.vitepress/dist',
51
+ },
52
+ {
53
+ id: 'markdoc',
54
+ displayName: 'Markdoc',
55
+ packageName: '@doxbrix/doxloop-generator-markdoc',
56
+ skillName: 'doxloop-markdoc',
57
+ buildCommand: 'npm run build',
58
+ outputDir: 'dist',
59
+ },
60
+ {
61
+ id: 'nextra',
62
+ displayName: 'Nextra',
63
+ packageName: '@doxbrix/doxloop-generator-nextra',
64
+ skillName: 'doxloop-nextra',
65
+ buildCommand: 'npm run build',
66
+ outputDir: 'out',
67
+ },
68
+ {
69
+ id: 'starlight',
70
+ displayName: 'Starlight',
71
+ packageName: '@doxbrix/doxloop-generator-starlight',
72
+ skillName: 'doxloop-starlight',
73
+ buildCommand: 'npm run build',
74
+ outputDir: 'dist',
75
+ },
76
+ {
77
+ id: 'jekyll',
78
+ displayName: 'Jekyll',
79
+ packageName: '@doxbrix/doxloop-generator-jekyll',
80
+ skillName: 'doxloop-jekyll',
81
+ buildCommand: 'bundle exec jekyll build --strict_front_matter',
82
+ outputDir: '_site',
83
+ },
84
+ {
85
+ id: 'static',
86
+ displayName: 'Prebuilt static HTML',
87
+ packageName: '@doxbrix/doxloop-generator-static',
88
+ skillName: 'doxloop-static',
89
+ buildCommand: 'npm run build',
90
+ outputDir: 'site',
91
+ },
92
+ ];
93
+ export function generatorCatalogEntry(id) {
94
+ return GENERATOR_CATALOG.find((entry) => entry.id === id);
95
+ }
96
+ export function parseGenerator(value) {
97
+ if (value === undefined)
98
+ return undefined;
99
+ const entry = generatorCatalogEntry(value);
100
+ if (entry)
101
+ return entry.id;
102
+ throw new UsageError(`--generator must be one of: ${GENERATOR_CATALOG.map((entry) => entry.id).join(', ')}`);
103
+ }
104
+ export function generatorPackageName(generator, configured) {
105
+ return configured ?? generatorCatalogEntry(generator)?.packageName;
106
+ }
107
+ export function generatorSkillName(generator) {
108
+ return generatorCatalogEntry(generator)?.skillName ?? `doxloop-${generator}`;
109
+ }
110
+ export async function loadGeneratorAdapter(root, projectOrGenerator, configuredPackage) {
111
+ const generator = typeof projectOrGenerator === 'string'
112
+ ? projectOrGenerator
113
+ : projectOrGenerator.generator;
114
+ if (generator === 'doxbrix') {
115
+ throw new DoxloopError('Doxbrix is a built-in generator and has no external adapter.');
116
+ }
117
+ const packageName = generatorPackageName(generator, typeof projectOrGenerator === 'string'
118
+ ? configuredPackage
119
+ : projectOrGenerator.generatorPackage);
120
+ if (!packageName) {
121
+ throw new DoxloopError(`No generator package is configured for "${generator}".`, 2);
122
+ }
123
+ const resolved = resolveGeneratorPackage(root, packageName);
124
+ if (!resolved) {
125
+ throw new DoxloopError(`The ${generator} generator package is not installed.\nInstall it in the documentation project with:\n npm install --save-dev ${packageName}`, 2);
126
+ }
127
+ let loaded;
128
+ try {
129
+ const module = (await import(pathToFileURL(resolved).href));
130
+ loaded = module.default;
131
+ }
132
+ catch (error) {
133
+ throw new DoxloopError(`Cannot load generator package ${packageName}: ${errorMessage(error)}`);
134
+ }
135
+ return validateAdapter(loaded, generator, packageName);
136
+ }
137
+ export function resolveGeneratorPackage(root, packageName) {
138
+ const attempts = [
139
+ createRequire(join(resolve(root), 'package.json')),
140
+ createRequire(import.meta.url),
141
+ ];
142
+ for (const require of attempts) {
143
+ try {
144
+ return require.resolve(packageName);
145
+ }
146
+ catch (error) {
147
+ if (error.code !== 'MODULE_NOT_FOUND')
148
+ throw error;
149
+ }
150
+ }
151
+ return undefined;
152
+ }
153
+ export async function installedGeneratorEntries(root) {
154
+ return Promise.all(GENERATOR_CATALOG.map(async (entry) => ({
155
+ ...entry,
156
+ installed: entry.id === 'doxbrix' ||
157
+ (entry.packageName !== undefined &&
158
+ resolveGeneratorPackage(root, entry.packageName) !== undefined),
159
+ })));
160
+ }
161
+ function validateAdapter(value, expectedId, packageName) {
162
+ if (!value || typeof value !== 'object') {
163
+ throw incompatible(packageName, 'does not export a default generator adapter');
164
+ }
165
+ const adapter = value;
166
+ if (adapter.apiVersion !== GENERATOR_API_VERSION) {
167
+ throw incompatible(packageName, `uses generator API ${String(adapter.apiVersion)}; Doxloop requires ${GENERATOR_API_VERSION}`);
168
+ }
169
+ if (adapter.id !== expectedId) {
170
+ throw incompatible(packageName, `registers "${String(adapter.id)}" instead of "${expectedId}"`);
171
+ }
172
+ if (adapter.packageName !== packageName ||
173
+ typeof adapter.displayName !== 'string' ||
174
+ typeof adapter.packageVersion !== 'string' ||
175
+ !adapter.authoring ||
176
+ typeof adapter.authoring.skillName !== 'string' ||
177
+ typeof adapter.authoring.skillDirectory !== 'string' ||
178
+ !adapter.project ||
179
+ !Array.isArray(adapter.project.pageExtensions) ||
180
+ !Array.isArray(adapter.project.gitignore) ||
181
+ (adapter.project.contentFormat !== undefined &&
182
+ !['markdown', 'rst', 'html'].includes(adapter.project.contentFormat)) ||
183
+ !adapter.build ||
184
+ typeof adapter.build.command !== 'string' ||
185
+ typeof adapter.build.outputDir !== 'string' ||
186
+ typeof adapter.scaffold !== 'function' ||
187
+ typeof adapter.preview !== 'function' ||
188
+ typeof adapter.validate !== 'function' ||
189
+ (adapter.resolveLocalAsset !== undefined &&
190
+ typeof adapter.resolveLocalAsset !== 'function') ||
191
+ (adapter.readPage !== undefined && typeof adapter.readPage !== 'function')) {
192
+ throw incompatible(packageName, 'does not satisfy the generator adapter contract');
193
+ }
194
+ return adapter;
195
+ }
196
+ function incompatible(packageName, reason) {
197
+ return new DoxloopError(`Generator package ${packageName} is incompatible: ${reason}.`);
198
+ }
199
+ function errorMessage(error) {
200
+ return error instanceof Error ? error.message : String(error);
201
+ }
202
+ //# sourceMappingURL=generators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generators.js","sourceRoot":"","sources":["../src/generators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type TocEntry } from './doxbrix-markdown.js';
2
+ import type { DoxbrixSiteConfig } from './types.js';
3
+ interface PreviewOptions {
4
+ root: string;
5
+ host: string;
6
+ port: number;
7
+ open: boolean;
8
+ }
9
+ export declare function startPreview(options: PreviewOptions): Promise<void>;
10
+ export declare function doxbrixDocument(input: {
11
+ site: DoxbrixSiteConfig;
12
+ title: string;
13
+ description?: string;
14
+ current: string;
15
+ rendered: {
16
+ html: string;
17
+ toc: TocEntry[];
18
+ };
19
+ }): string;
20
+ export {};
21
+ //# sourceMappingURL=preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"AAMA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAYrE,OAAO,KAAK,EAGV,iBAAiB,EAClB,MAAM,YAAY,CAAA;AAEnB,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,CAAA;CACd;AA2CD,wBAAsB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAOzE;AAyHD,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACrC,IAAI,EAAE,iBAAiB,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,QAAQ,EAAE,CAAA;KAAE,CAAA;CAC5C,GAAG,MAAM,CAqNT"}