narou 0.7.6 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +97 -4
- package/dist/index.browser.d.ts +7 -1
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +37 -77
- package/dist/index.browser.js.map +1 -1
- package/dist/index.common.d.ts +12 -7
- package/dist/index.common.d.ts.map +1 -1
- package/dist/index.common.js +30 -20
- package/dist/index.common.js.map +1 -1
- package/dist/index.d.ts +15 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -80
- package/dist/index.js.map +1 -1
- package/dist/narou-fetch.d.ts.map +1 -1
- package/dist/narou-fetch.js +35 -119
- package/dist/narou-fetch.js.map +1 -1
- package/dist/narou-jsonp.d.ts.map +1 -1
- package/dist/narou-jsonp.js +14 -92
- package/dist/narou-jsonp.js.map +1 -1
- package/dist/narou-search-results.d.ts +20 -10
- package/dist/narou-search-results.d.ts.map +1 -1
- package/dist/narou-search-results.js +6 -9
- package/dist/narou-search-results.js.map +1 -1
- package/dist/narou.d.ts +7 -6
- package/dist/narou.d.ts.map +1 -1
- package/dist/narou.js +20 -95
- package/dist/narou.js.map +1 -1
- package/dist/params.d.ts +55 -14
- package/dist/params.d.ts.map +1 -1
- package/dist/params.js +56 -39
- package/dist/params.js.map +1 -1
- package/dist/ranking-history.js +7 -7
- package/dist/ranking-history.js.map +1 -1
- package/dist/ranking.js +41 -110
- package/dist/ranking.js.map +1 -1
- package/dist/search-builder-r18.d.ts +5 -5
- package/dist/search-builder-r18.d.ts.map +1 -1
- package/dist/search-builder-r18.js +17 -37
- package/dist/search-builder-r18.js.map +1 -1
- package/dist/search-builder.d.ts +50 -65
- package/dist/search-builder.d.ts.map +1 -1
- package/dist/search-builder.js +155 -215
- package/dist/search-builder.js.map +1 -1
- package/dist/user-search.d.ts +63 -0
- package/dist/user-search.d.ts.map +1 -0
- package/dist/user-search.js +94 -0
- package/dist/user-search.js.map +1 -0
- package/dist/util/jsonp.d.ts +3 -0
- package/dist/util/jsonp.d.ts.map +1 -1
- package/dist/util/jsonp.js +14 -17
- package/dist/util/jsonp.js.map +1 -1
- package/dist/util/unzipp.js +6 -51
- package/dist/util/unzipp.js.map +1 -1
- package/package.json +18 -8
- package/src/index.browser.ts +12 -1
- package/src/index.common.ts +18 -29
- package/src/index.ts +20 -3
- package/src/narou-fetch.ts +1 -2
- package/src/narou-jsonp.ts +1 -3
- package/src/narou-search-results.ts +20 -7
- package/src/narou.ts +26 -11
- package/src/params.ts +60 -15
- package/src/search-builder-r18.ts +9 -9
- package/src/search-builder.ts +96 -102
- package/src/user-search.ts +109 -0
- package/src/util/jsonp.ts +1 -2
- package/dist/util/url.d.ts +0 -10
- package/dist/util/url.d.ts.map +0 -1
- package/dist/util/url.js +0 -9
- package/dist/util/url.js.map +0 -1
- package/dist.es2015/index.browser.js +0 -50
- package/dist.es2015/index.browser.js.map +0 -1
- package/dist.es2015/index.common.js +0 -6
- package/dist.es2015/index.common.js.map +0 -1
- package/dist.es2015/index.js +0 -51
- package/dist.es2015/index.js.map +0 -1
- package/dist.es2015/narou-fetch.js +0 -44
- package/dist.es2015/narou-fetch.js.map +0 -1
- package/dist.es2015/narou-jsonp.js +0 -22
- package/dist.es2015/narou-jsonp.js.map +0 -1
- package/dist.es2015/narou-ranking-results.js +0 -2
- package/dist.es2015/narou-ranking-results.js.map +0 -1
- package/dist.es2015/narou-search-results.js +0 -60
- package/dist.es2015/narou-search-results.js.map +0 -1
- package/dist.es2015/narou.js +0 -24
- package/dist.es2015/narou.js.map +0 -1
- package/dist.es2015/params.js +0 -226
- package/dist.es2015/params.js.map +0 -1
- package/dist.es2015/ranking-history.js +0 -10
- package/dist.es2015/ranking-history.js.map +0 -1
- package/dist.es2015/ranking.js +0 -80
- package/dist.es2015/ranking.js.map +0 -1
- package/dist.es2015/search-builder-r18.js +0 -42
- package/dist.es2015/search-builder-r18.js.map +0 -1
- package/dist.es2015/search-builder.js +0 -390
- package/dist.es2015/search-builder.js.map +0 -1
- package/dist.es2015/util/jsonp.js +0 -44
- package/dist.es2015/util/jsonp.js.map +0 -1
- package/dist.es2015/util/type.js +0 -2
- package/dist.es2015/util/type.js.map +0 -1
- package/dist.es2015/util/unzipp.js +0 -8
- package/dist.es2015/util/unzipp.js.map +0 -1
- package/dist.es2015/util/url.js +0 -7
- package/dist.es2015/util/url.js.map +0 -1
- package/dist.esm/index.browser.js +0 -102
- package/dist.esm/index.browser.js.map +0 -1
- package/dist.esm/index.common.js +0 -6
- package/dist.esm/index.common.js.map +0 -1
- package/dist.esm/index.js +0 -103
- package/dist.esm/index.js.map +0 -1
- package/dist.esm/narou-fetch.js +0 -128
- package/dist.esm/narou-fetch.js.map +0 -1
- package/dist.esm/narou-jsonp.js +0 -100
- package/dist.esm/narou-jsonp.js.map +0 -1
- package/dist.esm/narou-ranking-results.js +0 -2
- package/dist.esm/narou-ranking-results.js.map +0 -1
- package/dist.esm/narou-search-results.js +0 -63
- package/dist.esm/narou-search-results.js.map +0 -1
- package/dist.esm/narou.js +0 -103
- package/dist.esm/narou.js.map +0 -1
- package/dist.esm/params.js +0 -227
- package/dist.esm/params.js.map +0 -1
- package/dist.esm/ranking-history.js +0 -10
- package/dist.esm/ranking-history.js.map +0 -1
- package/dist.esm/ranking.js +0 -154
- package/dist.esm/ranking.js.map +0 -1
- package/dist.esm/search-builder-r18.js +0 -63
- package/dist.esm/search-builder-r18.js.map +0 -1
- package/dist.esm/search-builder.js +0 -438
- package/dist.esm/search-builder.js.map +0 -1
- package/dist.esm/util/jsonp.js +0 -45
- package/dist.esm/util/jsonp.js.map +0 -1
- package/dist.esm/util/type.js +0 -2
- package/dist.esm/util/type.js.map +0 -1
- package/dist.esm/util/unzipp.js +0 -53
- package/dist.esm/util/unzipp.js.map +0 -1
- package/dist.esm/util/url.js +0 -7
- package/dist.esm/util/url.js.map +0 -1
- package/src/util/url.ts +0 -7
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import NarouSearchResults, { UserSearchResult, UserSearchResultFields } from "./narou-search-results";
|
|
2
|
+
import { UserFields, UserOrder, UserSearchParams } from "./params";
|
|
3
|
+
import { SearchBuilderBase } from "./search-builder";
|
|
4
|
+
/**
|
|
5
|
+
* なろうユーザ検索API
|
|
6
|
+
* @class UserSearch
|
|
7
|
+
*/
|
|
8
|
+
export default class UserSearchBuilder<TField extends keyof UserSearchResult = keyof UserSearchResult> extends SearchBuilderBase<UserSearchParams, UserOrder> {
|
|
9
|
+
/**
|
|
10
|
+
* 単語を指定できます。
|
|
11
|
+
* 半角または全角スペースで区切るとAND抽出になります。
|
|
12
|
+
* 部分一致でHITします。検索の対象はユーザ名とユーザ名のフリガナです。
|
|
13
|
+
*/
|
|
14
|
+
word(word: string): this;
|
|
15
|
+
/**
|
|
16
|
+
* 含みたくない単語を指定できます。
|
|
17
|
+
* スペースで区切ることにより含ませない単語を増やせます。部分一致で除外されます。
|
|
18
|
+
* 除外の対象はユーザ名とユーザ名のフリガナです。
|
|
19
|
+
*/
|
|
20
|
+
notWord(notword: string): this;
|
|
21
|
+
/**
|
|
22
|
+
* ユーザIDで抽出可能。
|
|
23
|
+
*/
|
|
24
|
+
userId(userid: number): this;
|
|
25
|
+
/**
|
|
26
|
+
* 抽出するユーザのユーザ名のフリガナの頭文字を指定できます。
|
|
27
|
+
* 頭文字はユーザ名のフリガナをひらがなに変換し、最初の1文字が「ぁ」~「ん」の場合に対象となります。
|
|
28
|
+
* 「ぱ」や「ば」等の半濁音や濁音は清音として扱われます。
|
|
29
|
+
* 漢字や英数字が頭文字のユーザは対象外です。
|
|
30
|
+
*/
|
|
31
|
+
name1st(name1st: string): this;
|
|
32
|
+
/**
|
|
33
|
+
* 抽出するユーザの小説投稿数の下限を指定できます。
|
|
34
|
+
* 小説投稿件数が指定された数値以上のユーザを抽出します。
|
|
35
|
+
*/
|
|
36
|
+
minNovel(minnovel: number): this;
|
|
37
|
+
/**
|
|
38
|
+
* 抽出するユーザの小説投稿数の上限を指定できます。
|
|
39
|
+
* 小説投稿件数が指定された数値以下のユーザを抽出します。
|
|
40
|
+
*/
|
|
41
|
+
maxNovel(maxnovel: number): this;
|
|
42
|
+
/**
|
|
43
|
+
* 抽出するユーザのレビュー投稿数の下限を指定できます。
|
|
44
|
+
* レビュー投稿件数が指定された数値以上のユーザを抽出します。
|
|
45
|
+
*/
|
|
46
|
+
minReview(minreview: number): this;
|
|
47
|
+
/**
|
|
48
|
+
* 抽出するユーザのレビュー投稿数の上限を指定できます。
|
|
49
|
+
* レビュー投稿件数が指定された数値以下のユーザを抽出します。
|
|
50
|
+
*/
|
|
51
|
+
maxReview(maxreview: number): this;
|
|
52
|
+
/**
|
|
53
|
+
* 出力する項目を個別に指定できます。未指定時は全項目出力されます。転送量軽減のため、このパラメータの使用が推奨されます。
|
|
54
|
+
* @return {SearchBuilder} this
|
|
55
|
+
*/
|
|
56
|
+
fields<TFields extends UserFields>(fields: TFields | readonly TFields[]): UserSearchBuilder<UserSearchResultFields<TFields>>;
|
|
57
|
+
/**
|
|
58
|
+
* なろう小説APIへのリクエストを実行する
|
|
59
|
+
* @returns ランキング
|
|
60
|
+
*/
|
|
61
|
+
execute(): Promise<NarouSearchResults<UserSearchResult, TField>>;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=user-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-search.d.ts","sourceRoot":"","sources":["../src/user-search.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,EAAE,EACzB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,iBAAiB,CACpC,MAAM,SAAS,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,CAC9D,SAAQ,iBAAiB,CAAC,gBAAgB,EAAE,SAAS,CAAC;IACtD;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM;IAKjB;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM;IAKvB;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM;IAKrB;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM;IAKvB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAKzB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAKzB;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM;IAK3B;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM;IAK3B;;;OAGG;IACH,MAAM,CAAC,OAAO,SAAS,UAAU,EAC/B,MAAM,EAAE,OAAO,GAAG,SAAS,OAAO,EAAE,GACnC,iBAAiB,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAMrD;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;CAGjE"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const search_builder_1 = require("./search-builder");
|
|
4
|
+
/**
|
|
5
|
+
* なろうユーザ検索API
|
|
6
|
+
* @class UserSearch
|
|
7
|
+
*/
|
|
8
|
+
class UserSearchBuilder extends search_builder_1.SearchBuilderBase {
|
|
9
|
+
/**
|
|
10
|
+
* 単語を指定できます。
|
|
11
|
+
* 半角または全角スペースで区切るとAND抽出になります。
|
|
12
|
+
* 部分一致でHITします。検索の対象はユーザ名とユーザ名のフリガナです。
|
|
13
|
+
*/
|
|
14
|
+
word(word) {
|
|
15
|
+
this.set({ word });
|
|
16
|
+
return this;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 含みたくない単語を指定できます。
|
|
20
|
+
* スペースで区切ることにより含ませない単語を増やせます。部分一致で除外されます。
|
|
21
|
+
* 除外の対象はユーザ名とユーザ名のフリガナです。
|
|
22
|
+
*/
|
|
23
|
+
notWord(notword) {
|
|
24
|
+
this.set({ notword });
|
|
25
|
+
return this;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* ユーザIDで抽出可能。
|
|
29
|
+
*/
|
|
30
|
+
userId(userid) {
|
|
31
|
+
this.set({ userid });
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 抽出するユーザのユーザ名のフリガナの頭文字を指定できます。
|
|
36
|
+
* 頭文字はユーザ名のフリガナをひらがなに変換し、最初の1文字が「ぁ」~「ん」の場合に対象となります。
|
|
37
|
+
* 「ぱ」や「ば」等の半濁音や濁音は清音として扱われます。
|
|
38
|
+
* 漢字や英数字が頭文字のユーザは対象外です。
|
|
39
|
+
*/
|
|
40
|
+
name1st(name1st) {
|
|
41
|
+
this.set({ name1st });
|
|
42
|
+
return this;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 抽出するユーザの小説投稿数の下限を指定できます。
|
|
46
|
+
* 小説投稿件数が指定された数値以上のユーザを抽出します。
|
|
47
|
+
*/
|
|
48
|
+
minNovel(minnovel) {
|
|
49
|
+
this.set({ minnovel });
|
|
50
|
+
return this;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* 抽出するユーザの小説投稿数の上限を指定できます。
|
|
54
|
+
* 小説投稿件数が指定された数値以下のユーザを抽出します。
|
|
55
|
+
*/
|
|
56
|
+
maxNovel(maxnovel) {
|
|
57
|
+
this.set({ maxnovel });
|
|
58
|
+
return this;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* 抽出するユーザのレビュー投稿数の下限を指定できます。
|
|
62
|
+
* レビュー投稿件数が指定された数値以上のユーザを抽出します。
|
|
63
|
+
*/
|
|
64
|
+
minReview(minreview) {
|
|
65
|
+
this.set({ minreview });
|
|
66
|
+
return this;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* 抽出するユーザのレビュー投稿数の上限を指定できます。
|
|
70
|
+
* レビュー投稿件数が指定された数値以下のユーザを抽出します。
|
|
71
|
+
*/
|
|
72
|
+
maxReview(maxreview) {
|
|
73
|
+
this.set({ maxreview });
|
|
74
|
+
return this;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* 出力する項目を個別に指定できます。未指定時は全項目出力されます。転送量軽減のため、このパラメータの使用が推奨されます。
|
|
78
|
+
* @return {SearchBuilder} this
|
|
79
|
+
*/
|
|
80
|
+
fields(fields) {
|
|
81
|
+
this.set({ of: UserSearchBuilder.array2string(fields) });
|
|
82
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
83
|
+
return this;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* なろう小説APIへのリクエストを実行する
|
|
87
|
+
* @returns ランキング
|
|
88
|
+
*/
|
|
89
|
+
execute() {
|
|
90
|
+
return this.api.executeUserSearch(this.params);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.default = UserSearchBuilder;
|
|
94
|
+
//# sourceMappingURL=user-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-search.js","sourceRoot":"","sources":["../src/user-search.ts"],"names":[],"mappings":";;AAKA,qDAAqD;AAErD;;;GAGG;AACH,MAAqB,iBAEnB,SAAQ,kCAA8C;IACtD;;;;OAIG;IACH,IAAI,CAAC,IAAY;QACf,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,OAAe;QACrB,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAc;QACnB,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,OAAe;QACrB,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,QAAgB;QACvB,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,QAAgB;QACvB,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,SAAiB;QACzB,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,SAAiB;QACzB,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,MAAM,CACJ,MAAoC;QAEpC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzD,8DAA8D;QAC9D,OAAO,IAAW,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAA0B,CAAC,CAAC;IACrE,CAAC;CACF;AAjGD,oCAiGC"}
|
package/dist/util/jsonp.d.ts
CHANGED
package/dist/util/jsonp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonp.d.ts","sourceRoot":"","sources":["../../src/util/jsonp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"jsonp.d.ts","sourceRoot":"","sources":["../../src/util/jsonp.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,aAAK,UAAU,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;AAEvE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QAEd,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;KACxC;CACF;AACD,oBAAY,WAAW,GAAG;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAKF,wBAAgB,KAAK,CAAC,CAAC,EACrB,GAAG,EAAE,MAAM,EACX,EAAE,MAAe,EAAE,KAAkB,EAAE,OAAe,EAAE,GAAE,WAAgB,GACzE,OAAO,CAAC,CAAC,CAAC,CAwCZ"}
|
package/dist/util/jsonp.js
CHANGED
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.jsonp = void 0;
|
|
4
2
|
/**
|
|
5
3
|
* MIT license
|
|
6
4
|
*/
|
|
7
|
-
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.jsonp = void 0;
|
|
8
7
|
// Callback index.
|
|
9
|
-
|
|
8
|
+
let count = 0;
|
|
10
9
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
11
|
-
|
|
12
|
-
function jsonp(url,
|
|
13
|
-
var _b = _a === void 0 ? {} : _a, _c = _b.prefix, prefix = _c === void 0 ? "__jp" : _c, _d = _b.param, param = _d === void 0 ? "callback" : _d, _e = _b.timeout, timeout = _e === void 0 ? 15000 : _e;
|
|
10
|
+
const noop = function () { };
|
|
11
|
+
function jsonp(url, { prefix = "__jp", param = "callback", timeout = 15000 } = {}) {
|
|
14
12
|
return new Promise(function (resolve, reject) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
var cleanup = function () {
|
|
13
|
+
const targetChild = document.getElementsByTagName("script").item(0);
|
|
14
|
+
const target = targetChild?.parentNode ?? document.head;
|
|
15
|
+
const id = `${prefix}${count++}`;
|
|
16
|
+
const cleanup = function () {
|
|
20
17
|
// Remove the script tag.
|
|
21
18
|
if (script && script.parentNode) {
|
|
22
19
|
script.parentNode.removeChild(script);
|
|
@@ -26,20 +23,20 @@ function jsonp(url, _a) {
|
|
|
26
23
|
clearTimeout(timer);
|
|
27
24
|
}
|
|
28
25
|
};
|
|
29
|
-
|
|
30
|
-
? setTimeout(
|
|
26
|
+
const timer = timeout > 0
|
|
27
|
+
? setTimeout(() => {
|
|
31
28
|
cleanup();
|
|
32
29
|
reject(new Error("Timeout"));
|
|
33
30
|
}, timeout)
|
|
34
31
|
: undefined;
|
|
35
|
-
|
|
32
|
+
const callback = (data) => {
|
|
36
33
|
cleanup();
|
|
37
34
|
resolve(data);
|
|
38
35
|
};
|
|
39
36
|
window[id] = callback;
|
|
40
37
|
// Create script.
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
const script = document.createElement("script");
|
|
39
|
+
const urlObj = new URL(url);
|
|
43
40
|
urlObj.searchParams.set(param, id);
|
|
44
41
|
script.setAttribute("src", urlObj.toString());
|
|
45
42
|
target.insertBefore(script, targetChild);
|
package/dist/util/jsonp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonp.js","sourceRoot":"","sources":["../../src/util/jsonp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"jsonp.js","sourceRoot":"","sources":["../../src/util/jsonp.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,kBAAkB;AAClB,IAAI,KAAK,GAAG,CAAC,CAAC;AAgBd,gEAAgE;AAChE,MAAM,IAAI,GAAG,cAAa,CAAC,CAAC;AAE5B,SAAgB,KAAK,CACnB,GAAW,EACX,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,GAAG,UAAU,EAAE,OAAO,GAAG,KAAK,KAAkB,EAAE;IAE1E,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM;QAC1C,MAAM,WAAW,GAAG,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,WAAW,EAAE,UAAU,IAAI,QAAQ,CAAC,IAAI,CAAC;QAExD,MAAM,EAAE,GAAe,GAAG,MAAM,GAAG,KAAK,EAAE,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG;YACd,yBAAyB;YACzB,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE;gBAC/B,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;aACvC;YAED,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;YAElB,IAAI,KAAK,EAAE;gBACT,YAAY,CAAC,KAAK,CAAC,CAAC;aACrB;QACH,CAAC,CAAC;QAEF,MAAM,KAAK,GACT,OAAO,GAAG,CAAC;YACT,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;gBACd,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YAC/B,CAAC,EAAE,OAAO,CAAC;YACb,CAAC,CAAC,SAAS,CAAC;QAEhB,MAAM,QAAQ,GAAG,CAAC,IAAO,EAAE,EAAE;YAC3B,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;QACF,MAAM,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;QAEtB,iBAAiB;QACjB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC;AA3CD,sBA2CC"}
|
package/dist/util/unzipp.js
CHANGED
|
@@ -1,57 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
3
|
exports.unzipp = void 0;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
function unzipp(data) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
return __generator(this, function (_a) {
|
|
47
|
-
switch (_a.label) {
|
|
48
|
-
case 0: return [4 /*yield*/, gunzipAsync(data)];
|
|
49
|
-
case 1:
|
|
50
|
-
buffer = _a.sent();
|
|
51
|
-
return [2 /*return*/, JSON.parse(buffer.toString())];
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
});
|
|
4
|
+
const zlib_1 = require("zlib");
|
|
5
|
+
const util_1 = require("util");
|
|
6
|
+
const gunzipAsync = (0, util_1.promisify)(zlib_1.gunzip);
|
|
7
|
+
async function unzipp(data) {
|
|
8
|
+
const buffer = await gunzipAsync(data);
|
|
9
|
+
return JSON.parse(buffer.toString());
|
|
55
10
|
}
|
|
56
11
|
exports.unzipp = unzipp;
|
|
57
12
|
//# sourceMappingURL=unzipp.js.map
|
package/dist/util/unzipp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unzipp.js","sourceRoot":"","sources":["../../src/util/unzipp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"unzipp.js","sourceRoot":"","sources":["../../src/util/unzipp.ts"],"names":[],"mappings":";;;AAAA,+BAAyC;AACzC,+BAAiC;AAEjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAoB,aAAM,CAAC,CAAC;AAElD,KAAK,UAAU,MAAM,CAAC,IAAe;IAC1C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,CAAC;AAHD,wBAGC"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "narou",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Narou API Wrapper",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
"types": "src/index.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"browser": {
|
|
10
|
+
"require": "./dist/index.browser.js",
|
|
11
|
+
"import": "./dist.esm/index.browser.js"
|
|
12
|
+
},
|
|
13
|
+
"node": {
|
|
14
|
+
"require": "./dist/index.js",
|
|
15
|
+
"import": "./dist.esm/index.js"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"engines": {
|
|
20
|
+
"node": ">=16.0.0"
|
|
21
|
+
},
|
|
11
22
|
"files": [
|
|
12
23
|
"dist",
|
|
13
24
|
"dist.*",
|
|
@@ -45,9 +56,8 @@
|
|
|
45
56
|
"scripts": {
|
|
46
57
|
"build": "npm-run-all check clean build:tsc",
|
|
47
58
|
"build:tsc": "npm-run-all --parallel build:tsc:*",
|
|
48
|
-
"build:tsc:
|
|
59
|
+
"build:tsc:cjs": "tsc -p ./tsconfig.cjs.json",
|
|
49
60
|
"build:tsc:esm": "tsc -p ./tsconfig.esm.json",
|
|
50
|
-
"build:tsc:es2017": "tsc -p ./tsconfig.es2017.json",
|
|
51
61
|
"check": "npm-run-all --parallel check:lint check:build test",
|
|
52
62
|
"check:lint": "eslint src/** test/**",
|
|
53
63
|
"check:build": "tsc --noEmit",
|
package/src/index.browser.ts
CHANGED
|
@@ -4,6 +4,7 @@ import SearchBuilder from "./search-builder";
|
|
|
4
4
|
import SearchBuilderR18 from "./search-builder-r18";
|
|
5
5
|
import RankingBuilder from "./ranking";
|
|
6
6
|
import { formatRankingHistory, RankingHistoryResult } from "./ranking-history";
|
|
7
|
+
import UserSearchBuilder from "./user-search";
|
|
7
8
|
|
|
8
9
|
export * from "./index.common";
|
|
9
10
|
export { NarouNovelJsonp };
|
|
@@ -38,6 +39,15 @@ export function searchR18(
|
|
|
38
39
|
return builder;
|
|
39
40
|
}
|
|
40
41
|
|
|
42
|
+
/**
|
|
43
|
+
* ユーザ検索
|
|
44
|
+
*/
|
|
45
|
+
export function searchUser(word = "", api: NarouNovel = narouNovelJsonp) {
|
|
46
|
+
const builder = new UserSearchBuilder({}, api);
|
|
47
|
+
if (word != "") builder.word(word);
|
|
48
|
+
return builder;
|
|
49
|
+
}
|
|
50
|
+
|
|
41
51
|
export function ranking(api: NarouNovel = narouNovelJsonp): RankingBuilder {
|
|
42
52
|
const builder = new RankingBuilder({}, api);
|
|
43
53
|
return builder;
|
|
@@ -57,7 +67,8 @@ export async function rankingHistory(
|
|
|
57
67
|
|
|
58
68
|
export default {
|
|
59
69
|
search,
|
|
60
|
-
ranking,
|
|
61
70
|
searchR18,
|
|
71
|
+
searchUser,
|
|
72
|
+
ranking,
|
|
62
73
|
rankingHistory,
|
|
63
74
|
};
|
package/src/index.common.ts
CHANGED
|
@@ -1,33 +1,22 @@
|
|
|
1
1
|
import NarouNovel from "./narou";
|
|
2
2
|
import NarouSearchResults from "./narou-search-results";
|
|
3
|
+
import SearchBuilder from "./search-builder";
|
|
4
|
+
import SearchBuilderR18 from "./search-builder-r18";
|
|
5
|
+
import RankingBuilder from "./ranking";
|
|
3
6
|
|
|
4
|
-
export { NarouNovel, NarouSearchResults };
|
|
5
|
-
|
|
6
|
-
export { RankingHistoryResult } from "./ranking-history";
|
|
7
|
-
export {
|
|
8
|
-
RankingType,
|
|
9
|
-
Fields,
|
|
10
|
-
SearchResultFieldNames,
|
|
11
|
-
Order,
|
|
12
|
-
BigGenre,
|
|
13
|
-
BigGenreNotation,
|
|
14
|
-
Genre,
|
|
15
|
-
GenreNotation,
|
|
16
|
-
R18Site,
|
|
17
|
-
R18SiteNotation,
|
|
18
|
-
BuntaiParam,
|
|
19
|
-
NovelTypeParam,
|
|
20
|
-
BooleanNumber,
|
|
21
|
-
} from "./params";
|
|
22
7
|
export {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
export
|
|
32
|
-
export {
|
|
33
|
-
export
|
|
8
|
+
NarouNovel,
|
|
9
|
+
NarouSearchResults,
|
|
10
|
+
SearchBuilder,
|
|
11
|
+
SearchBuilderR18,
|
|
12
|
+
RankingBuilder,
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export * from "./ranking-history";
|
|
16
|
+
export * from "./params";
|
|
17
|
+
export { NarouParams } from "./narou";
|
|
18
|
+
export * from "./narou-search-results";
|
|
19
|
+
export * from "./narou-ranking-results";
|
|
20
|
+
export * from "./search-builder";
|
|
21
|
+
export * from "./search-builder-r18";
|
|
22
|
+
export * from "./user-search";
|
package/src/index.ts
CHANGED
|
@@ -5,6 +5,7 @@ import RankingBuilder from "./ranking";
|
|
|
5
5
|
import { formatRankingHistory, RankingHistoryResult } from "./ranking-history";
|
|
6
6
|
import SearchBuilder from "./search-builder";
|
|
7
7
|
import SearchBuilderR18 from "./search-builder-r18";
|
|
8
|
+
import UserSearchBuilder from "./user-search";
|
|
8
9
|
|
|
9
10
|
export * from "./index.common";
|
|
10
11
|
export { NarouNovelFetch, NarouNovelJsonp };
|
|
@@ -12,7 +13,7 @@ export { NarouNovelFetch, NarouNovelJsonp };
|
|
|
12
13
|
const narouNovelFetch = new NarouNovelFetch();
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
|
-
*
|
|
16
|
+
* なろう小説 API で小説を検索する
|
|
16
17
|
* @param {string} [word] - 検索ワード
|
|
17
18
|
* @returns {SearchBuilder}
|
|
18
19
|
*/
|
|
@@ -26,7 +27,7 @@ export function search(
|
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
/**
|
|
29
|
-
*
|
|
30
|
+
* 18禁小説 API で小説を検索する
|
|
30
31
|
* @param {string} [word] - 検索ワード
|
|
31
32
|
* @returns {SearchBuilder}
|
|
32
33
|
*/
|
|
@@ -39,11 +40,26 @@ export function searchR18(
|
|
|
39
40
|
return builder;
|
|
40
41
|
}
|
|
41
42
|
|
|
43
|
+
/**
|
|
44
|
+
* なろうユーザ検索 API でユーザを検索する
|
|
45
|
+
*/
|
|
46
|
+
export function searchUser(word = "", api: NarouNovel = narouNovelFetch) {
|
|
47
|
+
const builder = new UserSearchBuilder({}, api);
|
|
48
|
+
if (word != "") builder.word(word);
|
|
49
|
+
return builder;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* なろう小説ランキング API でランキングを取得する
|
|
54
|
+
*/
|
|
42
55
|
export function ranking(api: NarouNovel = narouNovelFetch): RankingBuilder {
|
|
43
56
|
const builder = new RankingBuilder({}, api);
|
|
44
57
|
return builder;
|
|
45
58
|
}
|
|
46
59
|
|
|
60
|
+
/**
|
|
61
|
+
* なろう殿堂入り API でランキング履歴を取得する
|
|
62
|
+
*/
|
|
47
63
|
export async function rankingHistory(
|
|
48
64
|
ncode: string,
|
|
49
65
|
api: NarouNovel = narouNovelFetch
|
|
@@ -58,7 +74,8 @@ export async function rankingHistory(
|
|
|
58
74
|
|
|
59
75
|
export default {
|
|
60
76
|
search,
|
|
61
|
-
ranking,
|
|
62
77
|
searchR18,
|
|
78
|
+
searchUser,
|
|
79
|
+
ranking,
|
|
63
80
|
rankingHistory,
|
|
64
81
|
};
|
package/src/narou-fetch.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import nodeFetch from "node-fetch";
|
|
2
|
-
import nodeURL from "./util/url";
|
|
3
2
|
|
|
4
3
|
import { unzipp } from "./util/unzipp";
|
|
5
4
|
import NarouNovel, { NarouParams } from "./narou";
|
|
@@ -23,7 +22,7 @@ export default class NarouNovelFetch extends NarouNovel {
|
|
|
23
22
|
if (query.gzip === undefined) {
|
|
24
23
|
query.gzip = 5;
|
|
25
24
|
}
|
|
26
|
-
const url = new
|
|
25
|
+
const url = new URL(endpoint);
|
|
27
26
|
|
|
28
27
|
Object.entries(query).forEach(([key, value]) => {
|
|
29
28
|
if (value) {
|
package/src/narou-jsonp.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import nodeURL from "./util/url";
|
|
2
|
-
|
|
3
1
|
import NarouNovel, { NarouParams } from "./narou";
|
|
4
2
|
import { jsonp } from "./util/jsonp";
|
|
5
3
|
|
|
@@ -16,7 +14,7 @@ export default class NarouNovelJsonp extends NarouNovel {
|
|
|
16
14
|
const query = { ...params, out: "jsonp" };
|
|
17
15
|
query.gzip = 0;
|
|
18
16
|
|
|
19
|
-
const url = new
|
|
17
|
+
const url = new URL(endpoint);
|
|
20
18
|
|
|
21
19
|
Object.entries(query).forEach(([key, value]) => {
|
|
22
20
|
if (value) {
|
|
@@ -7,29 +7,27 @@ import {
|
|
|
7
7
|
BigGenre,
|
|
8
8
|
R18Fields,
|
|
9
9
|
OptionalFields,
|
|
10
|
+
UserFields,
|
|
10
11
|
} from "./params";
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* なろう小説API検索結果
|
|
14
15
|
* @class NarouSearchResults
|
|
15
16
|
*/
|
|
16
|
-
export default class NarouSearchResults<T extends keyof
|
|
17
|
+
export default class NarouSearchResults<T, TKey extends keyof T> {
|
|
17
18
|
allcount: number;
|
|
18
19
|
limit: number;
|
|
19
20
|
start: number;
|
|
20
21
|
page: number;
|
|
21
22
|
length: number;
|
|
22
|
-
values:
|
|
23
|
+
values: readonly Pick<T, TKey>[];
|
|
23
24
|
|
|
24
25
|
/**
|
|
25
26
|
* @constractor
|
|
26
27
|
* @private
|
|
27
28
|
*/
|
|
28
29
|
constructor(
|
|
29
|
-
[header, ...result]: [
|
|
30
|
-
{ allcount: number },
|
|
31
|
-
...PickedNarouSearchResult<T>[]
|
|
32
|
-
],
|
|
30
|
+
[header, ...result]: [{ allcount: number }, ...Pick<T, TKey>[]],
|
|
33
31
|
params: SearchParams
|
|
34
32
|
) {
|
|
35
33
|
const count = header.allcount;
|
|
@@ -142,6 +140,17 @@ export interface NarouSearchResult {
|
|
|
142
140
|
weekly_unique: number;
|
|
143
141
|
}
|
|
144
142
|
|
|
143
|
+
export interface UserSearchResult {
|
|
144
|
+
userid: number;
|
|
145
|
+
name: string;
|
|
146
|
+
yomikata: string;
|
|
147
|
+
name1st: string;
|
|
148
|
+
novel_cnt: number;
|
|
149
|
+
review_cnt: number;
|
|
150
|
+
novel_length: number;
|
|
151
|
+
sum_global_point: number;
|
|
152
|
+
}
|
|
153
|
+
|
|
145
154
|
export const PcOrK = {
|
|
146
155
|
Ketai: 1,
|
|
147
156
|
Pc: 2,
|
|
@@ -165,7 +174,7 @@ export type SearchResultFields<T extends Fields> = {
|
|
|
165
174
|
[K in keyof typeof Fields]: typeof Fields[K] extends T ? K : never;
|
|
166
175
|
}[keyof typeof Fields];
|
|
167
176
|
|
|
168
|
-
export type
|
|
177
|
+
export type SearchResultOptionalFields<T extends OptionalFields> = {
|
|
169
178
|
[K in keyof typeof OptionalFields]: typeof OptionalFields[K] extends T
|
|
170
179
|
? K
|
|
171
180
|
: never;
|
|
@@ -175,6 +184,10 @@ export type SearchResultR18Fields<T extends R18Fields> = {
|
|
|
175
184
|
[K in keyof typeof R18Fields]: typeof R18Fields[K] extends T ? K : never;
|
|
176
185
|
}[keyof typeof R18Fields];
|
|
177
186
|
|
|
187
|
+
export type UserSearchResultFields<T extends UserFields> = {
|
|
188
|
+
[K in keyof typeof UserFields]: typeof UserFields[K] extends T ? K : never;
|
|
189
|
+
}[keyof typeof UserFields];
|
|
190
|
+
|
|
178
191
|
export type PickedNarouSearchResult<T extends keyof NarouSearchResult> = Pick<
|
|
179
192
|
NarouSearchResult,
|
|
180
193
|
T
|