@devrouter/cli 0.0.48 → 0.0.49

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/devrouter.js CHANGED
@@ -2668,7 +2668,7 @@ function loadRepoConfig(repoPath) {
2668
2668
  const config = parseConfig(parsed ?? {}, configPath);
2669
2669
  const requiredVersion = config.devrouter?.version;
2670
2670
  if (requiredVersion && !hasWarnedVersionMismatch) {
2671
- const cliVersion = true ? "0.0.48" : "0.0.0-dev";
2671
+ const cliVersion = true ? "0.0.49" : "0.0.0-dev";
2672
2672
  if (cliVersion !== "0.0.0-dev" && compareSemver(requiredVersion, cliVersion) > 0) {
2673
2673
  hasWarnedVersionMismatch = true;
2674
2674
  process.stderr.write(
@@ -8986,7 +8986,7 @@ async function buildDoctorReport(options = {}) {
8986
8986
  const config = runtimeConfig.config;
8987
8987
  loadedConfig = config;
8988
8988
  loadedWorkspace = runtimeConfig.workspace;
8989
- const cliVersion = true ? "0.0.48" : "0.0.0-dev";
8989
+ const cliVersion = true ? "0.0.49" : "0.0.0-dev";
8990
8990
  const configVersion = config.devrouter?.version;
8991
8991
  if (configVersion && cliVersion !== "0.0.0-dev" && compareSemver(configVersion, cliVersion) > 0) {
8992
8992
  addCheck(checks, {
@@ -9741,7 +9741,7 @@ function inspectRouterApi(protocol) {
9741
9741
  "--fail",
9742
9742
  "--max-time",
9743
9743
  "2",
9744
- `${ROUTER_API_BASE}/${protocol}/routers`
9744
+ `${ROUTER_API_BASE}/${protocol}/routers?per_page=${ROUTER_API_PAGE_SIZE}`
9745
9745
  ],
9746
9746
  { encoding: "utf-8" }
9747
9747
  );
@@ -9762,6 +9762,7 @@ function inspectRouterApi(protocol) {
9762
9762
  }
9763
9763
  return {
9764
9764
  ok: true,
9765
+ reachedPageLimit: value.length >= ROUTER_API_PAGE_SIZE,
9765
9766
  names: new Set(
9766
9767
  value.flatMap((item) => {
9767
9768
  if (!item || typeof item !== "object") return [];
@@ -9783,7 +9784,13 @@ function inspectExpectedRoutes(routes) {
9783
9784
  missing.push(...expected);
9784
9785
  continue;
9785
9786
  }
9786
- missing.push(...expected.filter((name) => !result.names.has(name)));
9787
+ const absent = expected.filter((name) => !result.names.has(name));
9788
+ if (absent.length > 0 && result.reachedPageLimit) {
9789
+ failures.push(
9790
+ `${protocol.toUpperCase()} router API reached the ${ROUTER_API_PAGE_SIZE}-entry safety limit`
9791
+ );
9792
+ }
9793
+ missing.push(...absent);
9787
9794
  }
9788
9795
  return missing.length === 0 ? { ok: true } : {
9789
9796
  ok: false,
@@ -9831,7 +9838,7 @@ async function ensureTraefikRoutesLoaded(routes, options = {}) {
9831
9838
  }
9832
9839
  );
9833
9840
  }
9834
- var import_node_child_process20, import_node_fs24, import_node_path25, ROUTER_API_BASE, ROUTER_RELOAD_LOCK_FILE, DEFAULT_INITIAL_TIMEOUT_MS, DEFAULT_RECOVERY_TIMEOUT_MS, DEFAULT_POLL_INTERVAL_MS;
9841
+ var import_node_child_process20, import_node_fs24, import_node_path25, ROUTER_API_BASE, ROUTER_RELOAD_LOCK_FILE, DEFAULT_INITIAL_TIMEOUT_MS, DEFAULT_RECOVERY_TIMEOUT_MS, DEFAULT_POLL_INTERVAL_MS, ROUTER_API_PAGE_SIZE;
9835
9842
  var init_traefik_route_health = __esm({
9836
9843
  "src/core/traefik-route-health.ts"() {
9837
9844
  "use strict";
@@ -9846,6 +9853,7 @@ var init_traefik_route_health = __esm({
9846
9853
  DEFAULT_INITIAL_TIMEOUT_MS = 3e3;
9847
9854
  DEFAULT_RECOVERY_TIMEOUT_MS = 1e4;
9848
9855
  DEFAULT_POLL_INTERVAL_MS = 250;
9856
+ ROUTER_API_PAGE_SIZE = 1e3;
9849
9857
  }
9850
9858
  });
9851
9859
 
@@ -15502,7 +15510,7 @@ var init_version = __esm({
15502
15510
 
15503
15511
  // src/cli.ts
15504
15512
  var import_commander = require("commander");
15505
- var CLI_VERSION = true ? "0.0.48" : "0.0.0-dev";
15513
+ var CLI_VERSION = true ? "0.0.49" : "0.0.0-dev";
15506
15514
  var VERSION_FLAGS = /* @__PURE__ */ new Set(["-V", "--version"]);
15507
15515
  function withErrorHandling(action2) {
15508
15516
  return async (...args) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devrouter/cli",
3
- "version": "0.0.48",
3
+ "version": "0.0.49",
4
4
  "description": "Local dev routing CLI with shared Traefik reverse proxy",
5
5
  "author": "Roland Schlaefli",
6
6
  "homepage": "https://github.com/rschlaefli/devrouter#readme",
@@ -0,0 +1,26 @@
1
+ # Upgrade to devrouter 0.0.49
2
+
3
+ Devrouter now checks a bounded 1,000-router view from both Traefik router APIs
4
+ when proving managed routes. This prevents Traefik's default 100-entry page
5
+ from hiding a valid route in a large shared installation.
6
+
7
+ 1. Install `@devrouter/cli@0.0.49` on the host and bump `.devrouter.yml` to
8
+ `devrouter.version: 0.0.49`.
9
+ 2. Keep using `devrouter ensure <checkout>`. Route naming, publication, and
10
+ restart-once recovery are unchanged.
11
+ 3. If an expected router is absent from a full 1,000-entry API response,
12
+ Devrouter intentionally fails closed because the API view may be incomplete.
13
+
14
+ Verification:
15
+
16
+ - Run `devrouter -V --repo <checkout>` and confirm the installed CLI and local
17
+ repository report `0.0.49`.
18
+ - Start one safe representative managed profile with `devrouter ensure`, verify
19
+ its expected routes and zero profile drift, then stop that exact checkout and
20
+ require zero remaining routes.
21
+
22
+ Report template:
23
+
24
+ - CLI/config version: `0.0.49`
25
+ - Representative route proof and stop: `<passed, deferred, or details>`
26
+ - Remaining blockers: `<none or details>`