endia 0.0.0-stage → 0.0.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/LICENSE +202 -0
- package/README.md +34 -2
- package/dist/archives/archive-file.d.ts +36 -0
- package/dist/archives/archive-file.js +71 -0
- package/dist/archives/build-context.d.ts +63 -0
- package/dist/archives/build-context.js +132 -0
- package/dist/archives/docker-ignore.d.ts +57 -0
- package/dist/archives/docker-ignore.js +250 -0
- package/dist/archives/fleet-archive.d.ts +33 -0
- package/dist/archives/fleet-archive.js +134 -0
- package/dist/compose-model.d.ts +32 -0
- package/dist/compose-model.js +39 -0
- package/dist/contract/archives.d.ts +14 -0
- package/dist/contract/archives.js +1 -0
- package/dist/contract/bases.d.ts +48 -0
- package/dist/contract/bases.js +1 -0
- package/dist/contract/clients.d.ts +29 -0
- package/dist/contract/clients.js +1 -0
- package/dist/contract/common.d.ts +30 -0
- package/dist/contract/common.js +1 -0
- package/dist/contract/compose.d.ts +27 -0
- package/dist/contract/compose.js +1 -0
- package/dist/contract/desktop.d.ts +269 -0
- package/dist/contract/desktop.js +1 -0
- package/dist/contract/execs.d.ts +61 -0
- package/dist/contract/execs.js +1 -0
- package/dist/contract/fleets.d.ts +136 -0
- package/dist/contract/fleets.js +1 -0
- package/dist/contract/images.d.ts +130 -0
- package/dist/contract/images.js +1 -0
- package/dist/contract/machines.d.ts +199 -0
- package/dist/contract/machines.js +1 -0
- package/dist/contract/operations.d.ts +28 -0
- package/dist/contract/operations.js +1 -0
- package/dist/contract/processes.d.ts +75 -0
- package/dist/contract/processes.js +1 -0
- package/dist/contract/purposes.d.ts +62 -0
- package/dist/contract/purposes.js +1 -0
- package/dist/contract/space.d.ts +114 -0
- package/dist/contract/space.js +1 -0
- package/dist/contract/stats.d.ts +58 -0
- package/dist/contract/stats.js +1 -0
- package/dist/contract/status.d.ts +151 -0
- package/dist/contract/status.js +1 -0
- package/dist/contract/volumes.d.ts +22 -0
- package/dist/contract/volumes.js +1 -0
- package/dist/eastindia-client.d.ts +118 -0
- package/dist/eastindia-client.js +142 -0
- package/dist/environment.d.ts +52 -0
- package/dist/environment.js +133 -0
- package/dist/errors.d.ts +81 -0
- package/dist/errors.js +108 -0
- package/dist/exec/exec-frame.d.ts +38 -0
- package/dist/exec/exec-frame.js +50 -0
- package/dist/exec/exec-session.d.ts +64 -0
- package/dist/exec/exec-session.js +117 -0
- package/dist/groups/archives.d.ts +78 -0
- package/dist/groups/archives.js +117 -0
- package/dist/groups/bases.d.ts +28 -0
- package/dist/groups/bases.js +39 -0
- package/dist/groups/certificates.d.ts +32 -0
- package/dist/groups/certificates.js +43 -0
- package/dist/groups/desktop.d.ts +143 -0
- package/dist/groups/desktop.js +182 -0
- package/dist/groups/execs.d.ts +110 -0
- package/dist/groups/execs.js +119 -0
- package/dist/groups/fleets.d.ts +206 -0
- package/dist/groups/fleets.js +255 -0
- package/dist/groups/images.d.ts +130 -0
- package/dist/groups/images.js +109 -0
- package/dist/groups/machines.d.ts +124 -0
- package/dist/groups/machines.js +127 -0
- package/dist/groups/operations.d.ts +127 -0
- package/dist/groups/operations.js +174 -0
- package/dist/groups/processes.d.ts +77 -0
- package/dist/groups/processes.js +75 -0
- package/dist/groups/stats.d.ts +29 -0
- package/dist/groups/stats.js +33 -0
- package/dist/groups/system.d.ts +33 -0
- package/dist/groups/system.js +40 -0
- package/dist/groups/volumes.d.ts +36 -0
- package/dist/groups/volumes.js +40 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.js +20 -0
- package/dist/purposes.d.ts +17 -0
- package/dist/purposes.js +21 -0
- package/dist/routes.d.ts +71 -0
- package/dist/routes.js +73 -0
- package/dist/transport/api-connection.d.ts +185 -0
- package/dist/transport/api-connection.js +396 -0
- package/dist/transport/connection-failures.d.ts +14 -0
- package/dist/transport/connection-failures.js +57 -0
- package/dist/transport/json-lines.d.ts +10 -0
- package/dist/transport/json-lines.js +23 -0
- package/dist/transport/query-text.d.ts +49 -0
- package/dist/transport/query-text.js +62 -0
- package/dist/transport/service-address.d.ts +30 -0
- package/dist/transport/service-address.js +37 -0
- package/dist/transport/tls-files.d.ts +9 -0
- package/dist/transport/tls-files.js +1 -0
- package/package.json +44 -5
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/** The prefix of a named pipe address, as Docker writes `npipe:////./pipe/docker_engine`. */
|
|
2
|
+
const PipePrefix = "npipe://";
|
|
3
|
+
/** The pipe part of a named pipe address: `//./pipe/` and then the pipe's name, which holds no slash or backslash. */
|
|
4
|
+
const PipePath = /^\/\/\.\/pipe\/(?<name>[^/\\]+)$/u;
|
|
5
|
+
/**
|
|
6
|
+
* Reads an address in the forms the CLI and `EASTINDIA_HOST` take: `tcp://<host>:<port>`, over which TLS is always used and always
|
|
7
|
+
* verified, or `npipe:////./pipe/<name>`, a named pipe on this PC.
|
|
8
|
+
*
|
|
9
|
+
* @param host - The address, for example `tcp://host.docker.internal:7443` or `npipe:////./pipe/eastindia_engine`.
|
|
10
|
+
* @param setting - Where the address came from, which the error message names, for example `EASTINDIA_HOST`.
|
|
11
|
+
* @returns Where the client connects.
|
|
12
|
+
* @throws Error when the address has neither form.
|
|
13
|
+
*/
|
|
14
|
+
export function parseServiceAddress(host, setting) {
|
|
15
|
+
if (host.startsWith(PipePrefix)) {
|
|
16
|
+
const pipe = PipePath.exec(host.slice(PipePrefix.length));
|
|
17
|
+
if (pipe?.groups?.["name"] === undefined) {
|
|
18
|
+
throw new Error(`${setting} must be npipe:////./pipe/<name>; found '${host}'.`);
|
|
19
|
+
}
|
|
20
|
+
return { kind: "socket", path: `\\\\.\\pipe\\${pipe.groups["name"]}` };
|
|
21
|
+
}
|
|
22
|
+
const parsed = URL.canParse(host) ? new URL(host) : undefined;
|
|
23
|
+
if (parsed?.protocol !== "tcp:" || parsed.port === "" || !["", "/"].includes(parsed.pathname) || parsed.search !== "" || parsed.hash !== "") {
|
|
24
|
+
throw new Error(`${setting} must be tcp://<host>:<port> or npipe:////./pipe/<name>; found '${host}'.`);
|
|
25
|
+
}
|
|
26
|
+
// URL keeps an IPv6 address in brackets; the TLS check and the connection take it without them.
|
|
27
|
+
return { kind: "https", hostname: parsed.hostname.replace(/^\[(?<inner>.*)\]$/u, "$<inner>"), port: Number(parsed.port) };
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Names an address as messages name it: the host and port, or the socket's path.
|
|
31
|
+
*
|
|
32
|
+
* @param address - The address.
|
|
33
|
+
* @returns For example `host.docker.internal:7443` or `\\.\pipe\eastindia_engine`.
|
|
34
|
+
*/
|
|
35
|
+
export function describeServiceAddress(address) {
|
|
36
|
+
return address.kind === "https" ? `${address.hostname.includes(":") ? `[${address.hostname}]` : address.hostname}:${String(address.port)}` : address.path;
|
|
37
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** The PEM text of the three files a caller over HTTPS holds. */
|
|
2
|
+
export interface TlsFiles {
|
|
3
|
+
/** EastIndia's certificate authority, `ca.pem`: the only authority the client trusts for the server's certificate. */
|
|
4
|
+
readonly ca: string | Buffer;
|
|
5
|
+
/** The client certificate EastIndia issued, `cert.pem`. */
|
|
6
|
+
readonly cert: string | Buffer;
|
|
7
|
+
/** The client certificate's private key, `key.pem`. */
|
|
8
|
+
readonly key: string | Buffer;
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,45 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
"name": "endia",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"description": "Client for EastIndia, which runs Windows desktop test machines that tests drive like Docker containers. Early preview.",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"author": "teaToolkit",
|
|
7
|
+
"private": false,
|
|
8
|
+
"type": "module",
|
|
9
|
+
"engines": {
|
|
10
|
+
"node": ">=20"
|
|
11
|
+
},
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"default": "./dist/index.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"main": "./dist/index.js",
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
|
+
"files": [
|
|
21
|
+
"dist",
|
|
22
|
+
"README.md"
|
|
23
|
+
],
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "tsc -p tsconfig.build.json",
|
|
26
|
+
"lint": "eslint --max-warnings 0 .",
|
|
27
|
+
"check": "tsc -p tsconfig.json && eslint --max-warnings 0 .",
|
|
28
|
+
"test": "npm run check && node --test --test-reporter=spec \"build/test/unit/**/*.test.js\" \"build/test/integration/**/*.test.js\"",
|
|
29
|
+
"test:live": "npm run check && node --test --test-reporter=spec --test-concurrency=1 \"build/test/live/**/*.test.js\"",
|
|
30
|
+
"prepack": "npm run build",
|
|
31
|
+
"package": "node scripts/package.mjs"
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"tar": "7.5.22",
|
|
35
|
+
"ws": "8.22.1"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@eslint/js": "10.0.1",
|
|
39
|
+
"@types/node": "20.19.43",
|
|
40
|
+
"@types/ws": "8.18.2",
|
|
41
|
+
"eslint": "10.14.0",
|
|
42
|
+
"typescript": "6.0.3",
|
|
43
|
+
"typescript-eslint": "8.72.1"
|
|
44
|
+
}
|
|
45
|
+
}
|