@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.
- package/README.md +29 -3
- package/dist/browser.js +1 -2504
- package/package.json +31 -11
- package/src/HeartbeatServer.js +24 -3
- package/src/HeartbeatServer.md +33 -0
- package/src/array_chunk.js +1 -1
- package/src/array_chunk.md +8 -0
- package/src/array_chunk_balanced.md +14 -0
- package/src/array_fps.md +12 -0
- package/src/array_gcd.js +4 -2
- package/src/array_gcd.md +2 -1
- package/src/array_group.js +3 -3
- package/src/array_group.md +14 -0
- package/src/array_group_map.js +3 -3
- package/src/array_group_map.md +13 -0
- package/src/array_index.js +2 -2
- package/src/array_index.md +9 -0
- package/src/array_lcm.js +4 -2
- package/src/array_lcm.md +2 -1
- package/src/array_max.js +11 -4
- package/src/array_max.md +1 -1
- package/src/array_min.js +11 -4
- package/src/array_min.md +1 -1
- package/src/array_permutations.js +4 -0
- package/src/array_permutations.md +13 -0
- package/src/array_sort.js +7 -2
- package/src/array_sort.md +13 -0
- package/src/array_sort_other.js +8 -5
- package/src/array_sort_other.md +11 -0
- package/src/array_sum.js +2 -2
- package/src/array_sum.md +8 -0
- package/src/array_unique.js +2 -2
- package/src/array_unique_last.js +2 -2
- package/src/assert_valid_expires_at.md +10 -0
- package/src/clamp.md +9 -0
- package/src/cli-apps/watchdog.js +5 -0
- package/src/cli.js +3 -1
- package/src/cli.md +15 -0
- package/src/const_stream.md +7 -0
- package/src/const_type.md +5 -0
- package/src/countdown.js +22 -5
- package/src/countdown.md +21 -0
- package/src/crypto_decrypt_aes256.md +13 -0
- package/src/crypto_encrypt_aes256.md +13 -0
- package/src/crypto_hash_md5.md +10 -0
- package/src/crypto_hash_sha256.md +10 -0
- package/src/crypto_hmac_sha256.md +11 -0
- package/src/date_add_hours.md +8 -0
- package/src/date_add_milliseconds.md +4 -0
- package/src/date_add_minutes.md +4 -0
- package/src/date_add_months.md +13 -0
- package/src/date_add_seconds.md +4 -0
- package/src/date_diff_seconds.md +4 -0
- package/src/date_is_leap_year.md +9 -0
- package/src/escape_content_disposition.js +6 -3
- package/src/escape_content_disposition.md +13 -0
- package/src/escape_regexp.md +7 -0
- package/src/eta.js +7 -1
- package/src/eta.md +18 -0
- package/src/factorize_ms.js +3 -0
- package/src/factorize_ms.md +10 -0
- package/src/fastdl.js +14 -3
- package/src/fcmp_dates.md +12 -0
- package/src/fcmp_default.js +7 -0
- package/src/fcmp_default.md +29 -0
- package/src/fcmp_default_desc.js +4 -7
- package/src/fcmp_default_desc.md +10 -0
- package/src/fcmp_from_spec.md +13 -0
- package/src/fcmp_numbers.md +11 -0
- package/src/fcmp_tuples.md +17 -0
- package/src/fcmp_utf8_bin.md +14 -0
- package/src/fcmp_utf8_ci.md +14 -0
- package/src/fcmp_utf8_cs.md +15 -0
- package/src/fcmp_utf8_natural_bin.js +38 -0
- package/src/fcmp_utf8_natural_bin.md +8 -0
- package/src/fcmp_utf8_natural_ci.md +13 -0
- package/src/fcmp_utf8_natural_cs.md +13 -0
- package/src/fcmpx.md +26 -9
- package/src/filter1_from_spec.js +3 -3
- package/src/format_bytes.md +15 -0
- package/src/format_date.md +7 -0
- package/src/format_date_fs.md +7 -0
- package/src/format_date_human.md +6 -0
- package/src/format_date_ymd.md +6 -0
- package/src/format_error_report.js +3 -3
- package/src/format_error_report.md +12 -0
- package/src/format_kilo.md +13 -0
- package/src/format_ms.js +3 -2
- package/src/format_ms.md +12 -0
- package/src/format_ms2.js +6 -3
- package/src/format_ms2.md +12 -0
- package/src/format_ms3.js +3 -2
- package/src/format_ms3.md +12 -0
- package/src/format_percents.md +10 -0
- package/src/format_progress_bytes.md +13 -0
- package/src/format_progress_kilo.md +10 -0
- package/src/format_seconds.md +11 -0
- package/src/format_thousands.md +9 -0
- package/src/fs_append.md +7 -0
- package/src/fs_append_json.md +8 -0
- package/src/fs_append_utf8.md +6 -0
- package/src/fs_assert_file_exists.md +3 -0
- package/src/fs_assert_file_readable.js +1 -1
- package/src/fs_assert_file_readable.md +3 -0
- package/src/fs_assert_file_socket.md +2 -0
- package/src/fs_copy.md +7 -0
- package/src/fs_copy_excl.md +2 -0
- package/src/fs_exists.md +6 -0
- package/src/fs_fclose.md +5 -0
- package/src/fs_fi.js +13 -1
- package/src/fs_fi.md +11 -0
- package/src/fs_file_md5.md +8 -0
- package/src/fs_find.md +7 -0
- package/src/fs_fopen.md +6 -0
- package/src/fs_fread.js +2 -2
- package/src/fs_fread.md +11 -0
- package/src/fs_fsize.md +2 -0
- package/src/fs_fstat.md +2 -0
- package/src/fs_fwrite.js +2 -2
- package/src/fs_fwrite.md +9 -0
- package/src/fs_list.md +5 -0
- package/src/fs_list_deep.md +5 -0
- package/src/fs_ls.md +2 -0
- package/src/fs_lsr.md +4 -0
- package/src/fs_lstat.md +3 -0
- package/src/fs_mkdir.md +3 -0
- package/src/fs_mkdirp.js +3 -30
- package/src/fs_mkdirp.md +7 -0
- package/src/fs_path_basename.md +2 -0
- package/src/fs_path_dirname.md +2 -0
- package/src/fs_path_extname.md +9 -0
- package/src/fs_path_join.md +2 -0
- package/src/fs_path_relative.md +2 -0
- package/src/fs_path_resolve.md +2 -0
- package/src/fs_path_tempdir.md +2 -0
- package/src/fs_path_untildify.md +8 -0
- package/src/fs_read.md +3 -0
- package/src/fs_read_buffer.md +5 -0
- package/src/fs_read_json.md +6 -0
- package/src/fs_read_lines.md +7 -0
- package/src/fs_read_stream.md +2 -0
- package/src/fs_read_utf8.md +5 -0
- package/src/fs_readdir.md +3 -0
- package/src/fs_readlink.md +6 -0
- package/src/fs_rename.md +6 -0
- package/src/fs_rm.md +4 -0
- package/src/fs_rmdir.md +3 -0
- package/src/fs_rmf.md +2 -0
- package/src/fs_rmrf.md +8 -0
- package/src/fs_sha256.js +16 -0
- package/src/fs_sha256.md +9 -0
- package/src/fs_size.js +2 -2
- package/src/fs_size.md +6 -0
- package/src/fs_stat.md +2 -0
- package/src/fs_tempdir.js +20 -5
- package/src/fs_touch.md +6 -0
- package/src/fs_walk.js +2 -2
- package/src/fs_walk.md +14 -0
- package/src/fs_write.md +3 -0
- package/src/fs_write_json.md +7 -0
- package/src/fs_write_stream.md +2 -0
- package/src/gettype.md +13 -0
- package/src/http_delete.md +11 -0
- package/src/http_get_blob.md +8 -0
- package/src/http_get_buffer.md +10 -0
- package/src/http_get_file.js +8 -8
- package/src/http_get_file.md +14 -0
- package/src/http_get_json.md +10 -0
- package/src/http_get_stream.md +14 -0
- package/src/http_get_stream_range.js +27 -9
- package/src/http_get_stream_range.md +22 -0
- package/src/http_get_utf8.md +9 -0
- package/src/http_head.md +9 -0
- package/src/http_patch_json.md +10 -0
- package/src/http_post_json.md +11 -0
- package/src/http_post_multipart.md +15 -0
- package/src/http_post_urlencoded.md +11 -0
- package/src/http_put_buffer.md +9 -0
- package/src/http_put_file.js +9 -6
- package/src/http_put_file.md +16 -0
- package/src/http_put_json.md +11 -0
- package/src/http_put_utf8.md +9 -0
- package/src/http_range_parse.js +6 -3
- package/src/http_range_parse.md +18 -0
- package/src/http_stream_range.js +35 -22
- package/src/http_stream_range.md +29 -0
- package/src/identity.md +2 -0
- package/src/ignore.md +2 -0
- package/src/json_stringify_safe.md +10 -0
- package/src/json_stringify_stable.md +9 -0
- package/src/logger.js +2 -3
- package/src/logger.md +15 -0
- package/src/make_progress.js +8 -5
- package/src/make_progress.md +20 -0
- package/src/math_gcd.js +2 -1
- package/src/mongo_stream_upsert.js +10 -3
- package/src/mongo_stream_upsert.md +17 -0
- package/src/mongo_stream_write.js +10 -3
- package/src/mongo_stream_write.md +16 -0
- package/src/msval.md +10 -0
- package/src/now_fs.md +7 -0
- package/src/now_human.md +6 -0
- package/src/object_defaults.md +11 -0
- package/src/object_schema.js +2 -1
- package/src/object_schema.md +12 -0
- package/src/object_walk_preorder.md +16 -0
- package/src/parallel.js +23 -10
- package/src/parse_bytes.js +4 -2
- package/src/parse_bytes.md +15 -0
- package/src/parse_hms.js +1 -1
- package/src/parse_http_content_range.js +9 -5
- package/src/parse_http_content_range.md +16 -0
- package/src/perf_end_human.md +10 -0
- package/src/perf_end_ms.md +8 -0
- package/src/perf_measure.md +10 -0
- package/src/perf_measure_human.md +8 -0
- package/src/perf_start.md +9 -0
- package/src/pgid_exists.md +6 -0
- package/src/pgid_kill_grace.js +1 -1
- package/src/pgid_kill_grace.md +15 -0
- package/src/pid_exists.md +5 -0
- package/src/pid_kill_grace.js +1 -1
- package/src/pid_kill_grace.md +14 -0
- package/src/plural.md +13 -0
- package/src/random_hex.md +9 -0
- package/src/random_int.md +8 -0
- package/src/range.js +4 -2
- package/src/range.md +2 -0
- package/src/redis_connect.js +1 -1
- package/src/redis_connect.md +10 -0
- package/src/redis_lshift.md +14 -0
- package/src/redis_poll.js +1 -0
- package/src/redis_poll.md +17 -0
- package/src/redis_poll_zshift_callback_rpush.js +1 -2
- package/src/redis_poll_zshift_callback_rpush.md +17 -0
- package/src/redis_poll_zshift_spawn_rpush.js +2 -1
- package/src/redis_poll_zshift_spawn_rpush.md +20 -0
- package/src/redis_zshift.md +14 -0
- package/src/round.js +7 -8
- package/src/round.md +15 -0
- package/src/sanitize_dash_name.md +13 -0
- package/src/sanitize_filename.md +9 -0
- package/src/sanitize_var_name.md +14 -0
- package/src/sftp_get_file_info.js +2 -2
- package/src/sftp_get_file_info.md +14 -0
- package/src/sftp_get_stream_range.js +32 -22
- package/src/sftp_get_stream_range.md +20 -0
- package/src/shell_curl_progress.js +2 -1
- package/src/shell_curl_progress.md +17 -0
- package/src/shell_lines.js +2 -2
- package/src/shell_lines.md +1 -1
- package/src/shell_spawn.js +7 -0
- package/src/shell_ytdlp_progress.js +2 -1
- package/src/shell_ytdlp_progress.md +17 -0
- package/src/str_camel_to_snake.md +11 -0
- package/src/str_parse_kv.md +11 -0
- package/src/stream_curl_progress.md +14 -0
- package/src/stream_data_ln.js +7 -1
- package/src/stream_discard.md +8 -0
- package/src/stream_group.md +3 -0
- package/src/stream_gunzip.md +7 -0
- package/src/stream_hash.md +10 -0
- package/src/stream_map.js +8 -1
- package/src/stream_map_parallel.js +9 -1
- package/src/stream_md5.md +9 -0
- package/src/stream_multiplex.js +11 -0
- package/src/stream_multiplex.md +16 -0
- package/src/stream_through.md +3 -0
- package/src/stream_transform.md +2 -0
- package/src/stream_xml_analyze.js +9 -1
- package/src/stream_xml_parse.js +9 -1
- package/src/stream_ytdlp_progress.js +1 -1
- package/src/stream_ytdlp_progress.md +18 -0
- package/src/strtr.js +15 -5
- package/src/strtr.md +11 -0
- package/src/urlclean.js +9 -2
- package/src/urlmod.js +5 -0
- package/src/urlparts.md +17 -0
- package/src/wait_while.js +1 -1
- package/src/wait_while.md +1 -1
- package/src/HeartbeatServer.test.js +0 -31
- package/src/array_chunk.test.js +0 -24
- package/src/array_chunk_balanced.test.js +0 -37
- package/src/array_fps.test.js +0 -72
- package/src/array_gcd.test.js +0 -10
- package/src/array_index.test.js +0 -14
- package/src/array_lcm.test.js +0 -12
- package/src/array_max.test.js +0 -20
- package/src/array_min.test.js +0 -20
- package/src/array_permutations.test.js +0 -20
- package/src/array_sort.test.js +0 -85
- package/src/array_sort_other.test.js +0 -9
- package/src/array_sum.test.js +0 -11
- package/src/cli-apps/watchdog.d/connect_close.js +0 -17
- package/src/cli-apps/watchdog.d/connect_close2.js +0 -20
- package/src/cli-apps/watchdog.d/connect_close3.js +0 -25
- package/src/cli-apps/watchdog.d/connect_no_ping.js +0 -13
- package/src/cli-apps/watchdog.d/early_exit.js +0 -7
- package/src/cli-apps/watchdog.d/flood.js +0 -13
- package/src/cli-apps/watchdog.d/flood2.js +0 -15
- package/src/cli-apps/watchdog.d/hang.js +0 -8
- package/src/cli-apps/watchdog.d/huge_delay.js +0 -18
- package/src/cli-apps/watchdog.d/ignore_sigterm.js +0 -29
- package/src/cli-apps/watchdog.d/late_heartbeat.js +0 -21
- package/src/cli-apps/watchdog.d/my-exit-after-2-pings.js +0 -16
- package/src/cli-apps/watchdog.d/my-happy-path.js +0 -16
- package/src/cli-apps/watchdog.d/my-ignore-sigterm.js +0 -22
- package/src/cli-apps/watchdog.d/my-never-ping.js +0 -15
- package/src/cli-apps/watchdog.d/no_heartbeat.js +0 -5
- package/src/cli-apps/watchdog.d/ok.js +0 -17
- package/src/cli-apps/watchdog.d/quick-exit-after-2-pings.js +0 -15
- package/src/cli-apps/watchdog.d/quick-hang-after-1-ping.js +0 -15
- package/src/cli-apps/watchdog.d/spawn_children.js +0 -14
- package/src/cli-apps/watchdog.test.js +0 -48
- package/src/crypto_encrypt_aes256.test.js +0 -10
- package/src/crypto_hash_sha256.test.js +0 -10
- package/src/date_add_months.test.js +0 -40
- package/src/date_is_leap_year.test.js +0 -14
- package/src/escape_content_disposition.test.js +0 -22
- package/src/fcmp_from_spec.test.js +0 -91
- package/src/fcmpx.test.js +0 -173
- package/src/filter1_from_spec.test.js +0 -31
- package/src/format_bytes.test.js +0 -22
- package/src/format_error_report.d/src/1.js +0 -26
- package/src/format_error_report.d/src/2.js +0 -29
- package/src/format_kilo.test.js +0 -25
- package/src/format_ms.test.js +0 -33
- package/src/format_ms2.test.js +0 -33
- package/src/format_ms3.test.js +0 -33
- package/src/format_percents.test.js +0 -22
- package/src/format_progress_bytes.test.js +0 -19
- package/src/format_progress_kilo.test.js +0 -19
- package/src/format_seconds.test.js +0 -42
- package/src/format_thousands.test.js +0 -28
- package/src/fs_file_md5.test.js +0 -11
- package/src/fs_mkdirp.test.js +0 -24
- package/src/fs_path_extname.test.js +0 -22
- package/src/gettype.test.js +0 -27
- package/src/object_schema.test.js +0 -15
- package/src/object_walk_preorder.test.js +0 -17
- package/src/parallel.test.js +0 -11
- package/src/parse_bytes.test.js +0 -21
- package/src/parse_hms.test.js +0 -32
- package/src/parse_http_content_range.test.js +0 -14
- package/src/pid_kill_grace.d/ignore-sigterm-for-10ms.js +0 -33
- package/src/pid_kill_grace.d/ignore-sigterm.js +0 -22
- package/src/pid_kill_grace.test.js +0 -63
- package/src/ping_socket.test.js +0 -58
- package/src/plural.test.js +0 -20
- package/src/range.test.js +0 -41
- package/src/redis_lshift.test.js +0 -57
- package/src/redis_zshift.test.js +0 -58
- package/src/round.test.js +0 -56
- package/src/sanitize_dash_name.test.js +0 -59
- package/src/sanitize_var_name.test.js +0 -39
- package/src/shell_spawn.test.js +0 -30
- package/src/str_camel_to_snake.test.js +0 -17
- package/src/stream_curl_progress.d/basic +0 -3
- package/src/stream_curl_progress.d/basic.json +0 -42
- package/src/stream_curl_progress.test.js +0 -17
- package/src/stream_data_ln.test.js +0 -24
- package/src/stream_map_parallel.test.js +0 -26
- package/src/stream_multiplex.test.js +0 -67
- package/src/stream_strpbrk.test.js +0 -29
- package/src/urlclean.test.js +0 -18
- package/src/urlmod.test.js +0 -40
- 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
|
-
});
|
package/src/shell_spawn.test.js
DELETED
|
@@ -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
|
-
});
|
package/src/urlclean.test.js
DELETED
|
@@ -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
|
-
});
|
package/src/urlmod.test.js
DELETED
|
@@ -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
|
-
});
|