@vbarbarosh/node-helpers 3.75.0 → 3.76.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 (367) hide show
  1. package/README.md +29 -3
  2. package/dist/browser.js +1 -2504
  3. package/package.json +31 -11
  4. package/src/HeartbeatServer.js +24 -3
  5. package/src/HeartbeatServer.md +33 -0
  6. package/src/array_chunk.js +1 -1
  7. package/src/array_chunk.md +8 -0
  8. package/src/array_chunk_balanced.md +14 -0
  9. package/src/array_fps.md +12 -0
  10. package/src/array_gcd.js +4 -2
  11. package/src/array_gcd.md +2 -1
  12. package/src/array_group.js +3 -3
  13. package/src/array_group.md +14 -0
  14. package/src/array_group_map.js +3 -3
  15. package/src/array_group_map.md +13 -0
  16. package/src/array_index.js +2 -2
  17. package/src/array_index.md +9 -0
  18. package/src/array_lcm.js +4 -2
  19. package/src/array_lcm.md +2 -1
  20. package/src/array_max.js +11 -4
  21. package/src/array_max.md +1 -1
  22. package/src/array_min.js +11 -4
  23. package/src/array_min.md +1 -1
  24. package/src/array_permutations.js +4 -0
  25. package/src/array_permutations.md +13 -0
  26. package/src/array_sort.js +7 -2
  27. package/src/array_sort.md +13 -0
  28. package/src/array_sort_other.js +8 -5
  29. package/src/array_sort_other.md +11 -0
  30. package/src/array_sum.js +2 -2
  31. package/src/array_sum.md +8 -0
  32. package/src/array_unique.js +2 -2
  33. package/src/array_unique_last.js +2 -2
  34. package/src/assert_valid_expires_at.md +10 -0
  35. package/src/clamp.md +9 -0
  36. package/src/cli-apps/watchdog.js +5 -0
  37. package/src/cli.js +3 -1
  38. package/src/cli.md +15 -0
  39. package/src/const_stream.md +7 -0
  40. package/src/const_type.md +5 -0
  41. package/src/countdown.js +22 -5
  42. package/src/countdown.md +21 -0
  43. package/src/crypto_decrypt_aes256.md +13 -0
  44. package/src/crypto_encrypt_aes256.md +13 -0
  45. package/src/crypto_hash_md5.md +10 -0
  46. package/src/crypto_hash_sha256.md +10 -0
  47. package/src/crypto_hmac_sha256.md +11 -0
  48. package/src/date_add_hours.md +8 -0
  49. package/src/date_add_milliseconds.md +4 -0
  50. package/src/date_add_minutes.md +4 -0
  51. package/src/date_add_months.md +13 -0
  52. package/src/date_add_seconds.md +4 -0
  53. package/src/date_diff_seconds.md +4 -0
  54. package/src/date_is_leap_year.md +9 -0
  55. package/src/escape_content_disposition.js +6 -3
  56. package/src/escape_content_disposition.md +13 -0
  57. package/src/escape_regexp.md +7 -0
  58. package/src/eta.js +7 -1
  59. package/src/eta.md +18 -0
  60. package/src/factorize_ms.js +3 -0
  61. package/src/factorize_ms.md +10 -0
  62. package/src/fastdl.js +14 -3
  63. package/src/fcmp_dates.md +12 -0
  64. package/src/fcmp_default.js +7 -0
  65. package/src/fcmp_default.md +29 -0
  66. package/src/fcmp_default_desc.js +4 -7
  67. package/src/fcmp_default_desc.md +10 -0
  68. package/src/fcmp_from_spec.md +13 -0
  69. package/src/fcmp_numbers.md +11 -0
  70. package/src/fcmp_tuples.md +17 -0
  71. package/src/fcmp_utf8_bin.md +14 -0
  72. package/src/fcmp_utf8_ci.md +14 -0
  73. package/src/fcmp_utf8_cs.md +15 -0
  74. package/src/fcmp_utf8_natural_bin.js +38 -0
  75. package/src/fcmp_utf8_natural_bin.md +8 -0
  76. package/src/fcmp_utf8_natural_ci.md +13 -0
  77. package/src/fcmp_utf8_natural_cs.md +13 -0
  78. package/src/fcmpx.md +26 -9
  79. package/src/filter1_from_spec.js +3 -3
  80. package/src/format_bytes.md +15 -0
  81. package/src/format_date.md +7 -0
  82. package/src/format_date_fs.md +7 -0
  83. package/src/format_date_human.md +6 -0
  84. package/src/format_date_ymd.md +6 -0
  85. package/src/format_error_report.js +3 -3
  86. package/src/format_error_report.md +12 -0
  87. package/src/format_kilo.md +13 -0
  88. package/src/format_ms.js +3 -2
  89. package/src/format_ms.md +12 -0
  90. package/src/format_ms2.js +6 -3
  91. package/src/format_ms2.md +12 -0
  92. package/src/format_ms3.js +3 -2
  93. package/src/format_ms3.md +12 -0
  94. package/src/format_percents.md +10 -0
  95. package/src/format_progress_bytes.md +13 -0
  96. package/src/format_progress_kilo.md +10 -0
  97. package/src/format_seconds.md +11 -0
  98. package/src/format_thousands.md +9 -0
  99. package/src/fs_append.md +7 -0
  100. package/src/fs_append_json.md +8 -0
  101. package/src/fs_append_utf8.md +6 -0
  102. package/src/fs_assert_file_exists.md +3 -0
  103. package/src/fs_assert_file_readable.js +1 -1
  104. package/src/fs_assert_file_readable.md +3 -0
  105. package/src/fs_assert_file_socket.md +2 -0
  106. package/src/fs_copy.md +7 -0
  107. package/src/fs_copy_excl.md +2 -0
  108. package/src/fs_exists.md +6 -0
  109. package/src/fs_fclose.md +5 -0
  110. package/src/fs_fi.js +13 -1
  111. package/src/fs_fi.md +11 -0
  112. package/src/fs_file_md5.md +8 -0
  113. package/src/fs_find.md +7 -0
  114. package/src/fs_fopen.md +6 -0
  115. package/src/fs_fread.js +2 -2
  116. package/src/fs_fread.md +11 -0
  117. package/src/fs_fsize.md +2 -0
  118. package/src/fs_fstat.md +2 -0
  119. package/src/fs_fwrite.js +2 -2
  120. package/src/fs_fwrite.md +9 -0
  121. package/src/fs_list.md +5 -0
  122. package/src/fs_list_deep.md +5 -0
  123. package/src/fs_ls.md +2 -0
  124. package/src/fs_lsr.md +4 -0
  125. package/src/fs_lstat.md +3 -0
  126. package/src/fs_mkdir.md +3 -0
  127. package/src/fs_mkdirp.js +3 -30
  128. package/src/fs_mkdirp.md +7 -0
  129. package/src/fs_path_basename.md +2 -0
  130. package/src/fs_path_dirname.md +2 -0
  131. package/src/fs_path_extname.md +9 -0
  132. package/src/fs_path_join.md +2 -0
  133. package/src/fs_path_relative.md +2 -0
  134. package/src/fs_path_resolve.md +2 -0
  135. package/src/fs_path_tempdir.md +2 -0
  136. package/src/fs_path_untildify.md +8 -0
  137. package/src/fs_read.md +3 -0
  138. package/src/fs_read_buffer.md +5 -0
  139. package/src/fs_read_json.md +6 -0
  140. package/src/fs_read_lines.md +7 -0
  141. package/src/fs_read_stream.md +2 -0
  142. package/src/fs_read_utf8.md +5 -0
  143. package/src/fs_readdir.md +3 -0
  144. package/src/fs_readlink.md +6 -0
  145. package/src/fs_rename.md +6 -0
  146. package/src/fs_rm.md +4 -0
  147. package/src/fs_rmdir.md +3 -0
  148. package/src/fs_rmf.md +2 -0
  149. package/src/fs_rmrf.md +8 -0
  150. package/src/fs_sha256.js +16 -0
  151. package/src/fs_sha256.md +9 -0
  152. package/src/fs_size.js +2 -2
  153. package/src/fs_size.md +6 -0
  154. package/src/fs_stat.md +2 -0
  155. package/src/fs_tempdir.js +20 -5
  156. package/src/fs_touch.md +6 -0
  157. package/src/fs_walk.js +2 -2
  158. package/src/fs_walk.md +14 -0
  159. package/src/fs_write.md +3 -0
  160. package/src/fs_write_json.md +7 -0
  161. package/src/fs_write_stream.md +2 -0
  162. package/src/gettype.md +13 -0
  163. package/src/http_delete.md +11 -0
  164. package/src/http_get_blob.md +8 -0
  165. package/src/http_get_buffer.md +10 -0
  166. package/src/http_get_file.js +8 -8
  167. package/src/http_get_file.md +14 -0
  168. package/src/http_get_json.md +10 -0
  169. package/src/http_get_stream.md +14 -0
  170. package/src/http_get_stream_range.js +27 -9
  171. package/src/http_get_stream_range.md +22 -0
  172. package/src/http_get_utf8.md +9 -0
  173. package/src/http_head.md +9 -0
  174. package/src/http_patch_json.md +10 -0
  175. package/src/http_post_json.md +11 -0
  176. package/src/http_post_multipart.md +15 -0
  177. package/src/http_post_urlencoded.md +11 -0
  178. package/src/http_put_buffer.md +9 -0
  179. package/src/http_put_file.js +9 -6
  180. package/src/http_put_file.md +16 -0
  181. package/src/http_put_json.md +11 -0
  182. package/src/http_put_utf8.md +9 -0
  183. package/src/http_range_parse.js +6 -3
  184. package/src/http_range_parse.md +18 -0
  185. package/src/http_stream_range.js +35 -22
  186. package/src/http_stream_range.md +29 -0
  187. package/src/identity.md +2 -0
  188. package/src/ignore.md +2 -0
  189. package/src/json_stringify_safe.md +10 -0
  190. package/src/json_stringify_stable.md +9 -0
  191. package/src/logger.js +2 -3
  192. package/src/logger.md +15 -0
  193. package/src/make_progress.js +8 -5
  194. package/src/make_progress.md +20 -0
  195. package/src/math_gcd.js +2 -1
  196. package/src/mongo_stream_upsert.js +10 -3
  197. package/src/mongo_stream_upsert.md +17 -0
  198. package/src/mongo_stream_write.js +10 -3
  199. package/src/mongo_stream_write.md +16 -0
  200. package/src/msval.md +10 -0
  201. package/src/now_fs.md +7 -0
  202. package/src/now_human.md +6 -0
  203. package/src/object_defaults.md +11 -0
  204. package/src/object_schema.js +2 -1
  205. package/src/object_schema.md +12 -0
  206. package/src/object_walk_preorder.md +16 -0
  207. package/src/parallel.js +23 -10
  208. package/src/parse_bytes.js +4 -2
  209. package/src/parse_bytes.md +15 -0
  210. package/src/parse_hms.js +1 -1
  211. package/src/parse_http_content_range.js +9 -5
  212. package/src/parse_http_content_range.md +16 -0
  213. package/src/perf_end_human.md +10 -0
  214. package/src/perf_end_ms.md +8 -0
  215. package/src/perf_measure.md +10 -0
  216. package/src/perf_measure_human.md +8 -0
  217. package/src/perf_start.md +9 -0
  218. package/src/pgid_exists.md +6 -0
  219. package/src/pgid_kill_grace.js +1 -1
  220. package/src/pgid_kill_grace.md +15 -0
  221. package/src/pid_exists.md +5 -0
  222. package/src/pid_kill_grace.js +1 -1
  223. package/src/pid_kill_grace.md +14 -0
  224. package/src/plural.md +13 -0
  225. package/src/random_hex.md +9 -0
  226. package/src/random_int.md +8 -0
  227. package/src/range.js +4 -2
  228. package/src/range.md +2 -0
  229. package/src/redis_connect.js +1 -1
  230. package/src/redis_connect.md +10 -0
  231. package/src/redis_lshift.md +14 -0
  232. package/src/redis_poll.js +1 -0
  233. package/src/redis_poll.md +17 -0
  234. package/src/redis_poll_zshift_callback_rpush.js +1 -2
  235. package/src/redis_poll_zshift_callback_rpush.md +17 -0
  236. package/src/redis_poll_zshift_spawn_rpush.js +2 -1
  237. package/src/redis_poll_zshift_spawn_rpush.md +20 -0
  238. package/src/redis_zshift.md +14 -0
  239. package/src/round.js +7 -8
  240. package/src/round.md +15 -0
  241. package/src/sanitize_dash_name.md +13 -0
  242. package/src/sanitize_filename.md +9 -0
  243. package/src/sanitize_var_name.md +14 -0
  244. package/src/sftp_get_file_info.js +2 -2
  245. package/src/sftp_get_file_info.md +14 -0
  246. package/src/sftp_get_stream_range.js +32 -22
  247. package/src/sftp_get_stream_range.md +20 -0
  248. package/src/shell_curl_progress.js +2 -1
  249. package/src/shell_curl_progress.md +17 -0
  250. package/src/shell_lines.js +2 -2
  251. package/src/shell_lines.md +1 -1
  252. package/src/shell_spawn.js +7 -0
  253. package/src/shell_ytdlp_progress.js +2 -1
  254. package/src/shell_ytdlp_progress.md +17 -0
  255. package/src/str_camel_to_snake.md +11 -0
  256. package/src/str_parse_kv.md +11 -0
  257. package/src/stream_curl_progress.md +14 -0
  258. package/src/stream_data_ln.js +7 -1
  259. package/src/stream_discard.md +8 -0
  260. package/src/stream_group.md +3 -0
  261. package/src/stream_gunzip.md +7 -0
  262. package/src/stream_hash.md +10 -0
  263. package/src/stream_map.js +8 -1
  264. package/src/stream_map_parallel.js +9 -1
  265. package/src/stream_md5.md +9 -0
  266. package/src/stream_multiplex.js +11 -0
  267. package/src/stream_multiplex.md +16 -0
  268. package/src/stream_through.md +3 -0
  269. package/src/stream_transform.md +2 -0
  270. package/src/stream_xml_analyze.js +9 -1
  271. package/src/stream_xml_parse.js +9 -1
  272. package/src/stream_ytdlp_progress.js +1 -1
  273. package/src/stream_ytdlp_progress.md +18 -0
  274. package/src/strtr.js +15 -5
  275. package/src/strtr.md +11 -0
  276. package/src/urlclean.js +9 -2
  277. package/src/urlmod.js +5 -0
  278. package/src/urlparts.md +17 -0
  279. package/src/wait_while.js +1 -1
  280. package/src/wait_while.md +1 -1
  281. package/src/HeartbeatServer.test.js +0 -31
  282. package/src/array_chunk.test.js +0 -24
  283. package/src/array_chunk_balanced.test.js +0 -37
  284. package/src/array_fps.test.js +0 -72
  285. package/src/array_gcd.test.js +0 -10
  286. package/src/array_index.test.js +0 -14
  287. package/src/array_lcm.test.js +0 -12
  288. package/src/array_max.test.js +0 -20
  289. package/src/array_min.test.js +0 -20
  290. package/src/array_permutations.test.js +0 -20
  291. package/src/array_sort.test.js +0 -85
  292. package/src/array_sort_other.test.js +0 -9
  293. package/src/array_sum.test.js +0 -11
  294. package/src/cli-apps/watchdog.d/connect_close.js +0 -17
  295. package/src/cli-apps/watchdog.d/connect_close2.js +0 -20
  296. package/src/cli-apps/watchdog.d/connect_close3.js +0 -25
  297. package/src/cli-apps/watchdog.d/connect_no_ping.js +0 -13
  298. package/src/cli-apps/watchdog.d/early_exit.js +0 -7
  299. package/src/cli-apps/watchdog.d/flood.js +0 -13
  300. package/src/cli-apps/watchdog.d/flood2.js +0 -15
  301. package/src/cli-apps/watchdog.d/hang.js +0 -8
  302. package/src/cli-apps/watchdog.d/huge_delay.js +0 -18
  303. package/src/cli-apps/watchdog.d/ignore_sigterm.js +0 -29
  304. package/src/cli-apps/watchdog.d/late_heartbeat.js +0 -21
  305. package/src/cli-apps/watchdog.d/my-exit-after-2-pings.js +0 -16
  306. package/src/cli-apps/watchdog.d/my-happy-path.js +0 -16
  307. package/src/cli-apps/watchdog.d/my-ignore-sigterm.js +0 -22
  308. package/src/cli-apps/watchdog.d/my-never-ping.js +0 -15
  309. package/src/cli-apps/watchdog.d/no_heartbeat.js +0 -5
  310. package/src/cli-apps/watchdog.d/ok.js +0 -17
  311. package/src/cli-apps/watchdog.d/quick-exit-after-2-pings.js +0 -15
  312. package/src/cli-apps/watchdog.d/quick-hang-after-1-ping.js +0 -15
  313. package/src/cli-apps/watchdog.d/spawn_children.js +0 -14
  314. package/src/cli-apps/watchdog.test.js +0 -48
  315. package/src/crypto_encrypt_aes256.test.js +0 -10
  316. package/src/crypto_hash_sha256.test.js +0 -10
  317. package/src/date_add_months.test.js +0 -40
  318. package/src/date_is_leap_year.test.js +0 -14
  319. package/src/escape_content_disposition.test.js +0 -22
  320. package/src/fcmp_from_spec.test.js +0 -91
  321. package/src/fcmpx.test.js +0 -173
  322. package/src/filter1_from_spec.test.js +0 -31
  323. package/src/format_bytes.test.js +0 -22
  324. package/src/format_error_report.d/src/1.js +0 -26
  325. package/src/format_error_report.d/src/2.js +0 -29
  326. package/src/format_kilo.test.js +0 -25
  327. package/src/format_ms.test.js +0 -33
  328. package/src/format_ms2.test.js +0 -33
  329. package/src/format_ms3.test.js +0 -33
  330. package/src/format_percents.test.js +0 -22
  331. package/src/format_progress_bytes.test.js +0 -19
  332. package/src/format_progress_kilo.test.js +0 -19
  333. package/src/format_seconds.test.js +0 -42
  334. package/src/format_thousands.test.js +0 -28
  335. package/src/fs_file_md5.test.js +0 -11
  336. package/src/fs_mkdirp.test.js +0 -24
  337. package/src/fs_path_extname.test.js +0 -22
  338. package/src/gettype.test.js +0 -27
  339. package/src/object_schema.test.js +0 -15
  340. package/src/object_walk_preorder.test.js +0 -17
  341. package/src/parallel.test.js +0 -11
  342. package/src/parse_bytes.test.js +0 -21
  343. package/src/parse_hms.test.js +0 -32
  344. package/src/parse_http_content_range.test.js +0 -14
  345. package/src/pid_kill_grace.d/ignore-sigterm-for-10ms.js +0 -33
  346. package/src/pid_kill_grace.d/ignore-sigterm.js +0 -22
  347. package/src/pid_kill_grace.test.js +0 -63
  348. package/src/ping_socket.test.js +0 -58
  349. package/src/plural.test.js +0 -20
  350. package/src/range.test.js +0 -41
  351. package/src/redis_lshift.test.js +0 -57
  352. package/src/redis_zshift.test.js +0 -58
  353. package/src/round.test.js +0 -56
  354. package/src/sanitize_dash_name.test.js +0 -59
  355. package/src/sanitize_var_name.test.js +0 -39
  356. package/src/shell_spawn.test.js +0 -30
  357. package/src/str_camel_to_snake.test.js +0 -17
  358. package/src/stream_curl_progress.d/basic +0 -3
  359. package/src/stream_curl_progress.d/basic.json +0 -42
  360. package/src/stream_curl_progress.test.js +0 -17
  361. package/src/stream_data_ln.test.js +0 -24
  362. package/src/stream_map_parallel.test.js +0 -26
  363. package/src/stream_multiplex.test.js +0 -67
  364. package/src/stream_strpbrk.test.js +0 -29
  365. package/src/urlclean.test.js +0 -18
  366. package/src/urlmod.test.js +0 -40
  367. package/src/urlparts.test.js +0 -294
