Skip to content
This repository was archived by the owner on May 17, 2025. It is now read-only.
Merged
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
8 changes: 4 additions & 4 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ graphql-lambda-subscriptions
- [SubscribePseudoIterable](interfaces/SubscribePseudoIterable.md)
- [SubscriptionServer](interfaces/SubscriptionServer.md)

### Type aliases
### Type Aliases

- [LoggerFunction](README.md#loggerfunction)
- [MaybePromise](README.md#maybepromise)
Expand All @@ -29,7 +29,7 @@ graphql-lambda-subscriptions
- [makeServer](README.md#makeserver)
- [subscribe](README.md#subscribe)

## Type aliases
## Type Aliases

### LoggerFunction

Expand Down Expand Up @@ -109,7 +109,7 @@ ___

### makeServer

`Const` **makeServer**(`opts`): [`SubscriptionServer`](interfaces/SubscriptionServer.md)
▸ **makeServer**(`opts`): [`SubscriptionServer`](interfaces/SubscriptionServer.md)

#### Parameters

Expand All @@ -125,7 +125,7 @@ ___

### subscribe

`Const` **subscribe**<`T`, `TRoot`, `TArgs`, `TContext`\>(`topic`, `options?`): [`SubscribePseudoIterable`](interfaces/SubscribePseudoIterable.md)<`T`, [`SubscribeArgs`](README.md#subscribeargs)<`TRoot`, `TArgs`, `TContext`\>\>
▸ **subscribe**<`T`, `TRoot`, `TArgs`, `TContext`\>(`topic`, `options?`): [`SubscribePseudoIterable`](interfaces/SubscribePseudoIterable.md)<`T`, [`SubscribeArgs`](README.md#subscribeargs)<`TRoot`, `TArgs`, `TContext`\>\>

Creates subscribe handler for use in your graphql schema.

Expand Down
4 changes: 2 additions & 2 deletions docs/interfaces/ApiGatewayManagementApiSubset.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@

| Name | Type |
| :------ | :------ |
| `promise` | () => `Promise`<`void`\> |
| `promise` | () => `Promise`<`any`\> |

___

Expand All @@ -50,4 +50,4 @@ ___

| Name | Type |
| :------ | :------ |
| `promise` | () => `Promise`<`void`\> |
| `promise` | () => `Promise`<`any`\> |
135 changes: 78 additions & 57 deletions docs/interfaces/ServerArgs.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,15 @@
- [context](ServerArgs.md#context)
- [dynamodb](ServerArgs.md#dynamodb)
- [log](ServerArgs.md#log)
- [pingpong](ServerArgs.md#pingpong)
- [schema](ServerArgs.md#schema)
- [tableNames](ServerArgs.md#tablenames)

### Methods

- [onConnect](ServerArgs.md#onconnect)
- [onConnectionInit](ServerArgs.md#onconnectioninit)
- [onDisconnect](ServerArgs.md#ondisconnect)
- [onError](ServerArgs.md#onerror)
- [onPing](ServerArgs.md#onping)
- [onPong](ServerArgs.md#onpong)
- [pingpong](ServerArgs.md#pingpong)
- [schema](ServerArgs.md#schema)
- [tableNames](ServerArgs.md#tablenames)

## Properties

Expand Down Expand Up @@ -55,139 +52,163 @@ Defaults to debug('graphql-lambda-subscriptions') from https://www.npmjs.com/pac

___

### pingpong

• `Optional` **pingpong**: [`MaybePromise`](../README.md#maybepromise)<{ `delay`: `number` ; `machine`: `string` ; `timeout`: `number` }\>

If set you can use the `stepFunctionsHandler` and a step function to setup a per connection ping/pong cycle to detect disconnects sooner than the 10 minute idle timeout.

___

### schema

• **schema**: `GraphQLSchema`

A GraphQL Schema with resolvers

You can use `makeExecutableSchema` from [`@graphql-tools/schema`](https://www.npmjs.com/package/@graphql-tools/schema), or `makeSchema` from [`nexus`](https://nexusjs.org/)

```ts
import { makeExecutableSchema } from '@graphql-tools/schema
// or
import { makeSchema } from 'nexus'
```

___

### tableNames

• `Optional` **tableNames**: [`MaybePromise`](../README.md#maybepromise)<{ `connections?`: `string` ; `subscriptions?`: `string` }\>

An optional object or a promise for an object with DDB table names.

Defaults to `{ connections: 'graphql_connections', subscriptions: 'graphql_subscriptions' }`
### onConnect

## Methods
• `Optional` **onConnect**: (`e`: { `event`: [`APIGatewayWebSocketEvent`](APIGatewayWebSocketEvent.md) }) => [`MaybePromise`](../README.md#maybepromise)<`void`\>

### onConnect
#### Type declaration

`Optional` **onConnect**(`e`): [`MaybePromise`](../README.md#maybepromise)<`void`\>
▸ (`e`): [`MaybePromise`](../README.md#maybepromise)<`void`\>

#### Parameters
##### Parameters

| Name | Type |
| :------ | :------ |
| `e` | `Object` |
| `e.event` | [`APIGatewayWebSocketEvent`](APIGatewayWebSocketEvent.md) |

#### Returns
##### Returns

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

___

### onConnectionInit

▸ `Optional` **onConnectionInit**(`e`): [`MaybePromise`](../README.md#maybepromise)<`Record`<`string`, `any`\>\>
• `Optional` **onConnectionInit**: (`e`: { `event`: [`APIGatewayWebSocketEvent`](APIGatewayWebSocketEvent.md) ; `message`: `ConnectionInitMessage` }) => [`MaybePromise`](../README.md#maybepromise)<`Record`<`string`, `any`\>\>

#### Type declaration

▸ (`e`): [`MaybePromise`](../README.md#maybepromise)<`Record`<`string`, `any`\>\>

#### Parameters
##### Parameters

| Name | Type |
| :------ | :------ |
| `e` | `Object` |
| `e.event` | [`APIGatewayWebSocketEvent`](APIGatewayWebSocketEvent.md) |
| `e.message` | `ConnectionInitMessage` |

#### Returns
##### Returns

[`MaybePromise`](../README.md#maybepromise)<`Record`<`string`, `any`\>\>

___

### onDisconnect

`Optional` **onDisconnect**(`e`): [`MaybePromise`](../README.md#maybepromise)<`void`\>
`Optional` **onDisconnect**: (`e`: { `event`: [`APIGatewayWebSocketEvent`](APIGatewayWebSocketEvent.md) }) => [`MaybePromise`](../README.md#maybepromise)<`void`\>

#### Parameters
#### Type declaration

▸ (`e`): [`MaybePromise`](../README.md#maybepromise)<`void`\>

##### Parameters

| Name | Type |
| :------ | :------ |
| `e` | `Object` |
| `e.event` | [`APIGatewayWebSocketEvent`](APIGatewayWebSocketEvent.md) |

#### Returns
##### Returns

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

___

### onError

▸ `Optional` **onError**(`error`, `context`): [`MaybePromise`](../README.md#maybepromise)<`void`\>
• `Optional` **onError**: (`error`: `any`, `context`: `any`) => [`MaybePromise`](../README.md#maybepromise)<`void`\>

#### Type declaration

#### Parameters
▸ (`error`, `context`): [`MaybePromise`](../README.md#maybepromise)<`void`\>

##### Parameters

| Name | Type |
| :------ | :------ |
| `error` | `any` |
| `context` | `any` |

#### Returns
##### Returns

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

___

### onPing

▸ `Optional` **onPing**(`e`): [`MaybePromise`](../README.md#maybepromise)<`void`\>
• `Optional` **onPing**: (`e`: { `event`: [`APIGatewayWebSocketEvent`](APIGatewayWebSocketEvent.md) ; `message`: `PingMessage` }) => [`MaybePromise`](../README.md#maybepromise)<`void`\>

#### Type declaration

▸ (`e`): [`MaybePromise`](../README.md#maybepromise)<`void`\>

#### Parameters
##### Parameters

| Name | Type |
| :------ | :------ |
| `e` | `Object` |
| `e.event` | [`APIGatewayWebSocketEvent`](APIGatewayWebSocketEvent.md) |
| `e.message` | `PingMessage` |

#### Returns
##### Returns

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

___

### onPong

`Optional` **onPong**(`e`): [`MaybePromise`](../README.md#maybepromise)<`void`\>
`Optional` **onPong**: (`e`: { `event`: [`APIGatewayWebSocketEvent`](APIGatewayWebSocketEvent.md) ; `message`: `PongMessage` }) => [`MaybePromise`](../README.md#maybepromise)<`void`\>

#### Parameters
#### Type declaration

▸ (`e`): [`MaybePromise`](../README.md#maybepromise)<`void`\>

##### Parameters

| Name | Type |
| :------ | :------ |
| `e` | `Object` |
| `e.event` | [`APIGatewayWebSocketEvent`](APIGatewayWebSocketEvent.md) |
| `e.message` | `PongMessage` |

#### Returns
##### Returns

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

___

### pingpong

• `Optional` **pingpong**: [`MaybePromise`](../README.md#maybepromise)<{ `delay`: `number` ; `machine`: `string` ; `timeout`: `number` }\>

If set you can use the `stepFunctionsHandler` and a step function to setup a per connection ping/pong cycle to detect disconnects sooner than the 10 minute idle timeout.

___

### schema

• **schema**: `GraphQLSchema`

A GraphQL Schema with resolvers

You can use `makeExecutableSchema` from [`@graphql-tools/schema`](https://www.npmjs.com/package/@graphql-tools/schema), or `makeSchema` from [`nexus`](https://nexusjs.org/)

```ts
import { makeExecutableSchema } from '@graphql-tools/schema
// or
import { makeSchema } from 'nexus'
```

___

### tableNames

• `Optional` **tableNames**: [`MaybePromise`](../README.md#maybepromise)<{ `connections?`: `string` ; `subscriptions?`: `string` }\>

An optional object or a promise for an object with DDB table names.

Defaults to `{ connections: 'graphql_connections', subscriptions: 'graphql_subscriptions' }`
2 changes: 1 addition & 1 deletion docs/interfaces/StateFunctionInput.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,4 @@ ___

### state

• **state**: ``"PING"`` \| ``"REVIEW"`` \| ``"ABORT"``
• **state**: ``"ABORT"`` \| ``"PING"`` \| ``"REVIEW"``
35 changes: 22 additions & 13 deletions docs/interfaces/SubscribeOptions.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,6 @@
### Properties

- [filter](SubscribeOptions.md#filter)

### Methods

- [onAfterSubscribe](SubscribeOptions.md#onaftersubscribe)
- [onComplete](SubscribeOptions.md#oncomplete)
- [onSubscribe](SubscribeOptions.md#onsubscribe)
Expand All @@ -29,59 +26,71 @@

An object or a function that returns an object that will be matched against the `payload` of a published event. If the payload's field equals the filter the subscription will receive the event. If the payload is missing the filter's field the subscription will receive the event.

## Methods
___

### onAfterSubscribe

▸ `Optional` **onAfterSubscribe**(...`args`): [`MaybePromise`](../README.md#maybepromise)<`void`\>
• `Optional` **onAfterSubscribe**: (...`args`: `TSubscribeArgs`) => [`MaybePromise`](../README.md#maybepromise)<`void`\>

#### Type declaration

▸ (...`args`): [`MaybePromise`](../README.md#maybepromise)<`void`\>

Gets resolver arguments to perform work after a subscription saved. This is useful for sending out initial events.

#### Parameters
##### Parameters

| Name | Type |
| :------ | :------ |
| `...args` | `TSubscribeArgs` |

#### Returns
##### Returns

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

___

### onComplete

▸ `Optional` **onComplete**(...`args`): [`MaybePromise`](../README.md#maybepromise)<`void`\>
• `Optional` **onComplete**: (...`args`: `TSubscribeArgs`) => [`MaybePromise`](../README.md#maybepromise)<`void`\>

#### Type declaration

▸ (...`args`): [`MaybePromise`](../README.md#maybepromise)<`void`\>

Called at least once. Gets resolver arguments to perform work after a subscription has ended. This is useful for bookkeeping or logging. This callback will fire

If the client disconnects, sends a `complete` message, or the server sends a `complete` message via the pub/sub system. Because of the nature of aws lambda, it's possible for a client to send a "complete" message immediately disconnect and have those events execute on lambda out of order. Which why this function can be called up to twice.

#### Parameters
##### Parameters

| Name | Type |
| :------ | :------ |
| `...args` | `TSubscribeArgs` |

#### Returns
##### Returns

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

___

### onSubscribe

▸ `Optional` **onSubscribe**(...`args`): [`MaybePromise`](../README.md#maybepromise)<`void` \| `GraphQLError`[]\>
• `Optional` **onSubscribe**: (...`args`: `TSubscribeArgs`) => [`MaybePromise`](../README.md#maybepromise)<`void` \| `GraphQLError`[]\>

#### Type declaration

▸ (...`args`): [`MaybePromise`](../README.md#maybepromise)<`void` \| `GraphQLError`[]\>

Gets resolver arguments to perform work before a subscription is allowed. This is useful for checking arguments or
validating permissions. Return an array of GraphqlErrors if you don't want the subscription to subscribe.

#### Parameters
##### Parameters

| Name | Type |
| :------ | :------ |
| `...args` | `TSubscribeArgs` |

#### Returns
##### Returns

[`MaybePromise`](../README.md#maybepromise)<`void` \| `GraphQLError`[]\>
Loading