@squadbase/vantage 0.6.2-dev1.ac99e02 → 0.6.2-dev1.d7c0911
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/dist/{build-MFWRPYKW.js → build-X5NVCQKT.js} +4 -4
- package/dist/{build-MFWRPYKW.js.map → build-X5NVCQKT.js.map} +1 -1
- package/dist/{chunk-IBGOCWJB.js → chunk-2ICNHUG6.js} +186 -82
- package/dist/chunk-2ICNHUG6.js.map +1 -0
- package/dist/{chunk-5ZOP4SQR.js → chunk-2N72FKLB.js} +12 -7
- package/dist/chunk-2N72FKLB.js.map +1 -0
- package/dist/{chunk-PXRX5PEC.js → chunk-PDOBHMUQ.js} +3 -3
- package/dist/chunk-PDOBHMUQ.js.map +1 -0
- package/dist/{chunk-A2UUGASH.js → chunk-U736PVHY.js} +2 -2
- package/dist/chunk-U736PVHY.js.map +1 -0
- package/dist/{chunk-QEWCYW3I.js → chunk-WAMZWZJB.js} +13 -3
- package/dist/chunk-WAMZWZJB.js.map +1 -0
- package/dist/chunk-WRSX2MDK.js +7866 -0
- package/dist/chunk-WRSX2MDK.js.map +1 -0
- package/dist/{chunk-OB6UBJXF.js → chunk-XPQSTZUU.js} +125 -35
- package/dist/chunk-XPQSTZUU.js.map +1 -0
- package/dist/cli.js +3 -3
- package/dist/components/index.d.ts +1831 -99
- package/dist/components/index.js +4 -4
- package/dist/{dev-DCTOHQ6W.js → dev-4XEDTELV.js} +4 -4
- package/dist/{dev-DCTOHQ6W.js.map → dev-4XEDTELV.js.map} +1 -1
- package/dist/doc/index.js +2 -2
- package/dist/doc/index.js.map +1 -1
- package/dist/markdown/index.js +1 -1
- package/dist/markdown/index.js.map +1 -1
- package/dist/table/index.js +5 -5
- package/dist/table/index.js.map +1 -1
- package/dist/ui/index.d.ts +4 -1
- package/dist/ui/index.js +21 -111
- package/dist/ui/index.js.map +1 -1
- package/dist/{upgrade-DBBE6GIR.js → upgrade-JHXZBGQS.js} +3 -3
- package/dist/{upgrade-DBBE6GIR.js.map → upgrade-JHXZBGQS.js.map} +1 -1
- package/dist/vite/index.js +2 -2
- package/docs/en/components.md +29 -15
- package/docs/en/parts/data-table.md +22 -0
- package/docs/en/parts/delta.md +50 -0
- package/docs/en/parts/format.md +43 -0
- package/docs/en/parts/kpi-card.md +57 -0
- package/docs/en/parts/metric-value.md +3 -2
- package/docs/en/parts/sparkline.md +1 -1
- package/docs/en/parts/trend-indicator.md +17 -1
- package/docs/en/ui-and-theming.md +1 -1
- package/docs/index.json +92 -32
- package/docs/ja/changelog.md +5 -0
- package/docs/ja/components.md +27 -15
- package/docs/ja/parts/data-table.md +22 -0
- package/docs/ja/parts/delta.md +50 -0
- package/docs/ja/parts/format.md +44 -0
- package/docs/ja/parts/kpi-card.md +55 -0
- package/docs/ja/parts/metric-value.md +3 -2
- package/docs/ja/parts/sparkline.md +1 -1
- package/docs/ja/parts/trend-indicator.md +17 -1
- package/docs/ja/ui-and-theming.md +2 -2
- package/package.json +2 -1
- package/registry/ui/accordion.tsx +4 -2
- package/registry/ui/alert-dialog.tsx +3 -3
- package/registry/ui/alert.tsx +3 -1
- package/registry/ui/app-shell.tsx +7 -1
- package/registry/ui/area-chart.tsx +2781 -157
- package/registry/ui/avatar.tsx +1 -1
- package/registry/ui/badge.tsx +3 -1
- package/registry/ui/bar-chart.tsx +2780 -157
- package/registry/ui/bar-list.tsx +3471 -93
- package/registry/ui/breadcrumb.tsx +3 -1
- package/registry/ui/button.tsx +3 -1
- package/registry/ui/calendar.tsx +3 -1
- package/registry/ui/card.tsx +4 -2
- package/registry/ui/category-bar.tsx +990 -16
- package/registry/ui/chart-frame.tsx +1358 -0
- package/registry/ui/checkbox.tsx +3 -1
- package/registry/ui/collapsible.tsx +3 -1
- package/registry/ui/combobox.tsx +2 -2
- package/registry/ui/command.tsx +3 -1
- package/registry/ui/dashboard-card.tsx +69 -26
- package/registry/ui/data-table.tsx +678 -56
- package/registry/ui/date-range-picker.tsx +245 -64
- package/registry/ui/delta.tsx +188 -0
- package/registry/ui/dialog.tsx +5 -3
- package/registry/ui/donut-chart.tsx +2857 -173
- package/registry/ui/drawer.tsx +1 -1
- package/registry/ui/dropdown-menu.tsx +5 -3
- package/registry/ui/echart.tsx +448 -44
- package/registry/ui/field.tsx +1 -1
- package/registry/ui/filter-bar.tsx +33 -6
- package/registry/ui/funnel-steps.tsx +3316 -49
- package/registry/ui/heatmap.tsx +1752 -0
- package/registry/ui/hover-card.tsx +2 -2
- package/registry/ui/input-group.tsx +3 -1
- package/registry/ui/input.tsx +3 -1
- package/registry/ui/kbd.tsx +3 -1
- package/registry/ui/kpi-card.tsx +677 -0
- package/registry/ui/label.tsx +3 -1
- package/registry/ui/legend.tsx +3500 -0
- package/registry/ui/line-chart.tsx +2781 -151
- package/registry/ui/metric-value.tsx +9 -1
- package/registry/ui/multi-select.tsx +11 -5
- package/registry/ui/page-shell.tsx +104 -49
- package/registry/ui/pagination.tsx +3 -1
- package/registry/ui/placeholder.tsx +8 -2
- package/registry/ui/popover.tsx +4 -2
- package/registry/ui/progress-circle.tsx +607 -12
- package/registry/ui/progress.tsx +3 -1
- package/registry/ui/radio-group.tsx +1 -1
- package/registry/ui/sample-data.tsx +86 -0
- package/registry/ui/scatter-chart.tsx +4150 -0
- package/registry/ui/scroll-area.tsx +3 -2
- package/registry/ui/searchable-select.tsx +8 -3
- package/registry/ui/section-header.tsx +4 -2
- package/registry/ui/segmented-control.tsx +7 -2
- package/registry/ui/select.tsx +4 -2
- package/registry/ui/separator.tsx +3 -1
- package/registry/ui/sheet.tsx +4 -2
- package/registry/ui/sidebar.tsx +4 -2
- package/registry/ui/skeleton.tsx +4 -2
- package/registry/ui/slider.tsx +3 -1
- package/registry/ui/sparkline.tsx +84 -9
- package/registry/ui/spinner.tsx +3 -1
- package/registry/ui/states.tsx +34 -5
- package/registry/ui/status-badge.tsx +81 -39
- package/registry/ui/switch.tsx +3 -1
- package/registry/ui/table.tsx +4 -2
- package/registry/ui/tabs.tsx +5 -3
- package/registry/ui/textarea.tsx +3 -1
- package/registry/ui/toast.tsx +2 -2
- package/registry/ui/toggle-group.tsx +3 -1
- package/registry/ui/toggle.tsx +3 -1
- package/registry/ui/tooltip.tsx +4 -2
- package/registry/ui/tracker.tsx +624 -17
- package/registry/ui/trend-indicator.tsx +13 -1
- package/registry/ui/updated-at.tsx +122 -0
- package/registry/ui/waterfall-chart.tsx +4186 -0
- package/templates/AGENTS.md +13 -1
- package/theme.css +237 -136
- package/dist/chunk-5ZOP4SQR.js.map +0 -1
- package/dist/chunk-A2UUGASH.js.map +0 -1
- package/dist/chunk-AG6RZ2RR.js +0 -3208
- package/dist/chunk-AG6RZ2RR.js.map +0 -1
- package/dist/chunk-IBGOCWJB.js.map +0 -1
- package/dist/chunk-OB6UBJXF.js.map +0 -1
- package/dist/chunk-PXRX5PEC.js.map +0 -1
- package/dist/chunk-QEWCYW3I.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { runDiagnostics } from './chunk-7DZGJQ3P.js';
|
|
2
2
|
import './chunk-JKLLFVEU.js';
|
|
3
|
-
import { vantagePlugin } from './chunk-
|
|
4
|
-
import { generateArtifacts } from './chunk-
|
|
3
|
+
import { vantagePlugin } from './chunk-2ICNHUG6.js';
|
|
4
|
+
import { generateArtifacts } from './chunk-WAMZWZJB.js';
|
|
5
5
|
import './chunk-CEXAQQ5W.js';
|
|
6
6
|
import { scanProject, timedAsync } from './chunk-RNTDBX6S.js';
|
|
7
7
|
import './chunk-46QI6GFC.js';
|
|
@@ -104,5 +104,5 @@ function writeDeployManifest(root, model) {
|
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
export { build };
|
|
107
|
-
//# sourceMappingURL=build-
|
|
108
|
-
//# sourceMappingURL=build-
|
|
107
|
+
//# sourceMappingURL=build-X5NVCQKT.js.map
|
|
108
|
+
//# sourceMappingURL=build-X5NVCQKT.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/build.ts"],"names":["viteBuild"],"mappings":"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","file":"build-
|
|
1
|
+
{"version":3,"sources":["../src/cli/build.ts"],"names":["viteBuild"],"mappings":"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","file":"build-X5NVCQKT.js","sourcesContent":["import fs from \"node:fs\"\nimport path from \"node:path\"\nimport { build as viteBuild, loadEnv } from \"vite\"\nimport { MANIFEST_SCHEMA_VERSION, VANTAGE_DIR } from \"../core/constants\"\nimport { runDiagnostics } from \"../core/diagnostics\"\nimport { generateArtifacts } from \"../core/generate\"\nimport { timedAsync } from \"../core/profile\"\nimport { scanProject } from \"../core/scan\"\nimport type { RouteModel } from \"../core/types\"\nimport { vantagePlugin } from \"../vite/index\"\nimport { applyApiBaseUrlFlag, log, printDiagnostics, type ParsedArgs } from \"./util\"\n\nconst SERVER_ENTRY = `// AUTO-GENERATED by @squadbase/vantage.\nimport path from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\nimport { startNodeServer } from \"@squadbase/vantage/server/node\"\nimport { apiRoutes } from \"./server-routes.gen\"\n\nconst clientDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), \"../client\")\nstartNodeServer({ apiRoutes, clientDir })\n`\n\n/** `vantage build` — build client and (optionally) server into dist/. */\nexport async function build(root: string, args: ParsedArgs): Promise<number> {\n const model = scanProject(root)\n const errors = runDiagnostics(root, model).filter((d) => d.severity === \"error\")\n if (errors.length) {\n printDiagnostics(errors)\n log.error(\"Fix the errors above before building.\")\n return 1\n }\n\n const mode = \"production\"\n // `--api-base-url` feeds the client's PUBLIC_API_BASE_URL. Setting it on\n // process.env (before loadEnv/Vite read env) makes the flag win over any .env\n // value and keeps the single env-prefix mechanism — no Vite `define`.\n applyApiBaseUrlFlag(args)\n const env = { ...process.env, ...loadEnv(mode, root, \"\") }\n const quiet = Boolean(args.flags.json)\n\n // Write .vantage/ up front instead of letting the plugin do it at\n // configResolved: the server bundle reads server-routes.gen.ts, so once the\n // artifacts exist the two builds no longer depend on each other and can run\n // at the same time (they write to dist/client and dist/server respectively).\n generateArtifacts({ root, model })\n\n if (!quiet) log.step(model.hasServer ? \"Building client and server…\" : \"Building client…\")\n\n const clientBuild = timedAsync(\"build:client\", async () => {\n await viteBuild({\n configFile: false,\n root,\n mode,\n plugins: [vantagePlugin({ root, env, model, artifactsWritten: true })],\n logLevel: quiet ? \"silent\" : args.flags.verbose ? \"info\" : \"warn\",\n })\n // The HTML input lives in .vantage/, so Vite emits it to dist/client/.vantage/.\n // Hoist it to dist/client/index.html (asset URLs are already root-absolute).\n relocateClientHtml(root)\n })\n\n const serverBuild = model.hasServer\n ? timedAsync(\"build:server\", () => buildServer(root))\n : Promise.resolve()\n\n await Promise.all([clientBuild, serverBuild])\n\n writeDeployManifest(root, model)\n if (!quiet) log.ok(`Build complete → ${path.relative(process.cwd(), path.join(root, \"dist\")) || \"dist\"}/`)\n\n if (args.flags.json) {\n process.stdout.write(\n JSON.stringify({\n ok: true,\n mode: model.hasServer ? \"fullstack\" : \"spa\",\n output: \"dist\",\n pages: model.pages.length,\n apis: model.apis.length,\n }) + \"\\n\",\n )\n }\n return 0\n}\n\nfunction relocateClientHtml(root: string): void {\n const clientDir = path.join(root, \"dist\", \"client\")\n const nested = path.join(clientDir, VANTAGE_DIR, \"index.html\")\n const target = path.join(clientDir, \"index.html\")\n if (fs.existsSync(nested)) {\n fs.mkdirSync(clientDir, { recursive: true })\n fs.renameSync(nested, target)\n fs.rmSync(path.join(clientDir, VANTAGE_DIR), { recursive: true, force: true })\n }\n}\n\nasync function buildServer(root: string): Promise<void> {\n // Loaded here, not at module scope: an SPA project never builds a server and\n // should not pay for esbuild's binary being brought up.\n const { build: esbuildBuild } = await import(\"esbuild\")\n const vantageDir = path.join(root, VANTAGE_DIR)\n const entry = path.join(vantageDir, \"server-entry.ts\")\n fs.writeFileSync(entry, SERVER_ENTRY)\n await esbuildBuild({\n entryPoints: [entry],\n outfile: path.join(root, \"dist\", \"server\", \"index.mjs\"),\n bundle: true,\n platform: \"node\",\n format: \"esm\",\n target: \"node20\",\n logLevel: \"warning\",\n banner: { js: \"// @squadbase/vantage server bundle\" },\n })\n}\n\nfunction writeDeployManifest(root: string, model: RouteModel): void {\n const dist = path.join(root, \"dist\")\n fs.mkdirSync(dist, { recursive: true })\n const manifest = {\n schemaVersion: MANIFEST_SCHEMA_VERSION,\n mode: model.hasServer ? \"fullstack\" : \"spa\",\n client: \"./client\",\n ...(model.hasServer ? { server: \"./server/index.mjs\" } : {}),\n spaFallback: \"./client/index.html\",\n runtime: \"node\",\n }\n fs.writeFileSync(path.join(dist, \"vantage-manifest.json\"), JSON.stringify(manifest, null, 2) + \"\\n\")\n}\n"]}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { generateArtifacts, setDraftArtifacts } from './chunk-
|
|
1
|
+
import { generateArtifacts, setDraftArtifacts, restoreClientEntry } from './chunk-WAMZWZJB.js';
|
|
2
2
|
import { scanProject, resolvePageRoot, stripExt, splitPageVariant, fileToSegments, displayPath } from './chunk-RNTDBX6S.js';
|
|
3
3
|
import { corsMiddleware, matchApiRoute, dispatchApi, sortApiRoutes } from './chunk-46QI6GFC.js';
|
|
4
4
|
import { VANTAGE_DIR, NON_ROUTE_DIRS, FILE_PAGE_EXTENSIONS, PAGE_EXTENSIONS, RESERVED_PAGE_NAMES } from './chunk-C2CX6GLX.js';
|
|
5
5
|
import fs3 from 'fs';
|
|
6
|
-
import
|
|
6
|
+
import path6 from 'path';
|
|
7
7
|
import react from '@vitejs/plugin-react';
|
|
8
8
|
import tailwindcss from '@tailwindcss/vite';
|
|
9
9
|
import { Hono } from 'hono';
|
|
10
10
|
import { getRequestListener } from '@hono/node-server';
|
|
11
11
|
import { createHash, timingSafeEqual } from 'crypto';
|
|
12
12
|
import { createRequire } from 'module';
|
|
13
|
-
import { pathToFileURL } from 'url';
|
|
13
|
+
import { pathToFileURL, fileURLToPath } from 'url';
|
|
14
14
|
|
|
15
15
|
// @squadbase/vantage — generated build. Do not edit.
|
|
16
16
|
function createApiDevMiddleware(opts) {
|
|
@@ -50,8 +50,8 @@ function createApiDevMiddleware(opts) {
|
|
|
50
50
|
const listener = getRequestListener(app.fetch);
|
|
51
51
|
return (req, res, next) => {
|
|
52
52
|
const url = req.url ?? "/";
|
|
53
|
-
const
|
|
54
|
-
if (
|
|
53
|
+
const path7 = url.split("?")[0];
|
|
54
|
+
if (path7 === "/api" || path7.startsWith("/api/")) {
|
|
55
55
|
Promise.resolve(listener(req, res)).catch((err) => {
|
|
56
56
|
console.error("[vantage] API middleware failure:", err);
|
|
57
57
|
if (!res.headersSent) {
|
|
@@ -126,7 +126,7 @@ var BorrowedVersions = class {
|
|
|
126
126
|
var loaded;
|
|
127
127
|
async function loadTypeScript(root) {
|
|
128
128
|
try {
|
|
129
|
-
const entry = createRequire(
|
|
129
|
+
const entry = createRequire(path6.join(path6.resolve(root), "package.json")).resolve("typescript");
|
|
130
130
|
const mod = await import(pathToFileURL(entry).href);
|
|
131
131
|
const compiler = mod.default ?? mod;
|
|
132
132
|
if (typeof compiler.createSourceFile !== "function") return null;
|
|
@@ -415,11 +415,11 @@ function needsBreak(head) {
|
|
|
415
415
|
const lastLine = head.slice(head.lastIndexOf("\n") + 1);
|
|
416
416
|
return lastLine.includes("//");
|
|
417
417
|
}
|
|
418
|
-
function isPageModule(
|
|
419
|
-
return /\.tsx$/i.test(
|
|
418
|
+
function isPageModule(path7, pageDir = "") {
|
|
419
|
+
return /\.tsx$/i.test(path7) && isPagePath(path7, pageDir);
|
|
420
420
|
}
|
|
421
|
-
function isPagePath(
|
|
422
|
-
let rel =
|
|
421
|
+
function isPagePath(path7, pageDir) {
|
|
422
|
+
let rel = path7.replace(/\\/g, "/");
|
|
423
423
|
if (pageDir !== "") {
|
|
424
424
|
if (!rel.startsWith(`${pageDir}/`)) return false;
|
|
425
425
|
rel = rel.slice(pageDir.length + 1);
|
|
@@ -427,8 +427,8 @@ function isPagePath(path6, pageDir) {
|
|
|
427
427
|
const dirs = rel.split("/").slice(0, -1);
|
|
428
428
|
return dirs.every((d) => d !== "" && !d.startsWith(".") && !NON_ROUTE_DIRS.has(d));
|
|
429
429
|
}
|
|
430
|
-
function parsesWithExport(code,
|
|
431
|
-
const sf = ts.createSourceFile(
|
|
430
|
+
function parsesWithExport(code, path7, kind, needDefault, needExport) {
|
|
431
|
+
const sf = ts.createSourceFile(path7, code, ts.ScriptTarget.Latest, false, kind);
|
|
432
432
|
const diagnostics = sf.parseDiagnostics;
|
|
433
433
|
if (diagnostics && diagnostics.length > 0) return false;
|
|
434
434
|
const exports = !needExport || sf.statements.some((s) => {
|
|
@@ -438,7 +438,7 @@ function parsesWithExport(code, path6, kind, needDefault, needExport) {
|
|
|
438
438
|
const flags = ts.getCombinedModifierFlags(s);
|
|
439
439
|
return needDefault ? (flags & ts.ModifierFlags.ExportDefault) === ts.ModifierFlags.ExportDefault : (flags & ts.ModifierFlags.Export) !== 0;
|
|
440
440
|
});
|
|
441
|
-
return exports && bodilessFunctions(code,
|
|
441
|
+
return exports && bodilessFunctions(code, path7).length === 0;
|
|
442
442
|
}
|
|
443
443
|
var ID_START = /[A-Za-z_$]/;
|
|
444
444
|
var ID_PART = /[A-Za-z0-9_$]/;
|
|
@@ -641,20 +641,20 @@ function getDraftRoutes(server) {
|
|
|
641
641
|
return instances.get(server);
|
|
642
642
|
}
|
|
643
643
|
function createDraftRoutes(server, _model) {
|
|
644
|
-
const root =
|
|
645
|
-
const vantageDir =
|
|
644
|
+
const root = path6.resolve(server.config.root);
|
|
645
|
+
const vantageDir = path6.join(root, VANTAGE_DIR);
|
|
646
646
|
const pages = /* @__PURE__ */ new Map();
|
|
647
647
|
const committed = /* @__PURE__ */ new Map();
|
|
648
648
|
setDraftArtifacts(root, { hmr: true, pages: [] });
|
|
649
649
|
generateArtifacts({ root, model: scanProject(root) });
|
|
650
650
|
const toRel = (file) => {
|
|
651
|
-
const abs =
|
|
652
|
-
return
|
|
651
|
+
const abs = path6.isAbsolute(file) ? file : path6.resolve(root, file);
|
|
652
|
+
return path6.relative(root, abs).split(path6.sep).join("/");
|
|
653
653
|
};
|
|
654
654
|
const describe = (rel) => {
|
|
655
|
-
if (rel === "" || rel.startsWith("../") ||
|
|
655
|
+
if (rel === "" || rel.startsWith("../") || path6.isAbsolute(rel)) return null;
|
|
656
656
|
const pageRoot = resolvePageRoot(root);
|
|
657
|
-
const fromPageRoot = pageRoot.dir === "" ? rel :
|
|
657
|
+
const fromPageRoot = pageRoot.dir === "" ? rel : path6.posix.relative(pageRoot.dir, rel);
|
|
658
658
|
if (fromPageRoot.startsWith("../") || fromPageRoot === "") return null;
|
|
659
659
|
const parts = fromPageRoot.split("/");
|
|
660
660
|
if (parts.some((s) => NON_ROUTE_DIRS.has(s) || s.startsWith("."))) return null;
|
|
@@ -668,10 +668,10 @@ function createDraftRoutes(server, _model) {
|
|
|
668
668
|
const relNoExt = stripExt(fromPageRoot, PAGE_EXTENSIONS);
|
|
669
669
|
const forSegments = variant ? relNoExt.slice(0, -(variant.length + 1)) : relNoExt;
|
|
670
670
|
const segments = fileToSegments(forSegments);
|
|
671
|
-
const dir =
|
|
671
|
+
const dir = path6.posix.dirname(fromPageRoot);
|
|
672
672
|
return {
|
|
673
673
|
file: rel,
|
|
674
|
-
absFile:
|
|
674
|
+
absFile: path6.join(root, ...rel.split("/")),
|
|
675
675
|
routePath: displayPath(segments),
|
|
676
676
|
segments,
|
|
677
677
|
dir: dir === "." ? "" : dir,
|
|
@@ -700,7 +700,7 @@ function createDraftRoutes(server, _model) {
|
|
|
700
700
|
const container = server.environments?.client?.pluginContainer;
|
|
701
701
|
if (!container) return true;
|
|
702
702
|
try {
|
|
703
|
-
const importer =
|
|
703
|
+
const importer = path6.join(vantageDir, "route-tree.gen.ts");
|
|
704
704
|
return await container.resolveId(`../${rel}`, importer) != null;
|
|
705
705
|
} catch {
|
|
706
706
|
return false;
|
|
@@ -802,12 +802,12 @@ function usedComponents(sf) {
|
|
|
802
802
|
return used;
|
|
803
803
|
}
|
|
804
804
|
function draftTailwind(root) {
|
|
805
|
-
const dir =
|
|
806
|
-
const runtimeCss =
|
|
807
|
-
const mirrorOf = (file) =>
|
|
805
|
+
const dir = path6.join(root, VANTAGE_DIR, "draft-tailwind");
|
|
806
|
+
const runtimeCss = path6.join(root, VANTAGE_DIR, "runtime.css");
|
|
807
|
+
const mirrorOf = (file) => path6.join(dir, path6.relative(root, file).split(path6.sep).join("__"));
|
|
808
808
|
return {
|
|
809
809
|
stylesheet: runtimeCss,
|
|
810
|
-
owns: (file) => file.startsWith(dir +
|
|
810
|
+
owns: (file) => file.startsWith(dir + path6.sep),
|
|
811
811
|
reset() {
|
|
812
812
|
fs3.rmSync(dir, { recursive: true, force: true });
|
|
813
813
|
fs3.mkdirSync(dir, { recursive: true });
|
|
@@ -920,7 +920,7 @@ var ROLLBACK_DEBOUNCE_MS = 150;
|
|
|
920
920
|
var PREV_QUERY = "vantage-draft-prev";
|
|
921
921
|
var SKELETON_PREFIX = "\0vantage-draft-skeleton:";
|
|
922
922
|
function draftPreviewPlugin(options) {
|
|
923
|
-
const root =
|
|
923
|
+
const root = path6.resolve(options.root);
|
|
924
924
|
const token = options.token ?? process.env.VANTAGE_DRAFT_TOKEN;
|
|
925
925
|
const createRoutes = options.createRoutes ?? createDraftRoutes;
|
|
926
926
|
const idleDiscardMs = options.idleDiscardMs ?? DRAFT_IDLE_DISCARD_MS;
|
|
@@ -950,7 +950,7 @@ function draftPreviewPlugin(options) {
|
|
|
950
950
|
const isDraftRequest = (req) => !req.final && !req.discard;
|
|
951
951
|
const SUPERSEDED = { applied: false, reason: "superseded" };
|
|
952
952
|
const submit = (req) => new Promise((resolve, reject) => {
|
|
953
|
-
const key = typeof req.path === "string" && req.path !== "" ?
|
|
953
|
+
const key = typeof req.path === "string" && req.path !== "" ? path6.resolve(root, req.path) : void 0;
|
|
954
954
|
if (key !== void 0) {
|
|
955
955
|
if (!isDraftRequest(req)) {
|
|
956
956
|
for (let i = waiting.length - 1; i >= 0; i--) {
|
|
@@ -984,7 +984,7 @@ function draftPreviewPlugin(options) {
|
|
|
984
984
|
}
|
|
985
985
|
});
|
|
986
986
|
});
|
|
987
|
-
const relOf = (file) =>
|
|
987
|
+
const relOf = (file) => path6.relative(root, file).split(path6.sep).join("/");
|
|
988
988
|
const shown = (file) => drafts.get(file)?.at(-1);
|
|
989
989
|
const diskText = (file) => {
|
|
990
990
|
try {
|
|
@@ -996,10 +996,10 @@ function draftPreviewPlugin(options) {
|
|
|
996
996
|
const candidatesOf = (base) => [
|
|
997
997
|
base,
|
|
998
998
|
...DRAFT_EXTENSIONS.map((ext) => base + ext),
|
|
999
|
-
...DRAFT_EXTENSIONS.map((ext) =>
|
|
999
|
+
...DRAFT_EXTENSIONS.map((ext) => path6.join(base, "index" + ext))
|
|
1000
1000
|
];
|
|
1001
1001
|
const skeletonId = (base) => {
|
|
1002
|
-
const ext =
|
|
1002
|
+
const ext = path6.extname(base);
|
|
1003
1003
|
return SKELETON_PREFIX + (DRAFT_EXTENSIONS.includes(ext) ? base.slice(0, -ext.length) : base);
|
|
1004
1004
|
};
|
|
1005
1005
|
const isWritten = (base) => candidatesOf(base).some((c) => newFiles.has(c) || fs3.existsSync(c));
|
|
@@ -1007,9 +1007,9 @@ function draftPreviewPlugin(options) {
|
|
|
1007
1007
|
const grown = [];
|
|
1008
1008
|
const before = /* @__PURE__ */ new Map();
|
|
1009
1009
|
for (const [specifier, names] of relativeImports(source, rel)) {
|
|
1010
|
-
const ext =
|
|
1010
|
+
const ext = path6.extname(specifier);
|
|
1011
1011
|
if (ext !== "" && !DRAFT_EXTENSIONS.includes(ext)) continue;
|
|
1012
|
-
const base =
|
|
1012
|
+
const base = path6.resolve(path6.dirname(file), specifier);
|
|
1013
1013
|
if (isWritten(base)) continue;
|
|
1014
1014
|
const id = skeletonId(base);
|
|
1015
1015
|
const known = skeletons.get(id);
|
|
@@ -1033,13 +1033,13 @@ function draftPreviewPlugin(options) {
|
|
|
1033
1033
|
};
|
|
1034
1034
|
const resolveTarget = (rel) => {
|
|
1035
1035
|
if (typeof rel !== "string" || rel === "") return "path is required";
|
|
1036
|
-
const file =
|
|
1037
|
-
const relPath =
|
|
1038
|
-
if (relPath === "" || relPath.startsWith("..") ||
|
|
1039
|
-
const segments = relPath.split(
|
|
1036
|
+
const file = path6.resolve(root, rel);
|
|
1037
|
+
const relPath = path6.relative(root, file);
|
|
1038
|
+
if (relPath === "" || relPath.startsWith("..") || path6.isAbsolute(relPath)) return "path is outside the project";
|
|
1039
|
+
const segments = relPath.split(path6.sep);
|
|
1040
1040
|
if (segments[0] === "server") return "server/ is not previewed";
|
|
1041
1041
|
if (segments.some((s) => s === "node_modules" || s.startsWith("."))) return "path is not a project source";
|
|
1042
|
-
if (!DRAFTABLE_EXTENSIONS.includes(
|
|
1042
|
+
if (!DRAFTABLE_EXTENSIONS.includes(path6.extname(file))) return "only .ts and .tsx script modules are previewed";
|
|
1043
1043
|
const exists = fs3.existsSync(file);
|
|
1044
1044
|
if (exists && fs3.statSync(file).isDirectory()) return "path is a directory";
|
|
1045
1045
|
if (exists && !isInside(fs3.realpathSync(root), fs3.realpathSync(file))) return "path is outside the project";
|
|
@@ -1260,7 +1260,7 @@ function draftPreviewPlugin(options) {
|
|
|
1260
1260
|
};
|
|
1261
1261
|
const locate = (name) => {
|
|
1262
1262
|
const clean = name.split("?")[0];
|
|
1263
|
-
const candidates = [
|
|
1263
|
+
const candidates = [path6.resolve(root, clean.replace(/^\//, "")), clean];
|
|
1264
1264
|
return candidates.find((c) => drafts.has(c));
|
|
1265
1265
|
};
|
|
1266
1266
|
const authorized = (req) => {
|
|
@@ -1344,8 +1344,8 @@ function draftPreviewPlugin(options) {
|
|
|
1344
1344
|
if (newFiles.size === 0 && skeletons.size === 0) return null;
|
|
1345
1345
|
const clean = source.split("?")[0];
|
|
1346
1346
|
let base;
|
|
1347
|
-
if (clean.startsWith("/")) base = clean.startsWith(root + "/") ? clean :
|
|
1348
|
-
else if (clean.startsWith(".") && importer) base =
|
|
1347
|
+
if (clean.startsWith("/")) base = clean.startsWith(root + "/") ? clean : path6.join(root, clean);
|
|
1348
|
+
else if (clean.startsWith(".") && importer) base = path6.resolve(path6.dirname(importer.split("?")[0]), clean);
|
|
1349
1349
|
else return null;
|
|
1350
1350
|
const written = candidatesOf(base);
|
|
1351
1351
|
const draftFile = written.find((c) => newFiles.has(c));
|
|
@@ -1373,6 +1373,10 @@ function draftPreviewPlugin(options) {
|
|
|
1373
1373
|
// The borrowed versions share the drafted file but are not what changed.
|
|
1374
1374
|
hotUpdate({ modules, file }) {
|
|
1375
1375
|
if (tailwind?.owns(file)) return [];
|
|
1376
|
+
if (enabled && file === path6.join(root, VANTAGE_DIR, "client-entry.tsx")) {
|
|
1377
|
+
restoreClientEntry(root);
|
|
1378
|
+
return [];
|
|
1379
|
+
}
|
|
1376
1380
|
const kept = modules.filter(
|
|
1377
1381
|
(mod) => mod.id !== null && !mod.url.includes(`${PREV_QUERY}=`) && (!drafted.has(file) || reachable(mod))
|
|
1378
1382
|
);
|
|
@@ -1408,8 +1412,8 @@ function stubExports(source, expected, prevUrl, fileName) {
|
|
|
1408
1412
|
` : source;
|
|
1409
1413
|
}
|
|
1410
1414
|
function isInside(dir, file) {
|
|
1411
|
-
const rel =
|
|
1412
|
-
return rel !== ".." && !rel.startsWith(".." +
|
|
1415
|
+
const rel = path6.relative(dir, file);
|
|
1416
|
+
return rel !== ".." && !rel.startsWith(".." + path6.sep) && !path6.isAbsolute(rel);
|
|
1413
1417
|
}
|
|
1414
1418
|
var REFUSED_PATH = /^path is a directory$/;
|
|
1415
1419
|
function isDynamicRoute(route) {
|
|
@@ -1455,6 +1459,119 @@ function firstLine(err) {
|
|
|
1455
1459
|
const message = err instanceof Error ? err.message : String(err);
|
|
1456
1460
|
return message.split("\n").find((l) => l.trim() !== "")?.trim() ?? "transform failed";
|
|
1457
1461
|
}
|
|
1462
|
+
var PACKAGE_NAME = "@squadbase/vantage";
|
|
1463
|
+
var NOT_PREBUNDLED = /* @__PURE__ */ new Set([
|
|
1464
|
+
"./server",
|
|
1465
|
+
"./server/node",
|
|
1466
|
+
"./vite",
|
|
1467
|
+
"./theme.css",
|
|
1468
|
+
"./package.json",
|
|
1469
|
+
"./markdown",
|
|
1470
|
+
"./table",
|
|
1471
|
+
"./slide",
|
|
1472
|
+
"./doc"
|
|
1473
|
+
]);
|
|
1474
|
+
function ownPackageDir() {
|
|
1475
|
+
let dir = path6.dirname(fileURLToPath(import.meta.url));
|
|
1476
|
+
for (; ; ) {
|
|
1477
|
+
const manifest = path6.join(dir, "package.json");
|
|
1478
|
+
if (fs3.existsSync(manifest)) {
|
|
1479
|
+
try {
|
|
1480
|
+
if (JSON.parse(fs3.readFileSync(manifest, "utf8")).name === PACKAGE_NAME) return dir;
|
|
1481
|
+
} catch {
|
|
1482
|
+
}
|
|
1483
|
+
}
|
|
1484
|
+
const parent = path6.dirname(dir);
|
|
1485
|
+
if (parent === dir) return null;
|
|
1486
|
+
dir = parent;
|
|
1487
|
+
}
|
|
1488
|
+
}
|
|
1489
|
+
function packageName(spec) {
|
|
1490
|
+
const parts = spec.split("/");
|
|
1491
|
+
return spec.startsWith("@") ? parts.slice(0, 2).join("/") : parts[0];
|
|
1492
|
+
}
|
|
1493
|
+
function findPackageDir(fromDir, pkg) {
|
|
1494
|
+
let dir = fromDir;
|
|
1495
|
+
for (; ; ) {
|
|
1496
|
+
const candidate = path6.join(dir, "node_modules", pkg);
|
|
1497
|
+
if (fs3.existsSync(candidate)) return candidate;
|
|
1498
|
+
const parent = path6.dirname(dir);
|
|
1499
|
+
if (parent === dir) return null;
|
|
1500
|
+
dir = parent;
|
|
1501
|
+
}
|
|
1502
|
+
}
|
|
1503
|
+
function resolvesFrom(root, spec) {
|
|
1504
|
+
const pkg = packageName(spec);
|
|
1505
|
+
const dir = findPackageDir(root, pkg);
|
|
1506
|
+
if (!dir) return false;
|
|
1507
|
+
const sub = spec.slice(pkg.length);
|
|
1508
|
+
if (sub === "") return true;
|
|
1509
|
+
let exportsField;
|
|
1510
|
+
try {
|
|
1511
|
+
exportsField = JSON.parse(fs3.readFileSync(path6.join(dir, "package.json"), "utf8")).exports;
|
|
1512
|
+
} catch {
|
|
1513
|
+
return false;
|
|
1514
|
+
}
|
|
1515
|
+
if (exportsField && typeof exportsField === "object" && !Array.isArray(exportsField)) {
|
|
1516
|
+
const keys = Object.keys(exportsField);
|
|
1517
|
+
if (!keys.some((k) => k.startsWith("."))) return false;
|
|
1518
|
+
const wanted = `.${sub}`;
|
|
1519
|
+
return keys.some((key) => {
|
|
1520
|
+
if (key === wanted) return true;
|
|
1521
|
+
const star = key.indexOf("*");
|
|
1522
|
+
if (star < 0) return false;
|
|
1523
|
+
return wanted.startsWith(key.slice(0, star)) && wanted.endsWith(key.slice(star + 1));
|
|
1524
|
+
});
|
|
1525
|
+
}
|
|
1526
|
+
const file = path6.join(dir, sub);
|
|
1527
|
+
return [file, `${file}.js`, `${file}.mjs`, path6.join(file, "index.js")].some((f) => fs3.existsSync(f));
|
|
1528
|
+
}
|
|
1529
|
+
function isInstalled(root) {
|
|
1530
|
+
const dir = findPackageDir(root, PACKAGE_NAME);
|
|
1531
|
+
if (!dir) return false;
|
|
1532
|
+
try {
|
|
1533
|
+
return fs3.realpathSync(dir).split(path6.sep).includes("node_modules");
|
|
1534
|
+
} catch {
|
|
1535
|
+
return false;
|
|
1536
|
+
}
|
|
1537
|
+
}
|
|
1538
|
+
function frameworkSubpaths(exportsField) {
|
|
1539
|
+
return Object.keys(exportsField).filter((key) => key.startsWith(".") && !key.includes("*") && !NOT_PREBUNDLED.has(key)).map((key) => key === "." ? PACKAGE_NAME : `${PACKAGE_NAME}${key.slice(1)}`);
|
|
1540
|
+
}
|
|
1541
|
+
function bareImports(source) {
|
|
1542
|
+
const out = /* @__PURE__ */ new Set();
|
|
1543
|
+
const re = /(?:^|[\n;])\s*(?:import|export)\s+(type\s)?(?:[^'";]*?\sfrom\s*)?['"]([^'"\n]+)['"]/g;
|
|
1544
|
+
for (const m of source.matchAll(re)) {
|
|
1545
|
+
const [, typeOnly, spec] = m;
|
|
1546
|
+
if (typeOnly || !spec || /^(\.|\/|node:|@\/|~|#)/.test(spec)) continue;
|
|
1547
|
+
out.add(spec);
|
|
1548
|
+
}
|
|
1549
|
+
return [...out];
|
|
1550
|
+
}
|
|
1551
|
+
function registryDeps(registryDir) {
|
|
1552
|
+
if (!fs3.existsSync(registryDir)) return [];
|
|
1553
|
+
const out = /* @__PURE__ */ new Set();
|
|
1554
|
+
for (const name of fs3.readdirSync(registryDir)) {
|
|
1555
|
+
if (!/\.(tsx?|jsx?)$/.test(name)) continue;
|
|
1556
|
+
for (const spec of bareImports(fs3.readFileSync(path6.join(registryDir, name), "utf8"))) {
|
|
1557
|
+
if (packageName(spec) !== PACKAGE_NAME) out.add(spec);
|
|
1558
|
+
}
|
|
1559
|
+
}
|
|
1560
|
+
return [...out].sort();
|
|
1561
|
+
}
|
|
1562
|
+
function derivedDeps(root) {
|
|
1563
|
+
const pkgDir = ownPackageDir();
|
|
1564
|
+
if (!pkgDir) return [];
|
|
1565
|
+
const out = registryDeps(path6.join(pkgDir, "registry", "ui"));
|
|
1566
|
+
if (isInstalled(root)) {
|
|
1567
|
+
try {
|
|
1568
|
+
const manifest = JSON.parse(fs3.readFileSync(path6.join(pkgDir, "package.json"), "utf8"));
|
|
1569
|
+
if (manifest.exports && typeof manifest.exports === "object") out.push(...frameworkSubpaths(manifest.exports));
|
|
1570
|
+
} catch {
|
|
1571
|
+
}
|
|
1572
|
+
}
|
|
1573
|
+
return out;
|
|
1574
|
+
}
|
|
1458
1575
|
|
|
1459
1576
|
// src/vite/index.ts
|
|
1460
1577
|
var DEDUPE = ["react", "react-dom", "@tanstack/react-router", "@tanstack/react-query"];
|
|
@@ -1498,22 +1615,9 @@ var KIT_DEPS = [
|
|
|
1498
1615
|
"@base-ui/react/tooltip",
|
|
1499
1616
|
"@base-ui/react/use-render"
|
|
1500
1617
|
];
|
|
1501
|
-
function packageName(spec) {
|
|
1502
|
-
const parts = spec.split("/");
|
|
1503
|
-
return spec.startsWith("@") ? parts.slice(0, 2).join("/") : parts[0];
|
|
1504
|
-
}
|
|
1505
|
-
function hasPackage(fromDir, pkg) {
|
|
1506
|
-
let dir = fromDir;
|
|
1507
|
-
for (; ; ) {
|
|
1508
|
-
if (fs3.existsSync(path5.join(dir, "node_modules", pkg))) return true;
|
|
1509
|
-
const parent = path5.dirname(dir);
|
|
1510
|
-
if (parent === dir) return false;
|
|
1511
|
-
dir = parent;
|
|
1512
|
-
}
|
|
1513
|
-
}
|
|
1514
1618
|
function optimizeInclude(root, extra) {
|
|
1515
|
-
return [...RUNTIME_DEPS, ...KIT_DEPS, ...extra].filter(
|
|
1516
|
-
(spec) =>
|
|
1619
|
+
return [.../* @__PURE__ */ new Set([...RUNTIME_DEPS, ...KIT_DEPS, ...derivedDeps(root), ...extra])].filter(
|
|
1620
|
+
(spec) => resolvesFrom(root, spec)
|
|
1517
1621
|
);
|
|
1518
1622
|
}
|
|
1519
1623
|
var FILE_PAGE_DEPS = ["papaparse", "read-excel-file/browser"];
|
|
@@ -1525,9 +1629,9 @@ function conditionalDeps(model) {
|
|
|
1525
1629
|
];
|
|
1526
1630
|
}
|
|
1527
1631
|
function underPageRoot(pageRoot, file) {
|
|
1528
|
-
const rel =
|
|
1632
|
+
const rel = path6.relative(pageRoot, file);
|
|
1529
1633
|
if (rel.startsWith("..")) return false;
|
|
1530
|
-
const segments = rel.split(
|
|
1634
|
+
const segments = rel.split(path6.sep);
|
|
1531
1635
|
return !segments.some((s) => NON_ROUTE_DIRS.has(s) || s.startsWith(".") && s !== "..");
|
|
1532
1636
|
}
|
|
1533
1637
|
function isPageModuleFile(pageRoot, file) {
|
|
@@ -1541,20 +1645,20 @@ function isFilePageFile(pageRoot, file) {
|
|
|
1541
1645
|
return underPageRoot(pageRoot, file) && FILE_PAGE_EXTENSIONS.some((ext) => lower.endsWith(ext));
|
|
1542
1646
|
}
|
|
1543
1647
|
function isApiFile(root, file) {
|
|
1544
|
-
const rel =
|
|
1545
|
-
return rel.startsWith(`server${
|
|
1648
|
+
const rel = path6.relative(root, file);
|
|
1649
|
+
return rel.startsWith(`server${path6.sep}api${path6.sep}`) && /\.(ts|tsx|js)$/.test(file) && !file.endsWith(".d.ts");
|
|
1546
1650
|
}
|
|
1547
1651
|
function isServerFile(root, file) {
|
|
1548
|
-
const rel =
|
|
1549
|
-
return rel === "server" || rel.startsWith(`server${
|
|
1652
|
+
const rel = path6.relative(root, file);
|
|
1653
|
+
return rel === "server" || rel.startsWith(`server${path6.sep}`);
|
|
1550
1654
|
}
|
|
1551
1655
|
function vantagePlugin(options) {
|
|
1552
|
-
const root =
|
|
1553
|
-
const vantageDir =
|
|
1656
|
+
const root = path6.resolve(options.root);
|
|
1657
|
+
const vantageDir = path6.join(root, VANTAGE_DIR);
|
|
1554
1658
|
let model = options.model ?? scanProject(root);
|
|
1555
1659
|
let generated = Boolean(options.artifactsWritten);
|
|
1556
1660
|
let shellHtml = null;
|
|
1557
|
-
const pageRoot = () => model.pageDir === "" ? root :
|
|
1661
|
+
const pageRoot = () => model.pageDir === "" ? root : path6.join(root, model.pageDir);
|
|
1558
1662
|
const emit = () => {
|
|
1559
1663
|
generateArtifacts({ root, model });
|
|
1560
1664
|
generated = true;
|
|
@@ -1588,10 +1692,10 @@ function vantagePlugin(options) {
|
|
|
1588
1692
|
forwardConsole: { unhandledErrors: true, logLevels: ["warn", "error"] }
|
|
1589
1693
|
},
|
|
1590
1694
|
build: {
|
|
1591
|
-
outDir:
|
|
1695
|
+
outDir: path6.join(root, "dist", "client"),
|
|
1592
1696
|
emptyOutDir: true,
|
|
1593
1697
|
rollupOptions: {
|
|
1594
|
-
input:
|
|
1698
|
+
input: path6.join(vantageDir, "index.html")
|
|
1595
1699
|
}
|
|
1596
1700
|
}
|
|
1597
1701
|
};
|
|
@@ -1608,17 +1712,17 @@ function vantagePlugin(options) {
|
|
|
1608
1712
|
if (!importer) return null;
|
|
1609
1713
|
const imp = importer.split("?")[0];
|
|
1610
1714
|
if (!imp.startsWith(root)) return null;
|
|
1611
|
-
const relImp =
|
|
1612
|
-
if (relImp.startsWith(`server${
|
|
1715
|
+
const relImp = path6.relative(root, imp);
|
|
1716
|
+
if (relImp.startsWith(`server${path6.sep}`) || relImp.startsWith(VANTAGE_DIR) || relImp.includes("node_modules")) {
|
|
1613
1717
|
return null;
|
|
1614
1718
|
}
|
|
1615
1719
|
let target = null;
|
|
1616
|
-
if (source.startsWith(".")) target =
|
|
1617
|
-
else if (source.startsWith("/")) target =
|
|
1618
|
-
else if (source === "server" || source.startsWith("server/")) target =
|
|
1720
|
+
if (source.startsWith(".")) target = path6.resolve(path6.dirname(imp), source);
|
|
1721
|
+
else if (source.startsWith("/")) target = path6.join(root, source.slice(1));
|
|
1722
|
+
else if (source === "server" || source.startsWith("server/")) target = path6.join(root, source);
|
|
1619
1723
|
if (!target) return null;
|
|
1620
|
-
const relTarget =
|
|
1621
|
-
if (relTarget === "server" || relTarget.startsWith(`server${
|
|
1724
|
+
const relTarget = path6.relative(root, target);
|
|
1725
|
+
if (relTarget === "server" || relTarget.startsWith(`server${path6.sep}`)) {
|
|
1622
1726
|
this.error(
|
|
1623
1727
|
`Client module "${relImp}" imports from server/ ("${source}"). server/ code must never reach the client bundle \u2014 move shared code to lib/.`
|
|
1624
1728
|
);
|
|
@@ -1650,7 +1754,7 @@ function vantagePlugin(options) {
|
|
|
1650
1754
|
if (model.hasServer) return apiMw(req, res, next);
|
|
1651
1755
|
return next();
|
|
1652
1756
|
});
|
|
1653
|
-
const isStylesFile = (file) =>
|
|
1757
|
+
const isStylesFile = (file) => path6.relative(pageRoot(), file) === "styles.css";
|
|
1654
1758
|
const rootMoved = () => resolvePageRoot(root).dir !== model.pageDir;
|
|
1655
1759
|
const onStructural = (file) => {
|
|
1656
1760
|
const moved = rootMoved();
|
|
@@ -1662,9 +1766,9 @@ function vantagePlugin(options) {
|
|
|
1662
1766
|
};
|
|
1663
1767
|
const isRouteDir = (dir) => {
|
|
1664
1768
|
if (isServerFile(root, dir)) return true;
|
|
1665
|
-
const rel =
|
|
1769
|
+
const rel = path6.relative(pageRoot(), dir);
|
|
1666
1770
|
if (rel === "" || rel.startsWith("..")) return false;
|
|
1667
|
-
return !rel.split(
|
|
1771
|
+
return !rel.split(path6.sep).some((s) => NON_ROUTE_DIRS.has(s) || s.startsWith("."));
|
|
1668
1772
|
};
|
|
1669
1773
|
server.watcher.on("add", onStructural);
|
|
1670
1774
|
server.watcher.on("unlink", onStructural);
|
|
@@ -1689,7 +1793,7 @@ function vantagePlugin(options) {
|
|
|
1689
1793
|
if (req.method !== "GET" && req.method !== "HEAD") return next();
|
|
1690
1794
|
try {
|
|
1691
1795
|
if (shellHtml === null) {
|
|
1692
|
-
const raw = fs3.readFileSync(
|
|
1796
|
+
const raw = fs3.readFileSync(path6.join(vantageDir, "index.html"), "utf8");
|
|
1693
1797
|
const shellUrl = `/${VANTAGE_DIR}/index.html`;
|
|
1694
1798
|
shellHtml = await server.transformIndexHtml(shellUrl, raw, req.originalUrl);
|
|
1695
1799
|
}
|
|
@@ -1712,5 +1816,5 @@ function vantagePlugin(options) {
|
|
|
1712
1816
|
}
|
|
1713
1817
|
|
|
1714
1818
|
export { vantagePlugin };
|
|
1715
|
-
//# sourceMappingURL=chunk-
|
|
1716
|
-
//# sourceMappingURL=chunk-
|
|
1819
|
+
//# sourceMappingURL=chunk-2ICNHUG6.js.map
|
|
1820
|
+
//# sourceMappingURL=chunk-2ICNHUG6.js.map
|