@@ -1,59 +0,0 @@
1
- const assert = require('assert');
2
- const sanitize_dash_name = require('./sanitize_dash_name');
3
-
4
- const items = [
5
- ['', ''],
6
- ['', '.'],
7
- ['', 'привет'],
8
- ['1-2-3', '1-2-3'],
9
- ['1-2-3', '1.2.3'],
10
- ['1000-stories', '1000 Stories'],
11
- ['1800', '1800'],
12
- ['3-a', '3-A'],
13
- ['43', '43'],
14
- ['600-d', '600+D'],
15
- ['9-lives', '9 Lives'],
16
- ['a-c-d', 'A, C, D'],
17
- ['a-f', 'A F'],
18
- ['accua-aseptic-solucion', 'Accua Aséptic Solución'],
19
- ['acido-acetilsalicilico', 'Ácido Acetilsalicílico'],
20
- ['acido-nalidixico-fenazopiridina', 'Ácido Nalidixico-Fenazopiridina'],
21
- ['aeropostale', 'Aéropostale'],
22
- ['arnica-nartex', 'Árnica Nártex'],
23
- ['art-n-chef', 'Art \'n Chef'],
24
- ['b-a-r-t-e-r', 'B.A.R.T.E.R.'],
25
- ['b-oost', 'b:oost'],
26
- ['betametasona-clotrimazol-gentamicina', 'Betametasona - Clotrimazol - Gentamicina'],
27
- ['black-decker', 'Black & Decker'],
28
- ['black-decker', 'Black + Decker'],
29
- ['black-panther', 'Black Panther'],
30
- ['black-white', 'Black & White'],
31
- ['blanca-nieves', 'Blanca Nieves'],
32
- ['de-rancho', 'de Rancho'],
33
- ['del-valle', 'del Valle'],
34
- ['exportacion-selecto', 'Exportación Selecto'],
35
- ['extra', 'Extra'],
36
- ['ezetimiba-simvastatina', 'Ezetimiba Simvastatina'],
37
- ['facicam-gel-90g', 'FACICAM GEL 90G'],
38
- ['folios', 'FOLIOS'],
39
- ['fresh-garden', 'FRESH GARDEN'],
40
- ['gi-valproato-de-magnesio', '(GI) Valproato de Magnesio'],
41
- ['itrac-100mg-c-f-15c', 'ITRAC 100MG C/F 15C'],
42
- ['m-m-s', 'M&M\'s'],
43
- ['m-m-s', 'M&M´s'],
44
- ['meticel-0-5', 'Meticel 0.5 %'],
45
- ['meticel-2', 'Meticel 2%'],
46
- ['opera-prima', 'Ópera Prima'],
47
- ['oxido-de-zinc', 'Óxido de Zinc'],
48
- ['r-u-m-b-a', 'r u m b a'],
49
- ['r-u-m-b-a', 'r_u_m_b_a'],
50
- ['ssh-authorized-keys', '~/.\u0000ssh/authorized_keys";\n'],
51
- ];
52
-
53
- describe('sanitize_dash_name', function () {
54
- items.forEach(function ([expected, input],) {
55
- it(`${input} → ${expected}`, function () {
56
- assert.deepStrictEqual(sanitize_dash_name(input), expected);
57
- });
58
- });
59
- });
@@ -1,39 +0,0 @@
1
- const assert = require('assert');
2
- const sanitize_var_name = require('./sanitize_var_name');
3
-
4
- const items = [
5
- ['', '_'],
6
- [' ', '_'],
7
- [' ', '_'],
8
- ['Product ID', 'product_id'],
9
- ['Product-ID', 'product_id'],
10
- ['Image URL', 'image_url'],
11
- ['Ópera Prima', 'opera_prima'],
12
- ['1000-stories', '_1000_stories'],
13
- ['A, C, D', 'a_c_d'],
14
- ['@odata.etag', 'odata_etag'],
15
- ['ItemInternalId', 'item_internal_id'],
16
- ['UPC', 'upc'],
17
- ['Sale_price', 'sale_price'],
18
- ['% de disponibilidad de tiendas', 'de_disponibilidad_de_tiendas'],
19
- ['%Tiendas con precio moda', 'tiendas_con_precio_moda'],
20
-
21
- // https://stackoverflow.com/questions/30521224/javascript-convert-pascalcase-to-underscore-case-snake-case
22
- ['TypeOfData.AlphaBeta', 'type_of_data_alpha_beta'],
23
- ['thisISDifficult', 'this_is_difficult'],
24
- ['thisISNT', 'this_isnt'],
25
- ['thisISNT', 'this_isnt'],
26
- ['somethingEasyLikeThis', 'something_easy_like_this'],
27
-
28
- // https://github.com/Advanon/sanitize-s3-objectkey
29
- // https://github.com/hamxabaig/s3-filename
30
- // ['some 漢字 ćööł % #fíłéñàmé.jpg', 'some_cool_filename_jpg'],
31
- ];
32
-
33
- describe('sanitize_var_name', function () {
34
- items.forEach(function ([input, expected],) {
35
- it(`${input === '' ? '☒' : input} → ${expected}`, function () {
36
- assert.deepStrictEqual(sanitize_var_name(input), expected);
37
- });
38
- });
39
- });
@@ -1,30 +0,0 @@
1
- const Promise = require('bluebird');
2
- const assert = require('assert');
3
- const pid_exists = require('./pid_exists');
4
- const shell_spawn = require('./shell_spawn');
5
-
6
- describe('shell_spawn', function () {
7
- describe('Happy Path', function () {
8
- it('basic', async function () {
9
- await shell_spawn(['true']).promise().timeout(100);
10
- });
11
- it('init + promise', async function () {
12
- const proc = await shell_spawn(['true']).init();
13
- await proc.promise().timeout(100);
14
- });
15
- });
16
- it('🏎️ race condition: proc.promise is called after process was terminated', async function () {
17
- const proc = shell_spawn(['true']);
18
- assert(pid_exists(proc.pid));
19
- await Promise.delay(10);
20
- assert(!pid_exists(proc.pid));
21
- await proc.promise().timeout(100);
22
- });
23
- it('should throw when init fails', async function () {
24
- await assert.rejects(shell_spawn(['ggg111']).init(), /^Error: spawn ggg111 ENOENT$/);
25
- });
26
- it('should throw when process exists with non zero code', async function () {
27
- const proc = await shell_spawn(['false']).init();
28
- await assert.rejects(proc.promise().timeout(100), /^Error: Process terminated with code 1 and signal null$/);
29
- });
30
- });
@@ -1,17 +0,0 @@
1
- const assert = require('assert');
2
- const str_camel_to_snake = require('./str_camel_to_snake');
3
-
4
- const items = [
5
- ['UPC', 'upc'],
6
- ['CamelCase', 'camel_case'],
7
- ['SomeUPCCode', 'some_upc_code'],
8
- ['XMLHTTPRequest', 'xmlhttp_request'],
9
- ];
10
-
11
- describe('str_camel_to_snake', function () {
12
- items.forEach(function ([input, expected],) {
13
- it(`${input === '' ? '☒' : input} → ${expected}`, function () {
14
- assert.deepStrictEqual(str_camel_to_snake(input), expected);
15
- });
16
- });
17
- });
@@ -1,3 +0,0 @@
1
- % Total % Received % Xferd Average Speed Time Time Time Current
2
- Dload Upload Total Spent Left Speed
3
-
4
  0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
