1+ /*---------------------------------------------------------------------------------------------
2+ * Copyright (c) Microsoft Corporation. All rights reserved.
3+ * Licensed under the MIT License. See License.txt in the project root for license information.
4+ *--------------------------------------------------------------------------------------------*/
5+
16import { UserBuilder } from './userBuilder' ;
27import { RepositoryBuilder } from './repoBuilder' ;
38import { createBuilderClass } from '../base' ;
49import { OctokitCommon } from '../../../github/common' ;
510
611type RefUnion = OctokitCommon . PullsListResponseItemHead & OctokitCommon . PullsListResponseItemBase ;
712
8- export const RefBuilder = createBuilderClass < RefUnion > ( ) ( {
13+ export const RefBuilder = createBuilderClass < NonNullable < RefUnion > > ( ) ( {
914 label : { default : 'octocat:new-feature' } ,
1015 ref : { default : 'new-feature' } ,
1116 user : { linked : UserBuilder } ,
@@ -14,4 +19,15 @@ export const RefBuilder = createBuilderClass<RefUnion>()({
1419 repo : { linked : < any > RepositoryBuilder } ,
1520} ) ;
1621
22+ // Variant where user is guaranteed non-null.
23+ type NonNullUserRef = Omit < RefUnion , 'user' > & { user : NonNullable < RefUnion [ 'user' ] > } ;
24+
25+ export const NonNullUserRefBuilder = createBuilderClass < NonNullUserRef > ( ) ( {
26+ label : { default : 'octocat:new-feature' } ,
27+ ref : { default : 'new-feature' } ,
28+ user : { linked : UserBuilder } , // non-null guarantee
29+ sha : { default : '0000000000000000000000000000000000000000' } ,
30+ repo : { linked : < any > RepositoryBuilder } ,
31+ } ) ;
32+
1733export type RefBuilder = InstanceType < typeof RefBuilder > ;
0 commit comments