narou 1.1.0 → 1.2.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 (143) hide show
  1. package/README.md +7 -0
  2. package/dist/{chunk-RITMMCZE.js → chunk-3A5MHPWL.js} +1 -1
  3. package/dist/chunk-3A5MHPWL.js.map +1 -0
  4. package/dist/{chunk-CDOBNSCL.js → chunk-5UDKQCPJ.js} +1 -1
  5. package/dist/chunk-5UDKQCPJ.js.map +1 -0
  6. package/dist/{chunk-UN3W2CT3.js → chunk-6BZWV4ZC.js} +6 -3
  7. package/dist/{chunk-UN3W2CT3.js.map → chunk-6BZWV4ZC.js.map} +1 -1
  8. package/dist/chunk-BQLSW236.js +117 -0
  9. package/dist/chunk-BQLSW236.js.map +1 -0
  10. package/dist/{chunk-K22KVNAH.js → chunk-DEQICAN3.js} +2 -2
  11. package/dist/chunk-E2H3AJSQ.js +57 -0
  12. package/dist/chunk-E2H3AJSQ.js.map +1 -0
  13. package/dist/chunk-HOBLKBZ6.js +452 -0
  14. package/dist/chunk-HOBLKBZ6.js.map +1 -0
  15. package/dist/{chunk-XVH2CU2Q.js → chunk-IPDEGCWU.js} +1 -1
  16. package/dist/chunk-IPDEGCWU.js.map +1 -0
  17. package/dist/{chunk-AZT2OXBZ.js → chunk-LQLNWSWV.js} +3 -3
  18. package/dist/{chunk-SNPBEVCY.js → chunk-PLEM2AOH.js} +3 -3
  19. package/dist/chunk-RNHRR56W.js +25 -0
  20. package/dist/chunk-RNHRR56W.js.map +1 -0
  21. package/dist/{chunk-NVMUSXA5.js → chunk-VUZIISP2.js} +1 -1
  22. package/dist/chunk-VUZIISP2.js.map +1 -0
  23. package/dist/{chunk-XAUB42TO.js → chunk-VZVUANDN.js} +6 -4
  24. package/dist/chunk-VZVUANDN.js.map +1 -0
  25. package/dist/index.browser.cjs +214 -85
  26. package/dist/index.browser.cjs.map +1 -1
  27. package/dist/index.browser.d.cts +24 -9
  28. package/dist/index.browser.d.ts +24 -9
  29. package/dist/index.browser.js +11 -10
  30. package/dist/index.browser.js.map +1 -1
  31. package/dist/index.cjs +214 -85
  32. package/dist/index.cjs.map +1 -1
  33. package/dist/index.common.cjs +214 -85
  34. package/dist/index.common.cjs.map +1 -1
  35. package/dist/index.common.d.cts +2 -2
  36. package/dist/index.common.d.ts +2 -2
  37. package/dist/index.common.js +9 -8
  38. package/dist/index.d.cts +15 -6
  39. package/dist/index.d.ts +15 -6
  40. package/dist/index.js +13 -12
  41. package/dist/index.js.map +1 -1
  42. package/dist/narou-DBa12V_l.d.ts +404 -0
  43. package/dist/narou-DCp4aGfA.d.cts +404 -0
  44. package/dist/narou-fetch.cjs +4 -1
  45. package/dist/narou-fetch.cjs.map +1 -1
  46. package/dist/narou-fetch.d.cts +2 -2
  47. package/dist/narou-fetch.d.ts +2 -2
  48. package/dist/narou-fetch.js +4 -4
  49. package/dist/narou-jsonp.cjs +4 -1
  50. package/dist/narou-jsonp.cjs.map +1 -1
  51. package/dist/narou-jsonp.d.cts +2 -2
  52. package/dist/narou-jsonp.d.ts +2 -2
  53. package/dist/narou-jsonp.js +4 -4
  54. package/dist/narou-ranking-results.d.cts +2 -2
  55. package/dist/narou-ranking-results.d.ts +2 -2
  56. package/dist/{narou-search-results-DWCJWTC5.d.cts → narou-search-results-C21hWrnL.d.cts} +2 -2
  57. package/dist/{narou-search-results-D5yqPRZ7.d.ts → narou-search-results-DT0YdaBn.d.ts} +2 -2
  58. package/dist/narou-search-results.cjs.map +1 -1
  59. package/dist/narou-search-results.d.cts +1 -1
  60. package/dist/narou-search-results.d.ts +1 -1
  61. package/dist/narou-search-results.js +1 -1
  62. package/dist/narou.cjs +4 -1
  63. package/dist/narou.cjs.map +1 -1
  64. package/dist/narou.d.cts +2 -2
  65. package/dist/narou.d.ts +2 -2
  66. package/dist/narou.js +2 -2
  67. package/dist/params.cjs.map +1 -1
  68. package/dist/params.d.cts +1 -1
  69. package/dist/params.d.ts +1 -1
  70. package/dist/params.js +1 -1
  71. package/dist/ranking-history.cjs +11 -3
  72. package/dist/ranking-history.cjs.map +1 -1
  73. package/dist/ranking-history.d.cts +12 -1
  74. package/dist/ranking-history.d.ts +12 -1
  75. package/dist/ranking-history.js +2 -1
  76. package/dist/ranking.cjs +186 -77
  77. package/dist/ranking.cjs.map +1 -1
  78. package/dist/ranking.d.cts +69 -8
  79. package/dist/ranking.d.ts +69 -8
  80. package/dist/ranking.js +4 -3
  81. package/dist/search-builder-r18.cjs +118 -59
  82. package/dist/search-builder-r18.cjs.map +1 -1
  83. package/dist/search-builder-r18.d.cts +19 -6
  84. package/dist/search-builder-r18.d.ts +19 -6
  85. package/dist/search-builder-r18.js +3 -3
  86. package/dist/search-builder.cjs +135 -69
  87. package/dist/search-builder.cjs.map +1 -1
  88. package/dist/search-builder.d.cts +2 -2
  89. package/dist/search-builder.d.ts +2 -2
  90. package/dist/search-builder.js +2 -2
  91. package/dist/user-search.cjs +37 -13
  92. package/dist/user-search.cjs.map +1 -1
  93. package/dist/user-search.d.cts +2 -2
  94. package/dist/user-search.d.ts +2 -2
  95. package/dist/user-search.js +3 -3
  96. package/dist/util/date.cjs +51 -0
  97. package/dist/util/date.cjs.map +1 -0
  98. package/dist/util/date.d.cts +21 -0
  99. package/dist/util/date.d.ts +21 -0
  100. package/dist/util/date.js +11 -0
  101. package/dist/util/date.js.map +1 -0
  102. package/dist/util/jsonp.cjs.map +1 -1
  103. package/dist/util/jsonp.d.cts +36 -0
  104. package/dist/util/jsonp.d.ts +36 -0
  105. package/dist/util/jsonp.js +1 -1
  106. package/dist/util/type.cjs.map +1 -1
  107. package/dist/util/type.d.cts +23 -0
  108. package/dist/util/type.d.ts +23 -0
  109. package/dist/util/unzipp.cjs.map +1 -1
  110. package/dist/util/unzipp.d.cts +9 -0
  111. package/dist/util/unzipp.d.ts +9 -0
  112. package/dist/util/unzipp.js +1 -1
  113. package/package.json +34 -36
  114. package/pnpm-lock.yaml +2114 -1991
  115. package/src/index.browser.ts +21 -5
  116. package/src/index.ts +11 -2
  117. package/src/narou-search-results.ts +2 -1
  118. package/src/narou.ts +4 -1
  119. package/src/params.ts +1 -1
  120. package/src/ranking-history.ts +13 -4
  121. package/src/ranking.ts +79 -15
  122. package/src/search-builder-r18.ts +17 -4
  123. package/src/search-builder.ts +176 -73
  124. package/src/util/date.ts +38 -0
  125. package/src/util/jsonp.ts +61 -6
  126. package/src/util/type.ts +23 -0
  127. package/src/util/unzipp.ts +9 -0
  128. package/dist/chunk-4VC3246A.js +0 -83
  129. package/dist/chunk-4VC3246A.js.map +0 -1
  130. package/dist/chunk-CDOBNSCL.js.map +0 -1
  131. package/dist/chunk-NVMUSXA5.js.map +0 -1
  132. package/dist/chunk-P7QOZBII.js +0 -386
  133. package/dist/chunk-P7QOZBII.js.map +0 -1
  134. package/dist/chunk-RITMMCZE.js.map +0 -1
  135. package/dist/chunk-WYSPGQ3S.js +0 -44
  136. package/dist/chunk-WYSPGQ3S.js.map +0 -1
  137. package/dist/chunk-XAUB42TO.js.map +0 -1
  138. package/dist/chunk-XVH2CU2Q.js.map +0 -1
  139. package/dist/narou-CatW_TC9.d.cts +0 -301
  140. package/dist/narou-fH9osIoh.d.ts +0 -301
  141. /package/dist/{chunk-K22KVNAH.js.map → chunk-DEQICAN3.js.map} +0 -0
  142. /package/dist/{chunk-AZT2OXBZ.js.map → chunk-LQLNWSWV.js.map} +0 -0
  143. /package/dist/{chunk-SNPBEVCY.js.map → chunk-PLEM2AOH.js.map} +0 -0