5
1
  2 390k 2 10934 0 0 10234 0 0:00:39 0:00:01 0:00:38 10237
6
2
  5 390k 5 21877 0 0 10569 0 0:00:37 0:00:02 0:00:35 10573
7
3
  8 390k 8 32125 0 0 10241 0 0:00:39 0:00:03 0:00:36 10243
8
4
  10 390k 10 43059 0 0 10406 0 0:00:38 0:00:04 0:00:34 10408
9
5
  14 390k 14 56853 0 0 10922 0 0:00:36 0:00:05 0:00:31 10922
10
6
  17 390k 17 69113 0 0 10548 0 0:00:37 0:00:06 0:00:31 10610
11
7
  20 390k 20 81782 0 0 10552 0 0:00:37 0:00:07 0:00:30 10546
12
8
  20 390k 20 81782 0 0 10239 0 0:00:39 0:00:07 0:00:32 10238
13
9
  23 390k 23 94460 0 0 10509 0 0:00:38 0:00:08 0:00:30 10598
14
10
  26 390k 26 103k 0 0 10378 0 0:00:38 0:00:10 0:00:28 9814
15
11
  29 390k 29 115k 0 0 10455 0 0:00:38 0:00:11 0:00:27 10325
16
12
  32 390k 32 127k 0 0 10352 0 0:00:38 0:00:12 0:00:26 10032
