@remote-app/transmission-client 0.0.12 → 0.0.14
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/README.md +61 -0
- package/dist/client.d.ts +3 -3
- package/dist/client.js +4 -4
- package/dist/index.d.ts +1 -1
- package/dist/rpc-call.d.ts +42 -23
- package/dist/rpc-calls/index.d.ts +1 -1
- package/dist/rpc-calls/session-get.d.ts +2 -0
- package/dist/rpc-calls/torrent-get.d.ts +2 -4
- package/dist/rpc-calls/utils.d.ts +3 -0
- package/package.json +10 -3
package/README.md
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# @remote-app/transmission-client
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
A lightweight Transmission RPC client.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
$ npm install @remote-app/transmission-client
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Supported methods
|
|
14
|
+
|
|
15
|
+
### Torrent methods
|
|
16
|
+
- Torrent actions
|
|
17
|
+
- [x] torrent-start
|
|
18
|
+
- [x] torrent-start-now
|
|
19
|
+
- [x] torrent-stop
|
|
20
|
+
- [x] torrent-verify
|
|
21
|
+
- [x] torrent-reannounce
|
|
22
|
+
- Torrent mutator
|
|
23
|
+
- [x] torrent-set
|
|
24
|
+
- Torrent accessor
|
|
25
|
+
- [x] torrent-get
|
|
26
|
+
- Torrent addition
|
|
27
|
+
- [x] torrent-add
|
|
28
|
+
- Torrent removal
|
|
29
|
+
- [x] torrent-remove
|
|
30
|
+
- Move torrent
|
|
31
|
+
- [x] torrent-set-location
|
|
32
|
+
- Renaming torrent
|
|
33
|
+
- [ ] torrent-rename-path
|
|
34
|
+
|
|
35
|
+
### Session methods
|
|
36
|
+
- Session accessor
|
|
37
|
+
- [x] session-get
|
|
38
|
+
- Session mutator
|
|
39
|
+
- [x] session-set
|
|
40
|
+
- Session statistics
|
|
41
|
+
- [x] session-stats
|
|
42
|
+
- Session shutdown
|
|
43
|
+
- [ ] session-close
|
|
44
|
+
|
|
45
|
+
### Blocklist
|
|
46
|
+
- Mutator
|
|
47
|
+
- [ ] blocklist-update
|
|
48
|
+
|
|
49
|
+
### Port
|
|
50
|
+
- Check
|
|
51
|
+
- [ ] port-test
|
|
52
|
+
|
|
53
|
+
### Space
|
|
54
|
+
- Check
|
|
55
|
+
- [x] free-space
|
|
56
|
+
|
|
57
|
+
### Groups
|
|
58
|
+
- Group accessor
|
|
59
|
+
- [ ] group-get
|
|
60
|
+
- Group mutator
|
|
61
|
+
- [ ] group-set
|
package/dist/client.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { TransmissionConfig } from "./config";
|
|
2
|
-
import type { Methods,
|
|
2
|
+
import type { Methods, Calls } from "./rpc-call";
|
|
3
3
|
export declare class TransmissionClient {
|
|
4
4
|
private config;
|
|
5
5
|
private session;
|
|
6
6
|
constructor(config: TransmissionConfig);
|
|
7
|
-
request<M extends Methods>(
|
|
7
|
+
request<M extends Methods>(req: Parameters<Calls[M]>[0] & {
|
|
8
8
|
method: M;
|
|
9
|
-
}): Promise<
|
|
9
|
+
}): Promise<ReturnType<Calls[M]>>;
|
|
10
10
|
}
|
package/dist/client.js
CHANGED
|
@@ -14,7 +14,7 @@ export class TransmissionClient {
|
|
|
14
14
|
this.config = config;
|
|
15
15
|
this.session = null;
|
|
16
16
|
}
|
|
17
|
-
request(
|
|
17
|
+
request(req) {
|
|
18
18
|
var _a, _b;
|
|
19
19
|
return __awaiter(this, void 0, void 0, function* () {
|
|
20
20
|
const headers = new Headers({
|
|
@@ -30,14 +30,14 @@ export class TransmissionClient {
|
|
|
30
30
|
const request = new Request(this.config.url, {
|
|
31
31
|
method: "POST",
|
|
32
32
|
headers,
|
|
33
|
-
body: JSON.stringify(
|
|
33
|
+
body: JSON.stringify(req),
|
|
34
34
|
});
|
|
35
35
|
const response = yield fetch(request);
|
|
36
36
|
if (response.status === 409) {
|
|
37
37
|
this.session = response.headers.get("x-transmission-session-id");
|
|
38
|
-
return yield this.request(
|
|
38
|
+
return yield this.request(req);
|
|
39
39
|
}
|
|
40
|
-
if (response.
|
|
40
|
+
if (!response.ok) {
|
|
41
41
|
throw new HTTPError(response.status, response.statusText);
|
|
42
42
|
}
|
|
43
43
|
const json = (yield response.json());
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { SessionGetResponse, SessionSetRequest, SessionStatsResponse, FreeSpaceRequest, FreeSpaceResponse, TorrentStartRequest, TorrentStartNowRequest, TorrentStopRequest, TorrentVerifyRequest, TorrentReannounceRequest, TorrentSetRequest, TorrentGetRequest, TorrentGetResponse, TorrentAddRequest, TorrentAddResponse, TorrentRemoveRequest, TorrentSetLocationRequest, } from "./rpc-calls";
|
|
1
|
+
export type { SessionGetRequest, SessionGetResponse, SessionSetRequest, SessionStatsResponse, FreeSpaceRequest, FreeSpaceResponse, TorrentStartRequest, TorrentStartNowRequest, TorrentStopRequest, TorrentVerifyRequest, TorrentReannounceRequest, TorrentSetRequest, TorrentGetRequest, TorrentGetResponse, TorrentAddRequest, TorrentAddResponse, TorrentRemoveRequest, TorrentSetLocationRequest, } from "./rpc-calls";
|
|
2
2
|
export { TorrentStatus } from "./rpc-calls/torrent-get";
|
|
3
3
|
export type { Torrent } from "./rpc-calls/torrent-get";
|
|
4
4
|
export type { Methods } from "./rpc-call";
|
package/dist/rpc-call.d.ts
CHANGED
|
@@ -1,32 +1,51 @@
|
|
|
1
|
-
import type { SessionGetResponse, SessionSetRequest, SessionStatsResponse, FreeSpaceRequest, FreeSpaceResponse, TorrentStartRequest, TorrentStartNowRequest, TorrentStopRequest, TorrentVerifyRequest, TorrentReannounceRequest, TorrentSetRequest, TorrentGetRequest, TorrentGetResponse, TorrentAddRequest, TorrentAddResponse, TorrentRemoveRequest, TorrentSetLocationRequest } from "./rpc-calls";
|
|
1
|
+
import type { SessionGetRequest, SessionGetResponse, SessionSetRequest, SessionStatsResponse, FreeSpaceRequest, FreeSpaceResponse, TorrentStartRequest, TorrentStartNowRequest, TorrentStopRequest, TorrentVerifyRequest, TorrentReannounceRequest, TorrentSetRequest, TorrentGetRequest, TorrentGetResponse, TorrentAddRequest, TorrentAddResponse, TorrentRemoveRequest, TorrentSetLocationRequest } from "./rpc-calls";
|
|
2
2
|
declare type SessionMethods = "session-get" | "session-set" | "session-stats" | "free-space";
|
|
3
3
|
declare type TorrentMethods = "torrent-start" | "torrent-start-now" | "torrent-stop" | "torrent-verify" | "torrent-reannounce" | "torrent-set" | "torrent-get" | "torrent-add" | "torrent-remove" | "torrent-set-location";
|
|
4
4
|
export declare type Methods = SessionMethods | TorrentMethods;
|
|
5
|
-
export declare type RPCRequest<
|
|
6
|
-
method:
|
|
7
|
-
arguments?:
|
|
5
|
+
export declare type RPCRequest<M, T> = {
|
|
6
|
+
method: M;
|
|
7
|
+
arguments?: T;
|
|
8
8
|
tag?: number;
|
|
9
9
|
};
|
|
10
|
-
export declare type RPCResponse<
|
|
11
|
-
result:
|
|
12
|
-
arguments
|
|
10
|
+
export declare type RPCResponse<A> = {
|
|
11
|
+
result: string;
|
|
12
|
+
arguments: A;
|
|
13
13
|
tag?: number;
|
|
14
14
|
};
|
|
15
|
-
|
|
16
|
-
export declare type
|
|
17
|
-
"session-get":
|
|
18
|
-
"session-set":
|
|
19
|
-
"session-stats":
|
|
20
|
-
"free-space":
|
|
21
|
-
"torrent-start":
|
|
22
|
-
"torrent-start-now":
|
|
23
|
-
"torrent-stop":
|
|
24
|
-
"torrent-verify":
|
|
25
|
-
"torrent-reannounce":
|
|
26
|
-
"torrent-remove":
|
|
27
|
-
"torrent-set-location":
|
|
28
|
-
"torrent-get":
|
|
29
|
-
"torrent-add":
|
|
30
|
-
"torrent-set":
|
|
15
|
+
declare type RPCCall<M extends Methods, TRequest, TResponse = never> = TResponse extends never ? (request: RPCRequest<M, TRequest>) => void : (request: RPCRequest<M, TRequest>) => RPCResponse<TResponse>;
|
|
16
|
+
export declare type MethodRequest = {
|
|
17
|
+
"session-get": SessionGetRequest;
|
|
18
|
+
"session-set": SessionSetRequest;
|
|
19
|
+
"session-stats": never;
|
|
20
|
+
"free-space": FreeSpaceRequest;
|
|
21
|
+
"torrent-start": TorrentStartRequest;
|
|
22
|
+
"torrent-start-now": TorrentStartNowRequest;
|
|
23
|
+
"torrent-stop": TorrentStopRequest;
|
|
24
|
+
"torrent-verify": TorrentVerifyRequest;
|
|
25
|
+
"torrent-reannounce": TorrentReannounceRequest;
|
|
26
|
+
"torrent-remove": TorrentRemoveRequest;
|
|
27
|
+
"torrent-set-location": TorrentSetLocationRequest;
|
|
28
|
+
"torrent-get": TorrentGetRequest;
|
|
29
|
+
"torrent-add": TorrentAddRequest;
|
|
30
|
+
"torrent-set": TorrentSetRequest;
|
|
31
|
+
};
|
|
32
|
+
export declare type MethodResponse = {
|
|
33
|
+
"session-get": SessionGetResponse;
|
|
34
|
+
"session-set": SessionSetRequest;
|
|
35
|
+
"session-stats": SessionStatsResponse;
|
|
36
|
+
"free-space": FreeSpaceResponse;
|
|
37
|
+
"torrent-start": TorrentStartRequest;
|
|
38
|
+
"torrent-start-now": TorrentStartNowRequest;
|
|
39
|
+
"torrent-stop": TorrentStopRequest;
|
|
40
|
+
"torrent-verify": TorrentVerifyRequest;
|
|
41
|
+
"torrent-reannounce": TorrentReannounceRequest;
|
|
42
|
+
"torrent-remove": TorrentRemoveRequest;
|
|
43
|
+
"torrent-set-location": TorrentSetLocationRequest;
|
|
44
|
+
"torrent-get": TorrentGetResponse;
|
|
45
|
+
"torrent-add": TorrentAddResponse;
|
|
46
|
+
"torrent-set": TorrentSetRequest;
|
|
47
|
+
};
|
|
48
|
+
export declare type Calls = {
|
|
49
|
+
[K in Methods]: RPCCall<K, MethodRequest[K], MethodResponse[K]>;
|
|
31
50
|
};
|
|
32
51
|
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { Response as SessionGetResponse } from "./session-get";
|
|
1
|
+
export type { Request as SessionGetRequest, Response as SessionGetResponse, } from "./session-get";
|
|
2
2
|
export type { Request as SessionSetRequest } from "./session-set";
|
|
3
3
|
export type { Response as SessionStatsResponse } from "./session-stats";
|
|
4
4
|
export type { Request as FreeSpaceRequest, Response as FreeSpaceResponse, } from "./free-space";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Fields } from "./utils";
|
|
1
2
|
declare type Units = {
|
|
2
3
|
"speed-units": string[];
|
|
3
4
|
"speed-bytes": number;
|
|
@@ -56,4 +57,5 @@ export declare type Response = {
|
|
|
56
57
|
"utp-enabled": boolean;
|
|
57
58
|
version: string;
|
|
58
59
|
};
|
|
60
|
+
export declare type Request = Partial<Fields<keyof Response>>;
|
|
59
61
|
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Identifiers } from "./utils";
|
|
1
|
+
import { Identifiers, Fields } from "./utils";
|
|
2
2
|
declare type File = {
|
|
3
3
|
bytesCompleted: number;
|
|
4
4
|
length: number;
|
|
@@ -162,7 +162,5 @@ export declare type Torrent = {
|
|
|
162
162
|
export declare type Response = {
|
|
163
163
|
torrents: Torrent[];
|
|
164
164
|
};
|
|
165
|
-
export declare type Request = Identifiers &
|
|
166
|
-
fields: (keyof Torrent)[];
|
|
167
|
-
};
|
|
165
|
+
export declare type Request = Identifiers & Fields<keyof Torrent>;
|
|
168
166
|
export {};
|
package/package.json
CHANGED
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remote-app/transmission-client",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.14",
|
|
4
4
|
"description": "Transmission RPC client",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"transmission",
|
|
7
|
+
"rpc",
|
|
8
|
+
"client"
|
|
9
|
+
],
|
|
5
10
|
"license": "MIT",
|
|
6
11
|
"repository": {
|
|
7
12
|
"type": "git",
|
|
8
|
-
"url": "https://github.com/jgalat/remote-app",
|
|
13
|
+
"url": "git+https://github.com/jgalat/remote-app.git",
|
|
9
14
|
"directory": "packages/transmission-client"
|
|
10
15
|
},
|
|
11
16
|
"main": "dist/index.js",
|
|
12
17
|
"types": "dist/index.d.ts",
|
|
13
18
|
"react-native": "src/index.ts",
|
|
14
|
-
"files": [
|
|
19
|
+
"files": [
|
|
20
|
+
"dist"
|
|
21
|
+
],
|
|
15
22
|
"scripts": {
|
|
16
23
|
"build": "tsc --build"
|
|
17
24
|
},
|