@@ -9,12 +9,6 @@ import {
99} from "./base.ts" ;
1010import { Commit } from "./commit.ts" ;
1111
12- /** 関連ページのメタデータ */
13- export interface RelatedPage extends BasePage {
14- /** ページ内のリンク */ linksLc : StringLc [ ] ;
15- /** おそらく被リンク数 */ linked : number ;
16- }
17-
1812/** user information */
1913export 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 */
61108export 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 */
119175export 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
137196export 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/** インポート用メタデータ付き行データ */
158225export 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/** メタデータ付きインポート用ページデータ */
164236export 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> {
183256export 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 {
195271export 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 {
231318export 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 {
252344export interface SearchQuery {
253345 /** AND検索に使う語句 */
254346 words : string [ ] ;
347+
255348 /** NOT検索に使う語句 */
256349 excludes : string [ ] ;
257350}
0 commit comments