17
13
  35 390k 35 139k 0 0 10418 0 0:00:38 0:00:13 0:00:25 10667
18
14
  35 390k 35 139k 0 0 10241 0 0:00:39 0:00:13 0:00:26 9754
19
15
  39 390k 39 152k 0 0 10402 0 0:00:38 0:00:14 0:00:24 10456
20
16
  41 390k 41 163k 0 0 10327 0 0:00:38 0:00:16 0:00:22 10028
21
17
  45 390k 45 175k 0 0 10381 0 0:00:38 0:00:17 0:00:21 10456
22
18
  48 390k 48 188k 0 0 10371 0 0:00:38 0:00:18 0:00:20 10238
23
19
  51 390k 51 199k 0 0 10311 0 0:00:38 0:00:19 0:00:19 10479
24
20
  51 390k 51 199k 0 0 10240 0 0:00:39 0:00:19 0:00:20 9752
25
21
  54 390k 54 211k 0 0 10356 0 0:00:38 0:00:20 0:00:18 10456
26
22
  57 390k 57 223k 0 0 10304 0 0:00:38 0:00:22 0:00:16 10030
27
23
  61 390k 61 239k 0 0 10503 0 0:00:38 0:00:23 0:00:15 11020
28
24
  65 390k 65 255k 0 0 10487 0 0:00:38 0:00:24 0:00:14 11171
