narou 0.5.0 → 0.6.2

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 (131) hide show
  1. package/dist/index.browser.d.ts +30 -0
  2. package/dist/index.browser.d.ts.map +1 -0
  3. package/dist/index.browser.js +119 -0
  4. package/dist/index.browser.js.map +1 -0
  5. package/dist/index.common.d.ts +8 -0
  6. package/dist/index.common.d.ts.map +1 -0
  7. package/dist/index.common.js +17 -0
  8. package/dist/index.common.js.map +1 -0
  9. package/dist/index.d.ts +30 -31
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +120 -113
  12. package/dist/index.js.map +1 -1
  13. package/dist/narou-fetch.d.ts +13 -0
  14. package/dist/narou-fetch.d.ts.map +1 -0
  15. package/dist/narou-fetch.js +130 -0
  16. package/dist/narou-fetch.js.map +1 -0
  17. package/dist/narou-jsonp.d.ts +10 -0
  18. package/dist/narou-jsonp.d.ts.map +1 -0
  19. package/dist/narou-jsonp.js +102 -0
  20. package/dist/narou-jsonp.js.map +1 -0
  21. package/dist/narou-ranking-results.d.ts +8 -8
  22. package/dist/narou-ranking-results.js +2 -2
  23. package/dist/narou-search-results.d.ts +90 -89
  24. package/dist/narou-search-results.d.ts.map +1 -1
  25. package/dist/narou-search-results.js +51 -51
  26. package/dist/narou-search-results.js.map +1 -1
  27. package/dist/narou.d.ts +24 -25
  28. package/dist/narou.d.ts.map +1 -1
  29. package/dist/narou.js +104 -142
  30. package/dist/narou.js.map +1 -1
  31. package/dist/params.d.ts +230 -230
  32. package/dist/params.js +173 -173
  33. package/dist/ranking-history.d.ts +13 -13
  34. package/dist/ranking-history.js +13 -13
  35. package/dist/ranking-history.js.map +1 -1
  36. package/dist/ranking.d.ts +47 -45
  37. package/dist/ranking.d.ts.map +1 -1
  38. package/dist/ranking.js +167 -165
  39. package/dist/ranking.js.map +1 -1
  40. package/dist/search-builder-r18.d.ts +21 -21
  41. package/dist/search-builder-r18.d.ts.map +1 -1
  42. package/dist/search-builder-r18.js +64 -63
  43. package/dist/search-builder-r18.js.map +1 -1
  44. package/dist/search-builder.d.ts +228 -226
  45. package/dist/search-builder.d.ts.map +1 -1
  46. package/dist/search-builder.js +412 -412
  47. package/dist/search-builder.js.map +1 -1
  48. package/dist/util/jsonp.d.ts +14 -0
  49. package/dist/util/jsonp.d.ts.map +1 -0
  50. package/dist/util/jsonp.js +48 -0
  51. package/dist/util/jsonp.js.map +1 -0
  52. package/dist/util/unzipp.d.ts +3 -3
  53. package/dist/util/unzipp.js +56 -56
  54. package/dist/util/unzipp.js.map +1 -1
  55. package/dist/util/url.d.ts +10 -0
  56. package/dist/util/url.d.ts.map +1 -0
  57. package/dist/util/url.js +9 -0
  58. package/dist/util/url.js.map +1 -0
  59. package/dist.es2015/index.browser.js +50 -0
  60. package/dist.es2015/index.browser.js.map +1 -0
  61. package/dist.es2015/index.common.js +5 -0
  62. package/dist.es2015/index.common.js.map +1 -0
  63. package/dist.es2015/index.js +50 -49
  64. package/dist.es2015/index.js.map +1 -1
  65. package/dist.es2015/narou-fetch.js +44 -0
  66. package/dist.es2015/narou-fetch.js.map +1 -0
  67. package/dist.es2015/narou-jsonp.js +22 -0
  68. package/dist.es2015/narou-jsonp.js.map +1 -0
  69. package/dist.es2015/narou-ranking-results.js +1 -1
  70. package/dist.es2015/narou-search-results.js +46 -46
  71. package/dist.es2015/narou-search-results.js.map +1 -1
  72. package/dist.es2015/narou.js +23 -60
  73. package/dist.es2015/narou.js.map +1 -1
  74. package/dist.es2015/params.js +170 -170
  75. package/dist.es2015/ranking-history.js +9 -9
  76. package/dist.es2015/ranking.js +90 -90
  77. package/dist.es2015/ranking.js.map +1 -1
  78. package/dist.es2015/search-builder-r18.js +41 -42
  79. package/dist.es2015/search-builder-r18.js.map +1 -1
  80. package/dist.es2015/search-builder.js +383 -383
  81. package/dist.es2015/search-builder.js.map +1 -1
  82. package/dist.es2015/util/jsonp.js +43 -0
  83. package/dist.es2015/util/jsonp.js.map +1 -0
  84. package/dist.es2015/util/unzipp.js +7 -7
  85. package/dist.es2015/util/url.js +7 -0
  86. package/dist.es2015/util/url.js.map +1 -0
  87. package/dist.esm/index.browser.js +102 -0
  88. package/dist.esm/index.browser.js.map +1 -0
  89. package/dist.esm/index.common.js +5 -0
  90. package/dist.esm/index.common.js.map +1 -0
  91. package/dist.esm/index.js +102 -97
  92. package/dist.esm/index.js.map +1 -1
  93. package/dist.esm/narou-fetch.js +128 -0
  94. package/dist.esm/narou-fetch.js.map +1 -0
  95. package/dist.esm/narou-jsonp.js +100 -0
  96. package/dist.esm/narou-jsonp.js.map +1 -0
  97. package/dist.esm/narou-ranking-results.js +1 -1
  98. package/dist.esm/narou-search-results.js +49 -49
  99. package/dist.esm/narou-search-results.js.map +1 -1
  100. package/dist.esm/narou.js +102 -140
  101. package/dist.esm/narou.js.map +1 -1
  102. package/dist.esm/params.js +170 -170
  103. package/dist.esm/ranking-history.js +9 -9
  104. package/dist.esm/ranking.js +164 -162
  105. package/dist.esm/ranking.js.map +1 -1
  106. package/dist.esm/search-builder-r18.js +62 -61
  107. package/dist.esm/search-builder-r18.js.map +1 -1
  108. package/dist.esm/search-builder.js +410 -410
  109. package/dist.esm/search-builder.js.map +1 -1
  110. package/dist.esm/util/jsonp.js +44 -0
  111. package/dist.esm/util/jsonp.js.map +1 -0
  112. package/dist.esm/util/unzipp.js +52 -52
  113. package/dist.esm/util/url.js +7 -0
  114. package/dist.esm/util/url.js.map +1 -0
  115. package/package-lock.json +3328 -4289
  116. package/package.json +8 -9
  117. package/src/index.browser.ts +63 -0
  118. package/src/index.common.ts +17 -0
  119. package/src/index.ts +22 -23
  120. package/src/narou-fetch.ts +51 -0
  121. package/src/narou-jsonp.ts +29 -0
  122. package/src/narou-ranking-results.ts +9 -9
  123. package/src/narou-search-results.ts +11 -10
  124. package/src/narou.ts +21 -49
  125. package/src/params.ts +280 -280
  126. package/src/ranking.ts +111 -107
  127. package/src/search-builder-r18.ts +1 -2
  128. package/src/search-builder.ts +5 -3
  129. package/src/util/jsonp.ts +66 -0
  130. package/src/util/unzipp.ts +9 -9
  131. package/src/util/url.ts +7 -0
