Skip to content

Commit 07ae633

Browse files
committed
feat(type): provided data types in relation to metadata and richtext
1 parent c48f8ad commit 07ae633

File tree

3 files changed

+465
-0
lines changed

3 files changed

+465
-0
lines changed

source/types/format.ts

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
/*
2+
* *** MIT LICENSE ***
3+
* -------------------------------------------------------------------------
4+
* This code may be modified and distributed under the MIT license.
5+
* See the LICENSE file for details.
6+
* -------------------------------------------------------------------------
7+
*
8+
* @summary Collection of formatting related types
9+
*
10+
* @author Alvis HT Tang <alvis@hilbert.space>
11+
* @license MIT
12+
* @copyright Copyright (c) 2021 - All Rights Reserved.
13+
* -------------------------------------------------------------------------
14+
*/
15+
16+
import type { DateValue } from './property';
17+
import type { User } from './user';
18+
19+
/*
20+
* Colour
21+
*/
22+
23+
export type Color =
24+
| 'default'
25+
| 'gray'
26+
| 'brown'
27+
| 'orange'
28+
| 'yellow'
29+
| 'green'
30+
| 'blue'
31+
| 'purple'
32+
| 'pink'
33+
| 'red';
34+
35+
export type BackgroundColor =
36+
| 'gray_background'
37+
| 'brown_background'
38+
| 'orange_background'
39+
| 'yellow_background'
40+
| 'green_background'
41+
| 'blue_background'
42+
| 'purple_background'
43+
| 'pink_background'
44+
| 'red_background';
45+
46+
/*
47+
* Flags
48+
*/
49+
50+
export interface Annotation {
51+
bold: boolean;
52+
italic: boolean;
53+
strikethrough: boolean;
54+
underline: boolean;
55+
code: boolean;
56+
color: Color | BackgroundColor;
57+
}
58+
59+
/*
60+
* Base
61+
*/
62+
63+
interface RichTextBase<T extends string> {
64+
plain_text: string;
65+
href: string | null;
66+
annotations: Annotation;
67+
type: T;
68+
}
69+
70+
/*
71+
* Text
72+
*/
73+
74+
interface RichTextText extends RichTextBase<'text'> {
75+
text: {
76+
content: string;
77+
link: { url: string } | null;
78+
};
79+
}
80+
81+
/*
82+
* Mention
83+
*/
84+
85+
interface UserMention {
86+
type: 'user';
87+
user: User;
88+
}
89+
90+
interface PageMention {
91+
type: 'page';
92+
page: { id: string };
93+
}
94+
95+
interface DatabaseMention {
96+
type: 'database';
97+
database: { id: string };
98+
}
99+
100+
interface DateMention {
101+
type: 'date';
102+
date: DateValue;
103+
}
104+
105+
interface RichTextMention extends RichTextBase<'mention'> {
106+
mention: UserMention | PageMention | DatabaseMention | DateMention;
107+
}
108+
109+
/*
110+
* Equation
111+
*/
112+
113+
interface RichTextEquation extends RichTextBase<'equation'> {
114+
equation: {
115+
expression: string;
116+
};
117+
}
118+
119+
/*
120+
* Main
121+
*/
122+
123+
export type RichText = RichTextText | RichTextMention | RichTextEquation;

source/types/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,6 @@
1515

1616
/* istanbul ignore file */
1717

18+
export * from './format';
1819
export * from './user';
20+
export * from './property';

0 commit comments

Comments
 (0)