@frontmcp/plugin-dashboard 1.8.0 → 1.8.2

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/esm/index.mjs CHANGED
@@ -3681,6 +3681,90 @@ var init_cloudflare_kv = __esm({
3681
3681
  }
3682
3682
  });
3683
3683
  init_runtime();
3684
+ var IPV4_OCTET_PATTERN = /^(0|[1-9]\d{0,2})$/;
3685
+ var IPV6_GROUP_PATTERN = /^[0-9a-f]{1,4}$/;
3686
+ var IPV4_BLOCKS = compileBlocks(
3687
+ [
3688
+ ["0.0.0.0/8", "this-network"],
3689
+ ["10.0.0.0/8", "private"],
3690
+ ["100.64.0.0/10", "carrier-grade-nat"],
3691
+ ["127.0.0.0/8", "loopback"],
3692
+ ["169.254.0.0/16", "link-local"],
3693
+ ["172.16.0.0/12", "private"],
3694
+ ["192.0.0.0/24", "ietf-protocol"],
3695
+ ["192.168.0.0/16", "private"],
3696
+ ["198.18.0.0/15", "benchmarking"],
3697
+ ["224.0.0.0/4", "multicast"],
3698
+ ["255.255.255.255/32", "reserved"],
3699
+ ["240.0.0.0/4", "reserved"]
3700
+ ],
3701
+ parseIpv4
3702
+ );
3703
+ var IPV6_BLOCKS = compileBlocks(
3704
+ [
3705
+ ["::/128", "unspecified"],
3706
+ ["::1/128", "loopback"],
3707
+ ["fd00:ec2::254/128", "cloud-metadata"],
3708
+ ["fc00::/7", "private"],
3709
+ ["fe80::/10", "link-local"],
3710
+ ["fec0::/10", "site-local"],
3711
+ // RFC 8215 local-use NAT64: where the IPv4 address sits depends on the operator's prefix length.
3712
+ ["64:ff9b:1::/48", "local-use-nat64"],
3713
+ ["ff00::/8", "multicast"]
3714
+ ],
3715
+ expandIpv6
3716
+ );
3717
+ var IPV4_EMBEDDINGS = compileBlocks(
3718
+ [
3719
+ ["::ffff:0:0/96", 6],
3720
+ ["::ffff:0:0:0/96", 6],
3721
+ ["::/96", 6],
3722
+ ["64:ff9b::/96", 6],
3723
+ ["2002::/16", 1]
3724
+ ],
3725
+ expandIpv6
3726
+ );
3727
+ function parseIpv4(address) {
3728
+ const parts = address.split(".");
3729
+ if (parts.length !== 4 || !parts.every((part) => IPV4_OCTET_PATTERN.test(part))) return void 0;
3730
+ const octets = parts.map(Number);
3731
+ return octets.every((octet) => octet <= 255) ? octets : void 0;
3732
+ }
3733
+ function expandIpv6(address) {
3734
+ const zoneIndex = address.indexOf("%");
3735
+ let text = (zoneIndex === -1 ? address : address.slice(0, zoneIndex)).toLowerCase();
3736
+ const lastColonIndex = text.lastIndexOf(":");
3737
+ const trailingSegment = text.slice(lastColonIndex + 1);
3738
+ if (lastColonIndex !== -1 && trailingSegment.includes(".")) {
3739
+ const octets = parseIpv4(trailingSegment);
3740
+ if (!octets) return void 0;
3741
+ const highGroup = (octets[0] << 8 | octets[1]).toString(16);
3742
+ const lowGroup = (octets[2] << 8 | octets[3]).toString(16);
3743
+ text = `${text.slice(0, lastColonIndex + 1)}${highGroup}:${lowGroup}`;
3744
+ }
3745
+ const halves = text.split("::");
3746
+ if (halves.length > 2) return void 0;
3747
+ const head = parseIpv6Groups(halves[0]);
3748
+ if (!head) return void 0;
3749
+ if (halves.length === 1) return head.length === 8 ? head : void 0;
3750
+ const tail = parseIpv6Groups(halves[1]);
3751
+ if (!tail || head.length + tail.length > 7) return void 0;
3752
+ return [...head, ...new Array(8 - head.length - tail.length).fill(0), ...tail];
3753
+ }
3754
+ function parseIpv6Groups(part) {
3755
+ if (part === "") return [];
3756
+ const groups = part.split(":");
3757
+ if (!groups.every((group) => IPV6_GROUP_PATTERN.test(group))) return void 0;
3758
+ return groups.map((group) => parseInt(group, 16));
3759
+ }
3760
+ function compileBlocks(entries, parseNetwork) {
3761
+ return entries.map(([cidr, value]) => {
3762
+ const [networkText, prefixText] = cidr.split("/");
3763
+ const network = parseNetwork(networkText);
3764
+ if (!network) throw new Error(`Invalid network in address block "${cidr}"`);
3765
+ return { cidr, network, prefixLength: Number(prefixText), value };
3766
+ });
3767
+ }
3684
3768
  init_fs2();