@@ -1,384 +1,384 @@
1
- import api from "./narou";
2
- /**
3
- * 検索ヘルパー
4
- * @class SearchBuilder
5
- */
6
- export default class SearchBuilder {
7
- /**
8
- * constructor
9
- * @private
10
- */
11
- constructor(params = {}) {
12
- this.params = params;
13
- }
14
- /**
15
- * a
16
- * @return {SearchBuilder} this
17
- */
18
- word(word) {
19
- this.set({ word: word });
20
- return this;
21
- }
22
- /**
23
- *
24
- * @return {SearchBuilder} this
25
- */
26
- notWord(word) {
27
- this.set({ notword: word });
28
- return this;
29
- }
30
- /**
31
- *
32
- * @return {SearchBuilder} this
33
- */
34
- byTitle(bool = true) {
35
- this.set({ title: bool ? 1 : 0 });
36
- return this;
37
- }
38
- /**
39
- *
40
- * @return {SearchBuilder} this
41
- */
42
- byOutline(bool = true) {
43
- this.set({ ex: bool ? 1 : 0 });
44
- return this;
45
- }
46
- /**
47
- *
48
- * @return {SearchBuilder} this
49
- */
50
- byKeyword(bool = true) {
51
- this.set({ keyword: bool ? 1 : 0 });
52
- return this;
53
- }
54
- /**
55
- *
56
- * @return {SearchBuilder} this
57
- */
58
- byAuthor(bool = true) {
59
- this.set({ wname: bool ? 1 : 0 });
60
- return this;
61
- }
62
- /**
63
- *
64
- * @return {SearchBuilder} this
65
- */
66
- bigGenre(genre) {
67
- this.set({ biggenre: array2string(genre) });
68
- return this;
69
- }
70
- /**
71
- *
72
- * @return {SearchBuilder} this
73
- */
74
- notBigGenre(genre) {
75
- this.set({ notbiggenre: array2string(genre) });
76
- return this;
77
- }
78
- /**
79
- *
80
- * @return {SearchBuilder} this
81
- */
82
- genre(genre) {
83
- this.set({ genre: array2string(genre) });
84
- return this;
85
- }
86
- /**
87
- *
88
- * @return {SearchBuilder} this
89
- */
90
- notGenre(genre) {
91
- this.set({ notgenre: array2string(genre) });
92
- return this;
93
- }
94
- /**
95
- *
96
- * @return {SearchBuilder} this
97
- */
98
- userId(ids) {
99
- this.set({ userid: array2string(ids) });
100
- return this;
101
- }
102
- /**
103
- *
104
- * @return {SearchBuilder} this
105
- */
106
- isR15(bool = true) {
107
- if (bool) {
108
- this.set({ isr15: 1 });
109
- }
110
- else {
111
- this.set({ notr15: 1 });
112
- }
113
- return this;
114
- }
115
- /**
116
- *
117
- * @return {SearchBuilder} this
118
- */
119
- isBL(bool = true) {
120
- if (bool) {
121
- this.set({ isbl: 1 });
122
- }
123
- else {
124
- this.set({ notbl: 1 });
125
- }
126
- return this;
127
- }
128
- /**
129
- *
130
- * @return {SearchBuilder} this
131
- */
132
- isGL(bool = true) {
133
- if (bool) {
134
- this.set({ isgl: 1 });
135
- }
136
- else {
137
- this.set({ notgl: 1 });
138
- }
139
- return this;
140
- }
141
- /**
142
- *
143
- * @return {SearchBuilder} this
144
- */
145
- isZankoku(bool = true) {
146
- if (bool) {
147
- this.set({ iszankoku: 1 });
148
- }
149
- else {
150
- this.set({ notzankoku: 1 });
151
- }
152
- return this;
153
- }
154
- /**
155
- *
156
- * @return {SearchBuilder} this
157
- */
158
- isTensei(bool = true) {
159
- if (bool) {
160
- this.set({ istensei: 1 });
161
- }
162
- else {
163
- this.set({ nottensei: 1 });
164
- }
165
- return this;
166
- }
167
- /**
168
- *
169
- * @return {SearchBuilder} this
170
- */
171
- isTenni(bool = true) {
172
- if (bool) {
173
- this.set({ istenni: 1 });
174
- }
175
- else {
176
- this.set({ nottenni: 1 });
177
- }
178
- return this;
179
- }
180
- /**
181
- *
182
- * @return {SearchBuilder} this
183
- */
184
- isTT() {
185
- this.set({ istt: 1 });
186
- return this;
187
- }
188
- /**
189
- *
190
- * @return {SearchBuilder} this
191
- */
192
- length(length) {
193
- this.set({ length: array2string(length) });
194
- return this;
195
- }
196
- kaiwaritu(min, max) {
197
- let n;
198
- if (max != null) {
199
- n = `${min}-${max}`;
200
- }
201
- else {
202
- n = min;
203
- }
204
- this.set({ kaiwaritu: n });
205
- return this;
206
- }
207
- /**
208
- *
209
- * @return {SearchBuilder} this
210
- */
211
- sasie(num) {
212
- this.set({ sasie: array2string(num) });
213
- return this;
214
- }
215
- /**
216
- *
217
- * @return {SearchBuilder} this
218
- */
219
- time(num) {
220
- this.set({ time: array2string(num) });
221
- return this;
222
- }
223
- /**
224
- *
225
- * @return {SearchBuilder} this
226
- */
227
- ncode(ncodes) {
228
- this.set({ ncode: array2string(ncodes) });
229
- return this;
230
- }
231
- /**
232
- *
233
- * @return {SearchBuilder} this
234
- */
235
- type(type) {
236
- this.set({ type });
237
- return this;
238
- }
239
- /**
240
- *
241
- * @return {SearchBuilder} this
242
- */
243
- buntai(buntai) {
244
- this.set({ buntai: array2string(buntai) });
245
- return this;
246
- }
247
- /**
248
- *
249
- * @return {SearchBuilder} this
250
- */
251
- isStop(bool = true) {
252
- this.set({ stop: bool ? 1 : 0 });
253
- return this;
254
- }
255
- /**
256
- *
257
- * @return {SearchBuilder} this
258
- */
259
- isPickup(bool = true) {
260
- this.set({ ispickup: bool ? 1 : 0 });
261
- return this;
262
- }
263
- lastUpdate(x, y) {
264
- let date;
265
- if (typeof x == "string") {
266
- date = x;
267
- }
268
- else if (x instanceof Date && y instanceof Date) {
269
- date = `${Math.floor(x.getTime() / 1000)}-${Math.floor(x.getTime() / 1000)}`;
270
- }
271
- else {
272
- date = `${x}-${y}`;
273
- }
274
- this.set({ lastup: date });
275
- return this;
276
- }
277
- /**
278
- *
279
- * @return {SearchBuilder} this
280
- */
281
- fields(fields) {
282
- this.set({ of: array2string(fields) });
283
- return this;
284
- }
285
- /**
286
- *
287
- * @return {SearchBuilder} this
288
- */
289
- limit(num) {
290
- this.set({ lim: num });
291
- return this;
292
- }
293
- /**
294
- *
295
- * @return {SearchBuilder} this
296
- */
297
- start(num) {
298
- this.set({ st: num });
299
- return this;
300
- }
301
- /**
302
- *
303
- * @return {SearchBuilder} this
304
- */
305
- page(no, count = 20) {
306
- return this.limit(count).start(no * count);
307
- }
308
- opt(option) {
309
- return this.set({ opt: option });
310
- }
311
- /**
312
- * 出力順序を指定する。指定しない場合は新着順となります。
313
- *
314
- * @description
315
- * allunique 閲覧者の多い順(未実装)
316
- * favnovelcnt ブックマーク数の多い順
317
- * reviewcnt レビュー数の多い順
318
- * hyoka 総合評価の高い順
319
- * hyokaasc 総合評価の低い順
320
- * impressioncnt 感想の多い順
321
- * hyokacnt 評価者数の多い順
322
- * hyokacntasc 評価者数の少ない順
323
- * weekly 週間ユニークユーザの多い順 毎週火曜日早朝リセット
324
- * (前週の日曜日から土曜日分)
325
- * lengthdesc 小説本文の文字数が多い順
326
- * lengthasc 小説本文の文字数が少ない順
327
- * ncodedesc Nコードが新しい順
328
- * old 古い順
329
- * @param {Order} order 出力順序
330
- * @return {SearchBuilder} this
331
- */
332
- order(order) {
333
- this.set({ order: order });
334
- return this;
335
- }
336
- /**
337
- * gzip圧縮する。
338
- *
339
- * 転送量上限を減らすためにも推奨
340
- * @param {GzipLevel} level gzip圧縮レベル(1~5)
341
- * @return {SearchBuilder} this
342
- */
343
- gzip(level) {
344
- this.set({ gzip: level });
345
- return this;
346
- }
347
- /**
348
- * クエリパラメータをセットする
349
- * @private
350
- * @return {SearchBuilder} this
351
- */
352
- set(obj) {
353
- this.params = Object.assign(Object.assign({}, this.params), obj);
354
- return this;
355
- }
356
- /**
357
- * クエリパラメータを削除する
358
- * @private
359
- * @return {SearchBuilder} this
360
- */
361
- unset(key) {
362
- delete this.params[key];
363
- return this;
364
- }
365
- /**
366
- * なろう小説APIへの検索リクエストを実行する
367
- * @returns {Promise<NarouSearchResults>} 検索結果
368
- */
369
- execute() {
370
- return api.executeNovel(this.params);
371
- }
372
- }
373
- function distinct(array) {
374
- return Array.from(new Set(array));
375
- }
376
- function array2string(n) {
377
- if (Array.isArray(n)) {
378
- return distinct(n).join("-");
379
- }
380
- else {
381
- return n.toString();
382
- }
383
- }
1
+ /**
2
+ * 検索ヘルパー
3
+ * @class SearchBuilder
4
+ */
5
+ export default class SearchBuilder {
6
+ /**
7
+ * constructor
8
+ * @private
9
+ */
10
+ constructor(params = {}, api) {
11
+ this.params = params;
12
+ this.api = api;
13
+ }
14
+ /**
15
+ * a
16
+ * @return {SearchBuilder} this
17
+ */
18
+ word(word) {
19
+ this.set({ word: word });
20
+ return this;
21
+ }
22
+ /**
23
+ *
24
+ * @return {SearchBuilder} this
25
+ */
26
+ notWord(word) {
27
+ this.set({ notword: word });
28
+ return this;
29
+ }
30
+ /**
31
+ *
32
+ * @return {SearchBuilder} this
33
+ */
34
+ byTitle(bool = true) {
35
+ this.set({ title: bool ? 1 : 0 });
36
+ return this;
37
+ }
38
+ /**
39
+ *
40
+ * @return {SearchBuilder} this
41
+ */
42
+ byOutline(bool = true) {
43
+ this.set({ ex: bool ? 1 : 0 });
44
+ return this;
45
+ }
46
+ /**
47
+ *
48
+ * @return {SearchBuilder} this
49
+ */
50
+ byKeyword(bool = true) {
51
+ this.set({ keyword: bool ? 1 : 0 });
52
+ return this;
53
+ }
54
+ /**
55
+ *
56
+ * @return {SearchBuilder} this
57
+ */
58
+ byAuthor(bool = true) {
59
+ this.set({ wname: bool ? 1 : 0 });
60
+ return this;
61
+ }
62
+ /**
63
+ *
64
+ * @return {SearchBuilder} this
65
+ */
66
+ bigGenre(genre) {
67
+ this.set({ biggenre: array2string(genre) });
68
+ return this;
69
+ }
70
+ /**
71
+ *
72
+ * @return {SearchBuilder} this
73
+ */
74
+ notBigGenre(genre) {
75
+ this.set({ notbiggenre: array2string(genre) });
76
+ return this;
77
+ }
78
+ /**
79
+ *
80
+ * @return {SearchBuilder} this
81
+ */
82
+ genre(genre) {
83
+ this.set({ genre: array2string(genre) });
84
+ return this;
85
+ }
86
+ /**
87
+ *
88
+ * @return {SearchBuilder} this
89
+ */
90
+ notGenre(genre) {
91
+ this.set({ notgenre: array2string(genre) });
92
+ return this;
93
+ }
94
+ /**
95
+ *
96
+ * @return {SearchBuilder} this
97
+ */
98
+ userId(ids) {
99
+ this.set({ userid: array2string(ids) });
100
+ return this;
101
+ }
102
+ /**
103
+ *
104
+ * @return {SearchBuilder} this
105
+ */
106
+ isR15(bool = true) {
107
+ if (bool) {
108
+ this.set({ isr15: 1 });
109
+ }
110
+ else {
111
+ this.set({ notr15: 1 });
112
+ }
113
+ return this;
114
+ }
115
+ /**
116
+ *
117
+ * @return {SearchBuilder} this
118
+ */
119
+ isBL(bool = true) {
120
+ if (bool) {
121
+ this.set({ isbl: 1 });
122
+ }
123
+ else {
124
+ this.set({ notbl: 1 });
125
+ }
126
+ return this;
127
+ }
128
+ /**
129
+ *
130
+ * @return {SearchBuilder} this
131
+ */
132
+ isGL(bool = true) {
133
+ if (bool) {
134
+ this.set({ isgl: 1 });
135
+ }
136
+ else {
137
+ this.set({ notgl: 1 });
138
+ }
139
+ return this;
140
+ }
141
+ /**
142
+ *
143
+ * @return {SearchBuilder} this
144
+ */
145
+ isZankoku(bool = true) {
146
+ if (bool) {
147
+ this.set({ iszankoku: 1 });
148
+ }
149
+ else {
150
+ this.set({ notzankoku: 1 });
151
+ }
152
+ return this;
153
+ }
154
+ /**
155
+ *
156
+ * @return {SearchBuilder} this
157
+ */
158
+ isTensei(bool = true) {
159
+ if (bool) {
160
+ this.set({ istensei: 1 });
161
+ }
162
+ else {
163
+ this.set({ nottensei: 1 });
164
+ }
165
+ return this;
166
+ }
167
+ /**
168
+ *
169
+ * @return {SearchBuilder} this
170
+ */
171
+ isTenni(bool = true) {
172
+ if (bool) {
173
+ this.set({ istenni: 1 });
174
+ }
175
+ else {
176
+ this.set({ nottenni: 1 });
177
+ }
178
+ return this;
179
+ }
180
+ /**
181
+ *
182
+ * @return {SearchBuilder} this
183
+ */
184
+ isTT() {
185
+ this.set({ istt: 1 });
186
+ return this;
187
+ }
188
+ /**
189
+ *
190
+ * @return {SearchBuilder} this
191
+ */
192
+ length(length) {
193
+ this.set({ length: array2string(length) });
194
+ return this;
195
+ }
196
+ kaiwaritu(min, max) {
197
+ let n;
198
+ if (max != null) {
199
+ n = `${min}-${max}`;
200
+ }
201
+ else {
202
+ n = min;
203
+ }
204
+ this.set({ kaiwaritu: n });
205
+ return this;
206
+ }
207
+ /**
208
+ *
209
+ * @return {SearchBuilder} this
210
+ */
211
+ sasie(num) {
212
+ this.set({ sasie: array2string(num) });
213
+ return this;
214
+ }
215
+ /**
216
+ *
217
+ * @return {SearchBuilder} this
218
+ */
219
+ time(num) {
220
+ this.set({ time: array2string(num) });
221
+ return this;
222
+ }
223
+ /**
224
+ *
225
+ * @return {SearchBuilder} this
226
+ */
227
+ ncode(ncodes) {
228
+ this.set({ ncode: array2string(ncodes) });
229
+ return this;
230
+ }
231
+ /**
232
+ *
233
+ * @return {SearchBuilder} this
234
+ */
235
+ type(type) {
236
+ this.set({ type });
237
+ return this;
238
+ }
239
+ /**
240
+ *
241
+ * @return {SearchBuilder} this
242
+ */
243
+ buntai(buntai) {
244
+ this.set({ buntai: array2string(buntai) });
245
+ return this;
246
+ }
247
+ /**
248
+ *
249
+ * @return {SearchBuilder} this
250
+ */
251
+ isStop(bool = true) {
252
+ this.set({ stop: bool ? 1 : 0 });
253
+ return this;
254
+ }
255
+ /**
256
+ *
257
+ * @return {SearchBuilder} this
258
+ */
259
+ isPickup(bool = true) {
260
+ this.set({ ispickup: bool ? 1 : 0 });
261
+ return this;
262
+ }
263
+ lastUpdate(x, y) {
264
+ let date;
265
+ if (typeof x == "string") {
266
+ date = x;
267
+ }
268
+ else if (x instanceof Date && y instanceof Date) {
269
+ date = `${Math.floor(x.getTime() / 1000)}-${Math.floor(x.getTime() / 1000)}`;
270
+ }
271
+ else {
272
+ date = `${x}-${y}`;
273
+ }
274
+ this.set({ lastup: date });
275
+ return this;
276
+ }
277
+ /**
278
+ *
279
+ * @return {SearchBuilder} this
280
+ */
281
+ fields(fields) {
282
+ this.set({ of: array2string(fields) });
283
+ return this;
284
+ }
285
+ /**
286
+ *
287
+ * @return {SearchBuilder} this
288
+ */
289
+ limit(num) {
290
+ this.set({ lim: num });
291
+ return this;
292
+ }
293
+ /**
294
+ *
295
+ * @return {SearchBuilder} this
296
+ */
297
+ start(num) {
298
+ this.set({ st: num });
299
+ return this;
300
+ }
301
+ /**
302
+ *
303
+ * @return {SearchBuilder} this
304
+ */
305
+ page(no, count = 20) {
306
+ return this.limit(count).start(no * count);
307
+ }
308
+ opt(option) {
309
+ return this.set({ opt: option });
310
+ }
311
+ /**
312
+ * 出力順序を指定する。指定しない場合は新着順となります。
313
+ *
314
+ * @description
315
+ * allunique 閲覧者の多い順(未実装)
316
+ * favnovelcnt ブックマーク数の多い順
317
+ * reviewcnt レビュー数の多い順
318
+ * hyoka 総合評価の高い順
319
+ * hyokaasc 総合評価の低い順
320
+ * impressioncnt 感想の多い順
321
+ * hyokacnt 評価者数の多い順
322
+ * hyokacntasc 評価者数の少ない順
323
+ * weekly 週間ユニークユーザの多い順 毎週火曜日早朝リセット
324
+ * (前週の日曜日から土曜日分)
325
+ * lengthdesc 小説本文の文字数が多い順
326
+ * lengthasc 小説本文の文字数が少ない順
327
+ * ncodedesc Nコードが新しい順
328
+ * old 古い順
329
+ * @param {Order} order 出力順序
330
+ * @return {SearchBuilder} this
331
+ */
332
+ order(order) {
333
+ this.set({ order: order });
334
+ return this;
335
+ }
336
+ /**
337
+ * gzip圧縮する。
338
+ *
339
+ * 転送量上限を減らすためにも推奨
340
+ * @param {GzipLevel} level gzip圧縮レベル(1~5)
341
+ * @return {SearchBuilder} this
342
+ */
343
+ gzip(level) {
344
+ this.set({ gzip: level });
345
+ return this;
346
+ }
347
+ /**
348
+ * クエリパラメータをセットする
349
+ * @private
350
+ * @return {SearchBuilder} this
351
+ */
352
+ set(obj) {
353
+ this.params = Object.assign(Object.assign({}, this.params), obj);
354
+ return this;
355
+ }
356
+ /**
357
+ * クエリパラメータを削除する
358
+ * @private
359
+ * @return {SearchBuilder} this
360
+ */
361
+ unset(key) {
362
+ delete this.params[key];
363
+ return this;
364
+ }
365
+ /**
366
+ * なろう小説APIへの検索リクエストを実行する
367
+ * @returns {Promise<NarouSearchResults>} 検索結果
368
+ */
369
+ execute() {
370
+ return this.api.executeNovel(this.params);
371
+ }
372
+ }
373
+ function distinct(array) {
374
+ return Array.from(new Set(array));
375
+ }
376
+ function array2string(n) {
377
+ if (Array.isArray(n)) {
378
+ return distinct(n).join("-");
379
+ }
380
+ else {
381
+ return n.toString();
382
+ }
383
+ }
384
384
  //# sourceMappingURL=search-builder.js.map