Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 20 additions & 8 deletions src/reference/sdks/backend/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,37 @@

### APISDK

> **APISDK**\<`API`, `Events`\> = `object`
> **APISDK**\<`SpecOrAPI`, `Events`\> = `object`

The SDK for the API RPC service.

#### Type Parameters

| Type Parameter | Default type |
| ------ | ------ |
| `API` | `object` |
| `SpecOrAPI` | `object` |
| `Events` | `object` |

#### Methods

##### register()

> **register**(`name`: keyof `API`, `callback`: (`sdk`: [`SDK`](index.md#sdk), ...`args`: `any`[]) => `any`): `void`
> **register**\<`K`\>(`name`: `K`, `callback`: [`APICallback`](other.md#apicallback)\<[`ResolvedAPI`](other.md#resolvedapi)\<`SpecOrAPI`\>\[`K`\]\>): `void`

Registers a new backend function for the RPC.

###### Type Parameters

| Type Parameter |
| ------ |
| `K` *extends* `string` \| `number` \| `symbol` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `name` | keyof `API` |
| `callback` | (`sdk`: [`SDK`](index.md#sdk), ...`args`: `any`[]) => `any` |
| `name` | `K` |
| `callback` | [`APICallback`](other.md#apicallback)\<[`ResolvedAPI`](other.md#resolvedapi)\<`SpecOrAPI`\>\[`K`\]\> |

###### Returns

Expand All @@ -42,16 +48,22 @@ sdk.api.register("multiply", (sdk: SDK, a: number, b: number) => {

##### send()

> **send**(`event`: keyof `Events`, ...`args`: `any`[]): `void`
> **send**\<`K`\>(`event`: `K`, ...`args`: [`EventParameters`](other.md#eventparameters)\<[`ResolvedEvents`](other.md#resolvedevents)\<`SpecOrAPI`, `Events`\>\[`K`\]\>): `void`

Sends an event to the frontend plugin.

###### Type Parameters

| Type Parameter |
| ------ |
| `K` *extends* `string` \| `number` \| `symbol` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `event` | keyof `Events` |
| ...`args` | `any`[] |
| `event` | `K` |
| ...`args` | [`EventParameters`](other.md#eventparameters)\<[`ResolvedEvents`](other.md#resolvedevents)\<`SpecOrAPI`, `Events`\>\[`K`\]\> |

###### Returns

Expand Down
2 changes: 1 addition & 1 deletion src/reference/sdks/backend/index.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# @caido/sdk-backend

This is the reference for the backend SDK used by backend plugins.
[SDK](#events) is the main interface that provides access to various services and functionalities.
[SDK](other.md#events) is the main interface that provides access to various services and functionalities.

## SDK

Expand Down
149 changes: 149 additions & 0 deletions src/reference/sdks/backend/other.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,50 @@ The prepared statement [parameters are bound](https://www.sqlite.org/c3ref/bind_

***

### AnyFn()

> **AnyFn** = (...`args`: `any`[]) => [`MaybePromise`](shared.md#maybepromise)\<`any`\>

#### Parameters

| Parameter | Type |
| ------ | ------ |
| ...`args` | `any`[] |

#### Returns

[`MaybePromise`](shared.md#maybepromise)\<`any`\>

***

### AnyVoidFn()

> **AnyVoidFn** = (...`args`: `any`[]) => [`MaybePromise`](shared.md#maybepromise)\<`void`\>

#### Parameters

| Parameter | Type |
| ------ | ------ |
| ...`args` | `any`[] |

#### Returns

[`MaybePromise`](shared.md#maybepromise)\<`void`\>

***

### APICallback

> **APICallback**\<`T`\> = `T` *extends* [`AnyFn`](#anyfn) ? (`sdk`: [`SDK`](index.md#sdk), ...`args`: `Parameters`\<`T`\>) => `ReturnType`\<`T`\> : [`InvalidCallbackMessage`](#invalidcallbackmessage)

#### Type Parameters

| Type Parameter |
| ------ |
| `T` |

***

### Console

> **Console** = `object`
Expand Down Expand Up @@ -276,6 +320,54 @@ The value of the environment variable.

***

### EventParameters

> **EventParameters**\<`T`\> = `T` *extends* [`AnyVoidFn`](#anyvoidfn) ? `A` : [`InvalidEventParametersMessage`](#invalideventparametersmessage)

#### Type Parameters

| Type Parameter |
| ------ |
| `T` |

***

### ExactPluginPackageKeys

> **ExactPluginPackageKeys**\<`T`\> = keyof `T` *extends* [`PluginPackageSpecKey`](#pluginpackagespeckey) ? [`PluginPackageSpecKey`](#pluginpackagespeckey) *extends* keyof `T` ? `unknown` : [`PluginPackageSpecKeyError`](#pluginpackagespeckeyerror) : [`PluginPackageSpecKeyError`](#pluginpackagespeckeyerror)

#### Type Parameters

| Type Parameter |
| ------ |
| `T` |

***

### InvalidCallbackMessage

> **InvalidCallbackMessage** = `"Your callback must respect the format (sdk: SDK, ...args: unknown[]) => MaybePromise<unknown>"`

***

### InvalidEventParametersMessage

> **InvalidEventParametersMessage** = `"Invalid event parameters"`

***

### MaybePromise

> **MaybePromise**\<`T`\> = `T` \| `Promise`\<`T`\>

#### Type Parameters

| Type Parameter |
| ------ |
| `T` |

***

### PageInfo

> **PageInfo** = `object`
Expand Down Expand Up @@ -308,6 +400,63 @@ Information on the current page of paginated data.

***

### PluginPackageSpec

> **PluginPackageSpec** = `object`

#### Properties

##### api

> **api**: `Record`\<`string`, [`AnyFn`](#anyfn)\>

##### events

> **events**: `Record`\<`string`, [`AnyVoidFn`](#anyvoidfn)\>

##### manifestId

> **manifestId**: `string`

***

### PluginPackageSpecKey

> **PluginPackageSpecKey** = keyof [`PluginPackageSpec`](#pluginpackagespec)

***

### PluginPackageSpecKeyError

> **PluginPackageSpecKeyError** = `"Only manifestId, api and events keys are allowed"`

***

### ResolvedAPI

> **ResolvedAPI**\<`T`\> = `T` *extends* `object` ? `A` : `T`

#### Type Parameters

| Type Parameter |
| ------ |
| `T` |

***

### ResolvedEvents

> **ResolvedEvents**\<`T`, `Events`\> = `T` *extends* `object` ? `A` : `Events`

#### Type Parameters

| Type Parameter |
| ------ |
| `T` |
| `Events` |

***

### Result

> **Result** = `object`
Expand Down
58 changes: 43 additions & 15 deletions src/reference/sdks/backend/shared.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ A cursor for pagination.

***

### DefineAPI
### ~~DefineAPI~~

> **DefineAPI**\<`API`\> = `{ [K in keyof API]: DefineAPICallback<API[K]> }`

Expand Down Expand Up @@ -50,6 +50,10 @@ export function init(sdk: SDK<API>) {
}
```

#### Deprecated

Use DefinePluginPackageSpec instead.

***

### DefineAPICallback
Expand Down Expand Up @@ -80,7 +84,7 @@ Parser for Plugin backend events callbacks.

***

### DefineEvents
### ~~DefineEvents~~

> **DefineEvents**\<`Events`\> = `{ [K in keyof Events]: DefineEventCallback<Events[K]> }`

Expand All @@ -106,33 +110,57 @@ export function init(sdk: SDK<{}, BackendEvents>) {
}
```

#### Deprecated

Use DefinePluginPackageSpec instead.

***

### ID
### DefinePluginPackageSpec

> **ID** = `string` & `object`
> **DefinePluginPackageSpec**\<`TSpec`\> = `TSpec`

A unique identifier.
Define the specification of a Plugin Package. This includes:

#### Type Declaration
- Manifest ID: the unique identifier of the plugin package.
- API: the backend functions that are callable from the frontend plugin.
- Events: the events that the frontend can receive from the backend plugin.

##### \_\_id?
#### Type Parameters

> `optional` **\_\_id**: `never`
| Type Parameter |
| ------ |
| `TSpec` *extends* [`PluginPackageSpec`](other.md#pluginpackagespec) & [`ExactPluginPackageKeys`](other.md#exactpluginpackagekeys)\<`TSpec`\> |

#### Example

```typescript
type MyEventData = { id: string; name: string };

export type Spec = DefinePluginPackageSpec<{
manifestId: "myplugin",
api: {
myFunction: (min: number, max: number) => Promise<string>;
},
events: {
"my-event": (data: MyEventData) => void;
}
}>;
```

***

### MaybePromise
### ID

> **MaybePromise**\<`T`\> = `T` \| `Promise`\<`T`\>
> **ID** = `string` & `object`

Promise or value.
A unique identifier.

#### Type Parameters
#### Type Declaration

| Type Parameter |
| ------ |
| `T` |
##### \_\_id?

> `optional` **\_\_id**: `never`

***

Expand Down
Loading
Loading