3685
3769
  init_crypto();
3686
3770
  var entryAvailabilitySchema = z3.object({
package/esm/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frontmcp/plugin-dashboard",
3
- "version": "1.8.0",
3
+ "version": "1.8.2",
4
4
  "description": "Dashboard plugin for FrontMCP - visual monitoring and introspection of MCP servers",
5
5
  "author": "AgentFront <info@agentfront.dev>",
6
6
  "license": "Apache-2.0",
@@ -47,12 +47,12 @@
47
47
  }
48
48
  },
49
49
  "dependencies": {
50
- "@frontmcp/sdk": "1.8.0"
50
+ "@frontmcp/sdk": "1.8.2"
51
51
  },
52
52
  "devDependencies": {
53
53
  "reflect-metadata": "^0.2.2"
54
54
  },
55
55
  "peerDependencies": {
56
- "@frontmcp/lazy-zod": "1.8.0"
56
+ "@frontmcp/lazy-zod": "1.8.2"
57
57
  }
58
58
  }
package/index.js CHANGED
@@ -3695,6 +3695,90 @@ var init_cloudflare_kv = __esm({
3695
3695
  }
3696
3696
  });
3697
3697
  init_runtime();
3698
+ var IPV4_OCTET_PATTERN = /^(0|[1-9]\d{0,2})$/;
3699
+ var IPV6_GROUP_PATTERN = /^[0-9a-f]{1,4}$/;
3700
+ var IPV4_BLOCKS = compileBlocks(
3701
+ [
3702
+ ["0.0.0.0/8", "this-network"],
3703
+ ["10.0.0.0/8", "private"],
3704
+ ["100.64.0.0/10", "carrier-grade-nat"],
3705
+ ["127.0.0.0/8", "loopback"],
3706
+ ["169.254.0.0/16", "link-local"],
3707
+ ["172.16.0.0/12", "private"],
3708
+ ["192.0.0.0/24", "ietf-protocol"],
3709
+ ["192.168.0.0/16", "private"],
3710
+ ["198.18.0.0/15", "benchmarking"],
3711
+ ["224.0.0.0/4", "multicast"],
3712
+ ["255.255.255.255/32", "reserved"],
3713
+ ["240.0.0.0/4", "reserved"]
3714
+ ],
3715
+ parseIpv4
3716
+ );
3717
+ var IPV6_BLOCKS = compileBlocks(
3718
+ [
3719
+ ["::/128", "unspecified"],
3720
+ ["::1/128", "loopback"],
3721
+ ["fd00:ec2::254/128", "cloud-metadata"],
3722
+ ["fc00::/7", "private"],
3723
+ ["fe80::/10", "link-local"],
3724
+ ["fec0::/10", "site-local"],
3725
+ // RFC 8215 local-use NAT64: where the IPv4 address sits depends on the operator's prefix length.
3726
+ ["64:ff9b:1::/48", "local-use-nat64"],
3727
+ ["ff00::/8", "multicast"]
3728
+ ],
3729
+ expandIpv6
3730
+ );
3731
+ var IPV4_EMBEDDINGS = compileBlocks(
3732
+ [
3733
+ ["::ffff:0:0/96", 6],
3734
+ ["::ffff:0:0:0/96", 6],
3735
+ ["::/96", 6],
3736
+ ["64:ff9b::/96", 6],
3737
+ ["2002::/16", 1]
3738
+ ],
3739
+ expandIpv6
3740
+ );
3741
+ function parseIpv4(address) {
3742
+ const parts = address.split(".");
3743
+ if (parts.length !== 4 || !parts.every((part) => IPV4_OCTET_PATTERN.test(part))) return void 0;
3744
+ const octets = parts.map(Number);
3745
+ return octets.every((octet) => octet <= 255) ? octets : void 0;
3746
+ }
3747
+ function expandIpv6(address) {
3748
+ const zoneIndex = address.indexOf("%");
3749
+ let text = (zoneIndex === -1 ? address : address.slice(0, zoneIndex)).toLowerCase();
3750
+ const lastColonIndex = text.lastIndexOf(":");
3751
+ const trailingSegment = text.slice(lastColonIndex + 1);
3752
+ if (lastColonIndex !== -1 && trailingSegment.includes(".")) {
3753
+ const octets = parseIpv4(trailingSegment);
3754
+ if (!octets) return void 0;
3755
+ const highGroup = (octets[0] << 8 | octets[1]).toString(16);
3756
+ const lowGroup = (octets[2] << 8 | octets[3]).toString(16);
3757
+ text = `${text.slice(0, lastColonIndex + 1)}${highGroup}:${lowGroup}`;
3758
+ }
3759
+ const halves = text.split("::");
3760
+ if (halves.length > 2) return void 0;
3761
+ const head = parseIpv6Groups(halves[0]);
3762
+ if (!head) return void 0;
3763
+ if (halves.length === 1) return head.length === 8 ? head : void 0;
3764
+ const tail = parseIpv6Groups(halves[1]);
3765
+ if (!tail || head.length + tail.length > 7) return void 0;
3766
+ return [...head, ...new Array(8 - head.length - tail.length).fill(0), ...tail];
3767
+ }
3768
+ function parseIpv6Groups(part) {
3769
+ if (part === "") return [];
3770
+ const groups = part.split(":");
3771
+ if (!groups.every((group) => IPV6_GROUP_PATTERN.test(group))) return void 0;
3772
+ return groups.map((group) => parseInt(group, 16));
3773
+ }
3774
+ function compileBlocks(entries, parseNetwork) {
3775
+ return entries.map(([cidr, value]) => {
3776
+ const [networkText, prefixText] = cidr.split("/");
3777
+ const network = parseNetwork(networkText);
3778
+ if (!network) throw new Error(`Invalid network in address block "${cidr}"`);
3779
+ return { cidr, network, prefixLength: Number(prefixText), value };
3780
+ });
3781
+ }
3698
3782
  init_fs2();
3699
3783
  init_crypto();
3700
3784
  var entryAvailabilitySchema = import_lazy_zod4.z.object({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frontmcp/plugin-dashboard",
3
- "version": "1.8.0",
3
+ "version": "1.8.2",
4
4
  "description": "Dashboard plugin for FrontMCP - visual monitoring and introspection of MCP servers",
5
5
  "author": "AgentFront <info@agentfront.dev>",
6
6
  "license": "Apache-2.0",
@@ -47,12 +47,12 @@
47
47
  }
48
48
  },
49
49
  "dependencies": {
50
- "@frontmcp/sdk": "1.8.0"
50
+ "@frontmcp/sdk": "1.8.2"
51
51
  },
52
52
  "devDependencies": {
53
53
  "reflect-metadata": "^0.2.2"
54
54
  },
55
55
  "peerDependencies": {
56
- "@frontmcp/lazy-zod": "1.8.0"
56
+ "@frontmcp/lazy-zod": "1.8.2"
57
57
  }
58
58
  }