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.
Files changed (164) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +78 -35
  3. package/dist/index.browser.cjs +87 -1230
  4. package/dist/index.browser.cjs.map +1 -1
  5. package/dist/index.browser.d.cts +31 -24
  6. package/dist/index.browser.d.mts +47 -0
  7. package/dist/index.browser.mjs +66 -0
  8. package/dist/index.browser.mjs.map +1 -0
  9. package/dist/index.cjs +147 -1281
  10. package/dist/index.cjs.map +1 -1
  11. package/dist/index.common-8lS2K_1Y.mjs +1166 -0
  12. package/dist/index.common-8lS2K_1Y.mjs.map +1 -0
  13. package/dist/index.common-CYj0n0aU.cjs +1346 -0
  14. package/dist/index.common-CYj0n0aU.cjs.map +1 -0
  15. package/dist/index.d.cts +39 -23
  16. package/dist/index.d.mts +63 -0
  17. package/dist/index.mjs +128 -0
  18. package/dist/index.mjs.map +1 -0
  19. package/dist/user-search-BY6FdEe7.d.cts +1394 -0
  20. package/dist/user-search-Besgk-Hx.d.mts +1394 -0
  21. package/package.json +34 -45
  22. package/pnpm-lock.yaml +2523 -2175
  23. package/src/index.browser.ts +21 -5
  24. package/src/index.ts +16 -3
  25. package/src/narou-fetch.ts +4 -3
  26. package/src/narou-jsonp.ts +4 -2
  27. package/src/narou-search-results.ts +2 -1
  28. package/src/narou.ts +53 -13
  29. package/src/params.ts +2 -2
  30. package/src/ranking-history.ts +13 -4
  31. package/src/ranking.ts +99 -26
  32. package/src/search-builder-r18.ts +23 -6
  33. package/src/search-builder.ts +183 -76
  34. package/src/user-search.ts +9 -2
  35. package/src/util/date.ts +38 -0
  36. package/src/util/jsonp.ts +61 -6
  37. package/src/util/type.ts +23 -0
  38. package/src/util/unzipp.ts +9 -0
  39. package/dist/chunk-4VC3246A.js +0 -83
  40. package/dist/chunk-4VC3246A.js.map +0 -1
  41. package/dist/chunk-4ZP5YNWI.js +0 -1
  42. package/dist/chunk-4ZP5YNWI.js.map +0 -1
  43. package/dist/chunk-AZT2OXBZ.js +0 -26
  44. package/dist/chunk-AZT2OXBZ.js.map +0 -1
  45. package/dist/chunk-CDOBNSCL.js +0 -407
  46. package/dist/chunk-CDOBNSCL.js.map +0 -1
  47. package/dist/chunk-K22KVNAH.js +0 -94
  48. package/dist/chunk-K22KVNAH.js.map +0 -1
  49. package/dist/chunk-NVMUSXA5.js +0 -23
  50. package/dist/chunk-NVMUSXA5.js.map +0 -1
  51. package/dist/chunk-P7QOZBII.js +0 -386
  52. package/dist/chunk-P7QOZBII.js.map +0 -1
  53. package/dist/chunk-RITMMCZE.js +0 -37
  54. package/dist/chunk-RITMMCZE.js.map +0 -1
  55. package/dist/chunk-SNPBEVCY.js +0 -44
  56. package/dist/chunk-SNPBEVCY.js.map +0 -1
  57. package/dist/chunk-UN3W2CT3.js +0 -72
  58. package/dist/chunk-UN3W2CT3.js.map +0 -1
  59. package/dist/chunk-WYSPGQ3S.js +0 -44
  60. package/dist/chunk-WYSPGQ3S.js.map +0 -1
  61. package/dist/chunk-XAUB42TO.js +0 -15
  62. package/dist/chunk-XAUB42TO.js.map +0 -1
  63. package/dist/chunk-XVH2CU2Q.js +0 -39
  64. package/dist/chunk-XVH2CU2Q.js.map +0 -1
  65. package/dist/index.browser.d.ts +0 -40
  66. package/dist/index.browser.js +0 -125
  67. package/dist/index.browser.js.map +0 -1
  68. package/dist/index.common.cjs +0 -1058
  69. package/dist/index.common.cjs.map +0 -1
  70. package/dist/index.common.d.cts +0 -6
  71. package/dist/index.common.d.ts +0 -6
  72. package/dist/index.common.js +0 -75
  73. package/dist/index.common.js.map +0 -1
  74. package/dist/index.d.ts +0 -47
  75. package/dist/index.js +0 -130
  76. package/dist/index.js.map +0 -1
  77. package/dist/narou-CatW_TC9.d.cts +0 -301
  78. package/dist/narou-fH9osIoh.d.ts +0 -301
  79. package/dist/narou-fetch.cjs +0 -161
  80. package/dist/narou-fetch.cjs.map +0 -1
  81. package/dist/narou-fetch.d.cts +0 -20
  82. package/dist/narou-fetch.d.ts +0 -20
  83. package/dist/narou-fetch.js +0 -10
  84. package/dist/narou-fetch.js.map +0 -1
  85. package/dist/narou-jsonp.cjs +0 -159
  86. package/dist/narou-jsonp.cjs.map +0 -1
  87. package/dist/narou-jsonp.d.cts +0 -13
  88. package/dist/narou-jsonp.d.ts +0 -13
  89. package/dist/narou-jsonp.js +0 -10
  90. package/dist/narou-jsonp.js.map +0 -1
  91. package/dist/narou-ranking-results.cjs +0 -19
  92. package/dist/narou-ranking-results.cjs.map +0 -1
  93. package/dist/narou-ranking-results.d.cts +0 -4
  94. package/dist/narou-ranking-results.d.ts +0 -4
  95. package/dist/narou-ranking-results.js +0 -1
  96. package/dist/narou-ranking-results.js.map +0 -1
  97. package/dist/narou-search-results-D5yqPRZ7.d.ts +0 -727
  98. package/dist/narou-search-results-DWCJWTC5.d.cts +0 -727
  99. package/dist/narou-search-results.cjs +0 -62
  100. package/dist/narou-search-results.cjs.map +0 -1
  101. package/dist/narou-search-results.d.cts +0 -2
  102. package/dist/narou-search-results.d.ts +0 -2
  103. package/dist/narou-search-results.js +0 -11
  104. package/dist/narou-search-results.js.map +0 -1
  105. package/dist/narou.cjs +0 -109
  106. package/dist/narou.cjs.map +0 -1
  107. package/dist/narou.d.cts +0 -4
  108. package/dist/narou.d.ts +0 -4
  109. package/dist/narou.js +0 -8
  110. package/dist/narou.js.map +0 -1
  111. package/dist/params.cjs +0 -448
  112. package/dist/params.cjs.map +0 -1
  113. package/dist/params.d.cts +0 -2
  114. package/dist/params.d.ts +0 -2
  115. package/dist/params.js +0 -41
  116. package/dist/params.js.map +0 -1
  117. package/dist/ranking-history.cjs +0 -39
  118. package/dist/ranking-history.cjs.map +0 -1
  119. package/dist/ranking-history.d.cts +0 -17
  120. package/dist/ranking-history.d.ts +0 -17
  121. package/dist/ranking-history.js +0 -7
  122. package/dist/ranking-history.js.map +0 -1
  123. package/dist/ranking.cjs +0 -674
  124. package/dist/ranking.cjs.map +0 -1
  125. package/dist/ranking.d.cts +0 -47
  126. package/dist/ranking.d.ts +0 -47
  127. package/dist/ranking.js +0 -9
  128. package/dist/ranking.js.map +0 -1
  129. package/dist/search-builder-r18.cjs +0 -488
  130. package/dist/search-builder-r18.cjs.map +0 -1
  131. package/dist/search-builder-r18.d.cts +0 -32
  132. package/dist/search-builder-r18.d.ts +0 -32
  133. package/dist/search-builder-r18.js +0 -9
  134. package/dist/search-builder-r18.js.map +0 -1
  135. package/dist/search-builder.cjs +0 -525
  136. package/dist/search-builder.cjs.map +0 -1
  137. package/dist/search-builder.d.cts +0 -4
  138. package/dist/search-builder.d.ts +0 -4
  139. package/dist/search-builder.js +0 -12
  140. package/dist/search-builder.js.map +0 -1
  141. package/dist/user-search.cjs +0 -301
  142. package/dist/user-search.cjs.map +0 -1
  143. package/dist/user-search.d.cts +0 -66
  144. package/dist/user-search.d.ts +0 -66
  145. package/dist/user-search.js +0 -9
  146. package/dist/user-search.js.map +0 -1
  147. package/dist/util/jsonp.cjs +0 -63
  148. package/dist/util/jsonp.cjs.map +0 -1
  149. package/dist/util/jsonp.d.cts +0 -13
  150. package/dist/util/jsonp.d.ts +0 -13
  151. package/dist/util/jsonp.js +0 -7
  152. package/dist/util/jsonp.js.map +0 -1
  153. package/dist/util/type.cjs +0 -19
  154. package/dist/util/type.cjs.map +0 -1
  155. package/dist/util/type.d.cts +0 -4
  156. package/dist/util/type.d.ts +0 -4
  157. package/dist/util/type.js +0 -1
  158. package/dist/util/type.js.map +0 -1
  159. package/dist/util/unzipp.cjs +0 -47
  160. package/dist/util/unzipp.cjs.map +0 -1
  161. package/dist/util/unzipp.d.cts +0 -3
  162. package/dist/util/unzipp.d.ts +0 -3
  163. package/dist/util/unzipp.js +0 -7
  164. 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
- cleanup();
51
- reject(new Error("Timeout"));
52
- }, timeout)
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
- // Create script.
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}`;
@@ -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);
@@ -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":[]}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=chunk-4ZP5YNWI.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -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":[]}