I found it – it is dynamically injected as entity in gutenberg/packages/core-data/src/index.js, on line 22
const entitySelectors = rootEntitiesConfig.reduce( ( result, entity ) => {
const { kind, name } = entity;
result[ getMethodName( kind, name ) ] = ( state, key, query ) =>
selectors.getEntityRecord( state, kind, name, key, query );
result[ getMethodName( kind, name, 'get', true ) ] = ( state, query ) =>
selectors.getEntityRecords( state, kind, name, query );
return result;
}, {} );
While entities are defined in gutenberg/packages/core-data/src/entities.js,
it is this entity:
{
label: __( 'Site' ),
name: 'site',
kind: 'root',
baseURL: '/wp/v2/settings',
getTitle: ( record ) => {
return get( record, [ 'title' ], __( 'Site Title' ) );
},
},
EDIT:
getSite does not take any parameters and it returns object with following properties:
0: "title"
1: "description"
2: "url"
3: "email"
4: "timezone"
5: "date_format"
6: "time_format"
7: "start_of_week"
8: "language"
9: "use_smilies"
10: "default_category"
11: "default_post_format"
12: "posts_per_page"
13: "show_on_front"
14: "page_on_front"
15: "page_for_posts"
16: "default_ping_status"
17: "default_comment_status"
18: "site_logo"
19: "site_icon"