29
25
  65 390k 65 255k 0 0 10241 0 0:00:39 0:00:25 0:00:14 10242
30
26
  69 390k 69 271k 0 0 10473 0 0:00:38 0:00:26 0:00:12 10912
31
27
  69 390k 69 271k 0 0 10240 0 0:00:39 0:00:27 0:00:12 9952
32
28
  73 390k 73 287k 0 0 10458 0 0:00:38 0:00:28 0:00:10 10234
33
29
  77 390k 77 303k 0 0 10448 0 0:00:38 0:00:29 0:00:09 10245
34
30
  77 390k 77 303k 0 0 10241 0 0:00:39 0:00:30 0:00:09 10241
35
31
  81 390k 81 319k 0 0 10436 0 0:00:38 0:00:31 0:00:07 10231
36
32
  85 390k 85 335k 0 0 10427 0 0:00:38 0:00:32 0:00:06 11303
37
33
  85 390k 85 335k 0 0 10240 0 0:00:39 0:00:33 0:00:06 9110
38
34
  90 390k 90 351k 0 0 10418 0 0:00:38 0:00:34 0:00:04 10231
39
35
  90 390k 90 351k 0 0 10241 0 0:00:39 0:00:35 0:00:04 10240
40
36
  94 390k 94 367k 0 0 10411 0 0:00:38 0:00:36 0:00:02 10248
41
37
  98 390k 98 383k 0 0 10403 0 0:00:38 0:00:37 0:00:01 10236
42
38
  98 390k 98 383k 0 0 10240 0 0:00:39 0:00:38 0:00:01 10238
