torrent-online 1.7.8 → 1.7.9
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/CHANGELOG.md +5 -0
- package/package.json +1 -1
- package/wtui.js +64 -31
- package/node_modules/deep-extend/CHANGELOG.md +0 -46
- package/node_modules/http-parser-js/CHANGELOG.md +0 -14
- package/node_modules/mime/CHANGELOG.md +0 -312
- package/node_modules/string2compact/node_modules/ipaddr.js/Changes.md +0 -20
- package/node_modules/which/CHANGELOG.md +0 -166
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Формат — [Keep a Changelog](https://keepachangelog.com/ru/1.1.0/), версии — [Semantic Versioning](https://semver.org/lang/ru/).
|
|
4
4
|
|
|
5
|
+
## [1.7.9] — 2026-10-04
|
|
6
|
+
**RU:** В браузере звук больше не идёт рывками и не отстаёт от картинки.
|
|
7
|
+
**EN:** In the browser, audio no longer stutters or drifts off the picture.
|
|
8
|
+
- 🐛 Поток резался на MPEG-TS, и каждый кусок обнулял время. Браузер ставил звук не на ту секунду. Теперь фрагменты fMP4 с одной шкалой времени
|
|
9
|
+
|
|
5
10
|
## [1.7.8] — 2026-10-04
|
|
6
11
|
**RU:** `npm i -g` снова доходит до конца. Зависимость `ip-set` больше не вызывает `npx only-allow pnpm` и не роняет установку.
|
|
7
12
|
**EN:** `npm i -g` finishes again. The `ip-set` dependency no longer runs `npx only-allow pnpm` and no longer aborts the install.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "torrent-online",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.9",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Stream .torrent / magnet to VLC or browser — torrent streaming for macOS/Linux without a torrent client. Стрим торрентов в VLC или браузер.",
|
|
6
6
|
"keywords": [
|
package/wtui.js
CHANGED
|
@@ -672,26 +672,23 @@ function readBody(req) {
|
|
|
672
672
|
const HLS_SEG = 4;
|
|
673
673
|
|
|
674
674
|
function hlsSegName(i) {
|
|
675
|
-
return 'seg-' + String(i).padStart(5, '0') + '.
|
|
675
|
+
return 'seg-' + String(i).padStart(5, '0') + '.m4s';
|
|
676
676
|
}
|
|
677
677
|
|
|
678
678
|
function listHlsSegs(dir) {
|
|
679
679
|
try {
|
|
680
680
|
return fs.readdirSync(dir)
|
|
681
|
-
.filter(n => /^seg-\d+\.
|
|
682
|
-
.map(n => Number(n.slice(4, -
|
|
681
|
+
.filter(n => /^seg-\d+\.m4s$/.test(n))
|
|
682
|
+
.map(n => Number(n.slice(4, -4)))
|
|
683
683
|
.filter(n => Number.isFinite(n))
|
|
684
684
|
.sort((a, b) => a - b);
|
|
685
685
|
} catch { return []; }
|
|
686
686
|
}
|
|
687
687
|
|
|
688
|
-
function hlsSegComplete(dir, index
|
|
688
|
+
function hlsSegComplete(dir, index) {
|
|
689
|
+
// temp_file: готовый фрагмент появляется атомарно, недописанный лежит как .tmp
|
|
689
690
|
const fp = path.join(dir, hlsSegName(index));
|
|
690
|
-
|
|
691
|
-
try { st = fs.statSync(fp); } catch { return false; }
|
|
692
|
-
if (st.size < 188) return false;
|
|
693
|
-
try { if (fs.statSync(path.join(dir, hlsSegName(index + 1))).size > 0) return true; } catch {}
|
|
694
|
-
return !!(job && job.ended && !job.aborted);
|
|
691
|
+
try { return fs.statSync(fp).size > 32; } catch { return false; }
|
|
695
692
|
}
|
|
696
693
|
|
|
697
694
|
async function probeSource(ffprobe, url) {
|
|
@@ -742,13 +739,12 @@ function killHlsJob(job, aborted) {
|
|
|
742
739
|
if (!job || job.aborted || job.ended) return;
|
|
743
740
|
job.aborted = !!aborted;
|
|
744
741
|
try { job.proc.kill('SIGKILL'); } catch {}
|
|
745
|
-
if (!aborted) return;
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
}
|
|
742
|
+
if (!aborted || !job.dir) return;
|
|
743
|
+
try {
|
|
744
|
+
for (const n of fs.readdirSync(job.dir)) {
|
|
745
|
+
if (n.endsWith('.tmp')) fs.rmSync(path.join(job.dir, n));
|
|
746
|
+
}
|
|
747
|
+
} catch {}
|
|
752
748
|
}
|
|
753
749
|
|
|
754
750
|
function jobCovers(job, index) {
|
|
@@ -771,35 +767,40 @@ function ensureHlsJob(hls, key, dir, ffmpeg, url, fromIndex, audioIndex, meta) {
|
|
|
771
767
|
if (pre > 0.05) args.push('-ss', pre.toFixed(3));
|
|
772
768
|
args.push('-i', url);
|
|
773
769
|
if (post > 0.05) args.push('-ss', post.toFixed(3));
|
|
770
|
+
if (target > 0.05) args.push('-output_ts_offset', target.toFixed(3));
|
|
774
771
|
args.push('-map', '0:v:0');
|
|
775
772
|
const hasAudio = meta.tracks.length > 0;
|
|
776
773
|
const a = hasAudio ? Math.max(0, Math.min(audioIndex, meta.tracks.length - 1)) : 0;
|
|
777
774
|
if (hasAudio) args.push('-map', '0:a:' + a);
|
|
778
|
-
//
|
|
779
|
-
//
|
|
775
|
+
// MPEG-TS сбрасывал PTS каждого куска в ноль, браузер ставил звук не на то время.
|
|
776
|
+
// fMP4 держит одну шкалу: картинка и звук без разрывов на границах.
|
|
780
777
|
// VLC по-прежнему открывает исходный файл как есть.
|
|
781
778
|
const big = (meta.height || 0) > 1080 || (meta.width || 0) > 1920;
|
|
782
779
|
const scale = big
|
|
783
780
|
? 'scale=trunc(min(1920\\,iw)/2)*2:trunc(min(1080\\,ih)/2)*2'
|
|
784
781
|
: 'scale=trunc(iw/2)*2:trunc(ih/2)*2';
|
|
782
|
+
const initName = (fs.existsSync(path.join(dir, 'init.mp4')) && fs.statSync(path.join(dir, 'init.mp4')).size > 200)
|
|
783
|
+
? 'init-extra.mp4' : 'init.mp4';
|
|
785
784
|
args.push(
|
|
786
|
-
'-c:v', 'libx264', '-preset', 'ultrafast', '-
|
|
787
|
-
'-profile:v', 'main', '-crf', '22',
|
|
785
|
+
'-c:v', 'libx264', '-preset', 'ultrafast', '-profile:v', 'main', '-crf', '22',
|
|
788
786
|
'-vf', scale + ',format=yuv420p',
|
|
787
|
+
'-g', '1000', '-keyint_min', '1000', '-sc_threshold', '0',
|
|
789
788
|
'-force_key_frames', 'expr:gte(t,n_forced*' + HLS_SEG + ')'
|
|
790
789
|
);
|
|
791
|
-
if (hasAudio) args.push('-c:a', 'aac', '-b:a', '160k', '-ac', '2', '-
|
|
790
|
+
if (hasAudio) args.push('-c:a', 'aac', '-b:a', '160k', '-ac', '2', '-ar', '48000');
|
|
792
791
|
else args.push('-an');
|
|
793
792
|
args.push(
|
|
794
|
-
'-avoid_negative_ts', 'make_zero',
|
|
795
793
|
'-muxdelay', '0', '-muxpreload', '0',
|
|
796
794
|
'-max_muxing_queue_size', '9999',
|
|
797
|
-
'-f', '
|
|
798
|
-
'-
|
|
799
|
-
'-
|
|
800
|
-
'-
|
|
801
|
-
'-
|
|
802
|
-
|
|
795
|
+
'-f', 'hls', '-hls_time', String(HLS_SEG),
|
|
796
|
+
'-hls_playlist_type', 'event',
|
|
797
|
+
'-hls_segment_type', 'fmp4',
|
|
798
|
+
'-hls_fmp4_init_filename', initName,
|
|
799
|
+
'-hls_flags', 'independent_segments+temp_file',
|
|
800
|
+
'-hls_list_size', '0',
|
|
801
|
+
'-start_number', String(fromIndex),
|
|
802
|
+
'-hls_segment_filename', path.join(dir, 'seg-%05d.m4s'),
|
|
803
|
+
path.join(dir, 'ffmpeg.m3u8')
|
|
803
804
|
);
|
|
804
805
|
const proc = spawn(ffmpeg, args, { stdio: ['ignore', 'ignore', 'pipe'] });
|
|
805
806
|
const job = { proc, dir, from: fromIndex, touched: Date.now(), ended: false, aborted: false, err: '' };
|
|
@@ -816,8 +817,9 @@ function ensureHlsJob(hls, key, dir, ffmpeg, url, fromIndex, audioIndex, meta) {
|
|
|
816
817
|
|
|
817
818
|
function vodPlaylist(duration, audio) {
|
|
818
819
|
const n = Math.max(1, Math.ceil(duration / HLS_SEG - 1e-6));
|
|
819
|
-
let pl = '#EXTM3U\n#EXT-X-VERSION:
|
|
820
|
+
let pl = '#EXTM3U\n#EXT-X-VERSION:7\n#EXT-X-TARGETDURATION:' + HLS_SEG + '\n#EXT-X-PLAYLIST-TYPE:VOD\n#EXT-X-INDEPENDENT-SEGMENTS\n';
|
|
820
821
|
const qs = '?a=' + encodeURIComponent(String(audio));
|
|
822
|
+
pl += '#EXT-X-MAP:URI="init.mp4' + qs + '"\n';
|
|
821
823
|
for (let i = 0; i < n; i++) {
|
|
822
824
|
const segDur = Math.min(HLS_SEG, Math.max(0.001, duration - i * HLS_SEG));
|
|
823
825
|
pl += '#EXTINF:' + segDur.toFixed(3) + ',\n' + hlsSegName(i) + qs + '\n';
|
|
@@ -1134,7 +1136,38 @@ async function webReq(req, res, client, st, opts, cacheDir, base) {
|
|
|
1134
1136
|
res.end(vodPlaylist(meta.duration, a));
|
|
1135
1137
|
return;
|
|
1136
1138
|
}
|
|
1137
|
-
|
|
1139
|
+
if (name === 'init.mp4') {
|
|
1140
|
+
await ensureDir(dir);
|
|
1141
|
+
const initFp = path.join(dir, 'init.mp4');
|
|
1142
|
+
if (!fs.existsSync(initFp) || fs.statSync(initFp).size < 200) {
|
|
1143
|
+
const running = hls.procs.get(key);
|
|
1144
|
+
const job = (running && !running.ended && !running.aborted)
|
|
1145
|
+
? running
|
|
1146
|
+
: ensureHlsJob(hls, key, dir, ffmpeg, url, 0, a, meta);
|
|
1147
|
+
job.touched = Date.now();
|
|
1148
|
+
const deadline = Date.now() + 20000;
|
|
1149
|
+
while (Date.now() < deadline) {
|
|
1150
|
+
try { if (fs.statSync(initFp).size > 200) break; } catch {}
|
|
1151
|
+
if (job.ended && job.err) break;
|
|
1152
|
+
await sleep(100);
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1155
|
+
let initBuf = null;
|
|
1156
|
+
try { if (fs.statSync(initFp).size > 200) initBuf = fs.readFileSync(initFp); } catch {}
|
|
1157
|
+
if (!initBuf) {
|
|
1158
|
+
res.statusCode = 503;
|
|
1159
|
+
res.setHeader('Retry-After', '1');
|
|
1160
|
+
res.setHeader('Cache-Control', 'no-store');
|
|
1161
|
+
res.end('init');
|
|
1162
|
+
return;
|
|
1163
|
+
}
|
|
1164
|
+
res.setHeader('Content-Type', 'video/mp4');
|
|
1165
|
+
res.setHeader('Cache-Control', 'no-store');
|
|
1166
|
+
res.setHeader('Content-Length', initBuf.length);
|
|
1167
|
+
res.end(initBuf);
|
|
1168
|
+
return;
|
|
1169
|
+
}
|
|
1170
|
+
const segM = /^seg-(\d+)\.m4s$/.exec(name);
|
|
1138
1171
|
if (!segM) { res.statusCode = 404; res.end('no'); return; }
|
|
1139
1172
|
const index = Number(segM[1]);
|
|
1140
1173
|
const nSeg = Math.max(1, Math.ceil(meta.duration / HLS_SEG - 1e-6));
|
|
@@ -1159,7 +1192,7 @@ async function webReq(req, res, client, st, opts, cacheDir, base) {
|
|
|
1159
1192
|
return;
|
|
1160
1193
|
}
|
|
1161
1194
|
const buf = fs.readFileSync(fp);
|
|
1162
|
-
res.setHeader('Content-Type', 'video/
|
|
1195
|
+
res.setHeader('Content-Type', 'video/mp4');
|
|
1163
1196
|
res.setHeader('Cache-Control', 'no-store');
|
|
1164
1197
|
res.setHeader('Content-Length', buf.length);
|
|
1165
1198
|
res.end(buf);
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
Changelog
|
|
2
|
-
=========
|
|
3
|
-
|
|
4
|
-
v0.6.0
|
|
5
|
-
------
|
|
6
|
-
|
|
7
|
-
- Updated "devDependencies" versions to fix vulnerability alerts
|
|
8
|
-
- Dropped support of io.js and node.js v0.12.x and lower since new versions of
|
|
9
|
-
"devDependencies" couldn't work with those old node.js versions
|
|
10
|
-
(minimal supported version of node.js now is v4.0.0)
|
|
11
|
-
|
|
12
|
-
v0.5.1
|
|
13
|
-
------
|
|
14
|
-
|
|
15
|
-
- Fix prototype pollution vulnerability (thanks to @mwakerman for the PR)
|
|
16
|
-
- Avoid using deprecated Buffer API (thanks to @ChALkeR for the PR)
|
|
17
|
-
|
|
18
|
-
v0.5.0
|
|
19
|
-
------
|
|
20
|
-
|
|
21
|
-
- Auto-testing provided by Travis CI;
|
|
22
|
-
- Support older Node.JS versions (`v0.11.x` and `v0.10.x`);
|
|
23
|
-
- Removed tests files from npm package.
|
|
24
|
-
|
|
25
|
-
v0.4.2
|
|
26
|
-
------
|
|
27
|
-
|
|
28
|
-
- Fix for `null` as an argument.
|
|
29
|
-
|
|
30
|
-
v0.4.1
|
|
31
|
-
------
|
|
32
|
-
|
|
33
|
-
- Removed test code from <b>npm</b> package
|
|
34
|
-
([see pull request #21](https://github.com/unclechu/node-deep-extend/pull/21));
|
|
35
|
-
- Increased minimal version of Node from `0.4.0` to `0.12.0`
|
|
36
|
-
(because can't run tests on lesser version anyway).
|
|
37
|
-
|
|
38
|
-
v0.4.0
|
|
39
|
-
------
|
|
40
|
-
|
|
41
|
-
- **WARNING!** Broken backward compatibility with `v0.3.x`;
|
|
42
|
-
- Fixed bug with extending arrays instead of cloning;
|
|
43
|
-
- Deep cloning for arrays;
|
|
44
|
-
- Check for own property;
|
|
45
|
-
- Fixed some documentation issues;
|
|
46
|
-
- Strict JS mode.
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# HTTP Parser
|
|
2
|
-
|
|
3
|
-
## 0.4.4
|
|
4
|
-
|
|
5
|
-
Made 'maxHeaderSize' configurable.
|
|
6
|
-
|
|
7
|
-
```js
|
|
8
|
-
// Monkey patch before you require http for the first time.
|
|
9
|
-
process.binding('http_parser').HTTPParser = require('http-parser-js').HTTPParser;
|
|
10
|
-
require('http-parser-js').HTTPParser.maxHeaderSize = 1024 * 1024; // 1MB instead of 80kb
|
|
11
|
-
|
|
12
|
-
var http = require('http');
|
|
13
|
-
// ...
|
|
14
|
-
```
|
|
@@ -1,312 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
|
-
|
|
5
|
-
## [3.0.0](https://github.com/broofa/mime/compare/v2.6.0...v3.0.0) (2021-11-03)
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
### ⚠ BREAKING CHANGES
|
|
9
|
-
|
|
10
|
-
* drop support for node < 10.x
|
|
11
|
-
|
|
12
|
-
### Bug Fixes
|
|
13
|
-
|
|
14
|
-
* skypack.dev for direct browser import, fixes [#263](https://github.com/broofa/mime/issues/263) ([41db4c0](https://github.com/broofa/mime/commit/41db4c042ccf50ea7baf3d2160ea37dcca37998d))
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
### update
|
|
18
|
-
|
|
19
|
-
* drop support for node < 10.x ([8857363](https://github.com/broofa/mime/commit/8857363ae0446ed0229b17291cf4483cf801f0d0))
|
|
20
|
-
|
|
21
|
-
## [2.6.0](https://github.com/broofa/mime/compare/v2.5.2...v2.6.0) (2021-11-02)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
### Features
|
|
25
|
-
|
|
26
|
-
* mime-db@1.50.0 ([cef0cc4](https://github.com/broofa/mime/commit/cef0cc484ff6d05ff1e12b54ca3e8b856fbc14d8))
|
|
27
|
-
|
|
28
|
-
### [2.5.2](https://github.com/broofa/mime/compare/v2.5.0...v2.5.2) (2021-02-17)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
### Bug Fixes
|
|
32
|
-
|
|
33
|
-
* update to mime-db@1.46.0, fixes [#253](https://github.com/broofa/mime/issues/253) ([f10e6aa](https://github.com/broofa/mime/commit/f10e6aa62e1356de7e2491d7fb4374c8dac65800))
|
|
34
|
-
|
|
35
|
-
## [2.5.0](https://github.com/broofa/mime/compare/v2.4.7...v2.5.0) (2021-01-16)
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
### Features
|
|
39
|
-
|
|
40
|
-
* improved CLI ([#244](https://github.com/broofa/mime/issues/244)) ([c8a8356](https://github.com/broofa/mime/commit/c8a8356e3b27f3ef46b64b89b428fdb547b14d5f))
|
|
41
|
-
|
|
42
|
-
### [2.4.7](https://github.com/broofa/mime/compare/v2.4.6...v2.4.7) (2020-12-16)
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
### Bug Fixes
|
|
46
|
-
|
|
47
|
-
* update to latest mime-db ([43b09ef](https://github.com/broofa/mime/commit/43b09eff0233eacc449af2b1f99a19ba9e104a44))
|
|
48
|
-
|
|
49
|
-
### [2.4.6](https://github.com/broofa/mime/compare/v2.4.5...v2.4.6) (2020-05-27)
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
### Bug Fixes
|
|
53
|
-
|
|
54
|
-
* add cli.js to package.json files ([#237](https://github.com/broofa/mime/issues/237)) ([6c070bc](https://github.com/broofa/mime/commit/6c070bc298fa12a48e2ed126fbb9de641a1e7ebc))
|
|
55
|
-
|
|
56
|
-
### [2.4.5](https://github.com/broofa/mime/compare/v2.4.4...v2.4.5) (2020-05-01)
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
### Bug Fixes
|
|
60
|
-
|
|
61
|
-
* fix [#236](https://github.com/broofa/mime/issues/236) ([7f4ecd0](https://github.com/broofa/mime/commit/7f4ecd0d850ed22c9e3bfda2c11fc74e4dde12a7))
|
|
62
|
-
* update to latest mime-db ([c5cb3f2](https://github.com/broofa/mime/commit/c5cb3f2ab8b07642a066efbde1142af1b90c927b))
|
|
63
|
-
|
|
64
|
-
### [2.4.4](https://github.com/broofa/mime/compare/v2.4.3...v2.4.4) (2019-06-07)
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
### [2.4.3](https://github.com/broofa/mime/compare/v2.4.2...v2.4.3) (2019-05-15)
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
### [2.4.2](https://github.com/broofa/mime/compare/v2.4.1...v2.4.2) (2019-04-07)
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
### Bug Fixes
|
|
76
|
-
|
|
77
|
-
* don't use arrow function introduced in 2.4.1 ([2e00b5c](https://github.com/broofa/mime/commit/2e00b5c))
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
### [2.4.1](https://github.com/broofa/mime/compare/v2.4.0...v2.4.1) (2019-04-03)
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
### Bug Fixes
|
|
85
|
-
|
|
86
|
-
* update MDN and mime-db types ([3e567a9](https://github.com/broofa/mime/commit/3e567a9))
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
# [2.4.0](https://github.com/broofa/mime/compare/v2.3.1...v2.4.0) (2018-11-26)
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
### Features
|
|
94
|
-
|
|
95
|
-
* Bind exported methods ([9d2a7b8](https://github.com/broofa/mime/commit/9d2a7b8))
|
|
96
|
-
* update to mime-db@1.37.0 ([49e6e41](https://github.com/broofa/mime/commit/49e6e41))
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
### [2.3.1](https://github.com/broofa/mime/compare/v2.3.0...v2.3.1) (2018-04-11)
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
### Bug Fixes
|
|
104
|
-
|
|
105
|
-
* fix [#198](https://github.com/broofa/mime/issues/198) ([25ca180](https://github.com/broofa/mime/commit/25ca180))
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
# [2.3.0](https://github.com/broofa/mime/compare/v2.2.2...v2.3.0) (2018-04-11)
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
### Bug Fixes
|
|
113
|
-
|
|
114
|
-
* fix [#192](https://github.com/broofa/mime/issues/192) ([5c35df6](https://github.com/broofa/mime/commit/5c35df6))
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
### Features
|
|
118
|
-
|
|
119
|
-
* add travis-ci testing ([d64160f](https://github.com/broofa/mime/commit/d64160f))
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
### [2.2.2](https://github.com/broofa/mime/compare/v2.2.1...v2.2.2) (2018-03-30)
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
### Bug Fixes
|
|
127
|
-
|
|
128
|
-
* update types files to mime-db@1.32.0 ([85aac16](https://github.com/broofa/mime/commit/85aac16))
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
### [2.2.1](https://github.com/broofa/mime/compare/v2.2.0...v2.2.1) (2018-03-30)
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
### Bug Fixes
|
|
135
|
-
|
|
136
|
-
* Retain type->extension mappings for non-default types. Fixes [#180](https://github.com/broofa/mime/issues/180) ([b5c83fb](https://github.com/broofa/mime/commit/b5c83fb))
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
# [2.2.0](https://github.com/broofa/mime/compare/v2.1.0...v2.2.0) (2018-01-04)
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
### Features
|
|
144
|
-
|
|
145
|
-
* Retain type->extension mappings for non-default types. Fixes [#180](https://github.com/broofa/mime/issues/180) ([10f82ac](https://github.com/broofa/mime/commit/10f82ac))
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
# [2.1.0](https://github.com/broofa/mime/compare/v2.0.5...v2.1.0) (2017-12-22)
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
### Features
|
|
153
|
-
|
|
154
|
-
* Upgrade to mime-db@1.32.0. Fixes [#185](https://github.com/broofa/mime/issues/185) ([3f775ba](https://github.com/broofa/mime/commit/3f775ba))
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
### [2.0.5](https://github.com/broofa/mime/compare/v2.0.1...v2.0.5) (2017-12-22)
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
### Bug Fixes
|
|
162
|
-
|
|
163
|
-
* ES5 support (back to node v0.4) ([f14ccb6](https://github.com/broofa/mime/commit/f14ccb6))
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
# Changelog
|
|
168
|
-
|
|
169
|
-
### v2.0.4 (24/11/2017)
|
|
170
|
-
- [**closed**] Switch to mime-score module for resolving extension contention issues. [#182](https://github.com/broofa/mime/issues/182)
|
|
171
|
-
- [**closed**] Update mime-db to 1.31.0 in v1.x branch [#181](https://github.com/broofa/mime/issues/181)
|
|
172
|
-
|
|
173
|
-
---
|
|
174
|
-
|
|
175
|
-
## v1.5.0 (22/11/2017)
|
|
176
|
-
- [**closed**] need ES5 version ready in npm package [#179](https://github.com/broofa/mime/issues/179)
|
|
177
|
-
- [**closed**] mime-db no trace of iWork - pages / numbers / etc. [#178](https://github.com/broofa/mime/issues/178)
|
|
178
|
-
- [**closed**] How it works in brownser ? [#176](https://github.com/broofa/mime/issues/176)
|
|
179
|
-
- [**closed**] Missing `./Mime` [#175](https://github.com/broofa/mime/issues/175)
|
|
180
|
-
- [**closed**] Vulnerable Regular Expression [#167](https://github.com/broofa/mime/issues/167)
|
|
181
|
-
|
|
182
|
-
---
|
|
183
|
-
|
|
184
|
-
### v2.0.3 (25/09/2017)
|
|
185
|
-
*No changelog for this release.*
|
|
186
|
-
|
|
187
|
-
---
|
|
188
|
-
|
|
189
|
-
### v1.4.1 (25/09/2017)
|
|
190
|
-
- [**closed**] Issue when bundling with webpack [#172](https://github.com/broofa/mime/issues/172)
|
|
191
|
-
|
|
192
|
-
---
|
|
193
|
-
|
|
194
|
-
### v2.0.2 (15/09/2017)
|
|
195
|
-
- [**V2**] fs.readFileSync is not a function [#165](https://github.com/broofa/mime/issues/165)
|
|
196
|
-
- [**closed**] The extension for video/quicktime should map to .mov, not .qt [#164](https://github.com/broofa/mime/issues/164)
|
|
197
|
-
- [**V2**] [v2 Feedback request] Mime class API [#163](https://github.com/broofa/mime/issues/163)
|
|
198
|
-
- [**V2**] [v2 Feedback request] Resolving conflicts over extensions [#162](https://github.com/broofa/mime/issues/162)
|
|
199
|
-
- [**V2**] Allow callers to load module with official, full, or no defined types. [#161](https://github.com/broofa/mime/issues/161)
|
|
200
|
-
- [**V2**] Use "facets" to resolve extension conflicts [#160](https://github.com/broofa/mime/issues/160)
|
|
201
|
-
- [**V2**] Remove fs and path dependencies [#152](https://github.com/broofa/mime/issues/152)
|
|
202
|
-
- [**V2**] Default content-type should not be application/octet-stream [#139](https://github.com/broofa/mime/issues/139)
|
|
203
|
-
- [**V2**] reset mime-types [#124](https://github.com/broofa/mime/issues/124)
|
|
204
|
-
- [**V2**] Extensionless paths should return null or false [#113](https://github.com/broofa/mime/issues/113)
|
|
205
|
-
|
|
206
|
-
---
|
|
207
|
-
|
|
208
|
-
### v2.0.1 (14/09/2017)
|
|
209
|
-
- [**closed**] Changelog for v2.0 does not mention breaking changes [#171](https://github.com/broofa/mime/issues/171)
|
|
210
|
-
- [**closed**] MIME breaking with 'class' declaration as it is without 'use strict mode' [#170](https://github.com/broofa/mime/issues/170)
|
|
211
|
-
|
|
212
|
-
---
|
|
213
|
-
|
|
214
|
-
## v2.0.0 (12/09/2017)
|
|
215
|
-
- [**closed**] woff and woff2 [#168](https://github.com/broofa/mime/issues/168)
|
|
216
|
-
|
|
217
|
-
---
|
|
218
|
-
|
|
219
|
-
## v1.4.0 (28/08/2017)
|
|
220
|
-
- [**closed**] support for ac3 voc files [#159](https://github.com/broofa/mime/issues/159)
|
|
221
|
-
- [**closed**] Help understanding change from application/xml to text/xml [#158](https://github.com/broofa/mime/issues/158)
|
|
222
|
-
- [**closed**] no longer able to override mimetype [#157](https://github.com/broofa/mime/issues/157)
|
|
223
|
-
- [**closed**] application/vnd.adobe.photoshop [#147](https://github.com/broofa/mime/issues/147)
|
|
224
|
-
- [**closed**] Directories should appear as something other than application/octet-stream [#135](https://github.com/broofa/mime/issues/135)
|
|
225
|
-
- [**closed**] requested features [#131](https://github.com/broofa/mime/issues/131)
|
|
226
|
-
- [**closed**] Make types.json loading optional? [#129](https://github.com/broofa/mime/issues/129)
|
|
227
|
-
- [**closed**] Cannot find module './types.json' [#120](https://github.com/broofa/mime/issues/120)
|
|
228
|
-
- [**V2**] .wav files show up as "audio/x-wav" instead of "audio/x-wave" [#118](https://github.com/broofa/mime/issues/118)
|
|
229
|
-
- [**closed**] Don't be a pain in the ass for node community [#108](https://github.com/broofa/mime/issues/108)
|
|
230
|
-
- [**closed**] don't make default_type global [#78](https://github.com/broofa/mime/issues/78)
|
|
231
|
-
- [**closed**] mime.extension() fails if the content-type is parameterized [#74](https://github.com/broofa/mime/issues/74)
|
|
232
|
-
|
|
233
|
-
---
|
|
234
|
-
|
|
235
|
-
### v1.3.6 (11/05/2017)
|
|
236
|
-
- [**closed**] .md should be text/markdown as of March 2016 [#154](https://github.com/broofa/mime/issues/154)
|
|
237
|
-
- [**closed**] Error while installing mime [#153](https://github.com/broofa/mime/issues/153)
|
|
238
|
-
- [**closed**] application/manifest+json [#149](https://github.com/broofa/mime/issues/149)
|
|
239
|
-
- [**closed**] Dynamic adaptive streaming over HTTP (DASH) file extension typo [#141](https://github.com/broofa/mime/issues/141)
|
|
240
|
-
- [**closed**] charsets image/png undefined [#140](https://github.com/broofa/mime/issues/140)
|
|
241
|
-
- [**closed**] Mime-db dependency out of date [#130](https://github.com/broofa/mime/issues/130)
|
|
242
|
-
- [**closed**] how to support plist? [#126](https://github.com/broofa/mime/issues/126)
|
|
243
|
-
- [**closed**] how does .types file format look like? [#123](https://github.com/broofa/mime/issues/123)
|
|
244
|
-
- [**closed**] Feature: support for expanding MIME patterns [#121](https://github.com/broofa/mime/issues/121)
|
|
245
|
-
- [**closed**] DEBUG_MIME doesn't work [#117](https://github.com/broofa/mime/issues/117)
|
|
246
|
-
|
|
247
|
-
---
|
|
248
|
-
|
|
249
|
-
### v1.3.4 (06/02/2015)
|
|
250
|
-
*No changelog for this release.*
|
|
251
|
-
|
|
252
|
-
---
|
|
253
|
-
|
|
254
|
-
### v1.3.3 (06/02/2015)
|
|
255
|
-
*No changelog for this release.*
|
|
256
|
-
|
|
257
|
-
---
|
|
258
|
-
|
|
259
|
-
### v1.3.1 (05/02/2015)
|
|
260
|
-
- [**closed**] Consider adding support for Handlebars .hbs file ending [#111](https://github.com/broofa/mime/issues/111)
|
|
261
|
-
- [**closed**] Consider adding support for hjson. [#110](https://github.com/broofa/mime/issues/110)
|
|
262
|
-
- [**closed**] Add mime type for Opus audio files [#94](https://github.com/broofa/mime/issues/94)
|
|
263
|
-
- [**closed**] Consider making the `Requesting New Types` information more visible [#77](https://github.com/broofa/mime/issues/77)
|
|
264
|
-
|
|
265
|
-
---
|
|
266
|
-
|
|
267
|
-
## v1.3.0 (05/02/2015)
|
|
268
|
-
- [**closed**] Add common name? [#114](https://github.com/broofa/mime/issues/114)
|
|
269
|
-
- [**closed**] application/x-yaml [#104](https://github.com/broofa/mime/issues/104)
|
|
270
|
-
- [**closed**] Add mime type for WOFF file format 2.0 [#102](https://github.com/broofa/mime/issues/102)
|
|
271
|
-
- [**closed**] application/x-msi for .msi [#99](https://github.com/broofa/mime/issues/99)
|
|
272
|
-
- [**closed**] Add mimetype for gettext translation files [#98](https://github.com/broofa/mime/issues/98)
|
|
273
|
-
- [**closed**] collaborators [#88](https://github.com/broofa/mime/issues/88)
|
|
274
|
-
- [**closed**] getting errot in installation of mime module...any1 can help? [#87](https://github.com/broofa/mime/issues/87)
|
|
275
|
-
- [**closed**] should application/json's charset be utf8? [#86](https://github.com/broofa/mime/issues/86)
|
|
276
|
-
- [**closed**] Add "license" and "licenses" to package.json [#81](https://github.com/broofa/mime/issues/81)
|
|
277
|
-
- [**closed**] lookup with extension-less file on Windows returns wrong type [#68](https://github.com/broofa/mime/issues/68)
|
|
278
|
-
|
|
279
|
-
---
|
|
280
|
-
|
|
281
|
-
### v1.2.11 (15/08/2013)
|
|
282
|
-
- [**closed**] Update mime.types [#65](https://github.com/broofa/mime/issues/65)
|
|
283
|
-
- [**closed**] Publish a new version [#63](https://github.com/broofa/mime/issues/63)
|
|
284
|
-
- [**closed**] README should state upfront that "application/octet-stream" is default for unknown extension [#55](https://github.com/broofa/mime/issues/55)
|
|
285
|
-
- [**closed**] Suggested improvement to the charset API [#52](https://github.com/broofa/mime/issues/52)
|
|
286
|
-
|
|
287
|
-
---
|
|
288
|
-
|
|
289
|
-
### v1.2.10 (25/07/2013)
|
|
290
|
-
- [**closed**] Mime type for woff files should be application/font-woff and not application/x-font-woff [#62](https://github.com/broofa/mime/issues/62)
|
|
291
|
-
- [**closed**] node.types in conflict with mime.types [#51](https://github.com/broofa/mime/issues/51)
|
|
292
|
-
|
|
293
|
-
---
|
|
294
|
-
|
|
295
|
-
### v1.2.9 (17/01/2013)
|
|
296
|
-
- [**closed**] Please update "mime" NPM [#49](https://github.com/broofa/mime/issues/49)
|
|
297
|
-
- [**closed**] Please add semicolon [#46](https://github.com/broofa/mime/issues/46)
|
|
298
|
-
- [**closed**] parse full mime types [#43](https://github.com/broofa/mime/issues/43)
|
|
299
|
-
|
|
300
|
-
---
|
|
301
|
-
|
|
302
|
-
### v1.2.8 (10/01/2013)
|
|
303
|
-
- [**closed**] /js directory mime is application/javascript. Is it correct? [#47](https://github.com/broofa/mime/issues/47)
|
|
304
|
-
- [**closed**] Add mime types for lua code. [#45](https://github.com/broofa/mime/issues/45)
|
|
305
|
-
|
|
306
|
-
---
|
|
307
|
-
|
|
308
|
-
### v1.2.7 (19/10/2012)
|
|
309
|
-
- [**closed**] cannot install 1.2.7 via npm [#41](https://github.com/broofa/mime/issues/41)
|
|
310
|
-
- [**closed**] Transfer ownership to @broofa [#36](https://github.com/broofa/mime/issues/36)
|
|
311
|
-
- [**closed**] it's wrong to set charset to UTF-8 for text [#30](https://github.com/broofa/mime/issues/30)
|
|
312
|
-
- [**closed**] Allow multiple instances of MIME types container [#27](https://github.com/broofa/mime/issues/27)
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
### 2.0.1 - 2020-01-DD
|
|
3
|
-
|
|
4
|
-
- add support for deprecated IPv4 compatible IPv6 addresses #142
|
|
5
|
-
- drop node 8 testing, add v14
|
|
6
|
-
- fix parseInt for decimal, octal, hex
|
|
7
|
-
- add support for classful (2,3 octet) IPv4
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
### 2.0.0 - 2019-10-13
|
|
11
|
-
|
|
12
|
-
- use es6 templates instead of concatenated strings
|
|
13
|
-
- lint: update tests with no-var
|
|
14
|
-
- lint: allow no-cond-assign with extra parens
|
|
15
|
-
- es6: replace var with const/let
|
|
16
|
-
- update README with es6 examples #125
|
|
17
|
-
- replace nodeunit with mocha
|
|
18
|
-
- rewrite in JS, drop CoffeeScript
|
|
19
|
-
|
|
20
|
-
### 1.9.1 - 2019-07-03
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
# Changes
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
## 2.0.2
|
|
5
|
-
|
|
6
|
-
* Rename bin to `node-which`
|
|
7
|
-
|
|
8
|
-
## 2.0.1
|
|
9
|
-
|
|
10
|
-
* generate changelog and publish on version bump
|
|
11
|
-
* enforce 100% test coverage
|
|
12
|
-
* Promise interface
|
|
13
|
-
|
|
14
|
-
## 2.0.0
|
|
15
|
-
|
|
16
|
-
* Parallel tests, modern JavaScript, and drop support for node < 8
|
|
17
|
-
|
|
18
|
-
## 1.3.1
|
|
19
|
-
|
|
20
|
-
* update deps
|
|
21
|
-
* update travis
|
|
22
|
-
|
|
23
|
-
## v1.3.0
|
|
24
|
-
|
|
25
|
-
* Add nothrow option to which.sync
|
|
26
|
-
* update tap
|
|
27
|
-
|
|
28
|
-
## v1.2.14
|
|
29
|
-
|
|
30
|
-
* appveyor: drop node 5 and 0.x
|
|
31
|
-
* travis-ci: add node 6, drop 0.x
|
|
32
|
-
|
|
33
|
-
## v1.2.13
|
|
34
|
-
|
|
35
|
-
* test: Pass missing option to pass on windows
|
|
36
|
-
* update tap
|
|
37
|
-
* update isexe to 2.0.0
|
|
38
|
-
* neveragain.tech pledge request
|
|
39
|
-
|
|
40
|
-
## v1.2.12
|
|
41
|
-
|
|
42
|
-
* Removed unused require
|
|
43
|
-
|
|
44
|
-
## v1.2.11
|
|
45
|
-
|
|
46
|
-
* Prevent changelog script from being included in package
|
|
47
|
-
|
|
48
|
-
## v1.2.10
|
|
49
|
-
|
|
50
|
-
* Use env.PATH only, not env.Path
|
|
51
|
-
|
|
52
|
-
## v1.2.9
|
|
53
|
-
|
|
54
|
-
* fix for paths starting with ../
|
|
55
|
-
* Remove unused `is-absolute` module
|
|
56
|
-
|
|
57
|
-
## v1.2.8
|
|
58
|
-
|
|
59
|
-
* bullet items in changelog that contain (but don't start with) #
|
|
60
|
-
|
|
61
|
-
## v1.2.7
|
|
62
|
-
|
|
63
|
-
* strip 'update changelog' changelog entries out of changelog
|
|
64
|
-
|
|
65
|
-
## v1.2.6
|
|
66
|
-
|
|
67
|
-
* make the changelog bulleted
|
|
68
|
-
|
|
69
|
-
## v1.2.5
|
|
70
|
-
|
|
71
|
-
* make a changelog, and keep it up to date
|
|
72
|
-
* don't include tests in package
|
|
73
|
-
* Properly handle relative-path executables
|
|
74
|
-
* appveyor
|
|
75
|
-
* Attach error code to Not Found error
|
|
76
|
-
* Make tests pass on Windows
|
|
77
|
-
|
|
78
|
-
## v1.2.4
|
|
79
|
-
|
|
80
|
-
* Fix typo
|
|
81
|
-
|
|
82
|
-
## v1.2.3
|
|
83
|
-
|
|
84
|
-
* update isexe, fix regression in pathExt handling
|
|
85
|
-
|
|
86
|
-
## v1.2.2
|
|
87
|
-
|
|
88
|
-
* update deps, use isexe module, test windows
|
|
89
|
-
|
|
90
|
-
## v1.2.1
|
|
91
|
-
|
|
92
|
-
* Sometimes windows PATH entries are quoted
|
|
93
|
-
* Fixed a bug in the check for group and user mode bits. This bug was introduced during refactoring for supporting strict mode.
|
|
94
|
-
* doc cli
|
|
95
|
-
|
|
96
|
-
## v1.2.0
|
|
97
|
-
|
|
98
|
-
* Add support for opt.all and -as cli flags
|
|
99
|
-
* test the bin
|
|
100
|
-
* update travis
|
|
101
|
-
* Allow checking for multiple programs in bin/which
|
|
102
|
-
* tap 2
|
|
103
|
-
|
|
104
|
-
## v1.1.2
|
|
105
|
-
|
|
106
|
-
* travis
|
|
107
|
-
* Refactored and fixed undefined error on Windows
|
|
108
|
-
* Support strict mode
|
|
109
|
-
|
|
110
|
-
## v1.1.1
|
|
111
|
-
|
|
112
|
-
* test +g exes against secondary groups, if available
|
|
113
|
-
* Use windows exe semantics on cygwin & msys
|
|
114
|
-
* cwd should be first in path on win32, not last
|
|
115
|
-
* Handle lower-case 'env.Path' on Windows
|
|
116
|
-
* Update docs
|
|
117
|
-
* use single-quotes
|
|
118
|
-
|
|
119
|
-
## v1.1.0
|
|
120
|
-
|
|
121
|
-
* Add tests, depend on is-absolute
|
|
122
|
-
|
|
123
|
-
## v1.0.9
|
|
124
|
-
|
|
125
|
-
* which.js: root is allowed to execute files owned by anyone
|
|
126
|
-
|
|
127
|
-
## v1.0.8
|
|
128
|
-
|
|
129
|
-
* don't use graceful-fs
|
|
130
|
-
|
|
131
|
-
## v1.0.7
|
|
132
|
-
|
|
133
|
-
* add license to package.json
|
|
134
|
-
|
|
135
|
-
## v1.0.6
|
|
136
|
-
|
|
137
|
-
* isc license
|
|
138
|
-
|
|
139
|
-
## 1.0.5
|
|
140
|
-
|
|
141
|
-
* Awful typo
|
|
142
|
-
|
|
143
|
-
## 1.0.4
|
|
144
|
-
|
|
145
|
-
* Test for path absoluteness properly
|
|
146
|
-
* win: Allow '' as a pathext if cmd has a . in it
|
|
147
|
-
|
|
148
|
-
## 1.0.3
|
|
149
|
-
|
|
150
|
-
* Remove references to execPath
|
|
151
|
-
* Make `which.sync()` work on Windows by honoring the PATHEXT variable.
|
|
152
|
-
* Make `isExe()` always return true on Windows.
|
|
153
|
-
* MIT
|
|
154
|
-
|
|
155
|
-
## 1.0.2
|
|
156
|
-
|
|
157
|
-
* Only files can be exes
|
|
158
|
-
|
|
159
|
-
## 1.0.1
|
|
160
|
-
|
|
161
|
-
* Respect the PATHEXT env for win32 support
|
|
162
|
-
* should 0755 the bin
|
|
163
|
-
* binary
|
|
164
|
-
* guts
|
|
165
|
-
* package
|
|
166
|
-
* 1st
|