@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.
@@ -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) routeToNodeId.set(route, id);
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 import edges.`,
4555
+ detail: `Page "${page.id}" has no incoming navigation, render, import, or layout-wrap edges.`,
4541
4556
  file: page.id
4542
4557
  });
4543
4558
  }
@@ -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) routeToNodeId.set(route, id);
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 import edges.`,
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) routeToNodeId.set(route, id);
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 import edges.`,
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.22",
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",