@open-pets/client 2.0.7 → 3.0.0
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/discovery.d.ts +1 -1
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +56 -5
- package/dist/discovery.js.map +1 -1
- package/package.json +3 -2
- package/dist/check-client-protocol.d.ts +0 -2
- package/dist/check-client-protocol.d.ts.map +0 -1
- package/dist/check-client-protocol.js +0 -54
- package/dist/check-client-protocol.js.map +0 -1
package/dist/discovery.d.ts
CHANGED
package/dist/discovery.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;CACpC;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;CACpC;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,wBAAgB,oBAAoB,IAAI,MAAM,CAmB7C;AAED,wBAAgB,iBAAiB,CAAC,IAAI,SAAyB,GAAG,qBAAqB,CAsBtF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,CAwBvE;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEvD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAgCpE"}
|
package/dist/discovery.js
CHANGED
|
@@ -117,19 +117,70 @@ function parseTcpEndpoint(endpoint) {
|
|
|
117
117
|
throw new OpenPetsClientError("invalid_discovery", "Discovery TCP endpoint is invalid.");
|
|
118
118
|
}
|
|
119
119
|
if (url.protocol !== "tcp:" || url.username || url.password || (url.pathname !== "" && url.pathname !== "/") || url.search || url.hash) {
|
|
120
|
-
throw new OpenPetsClientError("invalid_discovery", "Discovery TCP endpoint must be tcp
|
|
120
|
+
throw new OpenPetsClientError("invalid_discovery", "Discovery TCP endpoint must be tcp://<host>:<port> with no credentials, path, query, or fragment.");
|
|
121
121
|
}
|
|
122
|
-
|
|
123
|
-
|
|
122
|
+
const host = url.hostname;
|
|
123
|
+
// Reject 0.0.0.0 - not a valid target address
|
|
124
|
+
if (host === "0.0.0.0") {
|
|
125
|
+
throw new OpenPetsClientError("invalid_discovery", "Discovery TCP endpoint cannot use 0.0.0.0 as target host.");
|
|
126
|
+
}
|
|
127
|
+
// Validate IPv4 format
|
|
128
|
+
if (!isValidIpv4(host)) {
|
|
129
|
+
throw new OpenPetsClientError("invalid_discovery", "Discovery TCP endpoint host must be a valid IPv4 address.");
|
|
130
|
+
}
|
|
131
|
+
// Reject hostnames (contain letters)
|
|
132
|
+
if (/[a-zA-Z]/.test(host)) {
|
|
133
|
+
throw new OpenPetsClientError("invalid_discovery", "Discovery TCP endpoint host must be an IPv4 address, not a hostname.");
|
|
134
|
+
}
|
|
135
|
+
// Validate that it's a private/local address (loopback, private, or link-local)
|
|
136
|
+
if (!isPrivateOrLocalIpv4(host)) {
|
|
137
|
+
throw new OpenPetsClientError("invalid_discovery", `Discovery TCP endpoint host ${host} is not a private/local IPv4 address. Only loopback (127.0.0.1), private (10.x.x.x, 172.16-31.x.x, 192.168.x.x), or link-local (169.254.x.x) addresses are allowed.`);
|
|
124
138
|
}
|
|
125
139
|
const port = Number(url.port);
|
|
126
140
|
if (!Number.isInteger(port) || port < 1 || port > 65_535 || String(port) !== url.port) {
|
|
127
141
|
throw new OpenPetsClientError("invalid_discovery", "Discovery TCP endpoint port is invalid.");
|
|
128
142
|
}
|
|
129
|
-
return { kind: "tcp", host
|
|
143
|
+
return { kind: "tcp", host, port };
|
|
144
|
+
}
|
|
145
|
+
function isValidIpv4(host) {
|
|
146
|
+
const parts = host.split(".");
|
|
147
|
+
if (parts.length !== 4)
|
|
148
|
+
return false;
|
|
149
|
+
return parts.every((part) => {
|
|
150
|
+
const num = Number(part);
|
|
151
|
+
return String(num) === part && num >= 0 && num <= 255;
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
function isPrivateOrLocalIpv4(host) {
|
|
155
|
+
const parts = host.split(".").map(Number);
|
|
156
|
+
if (parts.length !== 4)
|
|
157
|
+
return false;
|
|
158
|
+
// Loopback: 127.0.0.0/8
|
|
159
|
+
if (parts[0] === 127)
|
|
160
|
+
return true;
|
|
161
|
+
// Private: 10.0.0.0/8
|
|
162
|
+
if (parts[0] === 10)
|
|
163
|
+
return true;
|
|
164
|
+
// Private: 172.16.0.0/12
|
|
165
|
+
if (parts[0] === 172 && parts[1] >= 16 && parts[1] <= 31)
|
|
166
|
+
return true;
|
|
167
|
+
// Private: 192.168.0.0/16
|
|
168
|
+
if (parts[0] === 192 && parts[1] === 168)
|
|
169
|
+
return true;
|
|
170
|
+
// Link-local: 169.254.0.0/16
|
|
171
|
+
if (parts[0] === 169 && parts[1] === 254)
|
|
172
|
+
return true;
|
|
173
|
+
return false;
|
|
130
174
|
}
|
|
131
175
|
function allowsCrossPlatformDiscovery(platform, endpoint) {
|
|
132
|
-
|
|
176
|
+
// Allow cross-platform discovery for TCP endpoints when:
|
|
177
|
+
// - Desktop is Windows (win32) and client is Linux (WSL)
|
|
178
|
+
// - The endpoint is a private/local IPv4 address (not just loopback)
|
|
179
|
+
if (endpoint.kind !== "tcp" || platform !== "win32" || process.platform !== "linux") {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
// Additional validation: ensure the host is a valid private/local IPv4
|
|
183
|
+
return isPrivateOrLocalIpv4(endpoint.host);
|
|
133
184
|
}
|
|
134
185
|
function getSecureXdgRuntimeDir() {
|
|
135
186
|
const dir = process.env.XDG_RUNTIME_DIR;
|
package/dist/discovery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-pets/client",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -27,7 +27,8 @@
|
|
|
27
27
|
"typescript": "^6.0.3"
|
|
28
28
|
},
|
|
29
29
|
"scripts": {
|
|
30
|
-
"test": "node dist/
|
|
30
|
+
"test": "pnpm test:build && node .test-dist/contracts/client-protocol.contract.js",
|
|
31
|
+
"test:build": "tsc -p tsconfig.tests.json",
|
|
31
32
|
"check": "pnpm typecheck && pnpm build && pnpm test",
|
|
32
33
|
"typecheck": "tsc --noEmit",
|
|
33
34
|
"build": "tsc",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"check-client-protocol.d.ts","sourceRoot":"","sources":["../src/check-client-protocol.ts"],"names":[],"mappings":""}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert/strict";
|
|
2
|
-
import { parseIpcEndpoint, validateDiscovery } from "./discovery.js";
|
|
3
|
-
import { parsePetInstallResult, parsePetListResult } from "./index.js";
|
|
4
|
-
import { OpenPetsClientError, parseIpcResponse, validateReaction } from "./protocol.js";
|
|
5
|
-
const baseDiscovery = {
|
|
6
|
-
protocolVersion: 1,
|
|
7
|
-
protocol: "openpets-ipc",
|
|
8
|
-
endpoint: process.platform === "win32" ? "\\\\.\\pipe\\openpets-abc-123" : "/tmp/openpets-501/openpets-123.sock",
|
|
9
|
-
token: "x".repeat(32),
|
|
10
|
-
appVersion: "0.0.0",
|
|
11
|
-
pid: 123,
|
|
12
|
-
platform: process.platform,
|
|
13
|
-
};
|
|
14
|
-
validateDiscovery(baseDiscovery);
|
|
15
|
-
validateDiscovery({ ...baseDiscovery, endpoint: "tcp://127.0.0.1:37645" });
|
|
16
|
-
assert.deepEqual(parseIpcEndpoint("tcp://127.0.0.1:37645"), { kind: "tcp", host: "127.0.0.1", port: 37645 });
|
|
17
|
-
assertRejects(() => validateDiscovery({ ...baseDiscovery, protocol: "http" }));
|
|
18
|
-
assertRejects(() => validateDiscovery({ ...baseDiscovery, protocolVersion: 2 }));
|
|
19
|
-
assertRejects(() => validateDiscovery({ ...baseDiscovery, endpoint: "127.0.0.1:1234" }));
|
|
20
|
-
assertRejects(() => validateDiscovery({ ...baseDiscovery, endpoint: "tcp://localhost:37645" }));
|
|
21
|
-
assertRejects(() => validateDiscovery({ ...baseDiscovery, endpoint: "tcp://0.0.0.0:37645" }));
|
|
22
|
-
assertRejects(() => validateDiscovery({ ...baseDiscovery, endpoint: "tcp://127.0.0.1:0" }));
|
|
23
|
-
assertRejects(() => validateDiscovery({ ...baseDiscovery, endpoint: "tcp://127.0.0.1:37645/path" }));
|
|
24
|
-
assertRejects(() => validateDiscovery({ ...baseDiscovery, endpoint: "tcp://user:pass@127.0.0.1:37645" }));
|
|
25
|
-
assertRejects(() => validateDiscovery({ ...baseDiscovery, platform: "freebsd" }));
|
|
26
|
-
if (process.platform === "linux") {
|
|
27
|
-
validateDiscovery({ ...baseDiscovery, endpoint: "tcp://127.0.0.1:37645", platform: "win32" });
|
|
28
|
-
assertRejects(() => validateDiscovery({ ...baseDiscovery, platform: "win32" }));
|
|
29
|
-
}
|
|
30
|
-
assertRejects(() => validateReaction("bad"));
|
|
31
|
-
assert.equal(validateReaction("waving"), "waving");
|
|
32
|
-
const ok = parseIpcResponse({ id: "1", ok: true, result: { value: 1 } });
|
|
33
|
-
if (!ok.ok || ok.result.value !== 1)
|
|
34
|
-
throw new Error("Failed to parse ok response.");
|
|
35
|
-
const err = parseIpcResponse({ id: "1", ok: false, error: { code: "invalid_token", message: "Invalid" } });
|
|
36
|
-
if (err.ok || err.error.code !== "invalid_token")
|
|
37
|
-
throw new Error("Failed to parse error response.");
|
|
38
|
-
assertRejects(() => parseIpcResponse({ ok: true }));
|
|
39
|
-
assert.deepEqual(parsePetListResult({ ok: true, defaultPetId: "builtin", pets: [{ id: "fixer", displayName: "Fixer", builtIn: false, broken: false }] }), { ok: true, defaultPetId: "builtin", pets: [{ id: "fixer", displayName: "Fixer", builtIn: false, broken: false }] });
|
|
40
|
-
assertRejects(() => parsePetListResult({ ok: true, pets: [{ id: "fixer" }], defaultPetId: "builtin" }));
|
|
41
|
-
assert.deepEqual(parsePetInstallResult({ ok: true, petId: "fixer", displayName: "Fixer", installed: true }), { ok: true, petId: "fixer", displayName: "Fixer", installed: true });
|
|
42
|
-
assertRejects(() => parsePetInstallResult({ ok: true, petId: "fixer" }));
|
|
43
|
-
console.log("Client protocol validation passed.");
|
|
44
|
-
function assertRejects(callback) {
|
|
45
|
-
try {
|
|
46
|
-
callback();
|
|
47
|
-
}
|
|
48
|
-
catch (error) {
|
|
49
|
-
if (error instanceof OpenPetsClientError || error instanceof Error)
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
throw new Error("Expected validation to reject.");
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=check-client-protocol.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"check-client-protocol.js","sourceRoot":"","sources":["../src/check-client-protocol.ts"],"names":[],"mappings":"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"}
|