narou 1.1.0 → 2.0.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/LICENSE +21 -0
- package/README.md +78 -35
- package/dist/index.browser.cjs +87 -1230
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.d.cts +31 -24
- package/dist/index.browser.d.mts +47 -0
- package/dist/index.browser.mjs +66 -0
- package/dist/index.browser.mjs.map +1 -0
- package/dist/index.cjs +147 -1281
- package/dist/index.cjs.map +1 -1
- package/dist/index.common-8lS2K_1Y.mjs +1166 -0
- package/dist/index.common-8lS2K_1Y.mjs.map +1 -0
- package/dist/index.common-CYj0n0aU.cjs +1346 -0
- package/dist/index.common-CYj0n0aU.cjs.map +1 -0
- package/dist/index.d.cts +39 -23
- package/dist/index.d.mts +63 -0
- package/dist/index.mjs +128 -0
- package/dist/index.mjs.map +1 -0
- package/dist/user-search-BY6FdEe7.d.cts +1394 -0
- package/dist/user-search-Besgk-Hx.d.mts +1394 -0
- package/package.json +34 -45
- package/pnpm-lock.yaml +2523 -2175
- package/src/index.browser.ts +21 -5
- package/src/index.ts +16 -3
- package/src/narou-fetch.ts +4 -3
- package/src/narou-jsonp.ts +4 -2
- package/src/narou-search-results.ts +2 -1
- package/src/narou.ts +53 -13
- package/src/params.ts +2 -2
- package/src/ranking-history.ts +13 -4
- package/src/ranking.ts +99 -26
- package/src/search-builder-r18.ts +23 -6
- package/src/search-builder.ts +183 -76
- package/src/user-search.ts +9 -2
- package/src/util/date.ts +38 -0
- package/src/util/jsonp.ts +61 -6
- package/src/util/type.ts +23 -0
- package/src/util/unzipp.ts +9 -0
- package/dist/chunk-4VC3246A.js +0 -83
- package/dist/chunk-4VC3246A.js.map +0 -1
- package/dist/chunk-4ZP5YNWI.js +0 -1
- package/dist/chunk-4ZP5YNWI.js.map +0 -1
- package/dist/chunk-AZT2OXBZ.js +0 -26
- package/dist/chunk-AZT2OXBZ.js.map +0 -1
- package/dist/chunk-CDOBNSCL.js +0 -407
- package/dist/chunk-CDOBNSCL.js.map +0 -1
- package/dist/chunk-K22KVNAH.js +0 -94
- package/dist/chunk-K22KVNAH.js.map +0 -1
- package/dist/chunk-NVMUSXA5.js +0 -23
- package/dist/chunk-NVMUSXA5.js.map +0 -1
- package/dist/chunk-P7QOZBII.js +0 -386
- package/dist/chunk-P7QOZBII.js.map +0 -1
- package/dist/chunk-RITMMCZE.js +0 -37
- package/dist/chunk-RITMMCZE.js.map +0 -1
- package/dist/chunk-SNPBEVCY.js +0 -44
- package/dist/chunk-SNPBEVCY.js.map +0 -1
- package/dist/chunk-UN3W2CT3.js +0 -72
- package/dist/chunk-UN3W2CT3.js.map +0 -1
- package/dist/chunk-WYSPGQ3S.js +0 -44
- package/dist/chunk-WYSPGQ3S.js.map +0 -1
- package/dist/chunk-XAUB42TO.js +0 -15
- package/dist/chunk-XAUB42TO.js.map +0 -1
- package/dist/chunk-XVH2CU2Q.js +0 -39
- package/dist/chunk-XVH2CU2Q.js.map +0 -1
- package/dist/index.browser.d.ts +0 -40
- package/dist/index.browser.js +0 -125
- package/dist/index.browser.js.map +0 -1
- package/dist/index.common.cjs +0 -1058
- package/dist/index.common.cjs.map +0 -1
- package/dist/index.common.d.cts +0 -6
- package/dist/index.common.d.ts +0 -6
- package/dist/index.common.js +0 -75
- package/dist/index.common.js.map +0 -1
- package/dist/index.d.ts +0 -47
- package/dist/index.js +0 -130
- package/dist/index.js.map +0 -1
- package/dist/narou-CatW_TC9.d.cts +0 -301
- package/dist/narou-fH9osIoh.d.ts +0 -301
- package/dist/narou-fetch.cjs +0 -161
- package/dist/narou-fetch.cjs.map +0 -1
- package/dist/narou-fetch.d.cts +0 -20
- package/dist/narou-fetch.d.ts +0 -20
- package/dist/narou-fetch.js +0 -10
- package/dist/narou-fetch.js.map +0 -1
- package/dist/narou-jsonp.cjs +0 -159
- package/dist/narou-jsonp.cjs.map +0 -1
- package/dist/narou-jsonp.d.cts +0 -13
- package/dist/narou-jsonp.d.ts +0 -13
- package/dist/narou-jsonp.js +0 -10
- package/dist/narou-jsonp.js.map +0 -1
- package/dist/narou-ranking-results.cjs +0 -19
- package/dist/narou-ranking-results.cjs.map +0 -1
- package/dist/narou-ranking-results.d.cts +0 -4
- package/dist/narou-ranking-results.d.ts +0 -4
- package/dist/narou-ranking-results.js +0 -1
- package/dist/narou-ranking-results.js.map +0 -1
- package/dist/narou-search-results-D5yqPRZ7.d.ts +0 -727
- package/dist/narou-search-results-DWCJWTC5.d.cts +0 -727
- package/dist/narou-search-results.cjs +0 -62
- package/dist/narou-search-results.cjs.map +0 -1
- package/dist/narou-search-results.d.cts +0 -2
- package/dist/narou-search-results.d.ts +0 -2
- package/dist/narou-search-results.js +0 -11
- package/dist/narou-search-results.js.map +0 -1
- package/dist/narou.cjs +0 -109
- package/dist/narou.cjs.map +0 -1
- package/dist/narou.d.cts +0 -4
- package/dist/narou.d.ts +0 -4
- package/dist/narou.js +0 -8
- package/dist/narou.js.map +0 -1
- package/dist/params.cjs +0 -448
- package/dist/params.cjs.map +0 -1
- package/dist/params.d.cts +0 -2
- package/dist/params.d.ts +0 -2
- package/dist/params.js +0 -41
- package/dist/params.js.map +0 -1
- package/dist/ranking-history.cjs +0 -39
- package/dist/ranking-history.cjs.map +0 -1
- package/dist/ranking-history.d.cts +0 -17
- package/dist/ranking-history.d.ts +0 -17
- package/dist/ranking-history.js +0 -7
- package/dist/ranking-history.js.map +0 -1
- package/dist/ranking.cjs +0 -674
- package/dist/ranking.cjs.map +0 -1
- package/dist/ranking.d.cts +0 -47
- package/dist/ranking.d.ts +0 -47
- package/dist/ranking.js +0 -9
- package/dist/ranking.js.map +0 -1
- package/dist/search-builder-r18.cjs +0 -488
- package/dist/search-builder-r18.cjs.map +0 -1
- package/dist/search-builder-r18.d.cts +0 -32
- package/dist/search-builder-r18.d.ts +0 -32
- package/dist/search-builder-r18.js +0 -9
- package/dist/search-builder-r18.js.map +0 -1
- package/dist/search-builder.cjs +0 -525
- package/dist/search-builder.cjs.map +0 -1
- package/dist/search-builder.d.cts +0 -4
- package/dist/search-builder.d.ts +0 -4
- package/dist/search-builder.js +0 -12
- package/dist/search-builder.js.map +0 -1
- package/dist/user-search.cjs +0 -301
- package/dist/user-search.cjs.map +0 -1
- package/dist/user-search.d.cts +0 -66
- package/dist/user-search.d.ts +0 -66
- package/dist/user-search.js +0 -9
- package/dist/user-search.js.map +0 -1
- package/dist/util/jsonp.cjs +0 -63
- package/dist/util/jsonp.cjs.map +0 -1
- package/dist/util/jsonp.d.cts +0 -13
- package/dist/util/jsonp.d.ts +0 -13
- package/dist/util/jsonp.js +0 -7
- package/dist/util/jsonp.js.map +0 -1
- package/dist/util/type.cjs +0 -19
- package/dist/util/type.cjs.map +0 -1
- package/dist/util/type.d.cts +0 -4
- package/dist/util/type.d.ts +0 -4
- package/dist/util/type.js +0 -1
- package/dist/util/type.js.map +0 -1
- package/dist/util/unzipp.cjs +0 -47
- package/dist/util/unzipp.cjs.map +0 -1
- package/dist/util/unzipp.d.cts +0 -3
- package/dist/util/unzipp.d.ts +0 -3
- package/dist/util/unzipp.js +0 -7
- package/dist/util/unzipp.js.map +0 -1
package/src/util/jsonp.ts
CHANGED
|
@@ -13,30 +13,75 @@ declare global {
|
|
|
13
13
|
[key: CallbackId]: (data: any) => void;
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* JSONP呼び出しのオプション設定
|
|
19
|
+
*/
|
|
16
20
|
export type JsonpOption = {
|
|
21
|
+
/**
|
|
22
|
+
* コールバック関数名のプレフィックス
|
|
23
|
+
* @default "__jp"
|
|
24
|
+
*/
|
|
17
25
|
prefix?: string;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* コールバック関数名を指定するURLパラメータ名
|
|
29
|
+
* @default "callback"
|
|
30
|
+
*/
|
|
18
31
|
param?: string;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* タイムアウト時間(ミリ秒)
|
|
35
|
+
* @default 15000
|
|
36
|
+
*/
|
|
19
37
|
timeout?: number;
|
|
20
38
|
};
|
|
21
39
|
|
|
22
|
-
|
|
23
|
-
const noop = function () {};
|
|
40
|
+
const noop = function () { };
|
|
24
41
|
|
|
42
|
+
/**
|
|
43
|
+
* JSONPリクエストを実行してデータを取得します。
|
|
44
|
+
*
|
|
45
|
+
* @param url - リクエスト先のURL
|
|
46
|
+
* @param options - JSONP呼び出しのオプション設定
|
|
47
|
+
* @returns JSONPリクエストの結果をPromiseで返します
|
|
48
|
+
* @throws {Error} タイムアウトが発生した場合、"Timeout"メッセージのエラーをスローします
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* // 基本的な使用方法
|
|
53
|
+
* const data = await jsonp<ResponseType>('https://example.com/api');
|
|
54
|
+
*
|
|
55
|
+
* // オプション指定
|
|
56
|
+
* const data = await jsonp<ResponseType>('https://example.com/api', {
|
|
57
|
+
* prefix: 'customPrefix',
|
|
58
|
+
* param: 'callbackParam',
|
|
59
|
+
* timeout: 10000
|
|
60
|
+
* });
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
25
63
|
export function jsonp<T>(
|
|
26
64
|
url: string,
|
|
27
65
|
{ prefix = "__jp", param = "callback", timeout = 15000 }: JsonpOption = {}
|
|
28
66
|
): Promise<T> {
|
|
29
67
|
return new Promise(function (resolve, reject) {
|
|
68
|
+
// 最初のscriptタグを取得し、そのタグの直前に新しいscriptタグを挿入するための参照を取得
|
|
69
|
+
// これにより、ページの構造を大きく変えることなくscriptを追加できる
|
|
30
70
|
const targetChild = document.getElementsByTagName("script").item(0);
|
|
31
71
|
const target = targetChild?.parentNode ?? document.head;
|
|
32
72
|
|
|
73
|
+
// ユニークなコールバック関数名を生成
|
|
33
74
|
const id: CallbackId = `${prefix}${count++}`;
|
|
75
|
+
|
|
76
|
+
// リソース解放用の関数を定義
|
|
77
|
+
// スクリプトタグの削除、コールバック関数のクリーンアップ、タイマーのクリアを行う
|
|
34
78
|
const cleanup = function () {
|
|
35
79
|
// Remove the script tag.
|
|
36
80
|
if (script && script.parentNode) {
|
|
37
81
|
script.parentNode.removeChild(script);
|
|
38
82
|
}
|
|
39
83
|
|
|
84
|
+
// コールバック関数を空の関数に置き換えてメモリリークを防止
|
|
40
85
|
window[id] = noop;
|
|
41
86
|
|
|
42
87
|
if (timer) {
|
|
@@ -44,25 +89,35 @@ export function jsonp<T>(
|
|
|
44
89
|
}
|
|
45
90
|
};
|
|
46
91
|
|
|
92
|
+
// タイムアウト処理の設定
|
|
93
|
+
// 指定された時間内にレスポンスがない場合はエラーとして処理
|
|
47
94
|
const timer =
|
|
48
95
|
timeout > 0
|
|
49
96
|
? setTimeout(() => {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
97
|
+
cleanup();
|
|
98
|
+
reject(new Error("Timeout"));
|
|
99
|
+
}, timeout)
|
|
53
100
|
: undefined;
|
|
54
101
|
|
|
102
|
+
// サーバーからのレスポンスを処理するコールバック関数
|
|
55
103
|
const callback = (data: T) => {
|
|
56
104
|
cleanup();
|
|
57
105
|
resolve(data);
|
|
58
106
|
};
|
|
107
|
+
|
|
108
|
+
// グローバルスコープにコールバック関数を登録
|
|
109
|
+
// これによりJSONPのレスポンスから関数が呼び出せるようになる
|
|
59
110
|
window[id] = callback;
|
|
60
111
|
|
|
61
|
-
//
|
|
112
|
+
// JSONPリクエスト用のscriptタグを作成
|
|
62
113
|
const script = document.createElement("script");
|
|
63
114
|
const urlObj = new URL(url);
|
|
115
|
+
|
|
116
|
+
// URLにコールバック関数名をパラメータとして追加
|
|
64
117
|
urlObj.searchParams.set(param, id);
|
|
65
118
|
script.setAttribute("src", urlObj.toString());
|
|
119
|
+
|
|
120
|
+
// DOMにscriptタグを挿入し、リクエストを開始
|
|
66
121
|
target.insertBefore(script, targetChild);
|
|
67
122
|
});
|
|
68
123
|
}
|
package/src/util/type.ts
CHANGED
|
@@ -1,3 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 文字列に変換可能な型を表します。
|
|
3
|
+
*
|
|
4
|
+
* このタイプには以下が含まれます:
|
|
5
|
+
* - `string`: 文字列プリミティブ
|
|
6
|
+
* - `number`: 数値
|
|
7
|
+
* - `bigint`: 任意精度の整数
|
|
8
|
+
* - `boolean`: 真/偽の値
|
|
9
|
+
* - `null`: null値
|
|
10
|
+
* - `undefined`: undefined値
|
|
11
|
+
*
|
|
12
|
+
* これらの型はすべて、文字列連結や文字列変換可能な値を期待する関数で安全に使用できます。
|
|
13
|
+
*/
|
|
1
14
|
type Stringable = string | number | bigint | boolean | null | undefined;
|
|
2
15
|
|
|
16
|
+
/**
|
|
17
|
+
* ハイフンで結合された2つの文字列変換可能な値、または単一の値を表すユーティリティタイプ。
|
|
18
|
+
*
|
|
19
|
+
* @template T - 文字列に変換可能な型
|
|
20
|
+
* @returns `${T}-${T}` (ハイフンで結合された2つの値) または `${T}` (単一の値)
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* type Numbers = 1 | 2 | 3;
|
|
24
|
+
* type JoinedNumbers = Join<Numbers>; // '1' | '2' | '3' | '1-1' | '1-2' | '1-3' | '2-1' | '2-2' | '2-3' | '3-1' | '3-2' | '3-3'
|
|
25
|
+
*/
|
|
3
26
|
export type Join<T extends Stringable> = `${T}-${T}` | `${T}`;
|
package/src/util/unzipp.ts
CHANGED
|
@@ -4,6 +4,15 @@ import { promisify } from "util";
|
|
|
4
4
|
const gunzipAsync = promisify<InputType, Buffer>(gunzip);
|
|
5
5
|
|
|
6
6
|
const decoder = new TextDecoder()
|
|
7
|
+
/**
|
|
8
|
+
* 圧縮されたJSONデータを解凍して解析します。
|
|
9
|
+
*
|
|
10
|
+
* @param data - ArrayBuffer形式の圧縮データ
|
|
11
|
+
* @returns 解凍されたデータからパースされたJSONオブジェクト
|
|
12
|
+
* @throws {string} データが解凍できない、または解凍されたデータが有効なJSONでない場合、
|
|
13
|
+
* 解凍されたデータの文字列表現をスローします。
|
|
14
|
+
* @throws {string} 解凍中にエラーが発生した場合、元のデータの文字列表現をスローします。
|
|
15
|
+
*/
|
|
7
16
|
export async function unzipp(data: ArrayBuffer) {
|
|
8
17
|
try {
|
|
9
18
|
const buffer = await gunzipAsync(data);
|
package/dist/chunk-4VC3246A.js
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
SearchBuilder
|
|
3
|
-
} from "./chunk-P7QOZBII.js";
|
|
4
|
-
import {
|
|
5
|
-
Fields,
|
|
6
|
-
RankingType
|
|
7
|
-
} from "./chunk-CDOBNSCL.js";
|
|
8
|
-
|
|
9
|
-
// src/ranking.ts
|
|
10
|
-
import { addDays, format } from "date-fns";
|
|
11
|
-
var dateFormat = "yyyyMMdd";
|
|
12
|
-
var RankingBuilder = class {
|
|
13
|
-
/**
|
|
14
|
-
* constructor
|
|
15
|
-
* @private
|
|
16
|
-
*/
|
|
17
|
-
constructor(params = {}, api) {
|
|
18
|
-
this.params = params;
|
|
19
|
-
this.api = api;
|
|
20
|
-
this.date$ = addDays(Date.now(), -1);
|
|
21
|
-
this.type$ = RankingType.Daily;
|
|
22
|
-
}
|
|
23
|
-
date(date) {
|
|
24
|
-
this.date$ = date;
|
|
25
|
-
return this;
|
|
26
|
-
}
|
|
27
|
-
type(type) {
|
|
28
|
-
this.type$ = type;
|
|
29
|
-
return this;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* gzip圧縮する。
|
|
33
|
-
*
|
|
34
|
-
* 転送量上限を減らすためにも推奨
|
|
35
|
-
* @param {GzipLevel} level gzip圧縮レベル(1~5)
|
|
36
|
-
* @return {RankingBuilder} this
|
|
37
|
-
*/
|
|
38
|
-
gzip(level) {
|
|
39
|
-
this.set({ gzip: level });
|
|
40
|
-
return this;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* クエリパラメータをセットする
|
|
44
|
-
* @private
|
|
45
|
-
* @return {RankingBuilder} this
|
|
46
|
-
*/
|
|
47
|
-
set(obj) {
|
|
48
|
-
Object.assign(this.params, obj);
|
|
49
|
-
return this;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* なろう小説APIへのリクエストを実行する
|
|
53
|
-
* @returns ランキング
|
|
54
|
-
*/
|
|
55
|
-
execute() {
|
|
56
|
-
const date = format(this.date$, dateFormat);
|
|
57
|
-
this.set({ rtype: `${date}-${this.type$}` });
|
|
58
|
-
return this.api.executeRanking(this.params);
|
|
59
|
-
}
|
|
60
|
-
async executeWithFields(fields = [], opt) {
|
|
61
|
-
const ranking = await this.execute();
|
|
62
|
-
const fields$ = Array.isArray(fields) ? fields.length == 0 ? [] : [...fields, Fields.ncode] : [fields, Fields.ncode];
|
|
63
|
-
const rankingNcodes = ranking.map(({ ncode }) => ncode);
|
|
64
|
-
const builder = new SearchBuilder({}, this.api);
|
|
65
|
-
builder.fields(fields$);
|
|
66
|
-
if (opt) {
|
|
67
|
-
builder.opt(opt);
|
|
68
|
-
}
|
|
69
|
-
builder.ncode(rankingNcodes);
|
|
70
|
-
builder.limit(ranking.length);
|
|
71
|
-
const result = await builder.execute();
|
|
72
|
-
return ranking.map((r) => ({
|
|
73
|
-
...r,
|
|
74
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
75
|
-
...result.values.find((novel) => novel.ncode == r.ncode)
|
|
76
|
-
}));
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
export {
|
|
81
|
-
RankingBuilder
|
|
82
|
-
};
|
|
83
|
-
//# sourceMappingURL=chunk-4VC3246A.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ranking.ts"],"sourcesContent":["import type { NarouRankingResult, RankingResult } from \"./narou-ranking-results.js\";\nimport SearchBuilder from \"./search-builder.js\";\nimport type { DefaultSearchResultFields } from \"./search-builder.js\";\nimport { addDays, format } from \"date-fns\";\nimport type {\n GzipLevel,\n OptionalFields,\n} from \"./params.js\";\nimport {\n RankingParams,\n RankingType,\n Fields,\n} from \"./params.js\";\nimport type NarouNovel from \"./narou.js\";\nimport type { SearchResultFields } from \"./narou-search-results.js\";\n\nconst dateFormat = \"yyyyMMdd\";\n\n/**\n * ランキングヘルパー\n * @class Ranking\n */\nexport default class RankingBuilder {\n protected date$: Date;\n protected type$: RankingType;\n\n /**\n * constructor\n * @private\n */\n constructor(\n protected params: Partial<RankingParams> = {},\n protected api: NarouNovel\n ) {\n /**\n * クエリパラメータ\n * @protected\n */\n this.date$ = addDays(Date.now(), -1);\n this.type$ = RankingType.Daily;\n }\n\n date(date: Date) {\n this.date$ = date;\n return this;\n }\n\n type(type: RankingType) {\n this.type$ = type;\n return this;\n }\n\n /**\n * gzip圧縮する。\n *\n * 転送量上限を減らすためにも推奨\n * @param {GzipLevel} level gzip圧縮レベル(1~5)\n * @return {RankingBuilder} this\n */\n gzip(level: GzipLevel) {\n this.set({ gzip: level });\n return this;\n }\n\n /**\n * クエリパラメータをセットする\n * @private\n * @return {RankingBuilder} this\n */\n protected set(obj: Partial<RankingParams>) {\n Object.assign(this.params, obj);\n return this;\n }\n\n /**\n * なろう小説APIへのリクエストを実行する\n * @returns ランキング\n */\n execute(): Promise<NarouRankingResult[]> {\n const date = format(this.date$, dateFormat);\n this.set({ rtype: `${date}-${this.type$}` });\n return this.api.executeRanking(this.params as RankingParams);\n }\n\n async executeWithFields(): Promise<\n RankingResult<DefaultSearchResultFields>[]\n >;\n\n async executeWithFields<TFields extends Fields>(\n fields: TFields | TFields[]\n ): Promise<RankingResult<SearchResultFields<TFields>>[]>;\n\n async executeWithFields(\n fields: never[],\n opt: OptionalFields | OptionalFields[]\n ): Promise<RankingResult<DefaultSearchResultFields | \"weekly_unique\">[]>;\n\n async executeWithFields<TFields extends Fields>(\n fields: TFields | TFields[],\n opt: OptionalFields | OptionalFields[]\n ): Promise<RankingResult<SearchResultFields<TFields> | \"weekly_unique\">[]>;\n\n async executeWithFields<\n TFields extends Fields,\n TOpt extends OptionalFields | undefined = undefined\n >(\n fields: TFields | TFields[] = [],\n opt?: TOpt\n ): Promise<RankingResult<SearchResultFields<TFields>>[]> {\n const ranking = await this.execute();\n const fields$ = Array.isArray(fields)\n ? fields.length == 0\n ? []\n : ([...fields, Fields.ncode] as const)\n : ([fields, Fields.ncode] as const);\n\n const rankingNcodes = ranking.map(({ ncode }) => ncode);\n const builder = new SearchBuilder({}, this.api);\n builder.fields(fields$);\n if (opt) {\n builder.opt(opt);\n }\n builder.ncode(rankingNcodes);\n builder.limit(ranking.length);\n const result = await builder.execute();\n\n return ranking.map<\n RankingResult<\n | SearchResultFields<TFields>\n | (TOpt extends \"weekly\" ? \"weekly_unique\" : never)\n >\n >((r) => ({\n ...r,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ...(result.values.find((novel) => novel.ncode == r.ncode) as any),\n }));\n }\n}\n"],"mappings":";;;;;;;;;AAGA,SAAS,SAAS,cAAc;AAahC,IAAM,aAAa;AAMnB,IAAqB,iBAArB,MAAoC;AAAA;AAAA;AAAA;AAAA;AAAA,EAQlC,YACY,SAAiC,CAAC,GAClC,KACV;AAFU;AACA;AAMV,SAAK,QAAQ,QAAQ,KAAK,IAAI,GAAG,EAAE;AACnC,SAAK,QAAQ,YAAY;AAAA,EAC3B;AAAA,EAEA,KAAK,MAAY;AACf,SAAK,QAAQ;AACb,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,MAAmB;AACtB,SAAK,QAAQ;AACb,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,KAAK,OAAkB;AACrB,SAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AACxB,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,IAAI,KAA6B;AACzC,WAAO,OAAO,KAAK,QAAQ,GAAG;AAC9B,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAyC;AACvC,UAAM,OAAO,OAAO,KAAK,OAAO,UAAU;AAC1C,SAAK,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,KAAK,KAAK,GAAG,CAAC;AAC3C,WAAO,KAAK,IAAI,eAAe,KAAK,MAAuB;AAAA,EAC7D;AAAA,EAoBA,MAAM,kBAIJ,SAA8B,CAAC,GAC/B,KACuD;AACvD,UAAM,UAAU,MAAM,KAAK,QAAQ;AACnC,UAAM,UAAU,MAAM,QAAQ,MAAM,IAChC,OAAO,UAAU,IACf,CAAC,IACA,CAAC,GAAG,QAAQ,OAAO,KAAK,IAC1B,CAAC,QAAQ,OAAO,KAAK;AAE1B,UAAM,gBAAgB,QAAQ,IAAI,CAAC,EAAE,MAAM,MAAM,KAAK;AACtD,UAAM,UAAU,IAAI,cAAc,CAAC,GAAG,KAAK,GAAG;AAC9C,YAAQ,OAAO,OAAO;AACtB,QAAI,KAAK;AACP,cAAQ,IAAI,GAAG;AAAA,IACjB;AACA,YAAQ,MAAM,aAAa;AAC3B,YAAQ,MAAM,QAAQ,MAAM;AAC5B,UAAM,SAAS,MAAM,QAAQ,QAAQ;AAErC,WAAO,QAAQ,IAKb,CAAC,OAAO;AAAA,MACR,GAAG;AAAA;AAAA,MAEH,GAAI,OAAO,OAAO,KAAK,CAAC,UAAU,MAAM,SAAS,EAAE,KAAK;AAAA,IAC1D,EAAE;AAAA,EACJ;AACF;","names":[]}
|
package/dist/chunk-4ZP5YNWI.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=chunk-4ZP5YNWI.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/chunk-AZT2OXBZ.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
jsonp
|
|
3
|
-
} from "./chunk-XVH2CU2Q.js";
|
|
4
|
-
import {
|
|
5
|
-
NarouNovel
|
|
6
|
-
} from "./chunk-UN3W2CT3.js";
|
|
7
|
-
|
|
8
|
-
// src/narou-jsonp.ts
|
|
9
|
-
var NarouNovelJsonp = class extends NarouNovel {
|
|
10
|
-
async execute(params, endpoint) {
|
|
11
|
-
const query = { ...params, out: "jsonp" };
|
|
12
|
-
query.gzip = 0;
|
|
13
|
-
const url = new URL(endpoint);
|
|
14
|
-
Object.entries(query).forEach(([key, value]) => {
|
|
15
|
-
if (value !== void 0) {
|
|
16
|
-
url.searchParams.append(key, value.toString());
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
return await jsonp(url.toString());
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
export {
|
|
24
|
-
NarouNovelJsonp
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=chunk-AZT2OXBZ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/narou-jsonp.ts"],"sourcesContent":["import NarouNovel from \"./narou.js\";\nimport type { NarouParams } from \"./narou.js\";\nimport { jsonp } from \"./util/jsonp.js\";\n\n/**\n * なろう小説APIへのリクエストを実行する\n */\nexport default class NarouNovelJsonp extends NarouNovel {\n protected async execute<T>(\n params: NarouParams,\n endpoint: string\n ): Promise<T> {\n const query = { ...params, out: \"jsonp\" };\n query.gzip = 0;\n\n const url = new URL(endpoint);\n\n Object.entries(query).forEach(([key, value]) => {\n if (value !== undefined) {\n url.searchParams.append(key, value.toString());\n }\n });\n\n return await jsonp(url.toString());\n }\n}\n"],"mappings":";;;;;;;;AAOA,IAAqB,kBAArB,cAA6C,WAAW;AAAA,EACtD,MAAgB,QACd,QACA,UACY;AACZ,UAAM,QAAQ,EAAE,GAAG,QAAQ,KAAK,QAAQ;AACxC,UAAM,OAAO;AAEb,UAAM,MAAM,IAAI,IAAI,QAAQ;AAE5B,WAAO,QAAQ,KAAK,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC9C,UAAI,UAAU,QAAW;AACvB,YAAI,aAAa,OAAO,KAAK,MAAM,SAAS,CAAC;AAAA,MAC/C;AAAA,IACF,CAAC;AAED,WAAO,MAAM,MAAM,IAAI,SAAS,CAAC;AAAA,EACnC;AACF;","names":[]}
|