@ever-works/vllm-plugin 1.0.3 → 1.0.4

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/index.cjs CHANGED
@@ -5019,6 +5019,7 @@ function isSafeWebhookUrl(rawUrl) {
5019
5019
  if (host.startsWith("[") && host.endsWith("]")) {
5020
5020
  host = host.slice(1, -1);
5021
5021
  }
5022
+ host = host.replace(/\.+$/, "");
5022
5023
  if (CLOUD_METADATA_HOSTNAMES.has(host)) {
5023
5024
  return false;
5024
5025
  }
@@ -5048,23 +5049,69 @@ function isPrivateIPv4(ip) {
5048
5049
  if (a === 172 && b >= 16 && b <= 31) return true;
5049
5050
  if (a === 192 && b === 168) return true;
5050
5051
  if (a === 192 && b === 0 && parts[2] === 0) return true;
5052
+ if (a === 198 && (b === 18 || b === 19)) return true;
5053
+ if (a === 192 && b === 0 && parts[2] === 2) return true;
5054
+ if (a === 198 && b === 51 && parts[2] === 100) return true;
5055
+ if (a === 203 && b === 0 && parts[2] === 113) return true;
5051
5056
  if (a === 100 && b >= 64 && b <= 127) return true;
5052
5057
  if (a >= 224) return true;
5053
5058
  return false;
5054
5059
  }
5060
+ function parseIPv6Groups(ip) {
5061
+ let text = ip.trim().toLowerCase();
5062
+ const zone = text.indexOf("%");
5063
+ if (zone >= 0) text = text.slice(0, zone);
5064
+ if (net.isIP(text) !== 6) return null;
5065
+ const lastColon = text.lastIndexOf(":");
5066
+ const tail = text.slice(lastColon + 1);
5067
+ if (tail.includes(".")) {
5068
+ if (net.isIP(tail) !== 4) return null;
5069
+ const [a, b, c, d] = tail.split(".").map((part) => Number(part));
5070
+ text = `${text.slice(0, lastColon + 1)}${(a << 8 | b).toString(16)}:${(c << 8 | d).toString(16)}`;
5071
+ }
5072
+ const halves = text.split("::");
5073
+ if (halves.length > 2) return null;
5074
+ const head = halves[0] ? halves[0].split(":") : [];
5075
+ const rest = halves.length === 2 && halves[1] ? halves[1].split(":") : [];
5076
+ const fill = halves.length === 2 ? 8 - head.length - rest.length : 0;
5077
+ if (fill < 0) return null;
5078
+ const groups = [...head, ...new Array(fill).fill("0"), ...rest].map((group) => parseInt(group, 16));
5079
+ if (groups.length !== 8 || groups.some((group) => Number.isNaN(group) || group < 0 || group > 65535)) {
5080
+ return null;
5081
+ }
5082
+ return groups;
5083
+ }
5084
+ function ipv4FromGroups(high, low) {
5085
+ return `${high >> 8}.${high & 255}.${low >> 8}.${low & 255}`;
5086
+ }
5087
+ function embeddedIPv4(ip) {
5088
+ const g = parseIPv6Groups(ip);
5089
+ if (!g) return null;
5090
+ const zeros = (from, to) => g.slice(from, to).every((group) => group === 0);
5091
+ if (zeros(0, 5) && g[5] === 65535) return ipv4FromGroups(g[6], g[7]);
5092
+ if (zeros(0, 4) && g[4] === 65535 && g[5] === 0) return ipv4FromGroups(g[6], g[7]);
5093
+ if (zeros(0, 6) && (g[6] !== 0 || g[7] > 1)) return ipv4FromGroups(g[6], g[7]);
5094
+ if (g[0] === 100 && g[1] === 65435 && zeros(2, 6)) return ipv4FromGroups(g[6], g[7]);
5095
+ if (g[0] === 8194) return ipv4FromGroups(g[1], g[2]);
5096
+ if (g[0] === 8193 && g[1] === 0) return ipv4FromGroups(g[6] ^ 65535, g[7] ^ 65535);
5097
+ return null;
5098
+ }
5055
5099
  function isPrivateIPv6(ip) {
5056
- const lower = ip.toLowerCase();
5057
- if (lower === "::1" || lower === "::") return true;
5058
- if (lower.startsWith("fc") || lower.startsWith("fd")) return true;
5059
- const firstHextet = lower.split(":", 1)[0];
5060
- if (/^[0-9a-f]{1,4}$/.test(firstHextet)) {
5061
- const group0 = parseInt(firstHextet, 16);
5062
- if ((group0 & 65472) === 65152) return true;
5063
- }
5064
- if (lower.startsWith("::ffff:")) {
5065
- const v4 = lower.slice("::ffff:".length);
5066
- if (net.isIP(v4) === 4) return isPrivateIPv4(v4);
5067
- }
5100
+ const g = parseIPv6Groups(ip);
5101
+ if (!g) {
5102
+ const lower = ip.toLowerCase();
5103
+ return lower === "::1" || lower === "::" || lower.startsWith("fc") || lower.startsWith("fd");
5104
+ }
5105
+ if (g.every((group) => group === 0)) return true;
5106
+ if (g.slice(0, 7).every((group) => group === 0) && g[7] === 1) return true;
5107
+ if ((g[0] & 65024) === 64512) return true;
5108
+ if ((g[0] & 65472) === 65152) return true;
5109
+ if ((g[0] & 65472) === 65216) return true;
5110
+ if ((g[0] & 65280) === 65280) return true;
5111
+ if (g[0] === 8193 && g[1] === 3512) return true;
5112
+ if (g[0] === 100 && g[1] === 65435 && g[2] === 1) return true;
5113
+ const v4 = embeddedIPv4(ip);
5114
+ if (v4 && isPrivateIPv4(v4)) return true;
5068
5115
  return false;
5069
5116
  }
5070
5117
  var defaultDnsResolver = (hostname) => dns__namespace.promises.lookup(hostname, { all: true });
package/dist/index.js CHANGED
@@ -4995,6 +4995,7 @@ function isSafeWebhookUrl(rawUrl) {
4995
4995
  if (host.startsWith("[") && host.endsWith("]")) {
4996
4996
  host = host.slice(1, -1);
4997
4997
  }
4998
+ host = host.replace(/\.+$/, "");
4998
4999
  if (CLOUD_METADATA_HOSTNAMES.has(host)) {
4999
5000
  return false;
5000
5001
  }
@@ -5024,23 +5025,69 @@ function isPrivateIPv4(ip) {
5024
5025
  if (a === 172 && b >= 16 && b <= 31) return true;
5025
5026
  if (a === 192 && b === 168) return true;
5026
5027
  if (a === 192 && b === 0 && parts[2] === 0) return true;
5028
+ if (a === 198 && (b === 18 || b === 19)) return true;
5029
+ if (a === 192 && b === 0 && parts[2] === 2) return true;
5030
+ if (a === 198 && b === 51 && parts[2] === 100) return true;
5031
+ if (a === 203 && b === 0 && parts[2] === 113) return true;
5027
5032
  if (a === 100 && b >= 64 && b <= 127) return true;
5028
5033
  if (a >= 224) return true;
5029
5034
  return false;
5030
5035
  }
5036
+ function parseIPv6Groups(ip) {
5037
+ let text = ip.trim().toLowerCase();
5038
+ const zone = text.indexOf("%");
5039
+ if (zone >= 0) text = text.slice(0, zone);
5040
+ if (isIP(text) !== 6) return null;
5041
+ const lastColon = text.lastIndexOf(":");
5042
+ const tail = text.slice(lastColon + 1);
5043
+ if (tail.includes(".")) {
5044
+ if (isIP(tail) !== 4) return null;
5045
+ const [a, b, c, d] = tail.split(".").map((part) => Number(part));
5046
+ text = `${text.slice(0, lastColon + 1)}${(a << 8 | b).toString(16)}:${(c << 8 | d).toString(16)}`;
5047
+ }
5048
+ const halves = text.split("::");
5049
+ if (halves.length > 2) return null;
5050
+ const head = halves[0] ? halves[0].split(":") : [];
5051
+ const rest = halves.length === 2 && halves[1] ? halves[1].split(":") : [];
5052
+ const fill = halves.length === 2 ? 8 - head.length - rest.length : 0;
5053
+ if (fill < 0) return null;
5054
+ const groups = [...head, ...new Array(fill).fill("0"), ...rest].map((group) => parseInt(group, 16));
5055
+ if (groups.length !== 8 || groups.some((group) => Number.isNaN(group) || group < 0 || group > 65535)) {
5056
+ return null;
5057
+ }
5058
+ return groups;
5059
+ }
5060
+ function ipv4FromGroups(high, low) {
5061
+ return `${high >> 8}.${high & 255}.${low >> 8}.${low & 255}`;
5062
+ }
5063
+ function embeddedIPv4(ip) {
5064
+ const g = parseIPv6Groups(ip);
5065
+ if (!g) return null;
5066
+ const zeros = (from, to) => g.slice(from, to).every((group) => group === 0);
5067
+ if (zeros(0, 5) && g[5] === 65535) return ipv4FromGroups(g[6], g[7]);
5068
+ if (zeros(0, 4) && g[4] === 65535 && g[5] === 0) return ipv4FromGroups(g[6], g[7]);
5069
+ if (zeros(0, 6) && (g[6] !== 0 || g[7] > 1)) return ipv4FromGroups(g[6], g[7]);
5070
+ if (g[0] === 100 && g[1] === 65435 && zeros(2, 6)) return ipv4FromGroups(g[6], g[7]);
5071
+ if (g[0] === 8194) return ipv4FromGroups(g[1], g[2]);
5072
+ if (g[0] === 8193 && g[1] === 0) return ipv4FromGroups(g[6] ^ 65535, g[7] ^ 65535);
5073
+ return null;
5074
+ }
5031
5075
  function isPrivateIPv6(ip) {
5032
- const lower = ip.toLowerCase();
5033
- if (lower === "::1" || lower === "::") return true;
5034
- if (lower.startsWith("fc") || lower.startsWith("fd")) return true;
5035
- const firstHextet = lower.split(":", 1)[0];
5036
- if (/^[0-9a-f]{1,4}$/.test(firstHextet)) {
5037
- const group0 = parseInt(firstHextet, 16);
5038
- if ((group0 & 65472) === 65152) return true;
5039
- }
5040
- if (lower.startsWith("::ffff:")) {
5041
- const v4 = lower.slice("::ffff:".length);
5042
- if (isIP(v4) === 4) return isPrivateIPv4(v4);
5043
- }
5076
+ const g = parseIPv6Groups(ip);
5077
+ if (!g) {
5078
+ const lower = ip.toLowerCase();
5079
+ return lower === "::1" || lower === "::" || lower.startsWith("fc") || lower.startsWith("fd");
5080
+ }
5081
+ if (g.every((group) => group === 0)) return true;
5082
+ if (g.slice(0, 7).every((group) => group === 0) && g[7] === 1) return true;
5083
+ if ((g[0] & 65024) === 64512) return true;
5084
+ if ((g[0] & 65472) === 65152) return true;
5085
+ if ((g[0] & 65472) === 65216) return true;
5086
+ if ((g[0] & 65280) === 65280) return true;
5087
+ if (g[0] === 8193 && g[1] === 3512) return true;
5088
+ if (g[0] === 100 && g[1] === 65435 && g[2] === 1) return true;
5089
+ const v4 = embeddedIPv4(ip);
5090
+ if (v4 && isPrivateIPv4(v4)) return true;
5044
5091
  return false;
5045
5092
  }
5046
5093
  var defaultDnsResolver = (hostname) => dns.promises.lookup(hostname, { all: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ever-works/vllm-plugin",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "vLLM AI provider plugin for Ever Works platform",
5
5
  "author": {
6
6
  "name": "Ever Co. LTD",
@@ -32,7 +32,7 @@
32
32
  "test:watch": "vitest"
33
33
  },
34
34
  "dependencies": {
35
- "@ever-works/plugin": "^1.2.5",
35
+ "@ever-works/plugin": "^1.2.9",
36
36
  "@langchain/openai": "^0.6.17",
37
37
  "@langchain/core": "^0.3.80"
38
38
  },
@@ -71,8 +71,8 @@
71
71
  "url": "https://github.com/ever-works/ever-works/issues"
72
72
  },
73
73
  "everworksRelease": {
74
- "contentHash": "sha256:0106fc32b53787ae513e0f674c00abc27c7ee067aeec8823544ed7747710ae0c",
75
- "commit": "19905c70cf05be3bc523db030597046067cd322a",
76
- "source": "https://github.com/ever-works/ever-works/tree/19905c70cf05be3bc523db030597046067cd322a/packages/plugins/vllm"
74
+ "contentHash": "sha256:89fdb6e141b73de825cd21f8ae3abbc3f87c276788f9b715890bcd6de35546ef",
75
+ "commit": "5b5a17e1cdc02e06383d508a6424a863521fc3e0",
76
+ "source": "https://github.com/ever-works/ever-works/tree/5b5a17e1cdc02e06383d508a6424a863521fc3e0/packages/plugins/vllm"
77
77
  }
78
78
  }