@launchsecure/launch-kit 0.0.22 → 0.0.23
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/server/chart-serve.js +18 -3
- package/dist/server/cli.js +18 -3
- package/dist/server/graph-mcp-entry.js +18 -3
- package/package.json +1 -1
|
@@ -1346,7 +1346,13 @@ function generate(rootDir) {
|
|
|
1346
1346
|
...authWrappers.length > 0 ? { auth: authWrappers } : {},
|
|
1347
1347
|
...dbCalls.length > 0 ? { _dbCalls: dbCalls } : {}
|
|
1348
1348
|
});
|
|
1349
|
-
if (route)
|
|
1349
|
+
if (route) {
|
|
1350
|
+
routeToNodeId.set(route, id);
|
|
1351
|
+
const trimmed = route.replace(/\/\*[^/]+\?$/, "");
|
|
1352
|
+
if (trimmed && trimmed !== route && !routeToNodeId.has(trimmed)) {
|
|
1353
|
+
routeToNodeId.set(trimmed, id);
|
|
1354
|
+
}
|
|
1355
|
+
}
|
|
1350
1356
|
}
|
|
1351
1357
|
}
|
|
1352
1358
|
const uiEdges = [];
|
|
@@ -2388,6 +2394,10 @@ function buildApiPathMap(routes) {
|
|
|
2388
2394
|
const map = /* @__PURE__ */ new Map();
|
|
2389
2395
|
for (const r of routes) {
|
|
2390
2396
|
if (!map.has(r.path)) map.set(r.path, r.nodeId);
|
|
2397
|
+
const trimmed = r.path.replace(/\/\*[^/]+\?$/, "");
|
|
2398
|
+
if (trimmed && trimmed !== r.path && !map.has(trimmed)) {
|
|
2399
|
+
map.set(trimmed, r.nodeId);
|
|
2400
|
+
}
|
|
2391
2401
|
}
|
|
2392
2402
|
return map;
|
|
2393
2403
|
}
|
|
@@ -3894,6 +3904,9 @@ var GENERIC_ROLE_NAMES_BUILTIN = /* @__PURE__ */ new Set([
|
|
|
3894
3904
|
"__tests__",
|
|
3895
3905
|
"spec",
|
|
3896
3906
|
"specs",
|
|
3907
|
+
"scripts",
|
|
3908
|
+
"bin",
|
|
3909
|
+
"tools",
|
|
3897
3910
|
// Go
|
|
3898
3911
|
"cmd",
|
|
3899
3912
|
"pkg",
|
|
@@ -4521,7 +4534,7 @@ function checkDeadScreens(rootDir) {
|
|
|
4521
4534
|
const pages = ui.nodes.filter((n) => n.type === "page" || n.type === "layout");
|
|
4522
4535
|
const navTargets = /* @__PURE__ */ new Set();
|
|
4523
4536
|
for (const e of ui.edges) {
|
|
4524
|
-
if (e.type === "navigates" || e.type === "renders" || e.type === "imports") {
|
|
4537
|
+
if (e.type === "navigates" || e.type === "renders" || e.type === "imports" || e.type === "wraps") {
|
|
4525
4538
|
navTargets.add(e.target);
|
|
4526
4539
|
}
|
|
4527
4540
|
}
|
|
@@ -4531,13 +4544,15 @@ function checkDeadScreens(rootDir) {
|
|
|
4531
4544
|
for (const page of pages) {
|
|
4532
4545
|
if (page.id.endsWith("layout.tsx") && page.id.split("/").length <= 2) continue;
|
|
4533
4546
|
if (["error.tsx", "loading.tsx", "not-found.tsx", "template.tsx"].some((s) => page.id.endsWith(s))) continue;
|
|
4547
|
+
const route = page.route;
|
|
4548
|
+
if (route === "/" || route === "") continue;
|
|
4534
4549
|
if (!navTargets.has(page.id)) {
|
|
4535
4550
|
findings.push({
|
|
4536
4551
|
id: `dead:${page.id}`,
|
|
4537
4552
|
severity: "info",
|
|
4538
4553
|
category: "dead_screens",
|
|
4539
4554
|
title: page.name,
|
|
4540
|
-
detail: `Page "${page.id}" has no incoming navigation, render, or
|
|
4555
|
+
detail: `Page "${page.id}" has no incoming navigation, render, import, or layout-wrap edges.`,
|
|
4541
4556
|
file: page.id
|
|
4542
4557
|
});
|
|
4543
4558
|
}
|
package/dist/server/cli.js
CHANGED
|
@@ -7703,7 +7703,13 @@ function generate(rootDir) {
|
|
|
7703
7703
|
...authWrappers.length > 0 ? { auth: authWrappers } : {},
|
|
7704
7704
|
...dbCalls.length > 0 ? { _dbCalls: dbCalls } : {}
|
|
7705
7705
|
});
|
|
7706
|
-
if (route)
|
|
7706
|
+
if (route) {
|
|
7707
|
+
routeToNodeId.set(route, id);
|
|
7708
|
+
const trimmed = route.replace(/\/\*[^/]+\?$/, "");
|
|
7709
|
+
if (trimmed && trimmed !== route && !routeToNodeId.has(trimmed)) {
|
|
7710
|
+
routeToNodeId.set(trimmed, id);
|
|
7711
|
+
}
|
|
7712
|
+
}
|
|
7707
7713
|
}
|
|
7708
7714
|
}
|
|
7709
7715
|
const uiEdges = [];
|
|
@@ -8745,6 +8751,10 @@ function buildApiPathMap(routes) {
|
|
|
8745
8751
|
const map = /* @__PURE__ */ new Map();
|
|
8746
8752
|
for (const r of routes) {
|
|
8747
8753
|
if (!map.has(r.path)) map.set(r.path, r.nodeId);
|
|
8754
|
+
const trimmed = r.path.replace(/\/\*[^/]+\?$/, "");
|
|
8755
|
+
if (trimmed && trimmed !== r.path && !map.has(trimmed)) {
|
|
8756
|
+
map.set(trimmed, r.nodeId);
|
|
8757
|
+
}
|
|
8748
8758
|
}
|
|
8749
8759
|
return map;
|
|
8750
8760
|
}
|
|
@@ -10251,6 +10261,9 @@ var GENERIC_ROLE_NAMES_BUILTIN = /* @__PURE__ */ new Set([
|
|
|
10251
10261
|
"__tests__",
|
|
10252
10262
|
"spec",
|
|
10253
10263
|
"specs",
|
|
10264
|
+
"scripts",
|
|
10265
|
+
"bin",
|
|
10266
|
+
"tools",
|
|
10254
10267
|
// Go
|
|
10255
10268
|
"cmd",
|
|
10256
10269
|
"pkg",
|
|
@@ -11099,7 +11112,7 @@ function checkDeadScreens(rootDir) {
|
|
|
11099
11112
|
const pages = ui.nodes.filter((n) => n.type === "page" || n.type === "layout");
|
|
11100
11113
|
const navTargets = /* @__PURE__ */ new Set();
|
|
11101
11114
|
for (const e of ui.edges) {
|
|
11102
|
-
if (e.type === "navigates" || e.type === "renders" || e.type === "imports") {
|
|
11115
|
+
if (e.type === "navigates" || e.type === "renders" || e.type === "imports" || e.type === "wraps") {
|
|
11103
11116
|
navTargets.add(e.target);
|
|
11104
11117
|
}
|
|
11105
11118
|
}
|
|
@@ -11109,13 +11122,15 @@ function checkDeadScreens(rootDir) {
|
|
|
11109
11122
|
for (const page of pages) {
|
|
11110
11123
|
if (page.id.endsWith("layout.tsx") && page.id.split("/").length <= 2) continue;
|
|
11111
11124
|
if (["error.tsx", "loading.tsx", "not-found.tsx", "template.tsx"].some((s) => page.id.endsWith(s))) continue;
|
|
11125
|
+
const route = page.route;
|
|
11126
|
+
if (route === "/" || route === "") continue;
|
|
11112
11127
|
if (!navTargets.has(page.id)) {
|
|
11113
11128
|
findings.push({
|
|
11114
11129
|
id: `dead:${page.id}`,
|
|
11115
11130
|
severity: "info",
|
|
11116
11131
|
category: "dead_screens",
|
|
11117
11132
|
title: page.name,
|
|
11118
|
-
detail: `Page "${page.id}" has no incoming navigation, render, or
|
|
11133
|
+
detail: `Page "${page.id}" has no incoming navigation, render, import, or layout-wrap edges.`,
|
|
11119
11134
|
file: page.id
|
|
11120
11135
|
});
|
|
11121
11136
|
}
|
|
@@ -1414,7 +1414,13 @@ function generate(rootDir) {
|
|
|
1414
1414
|
...authWrappers.length > 0 ? { auth: authWrappers } : {},
|
|
1415
1415
|
...dbCalls.length > 0 ? { _dbCalls: dbCalls } : {}
|
|
1416
1416
|
});
|
|
1417
|
-
if (route)
|
|
1417
|
+
if (route) {
|
|
1418
|
+
routeToNodeId.set(route, id);
|
|
1419
|
+
const trimmed = route.replace(/\/\*[^/]+\?$/, "");
|
|
1420
|
+
if (trimmed && trimmed !== route && !routeToNodeId.has(trimmed)) {
|
|
1421
|
+
routeToNodeId.set(trimmed, id);
|
|
1422
|
+
}
|
|
1423
|
+
}
|
|
1418
1424
|
}
|
|
1419
1425
|
}
|
|
1420
1426
|
const uiEdges = [];
|
|
@@ -2497,6 +2503,10 @@ function buildApiPathMap(routes) {
|
|
|
2497
2503
|
const map = /* @__PURE__ */ new Map();
|
|
2498
2504
|
for (const r of routes) {
|
|
2499
2505
|
if (!map.has(r.path)) map.set(r.path, r.nodeId);
|
|
2506
|
+
const trimmed = r.path.replace(/\/\*[^/]+\?$/, "");
|
|
2507
|
+
if (trimmed && trimmed !== r.path && !map.has(trimmed)) {
|
|
2508
|
+
map.set(trimmed, r.nodeId);
|
|
2509
|
+
}
|
|
2500
2510
|
}
|
|
2501
2511
|
return map;
|
|
2502
2512
|
}
|
|
@@ -4133,6 +4143,9 @@ var init_module_tagger = __esm({
|
|
|
4133
4143
|
"__tests__",
|
|
4134
4144
|
"spec",
|
|
4135
4145
|
"specs",
|
|
4146
|
+
"scripts",
|
|
4147
|
+
"bin",
|
|
4148
|
+
"tools",
|
|
4136
4149
|
// Go
|
|
4137
4150
|
"cmd",
|
|
4138
4151
|
"pkg",
|
|
@@ -4643,7 +4656,7 @@ function checkDeadScreens(rootDir) {
|
|
|
4643
4656
|
const pages = ui.nodes.filter((n) => n.type === "page" || n.type === "layout");
|
|
4644
4657
|
const navTargets = /* @__PURE__ */ new Set();
|
|
4645
4658
|
for (const e of ui.edges) {
|
|
4646
|
-
if (e.type === "navigates" || e.type === "renders" || e.type === "imports") {
|
|
4659
|
+
if (e.type === "navigates" || e.type === "renders" || e.type === "imports" || e.type === "wraps") {
|
|
4647
4660
|
navTargets.add(e.target);
|
|
4648
4661
|
}
|
|
4649
4662
|
}
|
|
@@ -4653,13 +4666,15 @@ function checkDeadScreens(rootDir) {
|
|
|
4653
4666
|
for (const page of pages) {
|
|
4654
4667
|
if (page.id.endsWith("layout.tsx") && page.id.split("/").length <= 2) continue;
|
|
4655
4668
|
if (["error.tsx", "loading.tsx", "not-found.tsx", "template.tsx"].some((s) => page.id.endsWith(s))) continue;
|
|
4669
|
+
const route = page.route;
|
|
4670
|
+
if (route === "/" || route === "") continue;
|
|
4656
4671
|
if (!navTargets.has(page.id)) {
|
|
4657
4672
|
findings.push({
|
|
4658
4673
|
id: `dead:${page.id}`,
|
|
4659
4674
|
severity: "info",
|
|
4660
4675
|
category: "dead_screens",
|
|
4661
4676
|
title: page.name,
|
|
4662
|
-
detail: `Page "${page.id}" has no incoming navigation, render, or
|
|
4677
|
+
detail: `Page "${page.id}" has no incoming navigation, render, import, or layout-wrap edges.`,
|
|
4663
4678
|
file: page.id
|
|
4664
4679
|
});
|
|
4665
4680
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@launchsecure/launch-kit",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.23",
|
|
4
4
|
"description": "LaunchSecure toolkit — launch-pod (pipeline), launch-chart (project graph MCP), launch-deck (visual playground MCP).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "LaunchSecure - AutomateWithUs",
|