@aravindc26/velu 0.12.8 → 0.12.9
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/package.json +1 -1
- package/src/build.ts +13 -0
- package/src/cli.ts +51 -9
- package/src/engine/app/(docs)/[...slug]/layout.tsx +21 -537
- package/src/engine/app/_preview/[sessionId]/[...slug]/layout.tsx +96 -0
- package/src/engine/app/_preview/[sessionId]/[...slug]/page.tsx +298 -0
- package/src/engine/app/_preview/[sessionId]/layout.tsx +56 -0
- package/src/{preview-engine/app → engine/app/_preview}/[sessionId]/page.tsx +7 -3
- package/src/{preview-engine/app → engine/app/_preview}/api/sessions/[sessionId]/assets/[...path]/route.ts +1 -1
- package/src/{preview-engine/app → engine/app/_preview}/api/sessions/[sessionId]/init/route.ts +2 -2
- package/src/{preview-engine/app → engine/app/_preview}/api/sessions/[sessionId]/route.ts +3 -3
- package/src/{preview-engine/app → engine/app/_preview}/api/sessions/[sessionId]/sync/route.ts +2 -2
- package/src/{preview-engine/app → engine/app/_preview}/layout.tsx +4 -1
- package/src/engine/app/global.css +0 -3623
- package/src/engine/app/layout.tsx +4 -3
- package/src/engine/components/sidebar-links.tsx +11 -5
- package/src/engine/lib/docs-layout.tsx +605 -0
- package/src/engine/lib/layout.shared.ts +7 -7
- package/src/engine/lib/preview-config.ts +129 -0
- package/src/{preview-engine/lib/content-generator.ts → engine/lib/preview-content.ts} +242 -42
- package/src/engine/lib/source.ts +80 -97
- package/src/engine/lib/velu.ts +79 -55
- package/src/engine/mdx-components.tsx +14 -650
- package/src/engine/source.config.ts +11 -89
- package/src/engine/tsconfig.json +1 -0
- package/src/engine-core/components/assistant.tsx +361 -0
- package/src/engine-core/components/banner.tsx +80 -0
- package/src/engine-core/components/changelog-filters.tsx +114 -0
- package/src/engine-core/components/code-group.tsx +383 -0
- package/src/engine-core/components/color.tsx +118 -0
- package/src/engine-core/components/copy-page.tsx +223 -0
- package/src/engine-core/components/dropdown-switcher.tsx +142 -0
- package/src/engine-core/components/expandable.tsx +77 -0
- package/src/engine-core/components/header-tab-link.tsx +43 -0
- package/src/engine-core/components/icon.tsx +136 -0
- package/src/engine-core/components/image-zoom-fallback.tsx +147 -0
- package/src/engine-core/components/image.tsx +111 -0
- package/src/engine-core/components/lang-switcher.tsx +101 -0
- package/src/engine-core/components/manual-api-playground.tsx +154 -0
- package/src/engine-core/components/mermaid.tsx +142 -0
- package/src/engine-core/components/openapi-toc-sync.tsx +59 -0
- package/src/engine-core/components/openapi.tsx +1682 -0
- package/src/engine-core/components/page-feedback-api.test.ts +83 -0
- package/src/engine-core/components/page-feedback-api.ts +89 -0
- package/src/engine-core/components/page-feedback.tsx +200 -0
- package/src/engine-core/components/product-switcher.tsx +107 -0
- package/src/engine-core/components/prompt.tsx +90 -0
- package/src/engine-core/components/providers.tsx +21 -0
- package/src/engine-core/components/search.tsx +318 -0
- package/src/engine-core/components/sidebar-links.tsx +54 -0
- package/src/engine-core/components/synced-tabs.tsx +57 -0
- package/src/engine-core/components/theme-toggle.tsx +39 -0
- package/src/engine-core/components/toc-examples.tsx +110 -0
- package/src/engine-core/components/version-switcher.tsx +95 -0
- package/src/engine-core/components/view.tsx +344 -0
- package/src/engine-core/css/assistant.css +326 -0
- package/src/engine-core/css/copy-page.css +206 -0
- package/src/engine-core/css/search.css +142 -0
- package/src/engine-core/css/shared.css +3628 -0
- package/src/engine-core/lib/remark-plugins.ts +102 -0
- package/src/engine-core/lib/source-plugins.ts +105 -0
- package/src/engine-core/mdx-components.tsx +654 -0
- package/src/engine-core/types.ts +49 -0
- package/src/preview-engine/app/[sessionId]/[...slug]/page.tsx +0 -41
- package/src/preview-engine/app/[sessionId]/layout.tsx +0 -26
- package/src/preview-engine/app/global.css +0 -29
- package/src/preview-engine/lib/session-config.ts +0 -86
- package/src/preview-engine/lib/session-layout.ts +0 -190
- package/src/preview-engine/lib/source.ts +0 -60
- package/src/preview-engine/next.config.mjs +0 -20
- package/src/preview-engine/postcss.config.mjs +0 -8
- package/src/preview-engine/source.config.ts +0 -26
- package/src/preview-engine/tsconfig.json +0 -32
- package/src/preview-engine/tsconfig.tsbuildinfo +0 -1
- /package/src/{preview-engine/app → engine/app/_preview}/page.tsx +0 -0
- /package/src/{preview-engine/lib/auth.ts → engine/lib/preview-auth.ts} +0 -0
package/package.json
CHANGED
package/src/build.ts
CHANGED
|
@@ -11,6 +11,9 @@ const __dirname = dirname(__filename);
|
|
|
11
11
|
const PACKAGED_ENGINE_DIR = join(__dirname, "engine");
|
|
12
12
|
const DEV_ENGINE_DIR = join(__dirname, "..", "src", "engine");
|
|
13
13
|
const ENGINE_DIR = existsSync(DEV_ENGINE_DIR) ? DEV_ENGINE_DIR : PACKAGED_ENGINE_DIR;
|
|
14
|
+
const PACKAGED_ENGINE_CORE_DIR = join(__dirname, "engine-core");
|
|
15
|
+
const DEV_ENGINE_CORE_DIR = join(__dirname, "..", "src", "engine-core");
|
|
16
|
+
const ENGINE_CORE_DIR = existsSync(DEV_ENGINE_CORE_DIR) ? DEV_ENGINE_CORE_DIR : PACKAGED_ENGINE_CORE_DIR;
|
|
14
17
|
const CLI_PACKAGE_JSON_PATH = join(__dirname, "..", "package.json");
|
|
15
18
|
const PRIMARY_CONFIG_NAME = "docs.json";
|
|
16
19
|
const LEGACY_CONFIG_NAME = "velu.json";
|
|
@@ -1193,6 +1196,16 @@ function build(docsDir: string, outDir: string) {
|
|
|
1193
1196
|
cpSync(ENGINE_DIR, outDir, { recursive: true });
|
|
1194
1197
|
// Remove legacy Astro template leftovers if present in the packaged engine.
|
|
1195
1198
|
rmSync(join(outDir, "src"), { recursive: true, force: true });
|
|
1199
|
+
|
|
1200
|
+
// Copy engine-core for shared components, CSS, and plugins (@core/* imports)
|
|
1201
|
+
cpSync(ENGINE_CORE_DIR, join(outDir, "engine-core"), { recursive: true });
|
|
1202
|
+
|
|
1203
|
+
// Patch tsconfig so @core/* resolves to the co-located engine-core copy
|
|
1204
|
+
const outTsconfigPath = join(outDir, "tsconfig.json");
|
|
1205
|
+
if (existsSync(outTsconfigPath)) {
|
|
1206
|
+
const tsconfigContent = readFileSync(outTsconfigPath, "utf-8");
|
|
1207
|
+
writeFileSync(outTsconfigPath, tsconfigContent.replace('"../engine-core/*"', '"./engine-core/*"'), "utf-8");
|
|
1208
|
+
}
|
|
1196
1209
|
console.log("📦 Copied engine files");
|
|
1197
1210
|
|
|
1198
1211
|
// ── 2. Create additional directories ─────────────────────────────────────
|
package/src/cli.ts
CHANGED
|
@@ -266,7 +266,7 @@ function prepareRuntimeOutDir(docsOutDir: string): string {
|
|
|
266
266
|
|
|
267
267
|
async function buildStatic(outDir: string, docsDir: string) {
|
|
268
268
|
await new Promise<void>((res, rej) => {
|
|
269
|
-
const child = spawn(
|
|
269
|
+
const child = spawn(process.execPath, ["_server.mjs", "build"], {
|
|
270
270
|
cwd: outDir,
|
|
271
271
|
stdio: "inherit",
|
|
272
272
|
env: engineEnv(docsDir),
|
|
@@ -491,8 +491,14 @@ async function buildSite(docsDir: string) {
|
|
|
491
491
|
// ── preview-server ───────────────────────────────────────────────────────────────
|
|
492
492
|
|
|
493
493
|
const PREVIEW_ENGINE_DIR = (() => {
|
|
494
|
-
const dev = join(PACKAGE_ROOT, "src", "
|
|
495
|
-
const packaged = join(dirname(__filename), "
|
|
494
|
+
const dev = join(PACKAGE_ROOT, "src", "engine");
|
|
495
|
+
const packaged = join(dirname(__filename), "engine");
|
|
496
|
+
return existsSync(dev) ? dev : packaged;
|
|
497
|
+
})();
|
|
498
|
+
|
|
499
|
+
const ENGINE_CORE_DIR = (() => {
|
|
500
|
+
const dev = join(PACKAGE_ROOT, "src", "engine-core");
|
|
501
|
+
const packaged = join(dirname(__filename), "engine-core");
|
|
496
502
|
return existsSync(dev) ? dev : packaged;
|
|
497
503
|
})();
|
|
498
504
|
|
|
@@ -505,16 +511,50 @@ function previewServerEnv(): NodeJS.ProcessEnv {
|
|
|
505
511
|
}
|
|
506
512
|
|
|
507
513
|
async function previewServer(port: number) {
|
|
508
|
-
const runtimeDir = join(
|
|
514
|
+
const runtimeDir = join(PACKAGE_ROOT, ".preview-out");
|
|
509
515
|
|
|
510
|
-
// Clean and copy
|
|
516
|
+
// Clean and copy MAIN ENGINE to runtime dir
|
|
511
517
|
try { rmSync(runtimeDir, { recursive: true, force: true }); } catch {}
|
|
512
518
|
copyDirMerge(PREVIEW_ENGINE_DIR, runtimeDir);
|
|
513
519
|
|
|
514
|
-
//
|
|
520
|
+
// Copy engine-core for shared components, CSS, and plugins (@core/* imports)
|
|
521
|
+
copyDirMerge(ENGINE_CORE_DIR, join(runtimeDir, "engine-core"));
|
|
522
|
+
|
|
523
|
+
// Activate preview routes: move _preview/* to app root
|
|
524
|
+
const appDir = join(runtimeDir, "app");
|
|
525
|
+
const previewDir = join(appDir, "_preview");
|
|
526
|
+
|
|
527
|
+
// Remove production-only routes that don't apply to preview
|
|
528
|
+
for (const dir of ["(docs)", "sitemap.xml", "robots.txt", "og", "llms-file", "llms-full-file", "md-file", "rss-file", "_md"]) {
|
|
529
|
+
try { rmSync(join(appDir, dir), { recursive: true, force: true }); } catch {}
|
|
530
|
+
}
|
|
531
|
+
// Remove production root layout/page (preview has its own in _preview/)
|
|
532
|
+
for (const file of ["layout.tsx", "page.tsx"]) {
|
|
533
|
+
try { rmSync(join(appDir, file), { force: true }); } catch {}
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
// Move preview routes to app root
|
|
537
|
+
if (existsSync(previewDir)) {
|
|
538
|
+
copyDirMerge(previewDir, appDir);
|
|
539
|
+
rmSync(previewDir, { recursive: true, force: true });
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
// Create velu-theme.css that imports fumadocs neutral theme as baseline
|
|
543
|
+
// (per-session themes override via <style> tags injected in session layout)
|
|
544
|
+
writeFileSync(join(appDir, "velu-theme.css"), "@import 'fumadocs-ui/css/neutral.css';\n", "utf-8");
|
|
545
|
+
|
|
546
|
+
// Patch tsconfig so @core/* resolves to the co-located engine-core copy
|
|
547
|
+
const runtimeTsconfig = join(runtimeDir, "tsconfig.json");
|
|
548
|
+
if (existsSync(runtimeTsconfig)) {
|
|
549
|
+
const tsconfigContent = readFileSync(runtimeTsconfig, "utf-8");
|
|
550
|
+
writeFileSync(runtimeTsconfig, tsconfigContent.replace('"../engine-core/*"', '"./engine-core/*"'), "utf-8");
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
// Link node_modules so Next.js can resolve dependencies (fumadocs-mdx, etc.)
|
|
554
|
+
// Use 'junction' on Windows (no elevation required), symlink on other platforms
|
|
515
555
|
const runtimeNodeModules = join(runtimeDir, "node_modules");
|
|
516
556
|
if (!existsSync(runtimeNodeModules)) {
|
|
517
|
-
symlinkSync(NODE_MODULES_PATH, runtimeNodeModules);
|
|
557
|
+
symlinkSync(NODE_MODULES_PATH, runtimeNodeModules, "junction");
|
|
518
558
|
}
|
|
519
559
|
|
|
520
560
|
console.log(` Starting preview server on port ${port}...`);
|
|
@@ -524,11 +564,13 @@ async function previewServer(port: number) {
|
|
|
524
564
|
// Resolve the next binary from the CLI's own node_modules
|
|
525
565
|
const nextBinPath = join(NODE_MODULES_PATH, "next", "dist", "bin", "next");
|
|
526
566
|
|
|
527
|
-
const child = spawn(
|
|
567
|
+
const child = spawn(process.execPath, [nextBinPath, "dev", "--port", String(port), "--turbopack"], {
|
|
528
568
|
cwd: runtimeDir,
|
|
529
569
|
stdio: ["inherit", "pipe", "inherit"],
|
|
530
570
|
env: {
|
|
531
571
|
...previewServerEnv(),
|
|
572
|
+
// Align source.config.ts and content-generator on the same content dir
|
|
573
|
+
PREVIEW_CONTENT_DIR: process.env.PREVIEW_CONTENT_DIR || "./content",
|
|
532
574
|
WATCHPACK_POLLING: process.env.WATCHPACK_POLLING || "true",
|
|
533
575
|
},
|
|
534
576
|
});
|
|
@@ -571,7 +613,7 @@ function warmupRoutes(port: number) {
|
|
|
571
613
|
// ── run ──────────────────────────────────────────────────────────────────────────
|
|
572
614
|
|
|
573
615
|
function spawnServer(outDir: string, command: string, port: number, docsDir: string) {
|
|
574
|
-
const child = spawn(
|
|
616
|
+
const child = spawn(process.execPath, ["_server.mjs", command, "--port", String(port)], {
|
|
575
617
|
cwd: outDir,
|
|
576
618
|
stdio: "inherit",
|
|
577
619
|
env: engineEnv(docsDir),
|