package/dist/ranking.cjs CHANGED
@@ -231,14 +231,30 @@ var SearchBuilderBase = class {
231
231
  /**
232
232
  * constructor
233
233
  * @private
234
+ * @param params クエリパラメータ
235
+ * @param api NarouNovel インスタンス
234
236
  */
235
237
  constructor(params = {}, api) {
236
238
  this.params = params;
237
239
  this.api = api;
238
240
  }
241
+ /**
242
+ * 配列から重複を除去する
243
+ * @protected
244
+ * @static
245
+ * @param array 配列
246
+ * @returns 重複を除去した配列
247
+ */
239
248
  static distinct(array) {
240
249
  return Array.from(new Set(array));
241
250
  }
251
+ /**
252
+ * 配列をハイフン区切りの文字列に変換する
253
+ * @protected
254
+ * @static
255
+ * @param n 文字列または数値の配列、あるいは単一の文字列または数値
256
+ * @returns ハイフン区切りの文字列
257
+ */
242
258
  static array2string(n) {
243
259
  if (Array.isArray(n)) {
244
260
  return this.distinct(n).join("-");
@@ -247,44 +263,48 @@ var SearchBuilderBase = class {
247
263
  }
248
264
  }
249
265
  /**
250
- *
251
- * @return {SearchBuilder} this
266
+ * 取得件数を指定する (lim)
267
+ * @param num 取得件数 (1-500)
268
+ * @return {this}
252
269
  */
253
270
  limit(num) {
254
271
  this.set({ lim: num });
255
272
  return this;
256
273
  }
257
274
  /**
258
- *
259
- * @return {SearchBuilder} this
275
+ * 取得開始位置を指定する (st)
276
+ * @param num 取得開始位置 (1-)
277
+ * @return {this}
260
278
  */
261
279
  start(num) {
262
280
  this.set({ st: num });
263
281
  return this;
264
282
  }
265
283
  /**
266
- *
267
- * @return {SearchBuilder} this
284
+ * ページ番号と1ページあたりの件数で取得範囲を指定する
285
+ * @param no ページ番号 (0-)
286
+ * @param count 1ページあたりの件数 (デフォルト: 20)
287
+ * @return {this}
268
288
  */
269
289
  page(no, count = 20) {
270
290
  return this.limit(count).start(no * count);
271
291
  }
272
292
  /**
273
- * 出力順序を指定する。指定しない場合は新着順となります。
274
- * old 古い順
293
+ * 出力順序を指定する (order)
294
+ * 指定しない場合は新着順となります。
275
295
  * @param {TOrder} order 出力順序
276
- * @return {SearchBuilder} this
296
+ * @return {this}
277
297
  */
278
298
  order(order) {
279
299
  this.set({ order });
280
300
  return this;
281
301
  }
282
302
  /**
283
- * gzip圧縮する。
303
+ * gzip圧縮レベルを指定する (gzip)
284
304
  *
285
305
  * 転送量上限を減らすためにも推奨
286
306
  * @param {GzipLevel} level gzip圧縮レベル(1~5)
287
- * @return {SearchBuilder} this
307
+ * @return {this}
288
308
  */
289
309
  gzip(level) {
290
310
  this.set({ gzip: level });
@@ -292,8 +312,9 @@ var SearchBuilderBase = class {
292
312
  }
293
313
  /**
294
314
  * クエリパラメータをセットする
295
- * @private
296
- * @return {SearchBuilder} this
315
+ * @protected
316
+ * @param obj セットするパラメータ
317
+ * @return {this}
297
318
  */
298
319
  set(obj) {
299
320
  this.params = { ...this.params, ...obj };
@@ -301,6 +322,9 @@ var SearchBuilderBase = class {
301
322
  }
302
323
  /**
303
324
  * クエリパラメータを削除する
325
+ * @protected
326
+ * @param key 削除するパラメータのキー
327
+ * @returns {this}
304
328
  */
305
329
  unset(key) {
306
330
  delete this.params[key];
@@ -309,56 +333,65 @@ var SearchBuilderBase = class {
309
333
  };
310
334
  var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilderBase {
311
335
  /**
312
- * a
313
- * @return {SearchBuilder} this
336
+ * 検索語を指定します (word)。
337
+ * 半角または全角スペースで区切るとAND抽出になります。部分一致でHITします。
338
+ * @param word 検索語
339
+ * @return {this}
314
340
  */
315
341
  word(word) {
316
342
  this.set({ word });
317
343
  return this;
318
344
  }
319
345
  /**
320
- *
321
- * @return {SearchBuilder} this
346
+ * 除外したい単語を指定します (notword)。
347
+ * スペースで区切ることにより除外する単語を増やせます。部分一致で除外されます。
348
+ * @param word 除外語
349
+ * @return {this}
322
350
  */
323
351
  notWord(word) {
324
352
  this.set({ notword: word });
325
353
  return this;
326
354
  }
327
355
  /**
328
- *
329
- * @return {SearchBuilder} this
356
+ * 検索対象を作品名に限定するかどうかを指定します (title)。
357
+ * @param bool trueの場合、作品名を検索対象とする (デフォルト: true)
358
+ * @return {this}
330
359
  */
331
360
  byTitle(bool = true) {
332
361
  this.set({ title: bool ? BooleanNumber.True : BooleanNumber.False });
333
362
  return this;
334
363
  }
335
364
  /**
336
- *
337
- * @return {SearchBuilder} this
365
+ * 検索対象をあらすじに限定するかどうかを指定します (ex)。
366
+ * @param bool trueの場合、あらすじを検索対象とする (デフォルト: true)
367
+ * @return {this}
338
368
  */
339
369
  byOutline(bool = true) {
340
370
  this.set({ ex: bool ? BooleanNumber.True : BooleanNumber.False });
341
371
  return this;
342
372
  }
343
373
  /**
344
- *
345
- * @return {SearchBuilder} this
374
+ * 検索対象をキーワードに限定するかどうかを指定します (keyword)。
375
+ * @param bool trueの場合、キーワードを検索対象とする (デフォルト: true)
376
+ * @return {this}
346
377
  */
347
378
  byKeyword(bool = true) {
348
379
  this.set({ keyword: bool ? BooleanNumber.True : BooleanNumber.False });
349
380
  return this;
350
381
  }
351
382
  /**
352
- *
353
- * @return {SearchBuilder} this
383
+ * 検索対象を作者名に限定するかどうかを指定します (wname)。
384
+ * @param bool trueの場合、作者名を検索対象とする (デフォルト: true)
385
+ * @return {this}
354
386
  */
355
387
  byAuthor(bool = true) {
356
388
  this.set({ wname: bool ? BooleanNumber.True : BooleanNumber.False });
357
389
  return this;
358
390
  }
359
391
  /**
360
- *
361
- * @return {SearchBuilder} this
392
+ * ボーイズラブ作品を抽出または除外します (isbl/notbl)。
393
+ * @param bool trueの場合、ボーイズラブ作品を抽出する (デフォルト: true)。falseの場合、除外する。
394
+ * @return {this}
362
395
  */
363
396
  isBL(bool = true) {
364
397
  if (bool) {
@@ -369,8 +402,9 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
369
402
  return this;
370
403
  }
371
404
  /**
372
- *
373
- * @return {SearchBuilder} this
405
+ * ガールズラブ作品を抽出または除外します (isgl/notgl)。
406
+ * @param bool trueの場合、ガールズラブ作品を抽出する (デフォルト: true)。falseの場合、除外する。
407
+ * @return {this}
374
408
  */
375
409
  isGL(bool = true) {
376
410
  if (bool) {
@@ -381,8 +415,9 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
381
415
  return this;
382
416
  }
383
417
  /**
384
- *
385
- * @return {SearchBuilder} this
418
+ * 残酷な描写あり作品を抽出または除外します (iszankoku/notzankoku)。
419
+ * @param bool trueの場合、残酷な描写あり作品を抽出する (デフォルト: true)。falseの場合、除外する。
420
+ * @return {this}
386
421
  */
387
422
  isZankoku(bool = true) {
388
423
  if (bool) {
@@ -393,8 +428,9 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
393
428
  return this;
394
429
  }
395
430
  /**
396
- *
397
- * @return {SearchBuilder} this
431
+ * 異世界転生作品を抽出または除外します (istensei/nottensei)。
432
+ * @param bool trueの場合、異世界転生作品を抽出する (デフォルト: true)。falseの場合、除外する。
433
+ * @return {this}
398
434
  */
399
435
  isTensei(bool = true) {
400
436
  if (bool) {
@@ -405,8 +441,9 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
405
441
  return this;
406
442
  }
407
443
  /**
408
- *
409
- * @return {SearchBuilder} this
444
+ * 異世界転移作品を抽出または除外します (istenni/nottenni)。
445
+ * @param bool trueの場合、異世界転移作品を抽出する (デフォルト: true)。falseの場合、除外する。
446
+ * @return {this}
410
447
  */
411
448
  isTenni(bool = true) {
412
449
  if (bool) {
@@ -417,16 +454,18 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
417
454
  return this;
418
455
  }
419
456
  /**
420
- *
421
- * @return {SearchBuilder} this
457
+ * 異世界転生または異世界転移作品を抽出します (istt)。
458
+ * @return {this}
422
459
  */
423
460
  isTT() {
424
461
  this.set({ istt: BooleanNumber.True });
425
462
  return this;
426
463
  }
427
464
  /**
428
- *
429
- * @return {SearchBuilder} this
465
+ * 抽出する作品の文字数を指定します (length)。
466
+ * 範囲指定する場合は、最小文字数と最大文字数をハイフン(-)記号で区切ってください。
467
+ * @param length 文字数、または[最小文字数, 最大文字数]
468
+ * @return {this}
430
469
  */
431
470
  length(length) {
432
471
  this.set({ length: _NovelSearchBuilderBase.array2string(length) });
@@ -443,59 +482,66 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
443
482
  return this;
444
483
  }
445
484
  /**
446
- *
447
- * @return {SearchBuilder} this
485
+ * 抽出する作品の挿絵数を指定します (sasie)。
486
+ * @param num 挿絵数、または[最小挿絵数, 最大挿絵数]
487
+ * @return {this}
448
488
  */
449
489
  sasie(num) {
450
490
  this.set({ sasie: _NovelSearchBuilderBase.array2string(num) });
451
491
  return this;
452
492
  }
453
493
  /**
454
- *
455
- * @return {SearchBuilder} this
494
+ * 抽出する作品の予想読了時間を分単位で指定します (time)。
495
+ * @param num 読了時間(分)、または[最小読了時間, 最大読了時間]
496
+ * @return {this}
456
497
  */
457
498
  time(num) {
458
499
  this.set({ time: _NovelSearchBuilderBase.array2string(num) });
459
500
  return this;
460
501
  }
461
502
  /**
462
- *
463
- * @return {SearchBuilder} this
503
+ * Nコードを指定して取得します (ncode)。
504
+ * @param ncodes Nコード、またはNコードの配列
505
+ * @return {this}
464
506
  */
465
507
  ncode(ncodes) {
466
508
  this.set({ ncode: _NovelSearchBuilderBase.array2string(ncodes) });
467
509
  return this;
468
510
  }
469
511
  /**
470
- *
471
- * @return {SearchBuilder} this
512
+ * 抽出する小説タイプを指定します (type)。
513
+ * @param type 小説タイプ (t: 短編, r: 連載中, er: 完結済連載小説, ter: 短編と完結済連載小説, re: 連載中と完結済連載小説)
514
+ * @return {this}
472
515
  */
473
516
  type(type) {
474
517
  this.set({ type });
475
518
  return this;
476
519
  }
477
520
  /**
478
- *
479
- * @return {SearchBuilder} this
521
+ * 抽出する作品の文体を指定します (buntai)。
522
+ * 複数指定する場合はハイフン(-)で区切ってください。
523
+ * @param buntai 文体コード、または文体コードの配列
524
+ * @return {this}
480
525
  */
481
526
  buntai(buntai) {
482
527
  this.set({ buntai: _NovelSearchBuilderBase.array2string(buntai) });
483
528
  return this;
484
529
  }
485
530
  /**
486
- *
487
- * @return {SearchBuilder} this
531
+ * 連載停止中作品に関する指定をします (stop)。
532
+ * @param bool trueの場合、長期連載停止中のみ取得する (デフォルト: true)。falseの場合、長期連載停止中を除外する。
533
+ * @return {this}
488
534
  */
489
535
  isStop(bool = true) {
490
536
  this.set({ stop: bool ? StopParam.Stopping : StopParam.NoStopping });
491
537
  return this;
492
538
  }
493
539
  /**
494
- *
495
- * @return {SearchBuilder} this
540
+ * ピックアップ作品のみを取得します (ispickup)。
541
+ * @return {this}
496
542
  */
497
- isPickup(bool = true) {
498
- this.set({ ispickup: bool ? BooleanNumber.True : BooleanNumber.False });
543
+ isPickup() {
544
+ this.set({ ispickup: BooleanNumber.True });
499
545
  return this;
500
546
  }
501
547
  lastUpdate(x, y) {
@@ -536,48 +582,59 @@ var NovelSearchBuilderBase = class _NovelSearchBuilderBase extends SearchBuilder
536
582
  };
537
583
  var SearchBuilder = class _SearchBuilder extends NovelSearchBuilderBase {
538
584
  /**
539
- *
540
- * @return {SearchBuilder} this
585
+ * 大ジャンルを指定して取得します (biggenre)。
586
+ * 複数指定する場合はハイフン(-)で区切ってください。
587
+ * @param genre 大ジャンルコード、または大ジャンルコードの配列
588
+ * @return {this}
541
589
  */
542
590
  bigGenre(genre) {
543
591
  this.set({ biggenre: _SearchBuilder.array2string(genre) });
544
592
  return this;
545
593
  }
546
594
  /**
547
- *
548
- * @return {SearchBuilder} this
595
+ * 除外したい大ジャンルを指定します (notbiggenre)。
596
+ * 複数指定する場合はハイフン(-)で区切ってください。
597
+ * @param genre 除外する大ジャンルコード、または大ジャンルコードの配列
598
+ * @return {this}
549
599
  */
550
600
  notBigGenre(genre) {
551
601
  this.set({ notbiggenre: _SearchBuilder.array2string(genre) });
552
602
  return this;
553
603
  }
554
604
  /**
555
- *
556
- * @return {SearchBuilder} this
605
+ * ジャンルを指定して取得します (genre)。
606
+ * 複数指定する場合はハイフン(-)で区切ってください。
607
+ * @param genre ジャンルコード、またはジャンルコードの配列
608
+ * @return {this}
557
609
  */
558
610
  genre(genre) {
559
611
  this.set({ genre: _SearchBuilder.array2string(genre) });
560
612
  return this;
561
613
  }
562
614
  /**
563
- *
564
- * @return {SearchBuilder} this
615
+ * 除外したいジャンルを指定します (notgenre)。
616
+ * 複数指定する場合はハイフン(-)で区切ってください。
617
+ * @param genre 除外するジャンルコード、またはジャンルコードの配列
618
+ * @return {this}
565
619
  */
566
620
  notGenre(genre) {
567
621
  this.set({ notgenre: _SearchBuilder.array2string(genre) });
568
622
  return this;
569
623
  }
570
624
  /**
571
- *
572
- * @return {SearchBuilder} this
625
+ * ユーザIDを指定して取得します (userid)。
626
+ * 複数指定する場合はハイフン(-)で区切ってください。
627
+ * @param ids ユーザID、またはユーザIDの配列
628
+ * @return {this}
573
629
  */
574
630
  userId(ids) {
575
631
  this.set({ userid: _SearchBuilder.array2string(ids) });
576
632
  return this;
577
633
  }
578
634
  /**
579
- *
580
- * @return {SearchBuilder} this
635
+ * R15作品を抽出または除外します (isr15/notr15)。
636
+ * @param bool trueの場合、R15作品を抽出する (デフォルト: true)。falseの場合、除外する。
637
+ * @return {this}
581
638
  */
582
639
  isR15(bool = true) {
583
640
  if (bool) {
@@ -588,37 +645,76 @@ var SearchBuilder = class _SearchBuilder extends NovelSearchBuilderBase {
588
645
  return this;
589
646
  }
590
647
  /**
591
- *
592
- * @return {SearchBuilder} this
648
+ * 出力する項目を個別に指定します (of)。
649
+ * 未指定時は全項目出力されます。転送量軽減のため、このパラメータの使用が推奨されます。
650
+ * 複数項目を出力する場合はハイフン(-)記号で区切ってください。
651
+ * @param fields 出力するフィールド名、またはフィールド名の配列
652
+ * @return {SearchBuilder<SearchResultFields<TFields>, TOpt>} 型が更新されたビルダー
593
653
  */
594
654
  fields(fields) {
595
655
  this.set({ of: _SearchBuilder.array2string(fields) });
596
656
  return this;
597
657
  }
658
+ /**
659
+ * 出力オプション項目を指定します (opt)。
660
+ * 複数項目を出力する場合はハイフン(-)記号で区切ってください。
661
+ * @param option 出力するオプションフィールド名、またはオプションフィールド名の配列
662
+ * @return {SearchBuilder<T, SearchResultOptionalFields<TFields>>} 型が更新されたビルダー
663
+ */
598
664
  opt(option) {
599
665
  this.set({ opt: _SearchBuilder.array2string(option) });
600
666
  return this;
601
667
  }
602
668
  };
603
669
 
670
+ // src/util/date.ts
671
+ function formatDate(date) {
672
+ const year = date.getFullYear();
673
+ const month = String(date.getMonth() + 1).padStart(2, "0");
674
+ const day = String(date.getDate()).padStart(2, "0");
675
+ return `${year}${month}${day}`;
676
+ }
677
+ function addDays(date, days) {
678
+ const result = new Date(date);
679
+ result.setDate(result.getDate() + days);
680
+ return result;
681
+ }
682
+
604
683
  // src/ranking.ts
605
- var import_date_fns = require("date-fns");
606
- var dateFormat = "yyyyMMdd";
607
684
  var RankingBuilder = class {
608
685
  /**
609
686
  * constructor
687
+ * @param params - 初期クエリパラメータ
688
+ * @param api - API実行クラスのインスタンス
610
689
  * @private
611
690
  */
612
691
  constructor(params = {}, api) {
613
692
  this.params = params;
614
693
  this.api = api;
615
- this.date$ = (0, import_date_fns.addDays)(Date.now(), -1);
694
+ this.date$ = addDays(/* @__PURE__ */ new Date(), -1);
616
695
  this.type$ = RankingType.Daily;
617
696
  }
697
+ /**
698
+ * ランキング集計対象の日付を指定します。
699
+ *
700
+ * - 日間: 任意の日付
701
+ * - 週間: 火曜日の日付
702
+ * - 月間・四半期: 1日の日付
703
+ *
704
+ * @param date 集計対象の日付
705
+ * @returns {RankingBuilder} this
706
+ * @see https://dev.syosetu.com/man/rankapi/
707
+ */
618
708
  date(date) {
619
709
  this.date$ = date;
620
710
  return this;
621
711
  }
712
+ /**
713
+ * ランキング種別を指定します。
714
+ * @param type ランキング種別
715
+ * @returns {RankingBuilder} this
716
+ * @see https://dev.syosetu.com/man/rankapi/
717
+ */
622
718
  type(type) {
623
719
  this.type$ = type;
624
720
  return this;
@@ -635,23 +731,36 @@ var RankingBuilder = class {
635
731
  return this;
636
732
  }
637
733
  /**
638
- * クエリパラメータをセットする
734
+ * クエリパラメータを内部的にセットします。
735
+ * @param obj - セットするパラメータオブジェクト
736
+ * @returns {RankingBuilder} this
639
737
  * @private
640
- * @return {RankingBuilder} this
641
738
  */
642
739
  set(obj) {
643
740
  Object.assign(this.params, obj);
644
741
  return this;
645
742
  }
646
743
  /**
647
- * なろう小説APIへのリクエストを実行する
648
- * @returns ランキング
744
+ * 設定されたパラメータに基づき、なろう小説ランキングAPIへのリクエストを実行します。
745
+ *
746
+ * 返される結果には、Nコード、ポイント、順位が含まれます。
747
+ * @returns {Promise<NarouRankingResult[]>} ランキング結果の配列
748
+ * @see https://dev.syosetu.com/man/rankapi/#output
649
749
  */
650
750
  execute() {
651
- const date = (0, import_date_fns.format)(this.date$, dateFormat);
751
+ const date = formatDate(this.date$);
652
752
  this.set({ rtype: `${date}-${this.type$}` });
653
753
  return this.api.executeRanking(this.params);
654
754
  }
755
+ /**
756
+ * ランキングAPIを実行し、取得したNコードを元になろう小説APIで詳細情報を取得して結合します。
757
+ *
758
+ * @template TFields - 取得する小説情報のフィールド型
759
+ * @template TOpt - オプショナルな取得フィールドの型
760
+ * @param fields - 取得するフィールドの配列 (省略時はデフォルトフィールド)
761
+ * @param opt - オプショナルな取得フィールド (`weekly` など)
762
+ * @returns {Promise<RankingResult<SearchResultFields<TFields>>[]>} 詳細情報を含むランキング結果の配列
763
+ */
655
764
  async executeWithFields(fields = [], opt) {
656
765
  const ranking = await this.execute();
657
766
  const fields$ = Array.isArray(fields) ? fields.length == 0 ? [] : [...fields, Fields.ncode] : [fields, Fields.ncode];