Skip to content

Commit 9259cfc

Browse files
[Webpubsub] Add types for input/output/trigger (#311)
* Init: input/output/trigger * App trigger
1 parent d515a0a commit 9259cfc

File tree

11 files changed

+210
-1
lines changed

11 files changed

+210
-1
lines changed

src/app.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
StorageQueueFunctionOptions,
1919
TimerFunctionOptions,
2020
WarmupFunctionOptions,
21+
WebPubSubFunctionOptions,
2122
} from '@azure/functions';
2223
import { FunctionCallback } from '@azure/functions-core';
2324
import { toCoreFunctionMetadata } from './converters/toCoreFunctionMetadata';
@@ -135,6 +136,10 @@ export function sql(name: string, options: SqlFunctionOptions): void {
135136
generic(name, convertToGenericOptions(options, trigger.sql));
136137
}
137138

139+
export function webPubSub(name: string, options: WebPubSubFunctionOptions): void {
140+
generic(name, convertToGenericOptions(options, trigger.webPubSub));
141+
}
142+
138143
export function generic(name: string, options: GenericFunctionOptions): void {
139144
if (!hasSetModel) {
140145
setProgrammingModel();

src/input.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ import {
1212
StorageBlobInputOptions,
1313
TableInput,
1414
TableInputOptions,
15+
WebPubSubConnectionInput,
16+
WebPubSubConnectionInputOptions,
17+
WebPubSubContextInput,
18+
WebPubSubContextInputOptions,
1519
} from '@azure/functions';
1620
import { addBindingName } from './addBindingName';
1721

@@ -43,6 +47,20 @@ export function sql(options: SqlInputOptions): SqlInput {
4347
});
4448
}
4549

50+
export function webPubSubConnection(options: WebPubSubConnectionInputOptions): WebPubSubConnectionInput {
51+
return addInputBindingName({
52+
...options,
53+
type: 'webPubSubConnection',
54+
});
55+
}
56+
57+
export function webPubSubContext(options: WebPubSubContextInputOptions): WebPubSubContextInput {
58+
return addInputBindingName({
59+
...options,
60+
type: 'webPubSubContext',
61+
});
62+
}
63+
4664
export function generic(options: GenericInputOptions): FunctionInput {
4765
return addInputBindingName(options);
4866
}

src/output.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import {
2424
StorageQueueOutputOptions,
2525
TableOutput,
2626
TableOutputOptions,
27+
WebPubSubOutput,
28+
WebPubSubOutputOptions,
2729
} from '@azure/functions';
2830
import { addBindingName } from './addBindingName';
2931

@@ -97,6 +99,13 @@ export function sql(options: SqlOutputOptions): SqlOutput {
9799
});
98100
}
99101

102+
export function webPubSub(options: WebPubSubOutputOptions): WebPubSubOutput {
103+
return addOutputBindingName({
104+
...options,
105+
type: 'webPubSub',
106+
});
107+
}
108+
100109
export function generic(options: GenericOutputOptions): FunctionOutput {
101110
return addOutputBindingName(options);
102111
}

src/trigger.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ import {
2626
TimerTriggerOptions,
2727
WarmupTrigger,
2828
WarmupTriggerOptions,
29+
WebPubSubTrigger,
30+
WebPubSubTriggerOptions,
2931
} from '@azure/functions';
3032
import { addBindingName } from './addBindingName';
3133

@@ -108,6 +110,13 @@ export function sql(options: SqlTriggerOptions): SqlTrigger {
108110
});
109111
}
110112

113+
export function webPubSub(options: WebPubSubTriggerOptions): WebPubSubTrigger {
114+
return addTriggerBindingName({
115+
...options,
116+
type: 'webPubSubTrigger',
117+
});
118+
}
119+
111120
export function generic(options: GenericTriggerOptions): FunctionTrigger {
112121
return addTriggerBindingName(options);
113122
}

types/InvocationContext.d.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { ServiceBusQueueOutput, ServiceBusTopicOutput } from './serviceBus';
1010
import { SqlInput, SqlOutput } from './sql';
1111
import { StorageBlobInput, StorageBlobOutput, StorageQueueOutput } from './storage';
1212
import { TableInput, TableOutput } from './table';
13+
import { WebPubSubOutput } from './webpubsub';
1314

1415
/**
1516
* Contains metadata and helper methods specific to this invocation
@@ -216,6 +217,13 @@ export interface InvocationContextExtraOutputs {
216217
*/
217218
set(output: EventGridOutput, events: EventGridPartialEvent | EventGridPartialEvent[]): void;
218219

220+
/**
221+
* Set a secondary Web PubSub output for this invocation
222+
* @output the configuration object for this Web PubSub output
223+
* @message the output message(s) value
224+
*/
225+
set(output: WebPubSubOutput, messages: unknown): void;
226+
219227
/**
220228
* Set a secondary generic output for this invocation
221229
* @outputOrName the configuration object or name for this output

types/app.d.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { SqlFunctionOptions } from './sql';
1212
import { StorageBlobFunctionOptions, StorageQueueFunctionOptions } from './storage';
1313
import { TimerFunctionOptions } from './timer';
1414
import { WarmupFunctionOptions } from './warmup';
15+
import { WebPubSubFunctionOptions } from './webpubsub';
1516

1617
/**
1718
* Optional method to configure the behavior of your app.
@@ -180,4 +181,11 @@ export function sql(name: string, options: SqlFunctionOptions): void;
180181
*/
181182
export function generic(name: string, options: GenericFunctionOptions): void;
182183

