blob: dc3db903da528a89381b6bff6aa34f6ebac2ea9c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
/**
* Types for raw data coming from GraphQL API.
*/
import { NodeResponse, PageInfo } from '@services/graphql/api';
import { ContentKind } from './app';
export type ACFPosts = {
postsInThematic?: RawThematicPreview[];
postsInTopic?: RawTopicPreview[];
};
export type ACFThematics = {
postsInThematic: RawArticle[];
};
export type ACFTopics = {
officialWebsite: string;
postsInTopic: RawArticle[];
};
export type ContentParts = {
afterMore: string;
beforeMore: string;
};
export type Info = {
wordsCount: number;
};
export type RawAuthor<T extends ContentKind> = {
description?: T extends 'comment' ? never : string;
gravatarUrl?: string;
name: string;
url?: string;
};
export type RawComment = {
approved: boolean;
author: NodeResponse<RawAuthor<'comment'>>;
content: string;
databaseId: number;
date: string;
parentDatabaseId: number;
};
export type RawCover = {
altText: string;
mediaDetails: {
width: number;
height: number;
};
sourceUrl: string;
title?: string;
};
export type RawArticle = RawPage & {
acfPosts: ACFPosts;
commentCount: number | null;
};
export type RawArticlePreview = Pick<
RawArticle,
'databaseId' | 'date' | 'featuredImage' | 'slug' | 'title'
>;
export type RawPage = {
author?: NodeResponse<RawAuthor<'page'>>;
contentParts: ContentParts;
databaseId: number;
date: string;
featuredImage: NodeResponse<RawCover> | null;
info: Info;
modified: string;
seo?: RawSEO;
slug: string;
title: string;
};
export type RawSEO = {
metaDesc: string;
title: string;
};
export type RawThematic = RawPage & {
acfThematics: ACFThematics;
};
export type RawThematicPreview = Pick<
RawThematic,
'databaseId' | 'featuredImage' | 'slug' | 'title'
>;
export type RawTopic = RawPage & {
acfTopics: ACFTopics;
};
export type RawTopicPreview = Pick<
RawTopic,
'databaseId' | 'featuredImage' | 'slug' | 'title'
>;
export type TotalItems = {
pageInfo: Pick<PageInfo, 'total'>;
};
|