Skip to content

Commit 090121d

Browse files
authored
Merge pull request #31 from takker99/external-links
✨ External Links絡みのpropertiesを生やした
2 parents b61019c + 9e557d8 commit 090121d

File tree

1 file changed

+126
-33
lines changed

1 file changed

+126
-33
lines changed

response.ts

Lines changed: 126 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,6 @@ import {
99
} from "./base.ts";
1010
import { Commit } from "./commit.ts";
1111

12-
/** 関連ページのメタデータ */
13-
export interface RelatedPage extends BasePage {
14-
/** ページ内のリンク */ linksLc: StringLc[];
15-
/** おそらく被リンク数 */ linked: number;
16-
}
17-
1812
/** user information */
1913
export interface User {
2014
id: UserId;
@@ -39,31 +33,93 @@ export interface Page extends BasePage {
3933
* おそらくこの値を元にテロメアの未読/既読の判別をしている
4034
*/
4135
lastAccessed: UnixTime | null;
42-
/** 生成されたPage historyの数 */ snapshotCount: number;
43-
/** 不明。削除されたページだとfalse? */ persistent: boolean;
44-
/** ページの行情報 */ lines: BaseLine[];
45-
/** ページ内のリンク */ links: string[];
46-
/** ページ内のアイコン */ icons: string[];
36+
37+
/** 生成されたPage historyの数 */
38+
snapshotCount: number;
39+
40+
/** 空リンクだと`false` */
41+
persistent: boolean;
42+
43+
/** ページの行情報 */
44+
lines: BaseLine[];
45+
46+
/** ページ内のリンク */
47+
links: string[];
48+
49+
/** ページ内の外部プロジェクトリンク */
50+
projectLinks: string[];
51+
52+
/** ページ内のアイコン */
53+
icons: string[];
54+
4755
/** ページ内に含まれる、scrapbox.ioにアップロードしたファイルへのリンク */
4856
files: string[];
57+
4958
/** 関連ページリスト */
50-
relatedPages: {
51-
/** 1 hop links */ links1hop: RelatedPage[];
52-
/** 2 hop links */ links2hop: RelatedPage[];
53-
/** このページを参照しているページorアイコンがあればtrue */
54-
hasBackLinksOrIcons: boolean;
55-
};
56-
/** 最後にページを更新したユーザー */ user: User;
57-
/** ページを編集したユーザーのうち、`user`以外の人 */ collaborators: User[];
59+
relatedPages: RelatedPages;
60+
61+
/** 最後にページを更新したユーザー */
62+
user: User;
63+
64+
/** ページを編集したユーザーのうち、`user`以外の人 */
65+
collaborators: User[];
66+
}
67+
68+
export interface RelatedPages {
69+
/** 1 hop links */
70+
links1hop: RelatedPage[];
71+
72+
/** 2 hop links */
73+
links2hop: RelatedPage[];
74+
75+
/** external links */
76+
projectLinks1hop: ProjectRelatedPage[];
77+
78+
/** このページを参照しているページorアイコンがあればtrue */
79+
hasBackLinksOrIcons: boolean;
80+
}
81+
82+
/** 関連ページのメタデータ */
83+
export interface RelatedPage extends
84+
Pick<
85+
BasePage,
86+
| "id"
87+
| "title"
88+
| "image"
89+
| "descriptions"
90+
| "linked"
91+
| "updated"
92+
| "accessed"
93+
> {
94+
/** page title */
95+
titleLc: StringLc;
96+
97+
/** ページ内のリンク */
98+
linksLc: StringLc[];
99+
}
100+
101+
/** 外部プロジェクトの関連ページ */
102+
export interface ProjectRelatedPage extends Omit<RelatedPage, "linksLc"> {
103+
/** project name */
104+
projectName: string;
58105
}
59106

60107
/** the response type of https://scrpabox.io/api/pages/:projectname */
61108
export interface PageList {
62-
/** data取得先のproject名 */ projectName: string;
63-
/** parameterに渡したskipと同じ */ skip: number;
64-
/** parameterに渡したlimitと同じ */ limit: number;
65-
/** projectの全ページ数 (中身のないページを除く) */ count: number;
66-
/** 取得できたページ情報 */ pages: BasePage[];
109+
/** data取得先のproject名 */
110+
projectName: string;
111+
112+
/** parameterに渡したskipと同じ */
113+
skip: number;
114+
115+
/** parameterに渡したlimitと同じ */
116+
limit: number;
117+
118+
/** projectの全ページ数 (中身のないページを除く) */
119+
count: number;
120+
121+
/** 取得できたページ情報 */
122+
pages: BasePage[];
67123
}
68124

69125
/** project information which isn't joined */
@@ -118,8 +174,11 @@ export type UserResponse = GuestUser | MemberUser;
118174
/** the response type of https://scrapbox.io/api/pages/:projectname/search/titles */
119175
export interface SearchedTitle
120176
extends Pick<BasePage, "id" | "title" | "updated"> {
121-
/** 画像が存在するかどうか */ hasIcon: boolean;
122-
/** ページ内のリンク */ links: string[];
177+
/** 画像が存在するかどうか */
178+
hasIcon: boolean;
179+
180+
/** ページ内のリンク */
181+
links: string[];
123182
}
124183

125184
/** exportもしくはbackupをとったときのページデータ */
@@ -135,10 +194,17 @@ export interface ExportedPage<hasMetadata extends true | false = false>
135194
}
136195