184+
/**
185+
* Registers a WebPubSub function in your app that will be triggered by WebPubSub events
186+
* @param name The name of the function. The name must be unique within your app and will mostly be used for your own tracking purposes
187+
* @param options Configuration options describing the inputs, outputs, and handler for this function
188+
*/
189+
export function webPubSub(name: string, options: WebPubSubFunctionOptions): void;
190+
183191
export * as hook from './hooks/registerHook';

types/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export * from './table';
2626
export * from './timer';
2727
export * as trigger from './trigger';
2828
export * from './warmup';
29+
export * from './webpubsub';
2930

3031
/**
3132
* Void if no `return` output is registered

types/input.d.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ import { FunctionInput } from './index';
77
import { SqlInput, SqlInputOptions } from './sql';
88
import { StorageBlobInput, StorageBlobInputOptions } from './storage';
99
import { TableInput, TableInputOptions } from './table';
10+
import {
11+
WebPubSubConnectionInput,
12+
WebPubSubConnectionInputOptions,
13+
WebPubSubContextInput,
14+
WebPubSubContextInputOptions,
15+
} from './webpubsub';
1016

1117
/**
1218
* [Link to docs and examples](https://docs.microsoft.com/azure/azure-functions/functions-bindings-storage-blob-input?pivots=programming-language-javascript)
@@ -28,6 +34,16 @@ export function cosmosDB(options: CosmosDBInputOptions): CosmosDBInput;
2834
*/
2935
export function sql(options: SqlInputOptions): SqlInput;
3036

37+
/**
38+
* [Link to docs and examples](https://docs.microsoft.com/azure/azure-functions/functions-bindings-web-pubsub-input?pivots=programming-language-javascript)
39+
*/
40+
export function webPubSubConnection(options: WebPubSubConnectionInputOptions): WebPubSubConnectionInput;
41+
42+
/**
43+
* [Link to docs and examples](https://docs.microsoft.com/azure/azure-functions/functions-bindings-web-pubsub-input?pivots=programming-language-javascript)
44+
*/
45+
export function webPubSubContext(options: WebPubSubContextInputOptions): WebPubSubContextInput;
46+
3147
/**
3248
* A generic option that can be used for any input type
3349
* Use this method if your desired input type does not already have its own method

types/output.d.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import {
1616
import { SqlOutput, SqlOutputOptions } from './sql';
1717
import { StorageBlobOutput, StorageBlobOutputOptions, StorageQueueOutput, StorageQueueOutputOptions } from './storage';
1818
import { TableOutput, TableOutputOptions } from './table';
19+
import { WebPubSubOutput, WebPubSubOutputOptions } from './webpubsub';
1920

2021
/**
2122
* [Link to docs and examples](https://docs.microsoft.com/azure/azure-functions/functions-bindings-http-webhook-output?&pivots=programming-language-javascript)
@@ -67,6 +68,11 @@ export function cosmosDB(options: CosmosDBOutputOptions): CosmosDBOutput;
6768
*/
6869
export function sql(options: SqlOutputOptions): SqlOutput;
6970

71+
/**
72+
* [Link to docs and examples](https://docs.microsoft.com/azure/azure-functions/functions-bindings-web-pubsub-output?pivots=programming-language-javascript)
73+
*/
74+
export function webPubSub(options: WebPubSubOutputOptions): WebPubSubOutput;
75+
7076
/**
7177
* A generic option that can be used for any output type
7278
* Use this method if your desired output type does not already have its own method

types/trigger.d.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import {
2222
} from './storage';
2323
import { TimerTrigger, TimerTriggerOptions } from './timer';
2424
import { WarmupTrigger, WarmupTriggerOptions } from './warmup';
25-
25+
import { WebPubSubTrigger, WebPubSubTriggerOptions } from './webpubsub';
2626
/**
2727
* [Link to docs and examples](https://docs.microsoft.com/azure/azure-functions/functions-bindings-http-webhook-trigger?&pivots=programming-language-javascript)
2828
*/
@@ -78,6 +78,11 @@ export function warmup(options: WarmupTriggerOptions): WarmupTrigger;
7878
*/
7979
export function sql(options: SqlTriggerOptions): SqlTrigger;
8080

81+
/**
82+
* [Link to docs and examples](https://docs.microsoft.com/azure/azure-functions/functions-bindings-web-pubsub-trigger?pivots=programming-language-javascript)
83+
*/
84+
export function webPubSub(options: WebPubSubTriggerOptions): WebPubSubTrigger;
85+
8186
/**
8287
* A generic option that can be used for any trigger type
8388
* Use this method if your desired trigger type does not already have its own method

0 commit comments

Comments
 (0)