@@ -1,42 +0,0 @@
1
- [
2
- {"perc":"0","done":"0","total":"0","perc2":"0","recv":"0","perc3":"0","transferred":"0","speed_down":"0","speed_up":"0","time_total":"~","duration":"~","eta":"~","speed":"0"},
3
- {"perc":"2","done":"10934","total":"390k","perc2":"2","recv":"10934","perc3":"0","transferred":"0","speed_down":"10234","speed_up":"0","time_total":"0:00:39","duration":"0:00:01","eta":"0:00:38","speed":"10237"},
4
- {"perc":"5","done":"21877","total":"390k","perc2":"5","recv":"21877","perc3":"0","transferred":"0","speed_down":"10569","speed_up":"0","time_total":"0:00:37","duration":"0:00:02","eta":"0:00:35","speed":"10573"},
5
- {"perc":"8","done":"32125","total":"390k","perc2":"8","recv":"32125","perc3":"0","transferred":"0","speed_down":"10241","speed_up":"0","time_total":"0:00:39","duration":"0:00:03","eta":"0:00:36","speed":"10243"},
6
- {"perc":"10","done":"43059","total":"390k","perc2":"10","recv":"43059","perc3":"0","transferred":"0","speed_down":"10406","speed_up":"0","time_total":"0:00:38","duration":"0:00:04","eta":"0:00:34","speed":"10408"},
7
- {"perc":"14","done":"56853","total":"390k","perc2":"14","recv":"56853","perc3":"0","transferred":"0","speed_down":"10922","speed_up":"0","time_total":"0:00:36","duration":"0:00:05","eta":"0:00:31","speed":"10922"},
8
- {"perc":"17","done":"69113","total":"390k","perc2":"17","recv":"69113","perc3":"0","transferred":"0","speed_down":"10548","speed_up":"0","time_total":"0:00:37","duration":"0:00:06","eta":"0:00:31","speed":"10610"},
9
- {"perc":"20","done":"81782","total":"390k","perc2":"20","recv":"81782","perc3":"0","transferred":"0","speed_down":"10552","speed_up":"0","time_total":"0:00:37","duration":"0:00:07","eta":"0:00:30","speed":"10546"},
10
- {"perc":"20","done":"81782","total":"390k","perc2":"20","recv":"81782","perc3":"0","transferred":"0","speed_down":"10239","speed_up":"0","time_total":"0:00:39","duration":"0:00:07","eta":"0:00:32","speed":"10238"},
11
- {"perc":"23","done":"94460","total":"390k","perc2":"23","recv":"94460","perc3":"0","transferred":"0","speed_down":"10509","speed_up":"0","time_total":"0:00:38","duration":"0:00:08","eta":"0:00:30","speed":"10598"},
12
- {"perc":"26","done":"103k","total":"390k","perc2":"26","recv":"103k","perc3":"0","transferred":"0","speed_down":"10378","speed_up":"0","time_total":"0:00:38","duration":"0:00:10","eta":"0:00:28","speed":"9814"},
13
- {"perc":"29","done":"115k","total":"390k","perc2":"29","recv":"115k","perc3":"0","transferred":"0","speed_down":"10455","speed_up":"0","time_total":"0:00:38","duration":"0:00:11","eta":"0:00:27","speed":"10325"},
14
- {"perc":"32","done":"127k","total":"390k","perc2":"32","recv":"127k","perc3":"0","transferred":"0","speed_down":"10352","speed_up":"0","time_total":"0:00:38","duration":"0:00:12","eta":"0:00:26","speed":"10032"},
15
- {"perc":"35","done":"139k","total":"390k","perc2":"35","recv":"139k","perc3":"0","transferred":"0","speed_down":"10418","speed_up":"0","time_total":"0:00:38","duration":"0:00:13","eta":"0:00:25","speed":"10667"},
16
- {"perc":"35","done":"139k","total":"390k","perc2":"35","recv":"139k","perc3":"0","transferred":"0","speed_down":"10241","speed_up":"0","time_total":"0:00:39","duration":"0:00:13","eta":"0:00:26","speed":"9754"},
17
- {"perc":"39","done":"152k","total":"390k","perc2":"39","recv":"152k","perc3":"0","transferred":"0","speed_down":"10402","speed_up":"0","time_total":"0:00:38","duration":"0:00:14","eta":"0:00:24","speed":"10456"},
18
- {"perc":"41","done":"163k","total":"390k","perc2":"41","recv":"163k","perc3":"0","transferred":"0","speed_down":"10327","speed_up":"0","time_total":"0:00:38","duration":"0:00:16","eta":"0:00:22","speed":"10028"},
19
- {"perc":"45","done":"175k","total":"390k","perc2":"45","recv":"175k","perc3":"0","transferred":"0","speed_down":"10381","speed_up":"0","time_total":"0:00:38","duration":"0:00:17","eta":"0:00:21","speed":"10456"},
20
- {"perc":"48","done":"188k","total":"390k","perc2":"48","recv":"188k","perc3":"0","transferred":"0","speed_down":"10371","speed_up":"0","time_total":"0:00:38","duration":"0:00:18","eta":"0:00:20","speed":"10238"},
21
- {"perc":"51","done":"199k","total":"390k","perc2":"51","recv":"199k","perc3":"0","transferred":"0","speed_down":"10311","speed_up":"0","time_total":"0:00:38","duration":"0:00:19","eta":"0:00:19","speed":"10479"},
22
- {"perc":"51","done":"199k","total":"390k","perc2":"51","recv":"199k","perc3":"0","transferred":"0","speed_down":"10240","speed_up":"0","time_total":"0:00:39","duration":"0:00:19","eta":"0:00:20","speed":"9752"},
23
- {"perc":"54","done":"211k","total":"390k","perc2":"54","recv":"211k","perc3":"0","transferred":"0","speed_down":"10356","speed_up":"0","time_total":"0:00:38","duration":"0:00:20","eta":"0:00:18","speed":"10456"},
24
- {"perc":"57","done":"223k","total":"390k","perc2":"57","recv":"223k","perc3":"0","transferred":"0","speed_down":"10304","speed_up":"0","time_total":"0:00:38","duration":"0:00:22","eta":"0:00:16","speed":"10030"},
25
- {"perc":"61","done":"239k","total":"390k","perc2":"61","recv":"239k","perc3":"0","transferred":"0","speed_down":"10503","speed_up":"0","time_total":"0:00:38","duration":"0:00:23","eta":"0:00:15","speed":"11020"},
26
- {"perc":"65","done":"255k","total":"390k","perc2":"65","recv":"255k","perc3":"0","transferred":"0","speed_down":"10487","speed_up":"0","time_total":"0:00:38","duration":"0:00:24","eta":"0:00:14","speed":"11171"},
27
- {"perc":"65","done":"255k","total":"390k","perc2":"65","recv":"255k","perc3":"0","transferred":"0","speed_down":"10241","speed_up":"0","time_total":"0:00:39","duration":"0:00:25","eta":"0:00:14","speed":"10242"},
28
- {"perc":"69","done":"271k","total":"390k","perc2":"69","recv":"271k","perc3":"0","transferred":"0","speed_down":"10473","speed_up":"0","time_total":"0:00:38","duration":"0:00:26","eta":"0:00:12","speed":"10912"},
29
- {"perc":"69","done":"271k","total":"390k","perc2":"69","recv":"271k","perc3":"0","transferred":"0","speed_down":"10240","speed_up":"0","time_total":"0:00:39","duration":"0:00:27","eta":"0:00:12","speed":"9952"},
30
- {"perc":"73","done":"287k","total":"390k","perc2":"73","recv":"287k","perc3":"0","transferred":"0","speed_down":"10458","speed_up":"0","time_total":"0:00:38","duration":"0:00:28","eta":"0:00:10","speed":"10234"},
31
- {"perc":"77","done":"303k","total":"390k","perc2":"77","recv":"303k","perc3":"0","transferred":"0","speed_down":"10448","speed_up":"0","time_total":"0:00:38","duration":"0:00:29","eta":"0:00:09","speed":"10245"},
32
- {"perc":"77","done":"303k","total":"390k","perc2":"77","recv":"303k","perc3":"0","transferred":"0","speed_down":"10241","speed_up":"0","time_total":"0:00:39","duration":"0:00:30","eta":"0:00:09","speed":"10241"},
33
- {"perc":"81","done":"319k","total":"390k","perc2":"81","recv":"319k","perc3":"0","transferred":"0","speed_down":"10436","speed_up":"0","time_total":"0:00:38","duration":"0:00:31","eta":"0:00:07","speed":"10231"},
34
- {"perc":"85","done":"335k","total":"390k","perc2":"85","recv":"335k","perc3":"0","transferred":"0","speed_down":"10427","speed_up":"0","time_total":"0:00:38","duration":"0:00:32","eta":"0:00:06","speed":"11303"},
35
- {"perc":"85","done":"335k","total":"390k","perc2":"85","recv":"335k","perc3":"0","transferred":"0","speed_down":"10240","speed_up":"0","time_total":"0:00:39","duration":"0:00:33","eta":"0:00:06","speed":"9110"},
36
- {"perc":"90","done":"351k","total":"390k","perc2":"90","recv":"351k","perc3":"0","transferred":"0","speed_down":"10418","speed_up":"0","time_total":"0:00:38","duration":"0:00:34","eta":"0:00:04","speed":"10231"},
37
- {"perc":"90","done":"351k","total":"390k","perc2":"90","recv":"351k","perc3":"0","transferred":"0","speed_down":"10241","speed_up":"0","time_total":"0:00:39","duration":"0:00:35","eta":"0:00:04","speed":"10240"},
38
- {"perc":"94","done":"367k","total":"390k","perc2":"94","recv":"367k","perc3":"0","transferred":"0","speed_down":"10411","speed_up":"0","time_total":"0:00:38","duration":"0:00:36","eta":"0:00:02","speed":"10248"},
39
- {"perc":"98","done":"383k","total":"390k","perc2":"98","recv":"383k","perc3":"0","transferred":"0","speed_down":"10403","speed_up":"0","time_total":"0:00:38","duration":"0:00:37","eta":"0:00:01","speed":"10236"},
40
- {"perc":"98","done":"383k","total":"390k","perc2":"98","recv":"383k","perc3":"0","transferred":"0","speed_down":"10240","speed_up":"0","time_total":"0:00:39","duration":"0:00:38","eta":"0:00:01","speed":"10238"},
41
- {"perc":"100","done":"390k","total":"390k","perc2":"100","recv":"390k","perc3":"0","transferred":"0","speed_down":"10422","speed_up":"0","time_total":"0:00:38","duration":"0:00:38","eta":"~","speed":"10457"}
42
- ]
@@ -1,17 +0,0 @@
1
- const assert = require('assert');
2
- const fs = require('fs');
3
- const fs_path_resolve = require('./fs_path_resolve');
4
- const fs_read_json = require('./fs_read_json');
5
- const stream = require('stream');
6
- const stream_curl_progress = require('./stream_curl_progress');
7
-
8
- describe('stream_curl_progress', function () {
9
- it('should handle basic input', async function () {
10
- const expected = await fs_read_json(fs_path_resolve(__dirname, 'stream_curl_progress.d/basic.json'));
11
- const actual = await stream.compose(
12
- fs.createReadStream(fs_path_resolve(__dirname, 'stream_curl_progress.d/basic')),
13
- stream_curl_progress(),
14
- ).toArray();
15
- assert.deepStrictEqual(actual, expected);
16
- });
17
- });
@@ -1,24 +0,0 @@
1
- const assert = require('assert');
2
- const fs = require('fs');
3
- const split = require('split');
4
- const stream = require('stream');
5
- const stream_data_ln = require('./stream_data_ln');
6
-
7
- describe('stream_data_ln', function () {
8
- it('should handle basic input', async function () {
9
- let actual = '';
10
- const s = fs.createReadStream(__filename);
11
- const off = stream_data_ln(s, v => actual += v + '\n');
12
- await stream.promises.finished(s);
13
- off();
14
- assert.deepStrictEqual(actual, fs.readFileSync(__filename, {encoding: 'utf8'}));
15
- });
16
- it('split', async function () {
17
- let actual = '';
18
- const s = fs.createReadStream(__filename);
19
- const ss = s.pipe(split('\n', null, {trailing: false}));
20
- ss.on('data', v => actual += v + '\n');
21
- await stream.promises.finished(ss);
22
- assert.deepStrictEqual(actual, fs.readFileSync(__filename, {encoding: 'utf8'}));
23
- });
24
- });
@@ -1,26 +0,0 @@
1
- const Promise = require('bluebird');
2
- const assert = require('assert');
3
- const stream = require('stream');
4
- const stream_each = require('./stream_each');
5
- const stream_map_parallel = require('./stream_map_parallel');
6
-
7
- describe('stream_map_parallel', function () {
8
- it('basic', async function () {
9
- const actual = [];
10
- const expected = Array(100).fill().map((v,i) => i);
11
- await stream.promises.pipeline(
12
- stream.Readable.from(expected),
13
- stream_map_parallel({
14
- concurrency: 5,
15
- handler: async function (num) {
16
- await Promise.delay(0);
17
- return num;
18
- },
19
- }),
20
- stream_each(function (item) {
21
- actual.push(item);
22
- }),
23
- );
24
- assert.deepStrictEqual(actual, expected);
25
- });
26
- });
@@ -1,67 +0,0 @@
1
- const assert = require('assert');
2
- const ignore = require('./ignore');
3
- const stream = require('stream');
4
- const stream_multiplex = require('./stream_multiplex');
5
-
6
- describe('stream_multiplex', function () {
7
- it('basic', async function () {
8
- const input = [1, 2, 3, 'str1'];
9
- const rs = stream.Readable.from(input);
10
- const ws1 = stream_debug();
11
- const ws2 = stream_debug();
12
- await stream.promises.pipeline(rs, stream_multiplex(ws1, ws2));
13
- assert.deepStrictEqual(ws1.items, input);
14
- assert.deepStrictEqual(ws2.items, input);
15
- assert.deepStrictEqual(ws1.events.map(v => v.name), ['finish', 'close']);
16
- assert.deepStrictEqual(ws2.events.map(v => v.name), ['finish', 'close']);
17
- });
18
- it('should throw after first error', async function () {
19
- const input = [1, 2, 3, 'str1'];
20
- const fail_at = 2;
21
- const rs = stream.Readable.from(input);
22
- const ws1 = stream_debug();
23
- const ws2 = stream_debug();
24
- const p = stream.promises.pipeline(rs, stream_multiplex(ws1, ws2, stream_fail_at(fail_at)));
25
- await assert.rejects(p, new Error(`Failed at ${fail_at}`));
26
- assert.deepStrictEqual(ws1.items, input.slice(0, fail_at));
27
- assert.deepStrictEqual(ws2.items, input.slice(0, fail_at));
28
- assert.deepStrictEqual(ws1.events.map(v => v.name), ['error', 'close']);
29
- assert.deepStrictEqual(ws2.events.map(v => v.name), ['error', 'close']);
30
- });
31
- });
32
-
33
- function stream_debug()
34
- {
35
- const out = new stream.Writable({
36
- objectMode: true,
37
- write: function (item, enc, next) {
38
- out.items.push(item);
39
- next();
40
- },
41
- });
42
- out.items = [];
43
- out.events = [];
44
- out.once('close', (...args) => out.events.push({name: 'close', args})); // result of `destroy`
45
- out.once('drain', (...args) => out.events.push({name: 'drain', args}));
46
- out.once('error', (...args) => out.events.push({name: 'error', args}));
47
- out.once('finish', (...args) => out.events.push({name: 'finish', args})); // result of `end`
48
- out.once('pipe', (...args) => out.events.push({name: 'pipe', args}));
49
- out.once('unpipe', (...args) => out.events.push({name: 'unpipe', args}));
50
- return out;
51
- }
52
-
53
- function stream_fail_at(at)
54
- {
55
- let counter = 0;
56
- return new stream.Writable({
57
- objectMode: true,
58
- write: function (item, enc, next) {
59
- if (++counter >= at) {
60
- next(new Error(`Failed at ${at}`));
61
- }
62
- else {
63
- next();
64
- }
65
- },
66
- });
67
- }
@@ -1,29 +0,0 @@
1
- const assert = require('assert');
2
- const stream = require('stream');
3
- const stream_strpbrk = require('./stream_strpbrk');
4
-
5
- const items = [
6
- ['empty', '|', [], []],
7
- ['| -> empty', '|', ['|'], []],
8
- ['|| -> empty', '|', ['||'], []],
9
- ['||| -> empty', '|', ['|', '|', '|'], []],
10
- ['a → a', '|', ['a'], ['a']],
11
- ['|a → a', '|', ['|a'], ['a']],
12
- ['a| → a', '|', ['a|'], ['a']],
13
- ['a|b → a,b', '|', ['a|b'], ['a', 'b']],
14
- ['a|||b → a,b', '|', ['a|||b'], ['a', 'b']],
15
- ['abc → abc', '|', ['a', 'b', 'c'], ['abc']],
16
- ['a|b;c', '|;', ['a|b;c'], ['a', 'b', 'c']],
17
- ['a|b;c', '|;', ['a|b', ';c'], ['a', 'b', 'c']],
18
- ['Buffer(a) → a', '|', ['a'].map(Buffer.from), ['a']],
19
- ['Buffer(a|b) → a,b', '|', ['a|b'].map(Buffer.from), ['a', 'b']],
20
- ];
21
-
22
- describe('stream_strpbrk', function () {
23
- items.forEach(function ([title, delimiters, input, expected]) {
24
- it(title, async function () {
25
- const actual = await stream.Readable.from(input).pipe(stream_strpbrk(delimiters)).toArray();
26
- assert.deepStrictEqual(actual, expected);
27
- });
28
- });
29
- });
@@ -1,18 +0,0 @@
1
- const assert = require('assert');
2
- const urlclean = require('./urlclean');
3
-
4
- const items = [
5
- ['', ''],
6
- ['http://127.0.0.1:3000/proxy', 'http://127.0.0.1:3000/proxy'],
7
- ['http://127.0.0.1:3000/proxy?url=http://127.0.0.1:3000/static/&redirects=2', 'http://127.0.0.1:3000/proxy?url=http://127.0.0.1:3000/static/&redirects=2'],
8
- ['http://127.0.0.1:3000/proxy?url=http%3A%2F%2F127.0.0.1%3A3000%2Fstatic%2F&redirects=1', 'http://127.0.0.1:3000/proxy?url=http://127.0.0.1:3000/static/&redirects=1'],
9
- ];
10
-
11
- describe('urlclean', function () {
12
- items.forEach(function ([input, expected]) {
13
- it(input, function () {
14
- const actual = urlclean(input);
15
- assert.strictEqual(actual, expected);
16
- });
17
- });
18
- });
@@ -1,40 +0,0 @@
1
- const assert = require('assert');
2
- const urlmod = require('./urlmod');
3
-
4
- describe('urlmod', function () {
5
- it('should take no args', function () {
6
- assert.deepEqual(urlmod(), '');
7
- });
8
- it('should take basic args', function () {
9
- assert.deepEqual(urlmod('?a=1'), '?a=1');
10
- assert.deepEqual(urlmod('?a=1', {a: 2}), '?a=2');
11
- assert.deepEqual(urlmod('?a=1', {a: null}), '');
12
- assert.deepEqual(urlmod('?a=1', {b: 1}), '?a=1&b=1');
13
- assert.deepEqual(urlmod('?a=1', {b: 1, a: 2}), '?a=2&b=1');
14
- assert.deepEqual(urlmod('?a=1', {a: true}), '?a=1');
15
- assert.deepEqual(urlmod('?a=1', {a: false, b: true}), '?a=0&b=1');
16
- });
17
- it('should take `location`', function () {
18
- // const elem = document.createElement('A');
19
- // elem.href = 'http://www.example.com/some/path?a=1';
20
- // const location = elem.href;
21
- const location = {
22
- toString: function () {
23
- return 'http://www.example.com/some/path?a=1';
24
- },
25
- };
26
- assert.deepEqual(urlmod(location, {b: 2}), 'http://www.example.com/some/path?a=1&b=2');
27
- });
28
- it('should keep hash part', function () {
29
- assert.deepEqual(urlmod('#ex', {b: 2}), '?b=2#ex');
30
- assert.deepEqual(urlmod('#ex?a=1#ex', {b: 2}), '?b=2#ex?a=1#ex');
31
- assert.deepEqual(urlmod('?a=1#ex', {b: 2}), '?a=1&b=2#ex');
32
- assert.deepEqual(urlmod('/#ex', {b: 2}), '/?b=2#ex');
33
- assert.deepEqual(urlmod('http://www.example.com/some/path?a=1#ex', {b: 2}), 'http://www.example.com/some/path?a=1&b=2#ex');
34
- });
35
- it('should keep port', function () {
36
- const actual = urlmod('http://localhost:3000/auth/sign-in', {return: '/auth/profile'});
37
- const expected = 'http://localhost:3000/auth/sign-in?return=%2Fauth%2Fprofile';
38
- assert.strictEqual(actual, expected);
39
- })
40
- });