Skip to content

Commit 4d6414d

Browse files
committed
feat(javascript): add task trigger type guards
1 parent b05cb18 commit 4d6414d

File tree

3 files changed

+47
-0
lines changed

3 files changed

+47
-0
lines changed

templates/javascript/clients/api-single.mustache

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,9 @@ export function create{{capitalizedApiName}}({
8383
{{#isSearchClient}}
8484
{{> client/api/helpers}}
8585
{{/isSearchClient}}
86+
{{#isIngestionClient}}
87+
{{> client/api/guards}}
88+
{{/isIngestionClient}}
8689
{{#operation}}
8790
{{> client/api/operation/jsdoc}}
8891
{{nickname}}{{#vendorExtensions.x-is-generic}}<T>{{/vendorExtensions.x-is-generic}}( {{> client/api/operation/parameters}} ) : Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}{{#vendorExtensions.x-is-generic}}<T>{{/vendorExtensions.x-is-generic}}> {
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
{{#isIngestionClient}}
2+
/**
3+
* Guard: Return strongly typed specific OnDemandTrigger for a given Trigger.
4+
*
5+
* @summary Guard method that returns a strongly typed specific OnDemandTrigger for a given Trigger.
6+
* @param trigger - The given Task Trigger.
7+
*/
8+
isOnDemandTrigger(
9+
trigger: Trigger
10+
): trigger is OnDemandTrigger {
11+
return trigger.type === 'on_demand';
12+
},
13+
14+
/**
15+
* Guard: Return strongly typed specific ScheduleTrigger for a given Trigger.
16+
*
17+
* @summary Guard method that returns a strongly typed specific ScheduleTrigger for a given Trigger.
18+
* @param trigger - The given Task Trigger.
19+
*/
20+
isScheduleTrigger(
21+
trigger: Trigger
22+
): trigger is ScheduleTrigger {
23+
return trigger.type === 'schedule';
24+
},
25+
26+
/**
27+
* Guard: Return strongly typed specific SubscriptionTrigger for a given Trigger.
28+
*
29+
* @summary Guard method that returns a strongly typed specific SubscriptionTrigger for a given Trigger.
30+
* @param trigger - The given Task Trigger.
31+
*/
32+
isSubscriptionTrigger(
33+
trigger: Trigger
34+
): trigger is SubscriptionTrigger {
35+
return trigger.type === 'subscription';
36+
},
37+
{{/isIngestionClient}}

templates/javascript/clients/client/api/imports.mustache

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,10 @@ import type {
4343
{{/operation}}
4444
} from '../model/clientMethodProps';
4545
{{/operations}}
46+
47+
{{#isIngestionClient}}
48+
import type { Trigger } from '../model/trigger';
49+
import type { OnDemandTrigger } from '../model/onDemandTrigger';
50+
import type { ScheduleTrigger } from '../model/scheduleTrigger';
51+
import type { SubscriptionTrigger } from '../model/subscriptionTrigger';
52+
{{/isIngestionClient}}

0 commit comments

Comments
 (0)