@caido/sdk-backend 0.55.4-beta.0 → 0.55.4-beta.1
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/package.json +2 -2
- package/src/typing.d.ts +25 -5
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@caido/sdk-backend",
|
|
3
|
-
"version": "0.55.4-beta.
|
|
3
|
+
"version": "0.55.4-beta.1",
|
|
4
4
|
"description": "Typing for the Caido Backend SDK",
|
|
5
5
|
"author": "Caido Labs Inc. <dev@caido.io>",
|
|
6
6
|
"repository": "https://github.com/caido/sdk-js/",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
],
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@caido/quickjs-types": "^0.26.0",
|
|
14
|
-
"@caido/sdk-shared": "^0.
|
|
14
|
+
"@caido/sdk-shared": "^0.2.0"
|
|
15
15
|
},
|
|
16
16
|
"scripts": {
|
|
17
17
|
"build": "echo 'No build step required for @caido/sdk-backend'",
|
package/src/typing.d.ts
CHANGED
|
@@ -20,11 +20,28 @@ declare module "caido:plugin" {
|
|
|
20
20
|
} from "caido:utils";
|
|
21
21
|
import type { Database } from "sqlite";
|
|
22
22
|
|
|
23
|
+
type MaybePromise<T> = T | Promise<T>;
|
|
24
|
+
|
|
25
|
+
type AnyFn = (...args: any[]) => MaybePromise<any>;
|
|
26
|
+
type InvalidCallbackMessage =
|
|
27
|
+
"Your callback must respect the format (sdk: SDK, ...args: unknown[]) => MaybePromise<unknown>";
|
|
28
|
+
type ResolvedAPI<T> = T extends { api: infer A } ? A : T;
|
|
29
|
+
type APICallback<T> = T extends AnyFn
|
|
30
|
+
? (sdk: SDK, ...args: Parameters<T>) => ReturnType<T>
|
|
31
|
+
: InvalidCallbackMessage;
|
|
32
|
+
|
|
33
|
+
type AnyVoidFn = (...args: any[]) => MaybePromise<void>;
|
|
34
|
+
type ResolvedEvents<T, Events> = T extends { events: infer A } ? A : Events;
|
|
35
|
+
type InvalidEventParametersMessage = "Invalid event parameters";
|
|
36
|
+
type EventParameters<T> = T extends AnyVoidFn
|
|
37
|
+
? A
|
|
38
|
+
: InvalidEventParametersMessage;
|
|
39
|
+
|
|
23
40
|
/**
|
|
24
41
|
* The SDK for the API RPC service.
|
|
25
42
|
* @category API
|
|
26
43
|
*/
|
|
27
|
-
export type APISDK<
|
|
44
|
+
export type APISDK<SpecOrAPI = {}, Events = {}> = {
|
|
28
45
|
/**
|
|
29
46
|
* Sends an event to the frontend plugin.
|
|
30
47
|
*
|
|
@@ -33,7 +50,10 @@ declare module "caido:plugin" {
|
|
|
33
50
|
* sdk.api.send("myEvent", 5, "hello");
|
|
34
51
|
* ```
|
|
35
52
|
*/
|
|
36
|
-
send
|
|
53
|
+
send<K extends keyof ResolvedEvents<SpecOrAPI, Events>>(
|
|
54
|
+
event: K,
|
|
55
|
+
...args: EventParameters<ResolvedEvents<SpecOrAPI, Events>[K]>
|
|
56
|
+
): void;
|
|
37
57
|
|
|
38
58
|
/**
|
|
39
59
|
* Registers a new backend function for the RPC.
|
|
@@ -45,9 +65,9 @@ declare module "caido:plugin" {
|
|
|
45
65
|
* });
|
|
46
66
|
* ```
|
|
47
67
|
*/
|
|
48
|
-
register(
|
|
49
|
-
name:
|
|
50
|
-
callback:
|
|
68
|
+
register<K extends keyof ResolvedAPI<SpecOrAPI>>(
|
|
69
|
+
name: K,
|
|
70
|
+
callback: APICallback<ResolvedAPI<SpecOrAPI>[K]>,
|
|
51
71
|
): void;
|
|
52
72
|
};
|
|
53
73
|
|