137196
export interface ExportedData<hasMetadata extends true | false = false> {
138-
/** project's name */ name: string;
139-
/** project's display name */ displayName: string;
140-
/** このデータを生成した日時 (UNIX時刻) */ exported: UnixTime;
141-
/** exported pages */ pages: ExportedPage<hasMetadata>[];
197+
/** project's name */
198+
name: string;
199+
200+
/** project's display name */
201+
displayName: string;
202+
203+
/** このデータを生成した日時 (UNIX時刻) */
204+
exported: UnixTime;
205+
206+
/** exported pages */
207+
pages: ExportedPage<hasMetadata>[];
142208
}
143209

144210
/** メタデータ無しインポート用ページデータ */
@@ -148,6 +214,7 @@ export interface ImportedLightPage {
148214
* `title` should be equal to `lines[0]`
149215
*/
150216
title: string;
217+
151218
/** page's text
152219
*
153220
* `lines[0]` should be equal to `title`
@@ -156,9 +223,14 @@ export interface ImportedLightPage {
156223
}
157224
/** インポート用メタデータ付き行データ */
158225
export interface ImportedLine {
159-
/** line text */ text: string;
160-
/** 行の最終更新日時 (UNIX時刻) */ updated?: UnixTime;
161-
/** 行の最終作成日時 (UNIX時刻) */ created?: UnixTime;
226+
/** line text */
227+
text: string;
228+
229+
/** 行の最終更新日時 (UNIX時刻) */
230+
updated?: UnixTime;
231+
232+
/** 行の最終作成日時 (UNIX時刻) */
233+
created?: UnixTime;
162234
}
163235
/** メタデータ付きインポート用ページデータ */
164236
export interface ImportedPage {
@@ -167,6 +239,7 @@ export interface ImportedPage {
167239
* `title` should be equal to `lines[0].text`
168240
*/
169241
title: string;
242+
170243
/** page's line data
171244
*
172245
* `lines[0].text` should be equal to `title`
@@ -183,10 +256,13 @@ export interface ImportedData<hasMetadata extends true | false = false> {
183256
export interface TweetInfo {
184257
/** Tweet本文 */
185258
description: string;
259+
186260
/** Tweet投稿者のuser name*/
187261
userName: string;
262+
188263
/** Tweet投稿者の表示名 */
189264
screenName: string;
265+
190266
/** Tweetに添付された画像 */
191267
images: string[];
192268
}
@@ -195,30 +271,41 @@ export interface TweetInfo {
195271
export interface SearchResult {
196272
/** 検索したprojectの名前 */
197273
projectName: string;
274+
198275
/** 検索文字列 */
199276
searchQuery: string;
277+
200278
/** 検索語句 */
201279
query: SearchQuery;
280+
202281
/** 検索件数の上限 */
203282
limit: number;
283+
204284
/** 検索件数 */
205285
count: number;
286+
206287
/** 検索文字列と完全一致するタイトルが見つかったら`true` */
207288
existsExactTitleMatch: boolean;
289+
208290
/** 全文検索エンジンの名前 */
209291
backend: string;
292+
210293
/** 見つかったページ */
211294
pages: {
212295
id: PageId;
296+
213297
/** page title */
214298
title: string;
299+
215300
/** page thumbnail
216301
*
217302
* 無いときは空文字が入る
218303
*/
219304
image: string;
305+
220306
/** 検索語句の中で、このページに含まれている語句 */
221307
words: string[];
308+
222309
/** 検索語句に一致した行
223310
*
224311
* タイトル行のみが一致した場合は、検索語句の有無にかかわらずその次の行のみが入る
@@ -231,15 +318,20 @@ export interface SearchResult {
231318
export interface ProjectSearchResult {
232319
/** 検索文字列 */
233320
searchQuery: string;
321+
234322
/** 検索語句 */
235323
query: SearchQuery;
324+
236325
/** 見つかったprojects */
237326
projects: {
238327
_id: ProjectId;
328+
239329
/** project name */
240330
name: string;
331+
241332
/** projectの表示名 */
242333
displayName: string;
334+
243335
/** project favicon
244336
*
245337
* 無いときは`null`が入るかproperty自体が存在しない
@@ -252,6 +344,7 @@ export interface ProjectSearchResult {
252344
export interface SearchQuery {
253345
/** AND検索に使う語句 */
254346
words: string[];
347+
255348
/** NOT検索に使う語句 */
256349
excludes: string[];
257350
}

0 commit comments

Comments
 (0)